<?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>218788</bug_id>
          
          <creation_ts>2020-11-10 21:57:01 -0800</creation_ts>
          <short_desc>[Media in GPU Process] Update RemoteMediaPlayerMIMETypeCache to add the support for AVFoundationMSE media engine</short_desc>
          <delta_ts>2020-11-11 17:49:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1706354</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-10 21:57:01 -0800</bug_when>
    <thetext>Update RemoteMediaPlayerMIMETypeCache to add the support for AVFoundationMSE media engine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706356</commentid>
    <comment_count>1</comment_count>
      <attachid>413781</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-10 22:00:06 -0800</bug_when>
    <thetext>Created attachment 413781
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706519</commentid>
    <comment_count>2</comment_count>
      <attachid>413840</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-11 10:56:49 -0800</bug_when>
    <thetext>Created attachment 413840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706524</commentid>
    <comment_count>3</comment_count>
      <attachid>413840</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-11 11:02:35 -0800</bug_when>
    <thetext>Comment on attachment 413840
Patch

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

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:-125
&gt; -void RemoteMediaPlayerManager::initialize(const WebProcessCreationParameters&amp; parameters)

Eric, do we need to keep this function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706558</commentid>
    <comment_count>4</comment_count>
      <attachid>413840</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-11 12:02:28 -0800</bug_when>
    <thetext>Comment on attachment 413840
Patch

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

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.cpp:59
&gt; +        for (auto&amp; type : types)
&gt; +            m_supportedTypesCache.add(type);

You can call addSupportedTypes().

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:-125
&gt;&gt; -void RemoteMediaPlayerManager::initialize(const WebProcessCreationParameters&amp; parameters)
&gt; 
&gt; Eric, do we need to keep this function?

We definitely want to cache WebProcessCreationParameters.mediaMIMETypes so we don&apos;t have to ask AVFoundation for MIME types more than once in the life of the host application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706567</commentid>
    <comment_count>5</comment_count>
      <attachid>413840</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-11 12:18:14 -0800</bug_when>
    <thetext>Comment on attachment 413840
Patch

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

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.cpp:59
&gt;&gt; +            m_supportedTypesCache.add(type);
&gt; 
&gt; You can call addSupportedTypes().

Right! Will fix it.

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:-125
&gt;&gt;&gt; -void RemoteMediaPlayerManager::initialize(const WebProcessCreationParameters&amp; parameters)
&gt;&gt; 
&gt;&gt; Eric, do we need to keep this function?
&gt; 
&gt; We definitely want to cache WebProcessCreationParameters.mediaMIMETypes so we don&apos;t have to ask AVFoundation for MIME types more than once in the life of the host application.

I see! Does parameters.mediaMIMETypes includes supported MIME types of AVFoundation media engine only, or for all other media engines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706650</commentid>
    <comment_count>6</comment_count>
      <attachid>413879</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-11 15:51:52 -0800</bug_when>
    <thetext>Created attachment 413879
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706712</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-11 17:48:29 -0800</bug_when>
    <thetext>Committed r269711: &lt;https://trac.webkit.org/changeset/269711&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413879.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706713</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-11 17:49:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71307417&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413781</attachid>
            <date>2020-11-10 22:00:06 -0800</date>
            <delta_ts>2020-11-11 10:56:48 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-218788-20201110220005.patch</filename>
            <type>text/plain</type>
            <size>40634</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjExMWY3ZTBkODA5N2Rl
MmYzMzZhYzljZWRkMmIyMjNkZTI2M2VlZS4uMDc5MmM0NzgyYzRlNTA0ODZkNmFlZmQyNDk4MjRm
Nzg1MzVlYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTExLTEwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFJlbW90ZU1lZGlh
UGxheWVyTUlNRVR5cGVDYWNoZSB0byBhZGQgdGhlIHN1cHBvcnQgZm9yIEFWRm91bmRhdGlvbk1T
RSBtZWRpYSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODc4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
TWVkaWFFbmdpbmVzVmVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0
TUlNRVR5cGVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydGVk
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBvcnRlZFR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qzo6YWRkU291cmNlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6Y2FuU3dpdGNoVG9UeXBlKToKKwogMjAyMC0xMS0wNiAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFBpUCByZXR1cm4gdG8gZWxlbWVudCBmdWxsIHNj
cmVlbiBpcyBub3Qgc21vb3RoIG9uIHNvbWUgd2Vic2l0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTYzZGNmODY1
ODFmYjM1MWZmMTg5NTljZWIwZjQ1ZTk5NzM4MzdiOS4uMDc4YmM1M2FkYzE1NDhiMmJlMmU5NDYz
MmYyYzI5Mjc4ODM4NWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMS0xMCAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBSZW1vdGVN
ZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUgdG8gYWRkIHRoZSBzdXBwb3J0IGZvciBBVkZvdW5kYXRp
b25NU0UgbWVkaWEgZW5naW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTg3ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
c3VwcG9ydHNUeXBlQW5kQ29kZWNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OmNhbkRlY29kZUV4dGVuZGVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OmFkZFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0ZWRUeXBlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydHNU
eXBlQW5kQ29kZWNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlOjptaW1lQ2FjaGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpp
c1Vuc3VwcG9ydGVkQ29udGFpbmVyVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlRXh0ZW5kZWRUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpp
bml0aWFsaXplQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmluaXRpYWxpemUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5o
OgorCiAyMDIwLTExLTA2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGlQIHJldHVybiB0byBlbGVtZW50IGZ1bGwgc2NyZWVuIGlzIG5vdCBzbW9vdGggb24gc29t
ZSB3ZWJzaXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5oCmluZGV4IDAzMWY3MTk5YWM2Y2M4YzU5MjZiZTdjMjkxNGJjM2I0YmJjYTczZjcu
LjZiMTY2YjQyMDlmMzUzZjdjMjk1MWE5OTM1ZjM0OWYyYWUzMmJhZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKQEAgLTQyLDIxICs0
MiwyMiBAQCBwdWJsaWM6CiAgICAgTUlNRVR5cGVDYWNoZSgpID0gZGVmYXVsdDsKICAgICB2aXJ0
dWFsIH5NSU1FVHlwZUNhY2hlKCkgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBzdXBwb3J0c0NvbnRh
aW5lclR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIGNhbkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJik7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgaXNB
dmFpbGFibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdGF0aWNDb250YWluZXJUeXBlTGlzdCgpOwogICAgIHZp
cnR1YWwgYm9vbCBpc1Vuc3VwcG9ydGVkQ29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBjYW5EZWNvZGVUeXBlKGNv
bnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHN1cHBvcnRlZFR5cGVzKCk7CiAKLSAgICBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkVHlwZXMoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkU3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLQotICAgIHZpcnR1
YWwgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owor
ICAgIGJvb2wgc3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYpOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBhZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuRGVj
b2RlRXh0ZW5kZWRUeXBlKGNvbnN0IENvbnRlbnRUeXBlJik7CisKICAgICBib29sIHNob3VsZE92
ZXJyaWRlRXh0ZW5kZWRUeXBlKGNvbnN0IENvbnRlbnRUeXBlJik7CiAKICAgICBPcHRpb25hbDxI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9zdXBwb3J0ZWRUeXBl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAppbmRleCA3YWFhMWVmYjNhNWUzNTM2MTZiMjI5YmI1YTNmMjcwYWQ1Y2ExMGNmLi4zZWI5ZTFh
MDUxNjJkZmU0MmJlMzQ4NzJkNzExOTc2NGY5MGRkY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0yMzMsMTAgKzIzMyw5IEBA
IHN0YXRpYyB2b2lkIGJ1aWxkTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICBBU1NFUlQobWVkaWFF
bmdpbmVWZWN0b3JMb2NrLmlzTG9ja2VkKCkpOwogCiAjaWYgVVNFKEFWRk9VTkRBVElPTikKLQog
ICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uRW5hYmxlZCgp
KSB7Ci0KICAgICAgICAgYXV0byYgcmVnaXN0ZXJSZW1vdGVFbmdpbmUgPSByZWdpc3RlclJlbW90
ZVBsYXllckNhbGxiYWNrKCk7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKHJl
Z2lzdGVyUmVtb3RlRW5naW5lKQogICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRk
TWVkaWFFbmdpbmUsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZG
b3VuZGF0aW9uKTsKQEAgLTI0NSw3ICsyNDQsMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVu
Z2luZXNWZWN0b3IoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgICAg
ICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoYWRkTWVkaWFFbmdpbmUpOworICAgICAgICBpZiAocmVnaXN0ZXJSZW1vdGVFbmdpbmUpCisg
ICAgICAgICAgICByZWdpc3RlclJlbW90ZUVuZ2luZShhZGRNZWRpYUVuZ2luZSwgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKaW5kZXggMzNjMWRjYTg4MjQxMDIwZjRmZDFkZjYyZjU2ZjBhY2U3NjA4Zjhh
OC4uMDNiM2U0MWI2ZGY3OTFkYjdlZDkwMjk1OTFlNDAzMTgyOTYxOTNmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC03MTAsNyArNzEw
LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFJlZ2lzdGVy
UmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayYmKTsKIH07
CiAKLQogaW5saW5lIFN0cmluZyBNZWRpYVBsYXllcjo6YXVkaW9PdXRwdXREZXZpY2VJZCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPmF1ZGlvT3V0cHV0RGV2aWNl
SWQoKSA6IFN0cmluZyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGU4ZDEyNjA0OTFhZTllMmZmMDI0YTE2MTVkN2Q0MzY0
MDE1MDNjNTMuLjdlNDc4ZWQwMmMyMTJkN2YyZGI0ZGExNTkxZmZlMjY2MjdmMmE4NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBA
IC0xMTQsNyArMTE0LDcgQEAgYm9vbCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBw
b3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2UKICAgICBwYXJhbWV0ZXJz
LmlzTWVkaWFTb3VyY2UgPSB0cnVlOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBl
KG1pbWVUeXBlKTsKIAotICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIGJvb2wgQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHBhcmFtZXRl
cnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGU6OklzTm90U3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKSAhPSBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0
ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1J
TUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmgKaW5kZXggNzA4MjIwOWRlMzZlYTRlY2Jm
ZWEzODlmYWU2Yzk0ZDYyODg1MWM0Yy4uOTMxNzlmMjhkNDBjNzVjZDg0MjdjYjE0NmE4MjAzNDJi
MmI4YzVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNo
ZS5oCkBAIC0zNywxNSArMzcsMTQgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQVZBc3NldE1JTUVU
eXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMgTUlNRVR5cGVDYWNoZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIEFWQXNzZXRNSU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAotICAgIGJvb2wgaXNBdmFp
bGFibGUoKSBjb25zdCBmaW5hbDsKLQogICAgIHVzaW5nIENhY2hlTUlNRVR5cGVzQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47CiAgICAgdm9pZCBz
ZXRDYWNoZU1JTUVUeXBlc0NhbGxiYWNrKENhY2hlTUlNRVR5cGVzQ2FsbGJhY2smJiBjYWxsYmFj
aykgeyBtX2NhY2hlVHlwZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KIAorICAgIGJv
b2wgaXNBdmFpbGFibGUoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3RhdGljQ29udGFpbmVyVHlwZUxpc3QoKSBmaW5h
bDsKICAgICBib29sIGlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogCi0gICAgdm9pZCBhZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IGZpbmFsOworICAgIHZvaWQgYWRkU3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8QVZBc3NldE1JTUVUeXBl
Q2FjaGU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tCmluZGV4IDUwNjc5Y2RlYmYzZWFkM2M4Zjg5Nzg3YTk2MDBjYTM2OTBjNGVmM2YuLjNmNmU0
MzIwMTIzNDkzMzY0ZWJhOGQ2MWFhNjgzYTU2MmUzMzE1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0
aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0KQEAgLTk4LDcgKzk4LDYgQEAgYm9v
bCBhc3NldFRyYWNrTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyhBVkFzc2V0VHJhY2sg
KnRyYWNrLCBjb25zdCBWZWN0b3IKICAgICByZXR1cm4gY29kZWNzTWVldEhhcmR3YXJlRGVjb2Rl
UmVxdWlyZW1lbnRzKGNvZGVjcywgY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVEZWNvZGUp
OwogfQogCi0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgKaW5kZXggYjM1MDgyNTA0OTMzNzkx
OWI5ZmRmMjc3MDAzNWIzMWViYmM1ZTk3Mi4uNGUyM2UzZThhNzNiODQ0NDI0N2VmYTlkYmMxN2Ji
M2QzODU1ZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3Ry
ZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaApAQCAtMzYsMTEgKzM2LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7CiAKLWNsYXNzIEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMgTUlNRVR5cGVDYWNoZSB7CitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlIGZpbmFsIDogcHVi
bGljIE1JTUVUeXBlQ2FjaGUgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBB
VlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKKyAgICBzdGF0aWMg
QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZSYgc2luZ2xldG9uKCk7CiAKICAgICBib29s
IGlzQXZhaWxhYmxlKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlIGNhbkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZFR5cGVzKCkgZmluYWw7
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEFWU3RyZWFtRGF0YVBhcnNl
ck1JTUVUeXBlQ2FjaGU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FW
U3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KaW5kZXggZWRmOTI1NDFmNTFmZjA5Mzkx
MGYxOGEwZjA5NmQ0NGI0YzM5N2IyMS4uOTc3YTYzMWVhZWNiZDg3N2VmZGJiNGY3ODliNzJmYzg4
NWE0MWVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tCkBAIC01NCw2ICs1NCw0OCBAQCBBVlN0cmVhbURh
dGFQYXJzZXJNSU1FVHlwZUNhY2hlJiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKQogICAgIHJldHVybiBjYWNoZS5nZXQoKTsKIH0KIAorYm9vbCBBVlN0cmVhbURh
dGFQYXJzZXJNSU1FVHlwZUNhY2hlOjppc0F2YWlsYWJsZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQor
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2luZyBBVkZvdW5kYXRpb25MaWJyYXJ5SXNB
dmFpbGFibGUoKSBpbnN0ZWFkLCBidXQgZG9pbmcgc28gY2F1c2VzIHNvZnQtbGlua2luZworICAg
IC8vIHRvIHN1YnNlcXVlbnRseSBmYWlsIG9uIGNlcnRhaW4gc3ltYm9scy4gU2VlIDxyZGFyOi8v
cHJvYmxlbS80MjIyNDc4MD4gZm9yIG1vcmUgZGV0YWlscy4KKyAgICBpZiAoIVBBTDo6QVZGb3Vu
ZGF0aW9uTGlicmFyeSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIGlmICgh
QVZGb3VuZGF0aW9uTGlicmFyeUlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhdWRpb3Zpc3VhbE1JTUVUeXBlcyldOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworTWVkaWFQbGF5ZXJFbnVtczo6U3Vw
cG9ydHNUeXBlIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICBy
ZXR1cm4gTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlVHlwZSh0eXBlKTsKKworICAgIGlmIChBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKHR5cGUp
OworCisgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7Cit9CisKK0hhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBB
VlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0ZWRUeXBlcygpCit7CisgICAg
aWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBNSU1FVHlwZUNhY2hlOjpzdXBwb3J0
ZWRUeXBlcygpOworCisgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAg
ICByZXR1cm4gYXNzZXRDYWNoZS5zdXBwb3J0ZWRUeXBlcygpOworCisgICAgcmV0dXJuIE1JTUVU
eXBlQ2FjaGU6OnN1cHBvcnRlZFR5cGVzKCk7Cit9CisKIGJvb2wgQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlRXh0ZW5kZWRUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiB0
eXBlKQogewogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKQEAgLTc3LDI1
ICsxMTksNiBAQCBib29sIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29k
ZUV4dGVuZGVkVHlwZShjb25zdCBDb250ZW50VHlwZSYgdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjppc0F2YWlsYWJsZSgpIGNv
bnN0Ci17Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotI2lmIFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2luZyBBVkZv
dW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKSBpbnN0ZWFkLCBidXQgZG9pbmcgc28gY2F1c2Vz
IHNvZnQtbGlua2luZwotICAgIC8vIHRvIHN1YnNlcXVlbnRseSBmYWlsIG9uIGNlcnRhaW4gc3lt
Ym9scy4gU2VlIDxyZGFyOi8vcHJvYmxlbS80MjIyNDc4MD4gZm9yIG1vcmUgZGV0YWlscy4KLSAg
ICBpZiAoIVBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jZWxzZQotICAgIGlmICghQVZGb3VuZGF0aW9uTGlicmFyeUlzQXZhaWxhYmxlKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIFtQQUw6OmdldEFWU3RyZWFt
RGF0YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhdWRpb3Zpc3Vh
bE1JTUVUeXBlcyldOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUoSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNhY2hlKQogewogI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA2
YTZmZDcxODNhZTg5ZDM4NTgyYjYxMWRkNzAxNmE1M2FlOWMxZWE2Li5lNmI1MDhjYmZjMDgxYmEw
ZTFiNDFhZGVlNTc2NTBhNmMwZDI0MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0xMzIs
NiArMTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAgICAgY2xhc3Mg
RmFjdG9yeTsKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgIHN0YXRpYyB2b2lk
IGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CkBAIC0xMzksOCArMTQwLDYgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhj
b25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotCiAgICAgdm9pZCBzZXRCdWZmZXJpbmdQ
b2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkgZmluYWw7CiAKICAgICB2b2lkIHRy
YWNrc0NoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdiZjdh
NzY3MzMwYTY3MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uMDU3YmJmYjViNGUyMTc0ZTJhODU0
ZDI5YTA0MDVkNzkxY2JiNTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTc0LDcg
Kzc0LDcgQEAgcHVibGljOgogICAgIC8vIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0aG9kcwogICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsK
LSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJik7CiAKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CiAgICAgdm9pZCBhZGRBdWRpb1JlbmRlcmVyKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2YzI2
NTgwNTljNjExYWNjMWJiMGUuLjRmMjRiZDc1MTQ4NTIwZTJmNTU5NmNmNjJiOWQ2MzJmNDA1NDll
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTIwOSw3ICsyMDksNyBAQCBwcml2
YXRlOgogCiAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2Rl
Y3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3Qg
ZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBh
cmFtZXRlcnMpOwogICAgIH0KIH07CiAKQEAgLTIzNSwxOCArMjM1LDEwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgpCiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpCiB7Ci0gICAgYXV0
byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNo
ZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNoZS5pc0F2YWlsYWJs
ZSgpKSB7Ci0gICAgICAgIHR5cGVzID0gc3RyZWFtRGF0YVBhcnNlckNhY2hlLnN1cHBvcnRlZFR5
cGVzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiBhc3NldENhY2hlID0g
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlmIChhc3NldENhY2hlLmlz
QXZhaWxhYmxlKCkpCi0gICAgICAgIHR5cGVzID0gYXNzZXRDYWNoZS5zdXBwb3J0ZWRUeXBlcygp
OworICAgIHR5cGVzID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9u
KCkuc3VwcG9ydGVkVHlwZXMoKTsKIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlw
ZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIC8vIFRoaXMgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgbm9uLW1lZGlhLXNvdXJj
ZSBzb3VyY2VzLgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXgg
MjkzMjI3OTM5MTBlYTU3ZjE4MWM5MjAxN2QzY2YzNjU3NzUyMTAzMS4uZWY0NTNhZThkZGJlODE0
NThkMmMwYTVmZTdiZjkyN2FmZGE5NGNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC04Myw3ICs4Myw3IEBAIE1lZGlh
U291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNv
dXJjZUJ1ZmZlcihjb25zdCBDCiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1l
dGVycy50eXBlID0gY29udGVudFR5cGU7Ci0gICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQorICAgIGlmIChNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKSA9PSBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAgcmV0dXJu
IE5vdFN1cHBvcnRlZDsKIAogICAgIGF1dG8gcGFyc2VyID0gU291cmNlQnVmZmVyUGFyc2VyOjpj
cmVhdGUoY29udGVudFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMTI1ZTY0ODUxNjBiZTc3NzVjNTRhMTQ3ZGMz
MWYzYzM0MzdjNGQ3ZC4uZDJlZjZiZDYxOTZkYzU0MzE5NTc3YmExYTg2MWRkYWJhOWQxNjZhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCkBAIC0xOTQsMTUgKzE5NCw3IEBAIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlw
ZSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkCiAgICAg
ICAgIGV4dGVuZGVkVHlwZSA9IG1ha2VTdHJpbmcodHlwZS5jb250YWluZXJUeXBlKCksICI7IGNv
ZGVjcz1cIiIsIG91dHB1dENvZGVjcywgIlwiIik7CiAgICAgfQogCi0gICAgYXV0byYgc3RyZWFt
RGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xl
dG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAg
ICAgICByZXR1cm4gc3RyZWFtRGF0YVBhcnNlckNhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRU
eXBlKTsKLQotICAgIGF1dG8mIGFzc2V0Q2FjaGUgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2lu
Z2xldG9uKCk7Ci0gICAgaWYgKGFzc2V0Q2FjaGUuaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0
dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotCi0gICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgcmV0
dXJuIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29k
ZVR5cGUoZXh0ZW5kZWRUeXBlKTsKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDMzYTU5OWE2YjVlYWU3ODViYmIw
NTRhNzZlN2FiNWEwMGFhMzBiY2EuLjkxNDk2ZDI0MWZmYjYxMGQ5Njk0MDc3NTdkOWZjMjM5OGZi
NDY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCkBAIC0xMTk0LDcgKzExOTQsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjYW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRU
eXBlKQogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBw
YXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IGNv
bnRlbnRUeXBlOwotICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIq
IGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggM2RhYzJiZTMwOTU0
OThhZTkwYmY4ZjZiYjRlN2MzYTk4ZDA2ZDgwNy4uYzAyNTMzNWRjYTM4NTlkNmQ2NDEzNDYwMDYw
NjdiNmE5NWU0YzY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBvcnRl
ZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5nCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRpZmll
cik7CiAgICAgaWYgKCFlbmdpbmUpIHsKQEAgLTExMCwzMiArMTEwLDYgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1lZGlhUGxheWVy
RW51bXM6Ok1lZGkKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCi12b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7Ci0K
LSAgICBzd2l0Y2ggKGVuZ2luZUlkZW50aWZpZXIpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uOgotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgICAgICBzdXBwb3J0ZWQgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9u
KCkuY2FuRGVjb2RlVHlwZShtaW1lVHlwZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlOjpJc1N1cHBvcnRlZDsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgIGNhc2UgTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0U6Ci0g
ICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRh
dGlvbk1lZGlhU3RyZWFtOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyOjpBVkZvdW5kYXRpb25DRjoKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXJNU0U6Ci0gICAgY2FzZSBNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5jaDoKLSAgICBjYXNlIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0aW9uOgot
ICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNb2NrTVNF
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoc3VwcG9ydGVkKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZShNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYg
cGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGVuZ2luZSA9IE1l
ZGlhUGxheWVyOjptZWRpYUVuZ2luZShlbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmgKaW5kZXggMWY3ZGNjOGZhN2I1OTg5YTU2NmExYTU0Y2RlOTZmYjkyMjk5MDUy
Yy4uYjViMTMzNjE0NjliN2RkYjNjNDEyYjUzNDQ2NjU5M2IyMWJhZGM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmgKQEAgLTgxLDcgKzgxLDYgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRp
YSBwbGF5ZXIgZmFjdG9yeQogICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzVHlwZUFuZENvZGVj
cyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlKT4mJik7Ci0gICAgdm9p
ZCBjYW5EZWNvZGVFeHRlbmRlZFR5cGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG9yaWdpbnNJbk1lZGlh
Q2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
JiwgV2FsbFRpbWUpOwogICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYm
LCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkMzNkZGEzOWYwNWY1MzY5ZmFj
ZTExYWNhZTE4ZWJiYTA4Yjg2MWU0Li44ZmFmMzg1YmNiMTdiYjZjYzViNjQ5MmIzMGU0MTkwMWM0
OTI3M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yOSw3ICsyOSw2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgR2V0U3VwcG9ydGVkVHlwZXMoZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVF
bmdpbmVJZGVudGlmaWVyKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzCiAg
ICAgU3VwcG9ydHNUeXBlQW5kQ29kZWNzKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgdHlwZSkgLT4gKGVudW06
dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgc3VwcG9ydCkg
U3luY2hyb25vdXMKLSAgICBDYW5EZWNvZGVFeHRlbmRlZFR5cGUoZW51bTp1aW50OF90IFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyLCBTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91
cwogICAgIE9yaWdpbnNJbk1lZGlhQ2FjaGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBT
dHJpbmcgcGF0aCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
bnMpIFN5bmNocm9ub3VzCiAgICAgQ2xlYXJNZWRpYUNhY2hlKGVudW06dWludDhfdCBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgU3RyaW5nIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiAgICAgQ2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBw
YXRoLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5kZXggZTI4ZjFlMmNmM2U3NzdlM2NmNTI3M2VkOGZm
YzFjNWFhOTAxMzJiOC4uODY1YmRlZWJlNjg1NzlmYTA0NGIwM2Q5NWJlOTkzMzNkY2E3OTYzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVl
dWUuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5jcHAKaW5kZXggMWM0OGU1MDY5YzNjODA1YTQ1NjM3NGRlOGRkYWFiZTE1ODgxNDdhZC4uMGE3
YzY4YWU1MTBkZTQzZTgyNWM0MjRjN2QyZjQ4ZTNjOGNjMTNhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTUlNRVR5cGVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAKaW5kZXggZmU5NDU1YmM2NzI1Zjgz
YTkwY2U0YmZhYWFhMWY5ZDFiMDY5ZmU4MS4uNzYwOTIzNDc0ZTE4OGExMDIwYmFmMTliOWY3NWRj
NmYyNjYzNmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcApA
QCAtMjgsMTIgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJp
dmF0ZS5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0
TUlNRVR5cGVDYWNoZS5oPgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDQsOTQgKzQxLDQ2
IEBAIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlKFJlbW90ZU1lZGlhUGxheWVyCiB7CiB9CiAKLU1JTUVUeXBlQ2FjaGUqIFJlbW90
ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6bWltZUNhY2hlKCkgY29uc3QKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjphZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgbmV3VHlwZXMpCiB7Ci0gICAgc3dpdGNoIChtX2VuZ2luZUlkZW50aWZpZXIpIHsK
LSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3Vu
ZGF0aW9uOgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICByZXR1cm4gJkFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgIGNh
c2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25N
U0U6Ci0gICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFW
Rm91bmRhdGlvbk1lZGlhU3RyZWFtOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25DRjoKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyOgotICAgIGNhc2UgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXJNU0U6Ci0gICAgY2FzZSBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5jaDoKLSAgICBj
YXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0
aW9uOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpN
b2NrTVNFOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0eXBlIDogbmV3VHlw
ZXMpCisgICAgICAgIG1fc3VwcG9ydGVkVHlwZXNDYWNoZS5hZGQodHlwZSk7CiB9CiAKLWNvbnN0
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBSZW1vdGVNZWRpYVBs
YXllck1JTUVUeXBlQ2FjaGU6OnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCkKK0hhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBl
Q2FjaGU6OnN1cHBvcnRlZFR5cGVzKCkKIHsKLSAgICBpZiAoYXV0byogbWltZUNhY2hlID0gdGhp
cy0+bWltZUNhY2hlKCkpCi0gICAgICAgIHJldHVybiBtaW1lQ2FjaGUtPnN0YXRpY0NvbnRhaW5l
clR5cGVMaXN0KCk7CisgICAgaWYgKG1faW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiBtX3N1
cHBvcnRlZFR5cGVzQ2FjaGU7CiAKLSAgICByZXR1cm4gTUlNRVR5cGVDYWNoZTo6c3RhdGljQ29u
dGFpbmVyVHlwZUxpc3QoKTsKLX0KLQotYm9vbCBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2Fj
aGU6OmlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKLXsKLSAg
ICBpZiAoYXV0byogbWltZUNhY2hlID0gdGhpcy0+bWltZUNhY2hlKCkpCi0gICAgICAgIHJldHVy
biBtaW1lQ2FjaGUtPmlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKHR5cGUpOworICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzOworICAgIGlmIChtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhtX2VuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0
eXBlcyksIDApKSB7CisgICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIG1fc3VwcG9ydGVkVHlwZXNDYWNoZS5h
ZGQodHlwZSk7CisgICAgfQogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3N1cHBv
cnRlZFR5cGVzQ2FjaGU7CiB9CiAKLWJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hl
OjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIHR5cGUp
Ci17Ci0gICAgYm9vbCByZXN1bHQ7Ci0gICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5cGUobV9lbmdpbmVJZGVudGlmaWVyLCB0
eXBlLnJhdygpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5E
ZWNvZGVFeHRlbmRlZFR5cGU6OlJlcGx5KHJlc3VsdCksIDApKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1XZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0c1R5
cGVBbmRDb2RlY3MoY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYg
cGFyYW1ldGVycykKK01lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBSZW1vdGVNZWRpYVBs
YXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmIChwYXJhbWV0ZXJzLnR5
cGUucmF3KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3Vw
cG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKIAotICAgIGlmIChwYXJhbWV0ZXJzLmNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBj
YW5EZWNvZGVUeXBlKHBhcmFtZXRlcnMudHlwZS5yYXcoKSk7Ci0KICAgICBpZiAobV9zdXBwb3J0
c1R5cGVBbmRDb2RlY3NDYWNoZSkgewogICAgICAgICBhdXRvIGl0ID0gbV9zdXBwb3J0c1R5cGVB
bmRDb2RlY3NDYWNoZS0+ZmluZChwYXJhbWV0ZXJzLnR5cGUucmF3KCkpOwogICAgICAgICBpZiAo
aXQgIT0gbV9zdXBwb3J0c1R5cGVBbmRDb2RlY3NDYWNoZS0+ZW5kKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gaXQtPnZhbHVlOwogICAgIH0KIAotICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
cmVzdWx0OwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
U3VwcG9ydHNUeXBlQW5kQ29kZWNzKG1fZW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVycyksIE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlQW5kQ29k
ZWNzOjpSZXBseShyZXN1bHQpLCAwKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotCiAgICAgaWYgKCFtX3N1cHBvcnRzVHlwZUFuZENv
ZGVjc0NhY2hlKQotICAgICAgICBtX3N1cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hlID0gSGFzaE1h
cDxTdHJpbmcsIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSwgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPigpOwotICAgIG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGUtPmFkZChwYXJh
bWV0ZXJzLnR5cGUucmF3KCksIHJlc3VsdCk7CisgICAgICAgIG1fc3VwcG9ydHNUeXBlQW5kQ29k
ZWNzQ2FjaGUgPSBIYXNoTWFwPFN0cmluZywgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsgfTsKIAotICAgIHJldHVybiByZXN1bHQ7Ci19
CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIHJlc3VsdCA9IE1lZGlhUGxheWVy
RW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgaWYgKG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZUFuZENvZGVjcyhtX2VuZ2lu
ZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlN1cHBvcnRzVHlwZUFuZENvZGVjczo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAg
ICAgIG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGUtPmFkZChwYXJhbWV0ZXJzLnR5cGUucmF3
KCksIHJlc3VsdCk7CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppbml0
aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNh
Y2hlKQotewotICAgIGF1dG8qIG1pbWVDYWNoZSA9IHRoaXMtPm1pbWVDYWNoZSgpOwotICAgIGlm
ICghaXNFbXB0eSgpIHx8ICFtaW1lQ2FjaGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzOwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMobV9lbmdpbmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlczo6UmVwbHko
dHlwZXMpLCAwKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlw
ZXMpCi0gICAgICAgIGNhY2hlLmFkZCh0eXBlKTsKLQotICAgIG1pbWVDYWNoZS0+YWRkU3VwcG9y
dGVkVHlwZXModHlwZXMpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5oCmluZGV4IGYyMTgwOThmMWYwZGJhMmUzZWE3OTRjMTAw
YzNlNzEwMDkwZTM0NmMuLjNmYmVjMGY2ZTg1MjAxMGI0MTdmMTY1N2VhNTUwM2YwZGYzYzJhNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaApAQCAtMjcsOSArMjcsMTEg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVDYWNoZS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVBsYXllckVudW1zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnM7CkBAIC0zNywyMyArMzksMjQgQEAgc3RydWN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVN
ZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TUlNRVR5cGVD
YWNoZSB7CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI7CisKK2NsYXNzIFJlbW90ZU1l
ZGlhUGxheWVyTUlNRVR5cGVDYWNoZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlKFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
Zmllcik7CisgICAgflJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZSgpID0gZGVmYXVsdDsK
IAorICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0
ZWRUeXBlcygpOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYpOworICAgIHZvaWQgYWRkU3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgc3RhdGljQ29udGFpbmVyVHlwZUxpc3QoKSBmaW5hbDsKLSAgICBib29s
IGlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZv
aWQgaW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JikgZmluYWw7Ci0gICAgYm9vbCBjYW5EZWNvZGVFeHRlbmRlZFR5cGUoY29uc3QgV2ViQ29y
ZTo6Q29udGVudFR5cGUmKSBmaW5hbDsKLQotICAgIE1JTUVUeXBlQ2FjaGUqIG1pbWVDYWNoZSgp
IGNvbnN0OwotCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtX21hbmFnZXI7CiAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5l
SWRlbnRpZmllcjsKICAgICBPcHRpb25hbDxIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX3N1
cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hlOworICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IG1fc3VwcG9ydGVkVHlwZXNDYWNoZTsKKyAgICBib29sIG1faW5pdGlh
bGl6ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAKaW5kZXggMWQ2Y2RkZWI3MzY1OTM3ZWMwZTM3YzA3NDRiM2Y0Zjgw
YTg5NjkxNC4uNzEyNjMwODcyMjZiMzZmMzE0ZmVmMWVlYWVkZGJmYmY4MDQ4YzMwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMzYsNiArMzYsOSBAQAogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rp
b25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMjIsMjAgKzEyNSw2IEBAIFJlbW90
ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZSYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0eXBl
Q2FjaGUoTWVkaWFQbGF5ZXJFCiAgICAgcmV0dXJuICpjYWNoZVB0cjsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7
Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAocGFyYW1ldGVycy5tZWRpYU1JTUVUeXBl
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGNhY2hlID0gdHlwZUNh
Y2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9u
KTsKLSAgICBpZiAoY2FjaGUuaXNFbXB0eSgpKQotICAgICAgICBjYWNoZS5hZGRTdXBwb3J0ZWRU
eXBlcyhwYXJhbWV0ZXJzLm1lZGlhTUlNRVR5cGVzKTsKLSNlbmRpZgotfQotCiBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKQog
ewogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uIHByb3h5Q29uZmlndXJh
dGlvbjsKQEAgLTE5NSwyNSArMTg0LDkgQEAgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKGNvbnN0IE1lZGlhUGwKICAgICBy
ZXR1cm4geyB9OwogfQogCi0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBw
b3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3Rl
RW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHJlc3VsdCkKIHsKLSAgICBhdXRvJiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyKTsKLSAgICBpZiAoIWNhY2hlLmlzRW1wdHkoKSkgewotICAgICAgICByZXN1bHQg
PSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPigpOwotICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBjYWNoZS5zdXBwb3J0ZWRUeXBlcygpKQotICAgICAgICAgICAgcmVz
dWx0LmFkZCh0eXBlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzOwotICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBw
b3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVzdWx0ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4oKTsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAg
ICAgcmVzdWx0LmFkZCh0eXBlKTsKLSAgICBjYWNoZS5hZGRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7
CisgICAgcmVzdWx0ID0gdHlwZUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpLnN1cHBvcnRl
ZFR5cGVzKCk7CiB9CiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApp
bmRleCA5ZDgxYTJmYWE1Y2ExOTVmZjRmN2MzMDQyYjk4NmQ0MWRlMWZmOTk3Li45MDNjNmQzZGVj
OWViMzk1Njg3MDQ3MDc4YmM0YzViMjgyNWY3MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmgKQEAgLTY5LDkgKzY5LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1vdGVNZWRp
YVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAKLSAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAot
ICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikg
ZmluYWw7Ci0KICAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5OwogICAg
IHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYpOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBl
QW5kQ29kZWNzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413840</attachid>
            <date>2020-11-11 10:56:49 -0800</date>
            <delta_ts>2020-11-11 12:02:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218788-20201111105649.patch</filename>
            <type>text/plain</type>
            <size>42149</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMzMGYzZWY5MDlkODBh
OGE1OWM3M2M2NDUwMDZlMDliZGExMjI1MC4uYTIyMTMzODE3MGM2Yzc2NGE0ZmMwYThjYTQ4Zjhl
MTFjNGQzMmZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTExLTEwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFJlbW90ZU1lZGlh
UGxheWVyTUlNRVR5cGVDYWNoZSB0byBhZGQgdGhlIHN1cHBvcnQgZm9yIEFWRm91bmRhdGlvbk1T
RSBtZWRpYSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODc4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdpdGggdGhpcyBwYXRjaCwgd2UgY2FuIGNyZWF0ZSBNU0UgbWVkaWEgcGxheWVycyAo
QVZGb3VuZGF0aW9uTVNFKSBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBjbGVhbnMgdXAgYE1JTUVUeXBlQ2FjaGVgLCBgQVZBc3NldE1JTUVUeXBlQ2FjaGVgLCBhbmQK
KyAgICAgICAgYEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGVgLiBBIG1lZGlhIHBsYXll
ciBmYWN0b3J5IGFuZCBgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQ2AKKyAgICAgICAgd2lsbCBv
bmx5IG5lZWQgdG8gdXNlIG9uZSBgTUlNRVR5cGVDYWNoZWAsIGVpdGhlciBgQVZBc3NldE1JTUVU
eXBlQ2FjaGVgIG9yCisgICAgICAgIGBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlYCwg
YnV0IG5vdCBib3RoLgorCisgICAgICAgIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCBgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQ2AsIHRoaXMgcGF0Y2ggcmVuYW1lcworICAgICAgICBg
c3VwcG9ydHNUeXBlKClgIG9mIGBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakNg
IHRvIGBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoKWAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NSU1FVHlwZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBw
b3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRp
bGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hl
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6
aXNBdmFpbGFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGVBbmRDb2Rl
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzdXBwb3J0c1R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5Td2l0Y2hUb1R5
cGUpOgorCiAyMDIwLTExLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTY2MC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
Y2QzOWMxNjk4NDU2YjhhZDhkMTYyZGUyNDkwMDQwNTdlNjVmZDZlMi4uYTIyZTVjOTI5OThhZDc0
ZTEyMzM1YThiMTFjYWI0YzIyY2QzZjlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAy
MC0xMS0xMCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0
ZSBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUgdG8gYWRkIHRoZSBzdXBwb3J0IGZvciBB
VkZvdW5kYXRpb25NU0UgbWVkaWEgZW5naW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbGx5LCBgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlYCBpbmhlcml0cyBmcm9tIGBNSU1FVHlwZUNhY2hlYC4KKyAgICAgICAgSXQgbmVlZHMg
dG8gaW1wbGVtZW50IHRocmVlIGZ1bmN0aW9uczogYGlzQXZhaWxhYmxlKClgLCBgY2FuRGVjb2Rl
RXh0ZW5kZWRUeXBlKClgLAorICAgICAgICBgc3VwcG9ydGVkVHlwZXMoKWAgdGhyb3VnaCBJUEMg
bWVzc2FnZXMsIGFuZCB0aGUgSVBDIG1lc3NhZ2UgcmVjZWl2ZXJzIGluCisgICAgICAgIGBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eWAgbmVlZHMgdG8gcmVwZWF0IHRoZSB3b3JrIGRvbmUg
YnkgYEFWQXNzZXRNSU1FVHlwZUNhY2hlYAorICAgICAgICBhbmQgYEFWU3RyZWFtRGF0YVBhcnNl
ck1JTUVUeXBlQ2FjaGVgLgorCisgICAgICAgIEFjdHVhbGx5LCBgTWVkaWFQbGF5ZXJSZW1vdGVG
YWN0b3J5YCBvbmx5IG5lZWRzIHR3byBmdW5jdGlvbnMgZnJvbQorICAgICAgICBgUmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlYDogYHN1cHBvcnRlZFR5cGVzKClgICBhbmQgYHN1cHBvcnRz
VHlwZUFuZENvZGVjcygpYC4KKyAgICAgICAgV2UgY2FuIGltcGxlbWVudCB0aGVzZSB0d28gZnVu
Y3Rpb25zIHdpdGggSVBDIG1lc3NhZ2VzIHRvIGBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eWAKKyAgICAgICAgYW5kIGNhY2hlIHRoZSByZXN1bHRzIHRvIGF2b2lkIHRvbyBtYW55IElQQyBt
ZXNzYWdlcy4gSW4gYWRkaXRpb24sIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICB0aGUg
SVBDIG1lc3NhZ2UgcmVjZWl2ZXJzIGluIGBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eWAg
Y2FuIHJldXNlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBvZiBgQVZBc3NldE1JTUVUeXBl
Q2FjaGVgIGFuZCBgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZWAuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzVHlw
ZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNSU1FVHlwZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
SU1FVHlwZUNhY2hlOjphZGRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzVHlwZUFuZENvZGVj
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6bWlt
ZUNhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNSU1FVHlwZUNhY2hlOjpzdGF0aWNDb250YWluZXJUeXBlTGlzdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6aXNVbnN1cHBvcnRl
ZENvbnRhaW5lclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBs
YXllck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZUV4dGVuZGVkVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNh
Y2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1JTUVUeXBlQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDoKKwogMjAyMC0x
MS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2NjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKaW5kZXggMDMxZjcxOTlhYzZjYzhjNTkyNmJl
N2MyOTE0YmMzYjRiYmNhNzNmNy4uNmIxNjZiNDIwOWYzNTNmN2MyOTUxYTk5MzVmMzQ5ZjJhZTMy
YmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBl
Q2FjaGUuaApAQCAtNDIsMjEgKzQyLDIyIEBAIHB1YmxpYzoKICAgICBNSU1FVHlwZUNhY2hlKCkg
PSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfk1JTUVUeXBlQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIHN1cHBvcnRzQ29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGUgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKLQor
ICAgIHZpcnR1YWwgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3Qg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN0YXRpY0NvbnRhaW5l
clR5cGVMaXN0KCk7CiAgICAgdmlydHVhbCBib29sIGlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBl
KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIGNhbkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkVHlwZXMoKTsKIAotICAg
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRUeXBl
cygpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOwotCi0gICAgdmlydHVhbCBib29sIGlzQXZhaWxhYmxlKCkgY29uc3Q7CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5cGUoY29uc3Qg
U3RyaW5nJik7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGFkZFN1cHBvcnRlZFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVDYWNoZShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAg
IHZpcnR1YWwgYm9vbCBjYW5EZWNvZGVFeHRlbmRlZFR5cGUoY29uc3QgQ29udGVudFR5cGUmKTsK
KwogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVFeHRlbmRlZFR5cGUoY29uc3QgQ29udGVudFR5cGUm
KTsKIAogICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+PiBtX3N1cHBvcnRlZFR5cGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDU5NTY3ZDBjMzk5MzJiMGU3YjE3ZmI2NWM3MmU3
NmRmYTdmMTk2YjQuLjdjZTlhMDc0OTFkNWEwNDZmYTIzMTliNWNjOGYxMTI1MTNhOGQyOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTIzMywxMCArMjMzLDkgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3Io
KQogICAgIEFTU0VSVChtZWRpYUVuZ2luZVZlY3RvckxvY2suaXNMb2NrZWQoKSk7CiAKICNpZiBV
U0UoQVZGT1VOREFUSU9OKQotCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNB
VkZvdW5kYXRpb25FbmFibGVkKCkpIHsKLQogICAgICAgICBhdXRvJiByZWdpc3RlclJlbW90ZUVu
Z2luZSA9IHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKTsKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgICAgICBpZiAocmVnaXN0ZXJSZW1vdGVFbmdpbmUpCiAgICAgICAgICAgICByZWdp
c3RlclJlbW90ZUVuZ2luZShhZGRNZWRpYUVuZ2luZSwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb24pOwpAQCAtMjQ1LDcgKzI0NCwxMCBAQCBzdGF0
aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCi0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CisgICAgICAgIGlmIChyZWdp
c3RlclJlbW90ZUVuZ2luZSkKKyAgICAgICAgICAgIHJlZ2lzdGVyUmVtb3RlRW5naW5lKGFkZE1l
ZGlhRW5naW5lLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91
bmRhdGlvbk1TRSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBhMDU3OGFlMDNlNzA3Yzg1NTY5
NjRhNTM2ZTlhYjY0YTUzZTg1Y2E1Li5jOWY4ZjNjNTZmNzNiZWQwMGUxNWYwMTY4ODMzNTY3NzQw
NDc2OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKQEAgLTcxMCw3ICs3MTAsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90ZVBs
YXllckNhbGxiYWNrJiYpOwogfTsKIAotCiBpbmxpbmUgU3RyaW5nIE1lZGlhUGxheWVyOjphdWRp
b091dHB1dERldmljZUlkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVu
dC0+YXVkaW9PdXRwdXREZXZpY2VJZCgpIDogU3RyaW5nIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZThkMTI2MDQ5MWFl
OWUyZmYwMjRhMTYxNWQ3ZDQzNjQwMTUwM2M1My4uN2U0NzhlZDAyYzIxMmQ3ZjJkYjRkYTE1OTFm
ZmUyNjYyN2YyYTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIENETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5n
JiBrZQogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVy
cy50eXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOwogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOworICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhw
YXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
IH0KIAogYm9vbCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsKICAgICBwYXJhbWV0
ZXJzLnR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaAppbmRl
eCA3MDgyMjA5ZGUzNmVhNGVjYmZlYTM4OWZhZTZjOTRkNjI4ODUxYzRjLi45MzE3OWYyOGQ0MGM3
NWNkODQyN2NiMTQ2YTgyMDM0MmIyYjhjNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0FWQXNzZXRNSU1FVHlwZUNhY2hlLmgKQEAgLTM3LDE1ICszNywxNCBAQCBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBBVkFzc2V0TUlNRVR5cGVDYWNoZSBmaW5hbCA6IHB1YmxpYyBNSU1FVHlwZUNhY2hl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQVZBc3NldE1JTUVUeXBlQ2FjaGUmIHNpbmdsZXRvbigp
OwogCi0gICAgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0IGZpbmFsOwotCiAgICAgdXNpbmcgQ2Fj
aGVNSU1FVHlwZXNDYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpPjsKICAgICB2b2lkIHNldENhY2hlTUlNRVR5cGVzQ2FsbGJhY2soQ2FjaGVNSU1FVHlw
ZXNDYWxsYmFjayYmIGNhbGxiYWNrKSB7IG1fY2FjaGVUeXBlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsgfQogCisgICAgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdGF0aWNDb250
YWluZXJUeXBlTGlzdCgpIGZpbmFsOwogICAgIGJvb2wgaXNVbnN1cHBvcnRlZENvbnRhaW5lclR5
cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICB2b2lkIGFkZFN1cHBvcnRlZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgZmluYWw7CisgICAgdm9pZCBhZGRTdXBwb3J0ZWRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ry
b3llZDxBVkFzc2V0TUlNRVR5cGVDYWNoZT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VkFzc2V0VHJhY2tVdGlsaXRpZXMubW0KaW5kZXggNTA2NzljZGViZjNlYWQzYzhmODk3ODdhOTYw
MGNhMzY5MGM0ZWYzZi4uM2Y2ZTQzMjAxMjM0OTMzNjRlYmE4ZDYxYWE2ODNhNTYyZTMzMTVmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbQpA
QCAtOTgsNyArOTgsNiBAQCBib29sIGFzc2V0VHJhY2tNZWV0c0hhcmR3YXJlRGVjb2RlUmVxdWly
ZW1lbnRzKEFWQXNzZXRUcmFjayAqdHJhY2ssIGNvbnN0IFZlY3RvcgogICAgIHJldHVybiBjb2Rl
Y3NNZWV0SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMoY29kZWNzLCBjb250ZW50VHlwZXNSZXF1
aXJpbmdIYXJkd2FyZURlY29kZSk7CiB9CiAKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFt
RGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaApp
bmRleCBiMzUwODI1MDQ5MzM3OTE5YjlmZGYyNzcwMDM1YjMxZWJiYzVlOTcyLi40ZTIzZTNlOGE3
M2I4NDQ0MjQ3ZWZhOWRiYzE3YmIzZDM4NTVlODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJN
SU1FVHlwZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oCkBAIC0zNiwx
MSArMzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIAot
Y2xhc3MgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZSBmaW5hbCA6IHB1YmxpYyBNSU1F
VHlwZUNhY2hlIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVU
eXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMgTUlNRVR5cGVDYWNoZSB7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUmIHNpbmds
ZXRvbigpOworICAgIHN0YXRpYyBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlJiBzaW5n
bGV0b24oKTsKIAogICAgIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRp
YVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3Vw
cG9ydGVkVHlwZXMoKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZT47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbQppbmRl
eCBlZGY5MjU0MWY1MWZmMDkzOTEwZjE4YTBmMDk2ZDQ0YjRjMzk3YjIxLi45ZmZkMTFjODZjZDk4
OWZkYzYxYmY1MWI2YWRkNzUxNWZhZTBkZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1F
VHlwZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KQEAgLTU0LDYg
KzU0LDQ5IEBAIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUmIEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIGNhY2hlLmdldCgpOwog
fQogCitib29sIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxhYmxlKCkg
Y29uc3QKK3sKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaWYgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzaW5nIEFW
Rm91bmRhdGlvbkxpYnJhcnlJc0F2YWlsYWJsZSgpIGluc3RlYWQsIGJ1dCBkb2luZyBzbyBjYXVz
ZXMgc29mdC1saW5raW5nCisgICAgLy8gdG8gc3Vic2VxdWVudGx5IGZhaWwgb24gY2VydGFpbiBz
eW1ib2xzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzQyMjI0NzgwPiBmb3IgbW9yZSBkZXRhaWxzLgor
ICAgIGlmICghUEFMOjpBVkZvdW5kYXRpb25MaWJyYXJ5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbHNlCisgICAgaWYgKCFBVkZvdW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICByZXR1cm4gW1BBTDo6Z2V0QVZTdHJl
YW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGF1ZGlvdmlz
dWFsTUlNRVR5cGVzKV07CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitN
ZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVD
YWNoZTo6Y2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgaWYgKGlzQXZh
aWxhYmxlKCkpCisgICAgICAgIHJldHVybiBNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlKHR5
cGUpOworCisgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKTsKKyAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKHR5cGUpOworCisgICAgcmV0dXJuIE1lZGlhUGxh
eWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Cit9CisKK0hhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlOjpzdXBwb3J0ZWRUeXBlcygpCit7CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAg
ICAgIHJldHVybiBNSU1FVHlwZUNhY2hlOjpzdXBwb3J0ZWRUeXBlcygpOworCisgICAgYXV0byYg
YXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAo
YXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gYXNzZXRDYWNoZS5zdXBw
b3J0ZWRUeXBlcygpOworCisgICAgcmV0dXJuIE1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRlZFR5cGVz
KCk7Cit9CisKIGJvb2wgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2Rl
RXh0ZW5kZWRUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQogewogI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEFWRk9VTkRBVElPTikKQEAgLTc3LDI1ICsxMjAsNiBAQCBib29sIEFWU3RyZWFt
RGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZUV4dGVuZGVkVHlwZShjb25zdCBDb250
ZW50VHlwZSYgdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBVlN0cmVhbURhdGFQYXJz
ZXJNSU1FVHlwZUNhY2hlOjppc0F2YWlsYWJsZSgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2luZyBBVkZvdW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFi
bGUoKSBpbnN0ZWFkLCBidXQgZG9pbmcgc28gY2F1c2VzIHNvZnQtbGlua2luZwotICAgIC8vIHRv
IHN1YnNlcXVlbnRseSBmYWlsIG9uIGNlcnRhaW4gc3ltYm9scy4gU2VlIDxyZGFyOi8vcHJvYmxl
bS80MjIyNDc4MD4gZm9yIG1vcmUgZGV0YWlscy4KLSAgICBpZiAoIVBBTDo6QVZGb3VuZGF0aW9u
TGlicmFyeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmICghQVZGb3Vu
ZGF0aW9uTGlicmFyeUlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhdWRpb3Zpc3VhbE1JTUVUeXBlcyldOwotI2Vsc2UKLSAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQogdm9pZCBBVlN0cmVhbURhdGFQYXJzZXJNSU1F
VHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIGNhY2hlKQogewogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyNmIzZDc4ZmUxYjBjZTZkNDc2ZDJhNWU3
Mzg3NWUzOTBlM2VkZTgzLi5hZTJlZjhlMTRkOWVmNmQ2MDRkYTFiZTVhOTQ5YjIzNTBkNDkzN2E0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAgICAgY2xhc3MgRmFjdG9yeTsKKyAgICBzdGF0aWMgYm9v
bCBpc0F2YWlsYWJsZSgpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tl
eVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CkBAIC0xMzksOCArMTQwLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlh
Q2FjaGUoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CiAgICAgc3RhdGlj
IHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0F2YWls
YWJsZSgpOwotCiAgICAgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZl
cmluZ1BvbGljeSkgZmluYWw7CiAKICAgICB2b2lkIHRyYWNrc0NoYW5nZWQoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5
ZDllMzk0YjUwNy4uY2RlMWRhMzQ3ODVhODkyYTdlMDJiZDA2YmU1MGEwNzYwNDMxNzY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIC8v
IE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0aG9kcwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxl
KCk7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKICAgICBB
TExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgdm9pZCBhZGRBdWRpb1JlbmRl
cmVyKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCmluZGV4IDcwOGQzMWIyZTk0N2JlMzAyZjEyNjg2YTgxOTZhMDNkYWYxNDNkMDEuLmVlMWU4
NzllYWVlZDliNWNiYWM0YjdiNGI3ZTI3NDU1MjBlYjQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KQEAgLTIwOSw3ICsyMDksNyBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJl
dHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpOwogICAgIH0KIH07CiAK
QEAgLTIzNSwxOCArMjM1LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjppc0F2YWlsYWJsZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgdHlwZXMpCiB7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hl
ID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYg
KHN0cmVhbURhdGFQYXJzZXJDYWNoZS5pc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHR5cGVzID0g
c3RyZWFtRGF0YVBhcnNlckNhY2hlLnN1cHBvcnRlZFR5cGVzKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhdXRvJiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNp
bmdsZXRvbigpOwotICAgIGlmIChhc3NldENhY2hlLmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHR5
cGVzID0gYXNzZXRDYWNoZS5zdXBwb3J0ZWRUeXBlcygpOworICAgIHR5cGVzID0gQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydGVkVHlwZXMoKTsKIH0K
IAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIFRoaXMgZW5naW5l
IGRvZXMgbm90IHN1cHBvcnQgbm9uLW1lZGlhLXNvdXJjZSBzb3VyY2VzLgogICAgIGlmICghcGFy
YW1ldGVycy5pc01lZGlhU291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggMjkzMjI3OTM5MTBlYTU3ZjE4MWM5MjAx
N2QzY2YzNjU3NzUyMTAzMS4uZWY0NTNhZThkZGJlODE0NThkMmMwYTVmZTdiZjkyN2FmZGE5NGNl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLm1tCkBAIC04Myw3ICs4Myw3IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVz
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDCiAgICAg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMu
aXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGU7
Ci0gICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNU
eXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9y
dGVkKQorICAgIGlmIChNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBv
cnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKIAogICAgIGF1
dG8gcGFyc2VyID0gU291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUoY29udGVudFR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
aW5kZXggMTI1ZTY0ODUxNjBiZTc3NzVjNTRhMTQ3ZGMzMWYzYzM0MzdjNGQ3ZC4uZDJlZjZiZDYx
OTZkYzU0MzE5NTc3YmExYTg2MWRkYWJhOWQxNjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0xOTQsMTUgKzE5NCw3
IEBAIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkCiAgICAgICAgIGV4dGVuZGVkVHlwZSA9IG1ha2VT
dHJpbmcodHlwZS5jb250YWluZXJUeXBlKCksICI7IGNvZGVjcz1cIiIsIG91dHB1dENvZGVjcywg
IlwiIik7CiAgICAgfQogCi0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJl
YW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURh
dGFQYXJzZXJDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICByZXR1cm4gc3RyZWFtRGF0YVBh
cnNlckNhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKTsKLQotICAgIGF1dG8mIGFzc2V0
Q2FjaGUgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKGFzc2V0
Q2FjaGUuaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2Rl
VHlwZShleHRlbmRlZFR5cGUpOwotCi0gICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIEFWU3RyZWFtRGF0YVBhcnNlck1J
TUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKTsKIH0K
IAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCmluZGV4IDMzYTU5OWE2YjVlYWU3ODViYmIwNTRhNzZlN2FiNWEwMGFhMzBiY2EuLjkx
NDk2ZDI0MWZmYjYxMGQ5Njk0MDc3NTdkOWZjMjM5OGZiNDY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0xMTk0
LDcgKzExOTQsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5Td2l0Y2hU
b1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQogICAgIE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2Ug
PSB0cnVlOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwotICAgIHJldHVybiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0
ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGVB
bmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZpZGVv
TGF5ZXIoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHAKaW5kZXggM2RhYzJiZTMwOTU0OThhZTkwYmY4ZjZiYjRlN2MzYTk4ZDA2
ZDgwNy4uYzAyNTMzNWRjYTM4NTlkNmQ2NDEzNDYwMDYwNjdiNmE5NWU0YzY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBvcnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5nCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAot
dm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1
cHBvcnRzVHlwZUFuZENvZGVjcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBlbmdpbmUgPSBNZWRpYVBs
YXllcjo6bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRpZmllcik7CiAgICAgaWYgKCFlbmdpbmUpIHsK
QEAgLTExMCwzMiArMTEwLDYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGkKICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmIG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKGVuZ2luZUlkZW50
aWZpZXIpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uOgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBzdXBwb3J0ZWQg
PSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZShtaW1lVHlw
ZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKLSAgICAg
ICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0U6Ci0gICAgY2FzZSBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1lZGlhU3RyZWFtOgotICAgIGNh
c2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25D
RjoKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0
cmVhbWVyOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
OjpHU3RyZWFtZXJNU0U6Ci0gICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6OkhvbGVQdW5jaDoKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0aW9uOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNb2NrTVNFOgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY29tcGxldGlvbkhhbmRsZXIo
c3VwcG9ydGVkKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6b3Jp
Z2luc0luTWVkaWFDYWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
ZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShl
bmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggMWY3ZGNj
OGZhN2I1OTg5YTU2NmExYTU0Y2RlOTZmYjkyMjk5MDUyYy4uYjViMTMzNjE0NjliN2RkYjNjNDEy
YjUzNDQ2NjU5M2IyMWJhZGM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTgx
LDcgKzgxLDYgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRpYSBwbGF5ZXIgZmFjdG9yeQogICAgIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
KTsKICAgICB2b2lkIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlKT4mJik7Ci0gICAgdm9pZCBjYW5EZWNvZGVFeHRlbmRlZFR5cGUo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIG9yaWdpbnNJbk1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7
CiAgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpOwogICAgIHZvaWQg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBkMzNkZGEzOWYwNWY1MzY5ZmFjZTExYWNhZTE4ZWJiYTA4Yjg2MWU0Li44
ZmFmMzg1YmNiMTdiYjZjYzViNjQ5MmIzMGU0MTkwMWM0OTI3M2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw2IEBAIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAg
ICAgR2V0U3VwcG9ydGVkVHlwZXMoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSAtPiAoVmVj
dG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzCiAgICAgU3VwcG9ydHNUeXBlQW5kQ29kZWNz
KGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMgdHlwZSkgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGUgc3VwcG9ydCkgU3luY2hyb25vdXMKLSAgICBDYW5EZWNv
ZGVFeHRlbmRlZFR5cGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgbWltZVR5
cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cwogICAgIE9yaWdpbnNJbk1lZGlhQ2Fj
aGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIFN5bmNocm9ub3VzCiAgICAgQ2xl
YXJNZWRpYUNhY2hlKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIHBhdGgsIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UpCiAgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
IHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgK
aW5kZXggOGRhNWVkNDc4NzljNDFiZmZjNWIwMmQ4MjM0NWZlNzUzNjc4ZWJlMy4uMGRiYWU4ZTFj
ZjU0ZDhjZTc1MjJkMmNiNjlkYWEyYWRjMDBmNmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJX
ZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNr
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggMWM0OGU1MDY5YzNj
ODA1YTQ1NjM3NGRlOGRkYWFiZTE1ODgxNDdhZC4uMGE3YzY4YWU1MTBkZTQzZTgyNWM0MjRjN2Qy
ZjQ4ZTNjOGNjMTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMzIsNiAr
MzIsOCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5jcHAKaW5kZXggZmU5NDU1YmM2NzI1ZjgzYTkwY2U0YmZhYWFhMWY5ZDFiMDY5ZmU4
MS4uNzYwOTIzNDc0ZTE4OGExMDIwYmFmMTliOWY3NWRjNmYyNjYzNmY2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVU
eXBlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcApAQCAtMjgsMTIgKzI4LDkgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgotCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2VuZGlm
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNDQsOTQgKzQxLDQ2IEBAIFJlbW90ZU1lZGlhUGxheWVyTUlN
RVR5cGVDYWNoZTo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlKFJlbW90ZU1lZGlhUGxh
eWVyCiB7CiB9CiAKLU1JTUVUeXBlQ2FjaGUqIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNo
ZTo6bWltZUNhY2hlKCkgY29uc3QKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hl
OjphZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbmV3VHlwZXMpCiB7Ci0g
ICAgc3dpdGNoIChtX2VuZ2luZUlkZW50aWZpZXIpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uOgotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgICAgICByZXR1cm4gJkFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsK
LSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0U6Ci0gICAgY2FzZSBNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1lZGlhU3RyZWFtOgot
ICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5k
YXRpb25DRjoKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6R1N0cmVhbWVyOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyOjpHU3RyZWFtZXJNU0U6Ci0gICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXI6OkhvbGVQdW5jaDoKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0aW9uOgotICAgIGNhc2UgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNb2NrTVNFOgotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgZm9yIChhdXRvJiB0eXBlIDogbmV3VHlwZXMpCisgICAgICAgIG1fc3VwcG9ydGVk
VHlwZXNDYWNoZS5hZGQodHlwZSk7CiB9CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN0YXRp
Y0NvbnRhaW5lclR5cGVMaXN0KCkKK0hhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRlZFR5cGVzKCkK
IHsKLSAgICBpZiAoYXV0byogbWltZUNhY2hlID0gdGhpcy0+bWltZUNhY2hlKCkpCi0gICAgICAg
IHJldHVybiBtaW1lQ2FjaGUtPnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCk7CisgICAgaWYgKG1f
aW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiBtX3N1cHBvcnRlZFR5cGVzQ2FjaGU7CiAKLSAg
ICByZXR1cm4gTUlNRVR5cGVDYWNoZTo6c3RhdGljQ29udGFpbmVyVHlwZUxpc3QoKTsKLX0KLQot
Ym9vbCBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OmlzVW5zdXBwb3J0ZWRDb250YWlu
ZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKLXsKLSAgICBpZiAoYXV0byogbWltZUNhY2hlID0g
dGhpcy0+bWltZUNhY2hlKCkpCi0gICAgICAgIHJldHVybiBtaW1lQ2FjaGUtPmlzVW5zdXBwb3J0
ZWRDb250YWluZXJUeXBlKHR5cGUpOworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOworICAgIGlm
IChtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBl
cyhtX2VuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKSB7CisgICAgICAgIG1f
aW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKKyAg
ICAgICAgICAgIG1fc3VwcG9ydGVkVHlwZXNDYWNoZS5hZGQodHlwZSk7CisgICAgfQogCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3N1cHBvcnRlZFR5cGVzQ2FjaGU7CiB9CiAKLWJv
b2wgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUo
Y29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIHR5cGUpCi17Ci0gICAgYm9vbCByZXN1bHQ7Ci0g
ICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5EZWNvZGVF
eHRlbmRlZFR5cGUobV9lbmdpbmVJZGVudGlmaWVyLCB0eXBlLnJhdygpKSwgTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5cGU6OlJlcGx5
KHJlc3VsdCksIDApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1XZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgV2ViQ29y
ZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK01lZGlhUGxheWVy
RW51bXM6OlN1cHBvcnRzVHlwZSBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBv
cnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUucmF3KCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRl
ZDsKIAotICAgIGlmIChwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBjYW5EZWNvZGVUeXBlKHBhcmFtZXRlcnMu
dHlwZS5yYXcoKSk7Ci0KICAgICBpZiAobV9zdXBwb3J0c1R5cGVBbmRDb2RlY3NDYWNoZSkgewog
ICAgICAgICBhdXRvIGl0ID0gbV9zdXBwb3J0c1R5cGVBbmRDb2RlY3NDYWNoZS0+ZmluZChwYXJh
bWV0ZXJzLnR5cGUucmF3KCkpOwogICAgICAgICBpZiAoaXQgIT0gbV9zdXBwb3J0c1R5cGVBbmRD
b2RlY3NDYWNoZS0+ZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwogICAgIH0K
IAotICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0OwotICAgIGlmICghbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlQW5kQ29kZWNzKG1f
ZW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVycyksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlQW5kQ29kZWNzOjpSZXBseShyZXN1bHQpLCAwKSkK
LSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
OwotCiAgICAgaWYgKCFtX3N1cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hlKQotICAgICAgICBtX3N1
cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hlID0gSGFzaE1hcDxTdHJpbmcsIE1lZGlhUGxheWVyRW51
bXM6OlN1cHBvcnRzVHlwZSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPigpOwotICAgIG1fc3Vw
cG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGUtPmFkZChwYXJhbWV0ZXJzLnR5cGUucmF3KCksIHJlc3Vs
dCk7CisgICAgICAgIG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGUgPSBIYXNoTWFwPFN0cmlu
ZywgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IHsgfTsKIAotICAgIHJldHVybiByZXN1bHQ7Ci19CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlIHJlc3VsdCA9IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNO
b3RTdXBwb3J0ZWQ7CisgICAgaWYgKG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlN1cHBvcnRzVHlwZUFuZENvZGVjcyhtX2VuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMp
LCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZUFu
ZENvZGVjczo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIG1fc3VwcG9ydHNUeXBlQW5kQ29k
ZWNzQ2FjaGUtPmFkZChwYXJhbWV0ZXJzLnR5cGUucmF3KCksIHJlc3VsdCk7CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNhY2hlKQotewotICAgIGF1dG8qIG1pbWVD
YWNoZSA9IHRoaXMtPm1pbWVDYWNoZSgpOwotICAgIGlmICghaXNFbXB0eSgpIHx8ICFtaW1lQ2Fj
aGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGlm
ICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlw
ZXMobV9lbmdpbmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIGNhY2hlLmFkZCh0
eXBlKTsKLQotICAgIG1pbWVDYWNoZS0+YWRkU3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5o
CmluZGV4IGYyMTgwOThmMWYwZGJhMmUzZWE3OTRjMTAwYzNlNzEwMDkwZTM0NmMuLjNmYmVjMGY2
ZTg1MjAxMGI0MTdmMTY1N2VhNTUwM2YwZGYzYzJhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1JTUVUeXBlQ2FjaGUuaApAQCAtMjcsOSArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAotI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvTUlNRVR5cGVDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckVudW1zLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM7CkBAIC0z
NywyMyArMzksMjQgQEAgc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TUlNRVR5cGVDYWNoZSB7CitjbGFzcyBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI7CisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVtb3RlTWVkaWFQ
bGF5ZXJNSU1FVHlwZUNhY2hlKFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYsIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CisgICAgflJlbW90ZU1lZGlh
UGxheWVyTUlNRVR5cGVDYWNoZSgpID0gZGVmYXVsdDsKIAorICAgIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRUeXBlcygpOwogICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29u
c3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworICAgIHZvaWQgYWRk
U3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIAogcHJpdmF0ZToKLSAgICBj
b25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3RhdGljQ29u
dGFpbmVyVHlwZUxpc3QoKSBmaW5hbDsKLSAgICBib29sIGlzVW5zdXBwb3J0ZWRDb250YWluZXJU
eXBlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZUNhY2hlKEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgZmluYWw7Ci0gICAgYm9vbCBj
YW5EZWNvZGVFeHRlbmRlZFR5cGUoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmKSBmaW5hbDsK
LQotICAgIE1JTUVUeXBlQ2FjaGUqIG1pbWVDYWNoZSgpIGNvbnN0OwotCiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyJiBtX21hbmFnZXI7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5lSWRlbnRpZmllcjsKICAgICBPcHRpb25h
bDxIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX3N1cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hl
OworICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fc3VwcG9y
dGVkVHlwZXNDYWNoZTsKKyAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXgg
MWQ2Y2RkZWI3MzY1OTM3ZWMwZTM3YzA3NDRiM2Y0ZjgwYTg5NjkxNC4uNzEyNjMwODcyMjZiMzZm
MzE0ZmVmMWVlYWVkZGJmYmY4MDQ4YzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNw
cApAQCAtMzYsNiArMzYsOSBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBs
YXllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCkBAIC0xMjIsMjAgKzEyNSw2IEBAIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNo
ZSYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0eXBlQ2FjaGUoTWVkaWFQbGF5ZXJFCiAgICAg
cmV0dXJuICpjYWNoZVB0cjsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Omlu
aXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
LXsKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBpZiAocGFyYW1ldGVycy5tZWRpYU1JTUVUeXBlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8mIGNhY2hlID0gdHlwZUNhY2hlKE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKLSAgICBpZiAoY2FjaGUuaXNFbXB0
eSgpKQotICAgICAgICBjYWNoZS5hZGRTdXBwb3J0ZWRUeXBlcyhwYXJhbWV0ZXJzLm1lZGlhTUlN
RVR5cGVzKTsKLSNlbmRpZgotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKQogewogICAgIFJlbW90ZU1lZGlhUGxheWVy
UHJveHlDb25maWd1cmF0aW9uIHByb3h5Q29uZmlndXJhdGlvbjsKQEAgLTE5NSwyNSArMTg0LDkg
QEAgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJl
bW90ZVBsYXllcklkKGNvbnN0IE1lZGlhUGwKICAgICByZXR1cm4geyB9OwogfQogCi0KIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKIHsKLSAgICBhdXRv
JiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKLSAgICBpZiAoIWNh
Y2hlLmlzRW1wdHkoKSkgewotICAgICAgICByZXN1bHQgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPigpOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBjYWNoZS5z
dXBwb3J0ZWRUeXBlcygpKQotICAgICAgICAgICAgcmVzdWx0LmFkZCh0eXBlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGlmICghZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRT
dXBwb3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
cmVzdWx0ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLSAg
ICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgcmVzdWx0LmFkZCh0eXBlKTsKLSAg
ICBjYWNoZS5hZGRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgcmVzdWx0ID0gdHlwZUNhY2hl
KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpLnN1cHBvcnRlZFR5cGVzKCk7CiB9CiAKIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVB
bmRDb2RlY3MoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAppbmRleCA5ZDgxYTJmYWE1Y2ExOTVmZjRm
N2MzMDQyYjk4NmQ0MWRlMWZmOTk3Li45MDNjNmQzZGVjOWViMzk1Njg3MDQ3MDc4YmM0YzViMjgy
NWY3MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTY5LDkgKzY5LDYgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1vdGVNZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBs
YXllciosIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7
CiAKLSAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAotICAgIHZvaWQgaW5pdGlhbGl6ZShjb25z
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgZmluYWw7Ci0KICAgICBmcmllbmQgY2xh
c3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5OwogICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwo=
</data>
<flag name="review"
          id="430518"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413879</attachid>
            <date>2020-11-11 15:51:52 -0800</date>
            <delta_ts>2020-11-11 17:48:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218788-20201111155151.patch</filename>
            <type>text/plain</type>
            <size>41111</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMzMGYzZWY5MDlkODBh
OGE1OWM3M2M2NDUwMDZlMDliZGExMjI1MC4uOWFkOTM4ZTdiZTRhMTliNzNiNTQ1Mjk3YzM1NTA1
NzMxYjQwOTUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTExLTEwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFJlbW90ZU1lZGlh
UGxheWVyTUlNRVR5cGVDYWNoZSB0byBhZGQgdGhlIHN1cHBvcnQgZm9yIEFWRm91bmRhdGlvbk1T
RSBtZWRpYSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODc4OAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAg
ICAgICBXaXRoIHRoaXMgcGF0Y2gsIHdlIGNhbiBjcmVhdGUgTVNFIG1lZGlhIHBsYXllcnMgKEFW
Rm91bmRhdGlvbk1TRSkgaW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2xlYW5zIHVwIGBNSU1FVHlwZUNhY2hlYCwgYEFWQXNzZXRNSU1FVHlwZUNhY2hlYCwgYW5kCisg
ICAgICAgIGBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlYC4gQSBtZWRpYSBwbGF5ZXIg
ZmFjdG9yeSBhbmQgYFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakNgCisgICAgICAgIHdpbGwgb25s
eSBuZWVkIHRvIHVzZSBvbmUgYE1JTUVUeXBlQ2FjaGVgLCBlaXRoZXIgYEFWQXNzZXRNSU1FVHlw
ZUNhY2hlYCBvcgorICAgICAgICBgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZWAsIGJ1
dCBub3QgYm90aC4KKworICAgICAgICBUbyBiZSBjb25zaXN0ZW50IHdpdGggYE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakNgLCB0aGlzIHBhdGNoIHJlbmFtZXMKKyAgICAgICAgYHN1
cHBvcnRzVHlwZSgpYCBvZiBgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDYCB0
byBgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKClgLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTUlNRVR5cGVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkTWVkaWFFbmdpbmVzVmVjdG9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9y
dHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxp
dGllcy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6Omlz
QXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1J
TUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c3VwcG9ydHNUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuU3dpdGNoVG9UeXBl
KToKKwogMjAyMC0xMS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2NjAuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNk
MzljMTY5ODQ1NmI4YWQ4ZDE2MmRlMjQ5MDA0MDU3ZTY1ZmQ2ZTIuLmEyN2UxZWU2M2QyOTg1MGVl
ZTM5NTk4NjE5ZjlmN2Q3ODRlMWIxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjAt
MTEtMTAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUg
UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlIHRvIGFkZCB0aGUgc3VwcG9ydCBmb3IgQVZG
b3VuZGF0aW9uTVNFIG1lZGlhIGVuZ2luZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Nzg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJs
c29uLgorCisgICAgICAgIE9yaWdpbmFsbHksIGBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2Fj
aGVgIGluaGVyaXRzIGZyb20gYE1JTUVUeXBlQ2FjaGVgLgorICAgICAgICBJdCBuZWVkcyB0byBp
bXBsZW1lbnQgdGhyZWUgZnVuY3Rpb25zOiBgaXNBdmFpbGFibGUoKWAsIGBjYW5EZWNvZGVFeHRl
bmRlZFR5cGUoKWAsCisgICAgICAgIGBzdXBwb3J0ZWRUeXBlcygpYCB0aHJvdWdoIElQQyBtZXNz
YWdlcywgYW5kIHRoZSBJUEMgbWVzc2FnZSByZWNlaXZlcnMgaW4KKyAgICAgICAgYFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5YCBuZWVkcyB0byByZXBlYXQgdGhlIHdvcmsgZG9uZSBieSBg
QVZBc3NldE1JTUVUeXBlQ2FjaGVgCisgICAgICAgIGFuZCBgQVZTdHJlYW1EYXRhUGFyc2VyTUlN
RVR5cGVDYWNoZWAuCisKKyAgICAgICAgQWN0dWFsbHksIGBNZWRpYVBsYXllclJlbW90ZUZhY3Rv
cnlgIG9ubHkgbmVlZHMgdHdvIGZ1bmN0aW9ucyBmcm9tCisgICAgICAgIGBSZW1vdGVNZWRpYVBs
YXllck1JTUVUeXBlQ2FjaGVgOiBgc3VwcG9ydGVkVHlwZXMoKWAgIGFuZCBgc3VwcG9ydHNUeXBl
QW5kQ29kZWNzKClgLgorICAgICAgICBXZSBjYW4gaW1wbGVtZW50IHRoZXNlIHR3byBmdW5jdGlv
bnMgd2l0aCBJUEMgbWVzc2FnZXMgdG8gYFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5YAor
ICAgICAgICBhbmQgY2FjaGUgdGhlIHJlc3VsdHMgdG8gYXZvaWQgdG9vIG1hbnkgSVBDIG1lc3Nh
Z2VzLiBJbiBhZGRpdGlvbiwgdGhlIGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIHRoZSBJUEMg
bWVzc2FnZSByZWNlaXZlcnMgaW4gYFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5YCBjYW4g
cmV1c2UgdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIG9mIGBBVkFzc2V0TUlNRVR5cGVDYWNo
ZWAgYW5kIGBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlYC4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlQW5k
Q29kZWNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OmNhbkRlY29kZUV4dGVuZGVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1J
TUVUeXBlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1JTUVU
eXBlQ2FjaGU6OmFkZFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjptaW1lQ2Fj
aGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1J
TUVUeXBlQ2FjaGU6OnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppc1Vuc3VwcG9ydGVkQ29u
dGFpbmVyVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlRXh0ZW5kZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTUlNRVR5cGVDYWNoZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjppbml0aWFsaXplKToKKwogMjAyMC0xMS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIy
Njk2NjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1F
VHlwZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNh
Y2hlLmgKaW5kZXggMDMxZjcxOTlhYzZjYzhjNTkyNmJlN2MyOTE0YmMzYjRiYmNhNzNmNy4uNmIx
NjZiNDIwOWYzNTNmN2MyOTUxYTk5MzVmMzQ5ZjJhZTMyYmFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaApAQCAtNDIsMjEgKzQyLDIy
IEBAIHB1YmxpYzoKICAgICBNSU1FVHlwZUNhY2hlKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwg
fk1JTUVUeXBlQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIHN1cHBvcnRzQ29udGFpbmVy
VHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUg
Y2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKLQorICAgIHZpcnR1YWwgYm9vbCBpc0F2YWls
YWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIHN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCk7CiAgICAgdmlydHVh
bCBib29sIGlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIHZp
cnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGNhbkRlY29kZVR5cGUoY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgc3VwcG9ydGVkVHlwZXMoKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRUeXBlcygpOwotICAgIHZpcnR1YWwgdm9pZCBh
ZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotCi0gICAgdmlydHVhbCBi
b29sIGlzQXZhaWxhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisgICAg
Ym9vbCBzdXBwb3J0c0NvbnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJik7CisKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIGFkZFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDYWNoZShIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5EZWNvZGVF
eHRlbmRlZFR5cGUoY29uc3QgQ29udGVudFR5cGUmKTsKKwogICAgIGJvb2wgc2hvdWxkT3ZlcnJp
ZGVFeHRlbmRlZFR5cGUoY29uc3QgQ29udGVudFR5cGUmKTsKIAogICAgIE9wdGlvbmFsPEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX3N1cHBvcnRlZFR5cGVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDU5NTY3ZDBjMzk5MzJiMGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQuLjdjZTlhMDc0OTFk
NWEwNDZmYTIzMTliNWNjOGYxMTI1MTNhOGQyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTIzMywxMCArMjMzLDkgQEAgc3Rh
dGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIEFTU0VSVChtZWRpYUVuZ2lu
ZVZlY3RvckxvY2suaXNMb2NrZWQoKSk7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotCiAgICAg
aWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNBVkZvdW5kYXRpb25FbmFibGVkKCkpIHsK
LQogICAgICAgICBhdXRvJiByZWdpc3RlclJlbW90ZUVuZ2luZSA9IHJlZ2lzdGVyUmVtb3RlUGxh
eWVyQ2FsbGJhY2soKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBpZiAocmVnaXN0
ZXJSZW1vdGVFbmdpbmUpCiAgICAgICAgICAgICByZWdpc3RlclJlbW90ZUVuZ2luZShhZGRNZWRp
YUVuZ2luZSwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5k
YXRpb24pOwpAQCAtMjQ1LDcgKzI0NCwxMCBAQCBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5l
c1ZlY3RvcigpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShh
ZGRNZWRpYUVuZ2luZSk7CisgICAgICAgIGlmIChyZWdpc3RlclJlbW90ZUVuZ2luZSkKKyAgICAg
ICAgICAgIHJlZ2lzdGVyUmVtb3RlRW5naW5lKGFkZE1lZGlhRW5naW5lLCBNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaAppbmRleCBhMDU3OGFlMDNlNzA3Yzg1NTY5NjRhNTM2ZTlhYjY0YTUzZTg1Y2E1Li5j
OWY4ZjNjNTZmNzNiZWQwMGUxNWYwMTY4ODMzNTY3NzQwNDc2OThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTcxMCw3ICs3MTAsNiBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UmVnaXN0ZXJSZW1v
dGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiYpOwogfTsKIAot
CiBpbmxpbmUgU3RyaW5nIE1lZGlhUGxheWVyOjphdWRpb091dHB1dERldmljZUlkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+YXVkaW9PdXRwdXREZXZpY2VJZCgp
IDogU3RyaW5nIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KaW5kZXggZThkMTI2MDQ5MWFlOWUyZmYwMjRhMTYxNWQ3ZDQzNjQwMTUw
M2M1My4uN2U0NzhlZDAyYzIxMmQ3ZjJkYjRkYTE1OTFmZmUyNjYyN2YyYTg3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEx
NCw3ICsxMTQsNyBAQCBib29sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRz
S2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZQogICAgIHBhcmFtZXRlcnMuaXNN
ZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUobWlt
ZVR5cGUpOwogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAogYm9vbCBDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
dXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcGFyYW1ldGVycy5p
c01lZGlhU291cmNlID0gdHJ1ZTsKICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZSht
aW1lVHlwZSk7CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vz
c2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5
cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaAppbmRleCA3MDgyMjA5ZGUzNmVhNGVjYmZlYTM4
OWZhZTZjOTRkNjI4ODUxYzRjLi45MzE3OWYyOGQ0MGM3NWNkODQyN2NiMTQ2YTgyMDM0MmIyYjhj
NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmgK
QEAgLTM3LDE1ICszNywxNCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBVkFzc2V0TUlNRVR5cGVD
YWNoZSBmaW5hbCA6IHB1YmxpYyBNSU1FVHlwZUNhY2hlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
QVZBc3NldE1JTUVUeXBlQ2FjaGUmIHNpbmdsZXRvbigpOwogCi0gICAgYm9vbCBpc0F2YWlsYWJs
ZSgpIGNvbnN0IGZpbmFsOwotCiAgICAgdXNpbmcgQ2FjaGVNSU1FVHlwZXNDYWxsYmFjayA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPjsKICAgICB2b2lkIHNldENh
Y2hlTUlNRVR5cGVzQ2FsbGJhY2soQ2FjaGVNSU1FVHlwZXNDYWxsYmFjayYmIGNhbGxiYWNrKSB7
IG1fY2FjaGVUeXBlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCisgICAgYm9vbCBp
c0F2YWlsYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdGF0aWNDb250YWluZXJUeXBlTGlzdCgpIGZpbmFsOwog
ICAgIGJvb2wgaXNVbnN1cHBvcnRlZENvbnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAKLSAgICB2b2lkIGFkZFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgZmlu
YWw7CisgICAgdm9pZCBhZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxBVkFzc2V0TUlNRVR5cGVDYWNo
ZT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0K
aW5kZXggNTA2NzljZGViZjNlYWQzYzhmODk3ODdhOTYwMGNhMzY5MGM0ZWYzZi4uM2Y2ZTQzMjAx
MjM0OTMzNjRlYmE4ZDYxYWE2ODNhNTYyZTMzMTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRpbGl0
aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbQpAQCAtOTgsNyArOTgsNiBAQCBib29sIGFz
c2V0VHJhY2tNZWV0c0hhcmR3YXJlRGVjb2RlUmVxdWlyZW1lbnRzKEFWQXNzZXRUcmFjayAqdHJh
Y2ssIGNvbnN0IFZlY3RvcgogICAgIHJldHVybiBjb2RlY3NNZWV0SGFyZHdhcmVEZWNvZGVSZXF1
aXJlbWVudHMoY29kZWNzLCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZURlY29kZSk7CiB9
CiAKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FW
U3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaAppbmRleCBiMzUwODI1MDQ5MzM3OTE5Yjlm
ZGYyNzcwMDM1YjMxZWJiYzVlOTcyLi40ZTIzZTNlOGE3M2I4NDQ0MjQ3ZWZhOWRiYzE3YmIzZDM4
NTVlODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oCkBAIC0zNiwxMSArMzYsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3MgQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZSBmaW5hbCA6IHB1YmxpYyBNSU1FVHlwZUNhY2hlIHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMg
TUlNRVR5cGVDYWNoZSB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFWU3Ry
ZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUmIHNpbmdsZXRvbigpOworICAgIHN0YXRpYyBBVlN0
cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAogICAgIGJvb2wgaXNB
dmFpbGFibGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGUgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkVHlwZXMoKSBmaW5hbDsKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8QVZTdHJlYW1EYXRhUGFyc2VyTUlN
RVR5cGVDYWNoZT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJl
YW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbQppbmRleCBlZGY5MjU0MWY1MWZmMDkzOTEwZjE4
YTBmMDk2ZDQ0YjRjMzk3YjIxLi45ZmZkMTFjODZjZDk4OWZkYzYxYmY1MWI2YWRkNzUxNWZhZTBk
ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KQEAgLTU0LDYgKzU0LDQ5IEBAIEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUmIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpCiAgICAgcmV0dXJuIGNhY2hlLmdldCgpOwogfQogCitib29sIEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxhYmxlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzaW5nIEFWRm91bmRhdGlvbkxpYnJhcnlJc0F2YWls
YWJsZSgpIGluc3RlYWQsIGJ1dCBkb2luZyBzbyBjYXVzZXMgc29mdC1saW5raW5nCisgICAgLy8g
dG8gc3Vic2VxdWVudGx5IGZhaWwgb24gY2VydGFpbiBzeW1ib2xzLiBTZWUgPHJkYXI6Ly9wcm9i
bGVtLzQyMjI0NzgwPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgIGlmICghUEFMOjpBVkZvdW5kYXRp
b25MaWJyYXJ5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgaWYgKCFBVkZv
dW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisKKyAgICByZXR1cm4gW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGF1ZGlvdmlzdWFsTUlNRVR5cGVzKV07CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0
c1R5cGUgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCit7CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVy
biBNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlKHR5cGUpOworCisgICAgYXV0byYgYXNzZXRD
YWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRD
YWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVU
eXBlKHR5cGUpOworCisgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6
SXNOb3RTdXBwb3J0ZWQ7Cit9CisKK0hhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0ZWRUeXBlcygp
Cit7CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBNSU1FVHlwZUNhY2hl
OjpzdXBwb3J0ZWRUeXBlcygpOworCisgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgp
KQorICAgICAgICByZXR1cm4gYXNzZXRDYWNoZS5zdXBwb3J0ZWRUeXBlcygpOworCisgICAgcmV0
dXJuIE1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRlZFR5cGVzKCk7Cit9CisKIGJvb2wgQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlRXh0ZW5kZWRUeXBlKGNvbnN0IENvbnRl
bnRUeXBlJiB0eXBlKQogewogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikK
QEAgLTc3LDI1ICsxMjAsNiBAQCBib29sIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6
OmNhbkRlY29kZUV4dGVuZGVkVHlwZShjb25zdCBDb250ZW50VHlwZSYgdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjppc0F2YWls
YWJsZSgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQot
I2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1
c2luZyBBVkZvdW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKSBpbnN0ZWFkLCBidXQgZG9pbmcg
c28gY2F1c2VzIHNvZnQtbGlua2luZwotICAgIC8vIHRvIHN1YnNlcXVlbnRseSBmYWlsIG9uIGNl
cnRhaW4gc3ltYm9scy4gU2VlIDxyZGFyOi8vcHJvYmxlbS80MjIyNDc4MD4gZm9yIG1vcmUgZGV0
YWlscy4KLSAgICBpZiAoIVBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmICghQVZGb3VuZGF0aW9uTGlicmFyeUlzQXZhaWxhYmxl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIFtQQUw6Omdl
dEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihh
dWRpb3Zpc3VhbE1JTUVUeXBlcyldOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LX0KLQogdm9pZCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2Fj
aGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNhY2hlKQogewog
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCAyNmIzZDc4ZmUxYjBjZTZkNDc2ZDJhNWU3Mzg3NWUzOTBlM2VkZTgzLi5hZTJlZjhl
MTRkOWVmNmQ2MDRkYTFiZTVhOTQ5YjIzNTBkNDkzN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0xMzIsNiArMTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAg
ICAgY2xhc3MgRmFjdG9yeTsKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgIHN0
YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CkBAIC0xMzksOCArMTQwLDYgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotCiAgICAgdm9pZCBzZXRC
dWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkgZmluYWw7CiAKICAg
ICB2b2lkIHRyYWNrc0NoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5k
ZXggYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5ZDllMzk0YjUwNy4uY2RlMWRhMzQ3ODVh
ODkyYTdlMDJiZDA2YmU1MGEwNzYwNDMxNzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIC8vIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0
aG9kcwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAgICAgc3RhdGljIHZvaWQgZ2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VB
UkRTX0JFR0lOCiAgICAgdm9pZCBhZGRBdWRpb1JlbmRlcmVyKEFWU2FtcGxlQnVmZmVyQXVkaW9S
ZW5kZXJlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcwOGQzMWIyZTk0N2Jl
MzAyZjEyNjg2YTgxOTZhMDNkYWYxNDNkMDEuLmVlMWU4NzllYWVlZDliNWNiYWM0YjdiNGI3ZTI3
NDU1MjBlYjQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTIwOSw3ICsyMDks
NyBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVy
cykgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlQW5k
Q29kZWNzKHBhcmFtZXRlcnMpOwogICAgIH0KIH07CiAKQEAgLTIzNSwxOCArMjM1LDEwIEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgpCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpCiB7
Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlN
RVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNoZS5p
c0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHR5cGVzID0gc3RyZWFtRGF0YVBhcnNlckNhY2hlLnN1
cHBvcnRlZFR5cGVzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiBhc3Nl
dENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlmIChhc3Nl
dENhY2hlLmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHR5cGVzID0gYXNzZXRDYWNoZS5zdXBwb3J0
ZWRUeXBlcygpOworICAgIHR5cGVzID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuc3VwcG9ydGVkVHlwZXMoKTsKIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogewogICAgIC8vIFRoaXMgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgbm9uLW1l
ZGlhLXNvdXJjZSBzb3VyY2VzLgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0KaW5kZXggMjkzMjI3OTM5MTBlYTU3ZjE4MWM5MjAxN2QzY2YzNjU3NzUyMTAzMS4uZWY0NTNh
ZThkZGJlODE0NThkMmMwYTVmZTdiZjkyN2FmZGE5NGNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC04Myw3ICs4Myw3
IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDCiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAg
ICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGU7Ci0gICAgaWYgKE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQorICAgIGlmIChNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0
ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAg
ICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKIAogICAgIGF1dG8gcGFyc2VyID0gU291cmNlQnVmZmVy
UGFyc2VyOjpjcmVhdGUoY29udGVudFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMTI1ZTY0ODUxNjBiZTc3NzVj
NTRhMTQ3ZGMzMWYzYzM0MzdjNGQ3ZC4uZDJlZjZiZDYxOTZkYzU0MzE5NTc3YmExYTg2MWRkYWJh
OWQxNjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCkBAIC0xOTQsMTUgKzE5NCw3IEBAIE1lZGlhUGxheWVyRW51bXM6OlN1
cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9y
dGVkCiAgICAgICAgIGV4dGVuZGVkVHlwZSA9IG1ha2VTdHJpbmcodHlwZS5jb250YWluZXJUeXBl
KCksICI7IGNvZGVjcz1cIiIsIG91dHB1dENvZGVjcywgIlwiIik7CiAgICAgfQogCi0gICAgYXV0
byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNo
ZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNoZS5pc0F2YWlsYWJs
ZSgpKQotICAgICAgICByZXR1cm4gc3RyZWFtRGF0YVBhcnNlckNhY2hlLmNhbkRlY29kZVR5cGUo
ZXh0ZW5kZWRUeXBlKTsKLQotICAgIGF1dG8mIGFzc2V0Q2FjaGUgPSBBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKGFzc2V0Q2FjaGUuaXNBdmFpbGFibGUoKSkKLSAg
ICAgICAgcmV0dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotCi0g
ICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7
CisgICAgcmV0dXJuIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKTsKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDMzYTU5OWE2YjVl
YWU3ODViYmIwNTRhNzZlN2FiNWEwMGFhMzBiY2EuLjkxNDk2ZDI0MWZmYjYxMGQ5Njk0MDc3NTdk
OWZjMjM5OGZiNDY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0xMTk0LDcgKzExOTQsNyBAQCBib29sIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUm
IGNvbnRlbnRUeXBlKQogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwogICAgIHBhcmFtZXRlcnMu
dHlwZSA9IGNvbnRlbnRUeXBlOwotICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIoQVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggM2Rh
YzJiZTMwOTU0OThhZTkwYmY4ZjZiYjRlN2MzYTk4ZDA2ZDgwNy4uYzAyNTMzNWRjYTM4NTlkNmQ2
NDEzNDYwMDYwNjdiNmE5NWU0YzY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Omdl
dFN1cHBvcnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5nCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoZW5naW5l
SWRlbnRpZmllcik7CiAgICAgaWYgKCFlbmdpbmUpIHsKQEAgLTExMCwzMiArMTEwLDYgQEAgdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGkKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjYW5EZWNvZGVFeHRlbmRlZFR5
cGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2lu
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGJvb2wgc3VwcG9ydGVkID0g
ZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKGVuZ2luZUlkZW50aWZpZXIpIHsKLSAgICBjYXNlIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uOgotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgICAgICBzdXBwb3J0ZWQgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZShtaW1lVHlwZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAg
IGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRp
b25NU0U6Ci0gICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6
OkFWRm91bmRhdGlvbk1lZGlhU3RyZWFtOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25DRjoKLSAgICBjYXNlIE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyOgotICAgIGNhc2UgTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXJNU0U6Ci0gICAgY2Fz
ZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5jaDoKLSAg
ICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3Vu
ZGF0aW9uOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
OjpNb2NrTVNFOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoc3VwcG9ydGVkKTsKLX0KLQogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZShNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGVu
Z2luZSA9IE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShlbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggMWY3ZGNjOGZhN2I1OTg5YTU2NmExYTU0Y2RlOTZm
YjkyMjk5MDUyYy4uYjViMTMzNjE0NjliN2RkYjNjNDEyYjUzNDQ2NjU5M2IyMWJhZGM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTgxLDcgKzgxLDYgQEAgcHJpdmF0ZToKICAg
ICAvLyBNZWRpYSBwbGF5ZXIgZmFjdG9yeQogICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlKT4mJik7
Ci0gICAgdm9pZCBjYW5EZWNvZGVFeHRlbmRlZFR5cGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG9yaWdp
bnNJbk1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhck1lZGlhQ2Fj
aGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmJiwgV2FsbFRpbWUpOwogICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkMzNkZGEzOWYw
NWY1MzY5ZmFjZTExYWNhZTE4ZWJiYTA4Yjg2MWU0Li44ZmFmMzg1YmNiMTdiYjZjYzViNjQ5MmIz
MGU0MTkwMWM0OTI3M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgR2V0U3VwcG9ydGVkVHlwZXMoZW51
bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNo
cm9ub3VzCiAgICAgU3VwcG9ydHNUeXBlQW5kQ29kZWNzKGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgdHlwZSkg
LT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydCkgU3luY2hyb25vdXMKLSAgICBDYW5EZWNvZGVFeHRlbmRlZFR5cGUoZW51bTp1aW50
OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1v
dGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBT
eW5jaHJvbm91cwogICAgIE9yaWdpbnNJbk1lZGlhQ2FjaGUoZW51bTp1aW50OF90IFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCBTdHJpbmcgcGF0aCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IG9yaWdpbnMpIFN5bmNocm9ub3VzCiAgICAgQ2xlYXJNZWRpYUNhY2hlKGVudW06dWludDhf
dCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3Rl
RW5naW5lSWRlbnRpZmllciwgU3RyaW5nIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiAg
ICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5z
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5kZXggOGRhNWVkNDc4NzljNDFiZmZj
NWIwMmQ4MjM0NWZlNzUzNjc4ZWJlMy4uMGRiYWU4ZTFjZjU0ZDhjZTc1MjJkMmNiNjlkYWEyYWRj
MDBmNmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5jcHAKaW5kZXggMWM0OGU1MDY5YzNjODA1YTQ1NjM3NGRlOGRkYWFiZTE1ODgx
NDdhZC4uMGE3YzY4YWU1MTBkZTQzZTgyNWM0MjRjN2QyZjQ4ZTNjOGNjMTNhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAKaW5kZXggZmU5NDU1
YmM2NzI1ZjgzYTkwY2U0YmZhYWFhMWY5ZDFiMDY5ZmU4MS4uYjI0YzE1OWE2MWE5ZjgzNWI5ZDkz
OTMxN2FlOWRiZWZjYTJiMGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNh
Y2hlLmNwcApAQCAtMjgsMTIgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
UGxheWVyUHJpdmF0ZS5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29y
ZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDQs
OTQgKzQxLDUxIEBAIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6UmVtb3RlTWVkaWFQ
bGF5ZXJNSU1FVHlwZUNhY2hlKFJlbW90ZU1lZGlhUGxheWVyCiB7CiB9CiAKLU1JTUVUeXBlQ2Fj
aGUqIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6bWltZUNhY2hlKCkgY29uc3QKK3Zv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjphZGRTdXBwb3J0ZWRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbmV3VHlwZXMpCiB7Ci0gICAgc3dpdGNoIChtX2VuZ2luZUlkZW50
aWZpZXIpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uOgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICByZXR1cm4gJkFW
QXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYK
LQotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZv
dW5kYXRpb25NU0U6Ci0gICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXI6OkFWRm91bmRhdGlvbk1lZGlhU3RyZWFtOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25DRjoKLSAgICBjYXNlIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyOgotICAgIGNhc2Ug
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXJNU0U6Ci0g
ICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5j
aDoKLSAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVk
aWFGb3VuZGF0aW9uOgotICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyOjpNb2NrTVNFOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQorICAgIGlmICghbV9zdXBwb3J0ZWRUeXBlc0NhY2hlKQorICAgICAgICBt
X3N1cHBvcnRlZFR5cGVzQ2FjaGUgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiB7IH07CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHR5cGUg
OiBuZXdUeXBlcykKKyAgICAgICAgbV9zdXBwb3J0ZWRUeXBlc0NhY2hlLT5hZGQodHlwZSk7CiB9
CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBSZW1v
dGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCkKK2Jv
b2wgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppc0VtcHR5KCkgY29uc3QKIHsKLSAg
ICBpZiAoYXV0byogbWltZUNhY2hlID0gdGhpcy0+bWltZUNhY2hlKCkpCi0gICAgICAgIHJldHVy
biBtaW1lQ2FjaGUtPnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCk7Ci0KLSAgICByZXR1cm4gTUlN
RVR5cGVDYWNoZTo6c3RhdGljQ29udGFpbmVyVHlwZUxpc3QoKTsKKyAgICByZXR1cm4gbV9zdXBw
b3J0ZWRUeXBlc0NhY2hlICYmIG1fc3VwcG9ydGVkVHlwZXNDYWNoZS0+aXNFbXB0eSgpOwogfQog
Ci1ib29sIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6aXNVbnN1cHBvcnRlZENvbnRh
aW5lclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydGVk
VHlwZXMoKQogewotICAgIGlmIChhdXRvKiBtaW1lQ2FjaGUgPSB0aGlzLT5taW1lQ2FjaGUoKSkK
LSAgICAgICAgcmV0dXJuIG1pbWVDYWNoZS0+aXNVbnN1cHBvcnRlZENvbnRhaW5lclR5cGUodHlw
ZSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19CisgICAgaWYgKG1fc3VwcG9ydGVkVHlwZXNDYWNo
ZSkKKyAgICAgICAgcmV0dXJuICptX3N1cHBvcnRlZFR5cGVzQ2FjaGU7CiAKLWJvb2wgUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUoY29uc3QgV2Vi
Q29yZTo6Q29udGVudFR5cGUmIHR5cGUpCi17Ci0gICAgYm9vbCByZXN1bHQ7Ci0gICAgaWYgKCFt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5
cGUobV9lbmdpbmVJZGVudGlmaWVyLCB0eXBlLnJhdygpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5cGU6OlJlcGx5KHJlc3VsdCks
IDApKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Cisg
ICAgaWYgKG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRl
ZFR5cGVzKG1fZW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCkpCisgICAgICAg
IGFkZFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuICptX3N1cHBvcnRlZFR5cGVzQ2FjaGU7CiB9CiAKLVdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OlN1cHBvcnRzVHlwZSBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRz
VHlwZUFuZENvZGVjcyhjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQorTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFJlbW90ZU1lZGlh
UGxheWVyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMu
dHlwZS5yYXcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwogCi0gICAgaWYgKHBhcmFtZXRlcnMuY29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKLQogICAgIGlmIChtX3N1cHBv
cnRzVHlwZUFuZENvZGVjc0NhY2hlKSB7CiAgICAgICAgIGF1dG8gaXQgPSBtX3N1cHBvcnRzVHlw
ZUFuZENvZGVjc0NhY2hlLT5maW5kKHBhcmFtZXRlcnMudHlwZS5yYXcoKSk7CiAgICAgICAgIGlm
IChpdCAhPSBtX3N1cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hlLT5lbmQoKSkKICAgICAgICAgICAg
IHJldHVybiBpdC0+dmFsdWU7CiAgICAgfQogCi0gICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSByZXN1bHQ7Ci0gICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpTdXBwb3J0c1R5cGVBbmRDb2RlY3MobV9lbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwg
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGVBbmRD
b2RlY3M6OlJlcGx5KHJlc3VsdCksIDApKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KICAgICBpZiAoIW1fc3VwcG9ydHNUeXBlQW5k
Q29kZWNzQ2FjaGUpCi0gICAgICAgIG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGUgPSBIYXNo
TWFwPFN0cmluZywgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+KCk7Ci0gICAgbV9zdXBwb3J0c1R5cGVBbmRDb2RlY3NDYWNoZS0+YWRkKHBh
cmFtZXRlcnMudHlwZS5yYXcoKSwgcmVzdWx0KTsKKyAgICAgICAgbV9zdXBwb3J0c1R5cGVBbmRD
b2RlY3NDYWNoZSA9IEhhc2hNYXA8U3RyaW5nLCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGUsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9OwogCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OmluaXRpYWxpemVDYWNo
ZShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgY2FjaGUpCi17Ci0g
ICAgYXV0byogbWltZUNhY2hlID0gdGhpcy0+bWltZUNhY2hlKCk7Ci0gICAgaWYgKCFpc0VtcHR5
KCkgfHwgIW1pbWVDYWNoZSkKLSAgICAgICAgcmV0dXJuOworICAgIE1lZGlhUGxheWVyRW51bXM6
OlN1cHBvcnRzVHlwZSByZXN1bHQgPSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6Oklz
Tm90U3VwcG9ydGVkOworICAgIGlmIChtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpTdXBwb3J0c1R5cGVBbmRDb2RlY3MobV9lbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJz
KSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGVB
bmRDb2RlY3M6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBtX3N1cHBvcnRzVHlwZUFuZENv
ZGVjc0NhY2hlLT5hZGQocGFyYW1ldGVycy50eXBlLnJhdygpLCByZXN1bHQpOwogCi0gICAgVmVj
dG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhtX2VuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBs
eSh0eXBlcyksIDApKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0
eXBlcykKLSAgICAgICAgY2FjaGUuYWRkKHR5cGUpOwotCi0gICAgbWltZUNhY2hlLT5hZGRTdXBw
b3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1J
TUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmgKaW5kZXggZjIxODA5OGYxZjBkYmEyZTNlYTc5NGMx
MDBjM2U3MTAwOTBlMzQ2Yy4uMjlhNTY1MDMyMWNiMjlhZTA3ODE3OWI4ZDMxZjgzNDU2NmI4MjJj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5oCkBAIC0yNyw5ICsyNywx
MSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZUNhY2hlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyRW51bXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczsKQEAgLTM3LDIzICszOSwyNCBAQCBzdHJ1Y3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90
ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpNSU1FVHlw
ZUNhY2hlIHsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjsKKworY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUoUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyJiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyKTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlKCkgPSBkZWZhdWx0
OwogCisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBv
cnRlZFR5cGVzKCk7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzJik7CisgICAgdm9pZCBhZGRTdXBwb3J0ZWRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdGF0aWNDb250YWlu
ZXJUeXBlTGlzdCgpIGZpbmFsOwotICAgIGJvb2wgaXNVbnN1cHBvcnRlZENvbnRhaW5lclR5cGUo
Y29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplQ2FjaGUoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKSBmaW5hbDsKLSAgICBib29sIGNhbkRl
Y29kZUV4dGVuZGVkVHlwZShjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYpIGZpbmFsOwotCi0g
ICAgTUlNRVR5cGVDYWNoZSogbWltZUNhY2hlKCkgY29uc3Q7Ci0KICAgICBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXImIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOwogICAgIE9wdGlvbmFsPEhh
c2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGU7Cisg
ICAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IG1f
c3VwcG9ydGVkVHlwZXNDYWNoZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwCmluZGV4IDFkNmNkZGViNzM2NTkzN2VjMGUzN2MwNzQ0YjNm
NGY4MGE4OTY5MTQuLjM5ZDJjM2ZmNzRmODFlMWNmNGYwMjI4YmQ1MWZkOTQxYTg0YzAzZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKQEAgLTM2LDYgKzM2LDkgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaEZ1
bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTI0LDggKzEyNyw2IEBAIFJl
bW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZSYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0
eXBlQ2FjaGUoTWVkaWFQbGF5ZXJFCiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpp
bml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHBhcmFtZXRlcnMpOwotCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgaWYgKHBhcmFtZXRlcnMubWVkaWFNSU1FVHlwZXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMzMsNiArMTM0LDggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGEKICAgICBh
dXRvJiBjYWNoZSA9IHR5cGVDYWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXI6OkFWRm91bmRhdGlvbik7CiAgICAgaWYgKGNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAg
Y2FjaGUuYWRkU3VwcG9ydGVkVHlwZXMocGFyYW1ldGVycy5tZWRpYU1JTUVUeXBlcyk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShwYXJhbWV0ZXJzKTsKICNlbmRpZgogfQogCkBAIC0xOTUsMjUg
KzE5OCw5IEBAIE1lZGlhUGxheWVySWRlbnRpZmllciBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmZpbmRSZW1vdGVQbGF5ZXJJZChjb25zdCBNZWRpYVBsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMoTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiByZXN1bHQpCiB7Ci0g
ICAgYXV0byYgY2FjaGUgPSB0eXBlQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllcik7Ci0gICAg
aWYgKCFjYWNoZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVzdWx0ID0gSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlIDog
Y2FjaGUuc3VwcG9ydGVkVHlwZXMoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hZGQodHlwZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBp
ZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMocmVtb3Rl
RW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6R2V0U3VwcG9ydGVkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHJlc3VsdCA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
KCk7Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIHJlc3VsdC5hZGQodHlw
ZSk7Ci0gICAgY2FjaGUuYWRkU3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIHJlc3VsdCA9IHR5
cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKS5zdXBwb3J0ZWRUeXBlcygpOwogfQogCiBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9y
dHNUeXBlQW5kQ29kZWNzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>