<?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>228923</bug_id>
          
          <creation_ts>2021-08-09 13:55:45 -0700</creation_ts>
          <short_desc>Blob URL changes after loading it</short_desc>
          <delta_ts>2022-03-22 02:49:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=228168</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227821</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212279</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236069</see_also>
          <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>
          
          <blocked>228924</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1782958</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 13:55:45 -0700</bug_when>
    <thetext>Blob URL changes after loading it. This is because we use URLWithBlobURLLifetimeExtension to extend the lifetime of the Blob URL during the load and URLWithBlobURLLifetimeExtension ends up creating a new public Blob URL.
This is Web-observable so we need a way to extend the lifetime of a Blob URL without actually generating a new Blob URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782961</commentid>
    <comment_count>1</comment_count>
      <attachid>435210</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 14:01:00 -0700</bug_when>
    <thetext>Created attachment 435210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782968</commentid>
    <comment_count>2</comment_count>
      <attachid>435210</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-09 14:14:06 -0700</bug_when>
    <thetext>Comment on attachment 435210
Patch

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

r=me

&gt; Source/WebCore/fileapi/ThreadableBlobRegistry.cpp:175
&gt; +    if (isMainThread()) {
&gt; +        blobRegistry().registerBlobURLHandle(url);
&gt; +        return;
&gt; +    }
&gt; +    callOnMainThread([url = url.isolatedCopy()] {
&gt; +        blobRegistry().registerBlobURLHandle(url);
&gt; +    });

Can we use ensureOnMainThread here?

&gt; Source/WebCore/fileapi/ThreadableBlobRegistry.cpp:186
&gt; +    if (isMainThread()) {
&gt; +        blobRegistry().unregisterBlobURLHandle(url);
&gt; +        return;
&gt; +    }
&gt; +    callOnMainThread([url = url.isolatedCopy()] {
&gt; +        blobRegistry().unregisterBlobURLHandle(url);
&gt; +    });

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782971</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 14:17:20 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #2)
&gt; Comment on attachment 435210 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435210&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/fileapi/ThreadableBlobRegistry.cpp:175
&gt; &gt; +    if (isMainThread()) {
&gt; &gt; +        blobRegistry().registerBlobURLHandle(url);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +    callOnMainThread([url = url.isolatedCopy()] {
&gt; &gt; +        blobRegistry().registerBlobURLHandle(url);
&gt; &gt; +    });
&gt; 
&gt; Can we use ensureOnMainThread here?
&gt; 
&gt; &gt; Source/WebCore/fileapi/ThreadableBlobRegistry.cpp:186
&gt; &gt; +    if (isMainThread()) {
&gt; &gt; +        blobRegistry().unregisterBlobURLHandle(url);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +    callOnMainThread([url = url.isolatedCopy()] {
&gt; &gt; +        blobRegistry().unregisterBlobURLHandle(url);
&gt; &gt; +    });
&gt; 
&gt; Ditto

I considered it. The code would become more concise but then we would do an extra isolatedCopy() in the common case where we&apos;re already on the main thread.

What do you think? Still worth it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782972</commentid>
    <comment_count>4</comment_count>
      <attachid>435212</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 14:22:43 -0700</bug_when>
    <thetext>Created attachment 435212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782995</commentid>
    <comment_count>5</comment_count>
      <attachid>435215</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 15:25:50 -0700</bug_when>
    <thetext>Created attachment 435215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783007</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-09 15:50:30 -0700</bug_when>
    <thetext>&gt; I considered it. The code would become more concise but then we would do an
&gt; extra isolatedCopy() in the common case where we&apos;re already on the main
&gt; thread.
&gt; 
&gt; What do you think? Still worth it?

Interesting!

Probably not optimizable, even if we inlined the ensureOnMainThread, since isolatedCopy() has side effects.

Almost makes me want to use a macro. But macros are bad. :(

I guess it&apos;s a tradeoff with no obvious winner; I&apos;ll leave it up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783012</commentid>
    <comment_count>7</comment_count>
      <attachid>435220</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 15:59:49 -0700</bug_when>
    <thetext>Created attachment 435220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783064</commentid>
    <comment_count>8</comment_count>
      <attachid>435231</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 18:54:06 -0700</bug_when>
    <thetext>Created attachment 435231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783095</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-09 20:33:12 -0700</bug_when>
    <thetext>Committed r280824 (240387@main): &lt;https://commits.webkit.org/240387@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435231.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783096</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-09 20:40:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/81725874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853590</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-22 02:49:36 -0700</bug_when>
    <thetext>This caused a regression in bug 236069.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435210</attachid>
            <date>2021-08-09 14:01:00 -0700</date>
            <delta_ts>2021-08-09 14:22:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228923-20210809140059.patch</filename>
            <type>text/plain</type>
            <size>54906</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQwMjU1NDU2Y2RkNjg2
OGYzODYyNmFjNjdlNGVkMDMyYTRmOTRmYy4uZmNmMjU3ZjE2NjE3ZWNjMTNiMjI5M2M5MjhjMmUw
ZDY1NTNkMTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCbG9iIFVSTCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQuIFRoaXMgaXMgYmVjYXVz
ZSB3ZSB1c2UgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB0bworICAgICAgICBleHRl
bmQgdGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIFVSTCBkdXJpbmcgdGhlIGxvYWQgYW5kIFVSTFdp
dGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZW5kcworICAgICAgICB1cCBjcmVhdGluZyBhIG5l
dyBwdWJsaWMgQmxvYiBVUkwuIFRoaXMgaXMgV2ViLW9ic2VydmFibGUgc28gd2UgbmVlZCBhIHdh
eSB0byBleHRlbmQgdGhlCisgICAgICAgIGxpZmV0aW1lIG9mIGEgQmxvYiBVUkwgd2l0aG91dCBh
Y3R1YWxseSBnZW5lcmF0aW5nIGEgbmV3IEJsb2IgVVJMLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
cmVwbGFjZXMgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB3aXRoIGEgbmV3IEJsb2JV
UkxIYW5kbGUgY2xhc3Mgd2hpY2gKKyAgICAgICAgZXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgYSBC
bG9iIFVSTCBhcyBsb25nIGFzIHRoZXJlIGFyZSBCbG9iVVJMSGFuZGxlIG9iamVjdHMgcmVmZXJy
aW5nCisgICAgICAgIHRvIGl0LiBCbG9iVVJMSGFuZGxlIHdvcmtzIHdpdGggYm90aCBwcml2YXRl
IGFuZCBwdWJsaWMgQmxvYiBVUkxzIHNvIGl0IHJlcGxhY2VzCisgICAgICAgIEJsb2I6OkhhbmRs
ZSBhcyB3ZWxsICh3aGljaCBJIHJlY2VudGx5IGludHJvZHVjZWQgdmlhIHIyODA1NDcpLiBUaGUg
QmxvYiBVUkwgbm8gbG9uZ2VyCisgICAgICAgIGNoYW5nZXMgd2hlbiB3ZSBleHRlbmQgaXRzIGxp
ZmV0aW1lLiBJbnN0ZWFkLCB0aGUgQmxvYiByZWdpc3RyeSBub3cga2VlcHMgdHJhY2sgb2YKKyAg
ICAgICAgcmVmZXJlbmNlcyB0byBhIGdpdmVuIEJsb2IgYW5kIG9ubHkgcmVtb3ZlcyBhIEJsb2Ig
VVJMIG9uY2UgdGhlcmUgYXJlIG5vIGxvbmdlciBhbnkKKyAgICAgICAgcmVmZXJlbmNlcyB0byBp
dC4KKworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWwKKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYkhhbmRsZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgor
ICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9i
KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2I6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6aGFuZGxlIGNv
bnN0KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6
OnVybCBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2JVUkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmxvYlVSTEhhbmRsZTo6fkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVS
TEhhbmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6QmxvYlVSTEhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYlVS
TC5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjp1cmwgY29uc3QpOgorICAgICAgICAqIGZp
bGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgor
ICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGxv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQ
b2xpY3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2Vy
OjpjaGVja05ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JT
bGljZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxv
YlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphZGRCbG9iRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JV
UkxIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5o
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpwcmVw
YXJlVG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOgorCiAyMDIxLTA4LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYXxHUFVdIHBsYXRmb3JtTGF5ZXIoKSBub3QgYWx3YXlzIGFk
ZGVkIHRvIHJlbW90ZWRseSBob3N0ZWQgY29udGV4dDsgYmxhY2sgdmlkZW8gd2hpbGUgcGxheWlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBmNGMxNzIzOWU1NDU2ZDVhN2VmYzQwNzQ2ODU3NTc0ZWQwYmZlM2FhLi5k
OGFmYTBlMWUwZjA0OTZhYzhiNTQwYWI0OGYwNWExMTNmZTE0ZDE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDIxLTA4LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBhZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTEhh
bmRsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorCiAyMDIxLTA4LTA5
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYXxHUFVd
IHBsYXRmb3JtTGF5ZXIoKSBub3QgYWx3YXlzIGFkZGVkIHRvIHJlbW90ZWRseSBob3N0ZWQgY29u
dGV4dDsgYmxhY2sgdmlkZW8gd2hpbGUgcGxheWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IGQ0YjU5OGM2NWQ2OGUyNDYwNTQ1M2ViNjQyZTg3YWM2NzRiYzc3NmEuLmZmZTZjODlk
YzBhOTI0NGY0MGM5ZjI0NzBhNDJlNzNmMDViYmExNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIwMjEtMDgtMDcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWR1cGxpY2F0ZSBs
b2dnaW5nIGNoYW5uZWwgYWxnb3JpdGhtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4
IDc1OWMyMGI3ODFmMTlmN2NmZjYxMGRiNGU3OGZiMDNhNWI4NDVkYWYuLmQ3MjdjM2M2Mzg5NTU5
ZDEyOTg0NjA2MGZiMjkxYTk3N2U3MmQ1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorCiAyMDIxLTA4LTAyICBGdWppaSBIaXJvbm9y
aSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIEFTU0VSVElPTiBG
QUlMRUQ6IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQgaW4gV2ViVmlldzo6aW50ZXJwcmV0
S2V5RXZlbnQgc2luY2UgcjI4MDQ5MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZTViODAxYjJmNmQ4
MTA4Nzg2OWRjY2U0ZmY4MmY3ODcwZmZkNjg0OS4uYWY1NzkyNTZkZjA1NDgwMWE3ZTkyNTEwOTIz
MWI5YmNkNjljOWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC01OTgsNiArNTk4LDcgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmgKICAgICBmaWxlYXBpL0Jsb2IuaAogICAgIGZpbGVhcGkvQmxvYlByb3BlcnR5QmFn
LmgKKyAgICBmaWxlYXBpL0Jsb2JVUkwuaAogICAgIGZpbGVhcGkvRW5kaW5nVHlwZS5oCiAgICAg
ZmlsZWFwaS9GaWxlLmgKICAgICBmaWxlYXBpL0ZpbGVMaXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjM5YTViOGYxMjVk
ODhkOTQ2N2ZkMjI3OGVjODE4OTBkNTY5NGQ3Li4zNjQxNzExNGYwM2FlMDEzOTJiODlkNzNhY2Nh
ZWRjNzY4NGIwYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zMDM3LDcgKzMwMzcsNyBAQAogCQk5NzYyN0I5ODE0RkI1NDI0
MDAyQ0RDQTEgLyogU3VwcGxlbWVudGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3NjI3Qjk3MTRGQjU0MjQwMDJDRENBMSAvKiBTdXBwbGVtZW50
YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTk3NkQ2Qzc5MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxv
Yi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3
NkQ2QzdDMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUQxMjJCOEEzRDAwMUZEMUY3IC8q
IEJsb2JCdWlsZGVyLmggKi87IH07Ci0JCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9i
VVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZE
NkM2MDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYlVSTC5oICovOyB9OworCQk5NzZENkM3RjEyMkI4
QTNEMDAxRkQxRjcgLyogQmxvYlVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc2RDZDNjAxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzZENkM4MTEy
MkI4QTNEMDAxRkQxRjcgLyogRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc2RDZDNjIxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzZENkM4NjEyMkI4
QTNEMDAxRkQxRjcgLyogRmlsZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzY3MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3NkQ2Qzg5
MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2QTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVJl
YWRlci5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggN2ZkNzA2ZGU1YTM2NWUyYjRiYmJhNzhkNjNmYzZh
Yjk3NzFkODBmZi4uNTA0Nzg1Yzk2ZDhmNTY0M2E5NjE4MjY4NTU5NTRkZTA2NTdkNmNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC02MDAsNyArNjAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgV2FzbU1vZHVs
ZUFycmF5JiB3YXNtTW9kdWxlcywKICAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYg
d2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKLSAgICAgICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4m
IGJsb2JIYW5kbGVzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNvbnRleHQg
Y29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQorICAgICAg
ICBWZWN0b3I8QmxvYlVSTEhhbmRsZT4mIGJsb2JIYW5kbGVzLCBWZWN0b3I8dWludDhfdD4mIG91
dCwgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5
JiBzaGFyZWRCdWZmZXJzKQogICAgIHsKICAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlhbGl6
ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdl
Qml0bWFwcywKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQpAQCAtNjQ3
LDcgKzY0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21N
b2R1bGVzLAogICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFu
ZGxlcywKICNlbmRpZgotICAgICAgICBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMs
IFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCisgICAgICAgIFZlY3RvcjxCbG9i
VVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0
aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZl
cnMpCiAgICAgICAgIDogQ2xvbmVCYXNlKGxleGljYWxHbG9iYWxPYmplY3QpCiAgICAgICAgICwg
bV9idWZmZXIob3V0KQogICAgICAgICAsIG1fYmxvYkhhbmRsZXMoYmxvYkhhbmRsZXMpCkBAIC0x
Mjk3LDcgKzEyOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKGF1dG8qIGtleSA9IEpT
Q3J5cHRvS2V5Ojp0b1dyYXBwZWQodm0sIG9iaikpIHsKICAgICAgICAgICAgICAgICB3cml0ZShD
cnlwdG9LZXlUYWcpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzZXJpYWxpemVk
S2V5OwotICAgICAgICAgICAgICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+IGR1bW15QmxvYkhhbmRs
ZXM7CisgICAgICAgICAgICAgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IGR1bW15QmxvYkhhbmRs
ZXM7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVz
c2FnZVBvcnRzOwogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4+IGR1bW15QXJyYXlCdWZmZXJzOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTE3NjAs
NyArMTc2MCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX2J1
ZmZlcjsKLSAgICBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgbV9ibG9iSGFuZGxlczsKKyAgICBWZWN0
b3I8QmxvYlVSTEhhbmRsZT4mIG1fYmxvYkhhbmRsZXM7CiAgICAgT2JqZWN0UG9vbCBtX29iamVj
dFBvb2w7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzOwogICAgIE9i
amVjdFBvb2wgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVyczsKQEAgLTM5MTUsNyArMzkxNSw3IEBA
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50
OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlxCiAgICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9y
eUNvc3QoKTsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYg
YmxvYkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFy
cmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8
SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCitTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0
IFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJh
eSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3Rv
cmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhc2VzCiAjZW5kaWYKQEAgLTQwNjUsNyArNDA2NSw3IEBAIHN0YXRpYyBF
eGNlcHRpb24gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgY29kZSkKIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+IGJs
b2JIYW5kbGVzOworICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiBibG9iSGFuZGxlczsKICAgICBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgVmVjdG9y
PFJlZlB0cjxJbWFnZUJpdG1hcD4+IGR1bW15SW1hZ2VCaXRtYXBzOwogI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCkBAIC00MjE3LDcgKzQyMTcsNyBAQCBFeGNlcHRpb25P
cjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoSlNHbG9iYWxPYgogI2VuZGlmCiAKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAg
IFZlY3RvcjxCbG9iOjpIYW5kbGU+IGJsb2JIYW5kbGVzOworICAgIFZlY3RvcjxCbG9iVVJMSGFu
ZGxlPiBibG9iSGFuZGxlczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVs
ZUFycmF5IHdhc21Nb2R1bGVzOwogICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSB3YXNtTWVtb3J5
SGFuZGxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggMTZjNDkxOTVmZmM0ZjZlNjk3N2E3NDg4YjRkNmMyOTg1NDlhMzhi
NC4uZmI3NTdhNGQ3NGY2MGUyZmZjZGI4MjljMTUyMDMwYTY2OTljMTRjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTk5
LDcgKzk5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQmxvYlVSTHMoKSBjb25zdCB7IHJldHVy
biAhbV9ibG9iSGFuZGxlcy5pc0VtcHR5KCk7IH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JV
UkxzKCkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEJsb2I6OkhhbmRsZT4mIGJsb2JIYW5kbGVz
KCkgY29uc3QgeyByZXR1cm4gbV9ibG9iSGFuZGxlczsgfQorICAgIGNvbnN0IFZlY3RvcjxCbG9i
VVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JIYW5kbGVzOyB9
CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSURCVmFsdWUmJik+JiYpOwogICAgIElEQlZhbHVlIHdyaXRlQmxvYnNUb0Rpc2tGb3JJ
bmRleGVkREJTeW5jaHJvbm91c2x5KCk7CiAgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZUZyb21XaXJlQnl0ZXMoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTEy
Myw3ICsxMjMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgICk7CiAKLSAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxCbG9i
OjpIYW5kbGU+JiBibG9iSGFuZGxlcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJl
ZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFj
a2luZ1N0b3JlcworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hh
cj4mJiwgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPElt
YWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgPSB7IH0KICNlbmRpZgpAQCAtMTUyLDcgKzE1Miw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gbV93YXNtTW9k
dWxlc0FycmF5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+IG1f
d2FzbU1lbW9yeUhhbmRsZXNBcnJheTsKICNlbmRpZgotICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+
IG1fYmxvYkhhbmRsZXM7CisgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IG1fYmxvYkhhbmRsZXM7
CiAgICAgc2l6ZV90IG1fbWVtb3J5Q29zdCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCmluZGV4IDI3YmJhMmU3M2Q2NTYxNTE1MjcwYWEzNTdhNzBiYmMwMjIzNzEwYWQuLmMyOWE3
YmFmZDFhYTYwZWZiY2QzODIyOTMwNmYyZGFlMzNiMGZhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmNwcApAQCAtNzYsNzUgKzc2LDE5IEBAIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJl
Z2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLS8vIFVucmVnaXN0ZXJzIHRoZSBC
bG9iJ3MgaW50ZXJuYWwgVVJMIHVwb24gZGVzdHJ1Y3Rpb24uIFRoaXMgY2FuIGJlIHVzZWQgdG8g
ZXh0ZW5kIHRoZSBsaWZldGltZSBvZiB0aGUgQmxvYiBkYXRhCi0vLyB3aXRob3V0IGFjdHVhbGx5
IGtlZXBpbmcgdGhlIEJsb2Igb2JqZWN0IGFsaXZlLgotY2xhc3MgQmxvYkludGVybmFsVVJMIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJsb2JJbnRlcm5hbFVSTD4gewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8QmxvYkludGVybmFsVVJMPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJsb2JJbnRlcm5hbFVSTChXVEZNb3ZlKGJsb2JQYXJ0cyksIGNv
bnRlbnRUeXBlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxVUkw+IGNy
ZWF0ZUZvckRlc2VyaWFsaXphdGlvbihjb25zdCBVUkwmIHNvdXJjZVVSTCwgY29uc3QgU3RyaW5n
JiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKHNvdXJjZVVSTCwgZmlsZUJhY2tlZFBh
dGgsIHR5cGUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPEJsb2JJbnRlcm5hbFVSTD4gY3Jl
YXRlRm9yU2xpY2UoY29uc3QgVVJMJiBzb3VyY2VVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKHNvdXJjZVVSTCwgc3RhcnQsIGVuZCwgdHlwZSkpOwot
ICAgIH0KLQotICAgIHN0YXRpYyBSZWY8QmxvYkludGVybmFsVVJMPiBhZG9wdEludGVybmFsVVJM
KGNvbnN0IFVSTCYgdXJsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxv
YkludGVybmFsVVJMKGNyb3NzVGhyZWFkQ29weSh1cmwpKSk7Ci0gICAgfQotCi0gICAgfkJsb2JJ
bnRlcm5hbFVSTCgpCi0gICAgewotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKLSAgICB9Ci0KLSAgICBVUkwgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcm5hbFVSTC5pc29sYXRlZENvcHkoKTsgfQotCi1wcml2YXRlOgot
ICAgIEJsb2JJbnRlcm5hbFVSTChWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQotICAgICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3Jl
YXRlSW50ZXJuYWxVUkwoKSkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRl
bnRUeXBlKTsKLSAgICB9Ci0gICAgQmxvYkludGVybmFsVVJMKGNvbnN0IFVSTCYgc291cmNlVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAg
ICAgICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCi0gICAg
ewotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShtX2ludGVybmFsVVJMLCBzb3VyY2VVUkwsIHN0YXJ0LCBlbmQsIHR5cGUpOwotICAgIH0KLSAg
ICBCbG9iSW50ZXJuYWxVUkwoY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICAgICAgOiBtX2ludGVybmFsVVJM
KEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCi0gICAgewotICAgICAgICBpZiAoZmlsZUJh
Y2tlZFBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNvdXJjZVVSTCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNvdXJjZVVSTCwgZmlsZUJh
Y2tlZFBhdGgsIHR5cGUpOwotICAgIH0KLSAgICBCbG9iSW50ZXJuYWxVUkwoVVJMJiYgaW50ZXJu
YWxVUkwpCi0gICAgICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKGludGVybmFsVVJMKSkKLSAg
ICB7IH0KLQotICAgIFVSTCBtX2ludGVybmFsVVJMOwotfTsKLQogQmxvYjo6QmxvYihVbmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVVJMJiYg
dXJsLCBTdHJpbmcmJiB0eXBlKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAg
LCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFs
VVJMOjphZG9wdEludGVybmFsVVJMKHVybCkpCisgICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUo
dXJsKSkKIHsKIH0KIAogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoMCkKLSAgICAs
IG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoeyB9LCB7IH0pKQorICAgICwg
bV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogeworICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IH0sIHsg
fSk7CiB9CiAKIHN0YXRpYyBWZWN0b3I8QmxvYlBhcnQ+IGJ1aWxkQmxvYkRhdGEoVmVjdG9yPEJs
b2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcm
IHByb3BlcnR5QmFnKQpAQCAtMTYzLDQwICsxMDcsNDggQEAgc3RhdGljIFZlY3RvcjxCbG9iUGFy
dD4gYnVpbGRCbG9iRGF0YShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFu
dHMKIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJs
b2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcm
IHByb3BlcnR5QmFnKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV90
eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZShwcm9wZXJ0eUJhZy50eXBlKSkKLSAgICAsIG1faW50
ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoYnVpbGRCbG9iRGF0YShXVEZNb3ZlKGJs
b2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZyksIG1fdHlwZSkpCisgICAgLCBtX2ludGVybmFs
VVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiB7CisgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkQmxvYkRhdGEoV1RG
TW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcpLCBtX3R5cGUpOwogfQogCiBCbG9i
OjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCkKICAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNp
emUoKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoeyBCbG9i
UGFydChXVEZNb3ZlKGRhdGEpKSB9LCBjb250ZW50VHlwZSkpCisgICAgLCBtX2ludGVybmFsVVJM
KEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiB7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgQmxvYlBhcnQoV1RGTW92ZShk
YXRhKSkgfSwgY29udGVudFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3Rp
bmdCbG9iQ29uc3RydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEJsb2ImIGJsb2IpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHlw
ZShibG9iLnR5cGUoKSkKICAgICAsIG1fc2l6ZShibG9iLnNpemUoKSkKLSAgICAsIG1faW50ZXJu
YWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwg
bV90eXBlKSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwo
KSkKIHsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRl
cm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAogQmxvYjo6
QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0
aCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1hbGl6
ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9pbnRlcm5h
bFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZUZvckRlc2VyaWFsaXphdGlvbihzcmNVUkwsIGZp
bGVCYWNrZWRQYXRoLCBtX3R5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpKQogeworICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCisg
ICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChudWxscHRyLCBt
X2ludGVybmFsVVJMLCBzcmNVUkwpOworICAgIGVsc2UKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVS
TCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlw
ZSkpCi0gICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlRm9yU2xpY2Uo
c3JjVVJMLCBzdGFydCwgZW5kLCBtX3R5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJM
OjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkg
ZXF1YWwgdG8gZW5kIC0gc3RhcnQgc28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsK
KyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2lu
dGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQsIG1fdHlwZSk7CiB9CiAKIEJsb2I6On5CbG9i
KCkKQEAgLTIwNSwxNCArMTU3LDkgQEAgQmxvYjo6fkJsb2IoKQogICAgICAgICAoKm1fYmxvYkxv
YWRlcnMuYmVnaW4oKSktPmNhbmNlbCgpOwogfQogCi1VUkwgQmxvYjo6dXJsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9pbnRlcm5hbFVSTC0+dXJsKCk7Ci19Ci0KIFJlZjxCbG9iPiBCbG9iOjpz
bGljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiB7Ci0gICAgYXV0
byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKCZjb250ZXh0LCBtX2ludGVybmFsVVJMLT51cmwo
KSwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigq
bmV3IEJsb2IoJmNvbnRleHQsIG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBl
KSk7CiAgICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGJsb2I7CiB9CkBA
IC0yMjIsNyArMTY5LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2I6OnNpemUoKSBjb25zdAog
ICAgIGlmICghbV9zaXplKSB7CiAgICAgICAgIC8vIEZJWE1FOiBKYXZhU2NyaXB0IGNhbm5vdCBy
ZXByZXNlbnQgc2l6ZXMgYXMgbGFyZ2UgYXMgdW5zaWduZWQgbG9uZyBsb25nLCB3ZSBuZWVkIHRv
CiAgICAgICAgIC8vIGNvbWUgdXAgd2l0aCBhbiBleGNlcHRpb24gdG8gdGhyb3cgaWYgZmlsZSBz
aXplIGlzIG5vdCByZXByZXNlbnRhYmxlLgotICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWN0
dWFsU2l6ZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKG1faW50ZXJuYWxVUkwt
PnVybCgpKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGFjdHVhbFNpemUgPSBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShtX2ludGVybmFsVVJMKTsKICAgICAgICAgbV9zaXpl
ID0gaXNJbkJvdW5kczxsb25nIGxvbmc+KGFjdHVhbFNpemUpID8gYWN0dWFsU2l6ZSA6IDA7CiAg
ICAgfQogCkBAIC0zOTUsMjMgKzM0Miw5IEBAIGNvbnN0IGNoYXIqIEJsb2I6OmFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiQmxvYiI7CiB9CiAKLUJsb2I6OkhhbmRsZSBC
bG9iOjpoYW5kbGUoKSBjb25zdAotewotICAgIHJldHVybiBIYW5kbGUgeyBtX2ludGVybmFsVVJM
LmNvcHlSZWYoKSB9OwotfQotCi1CbG9iOjpIYW5kbGU6OkhhbmRsZShSZWY8QmxvYkludGVybmFs
VVJMPiYmIGludGVybmFsVVJMKQotICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKGludGVybmFs
VVJMKSkKLXsgfQotCi1CbG9iOjpIYW5kbGU6On5IYW5kbGUoKSA9IGRlZmF1bHQ7Ci0KLUJsb2I6
OkhhbmRsZTo6SGFuZGxlKEhhbmRsZSYmKSA9IGRlZmF1bHQ7Ci1CbG9iOjpIYW5kbGU6OkhhbmRs
ZShjb25zdCBIYW5kbGUmKSA9IGRlZmF1bHQ7Ci0KLVVSTCBCbG9iOjpIYW5kbGU6OnVybCgpIGNv
bnN0CitCbG9iVVJMSGFuZGxlIEJsb2I6OmhhbmRsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
aW50ZXJuYWxVUkwtPnVybCgpOworICAgIHJldHVybiBCbG9iVVJMSGFuZGxlIHsgbV9pbnRlcm5h
bFVSTCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmlu
ZGV4IDI1NTMxYmMzMDhlYzg5OTYyMzc3ZWNkNDAwZWMxMGQwODk0YTBiYWIuLjRlZDg2YTNlZjg3
YTgyMjVlOWJhZDA2ODU5NGFiZDdmMzlkOWNiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0z
Miw2ICszMiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJsb2JQcm9wZXJ0eUJhZy5o
IgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBw
YWJsZS5oIgpAQCAtNTcsNyArNTgsNiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgRXhjZXB0aW9uT3I7CiAKIHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZh
cmlhbnQ8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+LCBSZWZQdHI8QmxvYj4sIFN0cmluZz47Ci1jbGFzcyBCbG9iSW50ZXJuYWxVUkw7CiAKIGNs
YXNzIEJsb2IgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUs
IHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChCbG9iLCBXRUJDT1JFX0VYUE9SVCk7CkBAIC05
Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIFVSTCB1cmwoKSBjb25zdDsKKyAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbFVSTDsgfQogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbG9uZyBsb25nIHNpemUo
KSBjb25zdDsKQEAgLTExNywxOSArMTE3LDggQEAgcHVibGljOgogICAgIHZvaWQgYXJyYXlCdWZm
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAg
IEV4Y2VwdGlvbk9yPFJlZjxSZWFkYWJsZVN0cmVhbT4+IHN0cmVhbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CiAKLSAgICBjbGFzcyBIYW5kbGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgSGFuZGxlKFJlZjxCbG9iSW50ZXJuYWxVUkw+JiYpOwotICAgICAgICB+SGFuZGxlKCk7
Ci0gICAgICAgIEhhbmRsZShIYW5kbGUmJik7Ci0gICAgICAgIEhhbmRsZShjb25zdCBIYW5kbGUm
KTsKLSAgICAgICAgVVJMIHVybCgpIGNvbnN0OwotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxC
bG9iSW50ZXJuYWxVUkw+IG1faW50ZXJuYWxVUkw7Ci0gICAgfTsKLQogICAgIC8vIEtlZXBpbmcg
dGhlIGhhbmRsZSBhbGl2ZSB3aWxsIGtlZXAgdGhlIEJsb2IgZGF0YSBhbGl2ZSAoYnV0IG5vdCB0
aGUgQmxvYiBvYmplY3QpLgotICAgIEhhbmRsZSBoYW5kbGUoKSBjb25zdDsKKyAgICBCbG9iVVJM
SGFuZGxlIGhhbmRsZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC0xNjAsNyArMTQ5LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIGlzIGFuIGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8g
dGhlIGJsb2IgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAg
IC8vIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoaXMgYmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBu
ZXZlciB1c2VkIHRvIHNvdXJjZSB0aGUgYmxvYidzIGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhU
TUwgb3IgZm9yIEZpbGVSZWFkJ2luZywgcHVibGljIGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9y
IHRob3NlIHB1cnBvc2VzLgotICAgIFJlZjxCbG9iSW50ZXJuYWxVUkw+IG1faW50ZXJuYWxVUkw7
CisgICAgVVJMIG1faW50ZXJuYWxVUkw7CiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxC
bG9iTG9hZGVyPj4gbV9ibG9iTG9hZGVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2JVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNw
cAppbmRleCBkMDdmOWRiODVhMjk0NWM5M2RiMGNhZjA4MGEyNjhkMDViZjQ0YWExLi41NWM1ODEw
MTU5MWNlNDE1Yzc1Y2EwODA5MzRlYTMxZTE3MmQ1NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5jcHAKQEAgLTk2LDQ1ICs5Niw2NyBAQCBVUkwgQmxvYlVSTDo6Y3JlYXRlQmxvYlVSTChj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKICAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5n
KTsKIH0KIAotVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbjo6VVJMV2l0aEJsb2JVUkxM
aWZldGltZUV4dGVuc2lvbihjb25zdCBVUkwmIHVybCkKLSAgICA6IG1fdXJsKHVybCkKK0Jsb2JV
UkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUoY29uc3QgQmxvYlVSTEhhbmRsZSYgb3RoZXIpCisgICAg
OiBtX3VybChvdGhlci5tX3VybC5pc29sYXRlZENvcHkoKSkKIHsKLSAgICBleHRlbmRCbG9iVVJM
TGlmZXRpbWVJZk5lY2Vzc2FyeSgpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNz
YXJ5KCk7CiB9CiAKLVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb246On5VUkxXaXRoQmxv
YlVSTExpZmV0aW1lRXh0ZW5zaW9uKCkKK0Jsb2JVUkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUoY29u
c3QgVVJMJiB1cmwpCisgICAgOiBtX3VybCh1cmwuaXNvbGF0ZWRDb3B5KCkpCiB7Ci0gICAgdW5y
ZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpOworICAgIEFTU0VSVChtX3VybC5wcm90b2Nv
bElzQmxvYigpKTsKKyAgICByZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOwogfQog
Ci12b2lkIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb246OmV4dGVuZEJsb2JVUkxMaWZl
dGltZUlmTmVjZXNzYXJ5KCkKK0Jsb2JVUkxIYW5kbGU6On5CbG9iVVJMSGFuZGxlKCkKIHsKLSAg
ICBpZiAobV91cmwucHJvdG9jb2xJc0Jsb2IoKSkgewotICAgICAgICBhdXRvIG9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoQmxvYlVSTDo6Z2V0T3JpZ2luVVJMKG1fdXJsKSk7Ci0gICAg
ICAgIFVSTCB0ZW1wb3JhcnlCbG9iVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKG9yaWdp
bi5wdHIoKSk7Ci0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TChvcmlnaW4ucHRyKCksIHRlbXBvcmFyeUJsb2JVUkwsIG1fdXJsKTsKLSAgICAgICAgbV91cmwg
PSBXVEZNb3ZlKHRlbXBvcmFyeUJsb2JVUkwpOwotICAgIH0KKyAgICB1bnJlZ2lzdGVyQmxvYlVS
TEhhbmRsZUlmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbjo6dW5yZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpCit2b2lkIEJsb2JVUkxI
YW5kbGU6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV91
cmwucHJvdG9jb2xJc0Jsb2IoKSkKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5y
ZWdpc3RlckJsb2JVUkwobV91cmwpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkxIYW5kbGUobV91cmwpOworfQorCit2b2lkIEJsb2JVUkxIYW5kbGU6OnVu
cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX3VybC5wcm90
b2NvbElzQmxvYigpKQorICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShtX3VybCk7Cit9CisKK0Jsb2JVUkxIYW5kbGUmIEJsb2JVUkxIYW5kbGU6
Om9wZXJhdG9yPShjb25zdCBCbG9iVVJMSGFuZGxlJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyA9
PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIHVucmVnaXN0ZXJCbG9iVVJM
SGFuZGxlSWZOZWNlc3NhcnkoKTsKKyAgICBtX3VybCA9IG90aGVyLm1fdXJsLmlzb2xhdGVkQ29w
eSgpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCk7CisKKyAgICByZXR1
cm4gKnRoaXM7Cit9CisKK3ZvaWQgQmxvYlVSTEhhbmRsZTo6Y2xlYXIoKQoreworICAgIHVucmVn
aXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKKyAgICBtX3VybCA9IHsgfTsKIH0KIAot
VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiYgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbjo6b3BlcmF0b3I9KFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mJiBvdGhl
cikKK0Jsb2JVUkxIYW5kbGUmIEJsb2JVUkxIYW5kbGU6Om9wZXJhdG9yPShCbG9iVVJMSGFuZGxl
JiYgb3RoZXIpCiB7Ci0gICAgdW5yZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpOworICAg
IHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKICAgICBtX3VybCA9IHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV91cmwsIHsgfSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1VUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uJiBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uOjpvcGVyYXRvcj0oVVJMJiYgdXJsKQorQmxvYlVSTEhhbmRsZSYgQmxvYlVSTEhhbmRsZTo6
b3BlcmF0b3I9KGNvbnN0IFVSTCYgdXJsKQogewotICAgIHVucmVnaXN0ZXJDdXJyZW50VVJMSWZO
ZWNlc3NhcnkoKTsKLSAgICBtX3VybCA9IFdURk1vdmUodXJsKTsKLSAgICBleHRlbmRCbG9iVVJM
TGlmZXRpbWVJZk5lY2Vzc2FyeSgpOworICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0Jsb2IoKSk7
CisgICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIG1fdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5
KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2JVUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oCmluZGV4
IDgzMWY0MmNjODI4NWFiZDdhMGZlMTUzZDRkYWU4ZGFhMmRlNjA2N2EuLjU4NWFlM2RkNjU5NjBh
YmI4MjE0MDFhODg5ODY2ZGMyNGJmMjJjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYlVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oCkBA
IC01OCwyNyArNTgsMzEgQEAgcHJpdmF0ZToKICAgICBCbG9iVVJMKCkgeyB9CiB9OwogCi1jbGFz
cyBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uIHsKKy8vIEV4dGVuZHMgdGhlIGxpZmV0
aW1lIG9mIHRoZSBCbG9iIFVSTC4gVGhpcyBtZWFucyB0aGF0IHRoZSBibG9iIFVSTCB3aWxsIHJl
bWFpbiB2YWxpZCBhZnRlcgorLy8gcmV2b2tlT2JqZWN0VVJMKCkgaGFzIGJlZW4gY2FsbGVkLCBh
cyBsb25nIGFzIEJsb2JVUkxIYW5kbGUgb2JqZWN0cyByZWZlciB0byB0aGUgYmxvYiBVUkwuCitj
bGFzcyBCbG9iVVJMSGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKTsKIHB1
YmxpYzoKLSAgICBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKCkgPSBkZWZhdWx0Owot
ICAgIGV4cGxpY2l0IFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oY29uc3QgVVJMJik7
Ci0gICAgflVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oKTsKKyAgICBCbG9iVVJMSGFu
ZGxlKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IEJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJik7
CisgICAgfkJsb2JVUkxIYW5kbGUoKTsKIAotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24oVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiYmIG90aGVyKQorICAgIEJsb2JV
UkxIYW5kbGUoY29uc3QgQmxvYlVSTEhhbmRsZSYpOworICAgIEJsb2JVUkxIYW5kbGUoQmxvYlVS
TEhhbmRsZSYmIG90aGVyKQogICAgICAgICA6IG1fdXJsKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV91
cmwsIHsgfSkpCiAgICAgeyB9CiAKLSAgICBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9u
JiBvcGVyYXRvcj0oVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiYmKTsKLSAgICBVUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uJiBvcGVyYXRvcj0oVVJMJiYpOworICAgIEJsb2JV
UkxIYW5kbGUmIG9wZXJhdG9yPShjb25zdCBCbG9iVVJMSGFuZGxlJik7CisgICAgQmxvYlVSTEhh
bmRsZSYgb3BlcmF0b3I9KEJsb2JVUkxIYW5kbGUmJik7CisgICAgQmxvYlVSTEhhbmRsZSYgb3Bl
cmF0b3I9KGNvbnN0IFVSTCYpOwogCi0gICAgb3BlcmF0b3IgY29uc3QgVVJMJigpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQorICAgIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybC5pc29sYXRlZENvcHkoKTsg
fQorCisgICAgdm9pZCBjbGVhcigpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdW5yZWdpc3RlckN1
cnJlbnRVUkxJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZO
ZWNlc3NhcnkoKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3Nhcnko
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCk7CiAKICAgICBV
UkwgbV91cmw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAKaW5kZXggYmQ4MWY4ZWEzMTlhZTAzOWZlZGMxNzVkMTQxOGM4NDJmMDIy
MDkwZi4uOWFlZmVmMDY2ZmM2OWNhMmQ5YjQwNDcxMmE0ZTc4ZmMzYjA3NzMyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC0x
NjQsNiArMTY0LDI4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgfSk7CiB9CiAKK3ZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlm
IChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
UkxIYW5kbGUodXJsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsT25NYWluVGhy
ZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7CisgICAgfSk7Cit9CisKK3ZvaWQgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpCit7
CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVn
aXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2Fs
bE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JS
ZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7CisgICAgfSk7Cit9CisKIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Z2V0Q2FjaGVkT3Jp
Z2luKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChhdXRvIGNhY2hlZE9yaWdpbiA9IG9yaWdp
bk1hcCgpLT5nZXQodXJsLnN0cmluZygpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYmNkMzZiZTNmYTdiMzkyYmI2MzEzYjNlYTY1
YjkzNzVjZTIxMTVmMC4uMTQxMjg0ODJmZGM1NjdkZGY0MDYxMzcyNTcyMzkyYTlhNmM0MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgK
QEAgLTQ3LDYgKzQ3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICBz
dGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKIAorICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKTsKKwogICAgIHN0YXRpYyB1bnNpZ25l
ZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBv
cmlnaW4gZm9yIHRoZSBnaXZlbiBibG9iIFVSTC4gVGhpcyBpcyBiZWNhdXNlIHdlIGFyZSBub3Qg
YWJsZSB0byBlbWJlZCB0aGUgdW5pcXVlIHNlY3VyaXR5IG9yaWdpbiBvciB0aGUgb3JpZ2luIG9m
IGZpbGUgVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggNDcx
NDc0OTVmYjRjZjg0Y2QwZDJhNmI2OGZjMmYzMTBiZTdjMDllMC4uY2Q4OTVhOTc5NWNhMjgwN2Yz
NDU5N2M3MDI0NzA5YTA5OGFmOGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcApAQCAtMTA0LDE3ICsxMDQsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXUKICAg
ICBjaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNw
b25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCB7IH0sIFdURk1v
dmUoZnVuY3Rpb24pKTsKIH0KIAotVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiBGcmFt
ZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3Nhcnko
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBQb2xpY3lE
ZWNpc2lvbk1vZGUgbW9kZSkgY29uc3QKK0Jsb2JVUkxIYW5kbGUgRnJhbWVMb2FkZXI6OlBvbGlj
eUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUG9saWN5RGVjaXNpb25Nb2RlIG1vZGUpIGNvbnN0CiB7CiAgICAg
aWYgKG1vZGUgIT0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMgfHwgIXJlcXVlc3Qu
dXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFVSTFdp
dGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gdXJsV2l0aExpZmV0aW1lRXh0ZW5zaW9uKHJlcXVl
c3QudXJsKCkpOwotICAgIHJlcXVlc3Quc2V0VVJMKHVybFdpdGhMaWZldGltZUV4dGVuc2lvbik7
Ci0gICAgaWYgKGxvYWRlcikKLSAgICAgICAgbG9hZGVyLT5yZXF1ZXN0KCkuc2V0VVJMKHVybFdp
dGhMaWZldGltZUV4dGVuc2lvbik7Ci0KLSAgICByZXR1cm4gdXJsV2l0aExpZmV0aW1lRXh0ZW5z
aW9uOworICAgIHJldHVybiBCbG9iVVJMSGFuZGxlIHsgcmVxdWVzdC51cmwoKSB9OwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24sIFBvbGlj
eURlY2lzaW9uTW9kZSBwb2xpY3lEZWNpc2lvbk1vZGUpCkBAIC0xOTcsNyArMTkyLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QKIAogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xlYXJQcm92aXNp
b25hbExvYWRGb3JQb2xpY3lDaGVjaygpOwogCi0gICAgYXV0byBibG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0LCBsb2FkZXIs
IHBvbGljeURlY2lzaW9uTW9kZSk7CisgICAgYXV0byBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24g
PSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0LCBwb2xpY3lEZWNpc2lv
bk1vZGUpOwogCiAgICAgYm9vbCBpc0luaXRpYWxFbXB0eURvY3VtZW50TG9hZCA9ICFtX2ZyYW1l
LmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgp
ICYmIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Fib3V0KCkgJiYgIXN1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKTsKICAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0gUG9saWN5Q2hlY2tJZGVudGlm
aWVyOjpjcmVhdGUoKTsKQEAgLTI1NSw3ICsyNTAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdh
dAogICAgIGlmICghRE9NV2luZG93OjphbGxvd1BvcFVwKG1fZnJhbWUpKQogICAgICAgICByZXR1
cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCB7IH0sIHsgfSwgU2hvdWxkQ29udGludWVQb2xpY3lD
aGVjazo6Tm8pOwogCi0gICAgYXV0byBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBleHRlbmRC
bG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0LCBudWxscHRyKTsKKyAgICBhdXRvIGJs
b2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5
KHJlcXVlc3QpOwogCiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRl
bnRpZmllcjo6Y3JlYXRlKCk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0
LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgcmVxdWVzdElkZW50aWZpZXIsIFtmcmFtZSA9
IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNr
ZXIuaAppbmRleCAzYzY2MjI4MzU2Mzc3YWY4OWQwOWVhNTc0NWMxMTJlOTE0ZmI4MjA2Li5hNWI3
ZTNmZDEwYzRjZWQ1ZDA2Yzk5MzE1MmY2OGFlYzYzNThmMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBO
YXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7Ci1jbGFzcyBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOworY2xhc3MgQmxv
YlVSTEhhbmRsZTsKIAogZW51bSBjbGFzcyBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gOiB1aW50
OF90IHsKICAgICBDb250aW51ZUxvYWQsCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB2b2lkIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShjb25zdCBSZXNvdXJj
ZUVycm9yJik7Ci0gICAgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiBleHRlbmRCbG9i
VVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShSZXNvdXJjZVJlcXVlc3QmLCBEb2N1bWVudExvYWRlcios
IFBvbGljeURlY2lzaW9uTW9kZSA9IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKSBj
b25zdDsKKyAgICBCbG9iVVJMSGFuZGxlIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeURlY2lzaW9uTW9kZSA9IFBvbGljeURlY2lz
aW9uTW9kZTo6QXN5bmNocm9ub3VzKSBjb25zdDsKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAppbmRleCA3
NTk1NzAyMjE3MjliZmI1MThlMmFiYjU0MjAwM2ZhZjA4YmM2ZjUyLi42ODlkMzE5MDcxMDhkYzQ0
Mzk4MDRmMWU1NDIyNjllY2I5ZTE4YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTYzLDYgKzYzLDkgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpID0gMDsKIAorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKSA9IDA7CisKICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgZmlsZVBhdGhzKT4mJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMzJkZDhjMDhlMjE5MDZmNGEyZDhm
MmE4YzMwYzdlYTVhYTk1MjY3NC4uNDQ4MmYxZjIwNzI4NDg0ZGJiNzg5NzQ0ZmNjMjUzMWMxZGU4
ZGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBs
OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXIKIAogICAgIGF1dG8gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsK
ICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZShXVEZNb3ZlKGZpbGUpKTsKLSAgICBtX2Jsb2JzLnNl
dCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmxvYkRhdGEpKTsKKyAgICBhZGRCbG9iRGF0YSh1cmwu
c3RyaW5nKCksIFdURk1vdmUoYmxvYkRhdGEpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBs
OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9i
UGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9p
ZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3Rv
cjxCbG9iUGFydD4mJiBibG9iUGEKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fYmxvYnMuc2V0
KHVybC5zdHJpbmcoKSwgV1RGTW92ZShibG9iRGF0YSkpOworICAgIGFkZEJsb2JEYXRhKHVybC5z
dHJpbmcoKSwgV1RGTW92ZShibG9iRGF0YSkpOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeUltcGw6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCkBAIC0x
NjQsNyArMTY0LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QKIAogICAgIEJsb2JEYXRhKiBz
cmMgPSBnZXRCbG9iRGF0YUZyb21VUkwoc3JjVVJMKTsKICAgICBpZiAoc3JjKSB7Ci0gICAgICAg
IG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgc3JjKTsKKyAgICAgICAgYWRkQmxvYkRhdGEodXJs
LnN0cmluZygpLCBzcmMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzQsNyArMTc0
LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICBhdXRvIGJhY2tpbmdGaWxlID0gQmxv
YkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CiAgICAgYmFja2luZ0ZpbGUtPmFwcGVuZEZpbGUo
ZmlsZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwg
V1RGTW92ZShiYWNraW5nRmlsZSkpOworICAgIGFkZEJsb2JEYXRhKHVybC5zdHJpbmcoKSwgV1RG
TW92ZShiYWNraW5nRmlsZSkpOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAt
MjExLDEyICsyMTEsMTQgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwKICAgICBhcHBlbmRTdG9y
YWdlSXRlbXMobmV3RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3
TGVuZ3RoKTsKIAogICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRh
KSk7CisgICAgbV9ibG9iUmVmZXJlbmNlcy5hZGQodXJsLnN0cmluZygpKTsKIH0KIAogdm9pZCBC
bG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fYmxvYnMucmVtb3ZlKHVybC5zdHJpbmco
KSk7CisgICAgaWYgKG1fYmxvYlJlZmVyZW5jZXMucmVtb3ZlKHVybC5zdHJpbmcoKSkpCisgICAg
ICAgIG1fYmxvYnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiB9CiAKIEJsb2JEYXRhKiBCbG9iUmVn
aXN0cnlJbXBsOjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CkBAIC0z
NTksNCArMzYxLDIzIEBAIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gQmxv
YlJlZ2lzdHJ5SW1wbDo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphZGRCbG9iRGF0YShjb25zdCBXVEY6OlN0
cmluZyYgdXJsLCBSZWZQdHI8QmxvYkRhdGE+JiYgYmxvYkRhdGEpCit7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2Jsb2JzLnNldCh1cmwsIFdURk1vdmUoYmxvYkRhdGEpKTsKKyAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIG1fYmxvYlJlZmVyZW5jZXMuYWRkKHVybCk7Cit9
CisKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIGlmIChtX2Jsb2JzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpCisgICAg
ICAgIG1fYmxvYlJlZmVyZW5jZXMuYWRkKHVybC5zdHJpbmcoKSk7Cit9CisKK3ZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpCit7Cisg
ICAgaWYgKG1fYmxvYlJlZmVyZW5jZXMucmVtb3ZlKHVybC5zdHJpbmcoKSkpCisgICAgICAgIG1f
YmxvYnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmgKaW5kZXggZDQ0NDUxNDFhYTJmY2M4OWZlZGYzOWU3ZDg3ZWEzMDgxZTIzNmRjZC4uNTc0MDM2
YTU2ZDQxYmRhMmQ0M2E0M2Q1YWFmMzg4OTA2MjNmNmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKQEAgLTMzLDYgKzMzLDcg
QEAKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlJlZ2lzdHJ5LmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KQEAgLTY1LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmKTsKIAorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KGNvbnN0IFVSTCYpOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJM
Jik7CisKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJik7CiAKICAg
ICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRo
cyk+JiYpOwpAQCAtNzgsNiArODIsOSBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKSBjb25zdDsKIAogcHJp
dmF0ZToKKyAgICB2b2lkIGFkZEJsb2JEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBSZWZQdHI8Qmxv
YkRhdGE+JiYpOworCisgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX2Jsb2JSZWZlcmVuY2Vz
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QmxvYkRhdGE+PiBtX2Jsb2JzOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYzNhN2YxZDc1MzQ4ZGJmNjU0
NTc3ZTAyZDI5YzZhMmJlMDU5YjM5OC4uMTI3ZTBmYWJiY2MwYzU2NTJhYmJkMmIwMmUxZTA1Nzc0
NzgzODc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNTEsNyAr
MjUxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFJlc3BvbnNlVHlw
ZShSZXNwb25zZVR5cGUgdHlwZSkKICAgICAvLyBhdHRlbXB0IHRvIGRpc2NvdXJhZ2Ugc3luY2hy
b25vdXMgWEhSIHVzZS4gcmVzcG9uc2VUeXBlIGlzIG9uZSBzdWNoIHBpZWNlIG9mIGZ1bmN0aW9u
YWxpdHkuCiAgICAgLy8gV2UnbGwgb25seSBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBmb3Ig
SFRUUChTKSByZXF1ZXN0cyBzaW5jZSBzeW5jIHJlcXVlc3RzIGZvciBsb2NhbCBwcm90b2NvbHMK
ICAgICAvLyBzdWNoIGFzIGZpbGU6IGFuZCBkYXRhOiBzdGlsbCBtYWtlIHNlbnNlIHRvIGFsbG93
LgotICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1l
bnQoKSAmJiBtX3VybC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBpZiAo
IW1fYXN5bmMgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkgJiYgbV91
cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUgY2Fu
bm90IGJlIGNoYW5nZWQgZm9yIHN5bmNocm9ub3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9t
IHRoZSB3aW5kb3cgY29udGV4dC4iKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRBY2Nlc3NFcnJvciB9OwogICAgIH0KQEAgLTM4Miw5ICszODIsOSBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJM
JiB1cmwsIGJvbwogICAgIGNsZWFyUmVzcG9uc2UoKTsKICAgICBjbGVhclJlcXVlc3QoKTsKIAot
ICAgIGF1dG8gdXBncmFkZWRVUkwgPSB1cmw7Ci0gICAgY29udGV4dC0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh1cGdyYWRlZFVSTCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKLSAgICBtX3Vy
bCA9IFdURk1vdmUodXBncmFkZWRVUkwpOworICAgIGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQobV91cmwsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgaWYgKG1fdXJsLnBy
b3RvY29sSXNCbG9iKCkpCisgICAgICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gbV91
cmw7CiAKICAgICBtX2FzeW5jID0gYXN5bmM7CiAKQEAgLTQxNyw3ICs0MTcsNyBAQCBzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgp
CiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKICAgICBp
ZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5z
aG91bGRJZ25vcmVTeW5jWEhScygpKSB7Ci0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG1ha2VTdHJpbmcoIklnbm9yaW5nIFhNTEh0dHBSZXF1ZXN0LnNl
bmQoKSBjYWxsIGZvciAnIiwgbV91cmwudXJsKCkuc3RyaW5nKCksICInIGJlY2F1c2UgdGhlIG1h
eGltdW0gbnVtYmVyIG9mIHN5bmNocm9ub3VzIGZhaWx1cmVzIHdhcyByZWFjaGVkLiIpKTsKKyAg
ICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbWFrZVN0cmlu
ZygiSWdub3JpbmcgWE1MSHR0cFJlcXVlc3Quc2VuZCgpIGNhbGwgZm9yICciLCBtX3VybC5zdHJp
bmcoKSwgIicgYmVjYXVzZSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3luY2hyb25vdXMgZmFpbHVy
ZXMgd2FzIHJlYWNoZWQuIikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3I8dm9pZD4geyB9
OwogICAgIH0KIApAQCAtNTIxLDcgKzUyMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kKEJsb2ImIGJvZHkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52
YWx1ZSgpKTsKIAogICAgIGlmIChtX21ldGhvZCAhPSAiR0VUIiAmJiBtX21ldGhvZCAhPSAiSEVB
RCIpIHsKLSAgICAgICAgaWYgKCFtX3VybC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKKyAgICAgICAgaWYgKCFtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgcG9zdGluZyBCbG9icyB0
byBub24taHR0cCBVUkxzIChlLmcuIGN1c3RvbSBVUkwgc2NoZW1lcykKICAgICAgICAgICAgIC8v
IGJ1dCBiZWNhdXNlIG9mIHRoZSBhcmNoaXRlY3R1cmUgb2YgYmxvYi1oYW5kbGluZyB0aGF0IHdp
bGwgcmVxdWlyZSBhIGZhaXIgYW1vdW50IG9mIHdvcmsuCiAgICAgICAgICAgICAKQEAgLTU5NCw3
ICs1OTQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZEJ5dGVzRGF0
YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogRXhjZXB0aW9uT3I8dm9pZD4gWE1M
SHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoKQogewogICAgIC8vIE9ubHkgR0VUIHJlcXVlc3Qg
aXMgc3VwcG9ydGVkIGZvciBibG9iIFVSTC4KLSAgICBpZiAoIW1fYXN5bmMgJiYgbV91cmwudXJs
KCkucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAiR0VUIikKKyAgICBpZiAoIW1fYXN5
bmMgJiYgbV91cmwucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAiR0VUIikKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciB9OwogCiAgICAgaWYgKG1fYXN5bmMg
JiYgbV91cGxvYWQgJiYgbV91cGxvYWQtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCkBAIC03NDcsNiAr
NzQ3LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXF1ZXN0KCkKICAgICBtX3JlcXVl
c3RIZWFkZXJzLmNsZWFyKCk7CiAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IG51bGxwdHI7CiAg
ICAgbV91cmwgPSBVUkwgeyB9OworICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uLmNsZWFy
KCk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmdlbmVyaWNFcnJvcigpCkBAIC05MzksNiAr
OTQwLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nKQogCiAgICAgbV9sb2FkaW5nQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV91cmwg
PSBVUkwgeyB9OworICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uLmNsZWFyKCk7CiAKICAg
ICBtX3NlbmRGbGFnID0gZmFsc2U7CiAgICAgY2hhbmdlU3RhdGUoRE9ORSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGI0OGUxYjkwZmFhYTUyZDZmZTljNTNhNmExZjIwOTkz
NWM1M2JlOGIuLmMwNGExNjg5NjA5YjZmYjkxYTY4MGM5OGY3ZTA3MzJhNzQ4ZjllZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yMTYsNyArMjE2LDggQEAgcHJpdmF0ZToK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxYTUxIdHRwUmVxdWVzdFVwbG9hZD4gbV91cGxvYWQ7CiAK
LSAgICBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uIG1fdXJsOworICAgIFVSTCBtX3Vy
bDsKKyAgICBCbG9iVVJMSGFuZGxlIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOwogICAgIFN0
cmluZyBtX21ldGhvZDsKICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAgICAg
UmVmUHRyPEZvcm1EYXRhPiBtX3JlcXVlc3RFbnRpdHlCb2R5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCA2M2MyNDMxNTEzYjhmNzFhNWQ4ZGU5NjM5NGMxNGJlOGQyZDNmY2U1Li44
ODQzODJkNGNmNmI1NGNlMzk3YWNiOTA4ODE2NDUwYmI2YzBkMzVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtODY2LDYgKzg2NiwyNCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKICAgICBzZXNz
aW9uLT5ibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAg
aWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMWE1NDQ0YmU3
YjQ3ZTVkYzEyMWQ1OGY4MGJhYWRiYTE4ZDNjY2MzYy4uZDkyNDMyMTM5Mjk4ZGJkNjNmNGE3ZTE4
YzNmMGIwMWRkZjE0ODllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjM2LDYgKzIz
Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsK
ICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
CiAKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpOworCiAgICAgdm9pZCBzZXRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBjcmVh
dGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgV2ViQ29yZTo6V2Vi
U29ja2V0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCA5YjMyODk2ODEwNjE5YmExOWRjNWJmNDM3YjM2OGE3Y2E3ZmE0MzFiLi43OTZi
ZmE0NGNjMjYyNzA4NzUzZTc2MzE4M2E1YTAxN2M3YWZmYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU2LDYgKzU2LDggQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVucmVn
aXN0ZXJCbG9iVVJMKFVSTCB1cmwpCiAgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90
IHJlc3VsdFNpemUpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
VmVjdG9yPFN0cmluZz4gYmxvYlVSTHMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFz
eW5jCisgICAgUmVnaXN0ZXJCbG9iVVJMSGFuZGxlKFVSTCB1cmwpOworICAgIFVucmVnaXN0ZXJC
bG9iVVJMSGFuZGxlKFVSTCB1cmwpOwogCiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggYjUwZjQ5YmM4MzY0MmFmYTE2MGFiZDY4ZjQ5N2Q1YjhhMmY0YmY3Ny4uNzk2
NjJlZmJkMTE2ODYxOWZmY2Y2NWNiMjg4NWMxZjQwMzViNmIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTY1LDYgKzY1LDggQEAgQmxvYlJlZ2lzdHJ5KiBOZXR3b3Jr
UHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKICAgICAgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQogICAgICAgICB2b2lk
IHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxIYW5kbGUoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB9OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxFbXB0eUJsb2JSZWdpc3RyeT4gYmxvYlJlZ2lzdHJ5OwogICAgIHJldHVybiAmYmxvYlJlZ2lz
dHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDI4ZjY4YTE0ZDUxZWI5NWU2Zjk0YmRhM2VmNDM1
ZjQ3ODkwMmYxMjAuLjAwNTNiN2VhMjJiOWYyMjA3YmYxZGU4NjUxZTgwZGNlMmM5NDE4YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKQEAgLTc0LDYgKzc0LDE2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCwgY29u
dGVudFR5cGUpLCAwKTsKIH0KIAordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9i
VVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KHVybCksIDApOworfQorCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVS
TEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KHVybCksIDApOworfQorCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJs
b2JTaXplKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHVpbnQ2NF90IHJlc3VsdFNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAppbmRleCA1MmZhY2Y4MTgyY2EyMzEwYjNiOGZhNWE0MGRiNjQ3ZTBjYzEzM2MxLi4xODI0MmY1
MmVjYjVmY2M3MTNiYjAxM2VmN2NhYmE5Zjc1OWE1Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM5LDYgKzM5
LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7CisgICAgdm9pZCByZWdp
c3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQppbmRleCBiZGM4NjVkMWUzNmU1ZDM1OGRlMWNlZmQ5YmZiMzc1MjllYjRi
MmNjLi44YmIyOGI5Zjc5MGZjZDdmYWNmZTczNTY0NjE1ODE5ZjJiNjQ4YWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC05MSw2ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOyB9CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JT
aXplKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6
ZSh1cmwpOyB9CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lz
dHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwm
IHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsg
fQorICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpIGZpbmFs
IHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsgfQogCiAgICAg
QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgpIGZpbmFsIHsgcmV0dXJuICZtX2Js
b2JSZWdpc3RyeTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBjZmQz
ZDU4MzAxOThhMzkwNGE3NDQ3OWZiMGFkNzhlZjk3MjMzZjc5Li5jZjZhNjg4MzkyMGMxYzIxZDA2
MDRmNDg5ZDYyYjgyNzFkNmY4NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTg3LDYgKzg3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVy
bCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZp
bmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KICAgICB2b2lkIHdy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkud3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsgfQorICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CiAKICAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9i
UmVnaXN0cnlJbXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA0NDFlMTQwMWQyZjRkMWQ3NWEyMjE0NjFmZWM5NmM3MzAwMTcxN2Q2Li42MDY3ZDEwYWJjOGUy
YmJkMjk3ODg3NTNlN2Y5OGI0YTBmM2MwZjk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDgtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIFVS
TCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAq
IGZhc3QvZmlsZXMvYmxvYi1hcy1mcmFtZS11cmwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA4
LTA5ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBH
YXJkZW4gYWNjZXNzaWJpbGl0eS9zZWxlY3RlZC1zdGF0ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbnMu
aHRtbCB0aW1lb3V0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWFz
LWZyYW1lLXVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMt
ZnJhbWUtdXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGY5MmZmNTYzNTFlYWNmOGM5NWI3
YzVjNWJmNTQ0YWYzNGYwZTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy9ibG9iLWFzLWZyYW1lLXVybC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorTWFr
ZXMgc3VyZSB0aGF0IHVzaW5nIGEgQmxvYiBVUkwgYXMgZnJhbWUgVVJMIHdvcmtzIGFzIGV4cGVj
dGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpZnJhbWUuY29udGVu
dERvY3VtZW50LmJvZHkuaW5uZXJUZXh0IGlzICJGT08iCitQQVNTIGlmcmFtZS5jb250ZW50V2lu
ZG93LmxvY2F0aW9uLmhyZWYgPT0gYmxvYlVSTCBpcyB0cnVlCitQQVNTIGlmcmFtZS5jb250ZW50
RG9jdW1lbnQuVVJMID09IGJsb2JVUkwgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXMvYmxvYi1hcy1mcmFtZS11cmwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxv
Yi1hcy1mcmFtZS11cmwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzQ4MGNkNjFmNjU0NDliMTMxYjcyMjNj
NDBiMmVlNjYxNzhjYWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy9ibG9iLWFzLWZyYW1lLXVybC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIk1ha2VzIHN1cmUgdGhhdCB1c2lu
ZyBhIEJsb2IgVVJMIGFzIGZyYW1lIFVSTCB3b3JrcyBhcyBleHBlY3RlZC4iKTsKK2pzVGVzdElz
QXN5bmMgPSB0cnVlOworCitsZXQgYmxvYkNvbnRlbnRzID0gYDxib2R5PkZPTzwvYm9keT5gOwor
bGV0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworbGV0IGJsb2Ig
PSBuZXcgQmxvYihbYmxvYkNvbnRlbnRzXSwgeyB0eXBlOiAidGV4dC9odG1sIiB9KTsKK2xldCBi
bG9iVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKK2lmcmFtZS5zcmMgPSBibG9iVVJM
OworaWZyYW1lLm9ubG9hZCA9ICgpID0+IHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlm
cmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5lclRleHQiLCAiRk9PIik7CisgICAgc2hvdWxk
QmVUcnVlKCJpZnJhbWUuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmID09IGJsb2JVUkwiKTsK
KyAgICBzaG91bGRCZVRydWUoImlmcmFtZS5jb250ZW50RG9jdW1lbnQuVVJMID09IGJsb2JVUkwi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307Citkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUp
OworYmxvYiA9IG51bGw7CitnYygpOworc2V0VGltZW91dChnYywgMCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435212</attachid>
            <date>2021-08-09 14:22:43 -0700</date>
            <delta_ts>2021-08-09 15:25:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228923-20210809142242.patch</filename>
            <type>text/plain</type>
            <size>55028</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQwMjU1NDU2Y2RkNjg2
OGYzODYyNmFjNjdlNGVkMDMyYTRmOTRmYy4uMWE0NGMwMDM0OGQ3MTIyNjY0ODhiOThmYThlZjRm
MjM4MTU1YjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICBCbG9iIFVSTCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQuIFRoaXMgaXMgYmVjYXVzZSB3
ZSB1c2UgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB0bworICAgICAgICBleHRlbmQg
dGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIFVSTCBkdXJpbmcgdGhlIGxvYWQgYW5kIFVSTFdpdGhC
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZW5kcworICAgICAgICB1cCBjcmVhdGluZyBhIG5ldyBw
dWJsaWMgQmxvYiBVUkwuIFRoaXMgaXMgV2ViLW9ic2VydmFibGUgc28gd2UgbmVlZCBhIHdheSB0
byBleHRlbmQgdGhlCisgICAgICAgIGxpZmV0aW1lIG9mIGEgQmxvYiBVUkwgd2l0aG91dCBhY3R1
YWxseSBnZW5lcmF0aW5nIGEgbmV3IEJsb2IgVVJMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVw
bGFjZXMgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB3aXRoIGEgbmV3IEJsb2JVUkxI
YW5kbGUgY2xhc3Mgd2hpY2gKKyAgICAgICAgZXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgYSBCbG9i
IFVSTCBhcyBsb25nIGFzIHRoZXJlIGFyZSBCbG9iVVJMSGFuZGxlIG9iamVjdHMgcmVmZXJyaW5n
CisgICAgICAgIHRvIGl0LiBCbG9iVVJMSGFuZGxlIHdvcmtzIHdpdGggYm90aCBwcml2YXRlIGFu
ZCBwdWJsaWMgQmxvYiBVUkxzIHNvIGl0IHJlcGxhY2VzCisgICAgICAgIEJsb2I6OkhhbmRsZSBh
cyB3ZWxsICh3aGljaCBJIHJlY2VudGx5IGludHJvZHVjZWQgdmlhIHIyODA1NDcpLiBUaGUgQmxv
YiBVUkwgbm8gbG9uZ2VyCisgICAgICAgIGNoYW5nZXMgd2hlbiB3ZSBleHRlbmQgaXRzIGxpZmV0
aW1lLiBJbnN0ZWFkLCB0aGUgQmxvYiByZWdpc3RyeSBub3cga2VlcHMgdHJhY2sgb2YKKyAgICAg
ICAgcmVmZXJlbmNlcyB0byBhIGdpdmVuIEJsb2IgYW5kIG9ubHkgcmVtb3ZlcyBhIEJsb2IgVVJM
IG9uY2UgdGhlcmUgYXJlIG5vIGxvbmdlciBhbnkKKyAgICAgICAgcmVmZXJlbmNlcyB0byBpdC4K
KworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWwKKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYkhhbmRsZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2I6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6aGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnVy
bCBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JVUkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YlVSTEhhbmRsZTo6fkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhh
bmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlVSTEhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5o
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjp1cmwgY29uc3QpOgorICAgICAgICAqIGZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGxvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpj
aGVja05ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphZGRCbG9iRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkxI
YW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJl
VG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdC5oOgorCiAyMDIxLTA4LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYXxHUFVdIHBsYXRmb3JtTGF5ZXIoKSBub3QgYWx3YXlzIGFkZGVk
IHRvIHJlbW90ZWRseSBob3N0ZWQgY29udGV4dDsgYmxhY2sgdmlkZW8gd2hpbGUgcGxheWluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBmNGMxNzIzOWU1NDU2ZDVhN2VmYzQwNzQ2ODU3NTc0ZWQwYmZlM2FhLi4zMzZj
NDUyZmIyNDU5Y2FhNTVhMDA3NTY2MjYwNjk4MTZjZmM0NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDIxLTA4LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgQmxvYiBVUkwgY2hhbmdlcyBhZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1Bs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxh
dGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpC
bG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorCiAyMDIxLTA4LTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYXxHUFVdIHBsYXRm
b3JtTGF5ZXIoKSBub3QgYWx3YXlzIGFkZGVkIHRvIHJlbW90ZWRseSBob3N0ZWQgY29udGV4dDsg
YmxhY2sgdmlkZW8gd2hpbGUgcGxheWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IGQ0YjU5OGM2NWQ2OGUyNDYwNTQ1M2ViNjQyZTg3YWM2NzRiYzc3NmEuLmFjZDYyYTI2Njk5ZTcy
ZDJlNWMwZmQyNDJjNTJjMzdkMDAyZjcxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIwMjEtMDgtMDcgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWR1cGxpY2F0ZSBsb2dnaW5nIGNo
YW5uZWwgYWxnb3JpdGhtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDc1OWMyMGI3
ODFmMTlmN2NmZjYxMGRiNGU3OGZiMDNhNWI4NDVkYWYuLmUwNTIxOGZjMDE0MGM0MmUwYWYxOWVj
MzIwZTViMzk5NzAwN2NjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwOgorCiAyMDIxLTA4LTAyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3Jp
LkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIEFTU0VSVElPTiBGQUlMRUQ6IGV2dC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQgaW4gV2ViVmlldzo6aW50ZXJwcmV0S2V5RXZlbnQgc2lu
Y2UgcjI4MDQ5MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZTViODAxYjJmNmQ4MTA4Nzg2OWRjY2U0
ZmY4MmY3ODcwZmZkNjg0OS4uYWY1NzkyNTZkZjA1NDgwMWE3ZTkyNTEwOTIzMWI5YmNkNjljOWJk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC01OTgsNiArNTk4LDcgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKICAg
ICBmaWxlYXBpL0Jsb2IuaAogICAgIGZpbGVhcGkvQmxvYlByb3BlcnR5QmFnLmgKKyAgICBmaWxl
YXBpL0Jsb2JVUkwuaAogICAgIGZpbGVhcGkvRW5kaW5nVHlwZS5oCiAgICAgZmlsZWFwaS9GaWxl
LmgKICAgICBmaWxlYXBpL0ZpbGVMaXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjM5YTViOGYxMjVkODhkOTQ2N2ZkMjI3
OGVjODE4OTBkNTY5NGQ3Li4zNjQxNzExNGYwM2FlMDEzOTJiODlkNzNhY2NhZWRjNzY4NGIwYzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zMDM3LDcgKzMwMzcsNyBAQAogCQk5NzYyN0I5ODE0RkI1NDI0MDAyQ0RDQTEgLyog
U3VwcGxlbWVudGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3NjI3Qjk3MTRGQjU0MjQwMDJDRENBMSAvKiBTdXBwbGVtZW50YWJsZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3NkQ2Qzc5MTIy
QjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3NkQ2QzdDMTIyQjhB
M0QwMDFGRDFGNyAvKiBCbG9iQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUQxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JCdWlsZGVy
LmggKi87IH07Ci0JCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2MDEyMkI4QTNE
MDAxRkQxRjcgLyogQmxvYlVSTC5oICovOyB9OworCQk5NzZENkM3RjEyMkI4QTNEMDAxRkQxRjcg
LyogQmxvYlVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTc2RDZDNjAxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzZENkM4MTEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTc2RDZDNjIxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzZENkM4NjEyMkI4QTNEMDAxRkQxRjcg
LyogRmlsZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3NkQ2QzY3MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3NkQ2Qzg5MTIyQjhBM0QwMDFG
RDFGNyAvKiBGaWxlUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzZENkM2QTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVJlYWRlci5oICovOyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggN2ZkNzA2ZGU1YTM2NWUyYjRiYmJhNzhkNjNmYzZhYjk3NzFkODBmZi4u
NTA0Nzg1Yzk2ZDhmNTY0M2E5NjE4MjY4NTU5NTRkZTA2NTdkNmNjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02
MDAsNyArNjAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNt
TW9kdWxlcywKICAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhh
bmRsZXMsCiAjZW5kaWYKLSAgICAgICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4mIGJsb2JIYW5kbGVz
LCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQorICAgICAgICBWZWN0b3I8Qmxv
YlVSTEhhbmRsZT4mIGJsb2JIYW5kbGVzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXph
dGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZm
ZXJzKQogICAgIHsKICAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlhbGl6ZXIobGV4aWNhbEds
b2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKICNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQpAQCAtNjQ3LDcgKzY0Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAg
ICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRp
ZgotICAgICAgICBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50
OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCisgICAgICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYg
YmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBj
b250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgICAg
IDogQ2xvbmVCYXNlKGxleGljYWxHbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9idWZmZXIob3V0
KQogICAgICAgICAsIG1fYmxvYkhhbmRsZXMoYmxvYkhhbmRsZXMpCkBAIC0xMjk3LDcgKzEyOTcs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKGF1dG8qIGtleSA9IEpTQ3J5cHRvS2V5Ojp0
b1dyYXBwZWQodm0sIG9iaikpIHsKICAgICAgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlUYWcp
OwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzZXJpYWxpemVkS2V5OwotICAgICAg
ICAgICAgICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+IGR1bW15QmxvYkhhbmRsZXM7CisgICAgICAg
ICAgICAgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IGR1bW15QmxvYkhhbmRsZXM7CiAgICAgICAg
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwog
ICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJy
YXlCdWZmZXJzOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTE3NjAsNyArMTc2MCw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX2J1ZmZlcjsKLSAgICBW
ZWN0b3I8QmxvYjo6SGFuZGxlPiYgbV9ibG9iSGFuZGxlczsKKyAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4mIG1fYmxvYkhhbmRsZXM7CiAgICAgT2JqZWN0UG9vbCBtX29iamVjdFBvb2w7CiAgICAg
T2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzOwogICAgIE9iamVjdFBvb2wgbV90
cmFuc2ZlcnJlZEFycmF5QnVmZmVyczsKQEAgLTM5MTUsNyArMzkxNSw3IEBAIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZl
ciwgc3RkOjp1bmlxCiAgICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNvc3QoKTsKIH0K
IAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVp
bnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMs
IHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hh
cmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBC
YWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxCbG9i
VVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0
ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCiAjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNh
bnZhc2VzCiAjZW5kaWYKQEAgLTQwNjUsNyArNDA2NSw3IEBAIHN0YXRpYyBFeGNlcHRpb24gZXhj
ZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29k
ZSkKIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyOwotICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+IGJsb2JIYW5kbGVzOwor
ICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiBibG9iSGFuZGxlczsKICAgICBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgVmVjdG9yPFJlZlB0cjxJbWFn
ZUJpdG1hcD4+IGR1bW15SW1hZ2VCaXRtYXBzOwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
X0lOX1dPUktFUlMpCkBAIC00MjE3LDcgKzQyMTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxP
YgogI2VuZGlmCiAKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAgIFZlY3RvcjxCbG9i
OjpIYW5kbGU+IGJsb2JIYW5kbGVzOworICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiBibG9iSGFu
ZGxlczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IHdhc21N
b2R1bGVzOwogICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSB3YXNtTWVtb3J5SGFuZGxlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
aW5kZXggMTZjNDkxOTVmZmM0ZjZlNjk3N2E3NDg4YjRkNmMyOTg1NDlhMzhiNC4uZmI3NTdhNGQ3
NGY2MGUyZmZjZGI4MjljMTUyMDMwYTY2OTljMTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTk5LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQmxvYlVSTHMoKSBjb25zdCB7IHJldHVybiAhbV9ibG9iSGFu
ZGxlcy5pc0VtcHR5KCk7IH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzKCkgY29uc3Q7
Ci0gICAgY29uc3QgVmVjdG9yPEJsb2I6OkhhbmRsZT4mIGJsb2JIYW5kbGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9iSGFuZGxlczsgfQorICAgIGNvbnN0IFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYg
YmxvYkhhbmRsZXMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JIYW5kbGVzOyB9CiAgICAgdm9pZCB3
cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFs
dWUmJik+JiYpOwogICAgIElEQlZhbHVlIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5j
aHJvbm91c2x5KCk7CiAgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0
ZUZyb21XaXJlQnl0ZXMoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTEyMyw3ICsxMjMsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgICk7CiAKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBi
bG9iSGFuZGxlcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4sIHN0
ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZl
Y3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3Jlcwor
ICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3Qg
VmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFj
a2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dP
UktFUlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVl
bkNhbnZhcz4+JiYgPSB7IH0KICNlbmRpZgpAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gbV93YXNtTW9kdWxlc0FycmF5Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+IG1fd2FzbU1lbW9yeUhh
bmRsZXNBcnJheTsKICNlbmRpZgotICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+IG1fYmxvYkhhbmRs
ZXM7CisgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IG1fYmxvYkhhbmRsZXM7CiAgICAgc2l6ZV90
IG1fbWVtb3J5Q29zdCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDI3
YmJhMmU3M2Q2NTYxNTE1MjcwYWEzNTdhNzBiYmMwMjIzNzEwYWQuLmMyOWE3YmFmZDFhYTYwZWZi
Y2QzODIyOTMwNmYyZGFlMzNiMGZhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNzYs
NzUgKzc2LDE5IEBAIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAg
ICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLS8vIFVucmVnaXN0ZXJzIHRoZSBCbG9iJ3MgaW50ZXJu
YWwgVVJMIHVwb24gZGVzdHJ1Y3Rpb24uIFRoaXMgY2FuIGJlIHVzZWQgdG8gZXh0ZW5kIHRoZSBs
aWZldGltZSBvZiB0aGUgQmxvYiBkYXRhCi0vLyB3aXRob3V0IGFjdHVhbGx5IGtlZXBpbmcgdGhl
IEJsb2Igb2JqZWN0IGFsaXZlLgotY2xhc3MgQmxvYkludGVybmFsVVJMIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEJsb2JJbnRlcm5hbFVSTD4gewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8QmxvYkludGVybmFsVVJMPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJsb2JJbnRlcm5hbFVSTChXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxVUkw+IGNyZWF0ZUZvckRlc2Vy
aWFsaXphdGlvbihjb25zdCBVUkwmIHNvdXJjZVVSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmxvYkludGVybmFsVVJMKHNvdXJjZVVSTCwgZmlsZUJhY2tlZFBhdGgsIHR5cGUpKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPEJsb2JJbnRlcm5hbFVSTD4gY3JlYXRlRm9yU2xpY2Uo
Y29uc3QgVVJMJiBzb3VyY2VVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxv
YkludGVybmFsVVJMKHNvdXJjZVVSTCwgc3RhcnQsIGVuZCwgdHlwZSkpOwotICAgIH0KLQotICAg
IHN0YXRpYyBSZWY8QmxvYkludGVybmFsVVJMPiBhZG9wdEludGVybmFsVVJMKGNvbnN0IFVSTCYg
dXJsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJM
KGNyb3NzVGhyZWFkQ29weSh1cmwpKSk7Ci0gICAgfQotCi0gICAgfkJsb2JJbnRlcm5hbFVSTCgp
Ci0gICAgewotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChtX2ludGVybmFsVVJMKTsKLSAgICB9Ci0KLSAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbFVSTC5pc29sYXRlZENvcHkoKTsgfQotCi1wcml2YXRlOgotICAgIEJsb2JJbnRl
cm5hbFVSTChWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQotICAgICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxV
UkwoKSkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKLSAg
ICB9Ci0gICAgQmxvYkludGVybmFsVVJMKGNvbnN0IFVSTCYgc291cmNlVVJMLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICAgICAgOiBtX2lu
dGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCi0gICAgewotICAgICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFs
VVJMLCBzb3VyY2VVUkwsIHN0YXJ0LCBlbmQsIHR5cGUpOwotICAgIH0KLSAgICBCbG9iSW50ZXJu
YWxVUkwoY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgs
IGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICAgICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCkpCi0gICAgewotICAgICAgICBpZiAoZmlsZUJhY2tlZFBhdGguaXNF
bXB0eSgpKQotICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNvdXJjZVVSTCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNvdXJjZVVSTCwgZmlsZUJhY2tlZFBhdGgsIHR5
cGUpOwotICAgIH0KLSAgICBCbG9iSW50ZXJuYWxVUkwoVVJMJiYgaW50ZXJuYWxVUkwpCi0gICAg
ICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKGludGVybmFsVVJMKSkKLSAgICB7IH0KLQotICAg
IFVSTCBtX2ludGVybmFsVVJMOwotfTsKLQogQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1
Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVVJMJiYgdXJsLCBTdHJpbmcm
JiB0eXBlKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3R5cGUoV1RG
TW92ZSh0eXBlKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjphZG9wdElu
dGVybmFsVVJMKHVybCkpCisgICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKIHsKIH0K
IAogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0
aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoMCkKLSAgICAsIG1faW50ZXJuYWxV
UkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoeyB9LCB7IH0pKQorICAgICwgbV9pbnRlcm5hbFVS
TChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogeworICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IH0sIHsgfSk7CiB9CiAKIHN0
YXRpYyBWZWN0b3I8QmxvYlBhcnQ+IGJ1aWxkQmxvYkRhdGEoVmVjdG9yPEJsb2JQYXJ0VmFyaWFu
dD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFn
KQpAQCAtMTYzLDQwICsxMDcsNDggQEAgc3RhdGljIFZlY3RvcjxCbG9iUGFydD4gYnVpbGRCbG9i
RGF0YShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMKIEJsb2I6OkJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFu
dD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFn
KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1hbGl6
ZWRDb250ZW50VHlwZShwcm9wZXJ0eUJhZy50eXBlKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxv
YkludGVybmFsVVJMOjpjcmVhdGUoYnVpbGRCbG9iRGF0YShXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFu
dHMpLCBwcm9wZXJ0eUJhZyksIG1fdHlwZSkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6
OmNyZWF0ZUludGVybmFsVVJMKCkpCiB7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkQmxvYkRhdGEoV1RGTW92ZShibG9iUGFy
dFZhcmlhbnRzKSwgcHJvcGVydHlCYWcpLCBtX3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAg
ICAsIG1fdHlwZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkKLSAgICAs
IG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoeyBCbG9iUGFydChXVEZNb3Zl
KGRhdGEpKSB9LCBjb250ZW50VHlwZSkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCkpCiB7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgQmxvYlBhcnQoV1RGTW92ZShkYXRhKSkgfSwgY29u
dGVudFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3Ry
dWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2Ip
CiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHlwZShibG9iLnR5cGUo
KSkKICAgICAsIG1fc2l6ZShibG9iLnNpemUoKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYklu
dGVybmFsVVJMOjpjcmVhdGUoeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKSkKKyAg
ICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKIHsKKyAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBC
bG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihEZXNlcmlh
bGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlw
ZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50
ZXJuYWxVUkw6OmNyZWF0ZUZvckRlc2VyaWFsaXphdGlvbihzcmNVUkwsIGZpbGVCYWNrZWRQYXRo
LCBtX3R5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVS
TCgpKQogeworICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChudWxscHRyLCBtX2ludGVybmFsVVJM
LCBzcmNVUkwpOworICAgIGVsc2UKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBm
aWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCkKICAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCi0gICAgLCBt
X2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlRm9yU2xpY2Uoc3JjVVJMLCBzdGFy
dCwgZW5kLCBtX3R5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRl
cm5hbFVSTCgpKQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5k
IC0gc3RhcnQgc28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsKKyAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFsVVJMLCBz
cmNVUkwsIHN0YXJ0LCBlbmQsIG1fdHlwZSk7CiB9CiAKIEJsb2I6On5CbG9iKCkKQEAgLTIwNSwx
NCArMTU3LDkgQEAgQmxvYjo6fkJsb2IoKQogICAgICAgICAoKm1fYmxvYkxvYWRlcnMuYmVnaW4o
KSktPmNhbmNlbCgpOwogfQogCi1VUkwgQmxvYjo6dXJsKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9pbnRlcm5hbFVSTC0+dXJsKCk7Ci19Ci0KIFJlZjxCbG9iPiBCbG9iOjpzbGljZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiB7Ci0gICAgYXV0byBibG9iID0gYWRv
cHRSZWYoKm5ldyBCbG9iKCZjb250ZXh0LCBtX2ludGVybmFsVVJMLT51cmwoKSwgc3RhcnQsIGVu
ZCwgY29udGVudFR5cGUpKTsKKyAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoJmNv
bnRleHQsIG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7CiAgICAgYmxv
Yi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGJsb2I7CiB9CkBAIC0yMjIsNyArMTY5
LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2I6OnNpemUoKSBjb25zdAogICAgIGlmICghbV9z
aXplKSB7CiAgICAgICAgIC8vIEZJWE1FOiBKYXZhU2NyaXB0IGNhbm5vdCByZXByZXNlbnQgc2l6
ZXMgYXMgbGFyZ2UgYXMgdW5zaWduZWQgbG9uZyBsb25nLCB3ZSBuZWVkIHRvCiAgICAgICAgIC8v
IGNvbWUgdXAgd2l0aCBhbiBleGNlcHRpb24gdG8gdGhyb3cgaWYgZmlsZSBzaXplIGlzIG5vdCBy
ZXByZXNlbnRhYmxlLgotICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWN0dWFsU2l6ZSA9IFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKG1faW50ZXJuYWxVUkwtPnVybCgpKTsKKyAg
ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGFjdHVhbFNpemUgPSBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpibG9iU2l6ZShtX2ludGVybmFsVVJMKTsKICAgICAgICAgbV9zaXplID0gaXNJbkJvdW5k
czxsb25nIGxvbmc+KGFjdHVhbFNpemUpID8gYWN0dWFsU2l6ZSA6IDA7CiAgICAgfQogCkBAIC0z
OTUsMjMgKzM0Miw5IEBAIGNvbnN0IGNoYXIqIEJsb2I6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdAogICAgIHJldHVybiAiQmxvYiI7CiB9CiAKLUJsb2I6OkhhbmRsZSBCbG9iOjpoYW5kbGUo
KSBjb25zdAotewotICAgIHJldHVybiBIYW5kbGUgeyBtX2ludGVybmFsVVJMLmNvcHlSZWYoKSB9
OwotfQotCi1CbG9iOjpIYW5kbGU6OkhhbmRsZShSZWY8QmxvYkludGVybmFsVVJMPiYmIGludGVy
bmFsVVJMKQotICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKGludGVybmFsVVJMKSkKLXsgfQot
Ci1CbG9iOjpIYW5kbGU6On5IYW5kbGUoKSA9IGRlZmF1bHQ7Ci0KLUJsb2I6OkhhbmRsZTo6SGFu
ZGxlKEhhbmRsZSYmKSA9IGRlZmF1bHQ7Ci1CbG9iOjpIYW5kbGU6OkhhbmRsZShjb25zdCBIYW5k
bGUmKSA9IGRlZmF1bHQ7Ci0KLVVSTCBCbG9iOjpIYW5kbGU6OnVybCgpIGNvbnN0CitCbG9iVVJM
SGFuZGxlIEJsb2I6OmhhbmRsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWxVUkwt
PnVybCgpOworICAgIHJldHVybiBCbG9iVVJMSGFuZGxlIHsgbV9pbnRlcm5hbFVSTCB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDI1NTMxYmMz
MDhlYzg5OTYyMzc3ZWNkNDAwZWMxMGQwODk0YTBiYWIuLjRlZDg2YTNlZjg3YTgyMjVlOWJhZDA2
ODU5NGFiZDdmMzlkOWNiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJsb2JQcm9wZXJ0eUJhZy5oIgorI2luY2x1ZGUg
IkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgpAQCAt
NTcsNyArNTgsNiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgRXhjZXB0aW9uT3I7CiAKIHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlhbnQ8UmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+LCBSZWZQdHI8
QmxvYj4sIFN0cmluZz47Ci1jbGFzcyBCbG9iSW50ZXJuYWxVUkw7CiAKIGNsYXNzIEJsb2IgOiBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBSZWZD
b3VudGVkPEJsb2I+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0VYUE9SVChCbG9iLCBXRUJDT1JFX0VYUE9SVCk7CkBAIC05Myw3ICs5Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFVS
TCB1cmwoKSBjb25zdDsKKyAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFVS
TDsgfQogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdDsKQEAg
LTExNywxOSArMTE3LDggQEAgcHVibGljOgogICAgIHZvaWQgYXJyYXlCdWZmZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIEV4Y2VwdGlvbk9y
PFJlZjxSZWFkYWJsZVN0cmVhbT4+IHN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAK
LSAgICBjbGFzcyBIYW5kbGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgSGFuZGxl
KFJlZjxCbG9iSW50ZXJuYWxVUkw+JiYpOwotICAgICAgICB+SGFuZGxlKCk7Ci0gICAgICAgIEhh
bmRsZShIYW5kbGUmJik7Ci0gICAgICAgIEhhbmRsZShjb25zdCBIYW5kbGUmKTsKLSAgICAgICAg
VVJMIHVybCgpIGNvbnN0OwotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxCbG9iSW50ZXJuYWxV
Ukw+IG1faW50ZXJuYWxVUkw7Ci0gICAgfTsKLQogICAgIC8vIEtlZXBpbmcgdGhlIGhhbmRsZSBh
bGl2ZSB3aWxsIGtlZXAgdGhlIEJsb2IgZGF0YSBhbGl2ZSAoYnV0IG5vdCB0aGUgQmxvYiBvYmpl
Y3QpLgotICAgIEhhbmRsZSBoYW5kbGUoKSBjb25zdDsKKyAgICBCbG9iVVJMSGFuZGxlIGhhbmRs
ZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC0xNjAsNyArMTQ5LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBUaGlzIGlzIGFuIGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0
YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFuIGlk
ZW50aWZpZXIgZm9yIHRoaXMgYmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBuZXZlciB1c2VkIHRv
IHNvdXJjZSB0aGUgYmxvYidzIGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9yIEZp
bGVSZWFkJ2luZywgcHVibGljIGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1cnBv
c2VzLgotICAgIFJlZjxCbG9iSW50ZXJuYWxVUkw+IG1faW50ZXJuYWxVUkw7CisgICAgVVJMIG1f
aW50ZXJuYWxVUkw7CiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPj4g
bV9ibG9iTG9hZGVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2JVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAppbmRleCBkMDdm
OWRiODVhMjk0NWM5M2RiMGNhZjA4MGEyNjhkMDViZjQ0YWExLi41NWM1ODEwMTU5MWNlNDE1Yzc1
Y2EwODA5MzRlYTMxZTE3MmQ1NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKQEAg
LTk2LDQ1ICs5Niw2NyBAQCBVUkwgQmxvYlVSTDo6Y3JlYXRlQmxvYlVSTChjb25zdCBTdHJpbmcm
IG9yaWdpblN0cmluZykKICAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5nKTsKIH0KIAotVVJM
V2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbjo6VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVu
c2lvbihjb25zdCBVUkwmIHVybCkKLSAgICA6IG1fdXJsKHVybCkKK0Jsb2JVUkxIYW5kbGU6OkJs
b2JVUkxIYW5kbGUoY29uc3QgQmxvYlVSTEhhbmRsZSYgb3RoZXIpCisgICAgOiBtX3VybChvdGhl
ci5tX3VybC5pc29sYXRlZENvcHkoKSkKIHsKLSAgICBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5l
Y2Vzc2FyeSgpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCk7CiB9CiAK
LVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb246On5VUkxXaXRoQmxvYlVSTExpZmV0aW1l
RXh0ZW5zaW9uKCkKK0Jsb2JVUkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwp
CisgICAgOiBtX3VybCh1cmwuaXNvbGF0ZWRDb3B5KCkpCiB7Ci0gICAgdW5yZWdpc3RlckN1cnJl
bnRVUkxJZk5lY2Vzc2FyeSgpOworICAgIEFTU0VSVChtX3VybC5wcm90b2NvbElzQmxvYigpKTsK
KyAgICByZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIFVSTFdp
dGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb246OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNz
YXJ5KCkKK0Jsb2JVUkxIYW5kbGU6On5CbG9iVVJMSGFuZGxlKCkKIHsKLSAgICBpZiAobV91cmwu
cHJvdG9jb2xJc0Jsb2IoKSkgewotICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoQmxvYlVSTDo6Z2V0T3JpZ2luVVJMKG1fdXJsKSk7Ci0gICAgICAgIFVSTCB0ZW1w
b3JhcnlCbG9iVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKG9yaWdpbi5wdHIoKSk7Ci0g
ICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChvcmlnaW4ucHRy
KCksIHRlbXBvcmFyeUJsb2JVUkwsIG1fdXJsKTsKLSAgICAgICAgbV91cmwgPSBXVEZNb3ZlKHRl
bXBvcmFyeUJsb2JVUkwpOwotICAgIH0KKyAgICB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVj
ZXNzYXJ5KCk7CiB9CiAKLXZvaWQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbjo6dW5y
ZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpCit2b2lkIEJsb2JVUkxIYW5kbGU6OnJlZ2lz
dGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV91cmwucHJvdG9jb2xJ
c0Jsb2IoKSkKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JV
UkwobV91cmwpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkxIYW5kbGUobV91cmwpOworfQorCit2b2lkIEJsb2JVUkxIYW5kbGU6OnVucmVnaXN0ZXJCbG9i
VVJMSGFuZGxlSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX3VybC5wcm90b2NvbElzQmxvYigp
KQorICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRs
ZShtX3VybCk7Cit9CisKK0Jsb2JVUkxIYW5kbGUmIEJsb2JVUkxIYW5kbGU6Om9wZXJhdG9yPShj
b25zdCBCbG9iVVJMSGFuZGxlJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyA9PSAmb3RoZXIpCisg
ICAgICAgIHJldHVybiAqdGhpczsKKworICAgIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNl
c3NhcnkoKTsKKyAgICBtX3VybCA9IG90aGVyLm1fdXJsLmlzb2xhdGVkQ29weSgpOworICAgIHJl
Z2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCk7CisKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK3ZvaWQgQmxvYlVSTEhhbmRsZTo6Y2xlYXIoKQoreworICAgIHVucmVnaXN0ZXJCbG9iVVJM
SGFuZGxlSWZOZWNlc3NhcnkoKTsKKyAgICBtX3VybCA9IHsgfTsKIH0KIAotVVJMV2l0aEJsb2JV
UkxMaWZldGltZUV4dGVuc2lvbiYgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbjo6b3Bl
cmF0b3I9KFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mJiBvdGhlcikKK0Jsb2JVUkxI
YW5kbGUmIEJsb2JVUkxIYW5kbGU6Om9wZXJhdG9yPShCbG9iVVJMSGFuZGxlJiYgb3RoZXIpCiB7
Ci0gICAgdW5yZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpOworICAgIHVucmVnaXN0ZXJC
bG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKICAgICBtX3VybCA9IHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV91cmwsIHsgfSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1VUkxXaXRoQmxvYlVSTExp
ZmV0aW1lRXh0ZW5zaW9uJiBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOjpvcGVyYXRv
cj0oVVJMJiYgdXJsKQorQmxvYlVSTEhhbmRsZSYgQmxvYlVSTEhhbmRsZTo6b3BlcmF0b3I9KGNv
bnN0IFVSTCYgdXJsKQogewotICAgIHVucmVnaXN0ZXJDdXJyZW50VVJMSWZOZWNlc3NhcnkoKTsK
LSAgICBtX3VybCA9IFdURk1vdmUodXJsKTsKLSAgICBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5l
Y2Vzc2FyeSgpOworICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0Jsb2IoKSk7CisgICAgdW5yZWdp
c3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIG1fdXJsID0gdXJsLmlzb2xhdGVk
Q29weSgpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCk7CiAgICAgcmV0
dXJuICp0aGlzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JV
UkwuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oCmluZGV4IDgzMWY0MmNjODI4
NWFiZDdhMGZlMTUzZDRkYWU4ZGFhMmRlNjA2N2EuLjU4NWFlM2RkNjU5NjBhYmI4MjE0MDFhODg5
ODY2ZGMyNGJmMjJjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVS
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oCkBAIC01OCwyNyArNTgs
MzEgQEAgcHJpdmF0ZToKICAgICBCbG9iVVJMKCkgeyB9CiB9OwogCi1jbGFzcyBVUkxXaXRoQmxv
YlVSTExpZmV0aW1lRXh0ZW5zaW9uIHsKKy8vIEV4dGVuZHMgdGhlIGxpZmV0aW1lIG9mIHRoZSBC
bG9iIFVSTC4gVGhpcyBtZWFucyB0aGF0IHRoZSBibG9iIFVSTCB3aWxsIHJlbWFpbiB2YWxpZCBh
ZnRlcgorLy8gcmV2b2tlT2JqZWN0VVJMKCkgaGFzIGJlZW4gY2FsbGVkLCBhcyBsb25nIGFzIEJs
b2JVUkxIYW5kbGUgb2JqZWN0cyByZWZlciB0byB0aGUgYmxvYiBVUkwuCitjbGFzcyBCbG9iVVJM
SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKTsKIHB1YmxpYzoKLSAgICBV
UkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0
IFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oY29uc3QgVVJMJik7Ci0gICAgflVSTFdp
dGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oKTsKKyAgICBCbG9iVVJMSGFuZGxlKCkgPSBkZWZh
dWx0OworICAgIGV4cGxpY2l0IEJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisgICAgfkJsb2JV
UkxIYW5kbGUoKTsKIAotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oVVJMV2l0
aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiYmIG90aGVyKQorICAgIEJsb2JVUkxIYW5kbGUoY29u
c3QgQmxvYlVSTEhhbmRsZSYpOworICAgIEJsb2JVUkxIYW5kbGUoQmxvYlVSTEhhbmRsZSYmIG90
aGVyKQogICAgICAgICA6IG1fdXJsKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV91cmwsIHsgfSkpCiAg
ICAgeyB9CiAKLSAgICBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uJiBvcGVyYXRvcj0o
VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiYmKTsKLSAgICBVUkxXaXRoQmxvYlVSTExp
ZmV0aW1lRXh0ZW5zaW9uJiBvcGVyYXRvcj0oVVJMJiYpOworICAgIEJsb2JVUkxIYW5kbGUmIG9w
ZXJhdG9yPShjb25zdCBCbG9iVVJMSGFuZGxlJik7CisgICAgQmxvYlVSTEhhbmRsZSYgb3BlcmF0
b3I9KEJsb2JVUkxIYW5kbGUmJik7CisgICAgQmxvYlVSTEhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0
IFVSTCYpOwogCi0gICAgb3BlcmF0b3IgY29uc3QgVVJMJigpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9Ci0gICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIFVS
TCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybC5pc29sYXRlZENvcHkoKTsgfQorCisgICAgdm9p
ZCBjbGVhcigpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdW5yZWdpc3RlckN1cnJlbnRVUkxJZk5l
Y2Vzc2FyeSgpOwotICAgIHZvaWQgZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoKTsK
KyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNzYXJ5KCk7CiAKICAgICBVUkwgbV91cmw7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5j
cHAKaW5kZXggYmQ4MWY4ZWEzMTlhZTAzOWZlZGMxNzVkMTQxOGM4NDJmMDIyMDkwZi4uOWZmMzYy
ODU2MDk3OTE3N2JiMGFmMmNmYTdmZGMyMjYyMzMxODU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC0xNTUsMTUgKzE1NSwy
NSBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFVSTCYgdXJsKQogICAgIGlmIChpc0Jsb2JVUkxDb250YWluc051bGxPcmlnaW4odXJsKSkKICAg
ICAgICAgb3JpZ2luTWFwKCktPnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogCi0gICAgaWYgKGlzTWFp
blRocmVhZCgpKSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVy
bCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFt1cmwgPSB1cmwu
aXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JV
UkwodXJsKTsKICAgICB9KTsKIH0KIAordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpCit7CisgICAgZW5zdXJlT25NYWluVGhy
ZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7CisgICAgfSk7Cit9CisKK3ZvaWQgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpCit7
CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsKKyAgICB9
KTsKK30KKwogUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpn
ZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKGF1dG8gY2FjaGVkT3Jp
Z2luID0gb3JpZ2luTWFwKCktPmdldCh1cmwuc3RyaW5nKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBiY2QzNmJlM2ZhN2IzOTJi
YjYzMTNiM2VhNjViOTM3NWNlMjExNWYwLi4xNDEyODQ4MmZkYzU2N2RkZjQwNjEzNzI1NzIzOTJh
OWE2YzQxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuaApAQCAtNDcsNiArNDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOwogCisg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpOworICAgIHN0
YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpOworCiAgICAgc3Rh
dGljIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIG9yaWdpbiBmb3IgdGhlIGdpdmVuIGJsb2IgVVJMLiBUaGlzIGlzIGJlY2F1c2Ug
d2UgYXJlIG5vdCBhYmxlIHRvIGVtYmVkIHRoZSB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIHRo
ZSBvcmlnaW4gb2YgZmlsZSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cAppbmRleCA0NzE0NzQ5NWZiNGNmODRjZDBkMmE2YjY4ZmMyZjMxMGJlN2MwOWUwLi5jZDg5NWE5
Nzk1Y2EyODA3ZjM0NTk3YzcwMjQ3MDlhMDk4YWY4YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCkBAIC0xMDQsMTcgKzEwNCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdQogICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1JlcXVlc3QpLCBy
ZWRpcmVjdFJlc3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCks
IHsgfSwgV1RGTW92ZShmdW5jdGlvbikpOwogfQogCi1VUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0
ZW5zaW9uIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJ
Zk5lY2Vzc2FyeShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIFBvbGljeURlY2lzaW9uTW9kZSBtb2RlKSBjb25zdAorQmxvYlVSTEhhbmRsZSBGcmFtZUxv
YWRlcjo6UG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQb2xpY3lEZWNpc2lvbk1vZGUgbW9kZSkgY29u
c3QKIHsKICAgICBpZiAobW9kZSAhPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyB8
fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB1cmxXaXRoTGlmZXRpbWVFeHRl
bnNpb24ocmVxdWVzdC51cmwoKSk7Ci0gICAgcmVxdWVzdC5zZXRVUkwodXJsV2l0aExpZmV0aW1l
RXh0ZW5zaW9uKTsKLSAgICBpZiAobG9hZGVyKQotICAgICAgICBsb2FkZXItPnJlcXVlc3QoKS5z
ZXRVUkwodXJsV2l0aExpZmV0aW1lRXh0ZW5zaW9uKTsKLQotICAgIHJldHVybiB1cmxXaXRoTGlm
ZXRpbWVFeHRlbnNpb247CisgICAgcmV0dXJuIEJsb2JVUkxIYW5kbGUgeyByZXF1ZXN0LnVybCgp
IH07CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlv
blBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZWZQdHI8Rm9ybVN0
YXRlPiYmIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5j
dGlvbiwgUG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSkKQEAgLTE5Nyw3ICsx
OTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5j
bGVhclByb3Zpc2lvbmFsTG9hZEZvclBvbGljeUNoZWNrKCk7CiAKLSAgICBhdXRvIGJsb2JVUkxM
aWZldGltZUV4dGVuc2lvbiA9IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KHJlcXVl
c3QsIGxvYWRlciwgcG9saWN5RGVjaXNpb25Nb2RlKTsKKyAgICBhdXRvIGJsb2JVUkxMaWZldGlt
ZUV4dGVuc2lvbiA9IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KHJlcXVlc3QsIHBv
bGljeURlY2lzaW9uTW9kZSk7CiAKICAgICBib29sIGlzSW5pdGlhbEVtcHR5RG9jdW1lbnRMb2Fk
ID0gIW1fZnJhbWUubG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuY29tbWl0dGVkRmlyc3RSZWFsRG9j
dW1lbnRMb2FkKCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQWJvdXQoKSAmJiAhc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpOwogICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lD
aGVja0lkZW50aWZpZXI6OmNyZWF0ZSgpOwpAQCAtMjU1LDcgKzI1MCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rp
b24mJiBuYXZpZ2F0CiAgICAgaWYgKCFET01XaW5kb3c6OmFsbG93UG9wVXAobV9mcmFtZSkpCiAg
ICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrOjpObyk7CiAKLSAgICBhdXRvIGJsb2JVUkxMaWZldGltZUV4dGVuc2lv
biA9IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KHJlcXVlc3QsIG51bGxwdHIpOwor
ICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVSTExpZmV0aW1l
SWZOZWNlc3NhcnkocmVxdWVzdCk7CiAKICAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0gUG9s
aWN5Q2hlY2tJZGVudGlmaWVyOjpjcmVhdGUoKTsKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG5hdmlnYXRpb25BY3Rp
b24sIHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCByZXF1ZXN0SWRlbnRpZmll
ciwgW2ZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgcmVxdWVzdCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5oCmluZGV4IDNjNjYyMjgzNTYzNzdhZjg5ZDA5ZWE1NzQ1YzExMmU5MTRm
YjgyMDYuLmE1YjdlM2ZkMTBjNGNlZDVkMDZjOTkzMTUyZjY4YWVjNjM1OGYyZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb247
CitjbGFzcyBCbG9iVVJMSGFuZGxlOwogCiBlbnVtIGNsYXNzIE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiA6IHVpbnQ4X3QgewogICAgIENvbnRpbnVlTG9hZCwKQEAgLTkwLDcgKzkwLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9u
IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlc291cmNlUmVxdWVzdCYsIERvY3Vt
ZW50TG9hZGVyKiwgUG9saWN5RGVjaXNpb25Nb2RlID0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3lu
Y2hyb25vdXMpIGNvbnN0OworICAgIEJsb2JVUkxIYW5kbGUgZXh0ZW5kQmxvYlVSTExpZmV0aW1l
SWZOZWNlc3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5RGVjaXNpb25Nb2RlID0g
UG9saWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMpIGNvbnN0OwogCiAgICAgRnJhbWUmIG1f
ZnJhbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eS5oCmluZGV4IDc1OTU3MDIyMTcyOWJmYjUxOGUyYWJiNTQyMDAzZmFmMDhiYzZmNTIuLjY4OWQz
MTkwNzEwOGRjNDQzOTgwNGYxZTU0MjI2OWVjYjllMThiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNjMsNiArNjMsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYp
ID0gMDsKKwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVS
TCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCAzMmRkOGMwOGUy
MTkwNmY0YTJkOGYyYThjMzBjN2VhNWFhOTUyNjc0Li40NDgyZjFmMjA3Mjg0ODRkYmI3ODk3NDRm
Y2MyNTMxYzFkZThkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9i
RGF0YUZpbGVSZWZlcgogCiAgICAgYXV0byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29u
dGVudFR5cGUpOwogICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKFdURk1vdmUoZmlsZSkpOwotICAg
IG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShibG9iRGF0YSkpOworICAgIGFkZEJs
b2JEYXRhKHVybC5zdHJpbmcoKSwgV1RGTW92ZShibG9iRGF0YSkpOwogfQogCiB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQ
YXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYQogICAgICAgICB9CiAgICAgfQogCi0gICAg
bV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBXVEZNb3ZlKGJsb2JEYXRhKSk7CisgICAgYWRkQmxv
YkRhdGEodXJsLnN0cmluZygpLCBXVEZNb3ZlKGJsb2JEYXRhKSk7CiB9CiAKIHZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNy
Y1VSTCkKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdAogCiAgICAg
QmxvYkRhdGEqIHNyYyA9IGdldEJsb2JEYXRhRnJvbVVSTChzcmNVUkwpOwogICAgIGlmIChzcmMp
IHsKLSAgICAgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBzcmMpOworICAgICAgICBhZGRC
bG9iRGF0YSh1cmwuc3RyaW5nKCksIHNyYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE3NCw3ICsxNzQsNyBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgIGF1dG8gYmFja2lu
Z0ZpbGUgPSBCbG9iRGF0YTo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKICAgICBiYWNraW5nRmlsZS0+
YXBwZW5kRmlsZShmaWxlLnJlbGVhc2VOb25OdWxsKCkpOwogCi0gICAgbV9ibG9icy5zZXQodXJs
LnN0cmluZygpLCBXVEZNb3ZlKGJhY2tpbmdGaWxlKSk7CisgICAgYWRkQmxvYkRhdGEodXJsLnN0
cmluZygpLCBXVEZNb3ZlKGJhY2tpbmdGaWxlKSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCkBAIC0yMTEsMTIgKzIxMSwxNCBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTAogICAg
IGFwcGVuZFN0b3JhZ2VJdGVtcyhuZXdEYXRhLnB0cigpLCBvcmlnaW5hbERhdGEtPml0ZW1zKCks
IHN0YXJ0LCBuZXdMZW5ndGgpOwogCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBXVEZN
b3ZlKG5ld0RhdGEpKTsKKyAgICBtX2Jsb2JSZWZlcmVuY2VzLmFkZCh1cmwuc3RyaW5nKCkpOwog
fQogCiB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9ibG9icy5yZW1vdmUo
dXJsLnN0cmluZygpKTsKKyAgICBpZiAobV9ibG9iUmVmZXJlbmNlcy5yZW1vdmUodXJsLnN0cmlu
ZygpKSkKKyAgICAgICAgbV9ibG9icy5yZW1vdmUodXJsLnN0cmluZygpKTsKIH0KIAogQmxvYkRh
dGEqIEJsb2JSZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBVUkwmIHVybCkg
Y29uc3QKQEAgLTM1OSw0ICszNjEsMjMgQEAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBCbG9iUmVnaXN0cnlJbXBsOjpmaWxlc0luQmxvYihjb25zdCBVUkwmIHUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6OmFkZEJsb2JEYXRhKGNv
bnN0IFdURjo6U3RyaW5nJiB1cmwsIFJlZlB0cjxCbG9iRGF0YT4mJiBibG9iRGF0YSkKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fYmxvYnMuc2V0KHVybCwgV1RGTW92ZShibG9iRGF0YSkpOwor
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgbV9ibG9iUmVmZXJlbmNlcy5h
ZGQodXJsKTsKK30KKwordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5k
bGUoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1fYmxvYnMuY29udGFpbnModXJsLnN0cmlu
ZygpKSkKKyAgICAgICAgbV9ibG9iUmVmZXJlbmNlcy5hZGQodXJsLnN0cmluZygpKTsKK30KKwor
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwm
IHVybCkKK3sKKyAgICBpZiAobV9ibG9iUmVmZXJlbmNlcy5yZW1vdmUodXJsLnN0cmluZygpKSkK
KyAgICAgICAgbV9ibG9icy5yZW1vdmUodXJsLnN0cmluZygpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaAppbmRleCBkNDQ0NTE0MWFhMmZjYzg5ZmVkZjM5ZTdkODdlYTMwODFlMjM2
ZGNkLi41NzQwMzZhNTZkNDFiZGEyZDQzYTQzZDVhYWYzODg5MDYyM2Y2Y2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAt
MzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVn
aXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNjUsNiArNjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2
b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOwogCisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRs
ZShjb25zdCBVUkwmKTsKKwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBV
UkwmKTsKIAogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgZmlsZVBhdGhzKT4mJik7CkBAIC03OCw2ICs4Miw5IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpIGNv
bnN0OwogCiBwcml2YXRlOgorICAgIHZvaWQgYWRkQmxvYkRhdGEoY29uc3QgU3RyaW5nJiB1cmws
IFJlZlB0cjxCbG9iRGF0YT4mJik7CisKKyAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fYmxv
YlJlZmVyZW5jZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxCbG9iRGF0YT4+IG1fYmxv
YnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjM2E3ZjFk
NzUzNDhkYmY2NTQ1NzdlMDJkMjljNmEyYmUwNTliMzk4Li4xMjdlMGZhYmJjYzBjNTY1MmFiYmQy
YjAyZTFlMDU3NzQ3ODM4Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTI1MSw3ICsyNTEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0
UmVzcG9uc2VUeXBlKFJlc3BvbnNlVHlwZSB0eXBlKQogICAgIC8vIGF0dGVtcHQgdG8gZGlzY291
cmFnZSBzeW5jaHJvbm91cyBYSFIgdXNlLiByZXNwb25zZVR5cGUgaXMgb25lIHN1Y2ggcGllY2Ug
b2YgZnVuY3Rpb25hbGl0eS4KICAgICAvLyBXZSdsbCBvbmx5IGRpc2FibGUgdGhpcyBmdW5jdGlv
bmFsaXR5IGZvciBIVFRQKFMpIHJlcXVlc3RzIHNpbmNlIHN5bmMgcmVxdWVzdHMgZm9yIGxvY2Fs
IHByb3RvY29scwogICAgIC8vIHN1Y2ggYXMgZmlsZTogYW5kIGRhdGE6IHN0aWxsIG1ha2Ugc2Vu
c2UgdG8gYWxsb3cuCi0gICAgaWYgKCFtX2FzeW5jICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNEb2N1bWVudCgpICYmIG1fdXJsLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
eworICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1l
bnQoKSAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgbG9nQ29u
c29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnJlc3Bv
bnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0
cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiIpOwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgfQpAQCAtMzgyLDkgKzM4Miw5IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBVUkwmIHVybCwgYm9vCiAgICAgY2xlYXJSZXNwb25zZSgpOwogICAgIGNsZWFyUmVx
dWVzdCgpOwogCi0gICAgYXV0byB1cGdyYWRlZFVSTCA9IHVybDsKLSAgICBjb250ZXh0LT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKHVwZ3Jh
ZGVkVVJMLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQp
OwotICAgIG1fdXJsID0gV1RGTW92ZSh1cGdyYWRlZFVSTCk7CisgICAgY29udGV4dC0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChtX3VybCwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKyAgICBp
ZiAobV91cmwucHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24gPSBtX3VybDsKIAogICAgIG1fYXN5bmMgPSBhc3luYzsKIApAQCAtNDE3LDcgKzQxNyw3
IEBAIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVw
YXJlVG9TZW5kKCkKICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9jdW1lbnQ+
KGNvbnRleHQpLnNob3VsZElnbm9yZVN5bmNYSFJzKCkpIHsKLSAgICAgICAgbG9nQ29uc29sZUVy
cm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbWFrZVN0cmluZygiSWdub3JpbmcgWE1MSHR0
cFJlcXVlc3Quc2VuZCgpIGNhbGwgZm9yICciLCBtX3VybC51cmwoKS5zdHJpbmcoKSwgIicgYmVj
YXVzZSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3luY2hyb25vdXMgZmFpbHVyZXMgd2FzIHJlYWNo
ZWQuIikpOworICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBtYWtlU3RyaW5nKCJJZ25vcmluZyBYTUxIdHRwUmVxdWVzdC5zZW5kKCkgY2FsbCBmb3IgJyIs
IG1fdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzeW5jaHJv
bm91cyBmYWlsdXJlcyB3YXMgcmVhY2hlZC4iKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25P
cjx2b2lkPiB7IH07CiAgICAgfQogCkBAIC01MjEsNyArNTIxLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiYgYm9keSkKICAgICAgICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0LnZhbHVlKCkpOwogCiAgICAgaWYgKG1fbWV0aG9kICE9ICJHRVQiICYmIG1fbWV0
aG9kICE9ICJIRUFEIikgewotICAgICAgICBpZiAoIW1fdXJsLnVybCgpLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSkgeworICAgICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gc3VwcG9ydCBwb3N0
aW5nIEJsb2JzIHRvIG5vbi1odHRwIFVSTHMgKGUuZy4gY3VzdG9tIFVSTCBzY2hlbWVzKQogICAg
ICAgICAgICAgLy8gYnV0IGJlY2F1c2Ugb2YgdGhlIGFyY2hpdGVjdHVyZSBvZiBibG9iLWhhbmRs
aW5nIHRoYXQgd2lsbCByZXF1aXJlIGEgZmFpciBhbW91bnQgb2Ygd29yay4KICAgICAgICAgICAg
IApAQCAtNTk0LDcgKzU5NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiBFeGNlcHRpb25P
cjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCgpCiB7CiAgICAgLy8gT25seSBH
RVQgcmVxdWVzdCBpcyBzdXBwb3J0ZWQgZm9yIGJsb2IgVVJMLgotICAgIGlmICghbV9hc3luYyAm
JiBtX3VybC51cmwoKS5wcm90b2NvbElzQmxvYigpICYmIG1fbWV0aG9kICE9ICJHRVQiKQorICAg
IGlmICghbV9hc3luYyAmJiBtX3VybC5wcm90b2NvbElzQmxvYigpICYmIG1fbWV0aG9kICE9ICJH
RVQiKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTmV0d29ya0Vycm9yIH07CiAKICAgICBp
ZiAobV9hc3luYyAmJiBtX3VwbG9hZCAmJiBtX3VwbG9hZC0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkK
QEAgLTc0Nyw2ICs3NDcsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVlc3QoKQog
ICAgIG1fcmVxdWVzdEhlYWRlcnMuY2xlYXIoKTsKICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0g
bnVsbHB0cjsKICAgICBtX3VybCA9IFVSTCB7IH07CisgICAgbV9ibG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24uY2xlYXIoKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6Z2VuZXJpY0Vycm9yKCkK
QEAgLTkzOSw2ICs5NDAsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5n
KHVuc2lnbmVkIGxvbmcpCiAKICAgICBtX2xvYWRpbmdBY3Rpdml0eSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBtX3VybCA9IFVSTCB7IH07CisgICAgbV9ibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24uY2xl
YXIoKTsKIAogICAgIG1fc2VuZEZsYWcgPSBmYWxzZTsKICAgICBjaGFuZ2VTdGF0ZShET05FKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggYjQ4ZTFiOTBmYWFhNTJkNmZlOWM1
M2E2YTFmMjA5OTM1YzUzYmU4Yi4uYzA0YTE2ODk2MDliNmZiOTFhNjgwYzk4ZjdlMDczMmE3NDhm
OWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTIxNiw3ICsyMTYsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBt
X3VwbG9hZDsKIAotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gbV91cmw7Cisg
ICAgVVJMIG1fdXJsOworICAgIEJsb2JVUkxIYW5kbGUgbV9ibG9iVVJMTGlmZXRpbWVFeHRlbnNp
b247CiAgICAgU3RyaW5nIG1fbWV0aG9kOwogICAgIEhUVFBIZWFkZXJNYXAgbV9yZXF1ZXN0SGVh
ZGVyczsKICAgICBSZWZQdHI8Rm9ybURhdGE+IG1fcmVxdWVzdEVudGl0eUJvZHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDYzYzI0MzE1MTNiOGY3MWE1ZDhkZTk2Mzk0YzE0YmU4
ZDJkM2ZjZTUuLjg4NDM4MmQ0Y2Y2YjU0Y2UzOTdhY2I5MDg4MTY0NTBiYjZjMGQzNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04NjYsNiArODY2LDI0IEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJs
KQogICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9
CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEhh
bmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOworfQorCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25z
dCBVUkwmIHVybCkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAg
ICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdp
c3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7Cit9CisKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCAxYTU0NDRiZTdiNDdlNWRjMTIxZDU4ZjgwYmFhZGJhMThkM2NjYzNjLi5kOTI0MzIxMzkyOThk
YmQ2M2Y0YTdlMThjM2YwYjAxZGRmMTQ4OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC0yMzYsNiArMjM2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYpOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmKTsKIAorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYp
OworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisKICAgICB2
b2lkIHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCk7CiAKICAg
ICB2b2lkIGNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCBX
ZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDliMzI4OTY4MTA2MTliYTE5ZGM1YmY0MzdiMzY4YTdjYTdm
YTQzMWIuLjc5NmJmYTQ0Y2MyNjI3MDg3NTNlNzYzMTgzYTVhMDE3YzdhZmZjMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTYsNiArNTYsOCBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKICAgICBCbG9iU2l6ZShVUkwgdXJsKSAt
PiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKICAgICBXcml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZp
bGVOYW1lcykgQXN5bmMKKyAgICBSZWdpc3RlckJsb2JVUkxIYW5kbGUoVVJMIHVybCk7CisgICAg
VW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoVVJMIHVybCk7CiAKICAgICBTZXRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAppbmRleCBiNTBmNDliYzgzNjQyYWZhMTYwYWJkNjhmNDk3ZDViOGEy
ZjRiZjc3Li43OTY2MmVmYmQxMTY4NjE5ZmZjZjY1Y2IyODg1YzFmNDAzNWI2YjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNjUsNiArNjUsOCBAQCBCbG9iUmVnaXN0
cnkqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnko
KQogICAgICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXpl
KGNvbnN0IFVSTCYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAg
ICAgICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmls
ZVBhdGhzKT4mJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJM
JikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIH07CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEVtcHR5QmxvYlJlZ2lzdHJ5PiBibG9iUmVnaXN0cnk7CiAgICAgcmV0dXJu
ICZibG9iUmVnaXN0cnkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggMjhmNjhhMTRkNTFlYjk1ZTZm
OTRiZGEzZWY0MzVmNDc4OTAyZjEyMC4uMDA1M2I3ZWEyMmI5ZjIyMDdiZjFkZTg2NTFlODBkY2Uy
Yzk0MThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJ
L0Jsb2JSZWdpc3RyeVByb3h5LmNwcApAQCAtNzQsNiArNzQsMTYgQEAgdm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVS
TCYgc3JjVVIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFy
dCwgZW5kLCBjb250ZW50VHlwZSksIDApOwogfQogCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpCit7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJs
b2JVUkxIYW5kbGUodXJsKSwgMCk7Cit9CisKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVn
aXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJs
b2JVUkxIYW5kbGUodXJsKSwgMCk7Cit9CisKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0
cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgdWludDY0X3QgcmVzdWx0
U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5oCmluZGV4IDUyZmFjZjgxODJjYTIzMTBiM2I4ZmE1YTQwZGI2NDdlMGNjMTMz
YzEuLjE4MjQyZjUyZWNiNWZjYzcxM2JiMDEzZWY3Y2FiYTlmNzU5YTVmODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApA
QCAtMzksNiArMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCB3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpIGZpbmFsOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGJkYzg2NWQxZTM2ZTVkMzU4ZGUxY2VmZDli
ZmIzNzUyOWViNGIyY2MuLjhiYjI4YjlmNzkwZmNkN2ZhY2ZlNzM1NjQ2MTU4MTlmMmI2NDhhZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTkxLDYgKzkxLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1f
YmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7IH0KICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lz
dHJ5LmJsb2JTaXplKHVybCk7IH0KICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsg
bV9ibG9iUmVnaXN0cnkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEhh
bmRsZSh1cmwpOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwm
IHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwp
OyB9CiAKICAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnlJbXBsKCkgZmluYWwgeyBy
ZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CmluZGV4IGNmZDNkNTgzMDE5OGEzOTA0YTc0NDc5ZmIwYWQ3OGVmOTcyMzNmNzkuLmNmNmE2ODgz
OTIwYzFjMjFkMDYwNGY0ODlkNjJiODI3MWQ2Zjg3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtODcsNiArODcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3Rl
ckJsb2JVUkwodXJsKTsgfQogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBV
UkwmIHVybCkgZmluYWwgeyByZXR1cm4gbV9ibG9iUmVnaXN0cnkuYmxvYlNpemUodXJsKTsgfQog
ICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBh
dGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS53cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpIGZpbmFs
IHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7IH0KKyAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7IH0KIAogICAgIEJsb2JSZWdpc3Ry
eUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSBmaW5hbCB7IHJldHVybiAmbV9ibG9iUmVnaXN0cnk7
IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQ0MWUxNDAxZDJmNGQxZDc1YTIyMTQ2MWZlYzk2YzczMDAxNzE3ZDYuLmZh
NTVjZDBkOTdmMjIxZjlmNTFkNzA3YmEzZTBjMGFjNDk5YTFiOTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisg
ICAgICAgICogZmFzdC9maWxlcy9ibG9iLWFzLWZyYW1lLXVybC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZmlsZXMvYmxvYi1hcy1mcmFtZS11cmwuaHRtbDogQWRkZWQuCisK
IDIwMjEtMDgtMDkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dMSUJdIEdhcmRlbiBhY2Nlc3NpYmlsaXR5L3NlbGVjdGVkLXN0YXRlLWNoYW5nZWQtbm90aWZp
Y2F0aW9ucy5odG1sIHRpbWVvdXRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L2Jsb2ItYXMtZnJhbWUtdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
YmxvYi1hcy1mcmFtZS11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZjkyZmY1NjM1MWVh
Y2Y4Yzk1YjdjNWM1YmY1NDRhZjM0ZjBlMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitNYWtlcyBzdXJlIHRoYXQgdXNpbmcgYSBCbG9iIFVSTCBhcyBmcmFtZSBVUkwgd29ya3Mg
YXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFt
ZS5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5lclRleHQgaXMgIkZPTyIKK1BBU1MgaWZyYW1lLmNv
bnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZiA9PSBibG9iVVJMIGlzIHRydWUKK1BBU1MgaWZyYW1l
LmNvbnRlbnREb2N1bWVudC5VUkwgPT0gYmxvYlVSTCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9maWxlcy9ibG9iLWFzLWZyYW1lLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy9ibG9iLWFzLWZyYW1lLXVybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNDgwY2Q2MWY2NTQ0OWIx
MzFiNzIyM2M0MGIyZWU2NjE3OGNhYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiTWFrZXMgc3VyZSB0
aGF0IHVzaW5nIGEgQmxvYiBVUkwgYXMgZnJhbWUgVVJMIHdvcmtzIGFzIGV4cGVjdGVkLiIpOwor
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2xldCBibG9iQ29udGVudHMgPSBgPGJvZHk+Rk9PPC9i
b2R5PmA7CitsZXQgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Cits
ZXQgYmxvYiA9IG5ldyBCbG9iKFtibG9iQ29udGVudHNdLCB7IHR5cGU6ICJ0ZXh0L2h0bWwiIH0p
OworbGV0IGJsb2JVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworaWZyYW1lLnNyYyA9
IGJsb2JVUkw7CitpZnJhbWUub25sb2FkID0gKCkgPT4geworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiaWZyYW1lLmNvbnRlbnREb2N1bWVudC5ib2R5LmlubmVyVGV4dCIsICJGT08iKTsKKyAg
ICBzaG91bGRCZVRydWUoImlmcmFtZS5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWYgPT0gYmxv
YlVSTCIpOworICAgIHNob3VsZEJlVHJ1ZSgiaWZyYW1lLmNvbnRlbnREb2N1bWVudC5VUkwgPT0g
YmxvYlVSTCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKK2RvY3VtZW50LmJvZHkuYXBwZW5k
KGlmcmFtZSk7CitibG9iID0gbnVsbDsKK2djKCk7CitzZXRUaW1lb3V0KGdjLCAwKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435215</attachid>
            <date>2021-08-09 15:25:50 -0700</date>
            <delta_ts>2021-08-09 15:59:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228923-20210809152549.patch</filename>
            <type>text/plain</type>
            <size>54836</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ1OWZhMTEzNDdjOGE4
YjhlNjJjZGZlMWUzMzFkOTEyMjI0YmU1MC4uYWZkOGVjZTg2ZmU4ZWQyMDk4NjI2OTA0ZDBmY2Zi
Yjg5ZDk2ZWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICBCbG9iIFVSTCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQuIFRoaXMgaXMgYmVjYXVzZSB3
ZSB1c2UgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB0bworICAgICAgICBleHRlbmQg
dGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIFVSTCBkdXJpbmcgdGhlIGxvYWQgYW5kIFVSTFdpdGhC
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZW5kcworICAgICAgICB1cCBjcmVhdGluZyBhIG5ldyBw
dWJsaWMgQmxvYiBVUkwuIFRoaXMgaXMgV2ViLW9ic2VydmFibGUgc28gd2UgbmVlZCBhIHdheSB0
byBleHRlbmQgdGhlCisgICAgICAgIGxpZmV0aW1lIG9mIGEgQmxvYiBVUkwgd2l0aG91dCBhY3R1
YWxseSBnZW5lcmF0aW5nIGEgbmV3IEJsb2IgVVJMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVw
bGFjZXMgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB3aXRoIGEgbmV3IEJsb2JVUkxI
YW5kbGUgY2xhc3Mgd2hpY2gKKyAgICAgICAgZXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgYSBCbG9i
IFVSTCBhcyBsb25nIGFzIHRoZXJlIGFyZSBCbG9iVVJMSGFuZGxlIG9iamVjdHMgcmVmZXJyaW5n
CisgICAgICAgIHRvIGl0LiBCbG9iVVJMSGFuZGxlIHdvcmtzIHdpdGggYm90aCBwcml2YXRlIGFu
ZCBwdWJsaWMgQmxvYiBVUkxzIHNvIGl0IHJlcGxhY2VzCisgICAgICAgIEJsb2I6OkhhbmRsZSBh
cyB3ZWxsICh3aGljaCBJIHJlY2VudGx5IGludHJvZHVjZWQgdmlhIHIyODA1NDcpLiBUaGUgQmxv
YiBVUkwgbm8gbG9uZ2VyCisgICAgICAgIGNoYW5nZXMgd2hlbiB3ZSBleHRlbmQgaXRzIGxpZmV0
aW1lLiBJbnN0ZWFkLCB0aGUgQmxvYiByZWdpc3RyeSBub3cga2VlcHMgdHJhY2sgb2YKKyAgICAg
ICAgcmVmZXJlbmNlcyB0byBhIGdpdmVuIEJsb2IgYW5kIG9ubHkgcmVtb3ZlcyBhIEJsb2IgVVJM
IG9uY2UgdGhlcmUgYXJlIG5vIGxvbmdlciBhbnkKKyAgICAgICAgcmVmZXJlbmNlcyB0byBpdC4K
KworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWwKKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYkhhbmRsZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2I6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6aGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnVy
bCBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JVUkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YlVSTEhhbmRsZTo6fkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhh
bmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlVSTEhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5o
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjp1cmwgY29uc3QpOgorICAgICAgICAqIGZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGxvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpj
aGVja05ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphZGRCbG9iRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkxI
YW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJl
VG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdC5oOgorCiAyMDIxLTA4LTA5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb25zb2xlIGxvZ2dpbmcgdG8gZW5jb3VyYWdlIHRo
ZSB1c2Ugb2YgYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uIGluIFdlYkNyeXB0bwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4OGMyZmE4YTM3YTBlYjdjYzQ2Yjc2ZjM4Y2M5N2JhNDM5NDc3ODczLi5hZGE2OWMyY2VjNmVh
MDg3M2NkYTRjZmMyZTA2NWNlODBlMWY3YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDIxLTA4LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxv
YiBVUkwgY2hhbmdlcyBhZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0
cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorCiAyMDIxLTA4LTA5ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBXVEYgbG9nZ2lu
ZyBjaGFubmVscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDk5NzA2NjY3OWFlNDdj
MTMyZGNlNjE0OTQzZjQzZTY5YTEyODE3NTMuLmE4NzM5NDc5N2Y2YWZkY2MwODYwMTM3Njc2NjYx
Yzc3ODBiMzI3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW06CisKIDIwMjEtMDgtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IFdURiBsb2dnaW5nIGNoYW5uZWxzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDc1YzJjOTY5N2YxNjlkYzVlNjExOTA3NWQ3ZGE3ZjIw
NzE1NjlhYS4uYzY5MjAyMDY2ODViOTMyNzZlNTU3Y2I5NDIxZTFkMDlmOTU5MTAxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisKIDIwMjEt
MDgtMDkgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5DYWlyb11bRGVidWddIEJ1aWxkIGZpeCBhZnRlciByMjgwNzU2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCBlNWI4MDFiMmY2ZDgxMDg3ODY5ZGNjZTRmZjgyZjc4NzBmZmQ2ODQ5Li5hZjU3OTI1
NmRmMDU0ODAxYTdlOTI1MTA5MjMxYjliY2Q2OWM5YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTU5OCw2ICs1OTgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAogICAgIGZpbGVhcGkvQmxvYi5oCiAgICAgZmls
ZWFwaS9CbG9iUHJvcGVydHlCYWcuaAorICAgIGZpbGVhcGkvQmxvYlVSTC5oCiAgICAgZmlsZWFw
aS9FbmRpbmdUeXBlLmgKICAgICBmaWxlYXBpL0ZpbGUuaAogICAgIGZpbGVhcGkvRmlsZUxpc3Qu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGI2MzlhNWI4ZjEyNWQ4OGQ5NDY3ZmQyMjc4ZWM4MTg5MGQ1Njk0ZDcuLjM2NDE3MTE0
ZjAzYWUwMTM5MmI4OWQ3M2FjY2FlZGM3Njg0YjBjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMzcsNyArMzAzNyw3IEBA
CiAJCTk3NjI3Qjk4MTRGQjU0MjQwMDJDRENBMSAvKiBTdXBwbGVtZW50YWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2MjdCOTcxNEZCNTQyNDAw
MkNEQ0ExIC8qIFN1cHBsZW1lbnRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDNzkxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzVBMTIy
QjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDN0MxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1
RDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuaCAqLzsgfTsKLQkJOTc2RDZDN0YxMjJC
OEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzYwMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggKi87
IH07CisJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2MDEyMkI4QTNEMDAxRkQx
RjcgLyogQmxvYlVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk3NkQ2QzgxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2MjEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNjcxMjJCOEEzRDAwMUZE
MUY3IC8qIEZpbGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTc2RDZDODkxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVSZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzZBMTIyQjhB
M0QwMDFGRDFGNyAvKiBGaWxlUmVhZGVyLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3ZmQ3MDZkZTVh
MzY1ZTJiNGJiYmE3OGQ2M2ZjNmFiOTc3MWQ4MGZmLi41MDQ3ODVjOTZkOGY1NjQzYTk2MTgyNjg1
NTk1NGRlMDY1N2Q2Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYwMCw3ICs2MDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAgV2Fz
bU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAgICBW
ZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBT
ZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNo
YXJlZEJ1ZmZlcnMpCisgICAgICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMs
IFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewogICAgICAgICBDbG9u
ZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMs
IGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
X0lOX1dPUktFUlMpCkBAIC02NDcsNyArNjQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFdh
c21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCiAgICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxl
QXJyYXkmIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlmCi0gICAgICAgIFZlY3RvcjxCbG9iOjpI
YW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25D
b250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgc2hhcmVkQnVmZmVycykK
KyAgICAgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9yPHVpbnQ4
X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSYgc2hhcmVkQnVmZmVycykKICAgICAgICAgOiBDbG9uZUJhc2UobGV4aWNhbEdsb2Jh
bE9iamVjdCkKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9ibG9iSGFuZGxl
cyhibG9iSGFuZGxlcykKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2bSwgb2JqKSkgewogICAg
ICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPEJsb2I6Okhh
bmRsZT4gZHVtbXlCbG9iSGFuZGxlczsKKyAgICAgICAgICAgICAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4gZHVtbXlCbG9iSGFuZGxlczsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJheUJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQpAQCAtMTc2MCw3ICsxNzYwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBW
ZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBtX2Js
b2JIYW5kbGVzOworICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgbV9ibG9iSGFuZGxlczsKICAg
ICBPYmplY3RQb29sIG1fb2JqZWN0UG9vbDsKICAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzOwpA
QCAtMzkxNSw3ICszOTE1LDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXEKICAgICBtX21lbW9y
eUNvc3QgPSBjb21wdXRlTWVtb3J5Q29zdCgpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxCbG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBW
ZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMK
K1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50
OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywg
c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJh
Y2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRpZgpAQCAtNDA2NSw3
ICs0MDY1LDcgQEAgc3RhdGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFp
bHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
dGhyb3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVj
dG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7CisgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+
IGJsb2JIYW5kbGVzOwogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3Nh
Z2VQb3J0czsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gZHVtbXlJbWFnZUJpdG1h
cHM7CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKQEAgLTQyMTcsNyAr
NDIxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7Cisg
ICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IGJsb2JIYW5kbGVzOwogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAgICAgV2FzbU1lbW9yeUhh
bmRsZUFycmF5IHdhc21NZW1vcnlIYW5kbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAxNmM0OTE5NWZmYzRmNmU2OTc3
YTc0ODhiNGQ2YzI5ODU0OWEzOGI0Li5mYjc1N2E0ZDc0ZjYwZTJmZmNkYjgyOWMxNTIwMzBhNjY5
OWMxNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCbG9i
VVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQogCiAgICAg
VmVjdG9yPFN0cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8QmxvYjo6
SGFuZGxlPiYgYmxvYkhhbmRsZXMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JIYW5kbGVzOyB9Cisg
ICAgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvYkhhbmRsZXM7IH0KICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJik7CiAgICAgSURCVmFsdWUg
d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICAgICBzdGF0aWMg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAg
ICAgKTsKIAotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4m
JiwgY29uc3QgVmVjdG9yPEJsb2I6OkhhbmRsZT4mIGJsb2JIYW5kbGVzLCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VC
aXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8QmxvYlVSTEhhbmRsZT4mIGJs
b2JIYW5kbGVzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCiAj
aWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiA9IHsgfQogI2VuZGlm
CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1v
ZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21N
ZW1vcnlIYW5kbGVBcnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2VuZGlmCi0gICAg
VmVjdG9yPEJsb2I6OkhhbmRsZT4gbV9ibG9iSGFuZGxlczsKKyAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4gbV9ibG9iSGFuZGxlczsKICAgICBzaXplX3QgbV9tZW1vcnlDb3N0IHsgMCB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMjdiYmEyZTczZDY1NjE1MTUyNzBhYTM1N2E3
MGJiYzAyMjM3MTBhZC4uYzI5YTdiYWZkMWFhNjBlZmJjZDM4MjI5MzA2ZjJkYWUzM2IwZmFhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03Niw3NSArNzYsMTkgQEAgVVJMUmVnaXN0cnkm
IEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
Ly8gVW5yZWdpc3RlcnMgdGhlIEJsb2IncyBpbnRlcm5hbCBVUkwgdXBvbiBkZXN0cnVjdGlvbi4g
VGhpcyBjYW4gYmUgdXNlZCB0byBleHRlbmQgdGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIGRhdGEK
LS8vIHdpdGhvdXQgYWN0dWFsbHkga2VlcGluZyB0aGUgQmxvYiBvYmplY3QgYWxpdmUuCi1jbGFz
cyBCbG9iSW50ZXJuYWxVUkwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QmxvYkludGVy
bmFsVVJMPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxVUkw+IGNyZWF0
ZShWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKFdU
Rk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVm
PEJsb2JJbnRlcm5hbFVSTD4gY3JlYXRlRm9yRGVzZXJpYWxpemF0aW9uKGNvbnN0IFVSTCYgc291
cmNlVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIHR5cGUp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoc291
cmNlVVJMLCBmaWxlQmFja2VkUGF0aCwgdHlwZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8
QmxvYkludGVybmFsVVJMPiBjcmVhdGVGb3JTbGljZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoc291cmNlVVJMLCBz
dGFydCwgZW5kLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxV
Ukw+IGFkb3B0SW50ZXJuYWxVUkwoY29uc3QgVVJMJiB1cmwpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoY3Jvc3NUaHJlYWRDb3B5KHVybCkpKTsK
LSAgICB9Ci0KLSAgICB+QmxvYkludGVybmFsVVJMKCkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwpOwotICAgIH0K
LQotICAgIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVVJMLmlzb2xhdGVkQ29w
eSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgQmxvYkludGVybmFsVVJMKFZlY3RvcjxCbG9iUGFydD4m
JiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgICAgIDogbV9pbnRl
cm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQotICAgIHsKLSAgICAgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1v
dmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwotICAgIH0KLSAgICBCbG9iSW50ZXJuYWxVUkwo
Y29uc3QgVVJMJiBzb3VyY2VVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiB0eXBlKQotICAgICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKSkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNvdXJjZVVSTCwgc3RhcnQsIGVu
ZCwgdHlwZSk7Ci0gICAgfQotICAgIEJsb2JJbnRlcm5hbFVSTChjb25zdCBVUkwmIHNvdXJjZVVS
TCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAg
ICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKLSAgICB7
Ci0gICAgICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobnVsbHB0ciwgbV9pbnRlcm5hbFVS
TCwgc291cmNlVVJMKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVS
TCwgc291cmNlVVJMLCBmaWxlQmFja2VkUGF0aCwgdHlwZSk7Ci0gICAgfQotICAgIEJsb2JJbnRl
cm5hbFVSTChVUkwmJiBpbnRlcm5hbFVSTCkKLSAgICAgICAgOiBtX2ludGVybmFsVVJMKFdURk1v
dmUoaW50ZXJuYWxVUkwpKQotICAgIHsgfQotCi0gICAgVVJMIG1faW50ZXJuYWxVUkw7Ci19Owot
CiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCkKICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgICwgbV9pbnRl
cm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmFkb3B0SW50ZXJuYWxVUkwodXJsKSkKKyAgICAsIG1f
aW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogewogfQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAg
ICAsIG1fc2l6ZSgwKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0
ZSh7IH0sIHsgfSkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFs
VVJMKCkpCiB7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIHsgfSwgeyB9KTsKIH0KIAogc3RhdGljIFZlY3RvcjxCbG9iUGFydD4gYnVp
bGRCbG9iRGF0YShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCkBAIC0xNjMsNDAgKzEwNyw0OCBAQCBz
dGF0aWMgVmVjdG9yPEJsb2JQYXJ0PiBidWlsZEJsb2JEYXRhKFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYgYmxvYlBhcnRWYXJpYW50cwogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
JmNvbnRleHQpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHByb3BlcnR5QmFn
LnR5cGUpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZShidWls
ZEJsb2JEYXRhKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSwgbV90eXBl
KSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKIHsK
KyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVS
TCwgYnVpbGRCbG9iRGF0YShXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZyks
IG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQog
ICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJu
YWxVUkw6OmNyZWF0ZSh7IEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpIH0sIGNvbnRlbnRUeXBlKSkK
KyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKIHsKKyAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwg
eyBCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSB9LCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJs
b2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgQmxvYiYgYmxvYikKICAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0KQogICAgICwgbV90eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6
ZSgpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZSh7IEJsb2JQ
YXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJM
OjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogeworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBt
X3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAg
ICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNp
emUpCi0gICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlRm9yRGVzZXJp
YWxpemF0aW9uKHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSkpCisgICAgLCBtX2ludGVy
bmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiB7CisgICAgaWYgKGZpbGVCYWNr
ZWRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CisgICAgZWxzZQorICAg
ICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChtX2ludGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOwog
fQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVS
TCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYg
dHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1h
bGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFs
VVJMOjpjcmVhdGVGb3JTbGljZShzcmNVUkwsIHN0YXJ0LCBlbmQsIG1fdHlwZSkpCisgICAgLCBt
X2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiAgICAgLy8gbV9zaXpl
IGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBlbmQgLSBzdGFydCBzbyB3ZSBkbyBub3QgaW5p
dGlhbGl6ZSBpdCBoZXJlLgogeworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCwgbV90eXBl
KTsKIH0KIAogQmxvYjo6fkJsb2IoKQpAQCAtMjA1LDE0ICsxNTcsOSBAQCBCbG9iOjp+QmxvYigp
CiAgICAgICAgICgqbV9ibG9iTG9hZGVycy5iZWdpbigpKS0+Y2FuY2VsKCk7CiB9CiAKLVVSTCBC
bG9iOjp1cmwoKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVybmFsVVJMLT51cmwoKTsKLX0K
LQogUmVmPEJsb2I+IEJsb2I6OnNsaWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgY29uc3QKIHsKLSAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoJmNvbnRleHQs
IG1faW50ZXJuYWxVUkwtPnVybCgpLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOworICAgIGF1
dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYigmY29udGV4dCwgbV9pbnRlcm5hbFVSTCwgc3Rh
cnQsIGVuZCwgY29udGVudFR5cGUpKTsKICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gYmxvYjsKIH0KQEAgLTIyMiw3ICsxNjksNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
QmxvYjo6c2l6ZSgpIGNvbnN0CiAgICAgaWYgKCFtX3NpemUpIHsKICAgICAgICAgLy8gRklYTUU6
IEphdmFTY3JpcHQgY2Fubm90IHJlcHJlc2VudCBzaXplcyBhcyBsYXJnZSBhcyB1bnNpZ25lZCBs
b25nIGxvbmcsIHdlIG5lZWQgdG8KICAgICAgICAgLy8gY29tZSB1cCB3aXRoIGFuIGV4Y2VwdGlv
biB0byB0aHJvdyBpZiBmaWxlIHNpemUgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBhY3R1YWxTaXplID0gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Ymxv
YlNpemUobV9pbnRlcm5hbFVSTC0+dXJsKCkpOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YWN0dWFsU2l6ZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKG1faW50ZXJuYWxV
UkwpOwogICAgICAgICBtX3NpemUgPSBpc0luQm91bmRzPGxvbmcgbG9uZz4oYWN0dWFsU2l6ZSkg
PyBhY3R1YWxTaXplIDogMDsKICAgICB9CiAKQEAgLTM5NSwyMyArMzQyLDkgQEAgY29uc3QgY2hh
ciogQmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJCbG9iIjsK
IH0KIAotQmxvYjo6SGFuZGxlIEJsb2I6OmhhbmRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEhh
bmRsZSB7IG1faW50ZXJuYWxVUkwuY29weVJlZigpIH07Ci19Ci0KLUJsb2I6OkhhbmRsZTo6SGFu
ZGxlKFJlZjxCbG9iSW50ZXJuYWxVUkw+JiYgaW50ZXJuYWxVUkwpCi0gICAgOiBtX2ludGVybmFs
VVJMKFdURk1vdmUoaW50ZXJuYWxVUkwpKQoteyB9Ci0KLUJsb2I6OkhhbmRsZTo6fkhhbmRsZSgp
ID0gZGVmYXVsdDsKLQotQmxvYjo6SGFuZGxlOjpIYW5kbGUoSGFuZGxlJiYpID0gZGVmYXVsdDsK
LUJsb2I6OkhhbmRsZTo6SGFuZGxlKGNvbnN0IEhhbmRsZSYpID0gZGVmYXVsdDsKLQotVVJMIEJs
b2I6OkhhbmRsZTo6dXJsKCkgY29uc3QKK0Jsb2JVUkxIYW5kbGUgQmxvYjo6aGFuZGxlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbFVSTC0+dXJsKCk7CisgICAgcmV0dXJuIEJsb2JV
UkxIYW5kbGUgeyBtX2ludGVybmFsVVJMIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggMjU1MzFiYzMwOGVjODk5NjIzNzdlY2Q0MDBlYzEwZDA4
OTRhMGJhYi4uNGVkODZhM2VmODdhODIyNWU5YmFkMDY4NTk0YWJkN2YzOWQ5Y2IwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQmxvYlByb3BlcnR5QmFnLmgiCisjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZp
bGVSZWFkZXJMb2FkZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCkBAIC01Nyw3ICs1OCw2IEBAIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIAogdXNpbmcg
QmxvYlBhcnRWYXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5nPjsKLWNsYXNzIEJs
b2JJbnRlcm5hbFVSTDsKIAogY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKEJsb2IsIFdF
QkNPUkVfRVhQT1JUKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
QmxvYigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1
cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwpAQCAtMTE3LDE5ICsxMTcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPFJlYWRhYmxlU3RyZWFtPj4gc3Ry
ZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIGNsYXNzIEhhbmRsZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBleHBsaWNpdCBIYW5kbGUoUmVmPEJsb2JJbnRlcm5hbFVSTD4mJik7
Ci0gICAgICAgIH5IYW5kbGUoKTsKLSAgICAgICAgSGFuZGxlKEhhbmRsZSYmKTsKLSAgICAgICAg
SGFuZGxlKGNvbnN0IEhhbmRsZSYpOwotICAgICAgICBVUkwgdXJsKCkgY29uc3Q7Ci0gICAgcHJp
dmF0ZToKLSAgICAgICAgUmVmPEJsb2JJbnRlcm5hbFVSTD4gbV9pbnRlcm5hbFVSTDsKLSAgICB9
OwotCiAgICAgLy8gS2VlcGluZyB0aGUgaGFuZGxlIGFsaXZlIHdpbGwga2VlcCB0aGUgQmxvYiBk
YXRhIGFsaXZlIChidXQgbm90IHRoZSBCbG9iIG9iamVjdCkuCi0gICAgSGFuZGxlIGhhbmRsZSgp
IGNvbnN0OworICAgIEJsb2JVUkxIYW5kbGUgaGFuZGxlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKQEAgLTE2MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJu
YWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9i
amVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBU
aGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVzZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVu
dAogICAgIC8vIGludG8gYW4gSFRNTCBvciBmb3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBV
UkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2UgcHVycG9zZXMuCi0gICAgUmVmPEJsb2JJbnRlcm5h
bFVSTD4gbV9pbnRlcm5hbFVSTDsKKyAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIEhhc2hT
ZXQ8c3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+PiBtX2Jsb2JMb2FkZXJzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4IGQwN2Y5ZGI4NWEyOTQ1YzkzZGIwY2FmMDgwYTI2
OGQwNWJmNDRhYTEuLjU1YzU4MTAxNTkxY2U0MTVjNzVjYTA4MDkzNGVhMzFlMTcyZDU0NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcApAQCAtOTYsNDUgKzk2LDY3IEBAIFVSTCBCbG9i
VVJMOjpjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogICAgIHJldHVy
biBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1VUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uOjpVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQotICAg
IDogbV91cmwodXJsKQorQmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZShjb25zdCBCbG9iVVJM
SGFuZGxlJiBvdGhlcikKKyAgICA6IG1fdXJsKG90aGVyLm1fdXJsLmlzb2xhdGVkQ29weSgpKQog
ewotICAgIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KCk7CisgICAgcmVnaXN0ZXJC
bG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKIH0KIAotVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbjo6flVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oKQorQmxvYlVSTEhhbmRs
ZTo6QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKKyAgICA6IG1fdXJsKHVybC5pc29sYXRl
ZENvcHkoKSkKIHsKLSAgICB1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNzYXJ5KCk7CisgICAg
QVNTRVJUKG1fdXJsLnByb3RvY29sSXNCbG9iKCkpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRs
ZUlmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lv
bjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoKQorQmxvYlVSTEhhbmRsZTo6fkJs
b2JVUkxIYW5kbGUoKQogewotICAgIGlmIChtX3VybC5wcm90b2NvbElzQmxvYigpKSB7Ci0gICAg
ICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShCbG9iVVJMOjpnZXRPcmln
aW5VUkwobV91cmwpKTsKLSAgICAgICAgVVJMIHRlbXBvcmFyeUJsb2JVUkwgPSBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwob3JpZ2luLnB0cigpKTsKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG9yaWdpbi5wdHIoKSwgdGVtcG9yYXJ5QmxvYlVSTCwgbV91
cmwpOwotICAgICAgICBtX3VybCA9IFdURk1vdmUodGVtcG9yYXJ5QmxvYlVSTCk7Ci0gICAgfQor
ICAgIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBVUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOjp1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNz
YXJ5KCkKK3ZvaWQgQmxvYlVSTEhhbmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3Nh
cnkoKQogewogICAgIGlmIChtX3VybC5wcm90b2NvbElzQmxvYigpKQotICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybCk7CisgICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShtX3VybCk7Cit9CisKK3Zv
aWQgQmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpCit7
CisgICAgaWYgKG1fdXJsLnByb3RvY29sSXNCbG9iKCkpCisgICAgICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKG1fdXJsKTsKK30KKworQmxvYlVSTEhh
bmRsZSYgQmxvYlVSTEhhbmRsZTo6b3BlcmF0b3I9KGNvbnN0IEJsb2JVUkxIYW5kbGUmIG90aGVy
KQoreworICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisg
ICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIG1fdXJsID0gb3Ro
ZXIubV91cmwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNl
c3NhcnkoKTsKKworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBCbG9iVVJMSGFuZGxlOjpj
bGVhcigpCit7CisgICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAg
IG1fdXJsID0geyB9OwogfQogCi1VUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uJiBVUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOjpvcGVyYXRvcj0oVVJMV2l0aEJsb2JVUkxMaWZl
dGltZUV4dGVuc2lvbiYmIG90aGVyKQorQmxvYlVSTEhhbmRsZSYgQmxvYlVSTEhhbmRsZTo6b3Bl
cmF0b3I9KEJsb2JVUkxIYW5kbGUmJiBvdGhlcikKIHsKLSAgICB1bnJlZ2lzdGVyQ3VycmVudFVS
TElmTmVjZXNzYXJ5KCk7CisgICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgp
OwogICAgIG1fdXJsID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3VybCwgeyB9KTsKICAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mIFVSTFdpdGhC
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb246Om9wZXJhdG9yPShVUkwmJiB1cmwpCitCbG9iVVJMSGFu
ZGxlJiBCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdW5y
ZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpOwotICAgIG1fdXJsID0gV1RGTW92ZSh1cmwp
OwotICAgIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KCk7CisgICAgQVNTRVJUKHVy
bC5wcm90b2NvbElzQmxvYigpKTsKKyAgICB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNz
YXJ5KCk7CisgICAgbV91cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVnaXN0ZXJCbG9i
VVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iVVJMLmgKaW5kZXggODMxZjQyY2M4Mjg1YWJkN2EwZmUxNTNkNGRhZThkYWEyZGU2
MDY3YS4uNTg1YWUzZGQ2NTk2MGFiYjgyMTQwMWE4ODk4NjZkYzI0YmYyMmM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iVVJMLmgKQEAgLTU4LDI3ICs1OCwzMSBAQCBwcml2YXRlOgogICAgIEJsb2JV
UkwoKSB7IH0KIH07CiAKLWNsYXNzIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gewor
Ly8gRXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgdGhlIEJsb2IgVVJMLiBUaGlzIG1lYW5zIHRoYXQg
dGhlIGJsb2IgVVJMIHdpbGwgcmVtYWluIHZhbGlkIGFmdGVyCisvLyByZXZva2VPYmplY3RVUkwo
KSBoYXMgYmVlbiBjYWxsZWQsIGFzIGxvbmcgYXMgQmxvYlVSTEhhbmRsZSBvYmplY3RzIHJlZmVy
IHRvIHRoZSBibG9iIFVSTC4KK2NsYXNzIEJsb2JVUkxIYW5kbGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVSTFdpdGhCbG9iVVJMTGlm
ZXRpbWVFeHRlbnNpb24pOwogcHVibGljOgotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24oKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbihjb25zdCBVUkwmKTsKLSAgICB+VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lv
bigpOworICAgIEJsb2JVUkxIYW5kbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgQmxvYlVS
TEhhbmRsZShjb25zdCBVUkwmKTsKKyAgICB+QmxvYlVSTEhhbmRsZSgpOwogCi0gICAgVVJMV2l0
aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbihVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9u
JiYgb3RoZXIpCisgICAgQmxvYlVSTEhhbmRsZShjb25zdCBCbG9iVVJMSGFuZGxlJik7CisgICAg
QmxvYlVSTEhhbmRsZShCbG9iVVJMSGFuZGxlJiYgb3RoZXIpCiAgICAgICAgIDogbV91cmwoc3Rk
OjpleGNoYW5nZShvdGhlci5tX3VybCwgeyB9KSkKICAgICB7IH0KIAotICAgIFVSTFdpdGhCbG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24mIG9wZXJhdG9yPShVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0
ZW5zaW9uJiYpOwotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mIG9wZXJhdG9y
PShVUkwmJik7CisgICAgQmxvYlVSTEhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0IEJsb2JVUkxIYW5k
bGUmKTsKKyAgICBCbG9iVVJMSGFuZGxlJiBvcGVyYXRvcj0oQmxvYlVSTEhhbmRsZSYmKTsKKyAg
ICBCbG9iVVJMSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgVVJMJik7CiAKLSAgICBvcGVyYXRvciBj
b25zdCBVUkwmKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsLmlzb2xhdGVkQ29weSgpOyB9CisKKyAgICB2b2lkIGNsZWFyKCk7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBleHRl
bmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZO
ZWNlc3NhcnkoKTsKIAogICAgIFVSTCBtX3VybDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBiZDgxZjhlYTMxOWFlMDM5
ZmVkYzE3NWQxNDE4Yzg0MmYwMjIwOTBmLi45ZmYzNjI4NTYwOTc5MTc3YmIwYWYyY2ZhN2ZkYzIy
NjIzMzE4NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAKQEAgLTE1NSwxNSArMTU1LDI1IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKGlzQmxv
YlVSTENvbnRhaW5zTnVsbE9yaWdpbih1cmwpKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3Zl
KHVybC5zdHJpbmcoKSk7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICBlbnN1cmVPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0gewogICAgICAg
ICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIH0pOwogfQogCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJs
KTsKKyAgICB9KTsKK30KKwordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQo
W3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOworICAgIH0pOworfQorCiBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBpZiAoYXV0byBjYWNoZWRPcmlnaW4gPSBvcmlnaW5NYXAoKS0+Z2V0KHVy
bC5zdHJpbmcoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oCmluZGV4IGJjZDM2YmUzZmE3YjM5MmJiNjMxM2IzZWE2NWI5Mzc1Y2UyMTE1ZjAu
LjE0MTI4NDgyZmRjNTY3ZGRmNDA2MTM3MjU3MjM5MmE5YTZjNDExYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00Nyw2ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJs
b2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkxIYW5kbGUoY29uc3QgVVJMJik7CisKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgb3JpZ2luIGZvciB0aGUg
Z2l2ZW4gYmxvYiBVUkwuIFRoaXMgaXMgYmVjYXVzZSB3ZSBhcmUgbm90IGFibGUgdG8gZW1iZWQg
dGhlIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgdGhlIG9yaWdpbiBvZiBmaWxlIFVSTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDQ3MTQ3NDk1ZmI0Y2Y4NGNk
MGQyYTZiNjhmYzJmMzEwYmU3YzA5ZTAuLmNkODk1YTk3OTVjYTI4MDdmMzQ1OTdjNzAyNDcwOWEw
OThhZjhhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTEw
NCwxNyArMTA0LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1CiAgICAgY2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWUu
bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgeyB9LCBXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CiAKLVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gRnJhbWVMb2FkZXI6OlBvbGlj
eUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUG9saWN5RGVjaXNpb25Nb2RlIG1v
ZGUpIGNvbnN0CitCbG9iVVJMSGFuZGxlIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpleHRl
bmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFBvbGljeURlY2lzaW9uTW9kZSBtb2RlKSBjb25zdAogewogICAgIGlmIChtb2RlICE9IFBv
bGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzIHx8ICFyZXF1ZXN0LnVybCgpLnByb3RvY29s
SXNCbG9iKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBVUkxXaXRoQmxvYlVSTExpZmV0
aW1lRXh0ZW5zaW9uIHVybFdpdGhMaWZldGltZUV4dGVuc2lvbihyZXF1ZXN0LnVybCgpKTsKLSAg
ICByZXF1ZXN0LnNldFVSTCh1cmxXaXRoTGlmZXRpbWVFeHRlbnNpb24pOwotICAgIGlmIChsb2Fk
ZXIpCi0gICAgICAgIGxvYWRlci0+cmVxdWVzdCgpLnNldFVSTCh1cmxXaXRoTGlmZXRpbWVFeHRl
bnNpb24pOwotCi0gICAgcmV0dXJuIHVybFdpdGhMaWZldGltZUV4dGVuc2lvbjsKKyAgICByZXR1
cm4gQmxvYlVSTEhhbmRsZSB7IHJlcXVlc3QudXJsKCkgfTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUg
cG9saWN5RGVjaXNpb25Nb2RlKQpAQCAtMTk3LDcgKzE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0CiAKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsZWFyUHJvdmlzaW9uYWxMb2FkRm9yUG9s
aWN5Q2hlY2soKTsKIAotICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5k
QmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkocmVxdWVzdCwgbG9hZGVyLCBwb2xpY3lEZWNpc2lv
bk1vZGUpOworICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVS
TExpZmV0aW1lSWZOZWNlc3NhcnkocmVxdWVzdCwgcG9saWN5RGVjaXNpb25Nb2RlKTsKIAogICAg
IGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudExvYWQgPSAhbV9mcmFtZS5sb2FkZXIoKS5zdGF0
ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSAmJiByZXF1ZXN0LnVy
bCgpLnByb3RvY29sSXNBYm91dCgpICYmICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7CiAgICAg
YXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7
CkBAIC0yNTUsNyArMjUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXQKICAgICBpZiAoIURP
TVdpbmRvdzo6YWxsb3dQb3BVcChtX2ZyYW1lKSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsg
fSwgbnVsbHB0ciwgeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKIAot
ICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVSTExpZmV0aW1l
SWZOZWNlc3NhcnkocmVxdWVzdCwgbnVsbHB0cik7CisgICAgYXV0byBibG9iVVJMTGlmZXRpbWVF
eHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0KTsKIAog
ICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmNyZWF0
ZSgpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLmdl
dCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpLCByZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggM2M2
NjIyODM1NjM3N2FmODlkMDllYTU3NDVjMTEyZTkxNGZiODIwNi4uYTViN2UzZmQxMGM0Y2VkNWQw
NmM5OTMxNTJmNjhhZWM2MzU4ZjJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbjsKK2NsYXNzIEJsb2JVUkxIYW5kbGU7CiAK
IGVudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIDogdWludDhfdCB7CiAgICAgQ29u
dGludWVMb2FkLApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAg
IFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZO
ZWNlc3NhcnkoUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqLCBQb2xpY3lEZWNpc2lv
bk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cykgY29uc3Q7CisgICAgQmxv
YlVSTEhhbmRsZSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQb2xpY3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5j
aHJvbm91cykgY29uc3Q7CiAKICAgICBGcmFtZSYgbV9mcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNzU5NTcwMjIxNzI5YmZi
NTE4ZTJhYmI1NDIwMDNmYWYwOGJjNmY1Mi4uNjg5ZDMxOTA3MTA4ZGM0NDM5ODA0ZjFlNTQyMjY5
ZWNiOWUxOGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeS5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgPSAwOworCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCmluZGV4IDMyZGQ4YzA4ZTIxOTA2ZjRhMmQ4ZjJhOGMzMGM3ZWE1YWE5
NTI2NzQuLjUxMjhkZDc4NzU5NjNkYjA0YzlkODExZDlhM2QxMzEzNzNmMDgwYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyCiAKICAgICBhdXRv
IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CiAgICAgYmxvYkRhdGEt
PmFwcGVuZEZpbGUoV1RGTW92ZShmaWxlKSk7Ci0gICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygp
LCBXVEZNb3ZlKGJsb2JEYXRhKSk7CisgICAgYWRkQmxvYkRhdGEodXJsLnN0cmluZygpLCBXVEZN
b3ZlKGJsb2JEYXRhKSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5
SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYg
YmxvYlBhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCks
IFdURk1vdmUoYmxvYkRhdGEpKTsKKyAgICBhZGRCbG9iRGF0YSh1cmwuc3RyaW5nKCksIFdURk1v
dmUoYmxvYkRhdGEpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQpAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAKICAgICBCbG9iRGF0YSogc3JjID0gZ2V0QmxvYkRh
dGFGcm9tVVJMKHNyY1VSTCk7CiAgICAgaWYgKHNyYykgewotICAgICAgICBtX2Jsb2JzLnNldCh1
cmwuc3RyaW5nKCksIHNyYyk7CisgICAgICAgIGFkZEJsb2JEYXRhKHVybC5zdHJpbmcoKSwgc3Jj
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0CiAgICAgYXV0byBiYWNraW5nRmlsZSA9IEJsb2JEYXRhOjpjcmVhdGUo
Y29udGVudFR5cGUpOwogICAgIGJhY2tpbmdGaWxlLT5hcHBlbmRGaWxlKGZpbGUucmVsZWFzZU5v
bk51bGwoKSk7CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmFja2lu
Z0ZpbGUpKTsKKyAgICBhZGRCbG9iRGF0YSh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmFja2luZ0Zp
bGUpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKQEAgLTIxMSwxMiArMjExLDE0
IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMCiAgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKG5ld0Rh
dGEucHRyKCksIG9yaWdpbmFsRGF0YS0+aXRlbXMoKSwgc3RhcnQsIG5ld0xlbmd0aCk7CiAKICAg
ICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUobmV3RGF0YSkpOworICAgIG1fYmxv
YlJlZmVyZW5jZXMuYWRkKHVybC5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBtX2Jsb2JzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgIGlmICht
X2Jsb2JSZWZlcmVuY2VzLnJlbW92ZSh1cmwuc3RyaW5nKCkpKQorICAgICAgICBtX2Jsb2JzLnJl
bW92ZSh1cmwuc3RyaW5nKCkpOwogfQogCiBCbG9iRGF0YSogQmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0
QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtMzU5LDQgKzM2MSwyMyBA
QCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IEJsb2JSZWdpc3RyeUltcGw6
OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQg
QmxvYlJlZ2lzdHJ5SW1wbDo6YWRkQmxvYkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIFJlZlB0cjxC
bG9iRGF0YT4mJiBibG9iRGF0YSkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYmxvYnMuc2V0
KHVybCwgV1RGTW92ZShibG9iRGF0YSkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgbV9ibG9iUmVmZXJlbmNlcy5hZGQodXJsKTsKK30KKwordm9pZCBCbG9iUmVnaXN0
cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYg
KG1fYmxvYnMuY29udGFpbnModXJsLnN0cmluZygpKSkKKyAgICAgICAgbV9ibG9iUmVmZXJlbmNl
cy5hZGQodXJsLnN0cmluZygpKTsKK30KKwordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lz
dGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAobV9ibG9iUmVmZXJl
bmNlcy5yZW1vdmUodXJsLnN0cmluZygpKSkKKyAgICAgICAgbV9ibG9icy5yZW1vdmUodXJsLnN0
cmluZygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBkNDQ0NTE0MWFh
MmZjYzg5ZmVkZjM5ZTdkODdlYTMwODFlMjM2ZGNkLi41NzQwMzZhNTZkNDFiZGEyZDQzYTQzZDVh
YWYzODg5MDYyM2Y2Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQmxv
YkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxI
YXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNjUsNiArNjYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYpOwogCisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKTsKKwogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgd3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CkBAIC03OCw2ICs4
Miw5IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIHZvaWQgYWRk
QmxvYkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIFJlZlB0cjxCbG9iRGF0YT4mJik7CisKKyAgICBI
YXNoQ291bnRlZFNldDxTdHJpbmc+IG1fYmxvYlJlZmVyZW5jZXM7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxCbG9iRGF0YT4+IG1fYmxvYnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCBjM2E3ZjFkNzUzNDhkYmY2NTQ1NzdlMDJkMjljNmEyYmUwNTli
Mzk4Li4yNGVlZDNhZTBmMDU2NDI0ZGMwMjhkYzQ3YTk5ZWI1Yzg4NmRkMTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKFJlc3BvbnNlVHlwZSB0eXBl
KQogICAgIC8vIGF0dGVtcHQgdG8gZGlzY291cmFnZSBzeW5jaHJvbm91cyBYSFIgdXNlLiByZXNw
b25zZVR5cGUgaXMgb25lIHN1Y2ggcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4KICAgICAvLyBXZSds
bCBvbmx5IGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5IGZvciBIVFRQKFMpIHJlcXVlc3RzIHNp
bmNlIHN5bmMgcmVxdWVzdHMgZm9yIGxvY2FsIHByb3RvY29scwogICAgIC8vIHN1Y2ggYXMgZmls
ZTogYW5kIGRhdGE6IHN0aWxsIG1ha2Ugc2Vuc2UgdG8gYWxsb3cuCi0gICAgaWYgKCFtX2FzeW5j
ICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpICYmIG1fdXJsLnVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkpIHsKICAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Ig
c3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0
LiIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAg
ICAgfQpAQCAtMzgyLDkgKzM4MiwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVz
dDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvbwogICAgIGNs
ZWFyUmVzcG9uc2UoKTsKICAgICBjbGVhclJlcXVlc3QoKTsKIAotICAgIGF1dG8gdXBncmFkZWRV
UkwgPSB1cmw7Ci0gICAgY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh1cGdyYWRlZFVSTCwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKLSAgICBtX3VybCA9IFdURk1vdmUodXBncmFk
ZWRVUkwpOworICAgIG1fdXJsID0gdXJsOworICAgIGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQobV91cmwsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgaWYgKG1fdXJsLnBy
b3RvY29sSXNCbG9iKCkpCisgICAgICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gbV91
cmw7CiAKICAgICBtX2FzeW5jID0gYXN5bmM7CiAKQEAgLTQxNyw3ICs0MTgsNyBAQCBzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgp
CiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKICAgICBp
ZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5z
aG91bGRJZ25vcmVTeW5jWEhScygpKSB7Ci0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG1ha2VTdHJpbmcoIklnbm9yaW5nIFhNTEh0dHBSZXF1ZXN0LnNl
bmQoKSBjYWxsIGZvciAnIiwgbV91cmwudXJsKCkuc3RyaW5nKCksICInIGJlY2F1c2UgdGhlIG1h
eGltdW0gbnVtYmVyIG9mIHN5bmNocm9ub3VzIGZhaWx1cmVzIHdhcyByZWFjaGVkLiIpKTsKKyAg
ICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbWFrZVN0cmlu
ZygiSWdub3JpbmcgWE1MSHR0cFJlcXVlc3Quc2VuZCgpIGNhbGwgZm9yICciLCBtX3VybC5zdHJp
bmcoKSwgIicgYmVjYXVzZSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3luY2hyb25vdXMgZmFpbHVy
ZXMgd2FzIHJlYWNoZWQuIikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3I8dm9pZD4geyB9
OwogICAgIH0KIApAQCAtNTIxLDcgKzUyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kKEJsb2ImIGJvZHkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52
YWx1ZSgpKTsKIAogICAgIGlmIChtX21ldGhvZCAhPSAiR0VUIiAmJiBtX21ldGhvZCAhPSAiSEVB
RCIpIHsKLSAgICAgICAgaWYgKCFtX3VybC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKKyAgICAgICAgaWYgKCFtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgcG9zdGluZyBCbG9icyB0
byBub24taHR0cCBVUkxzIChlLmcuIGN1c3RvbSBVUkwgc2NoZW1lcykKICAgICAgICAgICAgIC8v
IGJ1dCBiZWNhdXNlIG9mIHRoZSBhcmNoaXRlY3R1cmUgb2YgYmxvYi1oYW5kbGluZyB0aGF0IHdp
bGwgcmVxdWlyZSBhIGZhaXIgYW1vdW50IG9mIHdvcmsuCiAgICAgICAgICAgICAKQEAgLTU5NCw3
ICs1OTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZEJ5dGVzRGF0
YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogRXhjZXB0aW9uT3I8dm9pZD4gWE1M
SHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoKQogewogICAgIC8vIE9ubHkgR0VUIHJlcXVlc3Qg
aXMgc3VwcG9ydGVkIGZvciBibG9iIFVSTC4KLSAgICBpZiAoIW1fYXN5bmMgJiYgbV91cmwudXJs
KCkucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAiR0VUIikKKyAgICBpZiAoIW1fYXN5
bmMgJiYgbV91cmwucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAiR0VUIikKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciB9OwogCiAgICAgaWYgKG1fYXN5bmMg
JiYgbV91cGxvYWQgJiYgbV91cGxvYWQtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCkBAIC03NDcsNiAr
NzQ4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXF1ZXN0KCkKICAgICBtX3JlcXVl
c3RIZWFkZXJzLmNsZWFyKCk7CiAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IG51bGxwdHI7CiAg
ICAgbV91cmwgPSBVUkwgeyB9OworICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uLmNsZWFy
KCk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmdlbmVyaWNFcnJvcigpCkBAIC05MzksNiAr
OTQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nKQogCiAgICAgbV9sb2FkaW5nQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV91cmwg
PSBVUkwgeyB9OworICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uLmNsZWFyKCk7CiAKICAg
ICBtX3NlbmRGbGFnID0gZmFsc2U7CiAgICAgY2hhbmdlU3RhdGUoRE9ORSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGI0OGUxYjkwZmFhYTUyZDZmZTljNTNhNmExZjIwOTkz
NWM1M2JlOGIuLmMwNGExNjg5NjA5YjZmYjkxYTY4MGM5OGY3ZTA3MzJhNzQ4ZjllZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yMTYsNyArMjE2LDggQEAgcHJpdmF0ZToK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxYTUxIdHRwUmVxdWVzdFVwbG9hZD4gbV91cGxvYWQ7CiAK
LSAgICBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uIG1fdXJsOworICAgIFVSTCBtX3Vy
bDsKKyAgICBCbG9iVVJMSGFuZGxlIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOwogICAgIFN0
cmluZyBtX21ldGhvZDsKICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAgICAg
UmVmUHRyPEZvcm1EYXRhPiBtX3JlcXVlc3RFbnRpdHlCb2R5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCA2M2MyNDMxNTEzYjhmNzFhNWQ4ZGU5NjM5NGMxNGJlOGQyZDNmY2U1Li44
ODQzODJkNGNmNmI1NGNlMzk3YWNiOTA4ODE2NDUwYmI2YzBkMzVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtODY2LDYgKzg2NiwyNCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKICAgICBzZXNz
aW9uLT5ibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAg
aWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMWE1NDQ0YmU3
YjQ3ZTVkYzEyMWQ1OGY4MGJhYWRiYTE4ZDNjY2MzYy4uZDkyNDMyMTM5Mjk4ZGJkNjNmNGE3ZTE4
YzNmMGIwMWRkZjE0ODllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjM2LDYgKzIz
Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsK
ICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
CiAKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpOworCiAgICAgdm9pZCBzZXRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBjcmVh
dGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgV2ViQ29yZTo6V2Vi
U29ja2V0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCA5YjMyODk2ODEwNjE5YmExOWRjNWJmNDM3YjM2OGE3Y2E3ZmE0MzFiLi43OTZi
ZmE0NGNjMjYyNzA4NzUzZTc2MzE4M2E1YTAxN2M3YWZmYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU2LDYgKzU2LDggQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVucmVn
aXN0ZXJCbG9iVVJMKFVSTCB1cmwpCiAgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90
IHJlc3VsdFNpemUpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
VmVjdG9yPFN0cmluZz4gYmxvYlVSTHMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFz
eW5jCisgICAgUmVnaXN0ZXJCbG9iVVJMSGFuZGxlKFVSTCB1cmwpOworICAgIFVucmVnaXN0ZXJC
bG9iVVJMSGFuZGxlKFVSTCB1cmwpOwogCiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggYjUwZjQ5YmM4MzY0MmFmYTE2MGFiZDY4ZjQ5N2Q1YjhhMmY0YmY3Ny4uNzk2
NjJlZmJkMTE2ODYxOWZmY2Y2NWNiMjg4NWMxZjQwMzViNmIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTY1LDYgKzY1LDggQEAgQmxvYlJlZ2lzdHJ5KiBOZXR3b3Jr
UHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKICAgICAgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQogICAgICAgICB2b2lk
IHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxIYW5kbGUoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB9OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxFbXB0eUJsb2JSZWdpc3RyeT4gYmxvYlJlZ2lzdHJ5OwogICAgIHJldHVybiAmYmxvYlJlZ2lz
dHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDI4ZjY4YTE0ZDUxZWI5NWU2Zjk0YmRhM2VmNDM1
ZjQ3ODkwMmYxMjAuLjAwNTNiN2VhMjJiOWYyMjA3YmYxZGU4NjUxZTgwZGNlMmM5NDE4YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKQEAgLTc0LDYgKzc0LDE2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCwgY29u
dGVudFR5cGUpLCAwKTsKIH0KIAordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9i
VVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KHVybCksIDApOworfQorCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVS
TEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KHVybCksIDApOworfQorCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJs
b2JTaXplKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHVpbnQ2NF90IHJlc3VsdFNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAppbmRleCA1MmZhY2Y4MTgyY2EyMzEwYjNiOGZhNWE0MGRiNjQ3ZTBjYzEzM2MxLi4xODI0MmY1
MmVjYjVmY2M3MTNiYjAxM2VmN2NhYmE5Zjc1OWE1Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM5LDYgKzM5
LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7CisgICAgdm9pZCByZWdp
c3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQppbmRleCBiZGM4NjVkMWUzNmU1ZDM1OGRlMWNlZmQ5YmZiMzc1MjllYjRi
MmNjLi44YmIyOGI5Zjc5MGZjZDdmYWNmZTczNTY0NjE1ODE5ZjJiNjQ4YWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC05MSw2ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOyB9CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JT
aXplKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6
ZSh1cmwpOyB9CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lz
dHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwm
IHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsg
fQorICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpIGZpbmFs
IHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsgfQogCiAgICAg
QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgpIGZpbmFsIHsgcmV0dXJuICZtX2Js
b2JSZWdpc3RyeTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBjZmQz
ZDU4MzAxOThhMzkwNGE3NDQ3OWZiMGFkNzhlZjk3MjMzZjc5Li5jZjZhNjg4MzkyMGMxYzIxZDA2
MDRmNDg5ZDYyYjgyNzFkNmY4NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTg3LDYgKzg3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVy
bCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZp
bmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KICAgICB2b2lkIHdy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkud3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsgfQorICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CiAKICAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9i
UmVnaXN0cnlJbXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAxOGI3ZTU3ZTA1OTBkNmFiMzg5YjEwZDA5ZTBkMGM2MDY0ZWU4ODEyLi42MWEyYTE0OTAyZGZm
MDM2NDExZTkzODk4YzY3OGZmN2MxOWQ2ZjVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDgtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIFVS
TCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdh
cmVuLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGZh
c3QvZmlsZXMvYmxvYi1hcy1mcmFtZS11cmwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA4LTA5
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJs
ZSBsYXlvdXQgdGVzdHMgaW4gZWRpdGluZy9zZWxlY3Rpb24vaW9zIGJ5IGRlZmF1bHQgaW4gRVdT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi1hcy1mcmFtZS11cmwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZjkyZmY1NjM1MWVhY2Y4Yzk1YjdjNWM1YmY1NDRhZjM0
ZjBlMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMt
ZnJhbWUtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitNYWtlcyBzdXJlIHRoYXQg
dXNpbmcgYSBCbG9iIFVSTCBhcyBmcmFtZSBVUkwgd29ya3MgYXMgZXhwZWN0ZWQuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9k
eS5pbm5lclRleHQgaXMgIkZPTyIKK1BBU1MgaWZyYW1lLmNvbnRlbnRXaW5kb3cubG9jYXRpb24u
aHJlZiA9PSBibG9iVVJMIGlzIHRydWUKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5VUkwg
PT0gYmxvYlVSTCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWFz
LWZyYW1lLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWFzLWZyYW1lLXVy
bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjNDgwY2Q2MWY2NTQ0OWIxMzFiNzIyM2M0MGIyZWU2NjE3OGNh
YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMtZnJh
bWUtdXJsLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiTWFrZXMgc3VyZSB0aGF0IHVzaW5nIGEgQmxvYiBVUkwg
YXMgZnJhbWUgVVJMIHdvcmtzIGFzIGV4cGVjdGVkLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7
CisKK2xldCBibG9iQ29udGVudHMgPSBgPGJvZHk+Rk9PPC9ib2R5PmA7CitsZXQgaWZyYW1lID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitsZXQgYmxvYiA9IG5ldyBCbG9iKFti
bG9iQ29udGVudHNdLCB7IHR5cGU6ICJ0ZXh0L2h0bWwiIH0pOworbGV0IGJsb2JVUkwgPSBVUkwu
Y3JlYXRlT2JqZWN0VVJMKGJsb2IpOworaWZyYW1lLnNyYyA9IGJsb2JVUkw7CitpZnJhbWUub25s
b2FkID0gKCkgPT4geworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaWZyYW1lLmNvbnRlbnRE
b2N1bWVudC5ib2R5LmlubmVyVGV4dCIsICJGT08iKTsKKyAgICBzaG91bGRCZVRydWUoImlmcmFt
ZS5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWYgPT0gYmxvYlVSTCIpOworICAgIHNob3VsZEJl
VHJ1ZSgiaWZyYW1lLmNvbnRlbnREb2N1bWVudC5VUkwgPT0gYmxvYlVSTCIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CitibG9iID0gbnVs
bDsKK2djKCk7CitzZXRUaW1lb3V0KGdjLCAwKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435220</attachid>
            <date>2021-08-09 15:59:49 -0700</date>
            <delta_ts>2021-08-09 18:54:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228923-20210809155948.patch</filename>
            <type>text/plain</type>
            <size>56294</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ1OWZhMTEzNDdjOGE4
YjhlNjJjZGZlMWUzMzFkOTEyMjI0YmU1MC4uYWZkOGVjZTg2ZmU4ZWQyMDk4NjI2OTA0ZDBmY2Zi
Yjg5ZDk2ZWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICBCbG9iIFVSTCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQuIFRoaXMgaXMgYmVjYXVzZSB3
ZSB1c2UgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB0bworICAgICAgICBleHRlbmQg
dGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIFVSTCBkdXJpbmcgdGhlIGxvYWQgYW5kIFVSTFdpdGhC
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZW5kcworICAgICAgICB1cCBjcmVhdGluZyBhIG5ldyBw
dWJsaWMgQmxvYiBVUkwuIFRoaXMgaXMgV2ViLW9ic2VydmFibGUgc28gd2UgbmVlZCBhIHdheSB0
byBleHRlbmQgdGhlCisgICAgICAgIGxpZmV0aW1lIG9mIGEgQmxvYiBVUkwgd2l0aG91dCBhY3R1
YWxseSBnZW5lcmF0aW5nIGEgbmV3IEJsb2IgVVJMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVw
bGFjZXMgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB3aXRoIGEgbmV3IEJsb2JVUkxI
YW5kbGUgY2xhc3Mgd2hpY2gKKyAgICAgICAgZXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgYSBCbG9i
IFVSTCBhcyBsb25nIGFzIHRoZXJlIGFyZSBCbG9iVVJMSGFuZGxlIG9iamVjdHMgcmVmZXJyaW5n
CisgICAgICAgIHRvIGl0LiBCbG9iVVJMSGFuZGxlIHdvcmtzIHdpdGggYm90aCBwcml2YXRlIGFu
ZCBwdWJsaWMgQmxvYiBVUkxzIHNvIGl0IHJlcGxhY2VzCisgICAgICAgIEJsb2I6OkhhbmRsZSBh
cyB3ZWxsICh3aGljaCBJIHJlY2VudGx5IGludHJvZHVjZWQgdmlhIHIyODA1NDcpLiBUaGUgQmxv
YiBVUkwgbm8gbG9uZ2VyCisgICAgICAgIGNoYW5nZXMgd2hlbiB3ZSBleHRlbmQgaXRzIGxpZmV0
aW1lLiBJbnN0ZWFkLCB0aGUgQmxvYiByZWdpc3RyeSBub3cga2VlcHMgdHJhY2sgb2YKKyAgICAg
ICAgcmVmZXJlbmNlcyB0byBhIGdpdmVuIEJsb2IgYW5kIG9ubHkgcmVtb3ZlcyBhIEJsb2IgVVJM
IG9uY2UgdGhlcmUgYXJlIG5vIGxvbmdlciBhbnkKKyAgICAgICAgcmVmZXJlbmNlcyB0byBpdC4K
KworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWwKKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYkhhbmRsZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2I6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6aGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnVy
bCBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JVUkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YlVSTEhhbmRsZTo6fkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhh
bmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlVSTEhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5o
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjp1cmwgY29uc3QpOgorICAgICAgICAqIGZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGxvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpj
aGVja05ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphZGRCbG9iRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkxI
YW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJl
VG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdC5oOgorCiAyMDIxLTA4LTA5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb25zb2xlIGxvZ2dpbmcgdG8gZW5jb3VyYWdlIHRo
ZSB1c2Ugb2YgYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uIGluIFdlYkNyeXB0bwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4OGMyZmE4YTM3YTBlYjdjYzQ2Yjc2ZjM4Y2M5N2JhNDM5NDc3ODczLi5hZGE2OWMyY2VjNmVh
MDg3M2NkYTRjZmMyZTA2NWNlODBlMWY3YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDIxLTA4LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxv
YiBVUkwgY2hhbmdlcyBhZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0
cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorCiAyMDIxLTA4LTA5ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBXVEYgbG9nZ2lu
ZyBjaGFubmVscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDk5NzA2NjY3OWFlNDdj
MTMyZGNlNjE0OTQzZjQzZTY5YTEyODE3NTMuLmE4NzM5NDc5N2Y2YWZkY2MwODYwMTM3Njc2NjYx
Yzc3ODBiMzI3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW06CisKIDIwMjEtMDgtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IFdURiBsb2dnaW5nIGNoYW5uZWxzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDc1YzJjOTY5N2YxNjlkYzVlNjExOTA3NWQ3ZGE3ZjIw
NzE1NjlhYS4uYzY5MjAyMDY2ODViOTMyNzZlNTU3Y2I5NDIxZTFkMDlmOTU5MTAxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisKIDIwMjEt
MDgtMDkgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5DYWlyb11bRGVidWddIEJ1aWxkIGZpeCBhZnRlciByMjgwNzU2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCBlNWI4MDFiMmY2ZDgxMDg3ODY5ZGNjZTRmZjgyZjc4NzBmZmQ2ODQ5Li5hZjU3OTI1
NmRmMDU0ODAxYTdlOTI1MTA5MjMxYjliY2Q2OWM5YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTU5OCw2ICs1OTgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAogICAgIGZpbGVhcGkvQmxvYi5oCiAgICAgZmls
ZWFwaS9CbG9iUHJvcGVydHlCYWcuaAorICAgIGZpbGVhcGkvQmxvYlVSTC5oCiAgICAgZmlsZWFw
aS9FbmRpbmdUeXBlLmgKICAgICBmaWxlYXBpL0ZpbGUuaAogICAgIGZpbGVhcGkvRmlsZUxpc3Qu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGI2MzlhNWI4ZjEyNWQ4OGQ5NDY3ZmQyMjc4ZWM4MTg5MGQ1Njk0ZDcuLjM2NDE3MTE0
ZjAzYWUwMTM5MmI4OWQ3M2FjY2FlZGM3Njg0YjBjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMzcsNyArMzAzNyw3IEBA
CiAJCTk3NjI3Qjk4MTRGQjU0MjQwMDJDRENBMSAvKiBTdXBwbGVtZW50YWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2MjdCOTcxNEZCNTQyNDAw
MkNEQ0ExIC8qIFN1cHBsZW1lbnRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDNzkxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzVBMTIy
QjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDN0MxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1
RDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuaCAqLzsgfTsKLQkJOTc2RDZDN0YxMjJC
OEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzYwMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggKi87
IH07CisJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2MDEyMkI4QTNEMDAxRkQx
RjcgLyogQmxvYlVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk3NkQ2QzgxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2MjEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNjcxMjJCOEEzRDAwMUZE
MUY3IC8qIEZpbGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTc2RDZDODkxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVSZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzZBMTIyQjhB
M0QwMDFGRDFGNyAvKiBGaWxlUmVhZGVyLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3ZmQ3MDZkZTVh
MzY1ZTJiNGJiYmE3OGQ2M2ZjNmFiOTc3MWQ4MGZmLi41MDQ3ODVjOTZkOGY1NjQzYTk2MTgyNjg1
NTk1NGRlMDY1N2Q2Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYwMCw3ICs2MDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAgV2Fz
bU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAgICBW
ZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBT
ZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNo
YXJlZEJ1ZmZlcnMpCisgICAgICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMs
IFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewogICAgICAgICBDbG9u
ZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMs
IGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
X0lOX1dPUktFUlMpCkBAIC02NDcsNyArNjQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFdh
c21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCiAgICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxl
QXJyYXkmIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlmCi0gICAgICAgIFZlY3RvcjxCbG9iOjpI
YW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25D
b250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgc2hhcmVkQnVmZmVycykK
KyAgICAgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9yPHVpbnQ4
X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSYgc2hhcmVkQnVmZmVycykKICAgICAgICAgOiBDbG9uZUJhc2UobGV4aWNhbEdsb2Jh
bE9iamVjdCkKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9ibG9iSGFuZGxl
cyhibG9iSGFuZGxlcykKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2bSwgb2JqKSkgewogICAg
ICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPEJsb2I6Okhh
bmRsZT4gZHVtbXlCbG9iSGFuZGxlczsKKyAgICAgICAgICAgICAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4gZHVtbXlCbG9iSGFuZGxlczsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJheUJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQpAQCAtMTc2MCw3ICsxNzYwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBW
ZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBtX2Js
b2JIYW5kbGVzOworICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgbV9ibG9iSGFuZGxlczsKICAg
ICBPYmplY3RQb29sIG1fb2JqZWN0UG9vbDsKICAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzOwpA
QCAtMzkxNSw3ICszOTE1LDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXEKICAgICBtX21lbW9y
eUNvc3QgPSBjb21wdXRlTWVtb3J5Q29zdCgpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxCbG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBW
ZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMK
K1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50
OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywg
c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJh
Y2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRpZgpAQCAtNDA2NSw3
ICs0MDY1LDcgQEAgc3RhdGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFp
bHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
dGhyb3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVj
dG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7CisgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+
IGJsb2JIYW5kbGVzOwogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3Nh
Z2VQb3J0czsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gZHVtbXlJbWFnZUJpdG1h
cHM7CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKQEAgLTQyMTcsNyAr
NDIxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7Cisg
ICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IGJsb2JIYW5kbGVzOwogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAgICAgV2FzbU1lbW9yeUhh
bmRsZUFycmF5IHdhc21NZW1vcnlIYW5kbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAxNmM0OTE5NWZmYzRmNmU2OTc3
YTc0ODhiNGQ2YzI5ODU0OWEzOGI0Li5mYjc1N2E0ZDc0ZjYwZTJmZmNkYjgyOWMxNTIwMzBhNjY5
OWMxNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCbG9i
VVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQogCiAgICAg
VmVjdG9yPFN0cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8QmxvYjo6
SGFuZGxlPiYgYmxvYkhhbmRsZXMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JIYW5kbGVzOyB9Cisg
ICAgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvYkhhbmRsZXM7IH0KICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJik7CiAgICAgSURCVmFsdWUg
d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICAgICBzdGF0aWMg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAg
ICAgKTsKIAotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4m
JiwgY29uc3QgVmVjdG9yPEJsb2I6OkhhbmRsZT4mIGJsb2JIYW5kbGVzLCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VC
aXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8QmxvYlVSTEhhbmRsZT4mIGJs
b2JIYW5kbGVzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCiAj
aWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiA9IHsgfQogI2VuZGlm
CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1v
ZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21N
ZW1vcnlIYW5kbGVBcnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2VuZGlmCi0gICAg
VmVjdG9yPEJsb2I6OkhhbmRsZT4gbV9ibG9iSGFuZGxlczsKKyAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4gbV9ibG9iSGFuZGxlczsKICAgICBzaXplX3QgbV9tZW1vcnlDb3N0IHsgMCB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMjdiYmEyZTczZDY1NjE1MTUyNzBhYTM1N2E3
MGJiYzAyMjM3MTBhZC4uYzI5YTdiYWZkMWFhNjBlZmJjZDM4MjI5MzA2ZjJkYWUzM2IwZmFhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03Niw3NSArNzYsMTkgQEAgVVJMUmVnaXN0cnkm
IEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
Ly8gVW5yZWdpc3RlcnMgdGhlIEJsb2IncyBpbnRlcm5hbCBVUkwgdXBvbiBkZXN0cnVjdGlvbi4g
VGhpcyBjYW4gYmUgdXNlZCB0byBleHRlbmQgdGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIGRhdGEK
LS8vIHdpdGhvdXQgYWN0dWFsbHkga2VlcGluZyB0aGUgQmxvYiBvYmplY3QgYWxpdmUuCi1jbGFz
cyBCbG9iSW50ZXJuYWxVUkwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QmxvYkludGVy
bmFsVVJMPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxVUkw+IGNyZWF0
ZShWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKFdU
Rk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVm
PEJsb2JJbnRlcm5hbFVSTD4gY3JlYXRlRm9yRGVzZXJpYWxpemF0aW9uKGNvbnN0IFVSTCYgc291
cmNlVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIHR5cGUp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoc291
cmNlVVJMLCBmaWxlQmFja2VkUGF0aCwgdHlwZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8
QmxvYkludGVybmFsVVJMPiBjcmVhdGVGb3JTbGljZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoc291cmNlVVJMLCBz
dGFydCwgZW5kLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxV
Ukw+IGFkb3B0SW50ZXJuYWxVUkwoY29uc3QgVVJMJiB1cmwpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoY3Jvc3NUaHJlYWRDb3B5KHVybCkpKTsK
LSAgICB9Ci0KLSAgICB+QmxvYkludGVybmFsVVJMKCkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwpOwotICAgIH0K
LQotICAgIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVVJMLmlzb2xhdGVkQ29w
eSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgQmxvYkludGVybmFsVVJMKFZlY3RvcjxCbG9iUGFydD4m
JiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgICAgIDogbV9pbnRl
cm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQotICAgIHsKLSAgICAgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1v
dmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwotICAgIH0KLSAgICBCbG9iSW50ZXJuYWxVUkwo
Y29uc3QgVVJMJiBzb3VyY2VVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiB0eXBlKQotICAgICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKSkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNvdXJjZVVSTCwgc3RhcnQsIGVu
ZCwgdHlwZSk7Ci0gICAgfQotICAgIEJsb2JJbnRlcm5hbFVSTChjb25zdCBVUkwmIHNvdXJjZVVS
TCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAg
ICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKLSAgICB7
Ci0gICAgICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobnVsbHB0ciwgbV9pbnRlcm5hbFVS
TCwgc291cmNlVVJMKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVS
TCwgc291cmNlVVJMLCBmaWxlQmFja2VkUGF0aCwgdHlwZSk7Ci0gICAgfQotICAgIEJsb2JJbnRl
cm5hbFVSTChVUkwmJiBpbnRlcm5hbFVSTCkKLSAgICAgICAgOiBtX2ludGVybmFsVVJMKFdURk1v
dmUoaW50ZXJuYWxVUkwpKQotICAgIHsgfQotCi0gICAgVVJMIG1faW50ZXJuYWxVUkw7Ci19Owot
CiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCkKICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgICwgbV9pbnRl
cm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmFkb3B0SW50ZXJuYWxVUkwodXJsKSkKKyAgICAsIG1f
aW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogewogfQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAg
ICAsIG1fc2l6ZSgwKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0
ZSh7IH0sIHsgfSkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFs
VVJMKCkpCiB7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIHsgfSwgeyB9KTsKIH0KIAogc3RhdGljIFZlY3RvcjxCbG9iUGFydD4gYnVp
bGRCbG9iRGF0YShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCkBAIC0xNjMsNDAgKzEwNyw0OCBAQCBz
dGF0aWMgVmVjdG9yPEJsb2JQYXJ0PiBidWlsZEJsb2JEYXRhKFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYgYmxvYlBhcnRWYXJpYW50cwogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
JmNvbnRleHQpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHByb3BlcnR5QmFn
LnR5cGUpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZShidWls
ZEJsb2JEYXRhKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSwgbV90eXBl
KSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKIHsK
KyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVS
TCwgYnVpbGRCbG9iRGF0YShXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZyks
IG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQog
ICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJu
YWxVUkw6OmNyZWF0ZSh7IEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpIH0sIGNvbnRlbnRUeXBlKSkK
KyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKIHsKKyAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwg
eyBCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSB9LCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJs
b2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgQmxvYiYgYmxvYikKICAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0KQogICAgICwgbV90eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6
ZSgpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZSh7IEJsb2JQ
YXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJM
OjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogeworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBt
X3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAg
ICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNp
emUpCi0gICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlRm9yRGVzZXJp
YWxpemF0aW9uKHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSkpCisgICAgLCBtX2ludGVy
bmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiB7CisgICAgaWYgKGZpbGVCYWNr
ZWRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CisgICAgZWxzZQorICAg
ICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChtX2ludGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOwog
fQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVS
TCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYg
dHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1h
bGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFs
VVJMOjpjcmVhdGVGb3JTbGljZShzcmNVUkwsIHN0YXJ0LCBlbmQsIG1fdHlwZSkpCisgICAgLCBt
X2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiAgICAgLy8gbV9zaXpl
IGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBlbmQgLSBzdGFydCBzbyB3ZSBkbyBub3QgaW5p
dGlhbGl6ZSBpdCBoZXJlLgogeworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCwgbV90eXBl
KTsKIH0KIAogQmxvYjo6fkJsb2IoKQpAQCAtMjA1LDE0ICsxNTcsOSBAQCBCbG9iOjp+QmxvYigp
CiAgICAgICAgICgqbV9ibG9iTG9hZGVycy5iZWdpbigpKS0+Y2FuY2VsKCk7CiB9CiAKLVVSTCBC
bG9iOjp1cmwoKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVybmFsVVJMLT51cmwoKTsKLX0K
LQogUmVmPEJsb2I+IEJsb2I6OnNsaWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgY29uc3QKIHsKLSAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoJmNvbnRleHQs
IG1faW50ZXJuYWxVUkwtPnVybCgpLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOworICAgIGF1
dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYigmY29udGV4dCwgbV9pbnRlcm5hbFVSTCwgc3Rh
cnQsIGVuZCwgY29udGVudFR5cGUpKTsKICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gYmxvYjsKIH0KQEAgLTIyMiw3ICsxNjksNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
QmxvYjo6c2l6ZSgpIGNvbnN0CiAgICAgaWYgKCFtX3NpemUpIHsKICAgICAgICAgLy8gRklYTUU6
IEphdmFTY3JpcHQgY2Fubm90IHJlcHJlc2VudCBzaXplcyBhcyBsYXJnZSBhcyB1bnNpZ25lZCBs
b25nIGxvbmcsIHdlIG5lZWQgdG8KICAgICAgICAgLy8gY29tZSB1cCB3aXRoIGFuIGV4Y2VwdGlv
biB0byB0aHJvdyBpZiBmaWxlIHNpemUgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBhY3R1YWxTaXplID0gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Ymxv
YlNpemUobV9pbnRlcm5hbFVSTC0+dXJsKCkpOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YWN0dWFsU2l6ZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKG1faW50ZXJuYWxV
UkwpOwogICAgICAgICBtX3NpemUgPSBpc0luQm91bmRzPGxvbmcgbG9uZz4oYWN0dWFsU2l6ZSkg
PyBhY3R1YWxTaXplIDogMDsKICAgICB9CiAKQEAgLTM5NSwyMyArMzQyLDkgQEAgY29uc3QgY2hh
ciogQmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJCbG9iIjsK
IH0KIAotQmxvYjo6SGFuZGxlIEJsb2I6OmhhbmRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEhh
bmRsZSB7IG1faW50ZXJuYWxVUkwuY29weVJlZigpIH07Ci19Ci0KLUJsb2I6OkhhbmRsZTo6SGFu
ZGxlKFJlZjxCbG9iSW50ZXJuYWxVUkw+JiYgaW50ZXJuYWxVUkwpCi0gICAgOiBtX2ludGVybmFs
VVJMKFdURk1vdmUoaW50ZXJuYWxVUkwpKQoteyB9Ci0KLUJsb2I6OkhhbmRsZTo6fkhhbmRsZSgp
ID0gZGVmYXVsdDsKLQotQmxvYjo6SGFuZGxlOjpIYW5kbGUoSGFuZGxlJiYpID0gZGVmYXVsdDsK
LUJsb2I6OkhhbmRsZTo6SGFuZGxlKGNvbnN0IEhhbmRsZSYpID0gZGVmYXVsdDsKLQotVVJMIEJs
b2I6OkhhbmRsZTo6dXJsKCkgY29uc3QKK0Jsb2JVUkxIYW5kbGUgQmxvYjo6aGFuZGxlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbFVSTC0+dXJsKCk7CisgICAgcmV0dXJuIEJsb2JV
UkxIYW5kbGUgeyBtX2ludGVybmFsVVJMIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggMjU1MzFiYzMwOGVjODk5NjIzNzdlY2Q0MDBlYzEwZDA4
OTRhMGJhYi4uNGVkODZhM2VmODdhODIyNWU5YmFkMDY4NTk0YWJkN2YzOWQ5Y2IwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQmxvYlByb3BlcnR5QmFnLmgiCisjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZp
bGVSZWFkZXJMb2FkZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCkBAIC01Nyw3ICs1OCw2IEBAIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIAogdXNpbmcg
QmxvYlBhcnRWYXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5nPjsKLWNsYXNzIEJs
b2JJbnRlcm5hbFVSTDsKIAogY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKEJsb2IsIFdF
QkNPUkVfRVhQT1JUKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
QmxvYigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1
cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwpAQCAtMTE3LDE5ICsxMTcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPFJlYWRhYmxlU3RyZWFtPj4gc3Ry
ZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIGNsYXNzIEhhbmRsZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBleHBsaWNpdCBIYW5kbGUoUmVmPEJsb2JJbnRlcm5hbFVSTD4mJik7
Ci0gICAgICAgIH5IYW5kbGUoKTsKLSAgICAgICAgSGFuZGxlKEhhbmRsZSYmKTsKLSAgICAgICAg
SGFuZGxlKGNvbnN0IEhhbmRsZSYpOwotICAgICAgICBVUkwgdXJsKCkgY29uc3Q7Ci0gICAgcHJp
dmF0ZToKLSAgICAgICAgUmVmPEJsb2JJbnRlcm5hbFVSTD4gbV9pbnRlcm5hbFVSTDsKLSAgICB9
OwotCiAgICAgLy8gS2VlcGluZyB0aGUgaGFuZGxlIGFsaXZlIHdpbGwga2VlcCB0aGUgQmxvYiBk
YXRhIGFsaXZlIChidXQgbm90IHRoZSBCbG9iIG9iamVjdCkuCi0gICAgSGFuZGxlIGhhbmRsZSgp
IGNvbnN0OworICAgIEJsb2JVUkxIYW5kbGUgaGFuZGxlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKQEAgLTE2MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJu
YWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9i
amVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBU
aGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVzZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVu
dAogICAgIC8vIGludG8gYW4gSFRNTCBvciBmb3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBV
UkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2UgcHVycG9zZXMuCi0gICAgUmVmPEJsb2JJbnRlcm5h
bFVSTD4gbV9pbnRlcm5hbFVSTDsKKyAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIEhhc2hT
ZXQ8c3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+PiBtX2Jsb2JMb2FkZXJzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4IGQwN2Y5ZGI4NWEyOTQ1YzkzZGIwY2FmMDgwYTI2
OGQwNWJmNDRhYTEuLjU1YzU4MTAxNTkxY2U0MTVjNzVjYTA4MDkzNGVhMzFlMTcyZDU0NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcApAQCAtOTYsNDUgKzk2LDY3IEBAIFVSTCBCbG9i
VVJMOjpjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogICAgIHJldHVy
biBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1VUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uOjpVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQotICAg
IDogbV91cmwodXJsKQorQmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZShjb25zdCBCbG9iVVJM
SGFuZGxlJiBvdGhlcikKKyAgICA6IG1fdXJsKG90aGVyLm1fdXJsLmlzb2xhdGVkQ29weSgpKQog
ewotICAgIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KCk7CisgICAgcmVnaXN0ZXJC
bG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKIH0KIAotVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbjo6flVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oKQorQmxvYlVSTEhhbmRs
ZTo6QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKKyAgICA6IG1fdXJsKHVybC5pc29sYXRl
ZENvcHkoKSkKIHsKLSAgICB1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNzYXJ5KCk7CisgICAg
QVNTRVJUKG1fdXJsLnByb3RvY29sSXNCbG9iKCkpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRs
ZUlmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lv
bjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoKQorQmxvYlVSTEhhbmRsZTo6fkJs
b2JVUkxIYW5kbGUoKQogewotICAgIGlmIChtX3VybC5wcm90b2NvbElzQmxvYigpKSB7Ci0gICAg
ICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShCbG9iVVJMOjpnZXRPcmln
aW5VUkwobV91cmwpKTsKLSAgICAgICAgVVJMIHRlbXBvcmFyeUJsb2JVUkwgPSBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwob3JpZ2luLnB0cigpKTsKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG9yaWdpbi5wdHIoKSwgdGVtcG9yYXJ5QmxvYlVSTCwgbV91
cmwpOwotICAgICAgICBtX3VybCA9IFdURk1vdmUodGVtcG9yYXJ5QmxvYlVSTCk7Ci0gICAgfQor
ICAgIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBVUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOjp1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNz
YXJ5KCkKK3ZvaWQgQmxvYlVSTEhhbmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3Nh
cnkoKQogewogICAgIGlmIChtX3VybC5wcm90b2NvbElzQmxvYigpKQotICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybCk7CisgICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShtX3VybCk7Cit9CisKK3Zv
aWQgQmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpCit7
CisgICAgaWYgKG1fdXJsLnByb3RvY29sSXNCbG9iKCkpCisgICAgICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKG1fdXJsKTsKK30KKworQmxvYlVSTEhh
bmRsZSYgQmxvYlVSTEhhbmRsZTo6b3BlcmF0b3I9KGNvbnN0IEJsb2JVUkxIYW5kbGUmIG90aGVy
KQoreworICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisg
ICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIG1fdXJsID0gb3Ro
ZXIubV91cmwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNl
c3NhcnkoKTsKKworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBCbG9iVVJMSGFuZGxlOjpj
bGVhcigpCit7CisgICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAg
IG1fdXJsID0geyB9OwogfQogCi1VUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uJiBVUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOjpvcGVyYXRvcj0oVVJMV2l0aEJsb2JVUkxMaWZl
dGltZUV4dGVuc2lvbiYmIG90aGVyKQorQmxvYlVSTEhhbmRsZSYgQmxvYlVSTEhhbmRsZTo6b3Bl
cmF0b3I9KEJsb2JVUkxIYW5kbGUmJiBvdGhlcikKIHsKLSAgICB1bnJlZ2lzdGVyQ3VycmVudFVS
TElmTmVjZXNzYXJ5KCk7CisgICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgp
OwogICAgIG1fdXJsID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3VybCwgeyB9KTsKICAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mIFVSTFdpdGhC
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb246Om9wZXJhdG9yPShVUkwmJiB1cmwpCitCbG9iVVJMSGFu
ZGxlJiBCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdW5y
ZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpOwotICAgIG1fdXJsID0gV1RGTW92ZSh1cmwp
OwotICAgIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KCk7CisgICAgQVNTRVJUKHVy
bC5wcm90b2NvbElzQmxvYigpKTsKKyAgICB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNz
YXJ5KCk7CisgICAgbV91cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVnaXN0ZXJCbG9i
VVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iVVJMLmgKaW5kZXggODMxZjQyY2M4Mjg1YWJkN2EwZmUxNTNkNGRhZThkYWEyZGU2
MDY3YS4uNTg1YWUzZGQ2NTk2MGFiYjgyMTQwMWE4ODk4NjZkYzI0YmYyMmM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iVVJMLmgKQEAgLTU4LDI3ICs1OCwzMSBAQCBwcml2YXRlOgogICAgIEJsb2JV
UkwoKSB7IH0KIH07CiAKLWNsYXNzIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gewor
Ly8gRXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgdGhlIEJsb2IgVVJMLiBUaGlzIG1lYW5zIHRoYXQg
dGhlIGJsb2IgVVJMIHdpbGwgcmVtYWluIHZhbGlkIGFmdGVyCisvLyByZXZva2VPYmplY3RVUkwo
KSBoYXMgYmVlbiBjYWxsZWQsIGFzIGxvbmcgYXMgQmxvYlVSTEhhbmRsZSBvYmplY3RzIHJlZmVy
IHRvIHRoZSBibG9iIFVSTC4KK2NsYXNzIEJsb2JVUkxIYW5kbGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVSTFdpdGhCbG9iVVJMTGlm
ZXRpbWVFeHRlbnNpb24pOwogcHVibGljOgotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24oKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbihjb25zdCBVUkwmKTsKLSAgICB+VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lv
bigpOworICAgIEJsb2JVUkxIYW5kbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgQmxvYlVS
TEhhbmRsZShjb25zdCBVUkwmKTsKKyAgICB+QmxvYlVSTEhhbmRsZSgpOwogCi0gICAgVVJMV2l0
aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbihVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9u
JiYgb3RoZXIpCisgICAgQmxvYlVSTEhhbmRsZShjb25zdCBCbG9iVVJMSGFuZGxlJik7CisgICAg
QmxvYlVSTEhhbmRsZShCbG9iVVJMSGFuZGxlJiYgb3RoZXIpCiAgICAgICAgIDogbV91cmwoc3Rk
OjpleGNoYW5nZShvdGhlci5tX3VybCwgeyB9KSkKICAgICB7IH0KIAotICAgIFVSTFdpdGhCbG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24mIG9wZXJhdG9yPShVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0
ZW5zaW9uJiYpOwotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mIG9wZXJhdG9y
PShVUkwmJik7CisgICAgQmxvYlVSTEhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0IEJsb2JVUkxIYW5k
bGUmKTsKKyAgICBCbG9iVVJMSGFuZGxlJiBvcGVyYXRvcj0oQmxvYlVSTEhhbmRsZSYmKTsKKyAg
ICBCbG9iVVJMSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgVVJMJik7CiAKLSAgICBvcGVyYXRvciBj
b25zdCBVUkwmKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsLmlzb2xhdGVkQ29weSgpOyB9CisKKyAgICB2b2lkIGNsZWFyKCk7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBleHRl
bmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZO
ZWNlc3NhcnkoKTsKIAogICAgIFVSTCBtX3VybDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBiZDgxZjhlYTMxOWFlMDM5
ZmVkYzE3NWQxNDE4Yzg0MmYwMjIwOTBmLi45ZmYzNjI4NTYwOTc5MTc3YmIwYWYyY2ZhN2ZkYzIy
NjIzMzE4NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAKQEAgLTE1NSwxNSArMTU1LDI1IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKGlzQmxv
YlVSTENvbnRhaW5zTnVsbE9yaWdpbih1cmwpKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3Zl
KHVybC5zdHJpbmcoKSk7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICBlbnN1cmVPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0gewogICAgICAg
ICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIH0pOwogfQogCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJs
KTsKKyAgICB9KTsKK30KKwordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQo
W3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOworICAgIH0pOworfQorCiBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBpZiAoYXV0byBjYWNoZWRPcmlnaW4gPSBvcmlnaW5NYXAoKS0+Z2V0KHVy
bC5zdHJpbmcoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oCmluZGV4IGJjZDM2YmUzZmE3YjM5MmJiNjMxM2IzZWE2NWI5Mzc1Y2UyMTE1ZjAu
LjE0MTI4NDgyZmRjNTY3ZGRmNDA2MTM3MjU3MjM5MmE5YTZjNDExYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00Nyw2ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJs
b2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkxIYW5kbGUoY29uc3QgVVJMJik7CisKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgb3JpZ2luIGZvciB0aGUg
Z2l2ZW4gYmxvYiBVUkwuIFRoaXMgaXMgYmVjYXVzZSB3ZSBhcmUgbm90IGFibGUgdG8gZW1iZWQg
dGhlIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgdGhlIG9yaWdpbiBvZiBmaWxlIFVSTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDQ3MTQ3NDk1ZmI0Y2Y4NGNk
MGQyYTZiNjhmYzJmMzEwYmU3YzA5ZTAuLmNkODk1YTk3OTVjYTI4MDdmMzQ1OTdjNzAyNDcwOWEw
OThhZjhhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTEw
NCwxNyArMTA0LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1CiAgICAgY2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWUu
bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgeyB9LCBXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CiAKLVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gRnJhbWVMb2FkZXI6OlBvbGlj
eUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUG9saWN5RGVjaXNpb25Nb2RlIG1v
ZGUpIGNvbnN0CitCbG9iVVJMSGFuZGxlIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpleHRl
bmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFBvbGljeURlY2lzaW9uTW9kZSBtb2RlKSBjb25zdAogewogICAgIGlmIChtb2RlICE9IFBv
bGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzIHx8ICFyZXF1ZXN0LnVybCgpLnByb3RvY29s
SXNCbG9iKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBVUkxXaXRoQmxvYlVSTExpZmV0
aW1lRXh0ZW5zaW9uIHVybFdpdGhMaWZldGltZUV4dGVuc2lvbihyZXF1ZXN0LnVybCgpKTsKLSAg
ICByZXF1ZXN0LnNldFVSTCh1cmxXaXRoTGlmZXRpbWVFeHRlbnNpb24pOwotICAgIGlmIChsb2Fk
ZXIpCi0gICAgICAgIGxvYWRlci0+cmVxdWVzdCgpLnNldFVSTCh1cmxXaXRoTGlmZXRpbWVFeHRl
bnNpb24pOwotCi0gICAgcmV0dXJuIHVybFdpdGhMaWZldGltZUV4dGVuc2lvbjsKKyAgICByZXR1
cm4gQmxvYlVSTEhhbmRsZSB7IHJlcXVlc3QudXJsKCkgfTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUg
cG9saWN5RGVjaXNpb25Nb2RlKQpAQCAtMTk3LDcgKzE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0CiAKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsZWFyUHJvdmlzaW9uYWxMb2FkRm9yUG9s
aWN5Q2hlY2soKTsKIAotICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5k
QmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkocmVxdWVzdCwgbG9hZGVyLCBwb2xpY3lEZWNpc2lv
bk1vZGUpOworICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVS
TExpZmV0aW1lSWZOZWNlc3NhcnkocmVxdWVzdCwgcG9saWN5RGVjaXNpb25Nb2RlKTsKIAogICAg
IGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudExvYWQgPSAhbV9mcmFtZS5sb2FkZXIoKS5zdGF0
ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSAmJiByZXF1ZXN0LnVy
bCgpLnByb3RvY29sSXNBYm91dCgpICYmICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7CiAgICAg
YXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7
CkBAIC0yNTUsNyArMjUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXQKICAgICBpZiAoIURP
TVdpbmRvdzo6YWxsb3dQb3BVcChtX2ZyYW1lKSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsg
fSwgbnVsbHB0ciwgeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKIAot
ICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVSTExpZmV0aW1l
SWZOZWNlc3NhcnkocmVxdWVzdCwgbnVsbHB0cik7CisgICAgYXV0byBibG9iVVJMTGlmZXRpbWVF
eHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0KTsKIAog
ICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmNyZWF0
ZSgpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLmdl
dCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpLCByZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggM2M2
NjIyODM1NjM3N2FmODlkMDllYTU3NDVjMTEyZTkxNGZiODIwNi4uYTViN2UzZmQxMGM0Y2VkNWQw
NmM5OTMxNTJmNjhhZWM2MzU4ZjJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbjsKK2NsYXNzIEJsb2JVUkxIYW5kbGU7CiAK
IGVudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIDogdWludDhfdCB7CiAgICAgQ29u
dGludWVMb2FkLApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAg
IFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZO
ZWNlc3NhcnkoUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqLCBQb2xpY3lEZWNpc2lv
bk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cykgY29uc3Q7CisgICAgQmxv
YlVSTEhhbmRsZSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQb2xpY3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5j
aHJvbm91cykgY29uc3Q7CiAKICAgICBGcmFtZSYgbV9mcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNzU5NTcwMjIxNzI5YmZi
NTE4ZTJhYmI1NDIwMDNmYWYwOGJjNmY1Mi4uNjg5ZDMxOTA3MTA4ZGM0NDM5ODA0ZjFlNTQyMjY5
ZWNiOWUxOGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeS5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgPSAwOworCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCmluZGV4IDMyZGQ4YzA4ZTIxOTA2ZjRhMmQ4ZjJhOGMzMGM3ZWE1YWE5
NTI2NzQuLjUxMjhkZDc4NzU5NjNkYjA0YzlkODExZDlhM2QxMzEzNzNmMDgwYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyCiAKICAgICBhdXRv
IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CiAgICAgYmxvYkRhdGEt
PmFwcGVuZEZpbGUoV1RGTW92ZShmaWxlKSk7Ci0gICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygp
LCBXVEZNb3ZlKGJsb2JEYXRhKSk7CisgICAgYWRkQmxvYkRhdGEodXJsLnN0cmluZygpLCBXVEZN
b3ZlKGJsb2JEYXRhKSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5
SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYg
YmxvYlBhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCks
IFdURk1vdmUoYmxvYkRhdGEpKTsKKyAgICBhZGRCbG9iRGF0YSh1cmwuc3RyaW5nKCksIFdURk1v
dmUoYmxvYkRhdGEpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQpAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAKICAgICBCbG9iRGF0YSogc3JjID0gZ2V0QmxvYkRh
dGFGcm9tVVJMKHNyY1VSTCk7CiAgICAgaWYgKHNyYykgewotICAgICAgICBtX2Jsb2JzLnNldCh1
cmwuc3RyaW5nKCksIHNyYyk7CisgICAgICAgIGFkZEJsb2JEYXRhKHVybC5zdHJpbmcoKSwgc3Jj
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0CiAgICAgYXV0byBiYWNraW5nRmlsZSA9IEJsb2JEYXRhOjpjcmVhdGUo
Y29udGVudFR5cGUpOwogICAgIGJhY2tpbmdGaWxlLT5hcHBlbmRGaWxlKGZpbGUucmVsZWFzZU5v
bk51bGwoKSk7CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmFja2lu
Z0ZpbGUpKTsKKyAgICBhZGRCbG9iRGF0YSh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmFja2luZ0Zp
bGUpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKQEAgLTIxMSwxMiArMjExLDE0
IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMCiAgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKG5ld0Rh
dGEucHRyKCksIG9yaWdpbmFsRGF0YS0+aXRlbXMoKSwgc3RhcnQsIG5ld0xlbmd0aCk7CiAKICAg
ICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUobmV3RGF0YSkpOworICAgIG1fYmxv
YlJlZmVyZW5jZXMuYWRkKHVybC5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBtX2Jsb2JzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgIGlmICht
X2Jsb2JSZWZlcmVuY2VzLnJlbW92ZSh1cmwuc3RyaW5nKCkpKQorICAgICAgICBtX2Jsb2JzLnJl
bW92ZSh1cmwuc3RyaW5nKCkpOwogfQogCiBCbG9iRGF0YSogQmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0
QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtMzU5LDQgKzM2MSwyMyBA
QCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IEJsb2JSZWdpc3RyeUltcGw6
OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQg
QmxvYlJlZ2lzdHJ5SW1wbDo6YWRkQmxvYkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIFJlZlB0cjxC
bG9iRGF0YT4mJiBibG9iRGF0YSkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYmxvYnMuc2V0
KHVybCwgV1RGTW92ZShibG9iRGF0YSkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgbV9ibG9iUmVmZXJlbmNlcy5hZGQodXJsKTsKK30KKwordm9pZCBCbG9iUmVnaXN0
cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYg
KG1fYmxvYnMuY29udGFpbnModXJsLnN0cmluZygpKSkKKyAgICAgICAgbV9ibG9iUmVmZXJlbmNl
cy5hZGQodXJsLnN0cmluZygpKTsKK30KKwordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lz
dGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAobV9ibG9iUmVmZXJl
bmNlcy5yZW1vdmUodXJsLnN0cmluZygpKSkKKyAgICAgICAgbV9ibG9icy5yZW1vdmUodXJsLnN0
cmluZygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBkNDQ0NTE0MWFh
MmZjYzg5ZmVkZjM5ZTdkODdlYTMwODFlMjM2ZGNkLi41NzQwMzZhNTZkNDFiZGEyZDQzYTQzZDVh
YWYzODg5MDYyM2Y2Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQmxv
YkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxI
YXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNjUsNiArNjYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYpOwogCisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKTsKKwogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgd3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CkBAIC03OCw2ICs4
Miw5IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIHZvaWQgYWRk
QmxvYkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIFJlZlB0cjxCbG9iRGF0YT4mJik7CisKKyAgICBI
YXNoQ291bnRlZFNldDxTdHJpbmc+IG1fYmxvYlJlZmVyZW5jZXM7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxCbG9iRGF0YT4+IG1fYmxvYnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCBjM2E3ZjFkNzUzNDhkYmY2NTQ1NzdlMDJkMjljNmEyYmUwNTli
Mzk4Li4yNGVlZDNhZTBmMDU2NDI0ZGMwMjhkYzQ3YTk5ZWI1Yzg4NmRkMTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKFJlc3BvbnNlVHlwZSB0eXBl
KQogICAgIC8vIGF0dGVtcHQgdG8gZGlzY291cmFnZSBzeW5jaHJvbm91cyBYSFIgdXNlLiByZXNw
b25zZVR5cGUgaXMgb25lIHN1Y2ggcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4KICAgICAvLyBXZSds
bCBvbmx5IGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5IGZvciBIVFRQKFMpIHJlcXVlc3RzIHNp
bmNlIHN5bmMgcmVxdWVzdHMgZm9yIGxvY2FsIHByb3RvY29scwogICAgIC8vIHN1Y2ggYXMgZmls
ZTogYW5kIGRhdGE6IHN0aWxsIG1ha2Ugc2Vuc2UgdG8gYWxsb3cuCi0gICAgaWYgKCFtX2FzeW5j
ICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpICYmIG1fdXJsLnVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkpIHsKICAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Ig
c3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0
LiIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAg
ICAgfQpAQCAtMzgyLDkgKzM4MiwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVz
dDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvbwogICAgIGNs
ZWFyUmVzcG9uc2UoKTsKICAgICBjbGVhclJlcXVlc3QoKTsKIAotICAgIGF1dG8gdXBncmFkZWRV
UkwgPSB1cmw7Ci0gICAgY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh1cGdyYWRlZFVSTCwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKLSAgICBtX3VybCA9IFdURk1vdmUodXBncmFk
ZWRVUkwpOworICAgIG1fdXJsID0gdXJsOworICAgIGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQobV91cmwsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgaWYgKG1fdXJsLnBy
b3RvY29sSXNCbG9iKCkpCisgICAgICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gbV91
cmw7CiAKICAgICBtX2FzeW5jID0gYXN5bmM7CiAKQEAgLTQxNyw3ICs0MTgsNyBAQCBzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgp
CiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKICAgICBp
ZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5z
aG91bGRJZ25vcmVTeW5jWEhScygpKSB7Ci0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG1ha2VTdHJpbmcoIklnbm9yaW5nIFhNTEh0dHBSZXF1ZXN0LnNl
bmQoKSBjYWxsIGZvciAnIiwgbV91cmwudXJsKCkuc3RyaW5nKCksICInIGJlY2F1c2UgdGhlIG1h
eGltdW0gbnVtYmVyIG9mIHN5bmNocm9ub3VzIGZhaWx1cmVzIHdhcyByZWFjaGVkLiIpKTsKKyAg
ICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbWFrZVN0cmlu
ZygiSWdub3JpbmcgWE1MSHR0cFJlcXVlc3Quc2VuZCgpIGNhbGwgZm9yICciLCBtX3VybC5zdHJp
bmcoKSwgIicgYmVjYXVzZSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3luY2hyb25vdXMgZmFpbHVy
ZXMgd2FzIHJlYWNoZWQuIikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3I8dm9pZD4geyB9
OwogICAgIH0KIApAQCAtNTIxLDcgKzUyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kKEJsb2ImIGJvZHkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52
YWx1ZSgpKTsKIAogICAgIGlmIChtX21ldGhvZCAhPSAiR0VUIiAmJiBtX21ldGhvZCAhPSAiSEVB
RCIpIHsKLSAgICAgICAgaWYgKCFtX3VybC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKKyAgICAgICAgaWYgKCFtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgcG9zdGluZyBCbG9icyB0
byBub24taHR0cCBVUkxzIChlLmcuIGN1c3RvbSBVUkwgc2NoZW1lcykKICAgICAgICAgICAgIC8v
IGJ1dCBiZWNhdXNlIG9mIHRoZSBhcmNoaXRlY3R1cmUgb2YgYmxvYi1oYW5kbGluZyB0aGF0IHdp
bGwgcmVxdWlyZSBhIGZhaXIgYW1vdW50IG9mIHdvcmsuCiAgICAgICAgICAgICAKQEAgLTU5NCw3
ICs1OTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZEJ5dGVzRGF0
YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogRXhjZXB0aW9uT3I8dm9pZD4gWE1M
SHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoKQogewogICAgIC8vIE9ubHkgR0VUIHJlcXVlc3Qg
aXMgc3VwcG9ydGVkIGZvciBibG9iIFVSTC4KLSAgICBpZiAoIW1fYXN5bmMgJiYgbV91cmwudXJs
KCkucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAiR0VUIikKKyAgICBpZiAoIW1fYXN5
bmMgJiYgbV91cmwucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAiR0VUIikKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciB9OwogCiAgICAgaWYgKG1fYXN5bmMg
JiYgbV91cGxvYWQgJiYgbV91cGxvYWQtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCkBAIC03NDcsNiAr
NzQ4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXF1ZXN0KCkKICAgICBtX3JlcXVl
c3RIZWFkZXJzLmNsZWFyKCk7CiAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IG51bGxwdHI7CiAg
ICAgbV91cmwgPSBVUkwgeyB9OworICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uLmNsZWFy
KCk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmdlbmVyaWNFcnJvcigpCkBAIC05MzksNiAr
OTQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nKQogCiAgICAgbV9sb2FkaW5nQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV91cmwg
PSBVUkwgeyB9OworICAgIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uLmNsZWFyKCk7CiAKICAg
ICBtX3NlbmRGbGFnID0gZmFsc2U7CiAgICAgY2hhbmdlU3RhdGUoRE9ORSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGI0OGUxYjkwZmFhYTUyZDZmZTljNTNhNmExZjIwOTkz
NWM1M2JlOGIuLmMwNGExNjg5NjA5YjZmYjkxYTY4MGM5OGY3ZTA3MzJhNzQ4ZjllZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yMTYsNyArMjE2LDggQEAgcHJpdmF0ZToK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxYTUxIdHRwUmVxdWVzdFVwbG9hZD4gbV91cGxvYWQ7CiAK
LSAgICBVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uIG1fdXJsOworICAgIFVSTCBtX3Vy
bDsKKyAgICBCbG9iVVJMSGFuZGxlIG1fYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOwogICAgIFN0
cmluZyBtX21ldGhvZDsKICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAgICAg
UmVmUHRyPEZvcm1EYXRhPiBtX3JlcXVlc3RFbnRpdHlCb2R5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCA2M2MyNDMxNTEzYjhmNzFhNWQ4ZGU5NjM5NGMxNGJlOGQyZDNmY2U1Li44
ODQzODJkNGNmNmI1NGNlMzk3YWNiOTA4ODE2NDUwYmI2YzBkMzVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtODY2LDYgKzg2NiwyNCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKICAgICBzZXNz
aW9uLT5ibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAg
aWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMWE1NDQ0YmU3
YjQ3ZTVkYzEyMWQ1OGY4MGJhYWRiYTE4ZDNjY2MzYy4uZDkyNDMyMTM5Mjk4ZGJkNjNmNGE3ZTE4
YzNmMGIwMWRkZjE0ODllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjM2LDYgKzIz
Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsK
ICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
CiAKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpOworCiAgICAgdm9pZCBzZXRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBjcmVh
dGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgV2ViQ29yZTo6V2Vi
U29ja2V0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCA5YjMyODk2ODEwNjE5YmExOWRjNWJmNDM3YjM2OGE3Y2E3ZmE0MzFiLi43OTZi
ZmE0NGNjMjYyNzA4NzUzZTc2MzE4M2E1YTAxN2M3YWZmYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU2LDYgKzU2LDggQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVucmVn
aXN0ZXJCbG9iVVJMKFVSTCB1cmwpCiAgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90
IHJlc3VsdFNpemUpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
VmVjdG9yPFN0cmluZz4gYmxvYlVSTHMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFz
eW5jCisgICAgUmVnaXN0ZXJCbG9iVVJMSGFuZGxlKFVSTCB1cmwpOworICAgIFVucmVnaXN0ZXJC
bG9iVVJMSGFuZGxlKFVSTCB1cmwpOwogCiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggYjUwZjQ5YmM4MzY0MmFmYTE2MGFiZDY4ZjQ5N2Q1YjhhMmY0YmY3Ny4uNzk2
NjJlZmJkMTE2ODYxOWZmY2Y2NWNiMjg4NWMxZjQwMzViNmIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTY1LDYgKzY1LDggQEAgQmxvYlJlZ2lzdHJ5KiBOZXR3b3Jr
UHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKICAgICAgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQogICAgICAgICB2b2lk
IHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxIYW5kbGUoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB9OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxFbXB0eUJsb2JSZWdpc3RyeT4gYmxvYlJlZ2lzdHJ5OwogICAgIHJldHVybiAmYmxvYlJlZ2lz
dHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDI4ZjY4YTE0ZDUxZWI5NWU2Zjk0YmRhM2VmNDM1
ZjQ3ODkwMmYxMjAuLjAwNTNiN2VhMjJiOWYyMjA3YmYxZGU4NjUxZTgwZGNlMmM5NDE4YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKQEAgLTc0LDYgKzc0LDE2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCwgY29u
dGVudFR5cGUpLCAwKTsKIH0KIAordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9i
VVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KHVybCksIDApOworfQorCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVS
TEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMSGFuZGxl
KHVybCksIDApOworfQorCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJs
b2JTaXplKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHVpbnQ2NF90IHJlc3VsdFNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAppbmRleCA1MmZhY2Y4MTgyY2EyMzEwYjNiOGZhNWE0MGRiNjQ3ZTBjYzEzM2MxLi4xODI0MmY1
MmVjYjVmY2M3MTNiYjAxM2VmN2NhYmE5Zjc1OWE1Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM5LDYgKzM5
LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7CisgICAgdm9pZCByZWdp
c3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQppbmRleCBiZGM4NjVkMWUzNmU1ZDM1OGRlMWNlZmQ5YmZiMzc1MjllYjRi
MmNjLi44YmIyOGI5Zjc5MGZjZDdmYWNmZTczNTY0NjE1ODE5ZjJiNjQ4YWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC05MSw2ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOyB9CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JT
aXplKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6
ZSh1cmwpOyB9CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lz
dHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwm
IHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsg
fQorICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpIGZpbmFs
IHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKTsgfQogCiAgICAg
QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgpIGZpbmFsIHsgcmV0dXJuICZtX2Js
b2JSZWdpc3RyeTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBjZmQz
ZDU4MzAxOThhMzkwNGE3NDQ3OWZiMGFkNzhlZjk3MjMzZjc5Li5jZjZhNjg4MzkyMGMxYzIxZDA2
MDRmNDg5ZDYyYjgyNzFkNmY4NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTg3LDYgKzg3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVy
bCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZp
bmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KICAgICB2b2lkIHdy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkud3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsgfQorICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CiAKICAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9i
UmVnaXN0cnlJbXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAxOGI3ZTU3ZTA1OTBkNmFiMzg5YjEwZDA5ZTBkMGM2MDY0ZWU4ODEyLi42MWEyYTE0OTAyZGZm
MDM2NDExZTkzODk4YzY3OGZmN2MxOWQ2ZjVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDgtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIFVS
TCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdh
cmVuLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGZh
c3QvZmlsZXMvYmxvYi1hcy1mcmFtZS11cmwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA4LTA5
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJs
ZSBsYXlvdXQgdGVzdHMgaW4gZWRpdGluZy9zZWxlY3Rpb24vaW9zIGJ5IGRlZmF1bHQgaW4gRVdT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi1hcy1mcmFtZS11cmwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZjkyZmY1NjM1MWVhY2Y4Yzk1YjdjNWM1YmY1NDRhZjM0
ZjBlMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMt
ZnJhbWUtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitNYWtlcyBzdXJlIHRoYXQg
dXNpbmcgYSBCbG9iIFVSTCBhcyBmcmFtZSBVUkwgd29ya3MgYXMgZXhwZWN0ZWQuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9k
eS5pbm5lclRleHQgaXMgIkZPTyIKK1BBU1MgaWZyYW1lLmNvbnRlbnRXaW5kb3cubG9jYXRpb24u
aHJlZiA9PSBibG9iVVJMIGlzIHRydWUKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5VUkwg
PT0gYmxvYlVSTCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWFz
LWZyYW1lLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWFzLWZyYW1lLXVy
bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjNDgwY2Q2MWY2NTQ0OWIxMzFiNzIyM2M0MGIyZWU2NjE3OGNh
YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMtZnJh
bWUtdXJsLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiTWFrZXMgc3VyZSB0aGF0IHVzaW5nIGEgQmxvYiBVUkwg
YXMgZnJhbWUgVVJMIHdvcmtzIGFzIGV4cGVjdGVkLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7
CisKK2xldCBibG9iQ29udGVudHMgPSBgPGJvZHk+Rk9PPC9ib2R5PmA7CitsZXQgaWZyYW1lID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitsZXQgYmxvYiA9IG5ldyBCbG9iKFti
bG9iQ29udGVudHNdLCB7IHR5cGU6ICJ0ZXh0L2h0bWwiIH0pOworbGV0IGJsb2JVUkwgPSBVUkwu
Y3JlYXRlT2JqZWN0VVJMKGJsb2IpOworaWZyYW1lLnNyYyA9IGJsb2JVUkw7CitpZnJhbWUub25s
b2FkID0gKCkgPT4geworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaWZyYW1lLmNvbnRlbnRE
b2N1bWVudC5ib2R5LmlubmVyVGV4dCIsICJGT08iKTsKKyAgICBzaG91bGRCZVRydWUoImlmcmFt
ZS5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWYgPT0gYmxvYlVSTCIpOworICAgIHNob3VsZEJl
VHJ1ZSgiaWZyYW1lLmNvbnRlbnREb2N1bWVudC5VUkwgPT0gYmxvYlVSTCIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CitibG9iID0gbnVs
bDsKK2djKCk7CitzZXRUaW1lb3V0KGdjLCAwKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9GaWxlQVBJL3VybC91cmwtaW4tdGFncy53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9GaWxlQVBJL3VybC91cmwtaW4tdGFn
cy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGE4ZWYyYTY1MjRhYTNhNmQzZTdjN2QyYzlhNjVj
OGQ0MDVhMzBkMDguLjliNDNhZDA1ZmZlYWVkN2M4MjY4YmY4ODhjNTgzMjA2YjViYmExMjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvRmls
ZUFQSS91cmwvdXJsLWluLXRhZ3Mud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkvdXJsL3VybC1pbi10YWdz
LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJ
TUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCiBQQVNTIEJsb2IgVVJMcyBjYW4gYmUgdXNlZCBpbiA8
c2NyaXB0PiB0YWdzCiBQQVNTIEJsb2IgVVJMcyBjYW4gYmUgdXNlZCBpbiBpZnJhbWVzLCBhbmQg
YXJlIHRyZWF0ZWQgc2FtZSBvcmlnaW4KLVRJTUVPVVQgQmxvYiBVUkwgZnJhZ21lbnQgaXMgaW1w
bGVtZW50ZWQuIFRlc3QgdGltZWQgb3V0CitQQVNTIEJsb2IgVVJMIGZyYWdtZW50IGlzIGltcGxl
bWVudGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL0ZpbGVBUEkvdXJsL3VybC1yZWxvYWQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvRmlsZUFQSS91cmwvdXJs
LXJlbG9hZC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDhkYWU0MGQxNThiOWNkNTk1M2JkNWRj
YTc4MzAyYTE3OGVlMzFkODYuLmEyMjBlNzQwYzA2ZGE0MmJlMzg3ZWQyYzc4YzdhOTZkY2I2YzE3
YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvRmlsZUFQSS91cmwvdXJsLXJlbG9hZC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvRmlsZUFQSS91cmwvdXJsLXJl
bG9hZC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAotVElNRU9VVCBSZWxvYWRpbmcgYSBibG9iIFVS
TCBzdWNjZWVkcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgUmVsb2FkaW5nIGEgYmxvYiBVUkwgc3Vj
Y2VlZHMuCiBUSU1FT1VUIFJlbG9hZGluZyBhIGJsb2IgVVJMIHN1Y2NlZWRzIGV2ZW4gaWYgdGhl
IFVSTCB3YXMgcmV2b2tlZC4gVGVzdCB0aW1lZCBvdXQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435231</attachid>
            <date>2021-08-09 18:54:06 -0700</date>
            <delta_ts>2021-08-09 20:33:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228923-20210809185405.patch</filename>
            <type>text/plain</type>
            <size>60351</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ1OWZhMTEzNDdjOGE4
YjhlNjJjZGZlMWUzMzFkOTEyMjI0YmU1MC4uYWZkOGVjZTg2ZmU4ZWQyMDk4NjI2OTA0ZDBmY2Zi
Yjg5ZDk2ZWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICBCbG9iIFVSTCBjaGFuZ2VzIGFmdGVyIGxvYWRpbmcgaXQuIFRoaXMgaXMgYmVjYXVzZSB3
ZSB1c2UgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB0bworICAgICAgICBleHRlbmQg
dGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIFVSTCBkdXJpbmcgdGhlIGxvYWQgYW5kIFVSTFdpdGhC
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZW5kcworICAgICAgICB1cCBjcmVhdGluZyBhIG5ldyBw
dWJsaWMgQmxvYiBVUkwuIFRoaXMgaXMgV2ViLW9ic2VydmFibGUgc28gd2UgbmVlZCBhIHdheSB0
byBleHRlbmQgdGhlCisgICAgICAgIGxpZmV0aW1lIG9mIGEgQmxvYiBVUkwgd2l0aG91dCBhY3R1
YWxseSBnZW5lcmF0aW5nIGEgbmV3IEJsb2IgVVJMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVw
bGFjZXMgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiB3aXRoIGEgbmV3IEJsb2JVUkxI
YW5kbGUgY2xhc3Mgd2hpY2gKKyAgICAgICAgZXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgYSBCbG9i
IFVSTCBhcyBsb25nIGFzIHRoZXJlIGFyZSBCbG9iVVJMSGFuZGxlIG9iamVjdHMgcmVmZXJyaW5n
CisgICAgICAgIHRvIGl0LiBCbG9iVVJMSGFuZGxlIHdvcmtzIHdpdGggYm90aCBwcml2YXRlIGFu
ZCBwdWJsaWMgQmxvYiBVUkxzIHNvIGl0IHJlcGxhY2VzCisgICAgICAgIEJsb2I6OkhhbmRsZSBh
cyB3ZWxsICh3aGljaCBJIHJlY2VudGx5IGludHJvZHVjZWQgdmlhIHIyODA1NDcpLiBUaGUgQmxv
YiBVUkwgbm8gbG9uZ2VyCisgICAgICAgIGNoYW5nZXMgd2hlbiB3ZSBleHRlbmQgaXRzIGxpZmV0
aW1lLiBJbnN0ZWFkLCB0aGUgQmxvYiByZWdpc3RyeSBub3cga2VlcHMgdHJhY2sgb2YKKyAgICAg
ICAgcmVmZXJlbmNlcyB0byBhIGdpdmVuIEJsb2IgYW5kIG9ubHkgcmVtb3ZlcyBhIEJsb2IgVVJM
IG9uY2UgdGhlcmUgYXJlIG5vIGxvbmdlciBhbnkKKyAgICAgICAgcmVmZXJlbmNlcyB0byBpdC4K
KworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUtdXJsLmh0bWwKKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYkhhbmRsZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2I6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6aGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnVy
bCBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JVUkxIYW5kbGU6OkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YlVSTEhhbmRsZTo6fkJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhh
bmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlVSTEhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5o
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCbG9iVVJMSGFuZGxlOjp1cmwgY29uc3QpOgorICAgICAgICAqIGZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGxvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpj
aGVja05ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphZGRCbG9iRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkxI
YW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJl
VG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdC5oOgorCiAyMDIxLTA4LTA5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb25zb2xlIGxvZ2dpbmcgdG8gZW5jb3VyYWdlIHRo
ZSB1c2Ugb2YgYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uIGluIFdlYkNyeXB0bwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4OGMyZmE4YTM3YTBlYjdjYzQ2Yjc2ZjM4Y2M5N2JhNDM5NDc3ODczLi5hZGE2OWMyY2VjNmVh
MDg3M2NkYTRjZmMyZTA2NWNlODBlMWY3YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDIxLTA4LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxv
YiBVUkwgY2hhbmdlcyBhZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0
cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorCiAyMDIxLTA4LTA5ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBXVEYgbG9nZ2lu
ZyBjaGFubmVscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDk5NzA2NjY3OWFlNDdj
MTMyZGNlNjE0OTQzZjQzZTY5YTEyODE3NTMuLmE4NzM5NDc5N2Y2YWZkY2MwODYwMTM3Njc2NjYx
Yzc3ODBiMzI3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IEJsb2IgVVJMIGNoYW5nZXMgYWZ0ZXIgbG9hZGluZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW06CisKIDIwMjEtMDgtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IFdURiBsb2dnaW5nIGNoYW5uZWxzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDc1YzJjOTY5N2YxNjlkYzVlNjExOTA3NWQ3ZGE3ZjIw
NzE1NjlhYS4uYzY5MjAyMDY2ODViOTMyNzZlNTU3Y2I5NDIxZTFkMDlmOTU5MTAxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBVUkwgY2hhbmdlcyBh
ZnRlciBsb2FkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisKIDIwMjEt
MDgtMDkgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5DYWlyb11bRGVidWddIEJ1aWxkIGZpeCBhZnRlciByMjgwNzU2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCBlNWI4MDFiMmY2ZDgxMDg3ODY5ZGNjZTRmZjgyZjc4NzBmZmQ2ODQ5Li5hZjU3OTI1
NmRmMDU0ODAxYTdlOTI1MTA5MjMxYjliY2Q2OWM5YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTU5OCw2ICs1OTgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAogICAgIGZpbGVhcGkvQmxvYi5oCiAgICAgZmls
ZWFwaS9CbG9iUHJvcGVydHlCYWcuaAorICAgIGZpbGVhcGkvQmxvYlVSTC5oCiAgICAgZmlsZWFw
aS9FbmRpbmdUeXBlLmgKICAgICBmaWxlYXBpL0ZpbGUuaAogICAgIGZpbGVhcGkvRmlsZUxpc3Qu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGI2MzlhNWI4ZjEyNWQ4OGQ5NDY3ZmQyMjc4ZWM4MTg5MGQ1Njk0ZDcuLjM2NDE3MTE0
ZjAzYWUwMTM5MmI4OWQ3M2FjY2FlZGM3Njg0YjBjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMzcsNyArMzAzNyw3IEBA
CiAJCTk3NjI3Qjk4MTRGQjU0MjQwMDJDRENBMSAvKiBTdXBwbGVtZW50YWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2MjdCOTcxNEZCNTQyNDAw
MkNEQ0ExIC8qIFN1cHBsZW1lbnRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDNzkxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzVBMTIy
QjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDN0MxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1
RDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuaCAqLzsgfTsKLQkJOTc2RDZDN0YxMjJC
OEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzYwMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggKi87
IH07CisJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2MDEyMkI4QTNEMDAxRkQx
RjcgLyogQmxvYlVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk3NkQ2QzgxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM2MjEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNjcxMjJCOEEzRDAwMUZE
MUY3IC8qIEZpbGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTc2RDZDODkxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVSZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzZBMTIyQjhB
M0QwMDFGRDFGNyAvKiBGaWxlUmVhZGVyLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3ZmQ3MDZkZTVh
MzY1ZTJiNGJiYmE3OGQ2M2ZjNmFiOTc3MWQ4MGZmLi41MDQ3ODVjOTZkOGY1NjQzYTk2MTgyNjg1
NTk1NGRlMDY1N2Q2Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYwMCw3ICs2MDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAgV2Fz
bU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAgICBW
ZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBT
ZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNo
YXJlZEJ1ZmZlcnMpCisgICAgICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMs
IFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewogICAgICAgICBDbG9u
ZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMs
IGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
X0lOX1dPUktFUlMpCkBAIC02NDcsNyArNjQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFdh
c21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCiAgICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxl
QXJyYXkmIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlmCi0gICAgICAgIFZlY3RvcjxCbG9iOjpI
YW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25D
b250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgc2hhcmVkQnVmZmVycykK
KyAgICAgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9yPHVpbnQ4
X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSYgc2hhcmVkQnVmZmVycykKICAgICAgICAgOiBDbG9uZUJhc2UobGV4aWNhbEdsb2Jh
bE9iamVjdCkKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9ibG9iSGFuZGxl
cyhibG9iSGFuZGxlcykKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2bSwgb2JqKSkgewogICAg
ICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPEJsb2I6Okhh
bmRsZT4gZHVtbXlCbG9iSGFuZGxlczsKKyAgICAgICAgICAgICAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4gZHVtbXlCbG9iSGFuZGxlczsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJheUJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQpAQCAtMTc2MCw3ICsxNzYwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBW
ZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBtX2Js
b2JIYW5kbGVzOworICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgbV9ibG9iSGFuZGxlczsKICAg
ICBPYmplY3RQb29sIG1fb2JqZWN0UG9vbDsKICAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzOwpA
QCAtMzkxNSw3ICszOTE1LDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXEKICAgICBtX21lbW9y
eUNvc3QgPSBjb21wdXRlTWVtb3J5Q29zdCgpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxCbG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBW
ZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMK
K1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50
OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcywg
c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJh
Y2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRpZgpAQCAtNDA2NSw3
ICs0MDY1LDcgQEAgc3RhdGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFp
bHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
dGhyb3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVj
dG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7CisgICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+
IGJsb2JIYW5kbGVzOwogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3Nh
Z2VQb3J0czsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gZHVtbXlJbWFnZUJpdG1h
cHM7CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKQEAgLTQyMTcsNyAr
NDIxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7Cisg
ICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IGJsb2JIYW5kbGVzOwogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAgICAgV2FzbU1lbW9yeUhh
bmRsZUFycmF5IHdhc21NZW1vcnlIYW5kbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAxNmM0OTE5NWZmYzRmNmU2OTc3
YTc0ODhiNGQ2YzI5ODU0OWEzOGI0Li5mYjc1N2E0ZDc0ZjYwZTJmZmNkYjgyOWMxNTIwMzBhNjY5
OWMxNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCbG9i
VVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQogCiAgICAg
VmVjdG9yPFN0cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8QmxvYjo6
SGFuZGxlPiYgYmxvYkhhbmRsZXMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JIYW5kbGVzOyB9Cisg
ICAgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvYkhhbmRsZXM7IH0KICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJik7CiAgICAgSURCVmFsdWUg
d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICAgICBzdGF0aWMg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAg
ICAgKTsKIAotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4m
JiwgY29uc3QgVmVjdG9yPEJsb2I6OkhhbmRsZT4mIGJsb2JIYW5kbGVzLCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VC
aXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8QmxvYlVSTEhhbmRsZT4mIGJs
b2JIYW5kbGVzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCiAj
aWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiA9IHsgfQogI2VuZGlm
CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1v
ZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21N
ZW1vcnlIYW5kbGVBcnJheT4gbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5OwogI2VuZGlmCi0gICAg
VmVjdG9yPEJsb2I6OkhhbmRsZT4gbV9ibG9iSGFuZGxlczsKKyAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4gbV9ibG9iSGFuZGxlczsKICAgICBzaXplX3QgbV9tZW1vcnlDb3N0IHsgMCB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMjdiYmEyZTczZDY1NjE1MTUyNzBhYTM1N2E3
MGJiYzAyMjM3MTBhZC4uYzI5YTdiYWZkMWFhNjBlZmJjZDM4MjI5MzA2ZjJkYWUzM2IwZmFhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03Niw3NSArNzYsMTkgQEAgVVJMUmVnaXN0cnkm
IEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
Ly8gVW5yZWdpc3RlcnMgdGhlIEJsb2IncyBpbnRlcm5hbCBVUkwgdXBvbiBkZXN0cnVjdGlvbi4g
VGhpcyBjYW4gYmUgdXNlZCB0byBleHRlbmQgdGhlIGxpZmV0aW1lIG9mIHRoZSBCbG9iIGRhdGEK
LS8vIHdpdGhvdXQgYWN0dWFsbHkga2VlcGluZyB0aGUgQmxvYiBvYmplY3QgYWxpdmUuCi1jbGFz
cyBCbG9iSW50ZXJuYWxVUkwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QmxvYkludGVy
bmFsVVJMPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxVUkw+IGNyZWF0
ZShWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKFdU
Rk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVm
PEJsb2JJbnRlcm5hbFVSTD4gY3JlYXRlRm9yRGVzZXJpYWxpemF0aW9uKGNvbnN0IFVSTCYgc291
cmNlVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIHR5cGUp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoc291
cmNlVVJMLCBmaWxlQmFja2VkUGF0aCwgdHlwZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8
QmxvYkludGVybmFsVVJMPiBjcmVhdGVGb3JTbGljZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoc291cmNlVVJMLCBz
dGFydCwgZW5kLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxCbG9iSW50ZXJuYWxV
Ukw+IGFkb3B0SW50ZXJuYWxVUkwoY29uc3QgVVJMJiB1cmwpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCbG9iSW50ZXJuYWxVUkwoY3Jvc3NUaHJlYWRDb3B5KHVybCkpKTsK
LSAgICB9Ci0KLSAgICB+QmxvYkludGVybmFsVVJMKCkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwpOwotICAgIH0K
LQotICAgIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVVJMLmlzb2xhdGVkQ29w
eSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgQmxvYkludGVybmFsVVJMKFZlY3RvcjxCbG9iUGFydD4m
JiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgICAgIDogbV9pbnRl
cm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQotICAgIHsKLSAgICAgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1v
dmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwotICAgIH0KLSAgICBCbG9iSW50ZXJuYWxVUkwo
Y29uc3QgVVJMJiBzb3VyY2VVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiB0eXBlKQotICAgICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKSkKLSAgICB7Ci0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNvdXJjZVVSTCwgc3RhcnQsIGVu
ZCwgdHlwZSk7Ci0gICAgfQotICAgIEJsb2JJbnRlcm5hbFVSTChjb25zdCBVUkwmIHNvdXJjZVVS
TCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAg
ICAgICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKLSAgICB7
Ci0gICAgICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobnVsbHB0ciwgbV9pbnRlcm5hbFVS
TCwgc291cmNlVVJMKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVS
TCwgc291cmNlVVJMLCBmaWxlQmFja2VkUGF0aCwgdHlwZSk7Ci0gICAgfQotICAgIEJsb2JJbnRl
cm5hbFVSTChVUkwmJiBpbnRlcm5hbFVSTCkKLSAgICAgICAgOiBtX2ludGVybmFsVVJMKFdURk1v
dmUoaW50ZXJuYWxVUkwpKQotICAgIHsgfQotCi0gICAgVVJMIG1faW50ZXJuYWxVUkw7Ci19Owot
CiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCkKICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQotICAgICwgbV9pbnRl
cm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmFkb3B0SW50ZXJuYWxVUkwodXJsKSkKKyAgICAsIG1f
aW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogewogfQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAg
ICAsIG1fc2l6ZSgwKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0
ZSh7IH0sIHsgfSkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFs
VVJMKCkpCiB7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIHsgfSwgeyB9KTsKIH0KIAogc3RhdGljIFZlY3RvcjxCbG9iUGFydD4gYnVp
bGRCbG9iRGF0YShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCkBAIC0xNjMsNDAgKzEwNyw0OCBAQCBz
dGF0aWMgVmVjdG9yPEJsb2JQYXJ0PiBidWlsZEJsb2JEYXRhKFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYgYmxvYlBhcnRWYXJpYW50cwogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
JmNvbnRleHQpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHByb3BlcnR5QmFn
LnR5cGUpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZShidWls
ZEJsb2JEYXRhKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSwgbV90eXBl
KSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKIHsK
KyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVS
TCwgYnVpbGRCbG9iRGF0YShXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZyks
IG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQog
ICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJu
YWxVUkw6OmNyZWF0ZSh7IEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpIH0sIGNvbnRlbnRUeXBlKSkK
KyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKIHsKKyAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwg
eyBCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSB9LCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJs
b2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgQmxvYiYgYmxvYikKICAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0KQogICAgICwgbV90eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6
ZSgpKQotICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZSh7IEJsb2JQ
YXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJM
OjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogeworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBt
X3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAg
ICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNp
emUpCi0gICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlRm9yRGVzZXJp
YWxpemF0aW9uKHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSkpCisgICAgLCBtX2ludGVy
bmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiB7CisgICAgaWYgKGZpbGVCYWNr
ZWRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CisgICAgZWxzZQorICAg
ICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChtX2ludGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOwog
fQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVS
TCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYg
dHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1h
bGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFs
VVJMOjpjcmVhdGVGb3JTbGljZShzcmNVUkwsIHN0YXJ0LCBlbmQsIG1fdHlwZSkpCisgICAgLCBt
X2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiAgICAgLy8gbV9zaXpl
IGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBlbmQgLSBzdGFydCBzbyB3ZSBkbyBub3QgaW5p
dGlhbGl6ZSBpdCBoZXJlLgogeworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCwgbV90eXBl
KTsKIH0KIAogQmxvYjo6fkJsb2IoKQpAQCAtMjA1LDE0ICsxNTcsOSBAQCBCbG9iOjp+QmxvYigp
CiAgICAgICAgICgqbV9ibG9iTG9hZGVycy5iZWdpbigpKS0+Y2FuY2VsKCk7CiB9CiAKLVVSTCBC
bG9iOjp1cmwoKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVybmFsVVJMLT51cmwoKTsKLX0K
LQogUmVmPEJsb2I+IEJsb2I6OnNsaWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgY29uc3QKIHsKLSAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoJmNvbnRleHQs
IG1faW50ZXJuYWxVUkwtPnVybCgpLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOworICAgIGF1
dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYigmY29udGV4dCwgbV9pbnRlcm5hbFVSTCwgc3Rh
cnQsIGVuZCwgY29udGVudFR5cGUpKTsKICAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gYmxvYjsKIH0KQEAgLTIyMiw3ICsxNjksNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
QmxvYjo6c2l6ZSgpIGNvbnN0CiAgICAgaWYgKCFtX3NpemUpIHsKICAgICAgICAgLy8gRklYTUU6
IEphdmFTY3JpcHQgY2Fubm90IHJlcHJlc2VudCBzaXplcyBhcyBsYXJnZSBhcyB1bnNpZ25lZCBs
b25nIGxvbmcsIHdlIG5lZWQgdG8KICAgICAgICAgLy8gY29tZSB1cCB3aXRoIGFuIGV4Y2VwdGlv
biB0byB0aHJvdyBpZiBmaWxlIHNpemUgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBhY3R1YWxTaXplID0gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Ymxv
YlNpemUobV9pbnRlcm5hbFVSTC0+dXJsKCkpOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YWN0dWFsU2l6ZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKG1faW50ZXJuYWxV
UkwpOwogICAgICAgICBtX3NpemUgPSBpc0luQm91bmRzPGxvbmcgbG9uZz4oYWN0dWFsU2l6ZSkg
PyBhY3R1YWxTaXplIDogMDsKICAgICB9CiAKQEAgLTM5NSwyMyArMzQyLDkgQEAgY29uc3QgY2hh
ciogQmxvYjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJCbG9iIjsK
IH0KIAotQmxvYjo6SGFuZGxlIEJsb2I6OmhhbmRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEhh
bmRsZSB7IG1faW50ZXJuYWxVUkwuY29weVJlZigpIH07Ci19Ci0KLUJsb2I6OkhhbmRsZTo6SGFu
ZGxlKFJlZjxCbG9iSW50ZXJuYWxVUkw+JiYgaW50ZXJuYWxVUkwpCi0gICAgOiBtX2ludGVybmFs
VVJMKFdURk1vdmUoaW50ZXJuYWxVUkwpKQoteyB9Ci0KLUJsb2I6OkhhbmRsZTo6fkhhbmRsZSgp
ID0gZGVmYXVsdDsKLQotQmxvYjo6SGFuZGxlOjpIYW5kbGUoSGFuZGxlJiYpID0gZGVmYXVsdDsK
LUJsb2I6OkhhbmRsZTo6SGFuZGxlKGNvbnN0IEhhbmRsZSYpID0gZGVmYXVsdDsKLQotVVJMIEJs
b2I6OkhhbmRsZTo6dXJsKCkgY29uc3QKK0Jsb2JVUkxIYW5kbGUgQmxvYjo6aGFuZGxlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbFVSTC0+dXJsKCk7CisgICAgcmV0dXJuIEJsb2JV
UkxIYW5kbGUgeyBtX2ludGVybmFsVVJMIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggMjU1MzFiYzMwOGVjODk5NjIzNzdlY2Q0MDBlYzEwZDA4
OTRhMGJhYi4uNGVkODZhM2VmODdhODIyNWU5YmFkMDY4NTk0YWJkN2YzOWQ5Y2IwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQmxvYlByb3BlcnR5QmFnLmgiCisjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZp
bGVSZWFkZXJMb2FkZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCkBAIC01Nyw3ICs1OCw2IEBAIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIAogdXNpbmcg
QmxvYlBhcnRWYXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5nPjsKLWNsYXNzIEJs
b2JJbnRlcm5hbFVSTDsKIAogY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKEJsb2IsIFdF
QkNPUkVfRVhQT1JUKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
QmxvYigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1
cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwpAQCAtMTE3LDE5ICsxMTcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPFJlYWRhYmxlU3RyZWFtPj4gc3Ry
ZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIGNsYXNzIEhhbmRsZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBleHBsaWNpdCBIYW5kbGUoUmVmPEJsb2JJbnRlcm5hbFVSTD4mJik7
Ci0gICAgICAgIH5IYW5kbGUoKTsKLSAgICAgICAgSGFuZGxlKEhhbmRsZSYmKTsKLSAgICAgICAg
SGFuZGxlKGNvbnN0IEhhbmRsZSYpOwotICAgICAgICBVUkwgdXJsKCkgY29uc3Q7Ci0gICAgcHJp
dmF0ZToKLSAgICAgICAgUmVmPEJsb2JJbnRlcm5hbFVSTD4gbV9pbnRlcm5hbFVSTDsKLSAgICB9
OwotCiAgICAgLy8gS2VlcGluZyB0aGUgaGFuZGxlIGFsaXZlIHdpbGwga2VlcCB0aGUgQmxvYiBk
YXRhIGFsaXZlIChidXQgbm90IHRoZSBCbG9iIG9iamVjdCkuCi0gICAgSGFuZGxlIGhhbmRsZSgp
IGNvbnN0OworICAgIEJsb2JVUkxIYW5kbGUgaGFuZGxlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKQEAgLTE2MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJu
YWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9i
amVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBU
aGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVzZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVu
dAogICAgIC8vIGludG8gYW4gSFRNTCBvciBmb3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBV
UkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2UgcHVycG9zZXMuCi0gICAgUmVmPEJsb2JJbnRlcm5h
bFVSTD4gbV9pbnRlcm5hbFVSTDsKKyAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIEhhc2hT
ZXQ8c3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+PiBtX2Jsb2JMb2FkZXJzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4IGQwN2Y5ZGI4NWEyOTQ1YzkzZGIwY2FmMDgwYTI2
OGQwNWJmNDRhYTEuLjU1YzU4MTAxNTkxY2U0MTVjNzVjYTA4MDkzNGVhMzFlMTcyZDU0NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcApAQCAtOTYsNDUgKzk2LDY3IEBAIFVSTCBCbG9i
VVJMOjpjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogICAgIHJldHVy
biBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1VUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uOjpVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQotICAg
IDogbV91cmwodXJsKQorQmxvYlVSTEhhbmRsZTo6QmxvYlVSTEhhbmRsZShjb25zdCBCbG9iVVJM
SGFuZGxlJiBvdGhlcikKKyAgICA6IG1fdXJsKG90aGVyLm1fdXJsLmlzb2xhdGVkQ29weSgpKQog
ewotICAgIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KCk7CisgICAgcmVnaXN0ZXJC
bG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKIH0KIAotVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbjo6flVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24oKQorQmxvYlVSTEhhbmRs
ZTo6QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKKyAgICA6IG1fdXJsKHVybC5pc29sYXRl
ZENvcHkoKSkKIHsKLSAgICB1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNzYXJ5KCk7CisgICAg
QVNTRVJUKG1fdXJsLnByb3RvY29sSXNCbG9iKCkpOworICAgIHJlZ2lzdGVyQmxvYlVSTEhhbmRs
ZUlmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lv
bjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoKQorQmxvYlVSTEhhbmRsZTo6fkJs
b2JVUkxIYW5kbGUoKQogewotICAgIGlmIChtX3VybC5wcm90b2NvbElzQmxvYigpKSB7Ci0gICAg
ICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShCbG9iVVJMOjpnZXRPcmln
aW5VUkwobV91cmwpKTsKLSAgICAgICAgVVJMIHRlbXBvcmFyeUJsb2JVUkwgPSBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwob3JpZ2luLnB0cigpKTsKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG9yaWdpbi5wdHIoKSwgdGVtcG9yYXJ5QmxvYlVSTCwgbV91
cmwpOwotICAgICAgICBtX3VybCA9IFdURk1vdmUodGVtcG9yYXJ5QmxvYlVSTCk7Ci0gICAgfQor
ICAgIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBVUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOjp1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNz
YXJ5KCkKK3ZvaWQgQmxvYlVSTEhhbmRsZTo6cmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNlc3Nh
cnkoKQogewogICAgIGlmIChtX3VybC5wcm90b2NvbElzQmxvYigpKQotICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybCk7CisgICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShtX3VybCk7Cit9CisKK3Zv
aWQgQmxvYlVSTEhhbmRsZTo6dW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpCit7
CisgICAgaWYgKG1fdXJsLnByb3RvY29sSXNCbG9iKCkpCisgICAgICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKG1fdXJsKTsKK30KKworQmxvYlVSTEhh
bmRsZSYgQmxvYlVSTEhhbmRsZTo6b3BlcmF0b3I9KGNvbnN0IEJsb2JVUkxIYW5kbGUmIG90aGVy
KQoreworICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisg
ICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIG1fdXJsID0gb3Ro
ZXIubV91cmwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZOZWNl
c3NhcnkoKTsKKworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBCbG9iVVJMSGFuZGxlOjpj
bGVhcigpCit7CisgICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAg
IG1fdXJsID0geyB9OwogfQogCi1VUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uJiBVUkxX
aXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uOjpvcGVyYXRvcj0oVVJMV2l0aEJsb2JVUkxMaWZl
dGltZUV4dGVuc2lvbiYmIG90aGVyKQorQmxvYlVSTEhhbmRsZSYgQmxvYlVSTEhhbmRsZTo6b3Bl
cmF0b3I9KEJsb2JVUkxIYW5kbGUmJiBvdGhlcikKIHsKLSAgICB1bnJlZ2lzdGVyQ3VycmVudFVS
TElmTmVjZXNzYXJ5KCk7CisgICAgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGVJZk5lY2Vzc2FyeSgp
OwogICAgIG1fdXJsID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3VybCwgeyB9KTsKICAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mIFVSTFdpdGhC
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb246Om9wZXJhdG9yPShVUkwmJiB1cmwpCitCbG9iVVJMSGFu
ZGxlJiBCbG9iVVJMSGFuZGxlOjpvcGVyYXRvcj0oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdW5y
ZWdpc3RlckN1cnJlbnRVUkxJZk5lY2Vzc2FyeSgpOwotICAgIG1fdXJsID0gV1RGTW92ZSh1cmwp
OwotICAgIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KCk7CisgICAgQVNTRVJUKHVy
bC5wcm90b2NvbElzQmxvYigpKTsKKyAgICB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZUlmTmVjZXNz
YXJ5KCk7CisgICAgbV91cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVnaXN0ZXJCbG9i
VVJMSGFuZGxlSWZOZWNlc3NhcnkoKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iVVJMLmgKaW5kZXggODMxZjQyY2M4Mjg1YWJkN2EwZmUxNTNkNGRhZThkYWEyZGU2
MDY3YS4uNTg1YWUzZGQ2NTk2MGFiYjgyMTQwMWE4ODk4NjZkYzI0YmYyMmM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iVVJMLmgKQEAgLTU4LDI3ICs1OCwzMSBAQCBwcml2YXRlOgogICAgIEJsb2JV
UkwoKSB7IH0KIH07CiAKLWNsYXNzIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gewor
Ly8gRXh0ZW5kcyB0aGUgbGlmZXRpbWUgb2YgdGhlIEJsb2IgVVJMLiBUaGlzIG1lYW5zIHRoYXQg
dGhlIGJsb2IgVVJMIHdpbGwgcmVtYWluIHZhbGlkIGFmdGVyCisvLyByZXZva2VPYmplY3RVUkwo
KSBoYXMgYmVlbiBjYWxsZWQsIGFzIGxvbmcgYXMgQmxvYlVSTEhhbmRsZSBvYmplY3RzIHJlZmVy
IHRvIHRoZSBibG9iIFVSTC4KK2NsYXNzIEJsb2JVUkxIYW5kbGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVSTFdpdGhCbG9iVVJMTGlm
ZXRpbWVFeHRlbnNpb24pOwogcHVibGljOgotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24oKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgVVJMV2l0aEJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbihjb25zdCBVUkwmKTsKLSAgICB+VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lv
bigpOworICAgIEJsb2JVUkxIYW5kbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgQmxvYlVS
TEhhbmRsZShjb25zdCBVUkwmKTsKKyAgICB+QmxvYlVSTEhhbmRsZSgpOwogCi0gICAgVVJMV2l0
aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbihVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9u
JiYgb3RoZXIpCisgICAgQmxvYlVSTEhhbmRsZShjb25zdCBCbG9iVVJMSGFuZGxlJik7CisgICAg
QmxvYlVSTEhhbmRsZShCbG9iVVJMSGFuZGxlJiYgb3RoZXIpCiAgICAgICAgIDogbV91cmwoc3Rk
OjpleGNoYW5nZShvdGhlci5tX3VybCwgeyB9KSkKICAgICB7IH0KIAotICAgIFVSTFdpdGhCbG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24mIG9wZXJhdG9yPShVUkxXaXRoQmxvYlVSTExpZmV0aW1lRXh0
ZW5zaW9uJiYpOwotICAgIFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24mIG9wZXJhdG9y
PShVUkwmJik7CisgICAgQmxvYlVSTEhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0IEJsb2JVUkxIYW5k
bGUmKTsKKyAgICBCbG9iVVJMSGFuZGxlJiBvcGVyYXRvcj0oQmxvYlVSTEhhbmRsZSYmKTsKKyAg
ICBCbG9iVVJMSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgVVJMJik7CiAKLSAgICBvcGVyYXRvciBj
b25zdCBVUkwmKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsLmlzb2xhdGVkQ29weSgpOyB9CisKKyAgICB2b2lkIGNsZWFyKCk7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQ3VycmVudFVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBleHRl
bmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkxIYW5kbGVJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlSWZO
ZWNlc3NhcnkoKTsKIAogICAgIFVSTCBtX3VybDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBiZDgxZjhlYTMxOWFlMDM5
ZmVkYzE3NWQxNDE4Yzg0MmYwMjIwOTBmLi45ZmYzNjI4NTYwOTc5MTc3YmIwYWYyY2ZhN2ZkYzIy
NjIzMzE4NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAKQEAgLTE1NSwxNSArMTU1LDI1IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKGlzQmxv
YlVSTENvbnRhaW5zTnVsbE9yaWdpbih1cmwpKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3Zl
KHVybC5zdHJpbmcoKSk7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICBlbnN1cmVPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0gewogICAgICAg
ICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIH0pOwogfQogCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJs
KTsKKyAgICB9KTsKK30KKwordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
QmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQo
W3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOworICAgIH0pOworfQorCiBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBpZiAoYXV0byBjYWNoZWRPcmlnaW4gPSBvcmlnaW5NYXAoKS0+Z2V0KHVy
bC5zdHJpbmcoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oCmluZGV4IGJjZDM2YmUzZmE3YjM5MmJiNjMxM2IzZWE2NWI5Mzc1Y2UyMTE1ZjAu
LjE0MTI4NDgyZmRjNTY3ZGRmNDA2MTM3MjU3MjM5MmE5YTZjNDExYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00Nyw2ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJs
b2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkxIYW5kbGUoY29uc3QgVVJMJik7CisKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgb3JpZ2luIGZvciB0aGUg
Z2l2ZW4gYmxvYiBVUkwuIFRoaXMgaXMgYmVjYXVzZSB3ZSBhcmUgbm90IGFibGUgdG8gZW1iZWQg
dGhlIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgdGhlIG9yaWdpbiBvZiBmaWxlIFVSTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDQ3MTQ3NDk1ZmI0Y2Y4NGNk
MGQyYTZiNjhmYzJmMzEwYmU3YzA5ZTAuLmNkODk1YTk3OTVjYTI4MDdmMzQ1OTdjNzAyNDcwOWEw
OThhZjhhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTEw
NCwxNyArMTA0LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1CiAgICAgY2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWUu
bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgeyB9LCBXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CiAKLVVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gRnJhbWVMb2FkZXI6OlBvbGlj
eUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUG9saWN5RGVjaXNpb25Nb2RlIG1v
ZGUpIGNvbnN0CitCbG9iVVJMSGFuZGxlIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpleHRl
bmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFBvbGljeURlY2lzaW9uTW9kZSBtb2RlKSBjb25zdAogewogICAgIGlmIChtb2RlICE9IFBv
bGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzIHx8ICFyZXF1ZXN0LnVybCgpLnByb3RvY29s
SXNCbG9iKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBVUkxXaXRoQmxvYlVSTExpZmV0
aW1lRXh0ZW5zaW9uIHVybFdpdGhMaWZldGltZUV4dGVuc2lvbihyZXF1ZXN0LnVybCgpKTsKLSAg
ICByZXF1ZXN0LnNldFVSTCh1cmxXaXRoTGlmZXRpbWVFeHRlbnNpb24pOwotICAgIGlmIChsb2Fk
ZXIpCi0gICAgICAgIGxvYWRlci0+cmVxdWVzdCgpLnNldFVSTCh1cmxXaXRoTGlmZXRpbWVFeHRl
bnNpb24pOwotCi0gICAgcmV0dXJuIHVybFdpdGhMaWZldGltZUV4dGVuc2lvbjsKKyAgICByZXR1
cm4gQmxvYlVSTEhhbmRsZSB7IHJlcXVlc3QudXJsKCkgfTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUg
cG9saWN5RGVjaXNpb25Nb2RlKQpAQCAtMTk3LDcgKzE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0CiAKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsZWFyUHJvdmlzaW9uYWxMb2FkRm9yUG9s
aWN5Q2hlY2soKTsKIAotICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5k
QmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkocmVxdWVzdCwgbG9hZGVyLCBwb2xpY3lEZWNpc2lv
bk1vZGUpOworICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVS
TExpZmV0aW1lSWZOZWNlc3NhcnkocmVxdWVzdCwgcG9saWN5RGVjaXNpb25Nb2RlKTsKIAogICAg
IGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudExvYWQgPSAhbV9mcmFtZS5sb2FkZXIoKS5zdGF0
ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSAmJiByZXF1ZXN0LnVy
bCgpLnByb3RvY29sSXNBYm91dCgpICYmICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7CiAgICAg
YXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7
CkBAIC0yNTUsNyArMjUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXQKICAgICBpZiAoIURP
TVdpbmRvdzo6YWxsb3dQb3BVcChtX2ZyYW1lKSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsg
fSwgbnVsbHB0ciwgeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKIAot
ICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVSTExpZmV0aW1l
SWZOZWNlc3NhcnkocmVxdWVzdCwgbnVsbHB0cik7CisgICAgYXV0byBibG9iVVJMTGlmZXRpbWVF
eHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0KTsKIAog
ICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmNyZWF0
ZSgpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLmdl
dCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpLCByZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggM2M2
NjIyODM1NjM3N2FmODlkMDllYTU3NDVjMTEyZTkxNGZiODIwNi4uYTViN2UzZmQxMGM0Y2VkNWQw
NmM5OTMxNTJmNjhhZWM2MzU4ZjJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
VVJMV2l0aEJsb2JVUkxMaWZldGltZUV4dGVuc2lvbjsKK2NsYXNzIEJsb2JVUkxIYW5kbGU7CiAK
IGVudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIDogdWludDhfdCB7CiAgICAgQ29u
dGludWVMb2FkLApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAg
IFVSTFdpdGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZO
ZWNlc3NhcnkoUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqLCBQb2xpY3lEZWNpc2lv
bk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cykgY29uc3Q7CisgICAgQmxv
YlVSTEhhbmRsZSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQb2xpY3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5j
aHJvbm91cykgY29uc3Q7CiAKICAgICBGcmFtZSYgbV9mcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNzU5NTcwMjIxNzI5YmZi
NTE4ZTJhYmI1NDIwMDNmYWYwOGJjNmY1Mi4uNjg5ZDMxOTA3MTA4ZGM0NDM5ODA0ZjFlNTQyMjY5
ZWNiOWUxOGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeS5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgPSAwOworCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCmluZGV4IDMyZGQ4YzA4ZTIxOTA2ZjRhMmQ4ZjJhOGMzMGM3ZWE1YWE5
NTI2NzQuLjIwODE4NTg3YmUwMzAxMWU2OGNiM2U0ZTcyMWJmMjBlNjI5M2ZkZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyCiAKICAgICBhdXRv
IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CiAgICAgYmxvYkRhdGEt
PmFwcGVuZEZpbGUoV1RGTW92ZShmaWxlKSk7Ci0gICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygp
LCBXVEZNb3ZlKGJsb2JEYXRhKSk7CisgICAgYWRkQmxvYkRhdGEodXJsLnN0cmluZygpLCBXVEZN
b3ZlKGJsb2JEYXRhKSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5
SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYg
YmxvYlBhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCks
IFdURk1vdmUoYmxvYkRhdGEpKTsKKyAgICBhZGRCbG9iRGF0YSh1cmwuc3RyaW5nKCksIFdURk1v
dmUoYmxvYkRhdGEpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQpAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAKICAgICBCbG9iRGF0YSogc3JjID0gZ2V0QmxvYkRh
dGFGcm9tVVJMKHNyY1VSTCk7CiAgICAgaWYgKHNyYykgewotICAgICAgICBtX2Jsb2JzLnNldCh1
cmwuc3RyaW5nKCksIHNyYyk7CisgICAgICAgIGFkZEJsb2JEYXRhKHVybC5zdHJpbmcoKSwgc3Jj
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0CiAgICAgYXV0byBiYWNraW5nRmlsZSA9IEJsb2JEYXRhOjpjcmVhdGUo
Y29udGVudFR5cGUpOwogICAgIGJhY2tpbmdGaWxlLT5hcHBlbmRGaWxlKGZpbGUucmVsZWFzZU5v
bk51bGwoKSk7CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmFja2lu
Z0ZpbGUpKTsKKyAgICBhZGRCbG9iRGF0YSh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmFja2luZ0Zp
bGUpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKQEAgLTIxMCwxMyArMjEwLDE0
IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMCiAKICAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3
RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKIAot
ICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRhKSk7CisgICAgYWRk
QmxvYkRhdGEodXJsLnN0cmluZygpLCBXVEZNb3ZlKG5ld0RhdGEpKTsKIH0KIAogdm9pZCBCbG9i
UmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fYmxvYnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7
CisgICAgaWYgKG1fYmxvYlJlZmVyZW5jZXMucmVtb3ZlKHVybC5zdHJpbmcoKSkpCisgICAgICAg
IG1fYmxvYnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiB9CiAKIEJsb2JEYXRhKiBCbG9iUmVnaXN0
cnlJbXBsOjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CkBAIC0zNTks
NCArMzYwLDIzIEBAIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gQmxvYlJl
Z2lzdHJ5SW1wbDo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphZGRCbG9iRGF0YShjb25zdCBTdHJpbmcmIHVy
bCwgUmVmUHRyPEJsb2JEYXRhPiYmIGJsb2JEYXRhKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9ibG9icy5zZXQodXJsLCBXVEZNb3ZlKGJsb2JEYXRhKSk7CisgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICBtX2Jsb2JSZWZlcmVuY2VzLmFkZCh1cmwpOworfQorCit2b2lk
IEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkK
K3sKKyAgICBpZiAobV9ibG9icy5jb250YWlucyh1cmwuc3RyaW5nKCkpKQorICAgICAgICBtX2Js
b2JSZWZlcmVuY2VzLmFkZCh1cmwuc3RyaW5nKCkpOworfQorCit2b2lkIEJsb2JSZWdpc3RyeUlt
cGw6OnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICht
X2Jsb2JSZWZlcmVuY2VzLnJlbW92ZSh1cmwuc3RyaW5nKCkpKQorICAgICAgICBtX2Jsb2JzLnJl
bW92ZSh1cmwuc3RyaW5nKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCmluZGV4
IGQ0NDQ1MTQxYWEyZmNjODlmZWRmMzllN2Q4N2VhMzA4MWUyMzZkY2QuLjU3NDAzNmE1NmQ0MWJk
YTJkNDNhNDNkNWFhZjM4ODkwNjIzZjZjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC02
NSw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJik7CiAKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBV
UkwmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpOworCiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKTsK
QEAgLTc4LDYgKzgyLDkgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoY29uc3QgVVJMJikgY29uc3Q7CiAKIHByaXZhdGU6Cisg
ICAgdm9pZCBhZGRCbG9iRGF0YShjb25zdCBTdHJpbmcmIHVybCwgUmVmUHRyPEJsb2JEYXRhPiYm
KTsKKworICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9ibG9iUmVmZXJlbmNlczsKICAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGMzYTdmMWQ3NTM0OGRiZjY1NDU3N2UwMmQy
OWM2YTJiZTA1OWIzOTguLjI1YmY4MjAwOWUzYWE4MmMxMzhjMTc1NzAyYjY0MGE0N2FiM2Y5OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjUxLDcgKzI1MSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXNwb25zZVR5cGUoUmVzcG9u
c2VUeXBlIHR5cGUpCiAgICAgLy8gYXR0ZW1wdCB0byBkaXNjb3VyYWdlIHN5bmNocm9ub3VzIFhI
UiB1c2UuIHJlc3BvbnNlVHlwZSBpcyBvbmUgc3VjaCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5Lgog
ICAgIC8vIFdlJ2xsIG9ubHkgZGlzYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgZm9yIEhUVFAoUykg
cmVxdWVzdHMgc2luY2Ugc3luYyByZXF1ZXN0cyBmb3IgbG9jYWwgcHJvdG9jb2xzCiAgICAgLy8g
c3VjaCBhcyBmaWxlOiBhbmQgZGF0YTogc3RpbGwgbWFrZSBzZW5zZSB0byBhbGxvdy4KLSAgICBp
ZiAoIW1fYXN5bmMgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkgJiYg
bV91cmwudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCFtX2FzeW5j
ICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpICYmIG1fdXJsLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAiWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIGNhbm5vdCBiZSBj
aGFuZ2VkIGZvciBzeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2lu
ZG93IGNvbnRleHQuIik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNz
RXJyb3IgfTsKICAgICB9CkBAIC0zODIsOSArMzgyLDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhN
TEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwg
Ym9vCiAgICAgY2xlYXJSZXNwb25zZSgpOwogICAgIGNsZWFyUmVxdWVzdCgpOwogCi0gICAgYXV0
byB1cGdyYWRlZFVSTCA9IHVybDsKLSAgICBjb250ZXh0LT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKHVwZ3JhZGVkVVJMLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwotICAgIG1fdXJsID0gV1RG
TW92ZSh1cGdyYWRlZFVSTCk7CisgICAgbV91cmwgPSB1cmw7CisgICAgY29udGV4dC0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChtX3VybCwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKyAgICBp
ZiAobV91cmwucHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24gPSBtX3VybDsKIAogICAgIG1fYXN5bmMgPSBhc3luYzsKIApAQCAtNDE3LDcgKzQxOCw3
IEBAIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVw
YXJlVG9TZW5kKCkKICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9jdW1lbnQ+
KGNvbnRleHQpLnNob3VsZElnbm9yZVN5bmNYSFJzKCkpIHsKLSAgICAgICAgbG9nQ29uc29sZUVy
cm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbWFrZVN0cmluZygiSWdub3JpbmcgWE1MSHR0
cFJlcXVlc3Quc2VuZCgpIGNhbGwgZm9yICciLCBtX3VybC51cmwoKS5zdHJpbmcoKSwgIicgYmVj
YXVzZSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3luY2hyb25vdXMgZmFpbHVyZXMgd2FzIHJlYWNo
ZWQuIikpOworICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBtYWtlU3RyaW5nKCJJZ25vcmluZyBYTUxIdHRwUmVxdWVzdC5zZW5kKCkgY2FsbCBmb3IgJyIs
IG1fdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzeW5jaHJv
bm91cyBmYWlsdXJlcyB3YXMgcmVhY2hlZC4iKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25P
cjx2b2lkPiB7IH07CiAgICAgfQogCkBAIC01MjEsNyArNTIyLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiYgYm9keSkKICAgICAgICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0LnZhbHVlKCkpOwogCiAgICAgaWYgKG1fbWV0aG9kICE9ICJHRVQiICYmIG1fbWV0
aG9kICE9ICJIRUFEIikgewotICAgICAgICBpZiAoIW1fdXJsLnVybCgpLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSkgeworICAgICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gc3VwcG9ydCBwb3N0
aW5nIEJsb2JzIHRvIG5vbi1odHRwIFVSTHMgKGUuZy4gY3VzdG9tIFVSTCBzY2hlbWVzKQogICAg
ICAgICAgICAgLy8gYnV0IGJlY2F1c2Ugb2YgdGhlIGFyY2hpdGVjdHVyZSBvZiBibG9iLWhhbmRs
aW5nIHRoYXQgd2lsbCByZXF1aXJlIGEgZmFpciBhbW91bnQgb2Ygd29yay4KICAgICAgICAgICAg
IApAQCAtNTk0LDggKzU5NSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6
c2VuZEJ5dGVzRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogRXhjZXB0aW9u
T3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoKQogewogICAgIC8vIE9ubHkg
R0VUIHJlcXVlc3QgaXMgc3VwcG9ydGVkIGZvciBibG9iIFVSTC4KLSAgICBpZiAoIW1fYXN5bmMg
JiYgbV91cmwudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAiR0VUIikKKyAg
ICBpZiAoIW1fYXN5bmMgJiYgbV91cmwucHJvdG9jb2xJc0Jsb2IoKSAmJiBtX21ldGhvZCAhPSAi
R0VUIikgeworICAgICAgICBtX2Jsb2JVUkxMaWZldGltZUV4dGVuc2lvbi5jbGVhcigpOwogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTmV0d29ya0Vycm9yIH07CisgICAgfQogCiAgICAgaWYg
KG1fYXN5bmMgJiYgbV91cGxvYWQgJiYgbV91cGxvYWQtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCiAg
ICAgICAgIG1fdXBsb2FkTGlzdGVuZXJGbGFnID0gdHJ1ZTsKQEAgLTc0Nyw2ICs3NTAsNyBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVlc3QoKQogICAgIG1fcmVxdWVzdEhlYWRlcnMu
Y2xlYXIoKTsKICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gbnVsbHB0cjsKICAgICBtX3VybCA9
IFVSTCB7IH07CisgICAgbV9ibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24uY2xlYXIoKTsKIH0KIAog
dm9pZCBYTUxIdHRwUmVxdWVzdDo6Z2VuZXJpY0Vycm9yKCkKQEAgLTkzOSw2ICs5NDMsNyBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCiAKICAg
ICBtX2xvYWRpbmdBY3Rpdml0eSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3VybCA9IFVSTCB7IH07
CisgICAgbV9ibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24uY2xlYXIoKTsKIAogICAgIG1fc2VuZEZs
YWcgPSBmYWxzZTsKICAgICBjaGFuZ2VTdGF0ZShET05FKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKaW5kZXggYjQ4ZTFiOTBmYWFhNTJkNmZlOWM1M2E2YTFmMjA5OTM1YzUzYmU4Yi4u
YzA0YTE2ODk2MDliNmZiOTFhNjgwYzk4ZjdlMDczMmE3NDhmOWVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTIxNiw3ICsyMTYsOCBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBtX3VwbG9hZDsKIAotICAgIFVSTFdp
dGhCbG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gbV91cmw7CisgICAgVVJMIG1fdXJsOworICAgIEJs
b2JVUkxIYW5kbGUgbV9ibG9iVVJMTGlmZXRpbWVFeHRlbnNpb247CiAgICAgU3RyaW5nIG1fbWV0
aG9kOwogICAgIEhUVFBIZWFkZXJNYXAgbV9yZXF1ZXN0SGVhZGVyczsKICAgICBSZWZQdHI8Rm9y
bURhdGE+IG1fcmVxdWVzdEVudGl0eUJvZHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDYzYzI0MzE1MTNiOGY3MWE1ZDhkZTk2Mzk0YzE0YmU4ZDJkM2ZjZTUuLjg4NDM4MmQ0Y2Y2
YjU0Y2UzOTdhY2I5MDg4MTY0NTBiYjZjMGQzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC04NjYsNiArODY2LDI0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIHNlc3Npb24tPmJsb2JS
ZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkK
K3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Np
b24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyQmxvYlVSTEhhbmRsZSh1cmwpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9i
VVJMSGFuZGxlKHVybCk7Cit9CisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAxYTU0NDRiZTdiNDdlNWRjMTIx
ZDU4ZjgwYmFhZGJhMThkM2NjYzNjLi5kOTI0MzIxMzkyOThkYmQ2M2Y0YTdlMThjM2YwYjAxZGRm
MTQ4OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yMzYsNiArMjM2LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOwogICAgIHZvaWQg
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAorICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYpOworICAgIHZvaWQgdW5yZWdpc3Rl
ckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJik7CisKICAgICB2b2lkIHNldENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIGNyZWF0ZVNvY2tldFN0
cmVhbShVUkwmJiwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVu
dGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDliMzI4OTY4MTA2MTliYTE5ZGM1YmY0MzdiMzY4YTdjYTdmYTQzMWIuLjc5NmJmYTQ0Y2MyNjI3
MDg3NTNlNzYzMTgzYTVhMDE3YzdhZmZjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTYsNiArNTYsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVW5yZWdpc3RlckJsb2JV
UkwoVVJMIHVybCkKICAgICBCbG9iU2l6ZShVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6
ZSkgU3luY2hyb25vdXMKICAgICBXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3Ry
aW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBS
ZWdpc3RlckJsb2JVUkxIYW5kbGUoVVJMIHVybCk7CisgICAgVW5yZWdpc3RlckJsb2JVUkxIYW5k
bGUoVVJMIHVybCk7CiAKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRl
eCBiNTBmNDliYzgzNjQyYWZhMTYwYWJkNjhmNDk3ZDViOGEyZjRiZjc3Li43OTY2MmVmYmQxMTY4
NjE5ZmZjZjY1Y2IyODg1YzFmNDAzNWI2YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcApAQCAtNjUsNiArNjUsOCBAQCBCbG9iUmVnaXN0cnkqIE5ldHdvcmtQcm9jZXNzUGxh
dGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogICAgICAgICB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAgICAgICAgIHZvaWQgd3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEhhbmRs
ZShjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIH07CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5Qmxv
YlJlZ2lzdHJ5PiBibG9iUmVnaXN0cnk7CiAgICAgcmV0dXJuICZibG9iUmVnaXN0cnkuZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKaW5kZXggMjhmNjhhMTRkNTFlYjk1ZTZmOTRiZGEzZWY0MzVmNDc4OTAyZjEy
MC4uMDA1M2I3ZWEyMmI5ZjIyMDdiZjFkZTg2NTFlODBkY2UyYzk0MThiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cApAQCAtNzQsNiArNzQsMTYgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVIKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSks
IDApOwogfQogCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxIYW5kbGUo
Y29uc3QgVVJMJiB1cmwpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKSwgMCk7
Cit9CisKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNv
bnN0IFVSTCYgdXJsKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkxIYW5kbGUodXJsKSwgMCk7
Cit9CisKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDUy
ZmFjZjgxODJjYTIzMTBiM2I4ZmE1YTQwZGI2NDdlMGNjMTMzYzEuLjE4MjQyZjUyZWNiNWZjYzcx
M2JiMDEzZWY3Y2FiYTlmNzU5YTVmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzksNiArMzksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKSBmaW5hbDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29u
c3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEhhbmRsZShjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFu
ZGxlKGNvbnN0IFVSTCYpIGZpbmFsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCmluZGV4IGJkYzg2NWQxZTM2ZTVkMzU4ZGUxY2VmZDliZmIzNzUyOWViNGIyY2MuLjhiYjI4
YjlmNzkwZmNkN2ZhY2ZlNzM1NjQ2MTU4MTlmMmI2NDhhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KQEAgLTkxLDYgKzkxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0
ZXJCbG9iVVJMKHVybCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3Qg
VVJMJiB1cmwpIGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0K
ICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQ
YXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkud3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMSGFuZGxlKGNvbnN0IFVSTCYgdXJsKSBmaW5h
bCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CisgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZShjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JS
ZWdpc3RyeS51bnJlZ2lzdGVyQmxvYlVSTEhhbmRsZSh1cmwpOyB9CiAKICAgICBCbG9iUmVnaXN0
cnlJbXBsKiBibG9iUmVnaXN0cnlJbXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGNmZDNkNTgzMDE5OGEz
OTA0YTc0NDc5ZmIwYWQ3OGVmOTcyMzNmNzkuLmNmNmE2ODgzOTIwYzFjMjFkMDYwNGY0ODlkNjJi
ODI3MWQ2Zjg3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtODcsNiAr
ODcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsgfQogICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmIHVybCkgZmluYWwgeyByZXR1
cm4gbV9ibG9iUmVnaXN0cnkuYmxvYlNpemUodXJsKTsgfQogICAgIHZvaWQgd3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhi
bG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOyB9CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxIYW5kbGUoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVn
aXN0ZXJCbG9iVVJMSGFuZGxlKHVybCk7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMSGFu
ZGxlKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9i
VVJMSGFuZGxlKHVybCk7IH0KIAogICAgIEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUlt
cGwoKSBmaW5hbCB7IHJldHVybiAmbV9ibG9iUmVnaXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE4YjdlNTdl
MDU5MGQ2YWIzODliMTBkMDllMGQwYzYwNjRlZTg4MTIuLjYxYTJhMTQ5MDJkZmYwMzY0MTFlOTM4
OThjNjc4ZmY3YzE5ZDZmNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOC0wOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJsb2IgVVJMIGNoYW5nZXMg
YWZ0ZXIgbG9hZGluZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAg
ICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogZmFzdC9maWxlcy9i
bG9iLWFzLWZyYW1lLXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmls
ZXMvYmxvYi1hcy1mcmFtZS11cmwuaHRtbDogQWRkZWQuCisKIDIwMjEtMDgtMDkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGxheW91dCB0
ZXN0cyBpbiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MgYnkgZGVmYXVsdCBpbiBFV1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJs
b2ItZG93bmxvYWQtdGhlbi1yZXZva2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1kb3dubG9hZC10aGVuLXJldm9r
ZS1leHBlY3RlZC50eHQKaW5kZXggZGVlM2I0NjNmNGU1OGU1MzFiNTQxYmUzZjNmYTIxYzE1MWI2
ZTJjZC4uYTNkMDM5MDE3NzkwY2EzZDdhYzM2MWFlYzkxODNlOWZlZmVkNTZmNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxv
Yi1kb3dubG9hZC10aGVuLXJldm9rZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1kb3dubG9hZC10aGVuLXJl
dm9rZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFBBU1M6
IFVSTCB3YXMgcmV2b2tlZAogRG93bmxvYWQgc3RhcnRlZC4KIERvd25sb2FkaW5nIFVSTCB3aXRo
IHN1Z2dlc3RlZCBmaWxlbmFtZSAiZm9vLnR4dCIKIERvd25sb2FkIGNvbXBsZXRlZC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxl
LWJsb2ItZG93bmxvYWQtdGhlbi1yZXZva2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItZG93bmxvYWQtdGhlbi1yZXZva2UuaHRt
bAppbmRleCA3MDcyM2M0YjE2ZTNlMmViMjk5OGUxOTQyMTY1NGUyMGFiZjg3YjU3Li4zOGVjNzgw
NmZiNWZkZTQxNGVlZjI3YWQxZTcyNDhjYTRiZTBkMjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWRvd25sb2FkLXRo
ZW4tcmV2b2tlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLWZpbGUtYmxvYi1kb3dubG9hZC10aGVuLXJldm9rZS5odG1sCkBAIC0yMywxOCAr
MjMsNiBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBsaW5rLmNsaWNrKCk7CiAgICAgLy8gUmV2
b2tlIHRoZSBVUkwgcmlnaHQgYXdheS4KICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChs
aW5rLmhyZWYpOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBVUkwgd2FzIHJldm9rZWQuCi0gICAg
eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9wZW4oIkdFVCIsIGxpbmsuaHJl
ZiwgZmFsc2UpOwotICAgIHRyeSB7Ci0gICAgICAgIHhoci5zZW5kKG51bGwpOwotICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICB9Ci0gICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwKQotICAgICAgICBjb25z
b2xlLmxvZygiRkFJTDogVVJMIHdhcyBub3QgcmV2b2tlZCIpOwotICAgIGVsc2UKLSAgICAgICAg
Y29uc29sZS5sb2coIlBBU1M6IFVSTCB3YXMgcmV2b2tlZCIpOwogfQogcnVuVGVzdCgpOwogPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItYXMtZnJhbWUt
dXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi1hcy1mcmFtZS11
cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZjkyZmY1NjM1MWVhY2Y4Yzk1YjdjNWM1YmY1
NDRhZjM0ZjBlMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Js
b2ItYXMtZnJhbWUtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitNYWtlcyBzdXJl
IHRoYXQgdXNpbmcgYSBCbG9iIFVSTCBhcyBmcmFtZSBVUkwgd29ya3MgYXMgZXhwZWN0ZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFtZS5jb250ZW50RG9jdW1l
bnQuYm9keS5pbm5lclRleHQgaXMgIkZPTyIKK1BBU1MgaWZyYW1lLmNvbnRlbnRXaW5kb3cubG9j
YXRpb24uaHJlZiA9PSBibG9iVVJMIGlzIHRydWUKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVu
dC5VUkwgPT0gYmxvYlVSTCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9i
bG9iLWFzLWZyYW1lLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWFzLWZy
YW1lLXVybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNDgwY2Q2MWY2NTQ0OWIxMzFiNzIyM2M0MGIyZWU2
NjE3OGNhYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2It
YXMtZnJhbWUtdXJsLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiTWFrZXMgc3VyZSB0aGF0IHVzaW5nIGEgQmxv
YiBVUkwgYXMgZnJhbWUgVVJMIHdvcmtzIGFzIGV4cGVjdGVkLiIpOworanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK2xldCBibG9iQ29udGVudHMgPSBgPGJvZHk+Rk9PPC9ib2R5PmA7CitsZXQgaWZy
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitsZXQgYmxvYiA9IG5ldyBC
bG9iKFtibG9iQ29udGVudHNdLCB7IHR5cGU6ICJ0ZXh0L2h0bWwiIH0pOworbGV0IGJsb2JVUkwg
PSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworaWZyYW1lLnNyYyA9IGJsb2JVUkw7CitpZnJh
bWUub25sb2FkID0gKCkgPT4geworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaWZyYW1lLmNv
bnRlbnREb2N1bWVudC5ib2R5LmlubmVyVGV4dCIsICJGT08iKTsKKyAgICBzaG91bGRCZVRydWUo
ImlmcmFtZS5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWYgPT0gYmxvYlVSTCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiaWZyYW1lLmNvbnRlbnREb2N1bWVudC5VUkwgPT0gYmxvYlVSTCIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CitibG9i
ID0gbnVsbDsKK2djKCk7CitzZXRUaW1lb3V0KGdjLCAwKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9GaWxlQVBJL3VybC91cmwtaW4tdGFncy53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9GaWxlQVBJL3VybC91cmwt
aW4tdGFncy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGE4ZWYyYTY1MjRhYTNhNmQzZTdjN2Qy
YzlhNjVjOGQ0MDVhMzBkMDguLjliNDNhZDA1ZmZlYWVkN2M4MjY4YmY4ODhjNTgzMjA2YjViYmEx
MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvRmlsZUFQSS91cmwvdXJsLWluLXRhZ3Mud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkvdXJsL3VybC1p
bi10YWdzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiAKLUhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCiBQQVNTIEJsb2IgVVJMcyBjYW4gYmUgdXNl
ZCBpbiA8c2NyaXB0PiB0YWdzCiBQQVNTIEJsb2IgVVJMcyBjYW4gYmUgdXNlZCBpbiBpZnJhbWVz
LCBhbmQgYXJlIHRyZWF0ZWQgc2FtZSBvcmlnaW4KLVRJTUVPVVQgQmxvYiBVUkwgZnJhZ21lbnQg
aXMgaW1wbGVtZW50ZWQuIFRlc3QgdGltZWQgb3V0CitQQVNTIEJsb2IgVVJMIGZyYWdtZW50IGlz
IGltcGxlbWVudGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkvdXJsL3VybC1yZWxvYWQud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvRmlsZUFQSS91
cmwvdXJsLXJlbG9hZC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDhkYWU0MGQxNThiOWNkNTk1
M2JkNWRjYTc4MzAyYTE3OGVlMzFkODYuLmEyMjBlNzQwYzA2ZGE0MmJlMzg3ZWQyYzc4YzdhOTZk
Y2I2YzE3YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvRmlsZUFQSS91cmwvdXJsLXJlbG9hZC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvRmlsZUFQSS91cmwv
dXJsLXJlbG9hZC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogCiBIYXJuZXNz
IEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAotVElNRU9VVCBSZWxvYWRpbmcgYSBi
bG9iIFVSTCBzdWNjZWVkcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgUmVsb2FkaW5nIGEgYmxvYiBV
Ukwgc3VjY2VlZHMuCiBUSU1FT1VUIFJlbG9hZGluZyBhIGJsb2IgVVJMIHN1Y2NlZWRzIGV2ZW4g
aWYgdGhlIFVSTCB3YXMgcmV2b2tlZC4gVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9pbmhlcml0YW5jZS9oaXN0b3J5LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2luaGVyaXRhbmNlL2hpc3Rvcnkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCBlNzE1ZjU5NzgwNTZl
NWJiZTU3MjFhMjMwZjJlNGM4Yjg1YzE1Nzg1Li5hYmUzNTBhNzcwZTYyOTBiY2M2NzZiZjFkMzY2
YmRmZjgxMWI5ZDY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luaGVyaXRhbmNlL2hpc3Rvcnku
c3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luaGVyaXRhbmNlL2hpc3Rvcnkuc3Vi
LWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIAogUEFTUyBIaXN0b3J5IG5hdmlnYXRpb246
ICJhYm91dDpibGFuayIgZG9jdW1lbnQgaXMgbmF2aWdhdGVkIGJhY2sgZnJvbSBoaXN0b3J5IHNh
bWUtb3JpZ2luLgogUEFTUyBIaXN0b3J5IG5hdmlnYXRpb246ICJhYm91dDpibGFuayIgZG9jdW1l
bnQgaXMgbmF2aWdhdGVkIGJhY2sgZnJvbSBoaXN0b3J5IGNyb3NzLW9yaWdpbi4KLUZBSUwgSGlz
dG9yeSBuYXZpZ2F0aW9uOiBibG9iIFVSTCBkb2N1bWVudCBpcyBuYXZpZ2F0ZWQgYmFjayBmcm9t
IGhpc3Rvcnkgc2FtZS1vcmlnaW4uIHN0ZXBfd2FpdF9mdW5jOiBXYWl0IGZvciB0aGUgcG9wdXAg
dG8gbmF2aWdhdGUuIFRpbWVkIG91dCB3YWl0aW5nIG9uIGNvbmRpdGlvbgotRkFJTCBIaXN0b3J5
IG5hdmlnYXRpb246IGJsb2IgVVJMIGRvY3VtZW50IGlzIG5hdmlnYXRlZCBiYWNrIGZyb20gaGlz
dG9yeSBjcm9zcy1vcmlnaW4uIHN0ZXBfd2FpdF9mdW5jOiBXYWl0IGZvciB0aGUgcG9wdXAgdG8g
bmF2aWdhdGUuIFRpbWVkIG91dCB3YWl0aW5nIG9uIGNvbmRpdGlvbgotRkFJTCBIaXN0b3J5IG5h
dmlnYXRpb246IGJsb2IgVVJMIGRvY3VtZW50IGlzIG5hdmlnYXRlZCBiYWNrIGZyb20gaGlzdG9y
eSAod2l0aG91dCBiZmNhY2hlIG9uIEZpcmVmb3gpIHNhbWUtb3JpZ2luLiBzdGVwX3dhaXRfZnVu
YzogV2FpdCBmb3IgdGhlIHBvcHVwIHRvIG5hdmlnYXRlLiBUaW1lZCBvdXQgd2FpdGluZyBvbiBj
b25kaXRpb24KLUZBSUwgSGlzdG9yeSBuYXZpZ2F0aW9uOiBibG9iIFVSTCBkb2N1bWVudCBpcyBu
YXZpZ2F0ZWQgYmFjayBmcm9tIGhpc3RvcnkgKHdpdGhvdXQgYmZjYWNoZSBvbiBGaXJlZm94KSBj
cm9zcy1vcmlnaW4uIHN0ZXBfd2FpdF9mdW5jOiBXYWl0IGZvciB0aGUgcG9wdXAgdG8gbmF2aWdh
dGUuIFRpbWVkIG91dCB3YWl0aW5nIG9uIGNvbmRpdGlvbgorRkFJTCBIaXN0b3J5IG5hdmlnYXRp
b246IGJsb2IgVVJMIGRvY3VtZW50IGlzIG5hdmlnYXRlZCBiYWNrIGZyb20gaGlzdG9yeSBzYW1l
LW9yaWdpbi4gYXNzZXJ0X2VxdWFsczogSW1hZ2Ugc2hvdWxkIGJlIGJsb2NrZWQgYnkgQ1NQIGlu
aGVyaXRlZCBmcm9tIG5hdmlnYXRpb24gaW5pdGlhdG9yLiBleHBlY3RlZCAiaW1nIGJsb2NrZWQi
IGJ1dCBnb3QgImltZyBsb2FkZWQiCitGQUlMIEhpc3RvcnkgbmF2aWdhdGlvbjogYmxvYiBVUkwg
ZG9jdW1lbnQgaXMgbmF2aWdhdGVkIGJhY2sgZnJvbSBoaXN0b3J5IGNyb3NzLW9yaWdpbi4gYXNz
ZXJ0X2VxdWFsczogSW1hZ2Ugc2hvdWxkIGJlIGJsb2NrZWQgYnkgQ1NQIGluaGVyaXRlZCBmcm9t
IG5hdmlnYXRpb24gaW5pdGlhdG9yLiBleHBlY3RlZCAiaW1nIGJsb2NrZWQiIGJ1dCBnb3QgImlt
ZyBsb2FkZWQiCitGQUlMIEhpc3RvcnkgbmF2aWdhdGlvbjogYmxvYiBVUkwgZG9jdW1lbnQgaXMg
bmF2aWdhdGVkIGJhY2sgZnJvbSBoaXN0b3J5ICh3aXRob3V0IGJmY2FjaGUgb24gRmlyZWZveCkg
c2FtZS1vcmlnaW4uIGFzc2VydF9lcXVhbHM6IEltYWdlIHNob3VsZCBiZSBibG9ja2VkIGJ5IENT
UCBpbmhlcml0ZWQgZnJvbSBuYXZpZ2F0aW9uIGluaXRpYXRvci4gZXhwZWN0ZWQgImltZyBibG9j
a2VkIiBidXQgZ290ICJpbWcgbG9hZGVkIgorRkFJTCBIaXN0b3J5IG5hdmlnYXRpb246IGJsb2Ig
VVJMIGRvY3VtZW50IGlzIG5hdmlnYXRlZCBiYWNrIGZyb20gaGlzdG9yeSAod2l0aG91dCBiZmNh
Y2hlIG9uIEZpcmVmb3gpIGNyb3NzLW9yaWdpbi4gYXNzZXJ0X2VxdWFsczogSW1hZ2Ugc2hvdWxk
IGJlIGJsb2NrZWQgYnkgQ1NQIGluaGVyaXRlZCBmcm9tIG5hdmlnYXRpb24gaW5pdGlhdG9yLiBl
eHBlY3RlZCAiaW1nIGJsb2NrZWQiIGJ1dCBnb3QgImltZyBsb2FkZWQiCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>