<?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>125583</bug_id>
          
          <creation_ts>2013-12-11 09:24:56 -0800</creation_ts>
          <short_desc>[SOUP] Implement CUSTOM PROTOCOLS</short_desc>
          <delta_ts>2014-09-10 09:19:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>126343</dependson>
          <blocked>108832</blocked>
    
    <blocked>127091</blocked>
    
    <blocked>136705</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>svillar</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958760</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-11 09:24:56 -0800</bug_when>
    <thetext>It will make easier to use it from the network process and we&apos;ll share more code with mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958761</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-11 09:25:20 -0800</bug_when>
    <thetext>I&apos;m already working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963530</commentid>
    <comment_count>2</comment_count>
      <attachid>220164</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-31 09:16:12 -0800</bug_when>
    <thetext>Created attachment 220164
Patch

$ WEBKIT_USE_NETWORK_PROCESS=1 Programs/WebKit2APITests/TestWebKitWebContext -p /webkit2/WebKitWebContext/uri-scheme
/webkit2/WebKitWebContext/uri-scheme: OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963579</commentid>
    <comment_count>3</comment_count>
      <attachid>220164</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-31 22:09:34 -0800</bug_when>
    <thetext>Comment on attachment 220164
Patch

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

&gt; Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h:91
&gt; +#if USE(SOUP)
&gt; +    // SoupRequest implementation.
&gt; +    void send(GTask*);
&gt; +    GInputStream* finish(GTask*, GError**);
&gt; +#endif

Can you find a way to do this without putting SOUP specific functions in this file.  If you need to refactor, that is fine, but please don&apos;t add to the #ifdef hell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963594</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-01 02:41:41 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 220164 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220164&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h:91
&gt; &gt; +#if USE(SOUP)
&gt; &gt; +    // SoupRequest implementation.
&gt; &gt; +    void send(GTask*);
&gt; &gt; +    GInputStream* finish(GTask*, GError**);
&gt; &gt; +#endif
&gt; 
&gt; Can you find a way to do this without putting SOUP specific functions in this file.  If you need to refactor, that is fine, but please don&apos;t add to the #ifdef hell.

Thanks for looking at the patch. We need a way to make soup notify the custom protocol manager to start the load, passing the GTask associated, and that&apos;s very specific to soup. The only think I can think of is having an intermediate object entirely defined in platform specific code, so that we can also remove the mac ifdefs. Something like CustomProtocolManagerImpl or CustomProtocolManagerPrivate. However, since the header already contains mac #ifdefs, maybe it would be better to do the refactoring in a follow up patch to get rid of both mac and soup ifdefs there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964068</commentid>
    <comment_count>5</comment_count>
      <attachid>220296</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-03 02:52:16 -0800</bug_when>
    <thetext>Created attachment 220296
Updated patch

Patch updated to not use any soup #ifdef in CustomProtocolManager header file. In the end I&apos;ve added a CustomProtocolManagerImpl with all the soup specific implementation. This leaves CustomProtocolManagerSoup.cpp mostly cross-platform, so if mac switches to use their own CustomProtocolManagerImpl to remove also the mac #ifdefs, we could remove CustomProtocolManagerSoup.cpp and CustomProtocolManagerMac.cpp an use a common implementation for the cross-platform bits. I&apos;ve also changed some uses of OwnPtr to use std::unique_ptr instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968666</commentid>
    <comment_count>6</comment_count>
      <attachid>221351</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-16 02:28:18 -0800</bug_when>
    <thetext>Created attachment 221351
New patch

I&apos;ve removed the initiating page support for now until I figure out how to bring it back. And I&apos;ve also removed the GTK specific part to try to make the patch easier to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969078</commentid>
    <comment_count>7</comment_count>
      <attachid>221449</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-17 00:19:16 -0800</bug_when>
    <thetext>Created attachment 221449
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969116</commentid>
    <comment_count>8</comment_count>
      <attachid>221459</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-17 05:18:50 -0800</bug_when>
    <thetext>Created attachment 221459
Try to fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970306</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-21 10:26:06 -0800</bug_when>
    <thetext>Committed r162449: &lt;http://trac.webkit.org/changeset/162449&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220164</attachid>
            <date>2013-12-31 09:16:12 -0800</date>
            <delta_ts>2014-01-03 02:52:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-soup-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>83720</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YjdlNDk3Li5hZjY2OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTMtMTItMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBQb3J0IGN1c3RvbSBVUkkgc2NoZW1lcyBpbXBsZW1lbnRhdGlv
biB0byBDVVNUT00gUFJPVE9DT0xTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjU1ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgaW5pdGlhdGluZ1BhZ2VJRCBtZW1iZXIgdG8gUmVzb3VyY2VSZXF1
ZXN0IHRoYXQgY2FuIGFzc29jaWF0ZQorICAgICAgICB0aGUgcmVxdWVzdCB3aXRoIHRoZSBpZGVu
dGlmaWVyIG9mIHRoZSB3ZWIgcGFnZSB0aGF0IHN0YXJ0ZWQgdGVoCisgICAgICAgIHJlcXVlc3Qu
IEFsc28gYWRkIGEgY29uc3RydWN0b3IgdGhhdCByZWNlaXZlcyBhIFNvdXBSZXF1ZXN0IGFuZAor
ICAgICAgICBpbml0aWFsaXplcyB0aGUgaW5pdGlhdGluZ1BhZ2VJRC4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6aW5pdGlhdGluZ1BhZ2VJRCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OnNldEluaXRpYXRpbmdQYWdlSUQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKworMjAxMy0xMi0zMSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgW1NPVVBdIFJl
dHVybiBlYXJseSBpbiBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24gaWYgdGhl
IGxvYWQgaGFzIGFscmVhZHkgY2FuY2VsbGVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYyODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IGNmMjI2YzEuLmM3
OTZhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDcgKzI3LDkgQEAKICNpZm5kZWYgUmVzb3VyY2VS
ZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgorI2luY2x1ZGUgIlNv
dXBVUklVdGlscy5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAg
ICAgICAgICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDAp
KQorICAgICAgICAgICAgLCBtX2luaXRpYXRpbmdQYWdlSUQoMCkKICAgICAgICAgewogICAgICAg
ICB9CiAKQEAgLTQ1LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAg
ICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFn
cyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKKyAgICAgICAgICAgICwgbV9pbml0
aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01Miw2ICs1Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1
cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAg
ICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKKyAg
ICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgICAg
IHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYwLDYgKzY1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVS
TCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29k
aW5nKHRydWUpCiAgICAgICAgICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNz
YWdlRmxhZ3M+KDApKQorICAgICAgICAgICAgLCBtX2luaXRpYXRpbmdQYWdlSUQoMCkKICAgICAg
ICAgewogICAgICAgICB9CiAKQEAgLTY3LDEwICs3MywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAg
ICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCisgICAg
ICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1
cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CiAKKyAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0KFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCkKKyAgICAgICAgICAgIDog
UmVzb3VyY2VSZXF1ZXN0QmFzZShzb3VwVVJJVG9LVVJMKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHNv
dXBSZXF1ZXN0KSksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICAsIG1fYWNj
ZXB0RW5jb2RpbmcodHJ1ZSkKKyAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8
U291cE1lc3NhZ2VGbGFncz4oMCkpCisgICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRChS
ZXNvdXJjZUhhbmRsZTo6Z2V0U291cFJlcXVlc3RJbml0aWF0aW5nUGFnZUlEKHNvdXBSZXF1ZXN0
KSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgdm9pZCB1cGRhdGVGcm9tRGVsZWdh
dGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWxlZ2F0ZVBy
b3ZpZGVkUmVxdWVzdCkgeyAqdGhpcyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0OyB9CiAKICAg
ICAgICAgYm9vbCBhY2NlcHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXB0RW5jb2Rp
bmc7IH0KQEAgLTg1LDYgKzEwMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU291
cE1lc3NhZ2VGbGFncyBzb3VwTWVzc2FnZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zb3VwRmxh
Z3M7IH0KICAgICAgICAgdm9pZCBzZXRTb3VwTWVzc2FnZUZsYWdzKFNvdXBNZXNzYWdlRmxhZ3Mg
c291cEZsYWdzKSB7IG1fc291cEZsYWdzID0gc291cEZsYWdzOyB9CiAKKyAgICAgICAgdWludDY0
X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhdGluZ1BhZ2VJRDsg
fQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQodWludDY0X3QgcGFnZUlEKSB7IG1f
aW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQorCiAgICAgICAgIFNvdXBVUkkqIHNvdXBVUkko
KSBjb25zdDsKIAogICAgIHByaXZhdGU6CkBAIC05Miw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgYm9vbCBtX2FjY2VwdEVuY29kaW5nIDogMTsKICAgICAgICAgU291
cE1lc3NhZ2VGbGFncyBtX3NvdXBGbGFnczsKKyAgICAgICAgdWludDY0X3QgbV9pbml0aWF0aW5n
UGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VNZW1iZXJzKFNvdXBNZXNz
YWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCA0MzA3MTVjLi5mNzNiNWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVxdWVzdFNvdXAuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiR093blB0clNvdXAu
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKLSNpbmNsdWRlICJTb3VwVVJJVXRpbHMuaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFkZjBmNDcuLjIwMzIwN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxMzAgQEAKIDIwMTMtMTItMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtTT1VQXSBQb3J0IGN1c3RvbSBVUkkgc2NoZW1l
cyBpbXBsZW1lbnRhdGlvbiB0byBDVVNUT00gUFJPVE9DT0xTCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU1ODMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGNsYXNzZXMgdG8gaW1wbGVtZW50
IEN1c3RvbVByb3RvY29scyBmb3Igc291cC4gVGhlIG9sZAorICAgICAgICBjbGFzc2VzIGFyZSBu
byBsb25nZXIgYnVpbHQgZm9yIEdUSysgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UKKyAgICAg
ICAgb3RoZXIgcG9ydHMgdXNpbmcgc291cCBiYWNrZW5kIHN3aXRjaCB0byBjdXN0b20gcHJvdG9j
b2xzCisgICAgICAgIGltcGxlbWVudGF0aW9uLiBUaGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIHNh
bWUsIGJ1dCB1c2luZyB0aGUKKyAgICAgICAgQ3VzdG9tUHJvdG9jb2wgQVBJIGFuZCBtZXNzYWdl
cy4gU2luY2UgdGhlIEN1c3RvbVByb3RvY29sCisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIGNv
bW1vbiBmb3Igd2ViIGFuZCBuZXR3b3JrIHByb2Nlc3MsIHRoaXMKKyAgICAgICAgYWRkcyBzdXBw
b3J0IGZvciBjdXN0b20gVVJJIHNjaGVtZXMgd2hlbiB1c2luZyB0aGUgbmV0d29yaworICAgICAg
ICBwcm9jZXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBT
aGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVj
dC5oOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90
b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2Vu
ZXJhdGVDdXN0b21Qcm90b2NvbElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RB
c3luY0RhdGE6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U291cFJlcXVlc3RBc3luY0RhdGE6On5XZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhOjpyZXF1ZXN0RmFpbGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6OnJlbGVhc2VUYXNrKToKKyAgICAg
ICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpDdXN0b21Qcm90b2NvbE1hbmFnZXIp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToK
KyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZSk6
CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmFpbFdpdGhFcnJv
cik6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkTG9hZERhdGEp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c2VuZCk6
CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZmluaXNoKToKKyAgICAg
ICAgKiBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEp
OiBFbmNvZGUKKyAgICAgICAgaW5pdGlhdGluZyBwYWdlIElELgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERlY29kZQor
ICAgICAgICBpbml0aWF0aW5nIHBhZ2UgSUQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3Nv
dXAvV0tBUElDYXN0U291cC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOgorICAg
ICAgICAoc3RhcnRMb2FkaW5nKToKKyAgICAgICAgKHN0b3BMb2FkaW5nKToKKyAgICAgICAgKGF0
dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaCk6Cisg
ICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9y
ZWdpc3Rlcl91cmlfc2NoZW1lKToKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0
TWFuYWdlcik6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJv
dG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9j
b2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90
b2NvbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgQWRkIFdlYkNvbnRleHQgbWVtYmVyIHJl
cXVpcmVkIGJ5IHRoZSBzb3VwIGltcGxlbWVudGF0aW9uIHRvIGdldAorICAgICAgICB0aGUgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIgc3VwcGxlbWVudC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkpOgorICAgICAgICBQYXNzIFdlYkNvbnRleHQg
dG8gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpz
dGFydExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eTo6c3RvcExvYWRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpz
dXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
fldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmluaXRpYWxpemVDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y29u
dGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVu
cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlcmVk
U2NoZW1lc0ZvckN1c3RvbVByb3RvY29scyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJD
bGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOiBQYXNzCisgICAgICAg
IFdlYkNvbnRleHQgdG8gdGhlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGNvbnN0cnVjdG9y
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2Vi
UHJvY2Vzc1Byb3h5KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViQ29udGV4dFNvdXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0MlByZWZpeC5oOiBFbmFibGUgQ3VzdG9tUHJvdG9j
b2xzIGFsd2F5cyBmb3IgR1RLLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAqIFdl
YlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwOgorICAgICAgICAod2Vi
a2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFzeW5jKToKKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1
ZXN0R2VuZXJpY1NlbmRGaW5pc2gpOgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKToKKworMjAxMy0xMi0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgW1NPVVBdIEFkZCBzdHVicyBmb3IgQ3VzdG9tUHJv
dG9jb2wgY2xhc3NlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2MzQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMjY1M2M3MC4uMzhkMDVlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTEyNiw2ICsxMjYsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
X2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9n
dGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXggXApAQCAtNDI0LDcgKzQyNSw2IEBAIHZwYXRoICUubWVzc2FnZXMuaW4gPSBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvUGx1Z2lucyBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvUmVzb3VyY2VD
YWNoZSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvU3RvcmFnZSBcCi0JJChXZWJLaXQyKS9VSVBy
b2Nlc3Mvc291cCBcCiAJJChXZWJLaXQyKS9XZWJQcm9jZXNzIFwKIAkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCiAJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0JhdHRlcnkg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNjQ5MTg4Yy4uMGEwNDM4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MSw4ICs0MSw3IEBAIHdlYmtpdDJfaF9h
cGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0luc3BlY3RvckNsaWVu
dEd0ay5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIFwKLQkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuaCBcCi0JJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oIFwKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIu
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Ml9DLmggXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggXApAQCAtMjY4LDEwICsyNjcsNiBAQCB3
ZWJraXQyX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCBcCi0JRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKLQlEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2VzLmggXAotCURl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJWaWJyYXRpb25Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViVmli
cmF0aW9uUHJveHlNZXNzYWdlcy5oCiAKQEAgLTYyOCwxMCArNjIzLDggQEAgd2Via2l0Ml9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlld1ByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIFwKLQlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcCBcCi0J
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oIFwKLQlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5j
cHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RN
YW5hZ2VyLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIFwKQEAgLTk0NCw2ICs5MzcsMTAg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvUHJvY2Vzc0xhdW5jaGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9z
b3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcCBcCisJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvc291cC9OZXR3b3JrUHJvY2Vzc1Byb3h5U291cC5jcHAgXApAQCAtOTgzLDEw
ICs5ODAsNiBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9z
b3VwL1dlYkNvbnRleHRTb3VwLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAv
V2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgXAotCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oIFwKLQlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgXAot
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwIFwKQEAgLTEyODUsOCArMTI3
OCw2IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBcCi0JU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjY0ZTU1YS4uZGMxMTk0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTc1LDkgKzc1LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0luc3BlY3RvckNsaWVudEd0ay5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLQ29udGV4dFNvdXAuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb29raWVNYW5h
Z2VyU291cC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdl
ci5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMjM2LDYgKzIzNSw4
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9n
dGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAogCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAorICAgIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAg
ICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAogICAgIFVJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTI1Nyw4
ICsyNTgsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NQcm94eUd0ay5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNvb2tpZU1h
bmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcAotICAgIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNv
dXAuY3BwCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNx
bGl0ZS5jcHAKQEAgLTI5OCw3ICsyOTcsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcAogICAgIFdl
YlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAogICAgIFdlYlBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKLSAgICBXZWJQcm9jZXNzL3NvdXAvV2ViU291
cFJlcXVlc3RNYW5hZ2VyLmNwcAogKQogCiBzZXQoV2ViS2l0Ml9JTlNUQUxMRURfSEVBREVSUwpA
QCAtMzk0LDYgKzM5Miw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9ndGsiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKaW5kZXggNjE4OWU0Yy4uNjAwZjA4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNlU291cC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApAQCAtMzEsNSAr
MzEsNiBAQAogI2VuZGlmCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVl
c3RNYW5hZ2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJSZWY7CiAKICNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCAwMDRlYjBjLi41MjNjZjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgICAgICBW
aWV3LAogI2lmIFVTRShTT1VQKQogICAgICAgICBTb3VwUmVxdWVzdE1hbmFnZXIsCisgICAgICAg
IFNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLAogI2VuZGlmCiAjaWYgUExBVEZPUk0o
RUZMKQogICAgICAgICBQb3B1cE1lbnVJdGVtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlci5oCmluZGV4IDUwNTEwN2UuLjk2ODQyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTQyLDYgKzQyLDEyIEBACiBPQkpDX0NMQVNTIFdL
Q3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAorI2lmIFVTRShTT1VQKQordHlwZWRlZiBzdHJ1Y3Qg
X0dUYXNrIEdUYXNrOwordHlwZWRlZiBzdHJ1Y3QgX0dJbnB1dFN0cmVhbSBHSW5wdXRTdHJlYW07
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIu
aD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CkBAIC01
Niw2ICs2Miw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDaGlsZFByb2Nlc3M7CiBz
dHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CisjaWYgVVNFKFNPVVApCitz
dHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGE7CisjZW5kaWYKIAogY2xhc3MgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1c3RvbVByb3RvY29sTWFu
YWdlcik7CkBAIC03NSw2ICs4NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDdXN0b21Q
cm90b2NvbChXS0N1c3RvbVByb3RvY29sICopOwogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyAg
ICAvLyBTb3VwUmVxdWVzdCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIHNlbmQoR1Rhc2sqKTsK
KyAgICBHSW5wdXRTdHJlYW0qIGZpbmlzaChHVGFzayosIEdFcnJvcioqKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIC8vIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQKICAgICB2b2lkIGluaXRpYWxp
emVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopIE9WRVJSSURFOwpAQCAtMTA5LDYgKzEyNCwx
MSBAQCBwcml2YXRlOgogICAgIC8vIFdlIHJldHVybiBhIFJldGFpblB0ciBoZXJlIGJlY2F1c2Ug
aXQgaXMgdW5zYWZlIHRvIHJldHVybiBhIHJhdyBwb2ludGVyIHNpbmNlIHRoZSBvYmplY3QgbWln
aHQgaW1tZWRpYXRlbHkgYmUgZGVzdHJveWVkIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLgogICAg
IFJldGFpblB0cjxXS0N1c3RvbVByb3RvY29sPiBwcm90b2NvbEZvcklEKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQpOwogI2VuZGlmCisKKyNpZiBVU0UoU09VUCkKKyAgICBHUmVmUHRyPEdQdHJB
cnJheT4gbV9zY2hlbWVzOworICAgIEhhc2hNYXA8dWludDY0X3QsIE93blB0cjxXZWJTb3VwUmVx
dWVzdEFzeW5jRGF0YT4+IG1fY3VzdG9tUHJvdG9jb2xNYXA7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Q
cm90b2NvbE1hbmFnZXJTb3VwLmNwcAppbmRleCA0MmI1OTQ4Li4xMDI2MDM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcApA
QCAtMjUsMTMgKzI1LDE4IEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtMzksNiArNDQsNDYgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUN1c3RvbVByb3RvY29sSUQoKQor
eworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDdXN0b21Qcm90b2NvbElEID0gMDsKKyAgICBy
ZXR1cm4gKyt1bmlxdWVDdXN0b21Qcm90b2NvbElEOworfQorCitzdHJ1Y3QgV2ViU291cFJlcXVl
c3RBc3luY0RhdGEgeworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdUYXNrKiB0YXNrLCBX
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3RHZW5lcmljKQorICAgICAgICA6IHRhc2so
dGFzaykKKyAgICAgICAgLCByZXF1ZXN0KHJlcXVlc3RHZW5lcmljKQorICAgICAgICAsIGNhbmNl
bGxhYmxlKGdfdGFza19nZXRfY2FuY2VsbGFibGUodGFzaykpCisgICAgeworICAgICAgICAvLyBJ
ZiB0aGUgc3RydWN0IGNvbnRhaW5zIGEgbnVsbCByZXF1ZXN0LCBpdCBpcyBiZWNhdXNlIHRoZSBy
ZXF1ZXN0IGZhaWxlZC4KKyAgICAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVD
VChyZXF1ZXN0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7CisgICAgfQor
CisgICAgfldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKCkKKyAgICB7CisgICAgICAgIGlmIChyZXF1
ZXN0KQorICAgICAgICAgICAgZ19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRlcihHX09CSkVDVChy
ZXF1ZXN0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7CisgICAgfQorCisg
ICAgYm9vbCByZXF1ZXN0RmFpbGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnX2NhbmNlbGxh
YmxlX2lzX2NhbmNlbGxlZChjYW5jZWxsYWJsZS5nZXQoKSkgfHwgIXJlcXVlc3Q7CisgICAgfQor
CisgICAgR1JlZlB0cjxHVGFzaz4gcmVsZWFzZVRhc2soKQorICAgIHsKKyAgICAgICAgR1Rhc2sq
IHJldHVyblZhbHVlID0gdGFzazsKKyAgICAgICAgdGFzayA9IDA7CisgICAgICAgIHJldHVybiBh
ZG9wdEdSZWYocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIEdUYXNrKiB0YXNrOworICAgIFdl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdDsKKyAgICBHUmVmUHRyPEdDYW5jZWxsYWJs
ZT4gY2FuY2VsbGFibGU7CisgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IHN0cmVhbTsKK307CisK
IGNvbnN0IGNoYXIqIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewog
ICAgIHJldHVybiAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIjsKQEAgLTQ3LDYgKzkyLDcgQEAgY29u
c3QgY2hhciogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCiBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcihDaGlsZFByb2Nlc3MqIGNoaWxk
UHJvY2VzcykKICAgICA6IG1fY2hpbGRQcm9jZXNzKGNoaWxkUHJvY2VzcykKICAgICAsIG1fbWVz
c2FnZVF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkN1c3RvbVByb3Rv
Y29sTWFuYWdlciIpKQorICAgICwgbV9zY2hlbWVzKGFkb3B0R1JlZihnX3B0cl9hcnJheV9uZXdf
d2l0aF9mcmVlX2Z1bmMoZ19mcmVlKSkpCiB7CiB9CiAKQEAgLTU1LDE5ICsxMDEsNDAgQEAgdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbikKICAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX21lc3NhZ2VRdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQorICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3Mp
OworICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcykgeworICAgICAgICBtX2No
aWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkK
KyAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29sc1tpXSk7CiB9CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
dm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRp
YWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytpKQorICAgICAgICByZWdpc3RlclNj
aGVtZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ld
KTsKIH0KICNlbmRpZgogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hl
bWUoY29uc3QgU3RyaW5nJikKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGlmIChtX3NjaGVtZXMtPmxlbikKKyAgICAgICAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4X2Zh
c3QobV9zY2hlbWVzLmdldCgpLCBtX3NjaGVtZXMtPmxlbiAtIDEpOworICAgIGdfcHRyX2FycmF5
X2FkZChtX3NjaGVtZXMuZ2V0KCksIGdfc3RyZHVwKHNjaGVtZS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgZ19wdHJfYXJyYXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgMCk7CisKKyAgICBTb3VwU2Vzc2lv
biogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwor
ICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIGdlbmVyaWNSZXF1ZXN0Q2xhc3MgPSBzdGF0aWNfY2FzdDxT
b3VwUmVxdWVzdENsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQRV9TT1VQX1JFUVVF
U1RfR0VORVJJQykpOworICAgIGdlbmVyaWNSZXF1ZXN0Q2xhc3MtPnNjaGVtZXMgPSBjb25zdF9j
YXN0PGNvbnN0IGNoYXIqKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKio+KG1fc2NoZW1lcy0+cGRh
dGEpKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzcyo+KGdf
dHlwZV9jbGFzc19yZWYoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpKS0+Y3VzdG9t
UHJvdG9jb2xNYW5hZ2VyID0gdGhpczsKKyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlf
dHlwZShzZXNzaW9uLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQyk7CiB9CiAKIHZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYp
CkBAIC03NSwzMCArMTQyLDEwNyBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6dW5yZWdp
c3RlclNjaGVtZShjb25zdCBTdHJpbmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJv
b2wgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZShjb25zdCBTdHJpbmcmKQor
Ym9vbCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKHNjaGVtZS5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBjU2NoZW1lID0gc2NoZW1l
LnV0ZjgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVzLT5sZW47ICsr
aSkgeworICAgICAgICBpZiAoY1NjaGVtZSA9PSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19wdHJfYXJy
YXlfaW5kZXgobV9zY2hlbWVzLmdldCgpLCBpKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEq
IGRhdGEgPSBtX2N1c3RvbVByb3RvY29sTWFwLmdldChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBB
U1NFUlQoZGF0YSk7CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gZGF0YS0+cmVsZWFzZVRh
c2soKTsKKyAgICBBU1NFUlQodGFzay5nZXQoKSk7CisgICAgZ190YXNrX3JldHVybl9uZXdfZXJy
b3IodGFzay5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvci5kb21haW4oKS51dGY4KCku
ZGF0YSgpKSwKKyAgICAgICAgZXJyb3IuZXJyb3JDb2RlKCksICIlcyIsIGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBtX2N1c3RvbVByb3RvY29sTWFw
LnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKQordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKiBkYXRhID0gbV9j
dXN0b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgLy8gVGhlIGRhdGEg
bWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVxdWVzdCBtYXAgaWYgYSBwcmV2aW91
cyBjaHVuayBmYWlsZWQKKyAgICAvLyBhbmQgYSBuZXcgbWVzc2FnZSB3YXMgc2VudCBieSB0aGUg
VUkgcHJvY2VzcyBiZWZvcmUgYmVpbmcgbm90aWZpZWQgYWJvdXQgdGhlIGZhaWx1cmUuCisgICAg
aWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWRhdGEtPnN0cmVhbSkgewor
ICAgICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gZGF0YS0+cmVsZWFzZVRhc2soKTsKKyAgICAg
ICAgQVNTRVJUKHRhc2suZ2V0KCkpOworCisgICAgICAgIGdvZmZzZXQgc291cENvbnRlbnRMZW5n
dGggPSBzb3VwX3JlcXVlc3RfZ2V0X2NvbnRlbnRfbGVuZ3RoKFNPVVBfUkVRVUVTVChnX3Rhc2tf
Z2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpKTsKKyAgICAgICAgdWludDY0X3QgY29udGVu
dExlbmd0aCA9IHNvdXBDb250ZW50TGVuZ3RoID09IC0xID8gMCA6IHN0YXRpY19jYXN0PHVpbnQ2
NF90Pihzb3VwQ29udGVudExlbmd0aCk7CisgICAgICAgIGlmICghZGF0YVJlZmVyZW5jZS5zaXpl
KCkpIHsKKyAgICAgICAgICAgIC8vIEVtcHR5IHJlcGx5LCBqdXN0IGNyZWF0ZSBhbmQgZW1wdHkg
R01lbW9yeUlucHV0U3RyZWFtLgorICAgICAgICAgICAgZGF0YS0+c3RyZWFtID0gZ19tZW1vcnlf
aW5wdXRfc3RyZWFtX25ldygpOworICAgICAgICB9IGVsc2UgaWYgKGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpID09IGNvbnRlbnRMZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCBt
b3JlIGRhdGEsIHNvIHdlIGNhbiBqdXN0IGNyZWF0ZSBhIEdNZW1vcnlJbnB1dFN0cmVhbSB3aXRo
IGFsbCB0aGUgZGF0YS4KKyAgICAgICAgICAgIGRhdGEtPnN0cmVhbSA9IGdfbWVtb3J5X2lucHV0
X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGdfbWVtZHVwKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRh
UmVmZXJlbmNlLnNpemUoKSksIGNvbnRlbnRMZW5ndGgsIGdfZnJlZSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBXZSBleHBlY3QgbW9yZSBkYXRhIGNodW5rcyBmcm9tIHRoZSBV
SSBwcm9jZXNzLgorICAgICAgICAgICAgZGF0YS0+c3RyZWFtID0gd2Via2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbU5ldyhjb250ZW50TGVuZ3RoKTsKKyAgICAgICAgICAgIHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRh
dGEtPnN0cmVhbS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNp
emUoKSk7CisgICAgICAgIH0KKyAgICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0
KCksIGRhdGEtPnN0cmVhbS5nZXQoKSwgZ19vYmplY3RfdW5yZWYpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGRhdGEtPnJlcXVlc3RGYWlsZWQoKSkgeworICAgICAgICAvLyBS
ZXNvdXJjZVJlcXVlc3QgZmFpbGVkIG9yIGl0IHdhcyBjYW5jZWxsZWQuIEl0IGRvZXNuJ3QgbWF0
dGVyIGhlcmUgdGhlIGVycm9yIG9yIGlmIGl0IHdhcyBjYW5jZWxsZWQsCisgICAgICAgIC8vIGJl
Y2F1c2UgdGhhdCdzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgcmVzb3VyY2UgaGFuZGxlIGNsaWVu
dCwgd2UganVzdCB3YW50IHRvIG5vdGlmeSB0aGUgVUkgcHJvY2VzcworICAgICAgICAvLyB0byBz
dG9wIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSB1c2VyIGlucHV0IHN0cmVhbS4gSWYgVUkgcHJvY2Vz
cyBhbHJlYWR5IHNlbnQgYWxsIHRoZSBkYXRhIHdlIHNpbXBseQorICAgICAgICAvLyBmaW5pc2gg
c2lsZW50bHkuCisgICAgICAgIGlmICghd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlz
aGVkKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQoKSkp
KQorICAgICAgICAgICAgY2hpbGRQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjpTdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CisKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1B
ZGREYXRhKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQo
KSksIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiB9CiAKLXZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCB1aW50MzJfdCkKK3ZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVpbnQzMl90KQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEqIGRh
dGEgPSBtX2N1c3RvbVByb3RvY29sTWFwLmdldChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBBU1NF
UlQoZGF0YSk7CisgICAgQVNTRVJUKGRhdGEtPnRhc2spOworCisgICAgV2ViS2l0U291cFJlcXVl
c3RHZW5lcmljKiByZXF1ZXN0ID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfdGFza19n
ZXRfc291cmNlX29iamVjdChkYXRhLT50YXNrKSk7CisgICAgd2Via2l0U291cFJlcXVlc3RHZW5l
cmljU2V0Q29udGVudExlbmd0aChyZXF1ZXN0LCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSA/IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpIDogLTEpOworICAgIHdlYmtp
dFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBlKHJlcXVlc3QsICFyZXNwb25zZS5taW1l
VHlwZSgpLmlzRW1wdHkoKSA/IHJlc3BvbnNlLm1pbWVUeXBlKCkudXRmOCgpLmRhdGEoKSA6IDAp
OwogfQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCkKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NF
UlQobV9jdXN0b21Qcm90b2NvbE1hcC5jb250YWlucyhjdXN0b21Qcm90b2NvbElEKSk7CisgICAg
bV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKK3ZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzZW5kKEdUYXNrKiB0YXNrKQoreworICAgIHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQgPSBnZW5lcmF0ZUN1c3RvbVByb3RvY29sSUQoKTsKKyAgICBXZWJL
aXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVS
SUMoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2spKTsKKyAgICBtX2N1c3RvbVByb3RvY29s
TWFwLnNldChjdXN0b21Qcm90b2NvbElELCBhZG9wdFB0cihuZXcgV2ViU291cFJlcXVlc3RBc3lu
Y0RhdGEodGFzaywgcmVxdWVzdCkpKTsKKworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXNvdXJjZVJlcXVlc3QoU09VUF9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBjaGlsZFByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGlu
ZyhjdXN0b21Qcm90b2NvbElELCByZXNvdXJjZVJlcXVlc3QpLCAwKTsKK30KKworR0lucHV0U3Ry
ZWFtKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmZpbmlzaChHVGFzayogdGFzaywgR0Vycm9yKiog
ZXJyb3IpCit7CisgICAgZ3BvaW50ZXIgaW5wdXRTdHJlYW0gPSBnX3Rhc2tfcHJvcGFnYXRlX3Bv
aW50ZXIodGFzaywgZXJyb3IpOworICAgIHJldHVybiBpbnB1dFN0cmVhbSA/IEdfSU5QVVRfU1RS
RUFNKGlucHV0U3RyZWFtKSA6IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNT
b3VwLmNwcAppbmRleCA3NTY1YWEyLi43Mjc4OTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtNDIs
NiArNDIsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
cXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQzMl90PihyZXNvdXJjZVJlcXVlc3Quc291cE1lc3NhZ2VGbGFncygpKTsK
KyAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCk7CiB9CiAK
IGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKQEAgLTUwLDYgKzUxLDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJlc291cmNlUmVxdWVzdC5zZXRTb3VwTWVzc2FnZUZsYWdzKHN0YXRpY19jYXN0PFNvdXBN
ZXNzYWdlRmxhZ3M+KHNvdXBNZXNzYWdlRmxhZ3MpKTsKKworICAgIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRJbml0aWF0aW5nUGFn
ZUlEKGluaXRpYXRpbmdQYWdlSUQpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAppbmRl
eCBjOGE5NTQ0Li4wMzMzMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCkBAIC0zMiw5ICszMiwxNCBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7
CiBjbGFzcyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTsKIAorI2lmIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQorI2Vsc2UK
IFdLX0FERF9BUElfTUFQUElORyhXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkpCisjZW5kaWYKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjk1YjFmODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitXS1R5cGVJRCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlw
ZUlEKCkKK3sKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICByZXR1cm4gdG9BUEko
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJTZXRDbGllbnQoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBz
b3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKK3sKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09M
UykKKyAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVudCh3
a0NsaWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzb3VwUmVxdWVzdE1hbmFnZXJSZWYp
OworICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42ZDBlYzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKKyNk
ZWZpbmUgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK3R5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJT
dGFydExvYWRpbmdDYWxsYmFjaykoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJl
ZiBzb3VwTWFuYWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3RSZWYsIFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKK3R5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdG9w
TG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNv
dXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudEJhc2UgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsKKyAgICBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAgYmFzZTsKKworICAg
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExvYWRpbmdDYWxsYmFjayBz
dGFydExvYWRpbmc7CisgICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclN0b3BM
b2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOworfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50VjA7CisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudEJhc2UqKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlm
IC8qIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDgzOTA0YWQu
LmJkMDYwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcml2YXRlLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViS2l0UHJpdmF0ZV9oCiAK
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQVBJQ2FzdC5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tDb250
ZXh0U291cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tEb3dubG9hZC5oPgogI2luY2x1ZGUgPFdl
YktpdDIvV0tGaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tGdWxsU2NyZWVuQ2xp
ZW50R3RrLmg+CkBAIC0zOSw3ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0luc3BlY3Rv
ckNsaWVudEd0ay5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9X
S1NvdXBSZXF1ZXN0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLVGV4dENoZWNrZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dlYktp
dDJfQy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCmluZGV4IGFjYzE5MDEuLjdhYzk4
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJl
cXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKQEAgLTIwLDM0ICsyMCwzMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmgiCiAKLSNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Jl
ZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1zdGF0aWMgdm9pZCBkaWRSZWNl
aXZlVVJJUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJS
ZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tQYWdlUmVmIGluaXRpYXRpbmdQYWdlUmVmLCB1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBzdGFydExv
YWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1h
bmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1
ZXN0UmVmLCBXS1BhZ2VSZWYgaW5pdGlhdGluZ1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7Ci0gICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09O
VEVYVChjbGllbnRJbmZvKTsKLSAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJl
cXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh3ZWJDb250ZXh0
LCB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKSwgdG9JbXBsKHVybFJlZiksIHRvSW1wbChp
bml0aWF0aW5nUGFnZVJlZiksIHJlcXVlc3RJRCkpOwotICAgIHdlYmtpdFdlYkNvbnRleHRSZWNl
aXZlZFVSSVJlcXVlc3Qod2ViQ29udGV4dCwgcmVxdWVzdC5nZXQoKSk7CisgICAgd2Via2l0V2Vi
Q29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdFQktJVF9XRUJfQ09OVEVYVChjbGll
bnRJbmZvKSwgY3VzdG9tUHJvdG9jb2xJRCwgdG9JbXBsKHJlcXVlc3RSZWYpLCB0b0ltcGwoaW5p
dGlhdGluZ1BhZ2VSZWYpKTsKIH0KIAotc3RhdGljIHZvaWQgZGlkRmFpbFRvTG9hZFVSSVJlcXVl
c3QoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIHN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dERpZEZhaWxUb0xvYWRVUklS
ZXF1ZXN0KFdFQktJVF9XRUJfQ09OVEVYVChjbGllbnRJbmZvKSwgcmVxdWVzdElEKTsKKyAgICB3
ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2NvbChXRUJLSVRfV0VCX0NPTlRF
WFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3RvY29sSUQpOwogfQogCiB2b2lkIGF0dGFjaFJlcXVl
c3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7
Ci0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
ID0geworICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50ID0gewogICAgICAgICB7CiAgICAgICAgICAgICAwLCAvLyB2ZXJz
aW9uCiAgICAgICAgICAgICB3ZWJDb250ZXh0IC8vIGNsaWVudEluZm8KICAgICAgICAgfSwKLSAg
ICAgICAgZGlkUmVjZWl2ZVVSSVJlcXVlc3QsCi0gICAgICAgIGRpZEZhaWxUb0xvYWRVUklSZXF1
ZXN0CisgICAgICAgIHN0YXJ0TG9hZGluZywKKyAgICAgICAgc3RvcExvYWRpbmcKICAgICB9Owot
ICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KHRvQVBJKHdlYmtpdFdlYkNvbnRleHRH
ZXRSZXF1ZXN0TWFuYWdlcih3ZWJDb250ZXh0KSksICZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJh
c2UpOworICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQodG9B
UEkod2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpKSwgJndrUmVx
dWVzdE1hbmFnZXJDbGllbnQuYmFzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXgg
ZDAxMzZjZC4uYjIzZTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTI1LDcgKzI1LDYg
QEAKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR093blB0clNvdXAuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KQEAgLTU0LDcgKzUzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1
ZmZlclNpemUgPSA4MTkyOwogCiBzdHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRl
IHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0OwotICAgIFJlZlB0cjxXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eT4gd2ViUmVxdWVzdE1hbmFnZXI7CisgICAgUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiB3ZWJSZXF1ZXN0TWFuYWdlcjsKICAgICBS
ZWZQdHI8V2ViUGFnZVByb3h5PiBpbml0aWF0aW5nUGFnZTsKICAgICB1aW50NjRfdCByZXF1ZXN0
SUQ7CiAgICAgQ1N0cmluZyB1cmk7CkBAIC03NCwyMiArNzMsMTcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3RD
bGFzcyogcmUKIHsKIH0KIAotV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1l
UmVxdWVzdENyZWF0ZShXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eSogd2ViUmVxdWVzdE1hbmFnZXIsIEFQSTo6VVJMKiB3ZWJVUkwsIFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK1dlYktpdFVSSVNj
aGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVz
dElELCBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBBUEk6OlVSTFJlcXVlc3QqIHVybFJl
cXVlc3QsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UpCiB7CiAgICAgV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVfUkVRVUVTVCwgTlVMTCkpOwogICAgIHJlcXVlc3Qt
PnByaXYtPndlYkNvbnRleHQgPSB3ZWJDb250ZXh0OwotICAgIHJlcXVlc3QtPnByaXYtPndlYlJl
cXVlc3RNYW5hZ2VyID0gd2ViUmVxdWVzdE1hbmFnZXI7Ci0gICAgcmVxdWVzdC0+cHJpdi0+dXJp
ID0gd2ViVVJMLT5zdHJpbmcoKS51dGY4KCk7CisgICAgcmVxdWVzdC0+cHJpdi0+d2ViUmVxdWVz
dE1hbmFnZXIgPSB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIod2ViQ29udGV4dCk7
CisgICAgcmVxdWVzdC0+cHJpdi0+dXJpID0gdXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCkudXRmOCgpOwogICAgIHJlcXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdl
ID0gaW5pdGlhdGluZ1BhZ2U7CiAgICAgcmVxdWVzdC0+cHJpdi0+cmVxdWVzdElEID0gcmVxdWVz
dElEOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi11aW50NjRfdCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0R2V0SUQoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+cmVxdWVzdElEOwotfQotCiB2b2lkIHdlYmtpdFVSSVNjaGVtZVJl
cXVlc3RDYW5jZWwoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBpZiAo
cmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkpCkBAIC0xNzMsMjEgKzE2NywyNSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVh
bSogaW5wdXRTdHJlYW0sIEdBc3luYwogICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRl
KiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJEYXRhID0g
QVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
cHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7CiAgICAgaWYgKCFwcml2LT5ieXRlc1JlYWQp
IHsKLSAgICAgICAgLy8gRmlyc3QgY2h1bmsgcmVhZC4gSW4gY2FzZSBvZiBlbXB0eSByZXBseSBh
biBlbXB0eSBBUEk6OkRhdGEgaXMgc2VudCB0byB0aGUgV2ViUHJvY2Vzcy4KLSAgICAgICAgcHJp
di0+d2ViUmVxdWVzdE1hbmFnZXItPmRpZEhhbmRsZVVSSVJlcXVlc3Qod2ViRGF0YS5nZXQoKSwg
cHJpdi0+c3RyZWFtTGVuZ3RoLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPm1pbWVUeXBlLmRhdGEo
KSksIHByaXYtPnJlcXVlc3RJRCk7CisgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNh
c2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdv
cmtpbmcgcHJvY2Vzcy4KKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJp
KSksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKKyAgICAgICAgICAg
IHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVx
dWVzdElELCByZXNwb25zZSk7CisgICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRM
b2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAo
Ynl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7Ci0gICAg
ICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5IEFQSTo6
RGF0YSB0byB0aGUgV2ViUHJvY2VzcyB3aGVuIHN0cmVhbSBsZW5ndGggaXMgdW5rbm93bi4KLSAg
ICAgICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXItPmRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0YSh3
ZWJEYXRhLmdldCgpLCBwcml2LT5yZXF1ZXN0SUQpOworICAgICAgICAvLyBTdWJzZXF1ZW50IGNo
dW5rIHJlYWQuIFdlIG9ubHkgc2VuZCBhbiBlbXB0eSBBUEk6OkRhdGEgdG8gdGhlIG5ldHdvcmtp
bmcgcHJvY2VzcyB3aGVuIHN0cmVhbSBsZW5ndGggaXMgdW5rbm93bi4KKyAgICAgICAgcHJpdi0+
d2ViUmVxdWVzdE1hbmFnZXItPmRpZExvYWREYXRhKHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YS5n
ZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKCFieXRlc1JlYWQpIHsKLSAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaFVSSVJlcXVlc3QocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVx
dWVzdC0+cHJpdi0+cmVxdWVzdElEKTsKKyAgICAgICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXIt
PmRpZEZpbmlzaExvYWRpbmcocmVxdWVzdC0+cHJpdi0+cmVxdWVzdElEKTsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChyZXF1ZXN0LT5wcml2
LT53ZWJDb250ZXh0LCByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0SUQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgcHJpdi0+Ynl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKICAgICBnX2lucHV0
X3N0cmVhbV9yZWFkX2FzeW5jKGlucHV0U3RyZWFtLCBwcml2LT5yZWFkQnVmZmVyLCBnUmVhZEJ1
ZmZlclNpemUsIEdfUFJJT1JJVFlfREVGQVVMVCwgcHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5
Q2FsbGJhY2s+KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spLCBnX29iamVjdF9y
ZWYocmVxdWVzdC5nZXQoKSkpOworICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5
Q2FsbGJhY2s+KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spLCBnX29iamVjdF9y
ZWYocmVxdWVzdC5nZXQoKSkpOwogfQogCiAvKioKQEAgLTIxMiw3ICsyMTAsNyBAQCB2b2lkIHdl
YmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJl
cXVlc3QsIEdJbnB1dFN0cgogICAgIHJlcXVlc3QtPnByaXYtPmJ5dGVzUmVhZCA9IDA7CiAgICAg
cmVxdWVzdC0+cHJpdi0+bWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICBnX2lucHV0X3N0cmVhbV9y
ZWFkX2FzeW5jKGlucHV0U3RyZWFtLCByZXF1ZXN0LT5wcml2LT5yZWFkQnVmZmVyLCBnUmVhZEJ1
ZmZlclNpemUsIEdfUFJJT1JJVFlfREVGQVVMVCwgcmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUu
Z2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdB
c3luY1JlYWR5Q2FsbGJhY2s+KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spLCBn
X29iamVjdF9yZWYocmVxdWVzdCkpOworICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1Jl
YWR5Q2FsbGJhY2s+KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spLCBnX29iamVj
dF9yZWYocmVxdWVzdCkpOwogfQogCiAvKioKQEAgLTIzMiw3ICsyMzAsNiBAQCB2b2lkIHdlYmtp
dF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qq
IHJlcXVlc3QsIEdFcgogICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0g
cmVxdWVzdC0+cHJpdjsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJv
cihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHByaXYtPnVy
aS5kYXRhKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKLSAgICBwcml2LT53
ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFVSSVJlcXVlc3QocmVzb3VyY2VFcnJvciwgcHJpdi0+
cmVxdWVzdElEKTsKLQotICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hVUklSZXF1ZXN0KHBy
aXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CisgICAgcHJpdi0+d2ViUmVxdWVzdE1h
bmFnZXItPmRpZEZhaWxXaXRoRXJyb3IocHJpdi0+cmVxdWVzdElELCByZXNvdXJjZUVycm9yKTsK
KyAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKHByaXYt
PndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFBy
aXZhdGUuaAppbmRleCAzODY3MTczLi41MjA4OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQ
cml2YXRlLmgKQEAgLTI0LDggKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCi1XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKFdlYktpdFdlYkNvbnRleHQqLCBX
ZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KiwgQVBJOjpVUkwqLCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci11aW50NjRfdCB3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0R2V0SUQoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCopOworV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQs
IFdlYktpdFdlYkNvbnRleHQqLCBBUEk6OlVSTFJlcXVlc3QqLCBXZWJLaXQ6OldlYlBhZ2VQcm94
eSopOwogdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJl
cXVlc3QqKTsKIAogI2VuZGlmIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAKaW5kZXggMmIxYTVmMy4uNWE3ZjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTEzNiw3ICsxMzYs
NyBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktp
dENvb2tpZU1hbmFnZXI+IGNvb2tpZU1hbmFnZXI7CiAgICAgR1JlZlB0cjxXZWJLaXRGYXZpY29u
RGF0YWJhc2U+IGZhdmljb25EYXRhYmFzZTsKICAgICBHUmVmUHRyPFdlYktpdFNlY3VyaXR5TWFu
YWdlcj4gc2VjdXJpdHlNYW5hZ2VyOwotICAgIFJlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eT4gcmVxdWVzdE1hbmFnZXI7CisgICAgUmVmUHRyPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyPiByZXF1ZXN0TWFuYWdlcjsKICAgICBVUklTY2hlbWVIYW5kbGVyTWFwIHVy
aVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RNYXAgdXJpU2NoZW1lUmVxdWVz
dHM7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBn
cG9pbnRlciBjcmVhdGVEZWZhdWx0V2ViQ29udGV4dChncG9pbnRlcikKICAgICBXZWJLaXRXZWJD
b250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAKICAgICBwcml2LT5jb250
ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRlKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoaW5qZWN0
ZWRCdW5kbGVGaWxlbmFtZSgpLmRhdGEoKSkpOwotICAgIHByaXYtPnJlcXVlc3RNYW5hZ2VyID0g
d2ViQ29udGV4dC0+cHJpdi0+Y29udGV4dC0+c3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eT4oKTsKKyAgICBwcml2LT5yZXF1ZXN0TWFuYWdlciA9IHdlYkNvbnRleHQtPnByaXYt
PmNvbnRleHQtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+
KCk7CiAgICAgcHJpdi0+Y29udGV4dC0+c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsUHJpbWFyeVdl
YkJyb3dzZXIpOwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gRklYTUU6IFRl
bXBvcmFyeSB1c2UgYW4gZW52IHZhciB1bnRpbCB3ZSBoYXZlIEFQSSB0byBzZXQgdGhlIHByb2Nl
c3MgbW9kZWwuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1
NDYzLgpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVy
X3VyaV9zY2hlbWUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhCiAKICAgICBS
ZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0UmVmKG5ldyBXZWJL
aXRVUklTY2hlbWVIYW5kbGVyKGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSkpOwog
ICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLnNldChTdHJpbmc6OmZyb21VVEY4
KHNjaGVtZSksIGhhbmRsZXIuZ2V0KCkpOwotICAgIGNvbnRleHQtPnByaXYtPnJlcXVlc3RNYW5h
Z2VyLT5yZWdpc3RlclVSSVNjaGVtZShTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAgIGNv
bnRleHQtPnByaXYtPnJlcXVlc3RNYW5hZ2VyLT5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSk7CiB9CiAKIC8qKgpAQCAtODc5LDM0ICs4Nzks
MzUgQEAgV2ViQ29udGV4dCogd2Via2l0V2ViQ29udGV4dEdldENvbnRleHQoV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCkKICAgICByZXR1cm4gY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKTsK
IH0KIAotV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqIHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1
ZXN0TWFuYWdlcihXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIqIHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcihXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5yZXF1
ZXN0TWFuYWdlci5nZXQoKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0UmVjZWl2ZWRVUklS
ZXF1ZXN0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qq
IHJlcXVlc3QpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2Nv
bChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBB
UEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIFdlYktpdDo6V2ViUGFnZVByb3h5KiBpbml0aWF0
aW5nUGFnZSkKIHsKLSAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJvbVVURjgod2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QpKSk7CisgICAgR1JlZlB0cjxXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNjaGVtZVJl
cXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgdXJsUmVxdWVzdCwgaW5pdGlh
dGluZ1BhZ2UpKTsKKyAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJvbVVURjgod2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QuZ2V0KCkpKSk7CiAgICAgUmVmUHRy
PFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBjb250ZXh0LT5wcml2LT51cmlTY2hl
bWVIYW5kbGVycy5nZXQoc2NoZW1lKTsKICAgICBBU1NFUlQoaGFuZGxlci5nZXQoKSk7CiAgICAg
aWYgKCFoYW5kbGVyLT5oYXNDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250
ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5zZXQod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdl
dElEKHJlcXVlc3QpLCByZXF1ZXN0KTsKLSAgICBoYW5kbGVyLT5wZXJmb3JtQ2FsbGJhY2socmVx
dWVzdCk7CisgICAgY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMuc2V0KGN1c3RvbVBy
b3RvY29sSUQsIHJlcXVlc3QuZ2V0KCkpOworICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhy
ZXF1ZXN0LmdldCgpKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlkRmFpbFRvTG9hZFVS
SVJlcXVlc3QoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgcmVxdWVzdElEKQor
dm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIEdSZWZQ
dHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGNvbnRleHQtPnByaXYtPnVyaVNj
aGVtZVJlcXVlc3RzLmdldChyZXF1ZXN0SUQpOworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1l
UmVxdWVzdD4gcmVxdWVzdCA9IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLmdldChj
dXN0b21Qcm90b2NvbElEKTsKICAgICBpZiAoIXJlcXVlc3QuZ2V0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKHJlcXVlc3QuZ2V0KCkpOwogfQog
Ci12b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hVUklSZXF1ZXN0KFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3ZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SUQpOworICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKIH0KIAogdm9pZCB3ZWJraXRXZWJD
b250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJWaWV3R3JvdXApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaAppbmRleCA4MWM0NzNjLi5lZDlmYTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2
YXRlLmgKQEAgLTI5LDIwICsyOSwxOSBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgotI2luY2x1
ZGUgIldlYktpdFVSSVNjaGVtZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0dyb3VwLmgiCi0jaW5jbHVkZSAiV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgogCiBXZWJLaXQ6OldlYkNvbnRleHQqIHdlYmtpdFdlYkNvbnRleHRHZXRD
b250ZXh0KFdlYktpdFdlYkNvbnRleHQqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250
ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJveHkqKTsKIFdlYktpdERv
d25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJLaXRXZWJDb250ZXh0Kiwg
Y29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogdm9pZCB3ZWJraXRXZWJD
b250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5Kik7CiB2b2lkIHdlYmtp
dFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdERvd25s
b2FkKik7Ci1XZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KiB3ZWJraXRXZWJDb250
ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29udGV4dCopOwotdm9pZCB3ZWJraXRXZWJD
b250ZXh0UmVjZWl2ZWRVUklSZXF1ZXN0KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0Kik7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGYWlsVG9Mb2FkVVJJUmVxdWVz
dChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgcmVxdWVzdElEKTsKLXZvaWQgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaFVSSVJlcXVlc3QoV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IHJl
cXVlc3RJRCk7CitXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiB3
ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29udGV4dCopOwordm9p
ZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29u
dGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJMUmVxdWVzdCosIFdlYktp
dDo6V2ViUGFnZVByb3h5Kik7Cit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3Rv
bVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsK
K3ZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJL
aXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2Vi
VmlldyosIFdlYktpdFdlYlZpZXdHcm91cCopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmll
d0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyopOwogV2ViS2l0V2Vi
Vmlldyogd2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQq
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCBiYjMyZGFmLi42MTNmZjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAt
NDMsMTAgKzQzLDExIEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBDaGlsZFByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYkNvbnRleHQ7CiAKIGNsYXNz
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGls
ZFByb2Nlc3NQcm94eSopOworICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KENoaWxkUHJvY2Vzc1Byb3h5KiwgV2ViQ29udGV4dCYpOwogCiAgICAgdm9pZCBzdGFydExvYWRp
bmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsK
QEAgLTU2LDYgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwog
CiAgICAgQ2hpbGRQcm9jZXNzUHJveHkqIG1fY2hpbGRQcm9jZXNzUHJveHk7CisgICAgV2ViQ29u
dGV4dCYgbV93ZWJDb250ZXh0OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgSGFz
aE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI+PiBMb2FkZXJN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1hYy5tbQppbmRleCAxOTgyMmY5Li43ZDBlZmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
YWMubW0KQEAgLTEyMiw4ICsxMjIsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94eSkKK0N1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGls
ZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHksIFdlYkNvbnRleHQmIHdlYkNvbnRleHQp
CiAgICAgOiBtX2NoaWxkUHJvY2Vzc1Byb3h5KGNoaWxkUHJvY2Vzc1Byb3h5KQorICAgICwgbV93
ZWJDb250ZXh0KHdlYkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1fY2hpbGRQcm9jZXNzUHJveHkp
OwogICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5U291cC5jcHAKaW5kZXggNTdiOTllNC4uOGU1NTRmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eVNvdXAuY3BwCkBAIC0yNSwyNiArMjUsMjkgQEAKICNpbmNsdWRlICJDaGlsZFByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94
eSkKK0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eShDaGlsZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHksIFdlYkNvbnRleHQmIHdlYkNv
bnRleHQpCiAgICAgOiBtX2NoaWxkUHJvY2Vzc1Byb3h5KGNoaWxkUHJvY2Vzc1Byb3h5KQorICAg
ICwgbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1fY2hpbGRQcm9jZXNz
UHJveHkpOwogICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
KnRoaXMpOwogfQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRp
bmcodWludDY0X3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpCit2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJDb250ZXh0LnN1cHBsZW1lbnQ8V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElE
LCByZXF1ZXN0LCBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocmVxdWVzdC5pbml0aWF0aW5nUGFn
ZUlEKCkpKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRp
bmcodWludDY0X3QpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGlu
Zyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgbV93ZWJDb250ZXh0LnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI+KCktPnN0b3BMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9z
b3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjQ0ZTdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKwor
I2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjb25zdCBjaGFyKiBXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIiOworfQorCitQYXNzUmVmUHRyPFdlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihjb250ZXh0KSk7Cit9
CisKK1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJDb250ZXh0KiBjb250ZXh0KQorICAgIDogV2ViQ29udGV4
dFN1cHBsZW1lbnQoY29udGV4dCkKK3sKK30KKworV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXI6On5XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcigpCit7Cit9CisK
K3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmluaXRpYWxpemVDbGll
bnQoY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNs
aWVudCkKK3sKKyAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7Cit9CisKKy8vIFdlYkNv
bnRleHRTdXBwbGVtZW50Cit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojpjb250ZXh0RGVzdHJveWVkKCkKK3sKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCit7Cit9CisK
K3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKK3sKKyAgICBBUEk6Ok9iamVjdDo6cmVmKCk7Cit9CisKK3ZvaWQgV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KQoreworICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNv
bnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb250ZXh0KCktPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2No
ZW1lKTsKKworICAgIEFTU0VSVCghbV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhzY2hlbWUp
KTsKKyAgICBtX3JlZ2lzdGVyZWRTY2hlbWVzLmFwcGVuZChzY2hlbWUpOworfQorCit2b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKCFjb250ZXh0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQoKS0+dW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSk7CisKKyAgICBBU1NFUlQobV9yZWdpc3RlcmVkU2NoZW1lcy5j
b250YWlucyhzY2hlbWUpKTsKKyAgICBtX3JlZ2lzdGVyZWRTY2hlbWVzLnJlbW92ZShtX3JlZ2lz
dGVyZWRTY2hlbWVzLmZpbmQoc2NoZW1lKSk7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQcm94eSog
aW5pdGlhaW5nUGFnZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGluZyh0aGlzLCBj
dXN0b21Qcm90b2NvbElELCByZXF1ZXN0LCBpbml0aWFpbmdQYWdlKSkKKyAgICAgICAgZGlkRmFp
bFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3Io
cmVxdWVzdCkpOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAgIG1fY2xpZW50
LnN0b3BMb2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQpOworfQorCit2b2lkIFdlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit7CisgICAgaWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRl
eHQoKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVByb3RvY29sSUQsIHJl
c3BvbnNlLCAwKSwgMCk7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IEFQSTo6
RGF0YSogZGF0YSkKK3sKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY29udGV4dCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRMb2FkRGF0YShjdXN0b21Qcm90b2NvbElELCBk
YXRhLT5kYXRhUmVmZXJlbmNlKCkpLCAwKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIWNv
bnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dCgpLT5uZXR3b3JraW5nUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpE
aWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY29udGV4dCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKGN1
c3RvbVByb3RvY29sSUQpLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZGM3NWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9oCisjZGVmaW5lIFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIK
KyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIERh
dGE7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29udGV4dDsKKworY2xhc3MgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4sIHB1YmxpYyBXZWJDb250
ZXh0U3VwcGxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1l
bnROYW1lKCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcj4gY3JlYXRlKFdlYkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIH5XZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcigpOworCisgICAgdm9pZCBpbml0aWFsaXplQ2xp
ZW50KGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKik7
CisKKyAgICB2b2lkIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5n
JiBzY2hlbWUpOworICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNv
bnN0IFN0cmluZyYgc2NoZW1lKTsKKworICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYlBhZ2VQ
cm94eSopOworICAgIHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRMb2FkRGF0
YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBBUEk6OkRhdGEqKTsKKyAgICB2b2lk
IGRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElEKTsKKworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZWdpc3RlcmVk
U2NoZW1lc0ZvckN1c3RvbVByb3RvY29scygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJlZFNj
aGVtZXM7IH0KKworICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJOjpP
YmplY3Q6OmRlcmVmOworCitwcml2YXRlOgorICAgIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKFdlYkNvbnRleHQqKTsKKworICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50Cisg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisKKyAgICBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudCBtX2NsaWVudDsKKyAgICBWZWN0
b3I8U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2VuZGlmIC8vIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42YzQ5NzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJDbGllbnQuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BS
T1RPQ09MUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlciogc291cFJlcXVlc3RNYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQ
cm94eSogaW5pdGlhdGluZ1BhZ2UpCit7CisgICAgaWYgKCFtX2NsaWVudC5zdGFydExvYWRpbmcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxBUEk6OlVSTFJlcXVlc3Q+IHVy
bFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0KTsKKyAgICBtX2NsaWVu
dC5zdGFydExvYWRpbmcodG9BUEkoc291cFJlcXVlc3RNYW5hZ2VyKSwgY3VzdG9tUHJvdG9jb2xJ
RCwgdG9BUEkodXJsUmVxdWVzdC5nZXQoKSksIHRvQVBJKGluaXRpYXRpbmdQYWdlKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcpCisgICAg
ICAgIG1fY2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3Rv
bVByb3RvY29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kOWY1NDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJDbGllbnRfaAorI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2luY2x1ZGUg
IkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA+IFZlcnNpb25zOworfTsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7CisKK2NsYXNz
IFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6
Q2xpZW50PFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7Citw
dWJsaWM6CisgICAgYm9vbCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkqKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQorCisjZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjYzEzMjNkLi45NzY1ZDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNTYsNyArNTYsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQmIHdlYkNvbnRleHQpCiAgICAgOiBtX3dlYkNvbnRl
eHQod2ViQ29udGV4dCkKICAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQog
I2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSh0aGlzKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0aGlzLCB3
ZWJDb250ZXh0KQogI2VuZGlmCiB7CiAgICAgY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDRhZTU1MjAuLjVkNmM5OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTkxLDggKzkxLDEyIEBACiAjZW5kaWYKIAog
I2lmIFVTRShTT1VQKQorI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorI2luY2x1ZGUgIldl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjZWxzZQogI2luY2x1ZGUgIldl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIE5E
RUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTE3NSw4ICsx
NzksMTIgQEAgV2ViQ29udGV4dDo6V2ViQ29udGV4dChjb25zdCBTdHJpbmcmIGluamVjdGVkQnVu
ZGxlUGF0aCkKICAgICBhZGRTdXBwbGVtZW50PFdlYkRhdGFiYXNlTWFuYWdlclByb3h5PigpOwog
I2VuZGlmCiAjaWYgVVNFKFNPVVApCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAg
YWRkU3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKTsKKyNl
bHNlCiAgICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKTsKICNl
bmRpZgorI2VuZGlmCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIGFkZFN1cHBsZW1l
bnQ8V2ViQmF0dGVyeU1hbmFnZXJQcm94eT4oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiMDc0NTEwLi4wMzNlMjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCisj
aWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICNpbmNsdWRlICJXZWJT
b3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKQEAgLTQzMzAsNyArNDMzMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCwgVmVjdG9yPFN0cmluCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNp
ZiBVU0UoU09VUCkKKyNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcs
IHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVt
ZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PigpLT5kaWRSZWNlaXZlVVJJUmVxdWVzdCh1
cmlTdHJpbmcsIHRoaXMsIHJlcXVlc3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggZjRjMDdkMC4uZmI2ZDUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG5vdGlmeVJldmVhbGVkU2VsZWN0aW9uKCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCi0j
aWYgVVNFKFNPVVApCisjaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
ICAgICB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90
IHJlcXVlc3RJRCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNjcwY2RiMy4uYTI4ZTJhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0z
MTYsOSArMzE2LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgTG9hZFJlY2Vu
dFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVzdWx0KQogCiAjaWYg
VVNFKFNPVVApCisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgICMgU291cCBjdXN0
b20gVVJJIHJlcXVlc3QgbWVzc2FnZXMKICAgICBEaWRSZWNlaXZlVVJJUmVxdWVzdChTdHJpbmcg
dXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogI2VuZGlmCisjZW5kaWYKIAogICAgIFNh
dmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0
cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOGYzZWUy
My4uMjAzYzQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHko
V2ViQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9t
YXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKGZhbHNlKQogI2lmIEVOQUJM
RShDVVNUT01fUFJPVE9DT0xTKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0
aGlzKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0aGlzLCBjb250ZXh0KQog
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJD
b250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0
ay5jcHAKaW5kZXggZjgxMjY3MC4uMGYzZTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVS
ZWdpc3RyeS5oPgpAQCAtOTksNyArOTksNyBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogICAg
IH0KIAogICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgcGFyYW1ldGVy
cy51cmxTY2hlbWVzUmVnaXN0ZXJlZCA9IHN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHk+KCktPnJlZ2lzdGVyZWRVUklTY2hlbWVzKCk7CisgICAgICAgIHBhcmFtZXRlcnMudXJs
U2NoZW1lc1JlZ2lzdGVyZWQgPSBzdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyPigpLT5yZWdpc3RlcmVkU2NoZW1lc0ZvckN1c3RvbVByb3RvY29scygpOwogCiAg
ICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVQZXJz
aXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwgcGFy
YW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwogICAgICAgICBwYXJhbWV0ZXJz
LmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291cC5jcHAKaW5k
ZXggMmM0ODU1Yi4uNDNlZTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViQ29udGV4dFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9z
b3VwL1dlYkNvbnRleHRTb3VwLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC0zOSw2ICs0MCw5IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlCiAgICAgcGFyYW1ldGVy
cy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5Owog
ICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAgICAg
cGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9j
b2xzKCk7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmluZGV4IDBjOTU5YzQu
LjNjMTc3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTcwLDYgKzcwLDcgQEAKIAogI2lm
IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAxCisjZGVmaW5l
IEVOQUJMRV9DVVNUT01fUFJPVE9DT0xTIDEKICNlbmRpZgogCiAvKiBXaGVuIEMrKyBleGNlcHRp
b25zIGFyZSBkaXNhYmxlZCwgdGhlIEMrKyBsaWJyYXJ5IGRlZmluZXMgfHRyeXwgYW5kIHxjYXRj
aHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGUyOWE2YmIu
LjQyYzZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAj
ZW5kaWYKIAotI2lmIFVTRShTT1VQKQorI2lmIFVTRShTT1VQKSAmJiAhRU5BQkxFKENVU1RPTV9Q
Uk9UT0NPTFMpCiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCiAjZW5kaWYKIApA
QCAtMjAwLDcgKzIwMCw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShO
RVRXT1JLX0lORk8pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJOZXR3b3JrSW5mb01hbmFnZXI+KCk7
CiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpOwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCmluZGV4IDQxNjFiZjUuLjlkNDljNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWMuY3BwCkBAIC0yMCw5ICsyMCwxMCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgogCisjaWYgIUVOQUJM
RShDVVNUT01fUFJPVE9DT0xTKQogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJX
ZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
ZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDgsMTMgKzQ5LDI1IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9zb3VwX3JlcXVlc3RfZ2VuZXJpY19pbml0KFdlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpYyogcmVxdWVzdCkKIAogc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RHZW5l
cmljU2VuZEFzeW5jKFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxh
YmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKIHsK
KyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXIq
IGN1c3RvbVByb3RvY29sTWFuYWdlciA9IFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQ19HRVRf
Q0xBU1MocmVxdWVzdCktPmN1c3RvbVByb3RvY29sTWFuYWdlcjsKKyAgICBBU1NFUlQoY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyKTsKKyAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXItPnNlbmQoZ190YXNr
X25ldyhyZXF1ZXN0LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CisjZWxzZQog
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2Vy
PigpLT5zZW5kKGdfdGFza19uZXcocmVxdWVzdCwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2Vy
RGF0YSkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBHSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1
ZXN0R2VuZXJpY1NlbmRGaW5pc2goU291cFJlcXVlc3QqIHJlcXVlc3QsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rh
c2tfaXNfdmFsaWQocmVzdWx0LCByZXF1ZXN0KSwgMCk7CisjaWYgRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKiBjdXN0b21Qcm90b2NvbE1hbmFnZXIg
PSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUNfR0VUX0NMQVNTKHJlcXVlc3QpLT5jdXN0b21Q
cm90b2NvbE1hbmFnZXI7CisgICAgQVNTRVJUKGN1c3RvbVByb3RvY29sTWFuYWdlcik7CisgICAg
cmV0dXJuIGN1c3RvbVByb3RvY29sTWFuYWdlci0+ZmluaXNoKEdfVEFTSyhyZXN1bHQpLCBlcnJv
cik7CisjZWxzZQogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zdXBwbGVtZW50PFdl
YlNvdXBSZXF1ZXN0TWFuYWdlcj4oKS0+ZmluaXNoKEdfVEFTSyhyZXN1bHQpLCBlcnJvcik7Cisj
ZW5kaWYKIH0KIAogc3RhdGljIGdvZmZzZXQgd2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0Q29u
dGVudExlbmd0aChTb3VwUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaAppbmRleCA2
MjEyY2U2Li5iNjIyN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oCkBAIC0yMyw2ICsyMywxMCBAQAog
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAKKyNp
ZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaCIKKyNlbmRpZgorCiBHX0JFR0lOX0RFQ0xTCiAKICNkZWZpbmUgV0VCS0lUX1RZUEVfU09V
UF9SRVFVRVNUX0dFTkVSSUMgICAgICAgICAgICAod2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmlj
X2dldF90eXBlKCkpCkBAIC00NCw2ICs0OCwxMCBAQCBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpYyB7CiAKIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3MgewogICAg
IFNvdXBSZXF1ZXN0Q2xhc3MgcGFyZW50OworCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMp
CisgICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXIqIGN1c3RvbVByb3RvY29sTWFuYWdl
cjsKKyNlbmRpZgogfTsKIAogR1R5cGUgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2dldF90
eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJv
Y2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NT
b3VwLmNwcAppbmRleCA3MzMwNzhkLi5lNjAzYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgIldl
YlNvdXBSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNh
Y2hlLmg+CkBAIC00Niw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZiAhRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB1aW50NjRfdCBnZXRDYWNoZURpc2tGcmVl
U2l6ZShTb3VwQ2FjaGUqIGNhY2hlKQpAQCAtMjAzLDggKzIwNiwxMCBAQCB2b2lkIFdlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycwogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQogICAg
ICAgICBzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsK
IAorI2lmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQuc2l6ZSgpOyBpKyspCiAgICAgICAg
IHN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5yZWdpc3RlclVSSVNjaGVtZShw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkW2ldKTsKKyNlbmRpZgogCiAgICAgc2V0SWdu
b3JlVExTRXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220296</attachid>
            <date>2014-01-03 02:52:16 -0800</date>
            <delta_ts>2014-01-16 02:28:18 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-soup-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>93516</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NWJiMjczLi40MTc0ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTQtMDEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBQb3J0IGN1c3RvbSBVUkkgc2NoZW1lcyBpbXBsZW1lbnRhdGlv
biB0byBDVVNUT00gUFJPVE9DT0xTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjU1ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgaW5pdGlhdGluZ1BhZ2VJRCBtZW1iZXIgdG8gUmVzb3VyY2VSZXF1
ZXN0IHRoYXQgY2FuIGFzc29jaWF0ZQorICAgICAgICB0aGUgcmVxdWVzdCB3aXRoIHRoZSBpZGVu
dGlmaWVyIG9mIHRoZSB3ZWIgcGFnZSB0aGF0IHN0YXJ0ZWQgdGVoCisgICAgICAgIHJlcXVlc3Qu
IEFsc28gYWRkIGEgY29uc3RydWN0b3IgdGhhdCByZWNlaXZlcyBhIFNvdXBSZXF1ZXN0IGFuZAor
ICAgICAgICBpbml0aWFsaXplcyB0aGUgaW5pdGlhdGluZ1BhZ2VJRC4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6aW5pdGlhdGluZ1BhZ2VJRCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OnNldEluaXRpYXRpbmdQYWdlSUQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKwogMjAxNC0wMS0wMiAgSmFlaHVu
IExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEljb25Db250cm9sbGVy
LmNwcCBuZWVkcyB0byBpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKaW5k
ZXggY2YyMjZjMS4uYzc5NmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMjcsNyArMjcsOSBAQAogI2lm
bmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAogCisjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgi
CisjaW5jbHVkZSAiU291cFVSSVV0aWxzLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5j
b2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1l
c3NhZ2VGbGFncz4oMCkpCisgICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAg
ICAgICB7CiAgICAgICAgIH0KIApAQCAtNDUsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hl
UG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAgICAg
ICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQorICAgICAg
ICAgICAgLCBtX2luaXRpYXRpbmdQYWdlSUQoMCkKICAgICAgICAgewogICAgICAgICB9CiAKQEAg
LTUyLDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5n
KHRydWUpCiAgICAgICAgICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdl
RmxhZ3M+KDApKQorICAgICAgICAgICAgLCBtX2luaXRpYXRpbmdQYWdlSUQoMCkKICAgICAgICAg
ewogICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICAgICAgfQpAQCAt
NjAsNiArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNl
UmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAs
IG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGlj
X2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCisgICAgICAgICAgICAsIG1faW5pdGlhdGluZ1Bh
Z2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNjcsMTAgKzczLDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwg
VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0
cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZs
YWdzPigwKSkKKyAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHVwZGF0ZUZyb21Tb3VwTWVzc2FnZShzb3VwTWVzc2FnZSk7CiAgICAgICAg
IH0KIAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KQor
ICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHNvdXBVUklUb0tVUkwoc291cF9yZXF1
ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAg
ICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQorICAgICAgICAgICAgLCBtX3NvdXBGbGFn
cyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKKyAgICAgICAgICAgICwgbV9pbml0
aWF0aW5nUGFnZUlEKFJlc291cmNlSGFuZGxlOjpnZXRTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdl
SUQoc291cFJlcXVlc3QpKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHVw
ZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0KSB7ICp0aGlzID0gZGVsZWdhdGVQcm92aWRlZFJl
cXVlc3Q7IH0KIAogICAgICAgICBib29sIGFjY2VwdEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9hY2NlcHRFbmNvZGluZzsgfQpAQCAtODUsNiArMTAwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTb3VwTWVzc2FnZUZsYWdzIHNvdXBNZXNzYWdlRmxhZ3MoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXBGbGFnczsgfQogICAgICAgICB2b2lkIHNldFNvdXBNZXNzYWdlRmxhZ3MoU291
cE1lc3NhZ2VGbGFncyBzb3VwRmxhZ3MpIHsgbV9zb3VwRmxhZ3MgPSBzb3VwRmxhZ3M7IH0KIAor
ICAgICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9pbml0
aWF0aW5nUGFnZUlEOyB9CisgICAgICAgIHZvaWQgc2V0SW5pdGlhdGluZ1BhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpIHsgbV9pbml0aWF0aW5nUGFnZUlEID0gcGFnZUlEOyB9CisKICAgICAgICAgU291
cFVSSSogc291cFVSSSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKQEAgLTkyLDYgKzExMCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fYWNjZXB0RW5jb2RpbmcgOiAx
OwogICAgICAgICBTb3VwTWVzc2FnZUZsYWdzIG1fc291cEZsYWdzOworICAgICAgICB1aW50NjRf
dCBtX2luaXRpYXRpbmdQYWdlSUQ7CiAKICAgICAgICAgdm9pZCB1cGRhdGVTb3VwTWVzc2FnZU1l
bWJlcnMoU291cE1lc3NhZ2UqKSBjb25zdDsKICAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3Jt
UmVxdWVzdCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDQzMDcxNWMuLmY3M2I1
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRl
ICJHT3duUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlNvdXBVUklVdGlscy5oIgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDdmYzJkYy4uOTc1YWYy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxNC0wMS0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NPVVBdIFBvcnQgY3Vz
dG9tIFVSSSBzY2hlbWVzIGltcGxlbWVudGF0aW9uIHRvIENVU1RPTSBQUk9UT0NPTFMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTU4MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgY2xhc3Nl
cyB0byBpbXBsZW1lbnQgQ3VzdG9tUHJvdG9jb2xzIGZvciBzb3VwLiBUaGUgb2xkCisgICAgICAg
IGNsYXNzZXMgYXJlIG5vIGxvbmdlciBidWlsdCBmb3IgR1RLKyBhbmQgc2hvdWxkIGJlIHJlbW92
ZWQgb25jZQorICAgICAgICBvdGhlciBwb3J0cyB1c2luZyBzb3VwIGJhY2tlbmQgc3dpdGNoIHRv
IGN1c3RvbSBwcm90b2NvbHMKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBpbXBsZW1lbnRh
dGlvbiBpcyB0aGUgc2FtZSwgYnV0IHVzaW5nIHRoZQorICAgICAgICBDdXN0b21Qcm90b2NvbCBB
UEkgYW5kIG1lc3NhZ2VzLiBTaW5jZSB0aGUgQ3VzdG9tUHJvdG9jb2wKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gaXMgY29tbW9uIGZvciB3ZWIgYW5kIG5ldHdvcmsgcHJvY2VzcywgdGhpcworICAg
ICAgICBhZGRzIHN1cHBvcnQgZm9yIGN1c3RvbSBVUkkgc2NoZW1lcyB3aGVuIHVzaW5nIHRoZSBu
ZXR3b3JrCisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtl
OgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaDoKKyAgICAgICAgKiBT
aGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVDdXN0b21Qcm90b2NvbElEKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6On5XZWJTb3VwUmVxdWVz
dEFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhOjpy
ZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6
OnJlbGVhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1w
bDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlckltcGw6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6cmVnaXN0ZXJTY2hlbWUpOgorICAg
ICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpzdXBwb3J0c1NjaGVtZSk6
CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmRpZEZhaWxXaXRo
RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpkaWRM
b2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckltcGw6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VySW1wbDo6ZmluaXNoKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIFNo
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNv
dXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVn
aXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1
cHBvcnRzU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpk
aWRGYWlsV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpkaWRMb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNT
b3VwLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpl
bmNvZGVQbGF0Zm9ybURhdGEpOiBFbmNvZGUKKyAgICAgICAgaW5pdGlhdGluZyBwYWdlIElELgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRm
b3JtRGF0YSk6IERlY29kZQorICAgICAgICBpbml0aWF0aW5nIHBhZ2UgSUQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQp
OgorICAgICAgICAoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFn
ZXJDbGllbnQuY3BwOgorICAgICAgICAoc3RhcnRMb2FkaW5nKToKKyAgICAgICAgKHN0b3BMb2Fk
aW5nKToKKyAgICAgICAgKGF0dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUpOgorICAgICAgICAod2Via2l0VVJJ
U2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9y
ZXF1ZXN0X2ZpbmlzaCk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zpbmlz
aF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcDoKKyAgICAgICAgKGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1lKToKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcik6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3Rh
cnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dFN0b3BM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dERpZEZpbmlz
aExvYWRpbmdDdXN0b21Qcm90b2NvbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgQWRkIFdl
YkNvbnRleHQgbWVtYmVyIHJlcXVpcmVkIGJ5IHRoZSBzb3VwIGltcGxlbWVudGF0aW9uIHRvIGdl
dAorICAgICAgICB0aGUgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIgc3VwcGxl
bWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkpOgorICAgICAg
ICBQYXNzIFdlYkNvbnRleHQgdG8gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6fldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6Omlu
aXRpYWxpemVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxX
aXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyOjpyZWdpc3RlcmVkU2NoZW1lc0ZvckN1c3RvbVByb3RvY29scyk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
OjpzdG9wTG9hZGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJv
eHkpOiBQYXNzCisgICAgICAgIFdlYkNvbnRleHQgdG8gdGhlIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5IGNvbnN0cnVjdG9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KTogUGFzcyBXZWJDb250ZXh0IHRvIHRoZQor
ICAgICAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBjb25zdHJ1Y3Rvci4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3Mvc291cC9XZWJDb250ZXh0U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJLaXQyUHJl
Zml4Lmg6IEVuYWJsZSBDdXN0b21Qcm90b2NvbHMgYWx3YXlzIGZvciBHVEsuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
V2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpYy5jcHA6CisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kQXN5bmMp
OgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEZpbmlzaCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDEzLTEyLTMxICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09V
UF0gQWRkIHN0dWJzIGZvciBDdXN0b21Qcm90b2NvbCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CmluZGV4IDgxNzdhNmIuLjc3NTVhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDgsNiAr
MTA4LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VC
S0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEgXApAQCAtMTI2LDYgKzEyNyw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scyBcCisJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peCBcCkBAIC00
MjQsNyArNDI2LDYgQEAgdnBhdGggJS5tZXNzYWdlcy5pbiA9IFwKIAkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9QbHVnaW5zIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9SZXNvdXJjZUNhY2hlIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9TdG9yYWdlIFwKLQkkKFdlYktpdDIpL1VJUHJvY2Vzcy9zb3Vw
IFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MgXAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BcHBs
aWNhdGlvbkNhY2hlIFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvQmF0dGVyeSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2NDkxODhjLi5iMzViZTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQxLDggKzQxLDcgQEAgd2Via2l0Ml9oX2FwaSArPSBcCiAJ
JChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLSW5zcGVjdG9yQ2xpZW50R3RrLmggXAog
CSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuaCBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggXAotCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oIFwKLQkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNz
L0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIFwKIAkkKFdl
YktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuaCBcCkBAIC0yNjgsMTAgKzI2Nyw2IEBAIHdlYmtpdDJfYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJSZXNvdXJjZUNhY2hl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJSZXNv
dXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgXAotCURlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyTWVzc2FnZXMuaCBcCi0JRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
XAotCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlZpYnJhdGlvblByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJWaWJyYXRpb25Qcm94
eU1lc3NhZ2VzLmgKIApAQCAtNTE0LDYgKzUwOSw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaCBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oIFwKKwlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Q
cm90b2NvbE1hbmFnZXJJbXBsLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIFwKQEAgLTYyOCwx
MCArNjI1LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZ3RrL1dLVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Z3RrL1dLVmlld1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3Nv
dXAvV0tBUElDYXN0U291cC5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291
cC9XS0NvbnRleHRTb3VwLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3Nv
dXAvV0tDb250ZXh0U291cC5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291
cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJL
aXQyX0MuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5oIFwKQEAgLTk0NCw2ICs5MzksMTAgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvc291cC9OZXR3b3JrUHJvY2Vzc1By
b3h5U291cC5jcHAgXApAQCAtOTgzLDEwICs5ODIsNiBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvbnRleHRTb3VwLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAgXAot
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVu
dC5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudC5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9U
ZXh0Q2hlY2tlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXJDb21w
bGV0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRp
b24uY3BwIFwKQEAgLTEyODUsOCArMTI4MCw2IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
IFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
LmNwcCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpYy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjY0ZTU1YS4u
NzgxZGI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTM3LDYgKzM3LDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcAogCisgICAgU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5jcHAKICAgICBTaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAogCiAgICAgU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcApAQCAtNzUs
OSArNzYsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJ
L0MvZ3RrL1dLSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9ndGsv
V0tWaWV3LmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFnZXJTb3VwLmNwcAotICAgIFVJ
UHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAorICAgIFVJUHJvY2Vz
cy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0yMzYsNiArMjM2LDggQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJH
dGsuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGll
bnQuY3BwCisgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5p
eC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMjU3LDggKzI1OSw2IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Byb3h5R3Rr
LmNwcAogCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAK
LSAgICBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAg
VUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiAKICAgICBXZWJQ
cm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9j
ZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcApAQCAtMjk4LDcg
KzI5OCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3Mvc291
cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAgICAgV2ViUHJvY2Vzcy9zb3VwL1dlYktp
dFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCiAgICAgV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NTb3VwLmNwcAotICAgIFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3Bw
CiApCiAKIHNldChXZWJLaXQyX0lOU1RBTExFRF9IRUFERVJTCkBAIC0zOTQsNiArMzkzLDcgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2NwcC9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrIgorICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ayIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9z
b3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFz
ZVNvdXAuaAppbmRleCA2MTg5ZTRjLi42MDBmMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL3NvdXAvV0tCYXNlU291cC5oCkBAIC0zMSw1ICszMSw2IEBACiAjZW5kaWYKIAog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTb3VwUmVxdWVzdE1hbmFnZXIqIFdLU291cFJl
cXVlc3RNYW5hZ2VyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
clJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZVNvdXBfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVj
dC5oCmluZGV4IDAwNGViMGMuLjUyM2NmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
QEAgLTE1Niw2ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpZXcsCiAjaWYgVVNFKFNPVVAp
CiAgICAgICAgIFNvdXBSZXF1ZXN0TWFuYWdlciwKKyAgICAgICAgU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIsCiAjZW5kaWYKICNpZiBQTEFURk9STShFRkwpCiAgICAgICAgIFBvcHVw
TWVudUl0ZW0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXgg
NTA1MTA3ZS4uOWI3NGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXb3Jr
UXVldWUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIE9C
SkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbDsKICNlbmRpZgogCkBAIC01NSw2ICs1NSw3IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ2hpbGRQ
cm9jZXNzOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDsKIHN0cnVjdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
IDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIg
ewpAQCAtOTUsMTIgKzk2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSk7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogCi0gICAgSGFzaFNldDxTdHJpbmc+
IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Ci0gICAgTXV0ZXggbV9yZWdpc3RlcmVkU2NoZW1lc011dGV4
OwogICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFByb2Nlc3M7CiAgICAgUmVmUHRyPFdvcmtRdWV1
ZT4gbV9tZXNzYWdlUXVldWU7CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgSGFzaFNldDxTdHJp
bmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7CisgICAgTXV0ZXggbV9yZWdpc3RlcmVkU2NoZW1lc011
dGV4OworCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8V0tDdXN0b21Q
cm90b2NvbD4+IEN1c3RvbVByb3RvY29sTWFwOwogICAgIEN1c3RvbVByb3RvY29sTWFwIG1fY3Vz
dG9tUHJvdG9jb2xNYXA7CiAgICAgTXV0ZXggbV9jdXN0b21Qcm90b2NvbE1hcE11dGV4OwpAQCAt
MTA5LDYgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgLy8gV2UgcmV0dXJuIGEgUmV0YWluUHRyIGhl
cmUgYmVjYXVzZSBpdCBpcyB1bnNhZmUgdG8gcmV0dXJuIGEgcmF3IHBvaW50ZXIgc2luY2UgdGhl
IG9iamVjdCBtaWdodCBpbW1lZGlhdGVseSBiZSBkZXN0cm95ZWQgZnJvbSBhIGRpZmZlcmVudCB0
aHJlYWQuCiAgICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHByb3RvY29sRm9ySUQodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiAjZW5kaWYKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
dXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsPiBtX2ltcGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc4MGMzNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwCkBAIC0wLDAgKzEsMjA3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmgiCisKKyNpZiBFTkFC
TEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCisjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ3VzdG9tUHJvdG9j
b2xJRCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUN1c3RvbVByb3RvY29sSUQgPSAw
OworICAgIHJldHVybiArK3VuaXF1ZUN1c3RvbVByb3RvY29sSUQ7Cit9CisKK3N0cnVjdCBXZWJT
b3VwUmVxdWVzdEFzeW5jRGF0YSB7CisgICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEoR1Rhc2sq
IHRhc2ssIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdEdlbmVyaWMpCisgICAgICAg
IDogdGFzayh0YXNrKQorICAgICAgICAsIHJlcXVlc3QocmVxdWVzdEdlbmVyaWMpCisgICAgICAg
ICwgY2FuY2VsbGFibGUoZ190YXNrX2dldF9jYW5jZWxsYWJsZSh0YXNrKSkKKyAgICB7CisgICAg
ICAgIC8vIElmIHRoZSBzdHJ1Y3QgY29udGFpbnMgYSBudWxsIHJlcXVlc3QsIGl0IGlzIGJlY2F1
c2UgdGhlIHJlcXVlc3QgZmFpbGVkLgorICAgICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVy
KEdfT0JKRUNUKHJlcXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsK
KyAgICB9CisKKyAgICB+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKQorICAgIHsKKyAgICAgICAg
aWYgKHJlcXVlc3QpCisgICAgICAgICAgICBnX29iamVjdF9yZW1vdmVfd2Vha19wb2ludGVyKEdf
T0JKRUNUKHJlcXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsKKyAg
ICB9CisKKyAgICBib29sIHJlcXVlc3RGYWlsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdf
Y2FuY2VsbGFibGVfaXNfY2FuY2VsbGVkKGNhbmNlbGxhYmxlLmdldCgpKSB8fCAhcmVxdWVzdDsK
KyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiByZWxlYXNlVGFzaygpCisgICAgeworICAgICAg
ICBHVGFzayogcmV0dXJuVmFsdWUgPSB0YXNrOworICAgICAgICB0YXNrID0gMDsKKyAgICAgICAg
cmV0dXJuIGFkb3B0R1JlZihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR1Rhc2sqIHRhc2s7
CisgICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0OworICAgIEdSZWZQdHI8R0Nh
bmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKKyAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gc3RyZWFt
OworfTsKKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbChDaGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcykKKyAgICA6IG1fY2hpbGRQcm9jZXNzKGNo
aWxkUHJvY2VzcykKKyAgICAsIG1fc2NoZW1lcyhhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3X3dp
dGhfZnJlZV9mdW5jKGdfZnJlZSkpKQoreworfQorCitDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
Ojp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCgpCit7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VySW1wbDo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7Cisg
ICAgaWYgKG1fc2NoZW1lcy0+bGVuKQorICAgICAgICBnX3B0cl9hcnJheV9yZW1vdmVfaW5kZXhf
ZmFzdChtX3NjaGVtZXMuZ2V0KCksIG1fc2NoZW1lcy0+bGVuIC0gMSk7CisgICAgZ19wdHJfYXJy
YXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgZ19zdHJkdXAoc2NoZW1lLnV0ZjgoKS5kYXRhKCkpKTsK
KyAgICBnX3B0cl9hcnJheV9hZGQobV9zY2hlbWVzLmdldCgpLCAwKTsKKworICAgIFNvdXBTZXNz
aW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7
CisgICAgU291cFJlcXVlc3RDbGFzcyogZ2VuZXJpY1JlcXVlc3RDbGFzcyA9IHN0YXRpY19jYXN0
PFNvdXBSZXF1ZXN0Q2xhc3MqPihnX3R5cGVfY2xhc3NfcmVmKFdFQktJVF9UWVBFX1NPVVBfUkVR
VUVTVF9HRU5FUklDKSk7CisgICAgZ2VuZXJpY1JlcXVlc3RDbGFzcy0+c2NoZW1lcyA9IGNvbnN0
X2Nhc3Q8Y29uc3QgY2hhcioqPihyZWludGVycHJldF9jYXN0PGNoYXIqKj4obV9zY2hlbWVzLT5w
ZGF0YSkpOworICAgIHN0YXRpY19jYXN0PFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsYXNzKj4o
Z190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQykpLT5jdXN0
b21Qcm90b2NvbE1hbmFnZXIgPSB0aGlzOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9i
eV90eXBlKHNlc3Npb24sIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKTsKK30KKwor
Ym9vbCBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpzdXBwb3J0c1NjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBDU3RyaW5nIGNTY2hlbWUgPSBzY2hlbWUudXRmOCgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZXMtPmxlbjsgKytpKSB7CisgICAgICAgIGlmIChj
U2NoZW1lID09IHN0YXRpY19jYXN0PGNoYXIqPihnX3B0cl9hcnJheV9pbmRleChtX3NjaGVtZXMu
Z2V0KCksIGkpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpkaWRGYWlsV2l0
aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQoreworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKiBkYXRhID0gbV9j
dXN0b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgQVNTRVJUKGRhdGEp
OworCisgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGRhdGEtPnJlbGVhc2VUYXNrKCk7CisgICAg
QVNTRVJUKHRhc2suZ2V0KCkpOworICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0
KCksIGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisg
ICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCAiJXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgbV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3Vz
dG9tUHJvdG9jb2xJRCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZGlk
TG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQoreworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKiBkYXRh
ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgLy8gVGhl
IGRhdGEgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVxdWVzdCBtYXAgaWYgYSBw
cmV2aW91cyBjaHVuayBmYWlsZWQKKyAgICAvLyBhbmQgYSBuZXcgbWVzc2FnZSB3YXMgc2VudCBi
eSB0aGUgVUkgcHJvY2VzcyBiZWZvcmUgYmVpbmcgbm90aWZpZWQgYWJvdXQgdGhlIGZhaWx1cmUu
CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWRhdGEtPnN0cmVh
bSkgeworICAgICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gZGF0YS0+cmVsZWFzZVRhc2soKTsK
KyAgICAgICAgQVNTRVJUKHRhc2suZ2V0KCkpOworCisgICAgICAgIGdvZmZzZXQgc291cENvbnRl
bnRMZW5ndGggPSBzb3VwX3JlcXVlc3RfZ2V0X2NvbnRlbnRfbGVuZ3RoKFNPVVBfUkVRVUVTVChn
X3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpKTsKKyAgICAgICAgdWludDY0X3Qg
Y29udGVudExlbmd0aCA9IHNvdXBDb250ZW50TGVuZ3RoID09IC0xID8gMCA6IHN0YXRpY19jYXN0
PHVpbnQ2NF90Pihzb3VwQ29udGVudExlbmd0aCk7CisgICAgICAgIGlmICghZGF0YVJlZmVyZW5j
ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIC8vIEVtcHR5IHJlcGx5LCBqdXN0IGNyZWF0ZSBhbmQg
ZW1wdHkgR01lbW9yeUlucHV0U3RyZWFtLgorICAgICAgICAgICAgZGF0YS0+c3RyZWFtID0gZ19t
ZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpOworICAgICAgICB9IGVsc2UgaWYgKGRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpID09IGNvbnRlbnRMZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4
cGVjdCBtb3JlIGRhdGEsIHNvIHdlIGNhbiBqdXN0IGNyZWF0ZSBhIEdNZW1vcnlJbnB1dFN0cmVh
bSB3aXRoIGFsbCB0aGUgZGF0YS4KKyAgICAgICAgICAgIGRhdGEtPnN0cmVhbSA9IGdfbWVtb3J5
X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGdfbWVtZHVwKGRhdGFSZWZlcmVuY2UuZGF0YSgp
LCBkYXRhUmVmZXJlbmNlLnNpemUoKSksIGNvbnRlbnRMZW5ndGgsIGdfZnJlZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBleHBlY3QgbW9yZSBkYXRhIGNodW5rcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAgICAgZGF0YS0+c3RyZWFtID0gd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbU5ldyhjb250ZW50TGVuZ3RoKTsKKyAgICAgICAgICAgIHdlYmtpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RS
RUFNKGRhdGEtPnN0cmVhbS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJl
bmNlLnNpemUoKSk7CisgICAgICAgIH0KKyAgICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRh
c2suZ2V0KCksIGRhdGEtPnN0cmVhbS5nZXQoKSwgZ19vYmplY3RfdW5yZWYpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGRhdGEtPnJlcXVlc3RGYWlsZWQoKSkgeworICAgICAg
ICAvLyBSZXNvdXJjZVJlcXVlc3QgZmFpbGVkIG9yIGl0IHdhcyBjYW5jZWxsZWQuIEl0IGRvZXNu
J3QgbWF0dGVyIGhlcmUgdGhlIGVycm9yIG9yIGlmIGl0IHdhcyBjYW5jZWxsZWQsCisgICAgICAg
IC8vIGJlY2F1c2UgdGhhdCdzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgcmVzb3VyY2UgaGFuZGxl
IGNsaWVudCwgd2UganVzdCB3YW50IHRvIG5vdGlmeSB0aGUgVUkgcHJvY2VzcworICAgICAgICAv
LyB0byBzdG9wIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSB1c2VyIGlucHV0IHN0cmVhbS4gSWYgVUkg
cHJvY2VzcyBhbHJlYWR5IHNlbnQgYWxsIHRoZSBkYXRhIHdlIHNpbXBseQorICAgICAgICAvLyBm
aW5pc2ggc2lsZW50bHkuCisgICAgICAgIGlmICghd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bUZpbmlzaGVkKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5n
ZXQoKSkpKQorICAgICAgICAgICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7
CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVh
bS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Cit9
CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQoreworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKiBkYXRhID0gbV9jdXN0
b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgQVNTRVJUKGRhdGEpOwor
ICAgIEFTU0VSVChkYXRhLT50YXNrKTsKKworICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyog
cmVxdWVzdCA9IFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQyhnX3Rhc2tfZ2V0X3NvdXJjZV9v
YmplY3QoZGF0YS0+dGFzaykpOworICAgIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRl
bnRMZW5ndGgocmVxdWVzdCwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPyByZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA6IC0xKTsKKyAgICB3ZWJraXRTb3VwUmVxdWVz
dEdlbmVyaWNTZXRDb250ZW50VHlwZShyZXF1ZXN0LCAhcmVzcG9uc2UubWltZVR5cGUoKS5pc0Vt
cHR5KCkgPyByZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCkgOiAwKTsKK30KKwordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQpCit7CisgICAgQVNTRVJUKG1fY3VzdG9tUHJvdG9jb2xNYXAuY29udGFp
bnMoY3VzdG9tUHJvdG9jb2xJRCkpOworICAgIG1fY3VzdG9tUHJvdG9jb2xNYXAucmVtb3ZlKGN1
c3RvbVByb3RvY29sSUQpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OnNl
bmQoR1Rhc2sqIHRhc2spCit7CisgICAgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCA9IGdlbmVy
YXRlQ3VzdG9tUHJvdG9jb2xJRCgpOworICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVx
dWVzdCA9IFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmpl
Y3QodGFzaykpOworICAgIG1fY3VzdG9tUHJvdG9jb2xNYXAuc2V0KGN1c3RvbVByb3RvY29sSUQs
IHN0ZDo6bWFrZV91bmlxdWU8V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KHRhc2ssIHJlcXVlc3Qp
KTsKKworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QoU09VUF9S
RVFVRVNUKHJlcXVlc3QpKTsKKyAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCBy
ZXNvdXJjZVJlcXVlc3QpLCAwKTsKK30KKworR0lucHV0U3RyZWFtKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJJbXBsOjpmaW5pc2goR1Rhc2sqIHRhc2ssIEdFcnJvcioqIGVycm9yKQoreworICAgIGdw
b2ludGVyIGlucHV0U3RyZWFtID0gZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssIGVycm9y
KTsKKyAgICByZXR1cm4gaW5wdXRTdHJlYW0gPyBHX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbSkg
OiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNDQy
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmgKQEAgLTAsMCArMSw3
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEN1c3Rv
bVByb3RvY29sTWFuYWdlckltcGxfaAorI2RlZmluZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
X2gKKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HVGFzayBHVGFzazsKK3R5cGVkZWYg
c3RydWN0IF9HSW5wdXRTdHJlYW0gR0lucHV0U3RyZWFtOworCituYW1lc3BhY2UgSVBDIHsKK2Ns
YXNzIERhdGFSZWZlcmVuY2U7Cit9IC8vIG5hbWVzcGFjZSBJUEMKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDaGlsZFBy
b2Nlc3M7CitzdHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGE7CisKK2NsYXNzIEN1c3RvbVBy
b3RvY29sTWFuYWdlckltcGwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1c3RvbVByb3Rv
Y29sTWFuYWdlckltcGwpOworcHVibGljOgorICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFu
YWdlckltcGwoQ2hpbGRQcm9jZXNzKik7CisgICAgfkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwo
KTsKKworICAgIHZvaWQgcmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBz
dXBwb3J0c1NjaGVtZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJv
cih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwor
CisgICAgLy8gU291cFJlcXVlc3QgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCBzZW5kKEdUYXNr
Kik7CisgICAgR0lucHV0U3RyZWFtKiBmaW5pc2goR1Rhc2sqLCBHRXJyb3IqKik7CisKK3ByaXZh
dGU6CisgICAgQ2hpbGRQcm9jZXNzKiBtX2NoaWxkUHJvY2VzczsKKyAgICBHUmVmUHRyPEdQdHJB
cnJheT4gbV9zY2hlbWVzOworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJTb3VwUmVxdWVzdEFzeW5jRGF0YT4+IG1fY3VzdG9tUHJvdG9jb2xNYXA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQor
CisjZW5kaWYgLy8gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDQyYjU5
NDguLjZiNzFhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVBy
b3RvY29sTWFuYWdlclNvdXAuY3BwCkBAIC0yMywxNSArMjMsMTAgQEAKICNpZiBFTkFCTEUoQ1VT
VE9NX1BST1RPQ09MUykKIAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkN1
c3RvbVByb3RvY29sTWFuYWdlckltcGwuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFn
ZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KIAogI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAg
LTQ3LDYgKzQyLDcgQEAgY29uc3QgY2hhciogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwbGVt
ZW50TmFtZSgpCiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcihD
aGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcykKICAgICA6IG1fY2hpbGRQcm9jZXNzKGNoaWxkUHJv
Y2VzcykKICAgICAsIG1fbWVzc2FnZVF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUu
V2ViS2l0LkN1c3RvbVByb3RvY29sTWFuYWdlciIpKQorICAgICwgbV9pbXBsKHN0ZDo6bWFrZV91
bmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbD4oY2hpbGRQcm9jZXNzKSkKIHsKIH0KIApA
QCAtNTUsMTkgKzUxLDMxIEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXpl
Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlvbi0+
YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9tZXNzYWdlUXVldWUuZ2V0KCksIHRoaXMpOwog
fQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0
aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7
CisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICBBU1NFUlQocGFyYW1ldGVycy51cmxT
Y2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkgfHwgIXBhcmFtZXRl
cnMudXNlc05ldHdvcmtQcm9jZXNzKTsKKyAgICBpZiAocGFyYW1ldGVycy51c2VzTmV0d29ya1By
b2Nlc3MpIHsKKyAgICAgICAgbV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICBtX21lc3NhZ2VRdWV1
ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQogCiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFs
aXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3ZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsr
aSkKKyAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJl
ZEZvckN1c3RvbVByb3RvY29sc1tpXSk7CiB9CiAjZW5kaWYKIAotdm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYpCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2ltcGwtPnJlZ2lzdGVyU2NoZW1lKHNjaGVtZSk7CiB9
CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0
cmluZyYpCkBAIC03NSwzMCArODMsMjkgQEAgdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnVu
cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci1ib29sIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcG9ydHNTY2hlbWUoY29uc3QgU3RyaW5n
JikKK2Jvb2wgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9pbXBsLT5zdXBwb3J0c1NjaGVtZShzY2hlbWUpOwogfQogCi12b2lkIEN1
c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmFp
bFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faW1wbC0+
ZGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBlcnJvcik7CiB9CiAKLXZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2FkRGF0YSh1aW50NjRfdCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJikKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2FkRGF0YSh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2ltcGwtPmRpZExvYWREYXRh
KGN1c3RvbVByb3RvY29sSUQsIGRhdGFSZWZlcmVuY2UpOwogfQogCi12b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgdWludDMyX3QpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1aW50MzJfdCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIG1faW1wbC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVByb3RvY29s
SUQsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZpbmlz
aExvYWRpbmcodWludDY0X3QpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgbV9pbXBsLT5kaWRGaW5pc2hMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBlZDYwMzg5Li40ZGUwZThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC03Myw3ICs3Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAj
ZW5kaWYKICNpZiBVU0UoU09VUCkKKyNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAg
ZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZDsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwg
Y29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShjb29raWVBY2NlcHRQb2xp
Y3kpOwpAQCAtMTYzLDggKzE2NSwxMCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvYwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKKyNpZiAhRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDUyY2EyNGUuLmU0ZjJk
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaApAQCAtODIsNyArODIsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JD
dXN0b21Qcm90b2NvbHM7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKKyNpZiAhRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWQ7Cisj
ZW5kaWYKICAgICBTdHJpbmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIHVpbnQz
Ml90IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKICAgICBIVFRQQ29va2llQWNjZXB0UG9s
aWN5IGNvb2tpZUFjY2VwdFBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggNzU2NWFhMi4uNzI3
ODk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIElQQyB7
CiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzb3Vy
Y2VSZXF1ZXN0LnNvdXBNZXNzYWdlRmxhZ3MoKSk7CisgICAgZW5jb2RlciA8PCByZXNvdXJjZVJl
cXVlc3QuaW5pdGlhdGluZ1BhZ2VJRCgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCkBAIC01MCw2ICs1MSwxMiBAQCBib29s
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlcgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cE1lc3NhZ2VG
bGFncykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0U291
cE1lc3NhZ2VGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZs
YWdzKSk7CisKKyAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaW5pdGlhdGluZ1BhZ2VJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXNvdXJjZVJlcXVlc3Quc2V0SW5pdGlhdGluZ1BhZ2VJRChpbml0aWF0aW5nUGFnZUlEKTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKaW5kZXggYzhhOTU0NC4uMDMzMzMzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAu
aApAQCAtMzIsOSArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOwogY2xhc3MgV2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHk7CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKK1dLX0FERF9BUElfTUFQ
UElORyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlcikKKyNlbHNlCiBXS19BRERfQVBJX01BUFBJTkcoV0tTb3Vw
UmVxdWVzdE1hbmFnZXJSZWYsIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KQorI2VuZGlmCiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWIxZjgxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisgICAgcmV0dXJuIHRvQVBJKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwor
dm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBjb25z
dCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSogd2tDbGllbnQp
Cit7CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgdG9JbXBsKHNvdXBSZXF1ZXN0
TWFuYWdlclJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oc291cFJlcXVlc3RNYW5hZ2VyUmVmKTsKKyAgICBVTlVTRURfUEFSQU0od2tDbGll
bnQpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQwZWM4ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9oCisjZGVmaW5lIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHZvaWQgKCpXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RvcExvYWRpbmdDYWxsYmFjaykoV0tTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwTWFuYWdlclJlZiwgdWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlIHsKKyAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50SW5mbzsKK30gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJDbGllbnRWMCB7CisgICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudEJhc2UgICAgICAgICAgIGJhc2U7CisKKyAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2sgc3RhcnRMb2FkaW5nOworICAgIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrICBzdG9wTG9hZGlu
ZzsKK30gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwOworCitXS19F
WFBPUlQgV0tUeXBlSUQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJ
RCgpOworCitXS19FWFBPUlQgdm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
U2V0Q2xpZW50KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKik7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFByaXZhdGUuaAppbmRleCA4MzkwNGFkLi5iZDA2MGVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0yNyw3ICsyNyw2
IEBACiAjZGVmaW5lIFdlYktpdFByaXZhdGVfaAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0FQSUNh
c3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dFNvdXAuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLRG93bmxvYWQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRmluZE9wdGlvbnMuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oPgpAQCAtMzksNyArMzgsNyBA
QAogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0b3JDbGllbnRHdGsuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1RleHRDaGVj
a2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyX0MuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50LmNwcAppbmRleCBhY2MxOTAxLi43YWM5ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJD
bGllbnQuY3BwCkBAIC0yMCwzNCArMjAsMzAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgogCi0jaW5jbHVkZSAiV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZS5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoV0tTb3VwUmVxdWVz
dE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLUGFn
ZVJlZiBpbml0aWF0aW5nUGFnZVJlZiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQorc3RhdGljIHZvaWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tQYWdlUmVmIGluaXRpYXRp
bmdQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdlYktpdFdlYkNvbnRl
eHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyk7Ci0gICAgR1Jl
ZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVS
SVNjaGVtZVJlcXVlc3RDcmVhdGUod2ViQ29udGV4dCwgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdl
clJlZiksIHRvSW1wbCh1cmxSZWYpLCB0b0ltcGwoaW5pdGlhdGluZ1BhZ2VSZWYpLCByZXF1ZXN0
SUQpKTsKLSAgICB3ZWJraXRXZWJDb250ZXh0UmVjZWl2ZWRVUklSZXF1ZXN0KHdlYkNvbnRleHQs
IHJlcXVlc3QuZ2V0KCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Q
cm90b2NvbChXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3RvY29sSUQs
IHRvSW1wbChyZXF1ZXN0UmVmKSwgdG9JbXBsKGluaXRpYXRpbmdQYWdlUmVmKSk7CiB9CiAKLXN0
YXRpYyB2b2lkIGRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
LCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9p
ZCBzdG9wTG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHdl
YmtpdFdlYkNvbnRleHREaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdChXRUJLSVRfV0VCX0NPTlRFWFQo
Y2xpZW50SW5mbyksIHJlcXVlc3RJRCk7CisgICAgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5n
Q3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8pLCBjdXN0b21Qcm90
b2NvbElEKTsKIH0KIAogdm9pZCBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVudFRvQ29udGV4dChX
ZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudCA9IHsKKyAgICBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudCA9IHsKICAg
ICAgICAgewogICAgICAgICAgICAgMCwgLy8gdmVyc2lvbgogICAgICAgICAgICAgd2ViQ29udGV4
dCAvLyBjbGllbnRJbmZvCiAgICAgICAgIH0sCi0gICAgICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0
LAotICAgICAgICBkaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdAorICAgICAgICBzdGFydExvYWRpbmcs
CisgICAgICAgIHN0b3BMb2FkaW5nCiAgICAgfTsKLSAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclNl
dENsaWVudCh0b0FQSSh3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIod2ViQ29udGV4
dCkpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsKKyAgICBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KHRvQVBJKHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1
ZXN0TWFuYWdlcih3ZWJDb250ZXh0KSksICZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IGQwMTM2Y2QuLmIyM2UyOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNj
aGVtZVJlcXVlc3QuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29u
dGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0dPd25QdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CkBAIC01NCw3ICs1Myw3IEBAIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZ1JlYWRCdWZmZXJTaXplID0gODE5MjsKIAogc3RydWN0
IF9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgV2ViS2l0V2ViQ29udGV4dCog
d2ViQ29udGV4dDsKLSAgICBSZWZQdHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IHdlYlJl
cXVlc3RNYW5hZ2VyOworICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlcj4gd2ViUmVxdWVzdE1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5pdGlh
dGluZ1BhZ2U7CiAgICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwpAQCAt
NzQsMjIgKzczLDE3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xh
c3NfaW5pdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqIHJlCiB7CiB9CiAKLVdlYktpdFVS
SVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUoV2ViS2l0V2ViQ29u
dGV4dCogd2ViQ29udGV4dCwgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqIHdlYlJlcXVlc3RN
YW5hZ2VyLCBBUEk6OlVSTCogd2ViVVJMLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCB1
aW50NjRfdCByZXF1ZXN0SUQpCitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCBXZWJQYWdlUHJveHkqIGluaXRp
YXRpbmdQYWdlKQogewogICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QgPSBXRUJL
SVRfVVJJX1NDSEVNRV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VUklfU0NIRU1F
X1JFUVVFU1QsIE5VTEwpKTsKICAgICByZXF1ZXN0LT5wcml2LT53ZWJDb250ZXh0ID0gd2ViQ29u
dGV4dDsKLSAgICByZXF1ZXN0LT5wcml2LT53ZWJSZXF1ZXN0TWFuYWdlciA9IHdlYlJlcXVlc3RN
YW5hZ2VyOwotICAgIHJlcXVlc3QtPnByaXYtPnVyaSA9IHdlYlVSTC0+c3RyaW5nKCkudXRmOCgp
OworICAgIHJlcXVlc3QtPnByaXYtPndlYlJlcXVlc3RNYW5hZ2VyID0gd2Via2l0V2ViQ29udGV4
dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpOworICAgIHJlcXVlc3QtPnByaXYtPnVyaSA9
IHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKTsKICAg
ICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IGluaXRpYXRpbmdQYWdlOwogICAgIHJl
cXVlc3QtPnByaXYtPnJlcXVlc3RJRCA9IHJlcXVlc3RJRDsKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIAotdWludDY0X3Qgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldElEKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJlcXVlc3RJ
RDsKLX0KLQogdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgaWYgKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxl
LmdldCgpKQpAQCAtMTczLDIxICsxNjcsMjUgQEAgc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1l
UmVxdWVzdFJlYWRDYWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmMKICAg
ICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAg
ICAgUmVmUHRyPEFQSTo6RGF0YT4gd2ViRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHByaXYtPnJlYWRCdWZmZXIpLCBieXRlc1Jl
YWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7Ci0gICAgICAgIC8vIEZpcnN0IGNodW5r
IHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQg
dG8gdGhlIFdlYlByb2Nlc3MuCi0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRI
YW5kbGVVUklSZXF1ZXN0KHdlYkRhdGEuZ2V0KCksIHByaXYtPnN0cmVhbUxlbmd0aCwgU3RyaW5n
Ojpmcm9tVVRGOChwcml2LT5taW1lVHlwZS5kYXRhKCkpLCBwcml2LT5yZXF1ZXN0SUQpOworICAg
ICAgICAvLyBGaXJzdCBjaHVuayByZWFkLiBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5IGFuIGVtcHR5
IEFQSTo6RGF0YSBpcyBzZW50IHRvIHRoZSBuZXR3b3JraW5nIHByb2Nlc3MuCisgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYt
Pm1pbWVUeXBlLmRhdGEoKSksCisgICAgICAgICAgICBwcml2LT5zdHJlYW1MZW5ndGgsIGVtcHR5
U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdl
ci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAg
ICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3
ZWJEYXRhLmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGJ5dGVzUmVhZCB8fCAoIWJ5dGVzUmVhZCAm
JiAhcHJpdi0+c3RyZWFtTGVuZ3RoKSkgewotICAgICAgICAvLyBTdWJzZXF1ZW50IGNodW5rIHJl
YWQuIFdlIG9ubHkgc2VuZCBhbiBlbXB0eSBBUEk6OkRhdGEgdG8gdGhlIFdlYlByb2Nlc3Mgd2hl
biBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5h
Z2VyLT5kaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEod2ViRGF0YS5nZXQoKSwgcHJpdi0+cmVxdWVz
dElEKTsKKyAgICAgICAgLy8gU3Vic2VxdWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4g
ZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBuZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVu
Z3RoIGlzIHVua25vd24uCisgICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2Fk
RGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmICgh
Ynl0ZXNSZWFkKSB7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hVUklSZXF1ZXN0
KHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQsIHJlcXVlc3QtPnByaXYtPnJlcXVlc3RJRCk7Cisg
ICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3Qt
PnByaXYtPnJlcXVlc3RJRCk7CisgICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2Fk
aW5nQ3VzdG9tUHJvdG9jb2wocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJp
di0+cmVxdWVzdElEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHByaXYtPmJ5dGVz
UmVhZCArPSBieXRlc1JlYWQ7CiAgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhpbnB1dFN0
cmVhbSwgcHJpdi0+cmVhZEJ1ZmZlciwgZ1JlYWRCdWZmZXJTaXplLCBHX1BSSU9SSVRZX0RFRkFV
TFQsIHByaXYtPmNhbmNlbGxhYmxlLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPih3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QuZ2V0KCkpKTsKKyAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPih3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QuZ2V0KCkpKTsKIH0KIAog
LyoqCkBAIC0yMTIsNyArMjEwLDcgQEAgdm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBHSW5wdXRTdHIKICAgICByZXF1
ZXN0LT5wcml2LT5ieXRlc1JlYWQgPSAwOwogICAgIHJlcXVlc3QtPnByaXYtPm1pbWVUeXBlID0g
bWltZVR5cGU7CiAgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhpbnB1dFN0cmVhbSwgcmVx
dWVzdC0+cHJpdi0+cmVhZEJ1ZmZlciwgZ1JlYWRCdWZmZXJTaXplLCBHX1BSSU9SSVRZX0RFRkFV
TFQsIHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPih3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKKyAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPih3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0UmVhZENhbGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKIH0KIAogLyoq
CkBAIC0yMzIsNyArMjMwLDYgQEAgdm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zpbmlz
aF9lcnJvcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBHRXIKICAgICBXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAKICAgICBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3It
PmRvbWFpbiksIGVycm9yLT5jb2RlLCBwcml2LT51cmkuZGF0YSgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSk7Ci0gICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXItPmRpZEZhaWxV
UklSZXF1ZXN0KHJlc291cmNlRXJyb3IsIHByaXYtPnJlcXVlc3RJRCk7Ci0KLSAgICB3ZWJraXRX
ZWJDb250ZXh0RGlkRmluaXNoVVJJUmVxdWVzdChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1
ZXN0SUQpOworICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHBy
aXYtPnJlcXVlc3RJRCwgcmVzb3VyY2VFcnJvcik7CisgICAgd2Via2l0V2ViQ29udGV4dERpZEZp
bmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0
SUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKaW5kZXggMzg2NzE3My4uNTIw
ODk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0yNCw4ICsyNCw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdFdl
YkNvbnRleHQuaCIKIAotV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVx
dWVzdENyZWF0ZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eSosIEFQSTo6VVJMKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqLCB1aW50NjRfdCByZXF1
ZXN0SUQpOwotdWludDY0X3Qgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldElEKFdlYktpdFVSSVNj
aGVtZVJlcXVlc3QqKTsKK1dlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJl
cXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250ZXh0KiwgQVBJOjpV
UkxSZXF1ZXN0KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0VVJJU2NoZW1l
UmVxdWVzdENhbmNlbChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Kik7CiAKICNlbmRpZiAvLyBXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDJiMWE1ZjMuLjVhN2Yy
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRDb29raWVNYW5hZ2VyPiBjb29raWVNYW5h
Z2VyOwogICAgIEdSZWZQdHI8V2ViS2l0RmF2aWNvbkRhdGFiYXNlPiBmYXZpY29uRGF0YWJhc2U7
CiAgICAgR1JlZlB0cjxXZWJLaXRTZWN1cml0eU1hbmFnZXI+IHNlY3VyaXR5TWFuYWdlcjsKLSAg
ICBSZWZQdHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IHJlcXVlc3RNYW5hZ2VyOworICAg
IFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gcmVxdWVzdE1hbmFn
ZXI7CiAgICAgVVJJU2NoZW1lSGFuZGxlck1hcCB1cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklT
Y2hlbWVSZXF1ZXN0TWFwIHVyaVNjaGVtZVJlcXVlc3RzOwogI2lmIEVOQUJMRShHRU9MT0NBVElP
TikKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNv
bnRleHQoZ3BvaW50ZXIpCiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJD
b250ZXh0LT5wcml2OwogCiAgICAgcHJpdi0+Y29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShX
ZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGluamVjdGVkQnVuZGxlRmlsZW5hbWUoKS5kYXRhKCkp
KTsKLSAgICBwcml2LT5yZXF1ZXN0TWFuYWdlciA9IHdlYkNvbnRleHQtPnByaXYtPmNvbnRleHQt
PnN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCk7CisgICAgcHJpdi0+cmVx
dWVzdE1hbmFnZXIgPSB3ZWJDb250ZXh0LT5wcml2LT5jb250ZXh0LT5zdXBwbGVtZW50PFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpOwogICAgIHByaXYtPmNvbnRleHQtPnNl
dENhY2hlTW9kZWwoQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgdXNlIGFuIGVudiB2YXIgdW50
aWwgd2UgaGF2ZSBBUEkgdG8gc2V0IHRoZSBwcm9jZXNzIG1vZGVsLiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTQ2My4KQEAgLTYyMCw3ICs2MjAsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1lKFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGNoYQogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRs
ZXI+IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFj
aywgdXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKICAgICBjb250ZXh0LT5wcml2LT51cmlTY2hl
bWVIYW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBoYW5kbGVyLmdldCgpKTsK
LSAgICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci0+cmVnaXN0ZXJVUklTY2hlbWUoU3Ry
aW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKKyAgICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdl
ci0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVt
ZSkpOwogfQogCiAvKioKQEAgLTg3OSwzNCArODc5LDM1IEBAIFdlYkNvbnRleHQqIHdlYmtpdFdl
YkNvbnRleHRHZXRDb250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJu
IGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCk7CiB9CiAKLVdlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5KiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCkKK1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiB3ZWJraXRX
ZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICByZXR1cm4gY29udGV4dC0+cHJpdi0+cmVxdWVzdE1hbmFnZXIuZ2V0KCk7CiB9CiAKLXZv
aWQgd2Via2l0V2ViQ29udGV4dFJlY2VpdmVkVVJJUmVxdWVzdChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCB3ZWJraXRXZWJD
b250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UpCiB7Ci0gICAgU3RyaW5nIHNj
aGVtZShTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3NjaGVt
ZShyZXF1ZXN0KSkpOworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVz
dCA9IGFkb3B0R1JlZih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29s
SUQsIGNvbnRleHQsIHVybFJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKSk7CisgICAgU3RyaW5nIHNj
aGVtZShTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3NjaGVt
ZShyZXF1ZXN0LmdldCgpKSkpOwogICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBo
YW5kbGVyID0gY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuZ2V0KHNjaGVtZSk7CiAg
ICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwogICAgIGlmICghaGFuZGxlci0+aGFzQ2FsbGJhY2so
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVz
dHMuc2V0KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RHZXRJRChyZXF1ZXN0KSwgcmVxdWVzdCk7Ci0g
ICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QpOworICAgIGNvbnRleHQtPnByaXYt
PnVyaVNjaGVtZVJlcXVlc3RzLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0LmdldCgpKTsK
KyAgICBoYW5kbGVyLT5wZXJmb3JtQ2FsbGJhY2socmVxdWVzdC5nZXQoKSk7CiB9CiAKLXZvaWQg
d2Via2l0V2ViQ29udGV4dERpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3ZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BM
b2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+
IHJlcXVlc3QgPSBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5nZXQocmVxdWVzdElE
KTsKKyAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBjb250ZXh0
LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7CiAgICAgaWYg
KCFyZXF1ZXN0LmdldCgpKQogICAgICAgICByZXR1cm47CiAgICAgd2Via2l0VVJJU2NoZW1lUmVx
dWVzdENhbmNlbChyZXF1ZXN0LmdldCgpKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlk
RmluaXNoVVJJUmVxdWVzdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCByZXF1
ZXN0SUQpCit2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9j
b2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkK
IHsKLSAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElE
KTsKKyAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJv
dG9jb2xJRCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFdlYlZpZXdHcm91cCogd2ViVmlld0dyb3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKaW5kZXggODFj
NDczYy4uZWQ5ZmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCkBAIC0yOSwyMCArMjksMTkgQEAK
ICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdHcm91cC5oIgotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjaW5j
bHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKIAogV2ViS2l0OjpX
ZWJDb250ZXh0KiB3ZWJraXRXZWJDb250ZXh0R2V0Q29udGV4dChXZWJLaXRXZWJDb250ZXh0Kik7
CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2Vi
S2l0OjpEb3dubG9hZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0
YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpX
ZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktp
dDo6RG93bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVk
KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotV2ViS2l0OjpXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eSogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktp
dFdlYkNvbnRleHQqKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dFJlY2VpdmVkVVJJUmVxdWVzdChX
ZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCopOwotdm9pZCB3ZWJraXRX
ZWJDb250ZXh0RGlkRmFpbFRvTG9hZFVSSVJlcXVlc3QoV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2
NF90IHJlcXVlc3RJRCk7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hVUklSZXF1ZXN0
KFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCByZXF1ZXN0SUQpOworV2ViS2l0OjpXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RN
YW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9h
ZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBBUEk6OlVSTFJlcXVlc3QqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwordm9pZCB3
ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0
KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Cit2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRG
aW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQpOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZp
ZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJWaWV3R3JvdXAq
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdlYkNvbnRleHRHZXRX
ZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgK
aW5kZXggYmIzMmRhZi4uNjEzZmYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTQzLDEwICs0MywxMSBAQCBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ2hpbGRQcm9jZXNzUHJv
eHk7CitjbGFzcyBXZWJDb250ZXh0OwogCiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqKTsKKyAgICBleHBs
aWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSosIFdlYkNv
bnRleHQmKTsKIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgc3RvcExvYWRp
bmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CkBAIC01Niw2ICs1Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKIAogICAgIENoaWxkUHJvY2Vzc1Byb3h5KiBt
X2NoaWxkUHJvY2Vzc1Byb3h5OworICAgIFdlYkNvbnRleHQmIG1fd2ViQ29udGV4dDsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxX
S0N1c3RvbVByb3RvY29sTG9hZGVyPj4gTG9hZGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KaW5kZXgg
MTk4MjJmOS4uN2QwZWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCkBAIC0xMjIsOCArMTIyLDkgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nl
c3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHkpCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vz
c1Byb3h5LCBXZWJDb250ZXh0JiB3ZWJDb250ZXh0KQogICAgIDogbV9jaGlsZFByb2Nlc3NQcm94
eShjaGlsZFByb2Nlc3NQcm94eSkKKyAgICAsIG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQogewog
ICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKICAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmlu
ZGV4IDU3Yjk5ZTQuLjhlNTU0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjUsMjYg
KzI1LDI5IEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJDdXN0
b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgor
I2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGls
ZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHkpCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxk
UHJvY2Vzc1Byb3h5LCBXZWJDb250ZXh0JiB3ZWJDb250ZXh0KQogICAgIDogbV9jaGlsZFByb2Nl
c3NQcm94eShjaGlsZFByb2Nlc3NQcm94eSkKKyAgICAsIG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0
KQogewogICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKICAgICBtX2NoaWxkUHJvY2Vz
c1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3Rh
cnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
Q29udGV4dC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigp
LT5zdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgV2ViUHJvY2Vzc1Byb3h5
Ojp3ZWJQYWdlKHJlcXVlc3QuaW5pdGlhdGluZ1BhZ2VJRCgpKSk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90KQordm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViQ29udGV4dC5zdXBwbGVtZW50
PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpLT5zdG9wTG9hZGluZyhjdXN0
b21Qcm90b2NvbElEKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY0
NGU3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW5j
bHVkZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y29uc3QgY2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKK3sKKyAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyIjsKK30KKworUGFzc1JlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
cj4gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJDb250ZXh0
KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIoY29udGV4dCkpOworfQorCitXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoV2ViQ29u
dGV4dCogY29udGV4dCkKKyAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KGNvbnRleHQpCit7Cit9
CisKK1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjp+V2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIoKQoreworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCit7CisgICAgbV9jbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOworfQorCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAordm9pZCBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y29udGV4dERlc3Ryb3llZCgpCit7Cit9
CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnByb2Nlc3NEaWRD
bG9zZShXZWJQcm9jZXNzUHJveHkqKQoreworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyOjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCit7CisgICAgQVBJOjpP
YmplY3Q6OnJlZigpOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyOjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUEk6Ok9iamVjdDo6ZGVy
ZWYoKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAg
ICBpZiAoIWNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dCgpLT5yZWdp
c3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CisKKyAgICBBU1NFUlQoIW1fcmVn
aXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSk7CisgICAgbV9yZWdpc3RlcmVkU2NoZW1l
cy5hcHBlbmQoc2NoZW1lKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b250ZXh0KCktPnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworCisg
ICAgQVNTRVJUKG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSk7CisgICAgbV9y
ZWdpc3RlcmVkU2NoZW1lcy5yZW1vdmUobV9yZWdpc3RlcmVkU2NoZW1lcy5maW5kKHNjaGVtZSkp
OworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExv
YWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBXZWJQYWdlUHJveHkqIGluaXRpYWluZ1BhZ2UpCit7CisgICAgaWYg
KCFtX2NsaWVudC5zdGFydExvYWRpbmcodGhpcywgY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
aW5pdGlhaW5nUGFnZSkpCisgICAgICAgIGRpZEZhaWxXaXRoRXJyb3IoY3VzdG9tUHJvdG9jb2xJ
RCwgV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKK30KKwordm9pZCBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExvYWRpbmcodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCkKK3sKKyAgICBtX2NsaWVudC5zdG9wTG9hZGluZyh0aGlzLCBjdXN0b21Q
cm90b2NvbElEKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmICghY29udGV4dCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPm5ldHdvcmtpbmdQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2Vp
dmVSZXNwb25zZShjdXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworfQorCit2b2lk
IFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRMb2FkRGF0YSh1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBBUEk6OkRhdGEqIGRhdGEpCit7CisgICAgaWYgKCFj
b250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQoKS0+bmV0d29ya2luZ1By
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6
RGlkTG9hZERhdGEoY3VzdG9tUHJvdG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpKSwgMCk7
Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxX
aXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGNvbnRleHQoKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90
b2NvbElELCBlcnJvciksIDApOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCit7
CisgICAgaWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQoKS0+
bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NP
TFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hM2RjNzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaAorI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9oCisKKyNp
ZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2lu
Y2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBEYXRhOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNv
bnRleHQ7CisKK2NsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+IGNyZWF0ZShXZWJD
b250ZXh0Kik7CisgICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOworCisgICAgdm9pZCByZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisKKyAg
ICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkqKTsKKyAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOworCisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgQVBJOjpEYXRhKik7CisgICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CisKKyAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CisKKyAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOworICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKKworcHJpdmF0ZToK
KyAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJDb250ZXh0Kik7CisK
KyAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVz
dHJveWVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShXZWJQ
cm9jZXNzUHJveHkqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCgpIE9WRVJSSURFOworCisgICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJDbGllbnQgbV9jbGllbnQ7CisgICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2No
ZW1lczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENV
U1RPTV9QUk9UT0NPTFMpCisKKyNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0OTc3YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudC5oIgorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitib29sIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50Ojpz
dGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1
ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlKQorewor
ICAgIGlmICghbV9jbGllbnQuc3RhcnRMb2FkaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBSZWZQdHI8QVBJOjpVUkxSZXF1ZXN0PiB1cmxSZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdCk7CisgICAgbV9jbGllbnQuc3RhcnRMb2FkaW5nKHRvQVBJKHNvdXBS
ZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3RvY29sSUQsIHRvQVBJKHVybFJlcXVlc3QuZ2V0KCkp
LCB0b0FQSShpbml0aWF0aW5nUGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJDbGllbnQ6OnN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
KiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCit7CisgICAg
aWYgKG1fY2xpZW50LnN0b3BMb2FkaW5nKQorICAgICAgICBtX2NsaWVudC5zdG9wTG9hZGluZyh0
b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIpLCBjdXN0b21Qcm90b2NvbElELCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlmNTQzNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKKyNkZWZpbmUg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRfaAorCisjaWYgRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmgiCisKK25hbWVzcGFjZSBBUEkgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8
V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U+IHsKKyAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYw
PiBWZXJzaW9uczsKK307Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNl
UmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOworCitjbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4geworcHVibGljOgorICAgIGJvb2wgc3RhcnRMb2Fk
aW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5
Kik7CisgICAgdm9pZCBzdG9wTG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlciosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2VuZGlmIC8v
IFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggY2MxMzIzZC4uOTc2NWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eShXZWJDb250ZXh0
JiB3ZWJDb250ZXh0KQogICAgIDogbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCiAgICAgLCBtX251
bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09M
UykKLSAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkodGhpcykKKyAgICAsIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkodGhpcywgd2ViQ29udGV4dCkKICNlbmRpZgogewogICAg
IGNvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAy
ZmRjOTZjLi45ZmMyYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CkBAIC05MSw4ICs5MSwxMiBAQAogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKKyNpZiBFTkFCTEUo
Q1VTVE9NX1BST1RPQ09MUykKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlci5oIgorI2Vsc2UKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5o
IgogI2VuZGlmCisjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CkBAIC0xNzUsOCArMTc5LDEyIEBAIFdlYkNvbnRleHQ6OldlYkNv
bnRleHQoY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJEYXRhYmFzZU1hbmFnZXJQcm94eT4oKTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQorI2lm
IEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIGFkZFN1cHBsZW1lbnQ8V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCk7CisjZWxzZQogICAgIGFkZFN1cHBsZW1lbnQ8V2Vi
U291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCk7CiAjZW5kaWYKKyNlbmRpZgogI2lmIEVOQUJMRShC
QVRURVJZX1NUQVRVUykKICAgICBhZGRTdXBwbGVtZW50PFdlYkJhdHRlcnlNYW5hZ2VyUHJveHk+
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNzZiM2JjNi4uNWZhMDY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3Rr
LmgiCiAjZW5kaWYKIAotI2lmIFVTRShTT1VQKQorI2lmIFVTRShTT1VQKSAmJiAhRU5BQkxFKENV
U1RPTV9QUk9UT0NPTFMpCiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIK
ICNlbmRpZgogCkBAIC00MzMzLDcgKzQzMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIFZlY3RvcjxTdHJpbgog
CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKFNPVVAp
ICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlVVJJUmVxdWVzdChTdHJpbmcgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCiB7CiAg
ICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eT4oKS0+ZGlkUmVjZWl2ZVVSSVJlcXVlc3QodXJpU3RyaW5nLCB0aGlzLCByZXF1ZXN0SUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzA3ZDAuLmZi
NmQ1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExMjMs
NyArMTEyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlSZXZlYWxlZFNlbGVjdGlvbigp
OwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShTT1VQKQorI2lmIFVTRShTT1VQ
KSAmJiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgdm9pZCBkaWRSZWNlaXZlVVJJUmVx
dWVzdChTdHJpbmcgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDY3MGNkYjMuLmEyOGUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzE2LDkgKzMxNiwxMSBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgIExvYWRSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSkgLT4g
KFZlY3RvcjxTdHJpbmc+IHJlc3VsdCkKIAogI2lmIFVTRShTT1VQKQorI2lmICFFTkFCTEUoQ1VT
VE9NX1BST1RPQ09MUykKICAgICAjIFNvdXAgY3VzdG9tIFVSSSByZXF1ZXN0IG1lc3NhZ2VzCiAg
ICAgRGlkUmVjZWl2ZVVSSVJlcXVlc3QoU3RyaW5nIHVyaVN0cmluZywgdWludDY0X3QgcmVxdWVz
dElEKTsKICNlbmRpZgorI2VuZGlmCiAKICAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcs
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDA1MzM2NDguLjQwOWMwMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFdl
YlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQmIGNvbnRleHQpCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2Fu
ZGJveEV4dGVuc2lvbihmYWxzZSkKICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLSAgICAs
IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkodGhpcykKKyAgICAsIG1fY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkodGhpcywgY29udGV4dCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCmluZGV4IGY4MTI2NzAuLjViZmQ1
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KQEAgLTk5LDcgKzk5LDEx
IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAgICAgfQogCiAgICAgaWYgKCF1c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkID0g
c3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKS0+cmVnaXN0ZXJlZFVSSVNj
aGVtZXMoKTsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICAgICAgcGFyYW1ldGVy
cy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9y
Q3VzdG9tUHJvdG9jb2xzKCk7CisjZWxzZQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNS
ZWdpc3RlcmVkID0gc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
cj4oKS0+cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMoKTsKKyNlbmRpZgogCiAg
ICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVQZXJz
aXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwgcGFy
YW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwogICAgICAgICBwYXJhbWV0ZXJz
LmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291cC5jcHAKaW5k
ZXggMmM0ODU1Yi4uNDNlZTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViQ29udGV4dFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9z
b3VwL1dlYkNvbnRleHRTb3VwLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC0zOSw2ICs0MCw5IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlCiAgICAgcGFyYW1ldGVy
cy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5Owog
ICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAgICAg
cGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9j
b2xzKCk7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmluZGV4IDBjOTU5YzQu
LjNjMTc3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTcwLDYgKzcwLDcgQEAKIAogI2lm
IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAxCisjZGVmaW5l
IEVOQUJMRV9DVVNUT01fUFJPVE9DT0xTIDEKICNlbmRpZgogCiAvKiBXaGVuIEMrKyBleGNlcHRp
b25zIGFyZSBkaXNhYmxlZCwgdGhlIEMrKyBsaWJyYXJ5IGRlZmluZXMgfHRyeXwgYW5kIHxjYXRj
aHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGUyOWE2YmIu
LjQyYzZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAj
ZW5kaWYKIAotI2lmIFVTRShTT1VQKQorI2lmIFVTRShTT1VQKSAmJiAhRU5BQkxFKENVU1RPTV9Q
Uk9UT0NPTFMpCiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCiAjZW5kaWYKIApA
QCAtMjAwLDcgKzIwMCw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShO
RVRXT1JLX0lORk8pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJOZXR3b3JrSW5mb01hbmFnZXI+KCk7
CiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpOwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCmluZGV4IDQxNjFiZjUuLjU1YzUwMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWMuY3BwCkBAIC0yMCw5ICsyMCwxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgogCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIApAQCAtNDgsMTMgKzUxLDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX3Jl
cXVlc3RfZ2VuZXJpY19pbml0KFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCkKIAog
c3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFzeW5jKFNvdXBSZXF1ZXN0
KiByZXF1ZXN0LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNr
IGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RP
Q09MUykKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsKiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXIgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUNfR0VUX0NMQVNTKHJlcXVlc3QpLT5jdXN0
b21Qcm90b2NvbE1hbmFnZXI7CisgICAgQVNTRVJUKGN1c3RvbVByb3RvY29sTWFuYWdlcik7Cisg
ICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zZW5kKGdfdGFza19uZXcocmVxdWVzdCwgY2FuY2Vs
bGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOworI2Vsc2UKICAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5zdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKS0+c2VuZChnX3Rhc2tfbmV3
KHJlcXVlc3QsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKKyNlbmRpZgogfQog
CiBzdGF0aWMgR0lucHV0U3RyZWFtKiB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNo
KFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJy
b3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoZ190YXNrX2lzX3ZhbGlkKHJlc3VsdCwg
cmVxdWVzdCksIDApOworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIEN1c3RvbVBy
b3RvY29sTWFuYWdlckltcGwqIGN1c3RvbVByb3RvY29sTWFuYWdlciA9IFdFQktJVF9TT1VQX1JF
UVVFU1RfR0VORVJJQ19HRVRfQ0xBU1MocmVxdWVzdCktPmN1c3RvbVByb3RvY29sTWFuYWdlcjsK
KyAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsKKyAgICByZXR1cm4gY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLT5maW5pc2goR19UQVNLKHJlc3VsdCksIGVycm9yKTsKKyNlbHNlCiAgICAg
cmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5h
Z2VyPigpLT5maW5pc2goR19UQVNLKHJlc3VsdCksIGVycm9yKTsKKyNlbmRpZgogfQogCiBzdGF0
aWMgZ29mZnNldCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRDb250ZW50TGVuZ3RoKFNvdXBS
ZXF1ZXN0KiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oCmluZGV4IDYyMTJjZTYuLjVjNWQzYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0
U291cFJlcXVlc3RHZW5lcmljLmgKQEAgLTIzLDYgKzIzLDEwIEBACiAjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KIAorI2lmIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwuaCIKKyNlbmRp
ZgorCiBHX0JFR0lOX0RFQ0xTCiAKICNkZWZpbmUgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dF
TkVSSUMgICAgICAgICAgICAod2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2dldF90eXBlKCkp
CkBAIC00NCw2ICs0OCwxMCBAQCBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyB7CiAK
IHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3MgewogICAgIFNvdXBSZXF1ZXN0
Q2xhc3MgcGFyZW50OworCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsKiBjdXN0b21Qcm90b2NvbE1hbmFnZXI7CisjZW5k
aWYKIH07CiAKIEdUeXBlIHdlYmtpdF9zb3VwX3JlcXVlc3RfZ2VuZXJpY19nZXRfdHlwZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAK
aW5kZXggNzMzMDc4ZC4uZTYwM2E4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAi
Q2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJXZWJTb3VwUmVx
dWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgpA
QCAtNDYsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9D
T0xTKQorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdWludDY0X3QgZ2V0Q2FjaGVEaXNrRnJlZVNpemUoU291
cENhY2hlKiBjYWNoZSkKQEAgLTIwMyw4ICsyMDYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMKICAgICBpZiAoIXBhcmFtZXRlcnMubGFuZ3VhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgc2V0
U291cFNlc3Npb25BY2NlcHRMYW5ndWFnZShwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7CiAKKyNpZiAh
RU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJh
bWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkLnNpemUoKTsgaSsrKQogICAgICAgICBzdXBwbGVt
ZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKS0+cmVnaXN0ZXJVUklTY2hlbWUocGFyYW1ldGVy
cy51cmxTY2hlbWVzUmVnaXN0ZXJlZFtpXSk7CisjZW5kaWYKIAogICAgIHNldElnbm9yZVRMU0Vy
cm9ycyhwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221351</attachid>
            <date>2014-01-16 02:28:18 -0800</date>
            <delta_ts>2014-01-17 00:19:16 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>soup-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>65950</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjNzkxZTM0Li5iZmNjYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5
IEBACisyMDE0LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbU09VUF0gSW1wbGVtZW50IENVU1RPTSBQUk9UT0NPTFMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTU4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgY2xhc3NlcyB0
byBpbXBsZW1lbnQgQ3VzdG9tUHJvdG9jb2xzIGZvciBzb3VwLiBUaGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gaXMgdGhlIHNhbWUsIGJ1dCB1c2luZyB0aGUgQ3VzdG9tUHJvdG9jb2wgQVBJIGFu
ZAorICAgICAgICBtZXNzYWdlcy4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gY2FuIGJlIHJl
bW92ZWQgb25jZSBhbGwgcG9ydHMKKyAgICAgICAgdXNpbmcgc291cCBzd2l0Y2ggdG8gdXNpbmcg
Q3VzdG9tUHJvdG9jb2xzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBuZXcgaW5j
bHVkZSBwYXRocy4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVz
IHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgbmV3IGZp
bGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNv
dXAuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAq
IFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdl
ckltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVDdXN0b21Qcm90b2Nv
bElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0Rh
dGE6On5XZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhOjpyZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291
cFJlcXVlc3RBc3luY0RhdGE6OnJlbGVhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6On5DdXN0b21Qcm90b2NvbE1hbmFn
ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6cmVn
aXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
OjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckltcGw6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsOjpkaWRMb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlckltcGw6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZmluaXNoKToKKyAgICAgICAgKiBTaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3Rv
bVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvbnRleHRTb3VwLmNwcC4KKyAgICAgICAgKFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50TmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6fldlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmluaXRpYWxpemVDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y29udGV4dERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlcmVkU2NoZW1lc0ZvckN1
c3RvbVByb3RvY29scyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyk6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
c291cC9XZWJDb250ZXh0U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcDoK
KyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk6CisgICAgICAgICh3
ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMTMtMTItMzEgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBBZGQgc3R1YnMg
Zm9yIEN1c3RvbVByb3RvY29sIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggY2JhY2Ni
Zi4uMWI0NTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTEwNCw2ICsxMDQsNyBAQCBsaWJ3
ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01J
Tk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMgXAor
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMSBcCkBA
IC0xMjIsNiArMTIzLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwKKwktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cCBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDk5YzExOGYuLjQ0YTAxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNDAzLDYgKzQwMyw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1h
bmFnZXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIFwKQEAgLTUyMSw2ICs1MjMs
OCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQ29udGV4dFNvdXAuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNw
cCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V2ViS2l0Ml9DLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3Qu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuaCBcCkBAIC04MzcsNiArODQxLDEwIEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL3NvdXAvTmV0d29ya1Byb2Nl
c3NQcm94eVNvdXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMDQwNWZlYi4u
MjU4YTgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTM3LDYgKzM3LDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcAogCisgICAgU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5jcHAKICAgICBTaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAogCiAgICAgU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcApAQCAtNzgs
NiArNzksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29v
a2llTWFuYWdlclNvdXAuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVz
dE1hbmFnZXIuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTIzNiw2
ICsyMzgsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvTGF1
bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKIAogICAgIFVJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAK
KyAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKKyAgICBVSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5j
cHAKIAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAK
ICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCkBA
IC0zOTcsNiArNDAxLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2d0ayIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ayIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaAppbmRleCA2MTg5ZTRjLi42MDBmMDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNlU291cC5oCkBAIC0zMSw1ICsz
MSw2IEBACiAjZW5kaWYKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTb3VwUmVxdWVz
dE1hbmFnZXIqIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZVNvdXBfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDUzN2RiYzguLmI0OWJmNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJT2JqZWN0LmgKQEAgLTE1OCw2ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZp
ZXcsCiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFNvdXBSZXF1ZXN0TWFuYWdlciwKKyAgICAgICAg
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIsCiAjZW5kaWYKICNpZiBQTEFURk9STShF
RkwpCiAgICAgICAgIFBvcHVwTWVudUl0ZW0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKaW5kZXggNTA1MTA3ZS4uOWI3NGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9D
dXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQu
aCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbDsKICNlbmRpZgogCkBA
IC01NSw2ICs1NSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgQ2hpbGRQcm9jZXNzOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1w
bDsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMg
TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIgewpAQCAtOTUsMTIgKzk2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogCi0g
ICAgSGFzaFNldDxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Ci0gICAgTXV0ZXggbV9yZWdp
c3RlcmVkU2NoZW1lc011dGV4OwogICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFByb2Nlc3M7CiAg
ICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CiAKICNpZiBQTEFURk9STShNQUMp
CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7CisgICAgTXV0ZXggbV9y
ZWdpc3RlcmVkU2NoZW1lc011dGV4OworCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBS
ZXRhaW5QdHI8V0tDdXN0b21Qcm90b2NvbD4+IEN1c3RvbVByb3RvY29sTWFwOwogICAgIEN1c3Rv
bVByb3RvY29sTWFwIG1fY3VzdG9tUHJvdG9jb2xNYXA7CiAgICAgTXV0ZXggbV9jdXN0b21Qcm90
b2NvbE1hcE11dGV4OwpAQCAtMTA5LDYgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgLy8gV2UgcmV0
dXJuIGEgUmV0YWluUHRyIGhlcmUgYmVjYXVzZSBpdCBpcyB1bnNhZmUgdG8gcmV0dXJuIGEgcmF3
IHBvaW50ZXIgc2luY2UgdGhlIG9iamVjdCBtaWdodCBpbW1lZGlhdGVseSBiZSBkZXN0cm95ZWQg
ZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQuCiAgICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+
IHByb3RvY29sRm9ySUQodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiAjZW5kaWYKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsPiBtX2ltcGw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjg2MGQyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwu
Y3BwCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJJ
bXBsLmgiCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2luY2x1ZGUgIkNoaWxk
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCisjaW5jbHVk
ZSAiV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3Vw
TmV0d29ya1Nlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBVUklVdGlscy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ3VzdG9tUHJvdG9j
b2xJRCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUN1c3RvbVByb3RvY29sSUQgPSAw
OworICAgIHJldHVybiArK3VuaXF1ZUN1c3RvbVByb3RvY29sSUQ7Cit9CisKK3N0cnVjdCBXZWJT
b3VwUmVxdWVzdEFzeW5jRGF0YSB7CisgICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEoR1Rhc2sq
IHRhc2ssIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdEdlbmVyaWMpCisgICAgICAg
IDogdGFzayh0YXNrKQorICAgICAgICAsIHJlcXVlc3QocmVxdWVzdEdlbmVyaWMpCisgICAgICAg
ICwgY2FuY2VsbGFibGUoZ190YXNrX2dldF9jYW5jZWxsYWJsZSh0YXNrKSkKKyAgICB7CisgICAg
ICAgIC8vIElmIHRoZSBzdHJ1Y3QgY29udGFpbnMgYSBudWxsIHJlcXVlc3QsIGl0IGlzIGJlY2F1
c2UgdGhlIHJlcXVlc3QgZmFpbGVkLgorICAgICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVy
KEdfT0JKRUNUKHJlcXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsK
KyAgICB9CisKKyAgICB+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKQorICAgIHsKKyAgICAgICAg
aWYgKHJlcXVlc3QpCisgICAgICAgICAgICBnX29iamVjdF9yZW1vdmVfd2Vha19wb2ludGVyKEdf
T0JKRUNUKHJlcXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsKKyAg
ICB9CisKKyAgICBib29sIHJlcXVlc3RGYWlsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdf
Y2FuY2VsbGFibGVfaXNfY2FuY2VsbGVkKGNhbmNlbGxhYmxlLmdldCgpKSB8fCAhcmVxdWVzdDsK
KyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiByZWxlYXNlVGFzaygpCisgICAgeworICAgICAg
ICBHVGFzayogcmV0dXJuVmFsdWUgPSB0YXNrOworICAgICAgICB0YXNrID0gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0R1JlZihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR1Rhc2sq
IHRhc2s7CisgICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0OworICAgIEdSZWZQ
dHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKKyAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4g
c3RyZWFtOworfTsKKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VySW1wbChDaGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcykKKyAgICA6IG1fY2hpbGRQcm9j
ZXNzKGNoaWxkUHJvY2VzcykKKyAgICAsIG1fc2NoZW1lcyhhZG9wdEdSZWYoZ19wdHJfYXJyYXlf
bmV3X3dpdGhfZnJlZV9mdW5jKGdfZnJlZSkpKQoreworfQorCitDdXN0b21Qcm90b2NvbE1hbmFn
ZXJJbXBsOjp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCgpCit7Cit9CisKK3ZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbDo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
Cit7CisgICAgaWYgKG1fc2NoZW1lcy0+bGVuKQorICAgICAgICBnX3B0cl9hcnJheV9yZW1vdmVf
aW5kZXhfZmFzdChtX3NjaGVtZXMuZ2V0KCksIG1fc2NoZW1lcy0+bGVuIC0gMSk7CisgICAgZ19w
dHJfYXJyYXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgZ19zdHJkdXAoc2NoZW1lLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICBnX3B0cl9hcnJheV9hZGQobV9zY2hlbWVzLmdldCgpLCBudWxscHRyKTsKKwor
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpk
ZWZhdWx0U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCk7CisgICAgU291cFJlcXVlc3RDbGFzcyogZ2Vu
ZXJpY1JlcXVlc3RDbGFzcyA9IHN0YXRpY19jYXN0PFNvdXBSZXF1ZXN0Q2xhc3MqPihnX3R5cGVf
Y2xhc3NfcmVmKFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKSk7CisgICAgZ2VuZXJp
Y1JlcXVlc3RDbGFzcy0+c2NoZW1lcyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihyZWludGVy
cHJldF9jYXN0PGNoYXIqKj4obV9zY2hlbWVzLT5wZGF0YSkpOworICAgIHN0YXRpY19jYXN0PFdl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQ
RV9TT1VQX1JFUVVFU1RfR0VORVJJQykpLT5jdXN0b21Qcm90b2NvbE1hbmFnZXIgPSB0aGlzOwor
ICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKHNlc3Npb24sIFdFQktJVF9UWVBF
X1NPVVBfUkVRVUVTVF9HRU5FUklDKTsKK30KKworYm9vbCBDdXN0b21Qcm90b2NvbE1hbmFnZXJJ
bXBsOjpzdXBwb3J0c1NjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2No
ZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU3RyaW5nIGNTY2hl
bWUgPSBzY2hlbWUudXRmOCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVt
ZXMtPmxlbjsgKytpKSB7CisgICAgICAgIGlmIChjU2NoZW1lID09IHN0YXRpY19jYXN0PGNoYXIq
PihnX3B0cl9hcnJheV9pbmRleChtX3NjaGVtZXMuZ2V0KCksIGkpKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJJbXBsOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIFdlYlNv
dXBSZXF1ZXN0QXN5bmNEYXRhKiBkYXRhID0gbV9jdXN0b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9t
UHJvdG9jb2xJRCk7CisgICAgQVNTRVJUKGRhdGEpOworCisgICAgR1JlZlB0cjxHVGFzaz4gdGFz
ayA9IGRhdGEtPnJlbGVhc2VUYXNrKCk7CisgICAgQVNTRVJUKHRhc2suZ2V0KCkpOworICAgIGdf
dGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCAi
JXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
bV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKK3ZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQoreworICAg
IFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKiBkYXRhID0gbV9jdXN0b21Qcm90b2NvbE1hcC5nZXQo
Y3VzdG9tUHJvdG9jb2xJRCk7CisgICAgLy8gVGhlIGRhdGEgbWlnaHQgaGF2ZSBiZWVuIHJlbW92
ZWQgZnJvbSB0aGUgcmVxdWVzdCBtYXAgaWYgYSBwcmV2aW91cyBjaHVuayBmYWlsZWQKKyAgICAv
LyBhbmQgYSBuZXcgbWVzc2FnZSB3YXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyBiZWZvcmUgYmVp
bmcgbm90aWZpZWQgYWJvdXQgdGhlIGZhaWx1cmUuCisgICAgaWYgKCFkYXRhKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIWRhdGEtPnN0cmVhbSkgeworICAgICAgICBHUmVmUHRyPEdUYXNr
PiB0YXNrID0gZGF0YS0+cmVsZWFzZVRhc2soKTsKKyAgICAgICAgQVNTRVJUKHRhc2suZ2V0KCkp
OworCisgICAgICAgIGdvZmZzZXQgc291cENvbnRlbnRMZW5ndGggPSBzb3VwX3JlcXVlc3RfZ2V0
X2NvbnRlbnRfbGVuZ3RoKFNPVVBfUkVRVUVTVChnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFz
ay5nZXQoKSkpKTsKKyAgICAgICAgdWludDY0X3QgY29udGVudExlbmd0aCA9IHNvdXBDb250ZW50
TGVuZ3RoID09IC0xID8gMCA6IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihzb3VwQ29udGVudExlbmd0
aCk7CisgICAgICAgIGlmICghZGF0YVJlZmVyZW5jZS5zaXplKCkpIHsKKyAgICAgICAgICAgIC8v
IEVtcHR5IHJlcGx5LCBqdXN0IGNyZWF0ZSBhbmQgZW1wdHkgR01lbW9yeUlucHV0U3RyZWFtLgor
ICAgICAgICAgICAgZGF0YS0+c3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpOwor
ICAgICAgICB9IGVsc2UgaWYgKGRhdGFSZWZlcmVuY2Uuc2l6ZSgpID09IGNvbnRlbnRMZW5ndGgp
IHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCBtb3JlIGRhdGEsIHNvIHdlIGNhbiBq
dXN0IGNyZWF0ZSBhIEdNZW1vcnlJbnB1dFN0cmVhbSB3aXRoIGFsbCB0aGUgZGF0YS4KKyAgICAg
ICAgICAgIGRhdGEtPnN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRh
KGdfbWVtZHVwKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSksIGNv
bnRlbnRMZW5ndGgsIGdfZnJlZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBX
ZSBleHBlY3QgbW9yZSBkYXRhIGNodW5rcyBmcm9tIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAg
ICAgZGF0YS0+c3RyZWFtID0gd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyhjb250ZW50
TGVuZ3RoKTsKKyAgICAgICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRh
KFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQoKSksIGRh
dGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgICAgIH0KKyAg
ICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGRhdGEtPnN0cmVhbS5nZXQo
KSwgZ19vYmplY3RfdW5yZWYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRh
dGEtPnJlcXVlc3RGYWlsZWQoKSkgeworICAgICAgICAvLyBSZXNvdXJjZVJlcXVlc3QgZmFpbGVk
IG9yIGl0IHdhcyBjYW5jZWxsZWQuIEl0IGRvZXNuJ3QgbWF0dGVyIGhlcmUgdGhlIGVycm9yIG9y
IGlmIGl0IHdhcyBjYW5jZWxsZWQsCisgICAgICAgIC8vIGJlY2F1c2UgdGhhdCdzIGFscmVhZHkg
aGFuZGxlZCBieSB0aGUgcmVzb3VyY2UgaGFuZGxlIGNsaWVudCwgd2UganVzdCB3YW50IHRvIG5v
dGlmeSB0aGUgVUkgcHJvY2VzcworICAgICAgICAvLyB0byBzdG9wIHJlYWRpbmcgZGF0YSBmcm9t
IHRoZSB1c2VyIGlucHV0IHN0cmVhbS4gSWYgVUkgcHJvY2VzcyBhbHJlYWR5IHNlbnQgYWxsIHRo
ZSBkYXRhIHdlIHNpbXBseQorICAgICAgICAvLyBmaW5pc2ggc2lsZW50bHkuCisgICAgICAgIGlm
ICghd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlzaGVkKFdFQktJVF9TT1VQX1JFUVVF
U1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQoKSkpKQorICAgICAgICAgICAgbV9jaGls
ZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9w
TG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JF
UVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0
YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VySW1wbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIFdlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhKiBkYXRhID0gbV9jdXN0b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9tUHJv
dG9jb2xJRCk7CisgICAgQVNTRVJUKGRhdGEpOworICAgIEFTU0VSVChkYXRhLT50YXNrKTsKKwor
ICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCA9IFdFQktJVF9TT1VQX1JFUVVF
U1RfR0VORVJJQyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QoZGF0YS0+dGFzaykpOworICAgIHdl
YmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRMZW5ndGgocmVxdWVzdCwgcmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPyByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgo
KSA6IC0xKTsKKyAgICB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50VHlwZShyZXF1
ZXN0LCAhcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkgPyByZXNwb25zZS5taW1lVHlwZSgp
LnV0ZjgoKS5kYXRhKCkgOiAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
OjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCit7CisgICAgQVNT
RVJUKG1fY3VzdG9tUHJvdG9jb2xNYXAuY29udGFpbnMoY3VzdG9tUHJvdG9jb2xJRCkpOworICAg
IG1fY3VzdG9tUHJvdG9jb2xNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworfQorCit2b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OnNlbmQoR1Rhc2sqIHRhc2spCit7CisgICAgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCA9IGdlbmVyYXRlQ3VzdG9tUHJvdG9jb2xJRCgpOworICAg
IFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCA9IFdFQktJVF9TT1VQX1JFUVVFU1Rf
R0VORVJJQyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzaykpOworICAgIG1fY3VzdG9tUHJv
dG9jb2xNYXAuc2V0KGN1c3RvbVByb3RvY29sSUQsIHN0ZDo6bWFrZV91bmlxdWU8V2ViU291cFJl
cXVlc3RBc3luY0RhdGE+KHRhc2ssIHJlcXVlc3QpKTsKKworICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXNvdXJjZVJlcXVlc3QoV2ViQ29yZTo6c291cFVSSVRvS1VSTChzb3VwX3JlcXVl
c3RfZ2V0X3VyaShTT1VQX1JFUVVFU1QocmVxdWVzdCkpKSk7CisgICAgbV9jaGlsZFByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdGFydExvYWRpbmco
Y3VzdG9tUHJvdG9jb2xJRCwgcmVzb3VyY2VSZXF1ZXN0KSwgMCk7Cit9CisKK0dJbnB1dFN0cmVh
bSogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZmluaXNoKEdUYXNrKiB0YXNrLCBHRXJyb3Iq
KiBlcnJvcikKK3sKKyAgICBncG9pbnRlciBpbnB1dFN0cmVhbSA9IGdfdGFza19wcm9wYWdhdGVf
cG9pbnRlcih0YXNrLCBlcnJvcik7CisgICAgcmV0dXJuIGlucHV0U3RyZWFtID8gR19JTlBVVF9T
VFJFQU0oaW5wdXRTdHJlYW0pIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFu
YWdlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xZDQ0MjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsX2gKKyNkZWZpbmUgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbF9oCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHN0cnVjdCBfR1Rh
c2sgR1Rhc2s7Cit0eXBlZGVmIHN0cnVjdCBfR0lucHV0U3RyZWFtIEdJbnB1dFN0cmVhbTsKKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfSAvLyBuYW1lc3BhY2UgSVBD
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgQ2hpbGRQcm9jZXNzOworc3RydWN0IFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRh
OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsKTsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsKENoaWxkUHJvY2VzcyopOworICAgIH5DdXN0b21Q
cm90b2NvbE1hbmFnZXJJbXBsKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0
cmluZyYpOworICAgIGJvb2wgc3VwcG9ydHNTY2hlbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICB2
b2lkIGRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElEKTsKKworICAgIC8vIFNvdXBSZXF1ZXN0IGltcGxlbWVudGF0aW9uLgor
ICAgIHZvaWQgc2VuZChHVGFzayopOworICAgIEdJbnB1dFN0cmVhbSogZmluaXNoKEdUYXNrKiwg
R0Vycm9yKiopOworCitwcml2YXRlOgorICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFByb2Nlc3M7
CisgICAgR1JlZlB0cjxHUHRyQXJyYXk+IG1fc2NoZW1lczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU291cFJlcXVlc3RBc3luY0RhdGE+PiBtX2N1c3RvbVByb3Rv
Y29sTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q1VTVE9NX1BST1RPQ09MUykKKworI2VuZGlmIC8vIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGxf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJT
b3VwLmNwcAppbmRleCA0MmI1OTQ4Li42YjcxYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcApAQCAtMjMsMTUgKzIzLDEw
IEBACiAjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAKICNpbmNsdWRlICJDaGlsZFByb2Nl
c3MuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmgiCiAjaW5jbHVkZSAi
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCkBAIC00Nyw2ICs0Miw3IEBAIGNvbnN0IGNoYXIqIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBjaGlsZFByb2Nlc3MpCiAgICAgOiBtX2No
aWxkUHJvY2VzcyhjaGlsZFByb2Nlc3MpCiAgICAgLCBtX21lc3NhZ2VRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DdXN0b21Qcm90b2NvbE1hbmFnZXIiKSkKKyAgICAs
IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw+KGNoaWxk
UHJvY2VzcykpCiB7CiB9CiAKQEAgLTU1LDE5ICs1MSwzMSBAQCB2b2lkIEN1c3RvbVByb3RvY29s
TWFuYWdlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
KQogICAgIGNvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fbWVzc2FnZVF1
ZXVlLmdldCgpLCB0aGlzKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRp
YWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2b2lkIEN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogeworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgQVNT
RVJUKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuaXNF
bXB0eSgpIHx8ICFwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcyk7CisgICAgaWYgKHBhcmFt
ZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzKSB7CisgICAgICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAg
ICAgICAgbV9tZXNzYWdlUXVldWUgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNS
ZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytpKQorICAgICAgICByZWdpc3Rl
clNjaGVtZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xz
W2ldKTsKIH0KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi12b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQogI2VuZGlmCiAK
LXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcm
KQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pbXBsLT5yZWdpc3Rl
clNjaGVtZShzY2hlbWUpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6dW5yZWdp
c3RlclNjaGVtZShjb25zdCBTdHJpbmcmKQpAQCAtNzUsMzAgKzgzLDI5IEBAIHZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRz
U2NoZW1lKGNvbnN0IFN0cmluZyYpCitib29sIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcG9y
dHNTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faW1wbC0+c3VwcG9ydHNTY2hlbWUoc2No
ZW1lKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3Io
dWludDY0X3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKQordm9pZCBDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBtX2ltcGwtPmRpZEZhaWxXaXRoRXJyb3IoY3VzdG9tUHJvdG9jb2xJRCwgZXJy
b3IpOwogfQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0
X3QsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
cjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9pbXBsLT5kaWRMb2FkRGF0YShjdXN0b21Qcm90b2NvbElELCBkYXRhUmVmZXJlbmNlKTsKIH0K
IAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRf
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHVpbnQzMl90KQordm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdWludDMy
X3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2ltcGwtPmRpZFJlY2VpdmVSZXNw
b25zZShjdXN0b21Qcm90b2NvbElELCByZXNwb25zZSk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90KQordm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faW1wbC0+ZGlkRmluaXNoTG9hZGluZyhjdXN0
b21Qcm90b2NvbElEKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5k
ZXggZWQ2MDM4OS4uNGRlMGU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzMsNyArNzMsOSBAQCB2b2lk
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCisjaWYgIUVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWQ7CisjZW5k
aWYKICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBlbmNv
ZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0oY29va2llQWNjZXB0UG9saWN5KTsKQEAgLTE2Myw4ICsxNjUsMTAgQEAgYm9vbCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFdlYlByb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAjaWYgVVNFKFNPVVAp
CisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb29raWVQZXJzaXN0
ZW50U3RvcmFnZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApp
bmRleCA1MmNhMjRlLi5lNGYyZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTgyLDcgKzgyLDkgQEAgc3RydWN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwogI2VuZGlmCiAjaWYgVVNFKFNPVVAp
CisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNj
aGVtZXNSZWdpc3RlcmVkOworI2VuZGlmCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlUGF0aDsKICAgICB1aW50MzJfdCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU7CiAgICAg
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3k7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKaW5kZXggYzhh
OTU0NC4uMDMzMzMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tBUElDYXN0U291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaApAQCAtMzIsOSArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK2NsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOwogY2xh
c3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RP
Q09MUykKK1dLX0FERF9BUElfTUFQUElORyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyUmVmLCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcikKKyNlbHNlCiBXS19B
RERfQVBJX01BUFBJTkcoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5KQorI2VuZGlmCiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
NWIxZjgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTAsMCArMSw1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlci5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworV0tUeXBlSUQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgp
Cit7CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgcmV0dXJuIHRvQVBJKFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0
dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyU2V0Q2xpZW50KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cFJl
cXVlc3RNYW5hZ2VyUmVmLCBjb25zdCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50QmFzZSogd2tDbGllbnQpCit7CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisg
ICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGll
bnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc291cFJlcXVlc3RNYW5hZ2VyUmVmKTsKKyAg
ICBVTlVTRURfUEFSQU0od2tDbGllbnQpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uY2IwZWRjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9oCisjZGVmaW5l
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAorCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
Cit0eXBlZGVmIHZvaWQgKCpXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRM
b2FkaW5nQ2FsbGJhY2spKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291
cE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrKShXS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwordHlwZWRlZiBzdHJ1
Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgeworICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJz
aW9uOworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGllbnRJbmZvOworfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50QmFzZTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlckNsaWVudFYwIHsKKyAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50QmFzZSAgICAgICAgICAgYmFzZTsKKworICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTdGFydExvYWRpbmdDYWxsYmFjayBzdGFydExvYWRpbmc7CisgICAgV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclN0b3BMb2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2Fk
aW5nOworfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7CisKK1dL
X0VYUE9SVCBXS1R5cGVJRCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlw
ZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJTZXRDbGllbnQoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3Qg
V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCBiYjMyZGFmLi42MTNmZjFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtNDMsMTAg
KzQzLDExIEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBDaGlsZFByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYkNvbnRleHQ7CiAKIGNsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nl
c3NQcm94eSopOworICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KENoaWxk
UHJvY2Vzc1Byb3h5KiwgV2ViQ29udGV4dCYpOwogCiAgICAgdm9pZCBzdGFydExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKQEAgLTU2
LDYgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwogCiAgICAg
Q2hpbGRQcm9jZXNzUHJveHkqIG1fY2hpbGRQcm9jZXNzUHJveHk7CisgICAgV2ViQ29udGV4dCYg
bV93ZWJDb250ZXh0OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI+PiBMb2FkZXJNYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQppbmRleCAxOTgyMmY5Li43ZDBlZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0K
QEAgLTEyMiw4ICsxMjIsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94eSkKK0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nl
c3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHksIFdlYkNvbnRleHQmIHdlYkNvbnRleHQpCiAgICAg
OiBtX2NoaWxkUHJvY2Vzc1Byb3h5KGNoaWxkUHJvY2Vzc1Byb3h5KQorICAgICwgbV93ZWJDb250
ZXh0KHdlYkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1fY2hpbGRQcm9jZXNzUHJveHkpOwogICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5U291cC5jcHAKaW5kZXggNTdiOTllNC4uYTZiNDM3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eVNvdXAuY3BwCkBAIC0yNSwyNiArMjUsMjggQEAKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1By
b3h5KiBjaGlsZFByb2Nlc3NQcm94eSkKK0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJv
eHksIFdlYkNvbnRleHQmIHdlYkNvbnRleHQpCiAgICAgOiBtX2NoaWxkUHJvY2Vzc1Byb3h5KGNo
aWxkUHJvY2Vzc1Byb3h5KQorICAgICwgbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKG1fY2hpbGRQcm9jZXNzUHJveHkpOwogICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcodWludDY0X3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJDb250ZXh0LnN1
cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnN0YXJ0TG9h
ZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QpCit2b2lkIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJDb250ZXh0LnN1cHBsZW1lbnQ8V2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnN0b3BMb2FkaW5nKGN1c3RvbVByb3Rv
Y29sSUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDczYWQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCkBA
IC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJB
UElEYXRhLmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJD
b3JlL0Vycm9yc0d0ay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjb25zdCBj
aGFyKiBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3VwcGxlbWVudE5hbWUo
KQoreworICAgIHJldHVybiAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIiOwor
fQorCitQYXNzUmVmUHRyPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcihjb250ZXh0KSk7Cit9CisKK1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyOjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJDb250ZXh0KiBj
b250ZXh0KQorICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQoY29udGV4dCkKK3sKK30KKworV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6On5XZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcigpCit7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXI6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudC5pbml0aWFsaXpl
KGNsaWVudCk7Cit9CisKKy8vIFdlYkNvbnRleHRTdXBwbGVtZW50Cit2b2lkIFdlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKCkKK3sKK30KKwordm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKFdl
YlByb2Nlc3NQcm94eSopCit7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXI6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUEk6Ok9iamVjdDo6
cmVmKCk7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRl
cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwor
fQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNj
aGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmICgh
Y29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPnJlZ2lzdGVyU2No
ZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKKworICAgIEFTU0VSVCghbV9yZWdpc3RlcmVk
U2NoZW1lcy5jb250YWlucyhzY2hlbWUpKTsKKyAgICBtX3JlZ2lzdGVyZWRTY2hlbWVzLmFwcGVu
ZChzY2hlbWUpOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUp
Cit7CisgICAgaWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQo
KS0+dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CisKKyAgICBBU1NF
UlQobV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhzY2hlbWUpKTsKKyAgICBtX3JlZ2lzdGVy
ZWRTY2hlbWVzLnJlbW92ZShtX3JlZ2lzdGVyZWRTY2hlbWVzLmZpbmQoc2NoZW1lKSk7Cit9CisK
K3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN0YXJ0TG9hZGluZyh1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2NsaWVudC5zdGFydExvYWRpbmcodGhpcywgY3VzdG9t
UHJvdG9jb2xJRCwgcmVxdWVzdCkpCisgICAgICAgIGRpZEZhaWxXaXRoRXJyb3IoY3VzdG9tUHJv
dG9jb2xJRCwgV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKK30KKwordm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBtX2NsaWVudC5zdG9wTG9hZGluZyh0aGlzLCBj
dXN0b21Qcm90b2NvbElEKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmICghY29u
dGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPm5ldHdvcmtpbmdQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRp
ZFJlY2VpdmVSZXNwb25zZShjdXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworfQor
Cit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRMb2FkRGF0YSh1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBBUEk6OkRhdGEqIGRhdGEpCit7CisgICAg
aWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQoKS0+bmV0d29y
a2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFu
YWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJvdG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgp
KSwgMCk7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRp
ZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGNvbnRleHQoKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihjdXN0
b21Qcm90b2NvbElELCBlcnJvciksIDApOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQpCit7CisgICAgaWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRl
eHQoKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9Q
Uk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wNjg1MjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJfaAorI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9o
CisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBEYXRhOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owor
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkNvbnRleHQ7CisKK2NsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+IGNyZWF0
ZShXZWJDb250ZXh0Kik7CisgICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOworCisgICAgdm9pZCByZWdpc3Rl
clNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSk7
CisKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQpOworCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OworICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qg
QVBJOjpEYXRhKik7CisgICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CisKKyAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMoKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CisKKyAgICB1c2luZyBBUEk6Ok9iamVjdDo6
cmVmOworICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJDb250ZXh0Kik7CisKKyAgICAvLyBX
ZWJDb250ZXh0U3VwcGxlbWVudAorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJv
eHkqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgp
IE9WRVJSSURFOworCisgICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGll
bnQgbV9jbGllbnQ7CisgICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCisKKyNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9X
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBkNDNjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgor
CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCiti
b29sIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpzdGFydExvYWRp
bmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdl
ciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9jbGllbnQuc3RhcnRMb2FkaW5nKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8QVBJOjpVUkxSZXF1ZXN0PiB1cmxSZXF1ZXN0
ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdCk7CisgICAgbV9jbGllbnQuc3RhcnRM
b2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3RvY29sSUQsIHRvQVBJ
KHVybFJlcXVlc3QuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50OjpzdG9wTG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogc291
cFJlcXVlc3RNYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAgIGlmICht
X2NsaWVudC5zdG9wTG9hZGluZykKKyAgICAgICAgbV9jbGllbnQuc3RvcExvYWRpbmcodG9BUEko
c291cFJlcXVlc3RNYW5hZ2VyKSwgY3VzdG9tUHJvdG9jb2xJRCwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q1VTVE9NX1BST1RPQ09MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNDMzMjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCisjZGVmaW5lIFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKKworI2lmIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCisjaW5jbHVkZSAiV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgor
CituYW1lc3BhY2UgQVBJIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMD4gVmVy
c2lvbnM7Cit9OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjsKKworY2xhc3MgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudEJhc2U+IHsKK3B1YmxpYzoKKyAgICBib29sIHN0YXJ0TG9hZGluZyhX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciosIHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RvcExv
YWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDdmMjlmZjIuLmU5
YjRlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkoV2ViQ29udGV4dCYgd2ViQ29udGV4dCkKICAgICA6
IG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQogICAgICwgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJl
cXVlc3RzKDApCiAjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAgLCBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5KHRoaXMpCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5KHRoaXMsIHdlYkNvbnRleHQpCiAjZW5kaWYKIHsKICAgICBjb25uZWN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZTEwNTE1Yi4uYzNjZGJkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtOTEsOCArOTEsMTIgQEAK
ICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisj
aW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKKyNlbHNlCiAj
aW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNlbmRpZgorI2VuZGlmCiAK
ICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpA
QCAtMTcyLDggKzE3NiwxMiBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KGNvbnN0IFN0cmluZyYg
aW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViRGF0YWJhc2VNYW5hZ2Vy
UHJveHk+KCk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RP
Q09MUykKKyAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyPigpOworI2Vsc2UKICAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5PigpOwogI2VuZGlmCisjZW5kaWYKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAg
YWRkU3VwcGxlbWVudDxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PigpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5OWM4YjQuLjVhMGE5YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDYsNyAr
MTA2LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKLSNpZiBV
U0UoU09VUCkKKyNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogI2lu
Y2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIApAQCAtNDM0OCw3
ICs0MzQ4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW4KIAogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKIAotI2lmIFVTRShTT1VQKQorI2lmIFVTRShTT1VQKSAmJiAhRU5BQkxFKENVU1RPTV9Q
Uk9UT0NPTFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVVSSVJlcXVlc3QoU3RyaW5n
IHVyaVN0cmluZywgdWludDY0X3QgcmVxdWVzdElEKQogewogICAgIG1fcHJvY2Vzcy0+Y29udGV4
dCgpLnN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCktPmRpZFJlY2VpdmVV
UklSZXF1ZXN0KHVyaVN0cmluZywgdGhpcywgcmVxdWVzdElEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZmMxYTYzLi40NGY3ZDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTMwLDcgKzExMzAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb24oKTsKICNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCiAKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQogICAgIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoU3RyaW5nIHVyaVN0cmlu
ZywgdWludDY0X3QgcmVxdWVzdElEKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5NmY4OGFjLi4yYzYwZGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTMxOCw5ICszMTgsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiByZXN1
bHQpCiAKICNpZiBVU0UoU09VUCkKKyNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAg
IyBTb3VwIGN1c3RvbSBVUkkgcmVxdWVzdCBtZXNzYWdlcwogICAgIERpZFJlY2VpdmVVUklSZXF1
ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAjZW5kaWYKKyNlbmRp
ZgogCiAgICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAxMGYxYWIwLi5kMjQ2YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtODksNyArODksNyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlBy
b2Nlc3NQcm94eShXZWJDb250ZXh0JiBjb250ZXh0KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQp
CiAgICAgLCBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oZmFsc2Up
CiAjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAgLCBtX2N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5KHRoaXMpCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KHRoaXMs
IGNvbnRleHQpCiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3Byb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb250ZXh0R3RrLmNwcAppbmRleCBmODEyNjcwLi44YWNlZjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgpAQCAtNDQsNiArNDMsMTIgQEAKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQorI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmgiCisjZWxzZQorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB2b2lkIGluaXRJbnNwZWN0b3JTZXJ2
ZXIoKQpAQCAtOTksNyArMTA0LDExIEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAgICAgfQog
CiAgICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkgeworI2lmIEVOQUJMRShDVVNUT01fUFJP
VE9DT0xTKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzID0gc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
cj4oKS0+cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMoKTsKKyNlbHNlCiAgICAg
ICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQgPSBzdXBwbGVtZW50PFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5PigpLT5yZWdpc3RlcmVkVVJJU2NoZW1lcygpOworI2VuZGlmCiAK
ICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLCBw
YXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSk7CiAgICAgICAgIHBhcmFtZXRl
cnMuY29va2llQWNjZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvbnRleHRTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvbnRleHRTb3VwLmNwcApp
bmRleCAyYzQ4NTViLi40M2VlNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJDb250ZXh0U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViQ29udGV4dFNvdXAuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1h
bmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTM5LDYgKzQwLDkgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGUKICAgICBwYXJhbWV0
ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7
CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMgPSBtX2lnbm9yZVRMU0Vycm9yczsKICAg
ICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KTsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzID0gc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90
b2NvbHMoKTsKKyNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCAyOTFhYjRhLi40NzJlOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQAogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5oIgogI2VuZGlmCiAKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoU09V
UCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0
TWFuYWdlci5oIgogI2VuZGlmCiAKQEAgLTIwMCw3ICsyMDAsNyBAQCBXZWJQcm9jZXNzOjpXZWJQ
cm9jZXNzKCkKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogICAgIGFkZFN1cHBsZW1lbnQ8V2Vi
TmV0d29ya0luZm9NYW5hZ2VyPigpOwogI2VuZGlmCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKFNP
VVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBhZGRTdXBwbGVtZW50PFdlYlNv
dXBSZXF1ZXN0TWFuYWdlcj4oKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcAppbmRl
eCA0MTYxYmY1Li41NWM1MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcApAQCAtMjAsOSArMjAs
MTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRTb3VwUmVxdWVzdEdl
bmVyaWMuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworI2lmICFFTkFCTEUo
Q1VTVE9NX1BST1RPQ09MUykKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2Vi
U291cFJlcXVlc3RNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2Vu
ZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQ4LDEzICs1MSwyNSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWNfaW5pdChXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWMqIHJlcXVlc3QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y1NlbmRBc3luYyhTb3VwUmVxdWVzdCogcmVxdWVzdCwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJs
ZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCiB7Cisj
aWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1w
bCogY3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDX0dF
VF9DTEFTUyhyZXF1ZXN0KS0+Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyOworICAgIEFTU0VSVChjdXN0
b21Qcm90b2NvbE1hbmFnZXIpOworICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c2VuZChnX3Rh
c2tfbmV3KHJlcXVlc3QsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKKyNlbHNl
CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuc3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFn
ZXI+KCktPnNlbmQoZ190YXNrX25ldyhyZXF1ZXN0LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVz
ZXJEYXRhKSk7CisjZW5kaWYKIH0KIAogc3RhdGljIEdJbnB1dFN0cmVhbSogd2Via2l0U291cFJl
cXVlc3RHZW5lcmljU2VuZEZpbmlzaChTb3VwUmVxdWVzdCogcmVxdWVzdCwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdf
dGFza19pc192YWxpZChyZXN1bHQsIHJlcXVlc3QpLCAwKTsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BS
T1RPQ09MUykKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsKiBjdXN0b21Qcm90b2NvbE1h
bmFnZXIgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUNfR0VUX0NMQVNTKHJlcXVlc3QpLT5j
dXN0b21Qcm90b2NvbE1hbmFnZXI7CisgICAgQVNTRVJUKGN1c3RvbVByb3RvY29sTWFuYWdlcik7
CisgICAgcmV0dXJuIGN1c3RvbVByb3RvY29sTWFuYWdlci0+ZmluaXNoKEdfVEFTSyhyZXN1bHQp
LCBlcnJvcik7CisjZWxzZQogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zdXBwbGVt
ZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKS0+ZmluaXNoKEdfVEFTSyhyZXN1bHQpLCBlcnJv
cik7CisjZW5kaWYKIH0KIAogc3RhdGljIGdvZmZzZXQgd2Via2l0U291cFJlcXVlc3RHZW5lcmlj
R2V0Q29udGVudExlbmd0aChTb3VwUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaApp
bmRleCA2MjEyY2U2Li41YzVkM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oCkBAIC0yMyw2ICsyMywx
MCBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyNpbmNsdWRlICJDdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsLmgiCisjZW5kaWYKKwogR19CRUdJTl9ERUNMUwogCiAjZGVmaW5lIFdFQktJ
VF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDICAgICAgICAgICAgKHdlYmtpdF9zb3VwX3JlcXVl
c3RfZ2VuZXJpY19nZXRfdHlwZSgpKQpAQCAtNDQsNiArNDgsMTAgQEAgc3RydWN0IF9XZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWMgewogCiBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY0Ns
YXNzIHsKICAgICBTb3VwUmVxdWVzdENsYXNzIHBhcmVudDsKKworI2lmIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQorICAgIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCogY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOworI2VuZGlmCiB9OwogCiBHVHlwZSB3ZWJraXRfc291cF9yZXF1ZXN0
X2dlbmVyaWNfZ2V0X3R5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDAyOGIwNWQuLjMyYjIxNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtMzQs
NyArMzQsNiBAQAogI2luY2x1ZGUgIkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
Ci0jaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVtb3J5Q2FjaGUuaD4KQEAgLTQ1LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAorI2lm
ICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFn
ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHVpbnQ2NF90IGdl
dENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCkBAIC0xNjMsOCArMTY2LDEwIEBA
IHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5p
c0VtcHR5KCkpCiAgICAgICAgIHNldFNvdXBTZXNzaW9uQWNjZXB0TGFuZ3VhZ2UocGFyYW1ldGVy
cy5sYW5ndWFnZXMpOwogCisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZC5zaXplKCk7
IGkrKykKICAgICAgICAgc3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lz
dGVyVVJJU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRbaV0pOworI2VuZGlm
CiAKICAgICBzZXRJZ25vcmVUTFNFcnJvcnMocGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221449</attachid>
            <date>2014-01-17 00:19:16 -0800</date>
            <delta_ts>2014-01-17 05:18:50 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>soup-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>66008</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyOGE0MWI2Li4zNGYyZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTEx
IEBACiAyMDE0LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbU09VUF0gSW1wbGVtZW50IENVU1RPTSBQUk9UT0NPTFMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTU4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgY2xhc3NlcyB0
byBpbXBsZW1lbnQgQ3VzdG9tUHJvdG9jb2xzIGZvciBzb3VwLiBUaGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gaXMgdGhlIHNhbWUsIGJ1dCB1c2luZyB0aGUgQ3VzdG9tUHJvdG9jb2wgQVBJIGFu
ZAorICAgICAgICBtZXNzYWdlcy4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gY2FuIGJlIHJl
bW92ZWQgb25jZSBhbGwgcG9ydHMKKyAgICAgICAgdXNpbmcgc291cCBzd2l0Y2ggdG8gdXNpbmcg
Q3VzdG9tUHJvdG9jb2xzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBuZXcgaW5j
bHVkZSBwYXRocy4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVz
IHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgbmV3IGZp
bGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNv
dXAuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAq
IFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdl
ckltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVDdXN0b21Qcm90b2Nv
bElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0Rh
dGE6On5XZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhOjpyZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291
cFJlcXVlc3RBc3luY0RhdGE6OnJlbGVhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6On5DdXN0b21Qcm90b2NvbE1hbmFn
ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6cmVn
aXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
OjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckltcGw6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsOjpkaWRMb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlckltcGw6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZmluaXNoKToKKyAgICAgICAgKiBTaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3Rv
bVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvbnRleHRTb3VwLmNwcC4KKyAgICAgICAgKFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50TmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6fldlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmluaXRpYWxpemVDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y29udGV4dERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlcmVkU2NoZW1lc0ZvckN1
c3RvbVByb3RvY29scyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyk6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
c291cC9XZWJDb250ZXh0U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcDoK
KyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk6CisgICAgICAgICh3
ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKKzIwMTQtMDEtMTYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtTT1VQXSBBZGQgc3R1YnMg
Zm9yIEN1c3RvbVByb3RvY29sIGNsYXNzZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjM0MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGNiYWNj
YmYuLjFiNDUzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDQsNiArMTA0LDcgQEAgbGli
d2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yayBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEgXApA
QCAtMTIyLDYgKzEyMyw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scyBcCisJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucyBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA5OWMxMThmLi40NGEwMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTQwMyw2ICs0MDMsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBcCisJU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VySW1wbC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyU291cC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBcCkBAIC01MjEsNiArNTIz
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS0NvbnRleHRTb3VwLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dlYktpdDJfQy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmggXApAQCAtODM3LDYgKzg0MSwxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcCBcCisJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9zb3VwL05ldHdvcmtQcm9j
ZXNzUHJveHlTb3VwLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDA0MDVmZWIu
LjI1OGE4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zNyw2ICszNyw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHAKIAorICAgIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwCiAgICAgU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKIAogICAgIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKQEAgLTc4
LDYgKzc5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nv
b2tpZU1hbmFnZXJTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVl
c3RNYW5hZ2VyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0yMzYs
NiArMjM4LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3Bw
CisgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIu
Y3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3Bw
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApA
QCAtMzk3LDYgKzQwMSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9ndGsiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKaW5kZXggNjE4OWU0Yy4uNjAwZjA4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNlU291cC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApAQCAtMzEsNSAr
MzEsNiBAQAogI2VuZGlmCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVl
c3RNYW5hZ2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJSZWY7CiAKICNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA1MmJlZjE0Li4zODE1NWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xNTgsNiArMTU4LDcgQEAgcHVibGljOgogICAgICAgICBW
aWV3LAogI2lmIFVTRShTT1VQKQogICAgICAgICBTb3VwUmVxdWVzdE1hbmFnZXIsCisgICAgICAg
IFNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLAogI2VuZGlmCiAjaWYgUExBVEZPUk0o
RUZMKQogICAgICAgICBQb3B1cE1lbnVJdGVtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlci5oCmluZGV4IDgzYmM5MWYuLjdjMGJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50
LmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIApA
QCAtNTUsNiArNTUsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIENoaWxkUHJvY2VzczsKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlcklt
cGw7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEN1
c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyIHsKQEAgLTk1LDEyICs5NiwxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kpOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAot
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwotICAgIE11dGV4IG1fcmVn
aXN0ZXJlZFNjaGVtZXNNdXRleDsKICAgICBDaGlsZFByb2Nlc3MqIG1fY2hpbGRQcm9jZXNzOwog
ICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fbWVzc2FnZVF1ZXVlOwogCiAjaWYgUExBVEZPUk0oTUFD
KQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOworICAgIE11dGV4IG1f
cmVnaXN0ZXJlZFNjaGVtZXNNdXRleDsKKwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwg
UmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+PiBDdXN0b21Qcm90b2NvbE1hcDsKICAgICBDdXN0
b21Qcm90b2NvbE1hcCBtX2N1c3RvbVByb3RvY29sTWFwOwogICAgIE11dGV4IG1fY3VzdG9tUHJv
dG9jb2xNYXBNdXRleDsKQEAgLTEwOSw2ICsxMTEsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlIHJl
dHVybiBhIFJldGFpblB0ciBoZXJlIGJlY2F1c2UgaXQgaXMgdW5zYWZlIHRvIHJldHVybiBhIHJh
dyBwb2ludGVyIHNpbmNlIHRoZSBvYmplY3QgbWlnaHQgaW1tZWRpYXRlbHkgYmUgZGVzdHJveWVk
IGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLgogICAgIFJldGFpblB0cjxXS0N1c3RvbVByb3RvY29s
PiBwcm90b2NvbEZvcklEKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogI2VuZGlmCisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbD4gbV9pbXBsOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjI4NjBkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
LmNwcApAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbC5oIgorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJDaGls
ZFByb2Nlc3MuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1
ZGUgIldlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291
cE5ldHdvcmtTZXNzaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwVVJJVXRpbHMuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUN1c3RvbVByb3Rv
Y29sSUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDdXN0b21Qcm90b2NvbElEID0g
MDsKKyAgICByZXR1cm4gKyt1bmlxdWVDdXN0b21Qcm90b2NvbElEOworfQorCitzdHJ1Y3QgV2Vi
U291cFJlcXVlc3RBc3luY0RhdGEgeworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdUYXNr
KiB0YXNrLCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3RHZW5lcmljKQorICAgICAg
ICA6IHRhc2sodGFzaykKKyAgICAgICAgLCByZXF1ZXN0KHJlcXVlc3RHZW5lcmljKQorICAgICAg
ICAsIGNhbmNlbGxhYmxlKGdfdGFza19nZXRfY2FuY2VsbGFibGUodGFzaykpCisgICAgeworICAg
ICAgICAvLyBJZiB0aGUgc3RydWN0IGNvbnRhaW5zIGEgbnVsbCByZXF1ZXN0LCBpdCBpcyBiZWNh
dXNlIHRoZSByZXF1ZXN0IGZhaWxlZC4KKyAgICAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRl
cihHX09CSkVDVChyZXF1ZXN0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7
CisgICAgfQorCisgICAgfldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKCkKKyAgICB7CisgICAgICAg
IGlmIChyZXF1ZXN0KQorICAgICAgICAgICAgZ19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRlcihH
X09CSkVDVChyZXF1ZXN0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7Cisg
ICAgfQorCisgICAgYm9vbCByZXF1ZXN0RmFpbGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBn
X2NhbmNlbGxhYmxlX2lzX2NhbmNlbGxlZChjYW5jZWxsYWJsZS5nZXQoKSkgfHwgIXJlcXVlc3Q7
CisgICAgfQorCisgICAgR1JlZlB0cjxHVGFzaz4gcmVsZWFzZVRhc2soKQorICAgIHsKKyAgICAg
ICAgR1Rhc2sqIHJldHVyblZhbHVlID0gdGFzazsKKyAgICAgICAgdGFzayA9IG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBhZG9wdEdSZWYocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIEdUYXNr
KiB0YXNrOworICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdDsKKyAgICBHUmVm
UHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGU7CisgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+
IHN0cmVhbTsKK307CisKK0N1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OkN1c3RvbVByb3RvY29s
TWFuYWdlckltcGwoQ2hpbGRQcm9jZXNzKiBjaGlsZFByb2Nlc3MpCisgICAgOiBtX2NoaWxkUHJv
Y2VzcyhjaGlsZFByb2Nlc3MpCisgICAgLCBtX3NjaGVtZXMoYWRvcHRHUmVmKGdfcHRyX2FycmF5
X25ld193aXRoX2ZyZWVfZnVuYyhnX2ZyZWUpKSkKK3sKK30KKworQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VySW1wbDo6fkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwoKQoreworfQorCit2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlckltcGw6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQoreworICAgIGlmIChtX3NjaGVtZXMtPmxlbikKKyAgICAgICAgZ19wdHJfYXJyYXlfcmVtb3Zl
X2luZGV4X2Zhc3QobV9zY2hlbWVzLmdldCgpLCBtX3NjaGVtZXMtPmxlbiAtIDEpOworICAgIGdf
cHRyX2FycmF5X2FkZChtX3NjaGVtZXMuZ2V0KCksIGdfc3RyZHVwKHNjaGVtZS51dGY4KCkuZGF0
YSgpKSk7CisgICAgZ19wdHJfYXJyYXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgbnVsbHB0cik7CisK
KyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6
ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpOworICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIGdl
bmVyaWNSZXF1ZXN0Q2xhc3MgPSBzdGF0aWNfY2FzdDxTb3VwUmVxdWVzdENsYXNzKj4oZ190eXBl
X2NsYXNzX3JlZihXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQykpOworICAgIGdlbmVy
aWNSZXF1ZXN0Q2xhc3MtPnNjaGVtZXMgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4ocmVpbnRl
cnByZXRfY2FzdDxjaGFyKio+KG1fc2NoZW1lcy0+cGRhdGEpKTsKKyAgICBzdGF0aWNfY2FzdDxX
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzcyo+KGdfdHlwZV9jbGFzc19yZWYoV0VCS0lUX1RZ
UEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpKS0+Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gdGhpczsK
KyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBXRUJLSVRfVFlQ
RV9TT1VQX1JFUVVFU1RfR0VORVJJQyk7Cit9CisKK2Jvb2wgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbDo6c3VwcG9ydHNTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNj
aGVtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBjU2No
ZW1lID0gc2NoZW1lLnV0ZjgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hl
bWVzLT5sZW47ICsraSkgeworICAgICAgICBpZiAoY1NjaGVtZSA9PSBzdGF0aWNfY2FzdDxjaGFy
Kj4oZ19wdHJfYXJyYXlfaW5kZXgobV9zY2hlbWVzLmdldCgpLCBpKSkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbDo6ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBXZWJT
b3VwUmVxdWVzdEFzeW5jRGF0YSogZGF0YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0KGN1c3Rv
bVByb3RvY29sSUQpOworICAgIEFTU0VSVChkYXRhKTsKKworICAgIEdSZWZQdHI8R1Rhc2s+IHRh
c2sgPSBkYXRhLT5yZWxlYXNlVGFzaygpOworICAgIEFTU0VSVCh0YXNrLmdldCgpKTsKKyAgICBn
X3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAorICAgICAgICBlcnJvci5lcnJvckNvZGUoKSwg
IiVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKworICAg
IG1fY3VzdG9tUHJvdG9jb2xNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworfQorCit2b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAg
ICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSogZGF0YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0
KGN1c3RvbVByb3RvY29sSUQpOworICAgIC8vIFRoZSBkYXRhIG1pZ2h0IGhhdmUgYmVlbiByZW1v
dmVkIGZyb20gdGhlIHJlcXVlc3QgbWFwIGlmIGEgcHJldmlvdXMgY2h1bmsgZmFpbGVkCisgICAg
Ly8gYW5kIGEgbmV3IG1lc3NhZ2Ugd2FzIHNlbnQgYnkgdGhlIFVJIHByb2Nlc3MgYmVmb3JlIGJl
aW5nIG5vdGlmaWVkIGFib3V0IHRoZSBmYWlsdXJlLgorICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFkYXRhLT5zdHJlYW0pIHsKKyAgICAgICAgR1JlZlB0cjxHVGFz
az4gdGFzayA9IGRhdGEtPnJlbGVhc2VUYXNrKCk7CisgICAgICAgIEFTU0VSVCh0YXNrLmdldCgp
KTsKKworICAgICAgICBnb2Zmc2V0IHNvdXBDb250ZW50TGVuZ3RoID0gc291cF9yZXF1ZXN0X2dl
dF9jb250ZW50X2xlbmd0aChTT1VQX1JFUVVFU1QoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRh
c2suZ2V0KCkpKSk7CisgICAgICAgIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGggPSBzb3VwQ29udGVu
dExlbmd0aCA9PSAtMSA/IDAgOiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc291cENvbnRlbnRMZW5n
dGgpOworICAgICAgICBpZiAoIWRhdGFSZWZlcmVuY2Uuc2l6ZSgpKSB7CisgICAgICAgICAgICAv
LyBFbXB0eSByZXBseSwganVzdCBjcmVhdGUgYW5kIGVtcHR5IEdNZW1vcnlJbnB1dFN0cmVhbS4K
KyAgICAgICAgICAgIGRhdGEtPnN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXcoKTsK
KyAgICAgICAgfSBlbHNlIGlmIChkYXRhUmVmZXJlbmNlLnNpemUoKSA9PSBjb250ZW50TGVuZ3Ro
KSB7CisgICAgICAgICAgICAvLyBXZSBkb24ndCBleHBlY3QgbW9yZSBkYXRhLCBzbyB3ZSBjYW4g
anVzdCBjcmVhdGUgYSBHTWVtb3J5SW5wdXRTdHJlYW0gd2l0aCBhbGwgdGhlIGRhdGEuCisgICAg
ICAgICAgICBkYXRhLT5zdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0
YShnX21lbWR1cChkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLCBj
b250ZW50TGVuZ3RoLCBnX2ZyZWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
V2UgZXhwZWN0IG1vcmUgZGF0YSBjaHVua3MgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAg
ICAgIGRhdGEtPnN0cmVhbSA9IHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1OZXcoY29udGVu
dExlbmd0aCk7CisgICAgICAgICAgICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0
YShXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpLCBk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgICAgICB9Cisg
ICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCBkYXRhLT5zdHJlYW0uZ2V0
KCksIGdfb2JqZWN0X3VucmVmKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChk
YXRhLT5yZXF1ZXN0RmFpbGVkKCkpIHsKKyAgICAgICAgLy8gUmVzb3VyY2VSZXF1ZXN0IGZhaWxl
ZCBvciBpdCB3YXMgY2FuY2VsbGVkLiBJdCBkb2Vzbid0IG1hdHRlciBoZXJlIHRoZSBlcnJvciBv
ciBpZiBpdCB3YXMgY2FuY2VsbGVkLAorICAgICAgICAvLyBiZWNhdXNlIHRoYXQncyBhbHJlYWR5
IGhhbmRsZWQgYnkgdGhlIHJlc291cmNlIGhhbmRsZSBjbGllbnQsIHdlIGp1c3Qgd2FudCB0byBu
b3RpZnkgdGhlIFVJIHByb2Nlc3MKKyAgICAgICAgLy8gdG8gc3RvcCByZWFkaW5nIGRhdGEgZnJv
bSB0aGUgdXNlciBpbnB1dCBzdHJlYW0uIElmIFVJIHByb2Nlc3MgYWxyZWFkeSBzZW50IGFsbCB0
aGUgZGF0YSB3ZSBzaW1wbHkKKyAgICAgICAgLy8gZmluaXNoIHNpbGVudGx5LgorICAgICAgICBp
ZiAoIXdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1GaW5pc2hlZChXRUJLSVRfU09VUF9SRVFV
RVNUX0lOUFVUX1NUUkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpKSkKKyAgICAgICAgICAgIG1fY2hp
bGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3Rv
cExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOworCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0YShXRUJLSVRfU09VUF9S
RVFVRVNUX0lOUFVUX1NUUkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpLCBkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFu
YWdlckltcGw6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBXZWJTb3Vw
UmVxdWVzdEFzeW5jRGF0YSogZGF0YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0KGN1c3RvbVBy
b3RvY29sSUQpOworICAgIEFTU0VSVChkYXRhKTsKKyAgICBBU1NFUlQoZGF0YS0+dGFzayk7CisK
KyAgICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFV
RVNUX0dFTkVSSUMoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KGRhdGEtPnRhc2spKTsKKyAgICB3
ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50TGVuZ3RoKHJlcXVlc3QsIHJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpID8gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkgOiAtMSk7CisgICAgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudFR5cGUocmVx
dWVzdCwgIXJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpID8gcmVzcG9uc2UubWltZVR5cGUo
KS51dGY4KCkuZGF0YSgpIDogMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1w
bDo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAgIEFT
U0VSVChtX2N1c3RvbVByb3RvY29sTWFwLmNvbnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKKyAg
ICBtX2N1c3RvbVByb3RvY29sTWFwLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKK30KKwordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpzZW5kKEdUYXNrKiB0YXNrKQoreworICAgIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQgPSBnZW5lcmF0ZUN1c3RvbVByb3RvY29sSUQoKTsKKyAg
ICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNU
X0dFTkVSSUMoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2spKTsKKyAgICBtX2N1c3RvbVBy
b3RvY29sTWFwLnNldChjdXN0b21Qcm90b2NvbElELCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhPih0YXNrLCByZXF1ZXN0KSk7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KFdlYkNvcmU6OnNvdXBVUklUb0tVUkwoc291cF9yZXF1
ZXN0X2dldF91cmkoU09VUF9SRVFVRVNUKHJlcXVlc3QpKSkpOworICAgIG1fY2hpbGRQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RhcnRMb2FkaW5n
KGN1c3RvbVByb3RvY29sSUQsIHJlc291cmNlUmVxdWVzdCksIDApOworfQorCitHSW5wdXRTdHJl
YW0qIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmZpbmlzaChHVGFzayogdGFzaywgR0Vycm9y
KiogZXJyb3IpCit7CisgICAgZ3BvaW50ZXIgaW5wdXRTdHJlYW0gPSBnX3Rhc2tfcHJvcGFnYXRl
X3BvaW50ZXIodGFzaywgZXJyb3IpOworICAgIHJldHVybiBpbnB1dFN0cmVhbSA/IEdfSU5QVVRf
U1RSRUFNKGlucHV0U3RyZWFtKSA6IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1h
bmFnZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWQ0NDI0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdl
ckltcGwuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbF9oCisjZGVmaW5lIEN1c3Rv
bVByb3RvY29sTWFuYWdlckltcGxfaAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0dU
YXNrIEdUYXNrOwordHlwZWRlZiBzdHJ1Y3QgX0dJbnB1dFN0cmVhbSBHSW5wdXRTdHJlYW07CisK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30gLy8gbmFtZXNwYWNlIElQ
QworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIENoaWxkUHJvY2VzczsKK3N0cnVjdCBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0
YTsKKworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCk7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbChDaGlsZFByb2Nlc3MqKTsKKyAgICB+Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbCgpOworCisgICAgdm9pZCByZWdpc3RlclNjaGVtZShjb25zdCBT
dHJpbmcmKTsKKyAgICBib29sIHN1cHBvcnRzU2NoZW1lKGNvbnN0IFN0cmluZyYpOworCisgICAg
dm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCk7CisKKyAgICAvLyBTb3VwUmVxdWVzdCBpbXBsZW1lbnRhdGlvbi4K
KyAgICB2b2lkIHNlbmQoR1Rhc2sqKTsKKyAgICBHSW5wdXRTdHJlYW0qIGZpbmlzaChHVGFzayos
IEdFcnJvcioqKTsKKworcHJpdmF0ZToKKyAgICBDaGlsZFByb2Nlc3MqIG1fY2hpbGRQcm9jZXNz
OworICAgIEdSZWZQdHI8R1B0ckFycmF5PiBtX3NjaGVtZXM7CisgICAgSGFzaE1hcDx1aW50NjRf
dCwgc3RkOjp1bmlxdWVfcHRyPFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPj4gbV9jdXN0b21Qcm90
b2NvbE1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCisKKyNlbmRpZiAvLyBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
U291cC5jcHAKaW5kZXggNDJiNTk0OC4uNmI3MWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKQEAgLTIzLDE1ICsyMywx
MCBAQAogI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogCiAjaW5jbHVkZSAiQ2hpbGRQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5oIgogI2luY2x1ZGUg
IkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgpAQCAtNDcsNiArNDIsNyBAQCBjb25zdCBjaGFyKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyKENoaWxkUHJvY2VzcyogY2hpbGRQcm9jZXNzKQogICAgIDogbV9j
aGlsZFByb2Nlc3MoY2hpbGRQcm9jZXNzKQogICAgICwgbV9tZXNzYWdlUXVldWUoV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIikpCisgICAg
LCBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsPihjaGls
ZFByb2Nlc3MpKQogewogfQogCkBAIC01NSwxOSArNTEsMzEgQEAgdm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
bikKICAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX21lc3NhZ2VR
dWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0
aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQordm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgIEFT
U0VSVChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlz
RW1wdHkoKSB8fCAhcGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpOworICAgIGlmIChwYXJh
bWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcykgeworICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cisg
ICAgICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVnaXN0
ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
c1tpXSk7CiB9CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotdm9pZCBDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzLnNpemUoKTsgKytpKQorICAgICAgICByZWdpc3RlclNjaGVtZShwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsKIH0KICNlbmRpZgog
Ci12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5n
JikKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faW1wbC0+cmVnaXN0
ZXJTY2hlbWUoc2NoZW1lKTsKIH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnVucmVn
aXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJikKQEAgLTc1LDMwICs4MywyOSBAQCB2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0
c1NjaGVtZShjb25zdCBTdHJpbmcmKQorYm9vbCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBv
cnRzU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2ltcGwtPnN1cHBvcnRzU2NoZW1lKHNj
aGVtZSk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9y
KHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikKK3ZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9pbXBsLT5kaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVy
cm9yKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2
NF90LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1faW1wbC0+ZGlkTG9hZERhdGEoY3VzdG9tUHJvdG9jb2xJRCwgZGF0YVJlZmVyZW5jZSk7CiB9
CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0
X3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCB1aW50MzJfdCkKK3ZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVpbnQz
Ml90KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pbXBsLT5kaWRSZWNlaXZlUmVz
cG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwgcmVzcG9uc2UpOwogfQogCi12b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCkKK3ZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2ltcGwtPmRpZEZpbmlzaExvYWRpbmcoY3Vz
dG9tUHJvdG9jb2xJRCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGVkNjAzODkuLjRkZTBlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTczLDcgKzczLDkgQEAgdm9p
ZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29sczsKICNlbmRpZgogI2lmIFVTRShTT1VQKQorI2lmICFFTkFCTEUoQ1VT
VE9NX1BST1RPQ09MUykKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkOworI2Vu
ZGlmCiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgZW5j
b2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU7CiAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKGNvb2tpZUFjY2VwdFBvbGljeSk7CkBAIC0xNjMsOCArMTY1LDEwIEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBXZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogI2lmIFVTRShTT1VQ
KQorI2lmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VQYXRoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
aW5kZXggNTJjYTI0ZS4uZTRmMmQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04Miw3ICs4Miw5IEBAIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxT
Y2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sczsKICNlbmRpZgogI2lmIFVTRShTT1VQ
KQorI2lmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxT
Y2hlbWVzUmVnaXN0ZXJlZDsKKyNlbmRpZgogICAgIFN0cmluZyBjb29raWVQZXJzaXN0ZW50U3Rv
cmFnZVBhdGg7CiAgICAgdWludDMyX3QgY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwogICAg
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCmluZGV4IGM4
YTk1NDQuLjAzMzMzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKQEAgLTMyLDkgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjsKIGNs
YXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OwogCisjaWYgRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCitXS19BRERfQVBJX01BUFBJTkcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlclJlZiwgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIpCisjZWxzZQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eSkKKyNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTViMWY4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK1dLVHlwZUlEIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQo
KQoreworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIHJldHVybiB0b0FQSShXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKK3ZvaWQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlclNldENsaWVudChXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBS
ZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudEJhc2UqIHdrQ2xpZW50KQoreworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQor
ICAgIHRvSW1wbChzb3VwUmVxdWVzdE1hbmFnZXJSZWYpLT5pbml0aWFsaXplQ2xpZW50KHdrQ2xp
ZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNvdXBSZXF1ZXN0TWFuYWdlclJlZik7Cisg
ICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNiMGVkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAorI2RlZmlu
ZSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KwordHlwZWRlZiB2b2lkICgqV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclN0YXJ0
TG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNv
dXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYg
cmVxdWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RvcExvYWRpbmdDYWxsYmFjaykoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwTWFuYWdlclJlZiwgdWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3Ry
dWN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlIHsKKyAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
c2lvbjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xpZW50SW5mbzsKK30gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJDbGllbnRWMCB7CisgICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudEJhc2UgICAgICAgICAgIGJhc2U7CisKKyAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2sgc3RhcnRMb2FkaW5nOworICAgIFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrICBzdG9wTG9h
ZGluZzsKK30gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwOworCitX
S19FWFBPUlQgV0tUeXBlSUQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5
cGVJRCgpOworCitXS19FWFBPUlQgdm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyU2V0Q2xpZW50KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKik7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggODY1N2QxYS4uOTYxNWE1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTQzLDEw
ICs0MywxMSBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgQ2hpbGRQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJDb250ZXh0OwogCiBjbGFzcyBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9j
ZXNzUHJveHkqKTsKKyAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGls
ZFByb2Nlc3NQcm94eSosIFdlYkNvbnRleHQmKTsKIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CkBAIC01
Niw2ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAg
IENoaWxkUHJvY2Vzc1Byb3h5KiBtX2NoaWxkUHJvY2Vzc1Byb3h5OworICAgIFdlYkNvbnRleHQm
IG1fd2ViQ29udGV4dDsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIEhhc2hNYXA8
dWludDY0X3QsIFJldGFpblB0cjxXS0N1c3RvbVByb3RvY29sTG9hZGVyPj4gTG9hZGVyTWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0KaW5kZXggMTk4MjJmOS4uN2QwZWZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
CkBAIC0xMjIsOCArMTIyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHkpCitDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9j
ZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBXZWJDb250ZXh0JiB3ZWJDb250ZXh0KQogICAg
IDogbV9jaGlsZFByb2Nlc3NQcm94eShjaGlsZFByb2Nlc3NQcm94eSkKKyAgICAsIG1fd2ViQ29u
dGV4dCh3ZWJDb250ZXh0KQogewogICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKICAg
ICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IDU3Yjk5ZTQuLmE2YjQzN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlTb3VwLmNwcApAQCAtMjUsMjYgKzI1LDI4IEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJv
eHkuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQ
cm94eSogY2hpbGRQcm9jZXNzUHJveHkpCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1By
b3h5LCBXZWJDb250ZXh0JiB3ZWJDb250ZXh0KQogICAgIDogbV9jaGlsZFByb2Nlc3NQcm94eShj
aGlsZFByb2Nlc3NQcm94eSkKKyAgICAsIG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQogewogICAg
IEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKICAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViQ29udGV4dC5z
dXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpLT5zdGFydExv
YWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90KQordm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViQ29udGV4dC5zdXBwbGVtZW50PFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpLT5zdG9wTG9hZGluZyhjdXN0b21Qcm90
b2NvbElEKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ3M2FkNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW5jbHVkZSAi
QVBJRGF0YS5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2Vi
Q29yZS9FcnJvcnNHdGsuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3Qg
Y2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KCkKK3sKKyAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyIjsK
K30KKworUGFzc1JlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250
ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIoY29udGV4dCkpOworfQorCitXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoV2ViQ29udGV4dCog
Y29udGV4dCkKKyAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KGNvbnRleHQpCit7Cit9CisKK1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjp+V2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIoKQoreworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCit7CisgICAgbV9jbGllbnQuaW5pdGlhbGl6
ZShjbGllbnQpOworfQorCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAordm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y29udGV4dERlc3Ryb3llZCgpCit7Cit9CisKK3Zv
aWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnByb2Nlc3NEaWRDbG9zZShX
ZWJQcm9jZXNzUHJveHkqKQoreworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCit7CisgICAgQVBJOjpPYmplY3Q6
OnJlZigpOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpk
ZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsK
K30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAo
IWNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dCgpLT5yZWdpc3RlclNj
aGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CisKKyAgICBBU1NFUlQoIW1fcmVnaXN0ZXJl
ZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSk7CisgICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBl
bmQoc2NoZW1lKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
cjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0
KCktPnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworCisgICAgQVNT
RVJUKG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKSk7CisgICAgbV9yZWdpc3Rl
cmVkU2NoZW1lcy5yZW1vdmUobV9yZWdpc3RlcmVkU2NoZW1lcy5maW5kKHNjaGVtZSkpOworfQor
Cit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIGlmICghbV9jbGllbnQuc3RhcnRMb2FkaW5nKHRoaXMsIGN1c3Rv
bVByb3RvY29sSUQsIHJlcXVlc3QpKQorICAgICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVBy
b3RvY29sSUQsIFdlYkNvcmU6OmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7Cit9CisKK3Zv
aWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN0b3BMb2FkaW5nKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQpCit7CisgICAgbV9jbGllbnQuc3RvcExvYWRpbmcodGhpcywg
Y3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoIWNv
bnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dCgpLT5uZXR3b3JraW5nUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpE
aWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwgcmVzcG9uc2UsIDApLCAwKTsKK30K
Kwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkTG9hZERhdGEo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQVBJOjpEYXRhKiBkYXRhKQoreworICAg
IGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3RvY29sSUQsIGRhdGEtPmRhdGFSZWZlcmVuY2Uo
KSksIDApOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpk
aWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb250ZXh0KCktPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3Vz
dG9tUHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250
ZXh0KCktPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDAp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDY4NTIzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyX2gKKyNkZWZpbmUgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJf
aAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJBUElPYmplY3Qu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIldlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgRGF0YTsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsK
K2NsYXNzIFJlc291cmNlUmVzcG9uc2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJDb250ZXh0OworCitjbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBjcmVh
dGUoV2ViQ29udGV4dCopOworICAgIHZpcnR1YWwgfldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKKworICAgIHZvaWQgcmVnaXN0
ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUp
OworCisgICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBzdG9wTG9hZGluZyh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKKyAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IEFQSTo6RGF0YSopOworICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOworCisgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RlcmVkU2NoZW1lczsgfQorCisgICAgdXNpbmcgQVBJOjpPYmplY3Q6
OnJlZjsKKyAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoV2ViQ29udGV4dCopOworCisgICAgLy8g
V2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KSBPVkVSUklERTsKKworICAgIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50IG1fY2xpZW50OworICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJP
VE9DT0xTKQorCisjZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZDQzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaCIK
KworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ym9vbCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2Fk
aW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFn
ZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGluZykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPEFQSTo6VVJMUmVxdWVzdD4gdXJsUmVxdWVz
dCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3QpOworICAgIG1fY2xpZW50LnN0YXJ0
TG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIpLCBjdXN0b21Qcm90b2NvbElELCB0b0FQ
SSh1cmxSZXF1ZXN0LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIHNv
dXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBpZiAo
bV9jbGllbnQuc3RvcExvYWRpbmcpCisgICAgICAgIG1fY2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJ
KHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3RvY29sSUQsIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTQzMzIxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI2RlZmluZSBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoQ1VT
VE9NX1BST1RPQ09MUykKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIK
KworbmFtZXNwYWNlIEFQSSB7CisKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA+IFZl
cnNpb25zOworfTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI7CisKK2NsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7CitwdWJsaWM6CisgICAgYm9vbCBzdGFydExvYWRpbmco
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BM
b2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiwgdWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3ZjI5ZmYyLi5l
OWI0ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTYsNyArNTYsNyBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQmIHdlYkNvbnRleHQpCiAgICAg
OiBtX3dlYkNvbnRleHQod2ViQ29udGV4dCkKICAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25S
ZXF1ZXN0cygwKQogI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotICAgICwgbV9jdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSh0aGlzKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSh0aGlzLCB3ZWJDb250ZXh0KQogI2VuZGlmCiB7CiAgICAgY29ubmVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGUxMDUxNWIuLmMzY2RiZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTkxLDggKzkxLDEyIEBA
CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQorI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQor
I2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjZWxzZQog
I2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKKyNlbmRpZgog
CiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
QEAgLTE3Miw4ICsxNzYsMTIgQEAgV2ViQ29udGV4dDo6V2ViQ29udGV4dChjb25zdCBTdHJpbmcm
IGluamVjdGVkQnVuZGxlUGF0aCkKICAgICBhZGRTdXBwbGVtZW50PFdlYkRhdGFiYXNlTWFuYWdl
clByb3h5PigpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCisjaWYgRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCisgICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlcj4oKTsKKyNlbHNlCiAgICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eT4oKTsKICNlbmRpZgorI2VuZGlmCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAg
IGFkZFN1cHBsZW1lbnQ8V2ViQmF0dGVyeU1hbmFnZXJQcm94eT4oKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3NDRjMWM1Li4zNGE3NjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTA2LDcg
KzEwNiw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKICNlbmRpZgogCi0jaWYg
VVNFKFNPVVApCisjaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKQEAgLTQzNTUs
NyArNDM1NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCwgVmVjdG9yPFN0cmluCiAKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCiAKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmlu
ZyB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKICAgICBtX3Byb2Nlc3MtPmNvbnRl
eHQoKS5zdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PigpLT5kaWRSZWNlaXZl
VVJJUmVxdWVzdCh1cmlTdHJpbmcsIHRoaXMsIHJlcXVlc3RJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZGIwMGFlNC4uZjgwMzc1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTEzMyw3ICsxMTMzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIG5vdGlmeVJldmVhbGVkU2VsZWN0aW9uKCk7CiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQogCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKICAgICB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJp
bmcsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmIzMWFjNS4uOTcyNTUx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0zMjEsOSArMzIxLDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVz
dWx0KQogCiAjaWYgVVNFKFNPVVApCisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAg
ICMgU291cCBjdXN0b20gVVJJIHJlcXVlc3QgbWVzc2FnZXMKICAgICBEaWRSZWNlaXZlVVJJUmVx
dWVzdChTdHJpbmcgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogI2VuZGlmCisjZW5k
aWYKIAogICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWUsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
aW5kZXggMTBmMWFiMC4uZDI0NmFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQ
cm9jZXNzUHJveHkoV2ViQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQogICAgICwgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKGZhbHNl
KQogI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eSh0aGlzKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0aGlz
LCBjb250ZXh0KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViQ29udGV4dEd0ay5jcHAKaW5kZXggZjgxMjY3MC4uOGFjZWYzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC0zMyw3ICszMyw2IEBA
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2lu
Y2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KQEAgLTQ0LDYgKzQzLDEyIEBACiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ci5oIgorI2Vsc2UKKyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2Vy
dmVyKCkKQEAgLTk5LDcgKzEwNCwxMSBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogICAgIH0K
IAogICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BS
T1RPQ09MUykKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3Rv
bVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7CisjZWxzZQogICAg
ICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkID0gc3VwcGxlbWVudDxXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eT4oKS0+cmVnaXN0ZXJlZFVSSVNjaGVtZXMoKTsKKyNlbmRpZgog
CiAgICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwg
cGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwogICAgICAgICBwYXJhbWV0
ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291cC5jcHAK
aW5kZXggMmM0ODU1Yi4uNDNlZTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3NvdXAvV2ViQ29udGV4dFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9zb3VwL1dlYkNvbnRleHRTb3VwLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb29raWVN
YW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0zOSw2ICs0MCw5IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlCiAgICAgcGFyYW1l
dGVycy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5
OwogICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAg
ICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KCk7CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgcGFyYW1ldGVycy51cmxTY2hl
bWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJv
dG9jb2xzKCk7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggMjkxYWI0YS4uNDcyZTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaCIKICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKFNP
VVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVz
dE1hbmFnZXIuaCIKICNlbmRpZgogCkBAIC0yMDAsNyArMjAwLDcgQEAgV2ViUHJvY2Vzczo6V2Vi
UHJvY2VzcygpCiAjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKICAgICBhZGRTdXBwbGVtZW50PFdl
Yk5ldHdvcmtJbmZvTWFuYWdlcj4oKTsKICNlbmRpZgotI2lmIFVTRShTT1VQKQorI2lmIFVTRShT
T1VQKSAmJiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgYWRkU3VwcGxlbWVudDxXZWJT
b3VwUmVxdWVzdE1hbmFnZXI+KCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKaW5k
ZXggNDE2MWJmNS4uNTVjNTAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKQEAgLTIwLDkgKzIw
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljLmgiCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKyNpZiAhRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlNvdXBSZXF1ZXN0TWFuYWdlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00OCwxMyArNTEsMjUgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2luaXQoV2ViS2l0U291cFJlcXVl
c3RHZW5lcmljKiByZXF1ZXN0KQogCiBzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVy
aWNTZW5kQXN5bmMoU291cFJlcXVlc3QqIHJlcXVlc3QsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFi
bGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogewor
I2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIEN1c3RvbVByb3RvY29sTWFuYWdlcklt
cGwqIGN1c3RvbVByb3RvY29sTWFuYWdlciA9IFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQ19H
RVRfQ0xBU1MocmVxdWVzdCktPmN1c3RvbVByb3RvY29sTWFuYWdlcjsKKyAgICBBU1NFUlQoY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyKTsKKyAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXItPnNlbmQoZ190
YXNrX25ldyhyZXF1ZXN0LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CisjZWxz
ZQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5h
Z2VyPigpLT5zZW5kKGdfdGFza19uZXcocmVxdWVzdCwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1
c2VyRGF0YSkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBHSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBS
ZXF1ZXN0R2VuZXJpY1NlbmRGaW5pc2goU291cFJlcXVlc3QqIHJlcXVlc3QsIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChn
X3Rhc2tfaXNfdmFsaWQocmVzdWx0LCByZXF1ZXN0KSwgMCk7CisjaWYgRU5BQkxFKENVU1RPTV9Q
Uk9UT0NPTFMpCisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCogY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDX0dFVF9DTEFTUyhyZXF1ZXN0KS0+
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyOworICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXIp
OworICAgIHJldHVybiBjdXN0b21Qcm90b2NvbE1hbmFnZXItPmZpbmlzaChHX1RBU0socmVzdWx0
KSwgZXJyb3IpOworI2Vsc2UKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc3VwcGxl
bWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXI+KCktPmZpbmlzaChHX1RBU0socmVzdWx0KSwgZXJy
b3IpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBnb2Zmc2V0IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y0dldENvbnRlbnRMZW5ndGgoU291cFJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgK
aW5kZXggNjIxMmNlNi4uNWM1ZDNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaApAQCAtMjMsNiArMjMs
MTAgQEAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgogCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VySW1wbC5oIgorI2VuZGlmCisKIEdfQkVHSU5fREVDTFMKIAogI2RlZmluZSBXRUJL
SVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQyAgICAgICAgICAgICh3ZWJraXRfc291cF9yZXF1
ZXN0X2dlbmVyaWNfZ2V0X3R5cGUoKSkKQEAgLTQ0LDYgKzQ4LDEwIEBAIHN0cnVjdCBfV2ViS2l0
U291cFJlcXVlc3RHZW5lcmljIHsKIAogc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWND
bGFzcyB7CiAgICAgU291cFJlcXVlc3RDbGFzcyBwYXJlbnQ7CisKKyNpZiBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKKyAgICBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwqIGN1c3Rv
bVByb3RvY29sTWFuYWdlcjsKKyNlbmRpZgogfTsKIAogR1R5cGUgd2Via2l0X3NvdXBfcmVxdWVz
dF9nZW5lcmljX2dldF90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NTb3VwLmNwcAppbmRleCAwMjhiMDVkLi4zMmIyMTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTM0
LDcgKzM0LDYgQEAKICNpbmNsdWRlICJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJD
b29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lbW9yeUNhY2hlLmg+CkBAIC00NSw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKKyNp
ZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5h
Z2VyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB1aW50NjRfdCBn
ZXRDYWNoZURpc2tGcmVlU2l6ZShTb3VwQ2FjaGUqIGNhY2hlKQpAQCAtMTYzLDggKzE2NiwxMCBA
QCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMu
aXNFbXB0eSgpKQogICAgICAgICBzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKHBhcmFtZXRl
cnMubGFuZ3VhZ2VzKTsKIAorI2lmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQuc2l6ZSgp
OyBpKyspCiAgICAgICAgIHN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5yZWdp
c3RlclVSSVNjaGVtZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkW2ldKTsKKyNlbmRp
ZgogCiAgICAgc2V0SWdub3JlVExTRXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzKTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221459</attachid>
            <date>2014-01-17 05:18:50 -0800</date>
            <delta_ts>2014-01-21 09:36:03 -0800</delta_ts>
            <desc>Try to fix mac build</desc>
            <filename>wk2-soup-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>66158</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyOGE0MWI2Li4zNGYyZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTEx
IEBACiAyMDE0LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbU09VUF0gSW1wbGVtZW50IENVU1RPTSBQUk9UT0NPTFMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTU4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgY2xhc3NlcyB0
byBpbXBsZW1lbnQgQ3VzdG9tUHJvdG9jb2xzIGZvciBzb3VwLiBUaGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gaXMgdGhlIHNhbWUsIGJ1dCB1c2luZyB0aGUgQ3VzdG9tUHJvdG9jb2wgQVBJIGFu
ZAorICAgICAgICBtZXNzYWdlcy4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gY2FuIGJlIHJl
bW92ZWQgb25jZSBhbGwgcG9ydHMKKyAgICAgICAgdXNpbmcgc291cCBzd2l0Y2ggdG8gdXNpbmcg
Q3VzdG9tUHJvdG9jb2xzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBuZXcgaW5j
bHVkZSBwYXRocy4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVz
IHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgbmV3IGZp
bGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNv
dXAuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAq
IFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdl
ckltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVDdXN0b21Qcm90b2Nv
bElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0Rh
dGE6On5XZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhOjpyZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291
cFJlcXVlc3RBc3luY0RhdGE6OnJlbGVhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6On5DdXN0b21Qcm90b2NvbE1hbmFn
ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6cmVn
aXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
OjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckltcGw6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsOjpkaWRMb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlckltcGw6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZmluaXNoKToKKyAgICAgICAgKiBTaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3Rv
bVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvbnRleHRTb3VwLmNwcC4KKyAgICAgICAgKFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50TmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6fldlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmluaXRpYWxpemVDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y29udGV4dERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlcmVkU2NoZW1lc0ZvckN1
c3RvbVByb3RvY29scyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyk6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
c291cC9XZWJDb250ZXh0U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcDoK
KyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk6CisgICAgICAgICh3
ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKKzIwMTQtMDEtMTYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtTT1VQXSBBZGQgc3R1YnMg
Zm9yIEN1c3RvbVByb3RvY29sIGNsYXNzZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjM0MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGNiYWNj
YmYuLjFiNDUzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDQsNiArMTA0LDcgQEAgbGli
d2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yayBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEgXApA
QCAtMTIyLDYgKzEyMyw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scyBcCisJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucyBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA5OWMxMThmLi40NGEwMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTQwMyw2ICs0MDMsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBcCisJU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VySW1wbC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyU291cC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBcCkBAIC01MjEsNiArNTIz
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS0NvbnRleHRTb3VwLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dlYktpdDJfQy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmggXApAQCAtODM3LDYgKzg0MSwxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcCBcCisJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9zb3VwL05ldHdvcmtQcm9j
ZXNzUHJveHlTb3VwLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDA0MDVmZWIu
LjI1OGE4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zNyw2ICszNyw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHAKIAorICAgIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuY3BwCiAgICAgU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKIAogICAgIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKQEAgLTc4
LDYgKzc5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nv
b2tpZU1hbmFnZXJTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVl
c3RNYW5hZ2VyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0yMzYs
NiArMjM4LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3Bw
CisgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIu
Y3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3Bw
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApA
QCAtMzk3LDYgKzQwMSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9ndGsiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKaW5kZXggNjE4OWU0Yy4uNjAwZjA4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNlU291cC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApAQCAtMzEsNSAr
MzEsNiBAQAogI2VuZGlmCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVl
c3RNYW5hZ2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJSZWY7CiAKICNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA1MmJlZjE0Li4zODE1NWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xNTgsNiArMTU4LDcgQEAgcHVibGljOgogICAgICAgICBW
aWV3LAogI2lmIFVTRShTT1VQKQogICAgICAgICBTb3VwUmVxdWVzdE1hbmFnZXIsCisgICAgICAg
IFNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLAogI2VuZGlmCiAjaWYgUExBVEZPUk0o
RUZMKQogICAgICAgICBQb3B1cE1lbnVJdGVtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlci5oCmluZGV4IDgzYmM5MWYuLmZkYTgxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50
LmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIApA
QCAtNTUsNiArNTUsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIENoaWxkUHJvY2VzczsKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlcklt
cGw7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEN1
c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyIHsKQEAgLTk1LDEyICs5NiwxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kpOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAot
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwotICAgIE11dGV4IG1fcmVn
aXN0ZXJlZFNjaGVtZXNNdXRleDsKICAgICBDaGlsZFByb2Nlc3MqIG1fY2hpbGRQcm9jZXNzOwog
ICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fbWVzc2FnZVF1ZXVlOwogCiAjaWYgUExBVEZPUk0oTUFD
KQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOworICAgIE11dGV4IG1f
cmVnaXN0ZXJlZFNjaGVtZXNNdXRleDsKKwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwg
UmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+PiBDdXN0b21Qcm90b2NvbE1hcDsKICAgICBDdXN0
b21Qcm90b2NvbE1hcCBtX2N1c3RvbVByb3RvY29sTWFwOwogICAgIE11dGV4IG1fY3VzdG9tUHJv
dG9jb2xNYXBNdXRleDsKQEAgLTEwOCw2ICsxMTAsOSBAQCBwcml2YXRlOgogICAgIC8vIFdLQ3Vz
dG9tUHJvdG9jb2wgb2JqZWN0cyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBtX2N1c3RvbVByb3Rv
Y29sTWFwIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KICAgICAvLyBXZSByZXR1cm4gYSBSZXRhaW5Q
dHIgaGVyZSBiZWNhdXNlIGl0IGlzIHVuc2FmZSB0byByZXR1cm4gYSByYXcgcG9pbnRlciBzaW5j
ZSB0aGUgb2JqZWN0IG1pZ2h0IGltbWVkaWF0ZWx5IGJlIGRlc3Ryb3llZCBmcm9tIGEgZGlmZmVy
ZW50IHRocmVhZC4KICAgICBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2NvbD4gcHJvdG9jb2xGb3JJ
RCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKKyNlbHNlCisgICAgLy8gRklYTUU6IE1vdmUg
bWFjIHNwZWNpZmljIGNvZGUgdG8gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC4KKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbD4gbV9pbXBsOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdl
ckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NjBkMmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNwcApAQCAtMCwwICsxLDIwOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5oIgorCisjaWYgRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
IldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Tb3VwVVJJVXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUN1c3RvbVByb3RvY29sSUQoKQoreworICAgIHN0YXRp
YyB1aW50NjRfdCB1bmlxdWVDdXN0b21Qcm90b2NvbElEID0gMDsKKyAgICByZXR1cm4gKyt1bmlx
dWVDdXN0b21Qcm90b2NvbElEOworfQorCitzdHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGEg
eworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdUYXNrKiB0YXNrLCBXZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWMqIHJlcXVlc3RHZW5lcmljKQorICAgICAgICA6IHRhc2sodGFzaykKKyAgICAg
ICAgLCByZXF1ZXN0KHJlcXVlc3RHZW5lcmljKQorICAgICAgICAsIGNhbmNlbGxhYmxlKGdfdGFz
a19nZXRfY2FuY2VsbGFibGUodGFzaykpCisgICAgeworICAgICAgICAvLyBJZiB0aGUgc3RydWN0
IGNvbnRhaW5zIGEgbnVsbCByZXF1ZXN0LCBpdCBpcyBiZWNhdXNlIHRoZSByZXF1ZXN0IGZhaWxl
ZC4KKyAgICAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChyZXF1ZXN0KSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7CisgICAgfQorCisgICAgfldlYlNv
dXBSZXF1ZXN0QXN5bmNEYXRhKCkKKyAgICB7CisgICAgICAgIGlmIChyZXF1ZXN0KQorICAgICAg
ICAgICAgZ19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRlcihHX09CSkVDVChyZXF1ZXN0KSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7CisgICAgfQorCisgICAgYm9vbCByZXF1
ZXN0RmFpbGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnX2NhbmNlbGxhYmxlX2lzX2NhbmNl
bGxlZChjYW5jZWxsYWJsZS5nZXQoKSkgfHwgIXJlcXVlc3Q7CisgICAgfQorCisgICAgR1JlZlB0
cjxHVGFzaz4gcmVsZWFzZVRhc2soKQorICAgIHsKKyAgICAgICAgR1Rhc2sqIHJldHVyblZhbHVl
ID0gdGFzazsKKyAgICAgICAgdGFzayA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdEdS
ZWYocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIEdUYXNrKiB0YXNrOworICAgIFdlYktpdFNv
dXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdDsKKyAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2Fu
Y2VsbGFibGU7CisgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IHN0cmVhbTsKK307CisKK0N1c3Rv
bVByb3RvY29sTWFuYWdlckltcGw6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwoQ2hpbGRQcm9j
ZXNzKiBjaGlsZFByb2Nlc3MpCisgICAgOiBtX2NoaWxkUHJvY2VzcyhjaGlsZFByb2Nlc3MpCisg
ICAgLCBtX3NjaGVtZXMoYWRvcHRHUmVmKGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyhn
X2ZyZWUpKSkKK3sKK30KKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6fkN1c3RvbVByb3Rv
Y29sTWFuYWdlckltcGwoKQoreworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6
OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmIChtX3NjaGVt
ZXMtPmxlbikKKyAgICAgICAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4X2Zhc3QobV9zY2hlbWVz
LmdldCgpLCBtX3NjaGVtZXMtPmxlbiAtIDEpOworICAgIGdfcHRyX2FycmF5X2FkZChtX3NjaGVt
ZXMuZ2V0KCksIGdfc3RyZHVwKHNjaGVtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgZ19wdHJfYXJy
YXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgbnVsbHB0cik7CisKKyAgICBTb3VwU2Vzc2lvbiogc2Vz
c2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpOworICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIGdlbmVyaWNSZXF1ZXN0Q2xhc3MgPSBz
dGF0aWNfY2FzdDxTb3VwUmVxdWVzdENsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQ
RV9TT1VQX1JFUVVFU1RfR0VORVJJQykpOworICAgIGdlbmVyaWNSZXF1ZXN0Q2xhc3MtPnNjaGVt
ZXMgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKio+KG1f
c2NoZW1lcy0+cGRhdGEpKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJLaXRTb3VwUmVxdWVzdEdlbmVy
aWNDbGFzcyo+KGdfdHlwZV9jbGFzc19yZWYoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVS
SUMpKS0+Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gdGhpczsKKyAgICBzb3VwX3Nlc3Npb25fYWRk
X2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJ
Qyk7Cit9CisKK2Jvb2wgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6c3VwcG9ydHNTY2hlbWUo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1N0cmluZyBjU2NoZW1lID0gc2NoZW1lLnV0ZjgoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVzLT5sZW47ICsraSkgeworICAg
ICAgICBpZiAoY1NjaGVtZSA9PSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19wdHJfYXJyYXlfaW5kZXgo
bV9zY2hlbWVzLmdldCgpLCBpKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSog
ZGF0YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0KGN1c3RvbVByb3RvY29sSUQpOworICAgIEFT
U0VSVChkYXRhKTsKKworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBkYXRhLT5yZWxlYXNlVGFz
aygpOworICAgIEFTU0VSVCh0YXNrLmdldCgpKTsKKyAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJv
cih0YXNrLmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5k
YXRhKCkpLAorICAgICAgICBlcnJvci5lcnJvckNvZGUoKSwgIiVzIiwgZXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKworICAgIG1fY3VzdG9tUHJvdG9jb2xNYXAu
cmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
ckltcGw6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAgICBXZWJTb3VwUmVxdWVzdEFzeW5j
RGF0YSogZGF0YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0KGN1c3RvbVByb3RvY29sSUQpOwor
ICAgIC8vIFRoZSBkYXRhIG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHJlcXVlc3Qg
bWFwIGlmIGEgcHJldmlvdXMgY2h1bmsgZmFpbGVkCisgICAgLy8gYW5kIGEgbmV3IG1lc3NhZ2Ug
d2FzIHNlbnQgYnkgdGhlIFVJIHByb2Nlc3MgYmVmb3JlIGJlaW5nIG5vdGlmaWVkIGFib3V0IHRo
ZSBmYWlsdXJlLgorICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFk
YXRhLT5zdHJlYW0pIHsKKyAgICAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGRhdGEtPnJlbGVh
c2VUYXNrKCk7CisgICAgICAgIEFTU0VSVCh0YXNrLmdldCgpKTsKKworICAgICAgICBnb2Zmc2V0
IHNvdXBDb250ZW50TGVuZ3RoID0gc291cF9yZXF1ZXN0X2dldF9jb250ZW50X2xlbmd0aChTT1VQ
X1JFUVVFU1QoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkpKSk7CisgICAgICAg
IHVpbnQ2NF90IGNvbnRlbnRMZW5ndGggPSBzb3VwQ29udGVudExlbmd0aCA9PSAtMSA/IDAgOiBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oc291cENvbnRlbnRMZW5ndGgpOworICAgICAgICBpZiAoIWRh
dGFSZWZlcmVuY2Uuc2l6ZSgpKSB7CisgICAgICAgICAgICAvLyBFbXB0eSByZXBseSwganVzdCBj
cmVhdGUgYW5kIGVtcHR5IEdNZW1vcnlJbnB1dFN0cmVhbS4KKyAgICAgICAgICAgIGRhdGEtPnN0
cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXcoKTsKKyAgICAgICAgfSBlbHNlIGlmIChk
YXRhUmVmZXJlbmNlLnNpemUoKSA9PSBjb250ZW50TGVuZ3RoKSB7CisgICAgICAgICAgICAvLyBX
ZSBkb24ndCBleHBlY3QgbW9yZSBkYXRhLCBzbyB3ZSBjYW4ganVzdCBjcmVhdGUgYSBHTWVtb3J5
SW5wdXRTdHJlYW0gd2l0aCBhbGwgdGhlIGRhdGEuCisgICAgICAgICAgICBkYXRhLT5zdHJlYW0g
PSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShnX21lbWR1cChkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLCBjb250ZW50TGVuZ3RoLCBnX2ZyZWUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gV2UgZXhwZWN0IG1vcmUgZGF0YSBj
aHVua3MgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgICAgIGRhdGEtPnN0cmVhbSA9IHdl
YmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1OZXcoY29udGVudExlbmd0aCk7CisgICAgICAgICAg
ICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0YShXRUJLSVRfU09VUF9SRVFVRVNU
X0lOUFVUX1NUUkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwg
ZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgICAgICB9CisgICAgICAgIGdfdGFza19yZXR1cm5f
cG9pbnRlcih0YXNrLmdldCgpLCBkYXRhLT5zdHJlYW0uZ2V0KCksIGdfb2JqZWN0X3VucmVmKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkYXRhLT5yZXF1ZXN0RmFpbGVkKCkp
IHsKKyAgICAgICAgLy8gUmVzb3VyY2VSZXF1ZXN0IGZhaWxlZCBvciBpdCB3YXMgY2FuY2VsbGVk
LiBJdCBkb2Vzbid0IG1hdHRlciBoZXJlIHRoZSBlcnJvciBvciBpZiBpdCB3YXMgY2FuY2VsbGVk
LAorICAgICAgICAvLyBiZWNhdXNlIHRoYXQncyBhbHJlYWR5IGhhbmRsZWQgYnkgdGhlIHJlc291
cmNlIGhhbmRsZSBjbGllbnQsIHdlIGp1c3Qgd2FudCB0byBub3RpZnkgdGhlIFVJIHByb2Nlc3MK
KyAgICAgICAgLy8gdG8gc3RvcCByZWFkaW5nIGRhdGEgZnJvbSB0aGUgdXNlciBpbnB1dCBzdHJl
YW0uIElmIFVJIHByb2Nlc3MgYWxyZWFkeSBzZW50IGFsbCB0aGUgZGF0YSB3ZSBzaW1wbHkKKyAg
ICAgICAgLy8gZmluaXNoIHNpbGVudGx5LgorICAgICAgICBpZiAoIXdlYmtpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW1GaW5pc2hlZChXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShkYXRh
LT5zdHJlYW0uZ2V0KCkpKSkKKyAgICAgICAgICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoY3VzdG9tUHJvdG9j
b2xJRCksIDApOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtQWRkRGF0YShXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShk
YXRhLT5zdHJlYW0uZ2V0KCkpLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5z
aXplKCkpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSogZGF0
YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0KGN1c3RvbVByb3RvY29sSUQpOworICAgIEFTU0VS
VChkYXRhKTsKKyAgICBBU1NFUlQoZGF0YS0+dGFzayk7CisKKyAgICBXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMoZ190YXNrX2dl
dF9zb3VyY2Vfb2JqZWN0KGRhdGEtPnRhc2spKTsKKyAgICB3ZWJraXRTb3VwUmVxdWVzdEdlbmVy
aWNTZXRDb250ZW50TGVuZ3RoKHJlcXVlc3QsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpID8gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgOiAtMSk7CisgICAgd2Via2l0
U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudFR5cGUocmVxdWVzdCwgIXJlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpID8gcmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpIDogMCk7
Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbDo6ZGlkRmluaXNoTG9hZGluZyh1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAgIEFTU0VSVChtX2N1c3RvbVByb3RvY29s
TWFwLmNvbnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKKyAgICBtX2N1c3RvbVByb3RvY29sTWFw
LnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJJbXBsOjpzZW5kKEdUYXNrKiB0YXNrKQoreworICAgIHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQgPSBnZW5lcmF0ZUN1c3RvbVByb3RvY29sSUQoKTsKKyAgICBXZWJLaXRTb3VwUmVxdWVzdEdl
bmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMoZ190YXNrX2dldF9z
b3VyY2Vfb2JqZWN0KHRhc2spKTsKKyAgICBtX2N1c3RvbVByb3RvY29sTWFwLnNldChjdXN0b21Q
cm90b2NvbElELCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPih0YXNr
LCByZXF1ZXN0KSk7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1
ZXN0KFdlYkNvcmU6OnNvdXBVUklUb0tVUkwoc291cF9yZXF1ZXN0X2dldF91cmkoU09VUF9SRVFV
RVNUKHJlcXVlc3QpKSkpOworICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHJl
c291cmNlUmVxdWVzdCksIDApOworfQorCitHSW5wdXRTdHJlYW0qIEN1c3RvbVByb3RvY29sTWFu
YWdlckltcGw6OmZpbmlzaChHVGFzayogdGFzaywgR0Vycm9yKiogZXJyb3IpCit7CisgICAgZ3Bv
aW50ZXIgaW5wdXRTdHJlYW0gPSBnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIodGFzaywgZXJyb3Ip
OworICAgIHJldHVybiBpbnB1dFN0cmVhbSA/IEdfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtKSA6
IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ0NDI0
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlckltcGwuaApAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbF9oCisjZGVmaW5lIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGxf
aAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0dUYXNrIEdUYXNrOwordHlwZWRlZiBz
dHJ1Y3QgX0dJbnB1dFN0cmVhbSBHSW5wdXRTdHJlYW07CisKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgRGF0YVJlZmVyZW5jZTsKK30gLy8gbmFtZXNwYWNlIElQQworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENoaWxkUHJv
Y2VzczsKK3N0cnVjdCBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YTsKKworY2xhc3MgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VySW1wbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VySW1wbCk7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VySW1wbChDaGlsZFByb2Nlc3MqKTsKKyAgICB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbCgp
OworCisgICAgdm9pZCByZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHN1
cHBvcnRzU2NoZW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBkaWRGYWlsV2l0aEVycm9y
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKKyAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CisK
KyAgICAvLyBTb3VwUmVxdWVzdCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIHNlbmQoR1Rhc2sq
KTsKKyAgICBHSW5wdXRTdHJlYW0qIGZpbmlzaChHVGFzayosIEdFcnJvcioqKTsKKworcHJpdmF0
ZToKKyAgICBDaGlsZFByb2Nlc3MqIG1fY2hpbGRQcm9jZXNzOworICAgIEdSZWZQdHI8R1B0ckFy
cmF5PiBtX3NjaGVtZXM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPFdl
YlNvdXBSZXF1ZXN0QXN5bmNEYXRhPj4gbV9jdXN0b21Qcm90b2NvbE1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisK
KyNlbmRpZiAvLyBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKaW5kZXggNDJiNTk0
OC4uNmI3MWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyU291cC5jcHAKQEAgLTIzLDE1ICsyMywxMCBAQAogI2lmIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQogCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCisjaW5jbHVkZSAiQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdl
ck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAt
NDcsNiArNDIsNyBAQCBjb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKENo
aWxkUHJvY2VzcyogY2hpbGRQcm9jZXNzKQogICAgIDogbV9jaGlsZFByb2Nlc3MoY2hpbGRQcm9j
ZXNzKQogICAgICwgbV9tZXNzYWdlUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5X
ZWJLaXQuQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIikpCisgICAgLCBtX2ltcGwoc3RkOjptYWtlX3Vu
aXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsPihjaGlsZFByb2Nlc3MpKQogewogfQogCkBA
IC01NSwxOSArNTEsMzEgQEAgdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemVD
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAgICBjb25uZWN0aW9uLT5h
ZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX21lc3NhZ2VRdWV1ZS5nZXQoKSwgdGhpcyk7CiB9
CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRp
YWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
KyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFyYW1ldGVy
cy51c2VzTmV0d29ya1Byb2Nlc3MpOworICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJv
Y2VzcykgeworICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVl
ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51
cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7CiB9CiAKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxp
emUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQordm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJh
bWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytp
KQorICAgICAgICByZWdpc3RlclNjaGVtZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsKIH0KICNlbmRpZgogCi12b2lkIEN1c3RvbVByb3RvY29s
TWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJikKK3ZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1faW1wbC0+cmVnaXN0ZXJTY2hlbWUoc2NoZW1lKTsKIH0K
IAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hlbWUoY29uc3QgU3Ry
aW5nJikKQEAgLTc1LDMwICs4MywyOSBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6dW5y
ZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LWJvb2wgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZShjb25zdCBTdHJpbmcm
KQorYm9vbCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX2ltcGwtPnN1cHBvcnRzU2NoZW1lKHNjaGVtZSk7CiB9CiAKLXZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWls
V2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pbXBsLT5k
aWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9yKTsKIH0KIAotdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90LCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVy
ZW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faW1wbC0+ZGlkTG9hZERhdGEo
Y3VzdG9tUHJvdG9jb2xJRCwgZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCB1aW50MzJfdCkKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpk
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVpbnQzMl90KQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgbV9pbXBsLT5kaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJ
RCwgcmVzcG9uc2UpOwogfQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCkKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBtX2ltcGwtPmRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGVkNjAzODkuLjRkZTBlOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTczLDcgKzczLDkgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sczsKICNl
bmRpZgogI2lmIFVTRShTT1VQKQorI2lmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBl
bmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBj
b29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0
ZW50U3RvcmFnZVR5cGU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNvb2tpZUFjY2VwdFBvbGlj
eSk7CkBAIC0xNjMsOCArMTY1LDEwIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQorI2lmICFFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5j
b29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNTJjYTI0ZS4uZTRmMmQ1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC04Miw3ICs4Miw5IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1
c3RvbVByb3RvY29sczsKICNlbmRpZgogI2lmIFVTRShTT1VQKQorI2lmICFFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZDsKKyNl
bmRpZgogICAgIFN0cmluZyBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgdWludDMy
X3QgY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwogICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgY29va2llQWNjZXB0UG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCmluZGV4IGM4YTk1NDQuLjAzMzMzMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3Vw
LmgKQEAgLTMyLDkgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjsKIGNsYXNzIFdlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5OwogCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCitXS19BRERfQVBJX01B
UFBJTkcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXIpCisjZWxzZQogV0tfQUREX0FQSV9NQVBQSU5HKFdLU291
cFJlcXVlc3RNYW5hZ2VyUmVmLCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSkKKyNlbmRpZgog
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTViMWY4MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQoKQoreworI2lmIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQorICAgIHJldHVybiB0b0FQSShXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcjo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisK
K3ZvaWQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVudChXS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29u
c3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIHdrQ2xpZW50
KQoreworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIHRvSW1wbChzb3VwUmVxdWVz
dE1hbmFnZXJSZWYpLT5pbml0aWFsaXplQ2xpZW50KHdrQ2xpZW50KTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHNvdXBSZXF1ZXN0TWFuYWdlclJlZik7CisgICAgVU5VU0VEX1BBUkFNKHdrQ2xp
ZW50KTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMGVkYzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAorI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiB2b2lkICgqV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclN0YXJ0TG9hZGluZ0NhbGxiYWNrKShXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyU3RvcExvYWRpbmdDYWxsYmFjaykoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlclJlZiBzb3VwTWFuYWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lk
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsK
K30gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U7CisKK3R5cGVk
ZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB7Cisg
ICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgICAgICAgICAg
IGJhc2U7CisKKyAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2Fk
aW5nQ2FsbGJhY2sgc3RhcnRMb2FkaW5nOworICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrICBzdG9wTG9hZGluZzsKK30gV0tTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwOworCitXS19FWFBPUlQgV0tUeXBlSUQgV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpOworCitXS19FWFBPUlQg
dm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisKKyNlbmRpZiAvKiBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgK
aW5kZXggODY1N2QxYS4uOTYxNWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTQzLDEwICs0MywxMSBAQCBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ2hpbGRQcm9jZXNzUHJv
eHk7CitjbGFzcyBXZWJDb250ZXh0OwogCiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqKTsKKyAgICBleHBs
aWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSosIFdlYkNv
bnRleHQmKTsKIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgc3RvcExvYWRp
bmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CkBAIC01Niw2ICs1Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIENoaWxkUHJvY2Vzc1Byb3h5KiBt
X2NoaWxkUHJvY2Vzc1Byb3h5OworICAgIFdlYkNvbnRleHQmIG1fd2ViQ29udGV4dDsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxX
S0N1c3RvbVByb3RvY29sTG9hZGVyPj4gTG9hZGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KaW5kZXgg
MTk4MjJmOS4uN2QwZWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCkBAIC0xMjIsOCArMTIyLDkgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nl
c3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHkpCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vz
c1Byb3h5LCBXZWJDb250ZXh0JiB3ZWJDb250ZXh0KQogICAgIDogbV9jaGlsZFByb2Nlc3NQcm94
eShjaGlsZFByb2Nlc3NQcm94eSkKKyAgICAsIG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQogewog
ICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKICAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmlu
ZGV4IDU3Yjk5ZTQuLmE2YjQzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjUsMjYg
KzI1LDI4IEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJDdXN0
b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJv
eHkpCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBXZWJDb250ZXh0JiB3ZWJD
b250ZXh0KQogICAgIDogbV9jaGlsZFByb2Nlc3NQcm94eShjaGlsZFByb2Nlc3NQcm94eSkKKyAg
ICAsIG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQogewogICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vz
c1Byb3h5KTsKICAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
ICp0aGlzKTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2Fk
aW5nKHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViQ29udGV4dC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpLT5zdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJ
RCwgcmVxdWVzdCk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BM
b2FkaW5nKHVpbnQ2NF90KQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExv
YWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIG1fd2ViQ29udGV4dC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyPigpLT5zdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ3M2FkNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKKworI2lmIEVO
QUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW5jbHVkZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUg
IkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgY2hhciogV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIldl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyIjsKK30KKworUGFzc1JlZlB0cjxXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoY29udGV4dCkp
OworfQorCitXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXIoV2ViQ29udGV4dCogY29udGV4dCkKKyAgICA6IFdlYkNv
bnRleHRTdXBwbGVtZW50KGNvbnRleHQpCit7Cit9CisKK1dlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyOjp+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoKQorewor
fQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXpl
Q2xpZW50KGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNl
KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCisvLyBX
ZWJDb250ZXh0U3VwcGxlbWVudAordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlcjo6Y29udGV4dERlc3Ryb3llZCgpCit7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQorewor
fQorCit2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpCit7CisgICAgQVBJOjpPYmplY3Q6OnJlZigpOworfQorCit2b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkZXJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkKK3sKKyAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKK30KKwordm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2Nv
bChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY29udGV4dCgpLT5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
KHNjaGVtZSk7CisKKyAgICBBU1NFUlQoIW1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2No
ZW1lKSk7CisgICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKK30KKwordm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmICghY29udGV4
dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPnVucmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworCisgICAgQVNTRVJUKG1fcmVnaXN0ZXJlZFNjaGVt
ZXMuY29udGFpbnMoc2NoZW1lKSk7CisgICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5yZW1vdmUobV9y
ZWdpc3RlcmVkU2NoZW1lcy5maW5kKHNjaGVtZSkpOworfQorCit2b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdGFydExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlm
ICghbV9jbGllbnQuc3RhcnRMb2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qp
KQorICAgICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7Cit9CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQp
Cit7CisgICAgbV9jbGllbnQuc3RvcExvYWRpbmcodGhpcywgY3VzdG9tUHJvdG9jb2xJRCk7Cit9
CisKK3ZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29udGV4dCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3Vz
dG9tUHJvdG9jb2xJRCwgcmVzcG9uc2UsIDApLCAwKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgQVBJOjpEYXRhKiBkYXRhKQoreworICAgIGlmICghY29udGV4dCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1
c3RvbVByb3RvY29sSUQsIGRhdGEtPmRhdGFSZWZlcmVuY2UoKSksIDApOworfQorCit2b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0
KCktPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3VzdG9tUHJvdG9jb2xJRCwgZXJyb3Ip
LCAwKTsKK30KKwordm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlk
RmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAgIGlmICghY29u
dGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPm5ldHdvcmtpbmdQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRp
ZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY4
NTIzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKKyNkZWZpbmUg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAorCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBBUEkgeworY2xhc3MgRGF0YTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVz
b3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9u
c2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZXh0OworCitjbGFz
cyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBjcmVhdGUoV2ViQ29udGV4dCopOworICAg
IHZpcnR1YWwgfldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICB2
b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudEJhc2UqKTsKKworICAgIHZvaWQgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90
b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgdm9pZCBzdGFydExv
YWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZExvYWRE
YXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IEFQSTo6RGF0YSopOworICAgIHZv
aWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQpOworCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlZ2lzdGVy
ZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVk
U2NoZW1lczsgfQorCisgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKKyAgICB1c2luZyBBUEk6
Ok9iamVjdDo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIoV2ViQ29udGV4dCopOworCisgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQK
KyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKworICAgIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IG1fY2xpZW50OworICAgIFZl
Y3RvcjxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjZW5kaWYgLy8g
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjgwZDQzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKKworI2lmIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgUmVmUHRyPEFQSTo6VVJMUmVxdWVzdD4gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6
Y3JlYXRlKHJlcXVlc3QpOworICAgIG1fY2xpZW50LnN0YXJ0TG9hZGluZyh0b0FQSShzb3VwUmVx
dWVzdE1hbmFnZXIpLCBjdXN0b21Qcm90b2NvbElELCB0b0FQSSh1cmxSZXF1ZXN0LmdldCgpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcp
CisgICAgICAgIG1fY2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciks
IGN1c3RvbVByb3RvY29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lMTQzMzIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2lu
Y2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKKworbmFtZXNwYWNlIEFQSSB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA+IFZlcnNpb25zOworfTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7CisK
K2NsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGlj
IEFQSTo6Q2xpZW50PFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNl
PiB7CitwdWJsaWM6CisgICAgYm9vbCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyKiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9D
T0xTKQorCisjZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3ZjI5ZmYyLi5lOWI0ZTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5KFdlYkNvbnRleHQmIHdlYkNvbnRleHQpCiAgICAgOiBtX3dlYkNvbnRleHQod2ViQ29u
dGV4dCkKICAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQogI2lmIEVOQUJM
RShDVVNUT01fUFJPVE9DT0xTKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0
aGlzKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0aGlzLCB3ZWJDb250ZXh0
KQogI2VuZGlmCiB7CiAgICAgY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCmluZGV4IGUxMDUxNWIuLmMzY2RiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTkxLDggKzkxLDEyIEBACiAjZW5kaWYKIAogI2lmIFVTRShT
T1VQKQorI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorI2luY2x1ZGUgIldlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjZWxzZQogI2luY2x1ZGUgIldlYlNvdXBSZXF1
ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTE3Miw4ICsxNzYsMTIgQEAg
V2ViQ29udGV4dDo6V2ViQ29udGV4dChjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCkK
ICAgICBhZGRTdXBwbGVtZW50PFdlYkRhdGFiYXNlTWFuYWdlclByb3h5PigpOwogI2VuZGlmCiAj
aWYgVVNFKFNPVVApCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgYWRkU3VwcGxl
bWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKTsKKyNlbHNlCiAgICAg
YWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKTsKICNlbmRpZgorI2Vu
ZGlmCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQmF0
dGVyeU1hbmFnZXJQcm94eT4oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA3NDRjMWM1Li4zNGE3NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBACiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnNHdGsuaCIKICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKFNP
VVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKQEAgLTQzNTUsNyArNDM1NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCwgVmVjdG9yPFN0cmluCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBVU0UoU09V
UCkKKyNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90
IHJlcXVlc3RJRCkKIHsKICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5PigpLT5kaWRSZWNlaXZlVVJJUmVxdWVzdCh1cmlTdHJpbmcs
IHRoaXMsIHJlcXVlc3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggZGIwMGFlNC4uZjgwMzc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTEzMyw3ICsxMTMzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeVJl
dmVhbGVkU2VsZWN0aW9uKCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCi0jaWYgVVNFKFNP
VVApCisjaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICB2b2lk
IGRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJ
RCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggMmIzMWFjNS4uOTcyNTUxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjEsOSArMzIx
LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgTG9hZFJlY2VudFNlYXJjaGVz
KFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVzdWx0KQogCiAjaWYgVVNFKFNPVVAp
CisjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgICMgU291cCBjdXN0b20gVVJJIHJl
cXVlc3QgbWVzc2FnZXMKICAgICBEaWRSZWNlaXZlVVJJUmVxdWVzdChTdHJpbmcgdXJpU3RyaW5n
LCB1aW50NjRfdCByZXF1ZXN0SUQpOwogI2VuZGlmCisjZW5kaWYKIAogICAgIFNhdmVQREZUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyBvcmln
aW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMTBmMWFiMC4uZDI0NmFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTg5LDcgKzg5LDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViQ29udGV4
dCYgY29udGV4dCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tYXlIYXZlVW5p
dmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKGZhbHNlKQogI2lmIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0aGlzKQorICAg
ICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0aGlzLCBjb250ZXh0KQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGZhbHNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKaW5k
ZXggZjgxMjY3MC4uOGFjZWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbnRleHRHdGsuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVn
aXN0cnkuaD4KQEAgLTQ0LDYgKzQzLDEyIEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyNpbmNsdWRl
ICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgorI2Vsc2UKKyNpbmNsdWRl
ICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2VydmVyKCkKQEAgLTk5LDcgKzEwNCwx
MSBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogICAgIH0KIAogICAgIGlmICghdXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICAgICAgcGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1l
bnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hl
bWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7CisjZWxzZQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkID0gc3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4o
KS0+cmVnaXN0ZXJlZFVSSVNjaGVtZXMoKTsKKyNlbmRpZgogCiAgICAgICAgIHN1cHBsZW1lbnQ8
V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJh
bWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwgcGFyYW1ldGVycy5jb29raWVQZXJz
aXN0ZW50U3RvcmFnZVR5cGUpOwogICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGlj
eSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJDb250ZXh0U291cC5jcHAKaW5kZXggMmM0ODU1Yi4uNDNlZTY3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViQ29udGV4dFNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvbnRleHRTb3Vw
LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSw2ICs0MCw5IEBA
IHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlCiAgICAgcGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xp
Y3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OwogICAgIHBhcmFtZXRlcnMuaWdu
b3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFn
ZXMgPSBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3Rv
bVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7CisjZW5kaWYKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjkxYWI0
YS4uNDcyZTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0xMjcsNyArMTI3LDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIK
ICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCIKICNlbmRpZgog
CkBAIC0yMDAsNyArMjAwLDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgRU5BQkxF
KE5FVFdPUktfSU5GTykKICAgICBhZGRTdXBwbGVtZW50PFdlYk5ldHdvcmtJbmZvTWFuYWdlcj4o
KTsKICNlbmRpZgotI2lmIFVTRShTT1VQKQorI2lmIFVTRShTT1VQKSAmJiAhRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCiAgICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXI+KCk7
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKaW5kZXggNDE2MWJmNS4uNTVjNTAzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktp
dFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKQEAgLTIwLDkgKzIwLDEyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCiAKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKyNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogCkBAIC00OCwxMyArNTEsMjUgQEAgc3RhdGljIHZvaWQgd2Via2l0X3NvdXBf
cmVxdWVzdF9nZW5lcmljX2luaXQoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0KQog
CiBzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kQXN5bmMoU291cFJlcXVl
c3QqIHJlcXVlc3QsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJh
Y2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogeworI2lmIEVOQUJMRShDVVNUT01fUFJP
VE9DT0xTKQorICAgIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGwqIGN1c3RvbVByb3RvY29sTWFu
YWdlciA9IFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQ19HRVRfQ0xBU1MocmVxdWVzdCktPmN1
c3RvbVByb3RvY29sTWFuYWdlcjsKKyAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsK
KyAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXItPnNlbmQoZ190YXNrX25ldyhyZXF1ZXN0LCBjYW5j
ZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CisjZWxzZQogICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5zZW5kKGdfdGFza19u
ZXcocmVxdWVzdCwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOworI2VuZGlmCiB9
CiAKIHN0YXRpYyBHSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRGaW5p
c2goU291cFJlcXVlc3QqIHJlcXVlc3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBl
cnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0
LCByZXF1ZXN0KSwgMCk7CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbCogY3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gV0VCS0lUX1NPVVBf
UkVRVUVTVF9HRU5FUklDX0dFVF9DTEFTUyhyZXF1ZXN0KS0+Y3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OworICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXIpOworICAgIHJldHVybiBjdXN0b21Q
cm90b2NvbE1hbmFnZXItPmZpbmlzaChHX1RBU0socmVzdWx0KSwgZXJyb3IpOworI2Vsc2UKICAg
ICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1h
bmFnZXI+KCktPmZpbmlzaChHX1RBU0socmVzdWx0KSwgZXJyb3IpOworI2VuZGlmCiB9CiAKIHN0
YXRpYyBnb2Zmc2V0IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldENvbnRlbnRMZW5ndGgoU291
cFJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgKaW5kZXggNjIxMmNlNi4uNWM1ZDNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJL
aXRTb3VwUmVxdWVzdEdlbmVyaWMuaApAQCAtMjMsNiArMjMsMTAgQEAKICNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5oIgorI2Vu
ZGlmCisKIEdfQkVHSU5fREVDTFMKIAogI2RlZmluZSBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1Rf
R0VORVJJQyAgICAgICAgICAgICh3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWNfZ2V0X3R5cGUo
KSkKQEAgLTQ0LDYgKzQ4LDEwIEBAIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljIHsK
IAogc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzcyB7CiAgICAgU291cFJlcXVl
c3RDbGFzcyBwYXJlbnQ7CisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwqIGN1c3RvbVByb3RvY29sTWFuYWdlcjsKKyNl
bmRpZgogfTsKIAogR1R5cGUgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2dldF90eXBlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNw
cAppbmRleCAwMjhiMDVkLi4zMmIyMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRl
ICJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgIldlYlNvdXBS
ZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+
CkBAIC00NSw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKKyNpZiAhRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB1aW50NjRfdCBnZXRDYWNoZURpc2tGcmVlU2l6ZShT
b3VwQ2FjaGUqIGNhY2hlKQpAQCAtMTYzLDggKzE2NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycwogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAgICBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKIAorI2lm
ICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQuc2l6ZSgpOyBpKyspCiAgICAgICAgIHN1cHBs
ZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5yZWdpc3RlclVSSVNjaGVtZShwYXJhbWV0
ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkW2ldKTsKKyNlbmRpZgogCiAgICAgc2V0SWdub3JlVExT
RXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzKTsKIAo=
</data>
<flag name="review"
          id="245380"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>