<?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>223758</bug_id>
          
          <creation_ts>2021-03-25 13:01:40 -0700</creation_ts>
          <short_desc>[WebIDL] Remove [ImplicitThis] and [CustomProxyToJSObject] extended attributes</short_desc>
          <delta_ts>2021-05-20 15:25:08 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=146785</see_also>
    
    <see_also>https://github.com/web-platform-tests/wpt/pull/29027</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1743875</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-25 13:01:40 -0700</bug_when>
    <thetext>[WebIDL] Make |this| value casting consistent between IDLAttribute and IDLOperation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743879</commentid>
    <comment_count>1</comment_count>
      <attachid>424272</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-25 13:08:43 -0700</bug_when>
    <thetext>Created attachment 424272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743881</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-25 13:09:43 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744481</commentid>
    <comment_count>3</comment_count>
      <attachid>424445</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-27 03:52:52 -0700</bug_when>
    <thetext>Created attachment 424445
Patch

Properly fix JSC not pass JSScope as |this| value (to be extracted before r?) and rebaseline LayoutTests/http/tests/security/listener tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744488</commentid>
    <comment_count>4</comment_count>
      <attachid>424448</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-27 05:10:11 -0700</bug_when>
    <thetext>Created attachment 424448
Patch

Try to fix Windows build and correct wrong ASSERT in JSScope::resolve().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746208</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-01 13:03:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/76117359&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758842</commentid>
    <comment_count>6</comment_count>
      <attachid>428253</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-11 00:32:59 -0700</bug_when>
    <thetext>Created attachment 428253
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760788</commentid>
    <comment_count>7</comment_count>
      <attachid>428841</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-17 09:39:04 -0700</bug_when>
    <thetext>Created attachment 428841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760841</commentid>
    <comment_count>8</comment_count>
      <attachid>428841</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-17 12:44:58 -0700</bug_when>
    <thetext>Comment on attachment 428841
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMCastThisValue.h:45
&gt; +template&lt;class JSClass&gt;
&gt; +inline JSClass* castThisValue(JSC::JSGlobalObject&amp; lexicalGlobalObject, JSC::JSValue thisValue)

I think the inline is implicit and not needed in cases like this.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:157
&gt; +template&lt;class JSClass&gt;
&gt; +inline JSClass* toJSDOMGlobalObject(JSC::VM&amp; vm, JSC::JSValue value)

Same comment about inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762095</commentid>
    <comment_count>9</comment_count>
      <attachid>429207</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-20 12:46:04 -0700</bug_when>
    <thetext>Created attachment 429207
Patch for landing

Remove extra &apos;inline&apos; specifiers and sync now reviewed WPT from upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762172</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-20 15:25:08 -0700</bug_when>
    <thetext>Committed r277830 (237976@main): &lt;https://commits.webkit.org/237976@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424272</attachid>
            <date>2021-03-25 13:08:43 -0700</date>
            <delta_ts>2021-03-27 03:52:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223758-20210325220841.patch</filename>
            <type>text/plain</type>
            <size>143280</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBACisyMDIxLTAzLTI1ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBNYWtl
IHx0aGlzfCB2YWx1ZSBjYXN0aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1dGUgYW5k
IElETE9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaDoKKworICAgICAgICAxLiBSZW1vdmVzIHByb3RvdHlwZSBjaGFpbiB0
cmF2ZXJzYWwgZnJvbSB0b0pTRE9NV2luZG93KCksIHdoaWNoIGZpeGVzCisgICAgICAgICAgIGBP
YmplY3QuY3JlYXRlKHdpbmRvdykubG9jYXRpb25gIHRvIHRocm93IGFzIHBlciBzcGVjIFsxXSwg
YWxpZ25pbmcgV2ViS2l0CisgICAgICAgICAgIHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAg
ICAgIDIuIE1lcmdlcyB0b0pTRE9NV2luZG93KCkgYW5kIGZyaWVuZHMgaW50byB0b0pTRE9NR2xv
YmFsT2JqZWN0PEpTQ2xhc3M+IHRoYXQKKyAgICAgICAgICAgaGFuZGxlcyBpbmhlcml0YW5jZSBh
bmQgdW53cmFwcyBKU1Byb3h5LiBUaGlzIGZpeGVzIGBnbG9iYWxUaGlzLnJlZ2lzdGVyUGFpbnQo
Li4uKWAKKyAgICAgICAgICAgaW5zaWRlIGEgd29ya2xldCBub3QgdG8gdGhyb3cuCisKKyAgICAg
ICAgMy4gRXh0cmFjdHMgY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPiB0aGF0IHVzZXMgY29tcGlsZS10
aW1lIGluaGVyaXRhbmNlIGNoZWNrCisgICAgICAgICAgIHRvIHByb3ZpZGUgaW1wbGljaXQgfHRo
aXN8IHZhbHVlIGZvciBET00gZ2xvYmFsIG9iamVjdHMsIHdoaWNoIGZpeGVzIGF0dHJpYnV0ZQor
ICAgICAgICAgICBnZXR0ZXIgLyBzZXR0ZXIsIGNhbGxlZCBvbiBhbiBlbnZpcm9ubWVudCByZWNv
cmQsIG5vdCB0byB0aHJvdyBhcyBwZXIgc3BlYyBbMl0uCisKKyAgICAgICAgNC4gUmVtb3ZlcyBb
SW1wbGljaXRUaGlzXSBhbmQgW0N1c3RvbVByb3h5VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0cmli
dXRlcyBiZWNhdXNlCisgICAgICAgICAgIGFsbCBET00gZ2xvYmFsIG9iamVjdHMgYXJlIHdyYXBw
ZWQgaW4gYSBKU1Byb3h5IGFuZCByZXF1aXJlIHNwZWNpYWwgY2FzdGluZy4KKworICAgICAgICAg
ICBbSW1wbGljaXRUaGlzXSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBzcGVjIFszXSBhIHdoaWxlIGFn
bywgYW5kIGl0IHdhcyB0cmlja3kgbm90CisgICAgICAgICAgIHRvIG1pc3MgW0N1c3RvbVByb3h5
VG9KU09iamVjdF0gd2hlbiBhZGRpbmcgYSBuZXcgRE9NIGdsb2JhbCBvYmplY3QuCisKKyAgICAg
ICAgNS4gUmVwbGFjZXMgdG9UaGlzKCkgd2l0aCBlbnN1cmVUaGlzVmFsdWUoKSB0byBhdm9pZCBu
b24taW5saW5hYmxlIG1ldGhvZCB0YWJsZSBjYWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJl
ZHVjZXMgV2ViQ29yZSAtLXJlbGVhc2UgYmluYXJ5IHNpemUgYnkgMC4zJSAoMjQ4IEtCKS4KKwor
ICAgICAgICBbMV0gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0
ZS1nZXR0ZXIgKHN0ZXAgMS4xLjIuMykKKyAgICAgICAgWzJdIGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtZXZhbHVhdGVjYWxsIChzdGVwIDEuYi5paWkpCisgICAgICAgIFszXSBodHRwczov
L2dpdGh1Yi5jb20vaGV5Y2FtL3dlYmlkbC9wdWxsLzE1NQorCisgICAgICAgIFRlc3RzOiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xv
YmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5qcworICAgICAgICAgICAgICAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRk
ZWQtb3BlbmVyLXJlbW92ZS1mcmFtZS5odG1sCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmli
dXRlOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmVuc3VyZVRoaXNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb246OmNh
bGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTo6Y2Fs
bCk6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlOjpjYWxs
UmV0dXJuaW5nT3duUHJvbWlzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUik6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZERvY3VtZW50V3JhcHBlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2
ZW50VGFyZ2V0Q2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KU1JlbW90ZURPTVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
SlNXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b0pTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTV29ya2xldEdsb2Jh
bFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKFNob3VsZEdlbmVyYXRlVG9KU0RlY2xhcmF0aW9uKToKKyAgICAgICAgKElz
QWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvUmVtb3RlRE9NV2luZG93LmlkbDoKKyAg
ICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGw6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmlkbDoKKwogMjAyMS0wMy0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZHJlc3Mgc29tZSBhbGlnbm1lbnQgaXNzdWVzIGZvdW5kIGJ5IFVCU2Fu
IGluIGNvbnRlbnRleHRlbnNpb25zIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNp
b24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uaAogICAgIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2Vj
dXJpdHkuaAotICAgIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaAor
ICAgIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNWYWx1ZS5oCiAgICAgYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgKICAgICBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaAogICAgIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHJl
dmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAg
ICAgRXhwb3NlZD1BdWRpb1dvcmtsZXQsCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAg
IEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11
dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90
aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9KFdvcmtsZXQsQXVkaW9Xb3JrbGV0KSwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3MCw3ICsyMzcwLDYgQEAK
IAkJN0M4MTM5QTYxRUQ2Mjg2QTAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlBMzFFRDYyODFEMDBD
RTI2RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyogSlNET01PcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODEzOUE0MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDODEzOUE4MUVENjI4NzQwMENF
MjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAv
KiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTggLyog
SlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4
NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi87IH07CiAJCTdDOEUzNEFEMUU0
QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOEUzNDkyMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RP
TUNvbnZlcnRBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QzhFMzRBRTFFNEEzM0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0OTMxRTRB
MzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjYzMCw2ICsyNjI5LDcgQEAKIAkJODQxOUQy
QTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTYxMjBEOTJEMDAw
MTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oICovOyB9OwogCQk4NDE5RDJBRDEy
MEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MTlEMkFCMTIwRDkyRkMwMDE0MUY4
RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oICovOyB9OwogCQk4NDE5RDJCQTEyMEUwQzc2
MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MTlEMkI4MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQ
YXRoU3RyaW5nQnVpbGRlci5oICovOyB9OworCQk4NDFDNDQxNjI2MEMzOEZEMDBGRjY2NzMgLyog
SlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDFDNDQxNDI2MEMzOEJBMDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQy
MjQxODQxMDdFNzdGNDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxODIxMDdFNzdG
NDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oICovOyB9OwogCQk4NDIyNDE5
NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxOTExMDdFNzhBNzAwNzY2
QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCAqLzsgfTsKIAkJODQzMDBCRDYxMjBDOUFB
QzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ1MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQ
YXRoU3RyaW5nU291cmNlLmggKi87IH07CkBAIC0xMDY0Myw3ICsxMDY0Myw2IEBACiAJCTdDODEz
OUEzMUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTUF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUF0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzgxMzlBNDFFRDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01PcGVyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4MTM5QTUxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3Bl
cmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01DYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgzREU4
NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGVIYXNo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGVIYXNoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTE4Nyw2ICsxMTE4Niw3IEBACiAJCTg0MTlEMkFCMTIwRDkyRkMw
MDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NDE5RDJCNzEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1
aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFN0
cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDE5RDJCODEy
MEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODQxQzQ0MTQyNjBDMzhCQTAwRkY2NjczIC8qIEpTRE9NQ2FzdFRoaXNW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNhc3RUaGlzVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQyMjQxODExMDdFNzdGNDAwNzY2
QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NDIyNDE4MjEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDIy
NDE5MDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTk2LDcgKzI3MTk2LDcgQEAKIAkJ
CQk0MURFRkNCMjFFNTZDMUI5MDAwRDlFNUYgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzICov
LAogCQkJCTdDNDVDOUNBMUUzRThEMkUwMEFBQjU1OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5j
cHAgKi8sCiAJCQkJN0M0NUM5QzkxRTNFOENENzAwQUFCNTU4IC8qIEpTRE9NQmluZGluZ1NlY3Vy
aXR5LmggKi8sCi0JCQkJN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3IuaCAqLywKKwkJCQk4NDFDNDQxNDI2MEMzOEJBMDBGRjY2NzMgLyogSlNE
T01DYXN0VGhpc1ZhbHVlLmggKi8sCiAJCQkJN0M0NUM5Q0MxRTNFOEYwODAwQUFCNTU4IC8qIEpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwICovLAogCQkJCTdDNDVDOUM3MUUzRThBRkYwMEFBQjU1
OCAvKiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmggKi8sCiAJCQkJRTFDMzZDQkMwRUIwODA2MjAw
NzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAqLywKQEAgLTMzMDYzLDcgKzMzMDYzLDcg
QEAKIAkJCQk3QzQ1QzlENDFFM0ZDQkRGMDBBQUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJpdHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTczMUYyQUJFNzEwMDI3MkY3OSAvKiBKU0RPTUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGN0EgLyogSlNE
T01DYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDODEzOUFBMUVENjYwNEIwMENF
MjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NDFDNDQxNjI2MEMzOEZEMDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwODQxMzQxQ0REQjE1NTAwQjA5NThDIC8qIEpTRE9N
Q29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8q
IEpTRE9NQ29udmVydEFueS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0RPTUNhc3RlZFRo
aXNFcnJvckJlaGF2aW9yLmgiCisjaW5jbHVkZSAiSlNET01DYXN0VGhpc1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNSwxNSArMzUsMTMgQEAgcHVibGljOgogICAgIHVzaW5nIFN0YXRpY1NldHRlciA9IGJvb2wo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgdXNpbmcgR2V0dGVyID0g
SlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJik7CiAgICAgdXNpbmcg
U3RhdGljR2V0dGVyID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLSAgICAK
LSAgICBzdGF0aWMgSlNDbGFzcyogY2FzdChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiAKICAgICB0ZW1wbGF0ZTxTZXR0ZXIgc2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4K
ICAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKQogICAgIHsKICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3Qo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVj
dCkpIHsKICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OlRocm93KQogICAgICAgICAgICAgICAgIHJldHVybiBKU0M6OnRocm93
Vk1ET01BdHRyaWJ1dGVTZXR0ZXJUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIEpTQ2xhc3M6OmluZm8oKSwgYXR0cmlidXRlTmFtZSk7CkBAIC02NiwxMSArNjQsMTEg
QEAgcHVibGljOgogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKIAogICAgICAgICBpZiBjb25zdGV4
cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOwor
ICAgICAgICAgICAgQVNTRVJUKGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpOwogICAgICAgICAgICAgYXV0
byogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTQ2xhc3MqPihKU0M6OkpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAoSlNDOjpKU1ZhbHVlOjplbmNvZGUoZ2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0KSkpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgICAgICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICAgICAgICAgIGlmIChV
TkxJS0VMWSghdGhpc09iamVjdCkpIHsKICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNo
b3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRyaWJ1
dGVOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2Fz
dFRoaXNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ2FzdFRoaXNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVs
IFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFlbCBQ
cnVldHQgPG1pY2hhZWxANjhrLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IgOiB1aW50OF90IHsKKyAgICBUaHJvdywKKyAg
ICBSZXR1cm5FYXJseSwKKyAgICBSZWplY3RQcm9taXNlLAorICAgIEFzc2VydCwKK307CisKK2lu
bGluZSBKU0M6OkpTVmFsdWUgZW5zdXJlVGhpc1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgaWYgKEpT
Qzo6SlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUuZ2V0T2JqZWN0KCkpIHsKKyAgICAg
ICAgaWYgKHRoaXNPYmplY3QtPmlzRW52aXJvbm1lbnQoKSAmJiAhdGhpc09iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWUoJmxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIH0KKyAgICByZXR1cm4gdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkgPyBKU0M6OkpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpIDogdGhpc1ZhbHVlOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBKU0NsYXNzPgoraW5saW5lIEpTQ2xhc3MqIGNhc3RUaGlzVmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNET01HbG9iYWxPYmpl
Y3QsIEpTQ2xhc3M+KQorICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdDxKU0NsYXNz
Pih2bSwgZW5zdXJlVGhpc1ZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNzKj4odm0s
IHRoaXNWYWx1ZSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgJKHJldmlzaW9uIDI3
NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3IuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8
c2FtQHdlYmtpdC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFlbCBQcnVldHQg
PG1pY2hhZWxANjhrLm9yZz4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNwcmFn
bWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3IgewotICAgIFRocm93LAotICAgIFJldHVybkVhcmx5LAotICAgIFJlamVjdFBy
b21pc2UsCi0gICAgQXNzZXJ0Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1Myw0ICsxNTMsMTkgQEAgV0VCQ09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QmIGNh
bGxlcgogCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgRE9NV3JhcHBlcldvcmxkJik7CiAKK3RlbXBsYXRlPGNsYXNzIEpTQ2xh
c3M+CitpbmxpbmUgSlNDbGFzcyogdG9KU0RPTUdsb2JhbE9iamVjdChKU0M6OlZNJiB2bSwgSlND
OjpKU1ZhbHVlIHZhbHVlKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNET01HbG9iYWxPYmplY3QsIEpTQ2xhc3M+KTsKKworICAgIGlmIChKU0M6OkpTT2JqZWN0KiBv
YmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKSkgeworICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0
czxKU0NsYXNzPih2bSkpCisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNDbGFzcyo+
KG9iamVjdCk7CisgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBKU0M6OlB1cmVGb3J3YXJk
aW5nUHJveHlUeXBlKQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0Ns
YXNzKj4odm0sIEpTQzo6anNDYXN0PEpTQzo6SlNQcm94eSo+KG9iamVjdCktPnRhcmdldCgpKTsK
KyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCShy
ZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIgorI2luY2x1ZGUgIkpT
RE9NQ2FzdFRoaXNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTQgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB1
c2luZyBPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSosIENsYXNzUGFyYW1ldGVyKTsKICAgICB1c2luZyBTdGF0aWNPcGVy
YXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogCi0gICAgc3RhdGljIEpTQ2xhc3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6Q2FsbEZyYW1lJik7Ci0KICAgICB0ZW1wbGF0ZTxPcGVyYXRpb24gb3BlcmF0aW9u
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxs
RnJhbWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5hbWUpCiAgICAgewogICAgICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGlj
YWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBj
YXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlz
VmFsdWUoKSk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlz
T2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBv
cGVyYXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3Bl
cmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oCShyZXZpc2lvbiAyNzUw
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmlu
Z1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBv
cGVyYXRpb25OYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2Rl
KGNhbGxQcm9taXNlRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBbJm9w
ZXJhdGlvbk5hbWVdIChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
IHsKLSAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBJRExPcGVyYXRpb248SlNDbGFzcz46
OmNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNob3Vs
ZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVqZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVycm9yKHByb21pc2UuZ2V0KCksIEpTQ2xhc3M6
OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0NsYXNzPjo6T3BlcmF0
aW9uIG9wZXJhdGlvbiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZT4KICAgICBzdGF0aWMgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBjYWxsUmV0dXJuaW5nT3duUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFy
KiBvcGVyYXRpb25OYW1lKQogICAgIHsKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IElETE9w
ZXJhdGlvbjxKU0NsYXNzPjo6Y2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwor
ICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogICAgICAgICBpZiBjb25zdGV4
cHIgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3BlcmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDI3
NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3NywyMyArMjc3LDYgQEAgSlNET01XaW5kb3cqIHRvSlNET01X
aW5kb3coRnJhbWUmIGZyYW1lLAogICAgIHJldHVybiBmcmFtZS5zY3JpcHQoKS5nbG9iYWxPYmpl
Y3Qod29ybGQpOwogfQogCi1KU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6OlZNJiB2bSwg
SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgd2hpbGUgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKLSAgICAgICAgaWYgKGNsYXNz
SW5mbyA9PSBKU0RPTVdpbmRvdzo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgICAgIGlmIChjbGFzc0luZm8gPT0gSlNXaW5kb3dQ
cm94eTo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNET01XaW5k
b3cqPih2bSwganNDYXN0PEpTV2luZG93UHJveHkqPihvYmplY3QpLT53aW5kb3coKSk7Ci0gICAg
ICAgIHZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIH0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQogRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewog
ICAgIHJldHVybiBhc0pTRE9NV2luZG93KCZjYWxsZXJHbG9iYWxPYmplY3QobGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKSktPndyYXBwZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDcgKzExMyw2IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFs
T2IKIC8vIFRoZSBmb2xsb3dpbmcgcmV0dXJuIGEgSlNET01XaW5kb3cgb3IgbnVsbHB0ci4KIEpT
RE9NV2luZG93KiB0b0pTRE9NV2luZG93KEZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJik7CiBpbmxp
bmUgSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29y
bGQmIHdvcmxkKSB7IHJldHVybiBmcmFtZSA/IHRvSlNET01XaW5kb3coKmZyYW1lLCB3b3JsZCkg
OiBudWxscHRyOyB9Ci1XRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gRE9NV2luZG93IGFzc29jaWF0ZWQgd2l0aCBn
bG9iYWwgb2JqZWN0IG9mIHRoZSAibW9zdC1yZWNlbnRseS1lbnRlcmVkIGF1dGhvciBmdW5jdGlv
biBvciBzY3JpcHQKIC8vIG9uIHRoZSBzdGFjaywgb3IgdGhlIGF1dGhvciBmdW5jdGlvbiBvciBz
Y3JpcHQgdGhhdCBvcmlnaW5hbGx5IHNjaGVkdWxlZCB0aGUgY3VycmVudGx5LXJ1bm5pbmcgY2Fs
bGJhY2suIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3
IEBAIERFRklORV9WSVNJVF9BRERJVElPTkFMX0NISUxEUkVOKEpTRE9NV2kKIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd193ZWJraXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNET01XaW5k
b3cqIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNET01XaW5kb3cqIGNhc3RlZFRoaXMgPSB0b0pTRE9NR2xvYmFsT2JqZWN0
PEpTRE9NV2luZG93Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9i
YWxPYmplY3QsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
KGxleGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKQEAgLTYwNiwxMSArNjA2LDYgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NVwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RGF0YWJhc2U+Pj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShpbXBsLCBXVEZN
b3ZlKG5hbWUpLCBXVEZNb3ZlKHZlcnNpb24pLCBXVEZNb3ZlKGRpc3BsYXlOYW1lKSwgV1RGTW92
ZShlc3RpbWF0ZWRTaXplKSwgV1RGTW92ZShjcmVhdGlvbkNhbGxiYWNrKSkpKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZy
YW1lKQotewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0o
KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKLX0KLQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2UsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhbGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29w
ZW5EYXRhYmFzZUJvZHk+KCpnbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvcGVuRGF0YWJhc2Ui
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBKU09i
amVjdCogY2FjaGVkRG9jdW1lbnRXcmFwcGVyKEpTR2xvYmFsCiAgICAgaWYgKCF3aW5kb3cpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogZG9jdW1lbnRHbG9iYWxPYmplY3Qg
PSB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgdG9KUygmbGV4aWNhbEds
b2JhbE9iamVjdCwgKndpbmRvdykpOworICAgIGF1dG8qIGRvY3VtZW50R2xvYmFsT2JqZWN0ID0g
dG9KU0RPTUdsb2JhbE9iamVjdDxKU0RPTVdpbmRvdz4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAqd2luZG93KSk7CiAgICAgaWYgKCFkb2N1bWVu
dEdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCShyZXZp
c2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzCiB7CiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGpz
RHluYW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHZtLCB0aGlzVmFsdWUpKQogICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0
YXJnZXQpOwotICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZtLCB0aGlzVmFs
dWUpKQorICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NR2xvYmFsT2JqZWN0PEpTRE9NV2lu
ZG93Pih2bSwgdGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRh
cmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKLSAgICBpZiAoYXV0byog
c2NvcGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCisgICAgaWYgKGF1
dG8qIHNjb3BlID0gdG9KU0RPTUdsb2JhbE9iamVjdDxKU1dvcmtlckdsb2JhbFNjb3BlPih2bSwg
dGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBw
ZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5oCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
ICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xv
cHB5KCkpKTsKKyAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0s
IGVuc3VyZVRoaXNWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
IkV2ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24g
Mjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93QmFzZS5oIgogCi0jaW5jbHVkZSAiSlNS
ZW1vdGVET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CkBAIC03MSwyMSArNzAsNCBAQCBSdW50aW1lRmxhZ3MgSlNSZW1vdGVET01X
aW5kb3dCYXNlOjpqYXZhCiAgICAgcmV0dXJuIFJ1bnRpbWVGbGFncyB7IH07CiB9CiAKLUpTUmVt
b3RlRE9NV2luZG93KiB0b0pTUmVtb3RlRE9NV2luZG93KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZh
bHVlKQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICB3aGlsZSAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwotICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpT
UmVtb3RlRE9NV2luZG93OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTUmVt
b3RlRE9NV2luZG93Kj4ob2JqZWN0KTsKLSAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1dpbmRv
d1Byb3h5OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1JlbW90
ZURPTVdpbmRvdyo+KHZtLCBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvdygp
KTsKLSAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jh
c2UuaAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZW1vdGVET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNXaW5kb3dQcm94eTsKLWNsYXNzIEpTUmVtb3Rl
RE9NV2luZG93OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBKU1JlbW90ZURPTVdpbmRvd0Jhc2Ug
OiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogcHVibGljOgpAQCAtNTgsNiArNTcsNCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxSZW1vdGVET01XaW5kb3c+IG1fd3JhcHBlZDsKIH07CiAKLVdF
QkNPUkVfRVhQT1JUIEpTUmVtb3RlRE9NV2luZG93KiB0b0pTUmVtb3RlRE9NV2luZG93KEpTQzo6
Vk0mLCBKU0M6OkpTVmFsdWUpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDcg
QEAKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRh
c2suaCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNNaWNyb3Rhc2tDYWxsYmFjay5o
IgotI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KQEAgLTQzLDExICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWljcm90YXNrLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAKLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0jaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaCIKLSNlbmRpZgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKQEAgLTE2Niw0OSArMTU5LDQgQEAgSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0Kiwg
V29ya2VyR2xvYgogICAgIHJldHVybiAmY29udGV4dFdyYXBwZXItPnByb3h5KCk7CiB9CiAKLUpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9
IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2Fz
dDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUpKTsKLSAgICBp
ZiAoY2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+
KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
SlNXb3JrZXJHbG9iYWxTY29wZSogdG9KU1dvcmtlckdsb2JhbFNjb3BlKFZNJiB2bSwgSlNWYWx1
ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUp
LT5jbGFzc0luZm8odm0pOwotICAgIGlmIChjbGFzc0luZm8gPT0gSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNDYXN0PEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwotCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSo+KGFzT2JqZWN0KHZhbHVlKSk7Ci0jZW5kaWYKLQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNQ
cm94eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtlckdsb2Jh
bFNjb3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkp
OwotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci1KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogdG9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9
IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwotICAgIGlmIChj
bGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2Jq
ZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZgot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHJldmlzaW9uIDI3NTA1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDIwICszMyw4IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmgiCiAjZW5kaWYKIAotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBKU1Byb3h5
OwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU7Ci1jbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgV29ya2VyR2xvYmFs
U2NvcGU7Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1jbGFzcyBKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTsKLSNlbmRpZgotCiBjbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSA6
IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
RE9NR2xvYmFsT2JqZWN0OwpAQCAtOTIsMTAgKzgwLDQgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYgogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCosIFdvcmtlckdsb2JhbFNjb3BlJik7CiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgV29ya2VyR2xvYmFsU2NvcGUqIHNj
b3BlKSB7IHJldHVybiBzY29wZSA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgKnNjb3BlKSA6
IEpTQzo6anNOdWxsKCk7IH0KIAotSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogdG9KU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotSlNXb3Jr
ZXJHbG9iYWxTY29wZSogdG9KU1dvcmtlckdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFs
dWUpOwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUqIHRvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1
ZSk7Ci0jZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAko
cmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgotI2luY2x1ZGUgIkpTV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KQEAgLTE0NSwxNiArMTQ0LDQgQEAgSlNWYWx1ZSB0b0pTKEpT
R2xvYmFsT2JqZWN0KiwgV29ya2xldEdsbwogICAgIHJldHVybiAmY29udGV4dFdyYXBwZXItPnBy
b3h5KCk7CiB9CiAKLUpTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3Bl
KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZh
bHVlKS0+Y2xhc3NJbmZvKHZtKTsKLQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5m
bygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZSo+
KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLQotICAg
IHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UuaAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKIGNs
YXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
IDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsKQEAgLTgwLDYgKzc5LDQgQEAgaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYgogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOwogaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFdvcmtsZXRH
bG9iYWxTY29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQogCi1KU1dvcmtsZXRHbG9iYWxTY29wZSog
dG9KU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBzdWIgU2hvdWxkR2VuZXJhdGVUb0pTRGVjbGFyYXRpb24K
IAogICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTdXBw
cmVzc1RvSlNPYmplY3R9KTsKICAgICByZXR1cm4gMCBpZiBub3QgTmVlZHNJbXBsZW1lbnRhdGlv
bkNsYXNzKCRpbnRlcmZhY2UpOwotICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH07CisgICAgcmV0dXJuIDAgaWYgSXNE
T01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAgICAgcmV0dXJuIDEgaWYgKCEkaGFzUGFyZW50
IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pTR2VuZXJhdGVUb0pTT2JqZWN0
fSBvciAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Ub0pTT2JqZWN0fSk7
CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+cGFyZW50VHlwZSAmJiAkaW50ZXJmYWNlLT5w
YXJlbnRUeXBlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CiAgICAgcmV0dXJuIDEgaWYgQHskaW50
ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9ID4gMCAmJiAhSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVy
ZmFjZSk7CkBAIC0yMDQyLDggKzIwNDIsNyBAQCBzdWIgSXNBY2NlbGVyYXRlZERPTUF0dHJpYnV0
ZQogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZh
dGVJZGVudGlmaWVyfSBhbmQgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpOwogCiAgICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBzcGVjaWFsIGxvZ2lj
IGZvciBjYXN0aW5nIHdlIGNhbm5vdCBob2lzdCB0eXBlIGNoZWNrIHRvIEpTQy4KLSAgICByZXR1
cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsaWNpdFRoaXN9Owot
ICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVBy
b3h5VG9KU09iamVjdH07CisgICAgcmV0dXJuIDAgaWYgSXNET01HbG9iYWxPYmplY3QoJGludGVy
ZmFjZSk7CiAKICAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICByZXR1
cm4gMCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkVG9NYXBMaWtl
fTsKQEAgLTQ4MjcsMzkgKzQ4MjYsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBHZW5lcmF0ZUdldENhbGxEYXRhKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFz
c05hbWUpOwogICAgIH0KICAgICAKLSAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7Ci0gICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUF0dHJpYnV0ZS5oIik7Ci0KLSAgICAgICAgbXkg
JGNhc3RpbmdGdW5jdGlvbiA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bVByb3h5VG9KU09iamVjdH0gPyAidG8ke2NsYXNzTmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZv
clRoaXNPYmplY3QoJGludGVyZmFjZSk7Ci0gICAgICAgICMgRklYTUU6IFJlbW92ZSBJbXBsaWNp
dFRoaXMga2V5d29yZCBhcyBpdCBpcyBubyBsb25nZXIgZGVmaW5lZCBieSBXZWJJREwgc3BlYyBh
bmQgaXMgb25seSB1c2VkIGluIERPTVdpbmRvdy4KLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxpY2l0VGhpc30pIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFzc05hbWV9KiBJRExBdHRyaWJ1dGU8
JHtjbGFzc05hbWV9Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWUoJmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnNsb3BweSgpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29kZWRUaGlzVmFsdWUpO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xh
c3NOYW1lfSogSURMQXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSlcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmICgkbnVtT3BlcmF0aW9ucyA+IDAgJiYgJGludGVyZmFjZU5hbWUgbmUgIkV2ZW50VGFy
Z2V0IikgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01PcGVyYXRpb24uaCIpOwot
Ci0gICAgICAgICMgRklYTUU6IE1ha2UgY29uc2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6Y2FzdCBh
bmQgSURMT3BlcmF0aW9uPD46OmNhc3QgaW4gY2FzZSBvZiBDdXN0b21Qcm94eVRvSlNPYmplY3Qu
Ci0gICAgICAgIG15ICRjYXN0aW5nRnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENh
c3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICBteSAkdGhpc1Zh
bHVlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2Jq
ZWN0fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c2xvcHB5KCkpIiA6ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkiOwotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURM
T3BlcmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAk
Y2FzdGluZ0Z1bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAkdGhpc1Zh
bHVlKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfQor
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUF0dHJpYnV0ZS5oIikgaWYgJG51bUF0dHJpYnV0
ZXMgPiAwOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTU9wZXJhdGlvbi5oIikgaWYgJG51
bU9wZXJhdGlvbnMgPiAwICYmICRpbnRlcmZhY2VOYW1lIG5lICJFdmVudFRhcmdldCI7CiAKICAg
ICBpZiAoTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIG15
ICRjb25zdHJ1Y3RvckdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3Rv
ciI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsx
MjUsNiBAQAogICAgICAgICAiQ3VzdG9tUHJldmVudEV4dGVuc2lvbnMiOiB7CiAgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAi
Q3VzdG9tUHJveHlUb0pTT2JqZWN0IjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6
IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAgICAgIkN1c3RvbVB1c2hFdmVudEhhbmRs
ZXJTY29wZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJd
CiAgICAgICAgIH0sCkBAIC0yNTIsOSArMjQ5LDYgQEAKICAgICAgICAgIkltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZh
Y2UiXQogICAgICAgICB9LAotICAgICAgICAiSW1wbGljaXRUaGlzIjogewotICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAgICAgIklu
dGVyZmFjZU5hbWUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZh
Y2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCShy
ZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTEgKzIwMSw2IEBAIEpT
VmFsdWUgSlNET01XaW5kb3c6OmdldENvbnN0cnVjdG9yKFZNJiAKICAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNET01XaW5kb3dET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgSlNET01XaW5kb3cqIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpAQCAtMzc5LDQ0ICszNzQsNiBAQCB2b2lkIEpTRE9NV2luZG93OjphbmFseXplSGVhcChKU0Nl
bGwqIGNlCiAgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwogfQogCi0jaWYg
RU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19p
ZGVudGlmaWVyKCI/P183RE9NV2luZG93QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1l
eHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU5RE9NV2luZG93RVtdOyB9Ci0j
ZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPERPTVdpbmRv
dz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0
IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkp
OwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBf
X2lkZW50aWZpZXIoIj8/XzdET01XaW5kb3dAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZv
aWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlOURPTVdpbmRvd0VbMl07
Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgRE9NV2luZG93IGRvZXMgbm90IGhhdmUg
YSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8RE9NV2luZG93Pjo6dmFsdWUsICJET01XaW5k
b3cgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0
aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBET01X
aW5kb3cgaGFzIHN1YmNsYXNzZXMuIElmIERPTVdpbmRvdyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdl
dCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgRE9NV2luZG93
IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPERPTVdp
bmRvdz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRE9NV2luZG93JiBpbXBsKQotewotICAgIHJldHVybiB3cmFw
KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KIERPTVdpbmRv
dyogSlNET01XaW5kb3c6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+
KHZtLCB2YWx1ZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDEwICs2OSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTQzo6Vk0mLCBKU1dpbmRvd1Byb3h5Kik7CiB9OwogCi1KU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBET01XaW5kb3cmKTsKLWlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01XaW5kb3cqIGltcGwp
IHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
KmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPERPTVdpbmRvdz4m
Jik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmUHRyPERPTVdpbmRvdz4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3Jl
YXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51
bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CiAKIGNsYXNzIEpTRE9NV2luZG93UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzUw
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYg
QEAgSlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpnZQogICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIElE
TEF0dHJpYnV0ZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTEgKzIxNCw2IEBAIHZvaWQgSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3c6OmRlc3Ryb3kKICAgICB0aGlzT2JqZWN0LT5KU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdzo6fkpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KCk7CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KiBJRExPcGVyYXRpb248SlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJl
dmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDEx
ICsxMjMsNiBAQCBKU1ZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvCiAgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSog
SURMQXR0cmlidXRlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYgQEAgSlNWYWx1ZSBKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTo6Z2V0QwogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogSURMQXR0cmlidXRlPEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MywxNiArMTgzLDYgQEAgdm9pZCBKU1Rlc3RDRVJlYWN0
aW9uczo6ZGVzdHJveShKU0M6OkpTQwogICAgIHRoaXNPYmplY3QtPkpTVGVzdENFUmVhY3Rpb25z
Ojp+SlNUZXN0Q0VSZWFjdGlvbnMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VS
ZWFjdGlvbnMqIElETEF0dHJpYnV0ZTxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0K
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zKiBJRExPcGVyYXRpb248SlNUZXN0
Q0VSZWFjdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
RVJlYWN0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFj
dGlvbnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDE2ICsxNjQsNiBAQCB2b2lkIEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmRlc3RyCiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllcjo6fkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIoKTsKIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogSURMQXR0
cmlidXRlPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIElE
TE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQot
CiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3Bw
CShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1
Niw2IEBAIHZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmRlc3Ryb3koSlNDOjpKU0MKICAgICB0aGlz
T2JqZWN0LT5KU1Rlc3RDU1NQcm9wZXJ0eTo6fkpTVGVzdENTU1Byb3BlcnR5KCk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdENTU1Byb3BlcnR5KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NT
UHJvcGVydHk+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Q1NTUHJvcGVydHkqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA1LDE2ICsyMDUsNiBAQCB2b2lkIEpTVGVzdENhbGxUcmFjZXI6OmRlc3Ryb3koSlNDOjpKU0Nl
CiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q2FsbFRyYWNlcjo6fkpTVGVzdENhbGxUcmFjZXIoKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q2FsbFRyYWNlciogSURMQXR0cmlidXRlPEpT
VGVzdENhbGxUcmFjZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0Q2FsbFRyYWNlcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENh
bGxUcmFjZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2FsbFRyYWNlcio+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNp
b24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODIsMTYgKzQ4
Miw2IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6ZGVzdHJveSgKICAgICB0aGlz
T2JqZWN0LT5KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjp+SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyogSURM
T3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2OCwxMSArMjY4LDYgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlOjpkZXN0cgogICAgIHRoaXNPYmplY3QtPkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGU6On5KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUqIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MDUsMTYgKzYwNSw2IEBAIEpTVmFsdWUgSlNUZXN0RE9NSklU
OjpnZXRDb25zdHJ1Y3RvcihWTSYKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
RE9NSklURE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCog
SURMQXR0cmlidXRlPEpTVGVzdERPTUpJVD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RET01KSVQqIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzVGVzdERPTUpJVENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
IHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T04uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDksMTYgKzI0OSw2IEBAIHZvaWQgSlNUZXN0RGVmYXVsdFRv
SlNPTjo6ZGVzdHJveShKU0M6OkoKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3REZWZhdWx0VG9KU09O
Ojp+SlNUZXN0RGVmYXVsdFRvSlNPTigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RE
ZWZhdWx0VG9KU09OKiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTj46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09OKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTiogSURMT3BlcmF0
aW9uPEpTVGVzdERlZmF1bHRUb0pTT04+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3REZWZhdWx0VG9KU09OKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
LmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MiwxNiArMTgyLDYgQEAgdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZQogICAgIHRoaXNPYmplY3QtPkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZDo6fkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCgpOwogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQq
IElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpjYXN0
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0LmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTcwLDE2ICsxNzAsNiBAQCBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0OjpnZXRDCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0KiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdCogSURMT3BlcmF0aW9uPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1l
LnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAy
NzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MywxNiAr
MTczLDYgQEAgSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOgogICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwqIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsKiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
b21haW5TZWN1cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjc1MDUx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFp
blNlY3VyaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDE2ICsxODIsNiBAQCB2b2lkIEpT
VGVzdERvbWFpblNlY3VyaXR5OjpkZXN0cm95KEpTQzo6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0
RG9tYWluU2VjdXJpdHk6On5KU1Rlc3REb21haW5TZWN1cml0eSgpOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3REb21haW5TZWN1cml0eSogSURMQXR0cmlidXRlPEpTVGVzdERvbWFpblNl
Y3VyaXR5Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERv
bWFpblNlY3VyaXR5Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RG9tYWlu
U2VjdXJpdHkqIElETE9wZXJhdGlvbjxKU1Rlc3REb21haW5TZWN1cml0eT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERvbWFpblNlY3VyaXR5Kj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAko
cmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsMTYg
KzI3Niw2IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6ZGVzdHJveShKU0MKICAgICB0
aGlzT2JqZWN0LT5KU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjp+SlNUZXN0RW5hYmxlZEJ5U2V0dGlu
ZygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBJRExB
dHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyogSURMT3BlcmF0aW9uPEpTVGVz
dEVuYWJsZWRCeVNldHRpbmc+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9y
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxMSArMTU0LDYgQEAgdm9pZCBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dDo6ZGVzdHJveShKUwogICAgIHRoaXNPYmplY3QtPkpTVGVzdEVu
YWJsZWRGb3JDb250ZXh0Ojp+SlNUZXN0RW5hYmxlZEZvckNvbnRleHQoKTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQqIElETEF0dHJpYnV0ZTxKU1Rlc3RF
bmFibGVkRm9yQ29udGV4dD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjc1
MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsMTEgKzI1OCw2IEBAIEpT
VmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3QKICAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBJRExBdHRyaWJ1dGU8SlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDExICsyMjEsNiBAQCB2b2lkIEpTVGVzdEV2ZW50VGFy
Z2V0OjpnZXRPd25Qcm9wZXJ0eU5hCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRUYXJnZXQqIElETE9wZXJhdGlvbjxKU1Rlc3RF
dmVudFRhcmdldD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50VGFyZ2V0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50
aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFdmVudFRh
cmdldENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEgKzE1
Myw2IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWwKICAgICB0aGlz
T2JqZWN0LT5KU1Rlc3RFeGNlcHRpb246On5KU1Rlc3RFeGNlcHRpb24oKTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBJRExBdHRyaWJ1dGU8SlNUZXN0RXhjZXB0aW9u
Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlv
bio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFeGNlcHRpb25D
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYzLDExICsxNjMsNiBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGU6OmRlc3Ryb3koCiAgICAgdGhpc09iamVjdC0+SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZTo6fkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSURMQXR0cmlidXRlPEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMSw3ICs1MTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJyZWd1bGFyQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9y
ZWd1bGFyQXR0cmlidXRlKSB9IH0sCisgICAgeyAicmVndWxhckF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxP
YmplY3RfcmVndWxhckF0dHJpYnV0ZSkgfSB9LAogICAgIHsgInB1YmxpY0FuZFByaXZhdGVBdHRy
aWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3B1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUp
IH0gfSwKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIHsgInB1YmxpY0FuZFByaXZhdGVD
b25kaXRpb25hbEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X3B1
YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9w
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpIH0gfSwKQEAgLTcxMCwxNiArNzEw
LDYgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDOjpKUwogICAgIHRoaXNP
YmplY3QtPkpTVGVzdEdsb2JhbE9iamVjdDo6fkpTVGVzdEdsb2JhbE9iamVjdCgpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0R2xvYmFsT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0R2xv
YmFsT2JqZWN0KiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKQEAgLTc0MCw3ICs3MzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmpl
Y3RfcmVndWxhckF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkK
IHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rl
c3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRl
TmFtZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8
anNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVHZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE4MjksNDQgKzE4MTksNiBAQCB2b2lkIEpTVGVzdEdsb2Jh
bE9iamVjdE93bmVyOjpmaW5hbGl6ZShKCiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rl
c3RHbG9iYWxPYmplY3QtPndyYXBwZWQoKSwganNUZXN0R2xvYmFsT2JqZWN0KTsKIH0KIAotI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9f
aWRlbnRpZmllcigiPz9fN1Rlc3RHbG9iYWxPYmplY3RAV2ViQ29yZUBANkJAIilbXSkoKTsgfQot
I2Vsc2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE2VGVzdEdsb2Jh
bE9iamVjdEVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0R2xvYmFsT2JqZWN0PiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZU
YWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4
cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RHbG9iYWxPYmplY3RA
V2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
ICZfWlRWTjdXZWJDb3JlMTZUZXN0R2xvYmFsT2JqZWN0RVsyXTsKLSNlbmRpZgotCi0gICAgLy8g
SWYgdGhpcyBmYWlscyBUZXN0R2xvYmFsT2JqZWN0IGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNv
IHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfcG9seW1vcnBoaWM8VGVzdEdsb2JhbE9iamVjdD46OnZhbHVlLCAiVGVzdEdsb2JhbE9i
amVjdCBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3Nl
cnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFRl
c3RHbG9iYWxPYmplY3QgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RHbG9iYWxPYmplY3QgaGFzIHN1
YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSBy
ZXF1aXJlIFRlc3RHbG9iYWxPYmplY3QgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5p
bmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFs
VlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdEdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEds
b2JhbE9iamVjdCYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiBUZXN0R2xvYmFsT2JqZWN0KiBKU1Rlc3RHbG9i
YWxPYmplY3Q6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewog
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3Qq
Pih2bSwgdmFsdWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjc1
MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsNiBAQCBpbmxpbmUgdm9p
ZCogd3JhcHBlcktleShUZXN0R2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVj
dDsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgVGVzdEdsb2JhbE9iamVjdCYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHbG9iYWxPYmplY3QqIGltcGwpIHsgcmV0dXJuIGltcGwg
PyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpq
c051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RHbG9iYWxPYmplY3Q+JiYpOwotaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0
cjxUZXN0R2xvYmFsT2JqZWN0PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVh
dGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVs
bCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KIAogY2xhc3MgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90
eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2MSwxMSArMjYxLDYgQEAgYm9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI6OgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwg
c2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDgsMTYgKzUwOCw2IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpk
ZXN0cm95KEpTQzo6SlNDZWwKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RJbnRlcmZhY2U6On5KU1Rl
c3RJbnRlcmZhY2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdEludGVyZmFjZSogSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhc3Qo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1l
KQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MywxMSArMTUzLDYgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZTo6ZAogICAgIHRoaXNPYmplY3QtPkpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlOjp+SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUoKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqIElETEF0
dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjYsMTEgKzE2Niw2IEBAIHZvaWQgSlNUZXN0SXRlcmFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwK
ICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RJdGVyYWJsZTo6fkpTVGVzdEl0ZXJhYmxlKCk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEl0ZXJhYmxlKiBJRExPcGVyYXRpb248SlNUZXN0SXRl
cmFibGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJs
ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SXRlcmFibGVDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYxLDE2ICsxNjEsNiBAQCB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yOjpkZXN0cm95CiAgICAgdGhpc09iamVjdC0+SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6
On5KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogSURMQXR0cmlidXRlPEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxG
cmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAy
NzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTYgKzE1
Niw2IEBAIHZvaWQgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q6OmRlc3QKICAgICB0aGlz
T2JqZWN0LT5KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdDo6fkpTVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0KiBJRExBdHRyaWJ1dGU8SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCogSURMT3BlcmF0aW9uPEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0X3JlYWRvbmx5U3RyaW5nQXR0cmlidXRlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDgsMTEgKzIwOCw2IEBAIHZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Z2V0T3cKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExPcGVyYXRpb248SlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc5LDE2ICsxNzksNiBAQCB2b2lkIEpTVGVzdE1hcExpa2U6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqCiAgICAgdGhpc09iamVjdC0+SlNUZXN0TWFwTGlrZTo6fkpTVGVz
dE1hcExpa2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWFwTGlrZSogSURMQXR0
cmlidXRlPEpTVGVzdE1hcExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TWFwTGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dE1hcExpa2UqIElETE9wZXJhdGlvbjxKU1Rlc3RNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
IHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODIsMTYgKzE4Miw2IEBAIHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW8KICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zOjp+SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucygp
OwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zKiBJRExBdHRyaWJ1dGU8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogSURMT3BlcmF0aW9uPEpTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19
Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzMSwxMSArMzMxLDYgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
LX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCwx
MSArMjI4LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZAogICAg
IHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9i
YWxPYmplY3QsIGluZGV4KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDUsMTEgKzIwNSw2IEBAIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllcjo6Z2UKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDExICsyODQsNiBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXI6OmRlCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJv
cGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTEgKzMxMSw2IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQ
cm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciogSURMT3BlcmF0aW9uPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZp
c2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMSwxMSArMzMxLDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQQogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRv
ciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
LX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDE2ICszMDks
NiBAQCBzdGF0aWMgYm9vbCBpc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOCiAgICAgcmV0dXJu
IEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
LX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
IHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODYsMTYgKzI4Niw2IEBAIHN0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0eU4KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBj
YWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
OwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVj
dG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjc1MDUxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTksMTYgKzI1OSw2IEBAIEpTVmFsdWUgSlNUZXN0Tm9kZTo6
Z2V0Q29uc3RydWN0b3IoVk0mIHYKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
Tm9kZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb2RlKiBJRExB
dHRyaWJ1dGU8SlNUZXN0Tm9kZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb2RlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9k
ZSogSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3ROb2RlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNp
b24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MjIsMTYgKzI1MjIsNiBAQCB2b2lkIEpT
VGVzdE9iajo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iCiAgICAgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T2JqKiBJRExBdHRyaWJ1dGU8SlNU
ZXN0T2JqPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbC5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NiwxMSArMTc2LDYgQEAgdm9pZCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6
ZGVzdHJveQogICAgIHRoaXNPYmplY3QtPkpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjp+SlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWwqIElETE9wZXJhdGlvbjxKU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFt
ZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHJldmlzaW9uIDI3NTA1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsMTEgKzI1NCw2IEBAIEpT
VmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXQKICAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogSURMQXR0cmli
dXRlPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqPihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQot
CiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBM
aWtlLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3MywxNiArMTczLDYgQEAgdm9pZCBKU1Rlc3RSZWFkT25seU1hcExpa2U6OmRlc3Ryb3koSlND
OgogICAgIHRoaXNPYmplY3QtPkpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6fkpTVGVzdFJlYWRPbmx5
TWFwTGlrZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RSZWFkT25seU1hcExpa2Uq
IElETEF0dHJpYnV0ZTxKU1Rlc3RSZWFkT25seU1hcExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlNYXBMaWtlKj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKiBJRExPcGVyYXRpb248SlNU
ZXN0UmVhZE9ubHlNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0UmVhZE9ubHlNYXBMaWtlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExp
a2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDE2ICsxNzEsNiBAQCB2b2lkIEpTVGVzdFJlYWRP
bmx5U2V0TGlrZTo6ZGVzdHJveShKU0M6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0UmVhZE9ubHlT
ZXRMaWtlOjp+SlNUZXN0UmVhZE9ubHlTZXRMaWtlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdFJlYWRPbmx5U2V0TGlrZSogSURMQXR0cmlidXRlPEpTVGVzdFJlYWRPbmx5U2V0TGlr
ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25s
eVNldExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RSZWFkT25seVNl
dExpa2UqIElETE9wZXJhdGlvbjxKU1Rlc3RSZWFkT25seVNldExpa2U+OjpjYXN0KEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seVNldExpa2UqPihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsMTYgKzE4MSw2IEBAIHZvaWQg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWMKICAgICB0aGlzT2JqZWN0LT5KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6On5KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogSURMT3Bl
cmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1Zh
bHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNldExpa2UuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
NywxNiArMTc3LDYgQEAgdm9pZCBKU1Rlc3RTZXRMaWtlOjpkZXN0cm95KEpTQzo6SlNDZWxsKgog
ICAgIHRoaXNPYmplY3QtPkpTVGVzdFNldExpa2U6On5KU1Rlc3RTZXRMaWtlKCk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdFNldExpa2UqIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXRMaWtl
Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2Uq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXRMaWtlKiBJRExPcGVyYXRp
b248SlNUZXN0U2V0TGlrZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdFNldExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1l
LnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFNldExp
a2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3
NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgw
LDE2ICsxODAsNiBAQCB2b2lkIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvCiAg
ICAgdGhpc09iamVjdC0+SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6fkpT
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMoKTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogSURMQXR0cmlidXRl
PEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMqIElETE9wZXJhdGlvbjxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCShyZXZpc2lv
biAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1Niw2IEBAIHZv
aWQgSlNUZXN0U3RyaW5naWZpZXI6OmRlc3Ryb3koSlNDOjpKU0MKICAgICB0aGlzT2JqZWN0LT5K
U1Rlc3RTdHJpbmdpZmllcjo6fkpTVGVzdFN0cmluZ2lmaWVyKCk7CiB9CiAKLXRlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXI+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNh
bGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllcio+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
OwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYsNiBAQCB2
b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uCiAgICAgdGhpc09iamVjdC0+
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246On5KU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbiogSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwxMSArMTU4LDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uOjpkZQogICAgIHRoaXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb246On5KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKCk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24qIElETE9w
ZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbio+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwot
fQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbkNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHJldmlz
aW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTgsMTEgKzE1OCw2IEBAIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnQKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXM6On5KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMoKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
KiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxs
RnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYsNiBAQCB2b2lk
IEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0CiAgICAgdGhpc09iamVjdC0+SlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjp+SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyogSURMT3BlcmF0aW9uPEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQot
CiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAy
NzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwx
NiArMTU5LDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOgogICAg
IHRoaXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6On5KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqIElETEF0dHJpYnV0ZTxKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqPihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQot
Ci10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKiBJ
RExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAko
cmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYwLDE2ICsxNjAsNiBAQCB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGU6On5KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSgpOwogfQogCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSogSURMQXR0cmli
dXRlPEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUqIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsMTYgKzI3MSw2IEBAIHZvaWQgSlNUZXN0VHlwZWRlZnM6
OmRlc3Ryb3koSlNDOjpKU0NlbGwKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RUeXBlZGVmczo6fkpT
VGVzdFR5cGVkZWZzKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFR5cGVkZWZzKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RUeXBlZGVmcyogSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FzdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzUwNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9i
YWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxMSArMTY0LDYgQEAgSlNWYWx1ZSBK
U1dvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1YwogICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1dvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIEpTV29ya2VyR2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1dvcmtlckdsb2JhbFNjb3Bl
Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2VyR2xvYmFs
U2NvcGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMjczLDQ0ICsyNjgsNiBAQCB2
b2lkIEpTV29ya2VyR2xvYmFsU2NvcGU6OmFuYWx5emVIZWFwKEpTCiAgICAgQmFzZTo6YW5hbHl6
ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwogfQogCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZ
KQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0
ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183V29ya2VyR2xv
YmFsU2NvcGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVybiAiQyIgeyBleHRl
cm4gdm9pZCogX1pUVk43V2ViQ29yZTE3V29ya2VyR2xvYmFsU2NvcGVFW107IH0KLSNlbmRpZgot
I2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8V29ya2VyR2xvYmFsU2Nv
cGU+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25z
dCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigp
KTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0g
X19pZGVudGlmaWVyKCI/P183V29ya2VyR2xvYmFsU2NvcGVAV2ViQ29yZUBANkJAIik7Ci0jZWxz
ZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTdXb3Jr
ZXJHbG9iYWxTY29wZUVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgV29ya2Vy
R2xvYmFsU2NvcGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRo
ZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxX
b3JrZXJHbG9iYWxTY29wZT46OnZhbHVlLCAiV29ya2VyR2xvYmFsU2NvcGUgaXMgbm90IHBvbHlt
b3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIg
aGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBXb3JrZXJHbG9iYWxTY29wZSBo
YXMgc3ViY2xhc3Nlcy4gSWYgV29ya2VyR2xvYmFsU2NvcGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBn
ZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFdvcmtlckds
b2JhbFNjb3BlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkg
YWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFj
ZSBJREwgZGVmaW5pdGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIg
PT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFw
cGVyPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQot
Ci1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3JrZXJHbG9iYWxTY29wZSYg
aW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGltcGwpOwotfQotCiBXb3JrZXJHbG9iYWxTY29wZSogSlNXb3JrZXJHbG9iYWxTY29wZTo6
dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV29ya2VyR2xvYmFsU2NvcGUqPih2bSwgdmFs
dWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNzUwNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxT
Y29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMCArNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNDOjpKU1Byb3h5Kik7CiB9OwogCi1KU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBX
b3JrZXJHbG9iYWxTY29wZSYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFdvcmtlckdsb2JhbFNjb3BlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0K
LUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4mJik7Ci1pbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFdvcmtlckds
b2JhbFNjb3BlPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpT
Qzo6anNOdWxsKCk7IH0KIAogY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSBmaW5h
bCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzMsMTEgKzEzMyw2IEBAIEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFs
U2NvcGU6OmdldENvbnN0cnUKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXb3JrbGV0
R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNXb3JrbGV0
R2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1dvcmtsZXRHbG9iYWxTY29wZT46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZSo+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMTg3LDQ0ICsxODIsNiBAQCB2b2lkIEpTV29y
a2xldEdsb2JhbFNjb3BlOjphbmFseXplSGVhcChKCiAgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2Vs
bCwgYW5hbHl6ZXIpOwogfQogCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBM
QVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7
IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183V29ya2xldEdsb2JhbFNjb3Bl
QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQq
IF9aVFZON1dlYkNvcmUxOFdvcmtsZXRHbG9iYWxTY29wZUVbXTsgfQotI2VuZGlmCi0jZW5kaWYK
LQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYg
aW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNp
ZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVu
dGlmaWVyKCI/P183V29ya2xldEdsb2JhbFNjb3BlQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAg
ICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTE4V29ya2xldEds
b2JhbFNjb3BlRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBXb3JrbGV0R2xv
YmFsU2NvcGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQot
ICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZh
Y2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxXb3Jr
bGV0R2xvYmFsU2NvcGU+Ojp2YWx1ZSwgIldvcmtsZXRHbG9iYWxTY29wZSBpcyBub3QgcG9seW1v
cnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBo
YXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFdvcmtsZXRHbG9iYWxTY29wZSBo
YXMgc3ViY2xhc3Nlcy4gSWYgV29ya2xldEdsb2JhbFNjb3BlIGhhcyBzdWJjbGFzc2VzIHRoYXQg
Z2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBXb3JrbGV0
R2xvYmFsU2NvcGUgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBi
eSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJm
YWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRl
ciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdy
YXBwZXI8V29ya2xldEdsb2JhbFNjb3BlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwot
fQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2Nv
cGUmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKLX0KLQogV29ya2xldEdsb2JhbFNjb3BlKiBKU1dvcmtsZXRHbG9iYWxT
Y29wZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlKj4o
dm0sIHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAy
NzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTAgKzY5LDYgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwog
fTsKIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgV29ya2xldEdsb2JhbFNjb3BlJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgV29ya2xldEdsb2JhbFNjb3BlKiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6
anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOwot
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXds
eUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VO
b25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQogCiBjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29w
ZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNyArNDYyLDcgQEAg
Ym9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpjYW5BY2Nlc3NJbnNwZQogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogCi0gICAgSlNET01XaW5kb3cqIGluc3Bl
Y3RlZFdpbmRvdyA9IHRvSlNET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogaW5zcGVjdGVkV2luZG93ID0ganNEeW5hbWlj
Q2FzdDxKU0RPTVdpbmRvdyo+KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCksIGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgIGlmICghaW5zcGVjdGVkV2luZG93KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3NTA1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTAgKzMzLDggQEAKICAgICBDdXN0b21HZXRQcm90b3R5cGUsCiAgICAgQ3VzdG9tSGVhcFNu
YXBzaG90LAogICAgIEN1c3RvbVByZXZlbnRFeHRlbnNpb25zLAotICAgIEN1c3RvbVByb3h5VG9K
U09iamVjdCwKICAgICBDdXN0b21QdXQsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQs
Ci0gICAgSW1wbGljaXRUaGlzLAogICAgIEludGVyZmFjZU5hbWU9V2luZG93LAogICAgIElzSW1t
dXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhv
dGljT2JqZWN0T25Qcm90b3R5cGUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURP
TVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaWRsCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90
ZURPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDcgQEAKICAgICBDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3QsCiAgICAgQ3VzdG9tR2V0UHJvdG90eXBlLAogICAgIEN1c3Rv
bVByZXZlbnRFeHRlbnNpb25zLAotICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBDdXN0
b21QdXQsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIEludGVyZmFjZU5hbWU9V2luZG93LAogICAg
IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90
eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc1
MDUxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw5IEBACiAgKi8KIAogWwotICAgIEN1
c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBFeHBvc2VkPURlZGljYXRlZFdvcmtlciwKICAgICBH
bG9iYWw9KFdvcmtlcixEZWRpY2F0ZWRXb3JrZXIpLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9i
amVjdCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNP
YmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwK
IF0gaW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIDogV29ya2VyR2xvYmFsU2Nv
cGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5p
ZGwJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsOSBAQAogICovCiAKIFsK
LSAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCiAgICAgRXhwb3NlZD1Xb3JrZXIsCiAgICAgSlND
dXN0b21NYXJrRnVuY3Rpb24sCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGlj
T2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUs
CiBdIGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSA6IEV2ZW50VGFyZ2V0IHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjQsMTIgKzI0LDEwIEBACiAgKi8KIAogWwotICAgIEN1c3RvbVByb3h5VG9KU09iamVj
dCwKICAgICBHbG9iYWw9KFdvcmtlcixTZXJ2aWNlV29ya2VyKSwKICAgICBFeHBvc2VkPVNlcnZp
Y2VXb3JrZXIsCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAgICAgRW5hYmxlZEF0
UnVudGltZT1TZXJ2aWNlV29ya2VyLAotICAgIEltcGxpY2l0VGhpcywKICAgICBKU0N1c3RvbU1h
cmtGdW5jdGlvbiwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJ
c0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLApJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAko
cmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAgICAgQ29u
ZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAg
ICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIElzSW1t
dXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhv
dGljT2JqZWN0T25Qcm90b3R5cGUsCiAgICAgR2xvYmFsPShXb3JrbGV0LFBhaW50V29ya2xldCks
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwJKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCw4IEBACiAqLwogCiBb
Ci0gICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEV4cG9zZWQ9V29ya2xldCwKICAgICBK
U0xlZ2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UsCi0gICAgSW1wbGljaXRUaGlz
LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxl
UHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiAgICAgR2xvYmFsPVdvcmtsZXQsCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0yNSAgQWxleGV5IFNodmF5
a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gTWFrZSB8dGhp
c3wgdmFsdWUgY2FzdGluZyBjb25zaXN0ZW50IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExP
cGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBpbmhlcml0czxUYXJnZXQ+IGluc3RlYWQgb2YgdG9KU0RPTVdpbmRvdygpIGlmIHRoZSB2
YWx1ZSBpcyBuZXZlciBhIEpTUHJveHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGU6OnJlcG9ydEV4Y2VwdGlvbik6CisKIDIwMjEtMDMtMjUgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU2VuZEtleXMgb24gSW5wdXQgb2YgdHlwZT1maWxlIHJldHVybnMg
ZWxlbWVudCBub3QgZm91bmQgaW4gc29tZSBjYXNlcwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVwb3J0RXhjZXB0aW9uKEpTQwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQg
aGFzIGEgRE9NV2luZG93IGdsb2JhbCBvYmplY3QsIG90aGVyd2lzZSB0aGlzIGNvbnRleHQgZGlk
bid0IG9yaWdpbmF0ZSBmcm9tIGEgUGFnZS4KLSAgICBpZiAoIXRvSlNET01XaW5kb3coZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QpKQorICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhl
cml0czxKU0RPTVdpbmRvdz4oZ2xvYmFsT2JqZWN0LT52bSgpKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxP
YmplY3QsIGV4Y2VwdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjc1MDUxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDMtMjUgIEFsZXhleSBTaHZheWthICA8
c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExdIE1ha2UgfHRoaXN8IHZh
bHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIElETEF0dHJpYnV0ZSBhbmQgSURMT3BlcmF0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3
NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
aW5oZXJpdHM8VGFyZ2V0PiBpbnN0ZWFkIG9mIHRvSlNET01XaW5kb3coKSBpZiB0aGUgdmFsdWUg
aXMgbmV2ZXIgYSBKU1Byb3h5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoK1tXZWJWaWV3IF9yZXBvcnRFeGNlcHRpb246aW5Db250ZXh0Ol0pOgorCiAyMDIxLTAz
LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENv
bnNvbGlkYXRlIEJvb2tzIGJ1bmRsZSBjaGVja3MKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDI3NTA1MSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyNCw3
ICsxMzI0LDcgQEAgKyAodm9pZClfcmVwb3J0RXhjZXB0aW9uOihKU1ZhbHVlUmVmKWV4YwogICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgY29udGV4dCBoYXMgYSBET01XaW5kb3cgZ2xvYmFsIG9iamVjdCwgb3RoZXJ3aXNlIHRo
aXMgY29udGV4dCBkaWRuJ3Qgb3JpZ2luYXRlIGZyb20gYSBXZWJWaWV3LgotICAgIGlmICghV2Vi
Q29yZTo6dG9KU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCkpCisg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmluaGVyaXRzPFdlYkNvcmU6OkpTRE9NV2luZG93PihnbG9i
YWxPYmplY3QtPnZtKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJDb3JlOjpyZXBvcnRF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzUwNTEpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wMy0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dlYklETF0gTWFrZSB8dGhpc3wgdmFsdWUgY2FzdGluZyBjb25zaXN0ZW50
IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExPcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpbmhlcml0czxUYXJnZXQ+IGluc3Rl
YWQgb2YgdG9KU0RPTVdpbmRvdygpIGlmIHRoZSB2YWx1ZSBpcyBuZXZlciBhIEpTUHJveHkuCisK
KyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnJlcG9ydEV4Y2VwdGlv
bik6CisKIDIwMjEtMDMtMjIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bnVzZWQgSlMgYW5kIENTUyBmaWxlcyBvZiBtZWRpYSBjb250cm9scwpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI3NTA1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NjIxLDcgKzY2MjEsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlcG9ydEV4Y2VwdGlvbihfSW5fIEpT
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSBjb250ZXh0IGhhcyBhIERPTVdpbmRvdyBnbG9iYWwgb2JqZWN0LCBvdGhlcndp
c2UgdGhpcyBjb250ZXh0IGRpZG4ndCBvcmlnaW5hdGUgZnJvbSBhIFdlYlZpZXcuCi0gICAgaWYg
KCF0b0pTRE9NV2luZG93KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSkKKyAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01XaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0o
KSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzUwNTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMy0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gTWFrZSB8dGhpc3wgdmFsdWUgY2Fz
dGluZyBjb25zaXN0ZW50IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExPcGVyYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcHJvcGVy
dHktb2Ytd2luZG93LWFzLXByb3RvdHlwZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICoganMvcHJvcGVydHktb2Ytd2luZG93LWFzLXByb3RvdHlwZS5odG1sOiBSZW1vdmVkLgorCiAy
MDIxLTAzLTI1ICBSb2JlcnQgSmVubmVyICA8amVubmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBb
IERlYnVnIHdrMiBdIEFTU0VSVElPTiBGQUlMRUQ6IHdpbGxCZUNvbXBvc2l0ZWQgPT0gbmVlZHNU
b0JlQ29tcG9zaXRlZChsYXllciwgcXVlcnlEYXRhKQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzUwNTIpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjUgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExd
IE1ha2UgfHRoaXN8IHZhbHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIElETEF0dHJpYnV0
ZSBhbmQgSURMT3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2Jh
bC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuanM6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3Qt
aW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFs
LW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1v
cGVuZXItcmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wMy0yNSAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlIGludGVycG9sYXRp
b24gb2YgdGhlIHNoYXBlLW91dHNpZGUgQ1NTIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
Z2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5h
bnktZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2Jq
ZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExIEBACisKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hl
biBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorRkFJTCBHbG9iYWwgb2JqZWN0J3Mgc2V0
dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IGFzc2VydF90aHJv
d3NfanM6IGZ1bmN0aW9uICIoKSA9PiB7IE9iamVjdC5jcmVhdGUoZ2xvYmFsVGhpcykub3JpZ2lu
ID0gb3JpZ2luOyB9IiBkaWQgbm90IHRocm93CitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRp
b24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xvYmFs
IG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVj
dCAoZG9jdW1lbnQuYWxsKQorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVu
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpCitQQVNTIEdsb2Jh
bCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBv
YmplY3QgKGRvY3VtZW50LmFsbCkKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3
aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCitQQVNTIEdsb2JhbCBvYmplY3QncyBzZXR0
ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFTUyBHbG9iYWwgb2Jq
ZWN0J3Mgb3BlcmF0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKKwpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10
aGlzLXZhbHVlLmFueS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhp
cy12YWx1ZS5hbnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3Qt
aW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4MiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIgCisKKy8vIGh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIChzdGVw
IDEuMS4yLjEpCisvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmli
dXRlLXNldHRlciAoc3RlcCA0LjUuMSkKKy8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2Rmbi1jcmVhdGUtb3BlcmF0aW9uLWZ1bmN0aW9uIChzdGVwIDIuMS4yLjEpCisKK2NvbnN0
IG5vdEdsb2JhbE9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGds
b2JhbFRoaXMpKTsKKwordGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IHsgT2JqZWN0LmNyZWF0ZShnbG9iYWxUaGlzKS5zZWxmOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0
b3IoImxvY2F0aW9uIikuZ2V0LmNhbGwobm90R2xvYmFsT2JqZWN0KTsgfSk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5nZXQoZ2xvYmFsVGhpcywgIm5h
dmlnYXRvciIsIG5vdEdsb2JhbE9iamVjdCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShnbG9iYWxUaGlzLCB7fSkub25lcnJvcjsgfSk7Cit9
LCAiR2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRp
YmxlIG9iamVjdCIpOworCit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKGdsb2JhbFRoaXMpLm9yaWdpbiA9IG9yaWdpbjsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZ2V0R2xvYmFsUHJv
cGVydHlEZXNjcmlwdG9yKCJvbmVycm9yIikuc2V0LmNhbGwobm90R2xvYmFsT2JqZWN0LCBvbmVy
cm9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVj
dC5zZXQoZ2xvYmFsVGhpcywgIm9ub2ZmbGluZSIsIG9ub2ZmbGluZSwgbm90R2xvYmFsT2JqZWN0
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5
KGdsb2JhbFRoaXMsIHt9KS5vbm9ubGluZSA9IG9ub25saW5lOyB9KTsKK30sICJHbG9iYWwgb2Jq
ZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7
CisKK3Rlc3QoKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7
IE9iamVjdC5jcmVhdGUoZ2xvYmFsVGhpcykuc2V0VGltZW91dCgoKSA9PiB7fSwgMTAwKTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgY2xlYXJUaW1lb3V0LmNh
bGwobm90R2xvYmFsT2JqZWN0LCAoKSA9PiB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuYXBwbHkoYnRvYSwgbm90R2xvYmFsT2JqZWN0LCBb
IiJdKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbmV3IFBy
b3h5KGdsb2JhbFRoaXMsIHt9KS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCAoKSA9PiB7fSk7
IH0pOworfSwgIkdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QiKTsKKworaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gInVuZGVm
aW5lZCIpIHsKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICJk
b2N1bWVudCIpLmdldC5jYWxsKGRvY3VtZW50LmFsbCk7IH0pOworICAgIH0sICJHbG9iYWwgb2Jq
ZWN0J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChk
b2N1bWVudC5hbGwpIik7CisKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
aW5kb3csICJuYW1lIikuc2V0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAgfSwgIkdsb2Jh
bCBvYmplY3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmpl
Y3QgKGRvY3VtZW50LmFsbCkiKTsKKworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBhbGVydC5jYWxsKGRvY3VtZW50LmFsbCk7IH0p
OworICAgIH0sICJHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBv
biBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpIik7Cit9CisKK2NvbnN0IGxvY2F0
aW9uR2V0dGVyID0gZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJsb2NhdGlvbiIpLmdldDsK
K3Rlc3QoKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlw
dG9yKCJzZWxmIikuZ2V0LmNhbGwobnVsbCksIHNlbGYpOworICAgIGFzc2VydF9lcXVhbHMoKCgp
ID0+IGxvY2F0aW9uR2V0dGVyKCkpKCksIGxvY2F0aW9uKTsKKyAgICBhc3NlcnRfZXF1YWxzKFJl
ZmxlY3QuZ2V0KGdsb2JhbFRoaXMsICJvcmlnaW4iLCBudWxsKSwgb3JpZ2luKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKFJlZmxlY3QuZ2V0KGdsb2JhbFRoaXMsICJvbm9mZmxpbmUiLCB1bmRlZmluZWQp
LCBvbm9mZmxpbmUpOworfSwgIkdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxs
ZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworCit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBmbiA9
ICgpID0+IHt9OworCisgICAgZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJvcmlnaW4iKS5z
ZXQuY2FsbChudWxsLCAiZm9vIik7CisgICAgYXNzZXJ0X2VxdWFscyhvcmlnaW4sICJmb28iKTsK
KyAgICBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9uZXJyb3IiKS5zZXQuY2FsbCh1bmRl
ZmluZWQsIGZuKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9uZXJyb3IsIGZuKTsKKyAgICBhc3NlcnRf
dHJ1ZShSZWZsZWN0LnNldChnbG9iYWxUaGlzLCAib25vZmZsaW5lIiwgZm4sIG51bGwpKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKG9ub2ZmbGluZSwgZm4pOworCisgICAgY29uc3Qgb25vbmxpbmVTZXR0
ZXIgPSBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9ub25saW5lIikuc2V0OworICAgICgo
KSA9PiB7IG9ub25saW5lU2V0dGVyKGZuKTsgfSkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9ub25s
aW5lLCBmbik7Cit9LCAiR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBv
biBudWxsIC8gdW5kZWZpbmVkIik7CisKK2NvbnN0IF9fYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2
ZW50TGlzdGVuZXI7Cit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGF0b2IuY2FsbChu
dWxsLCAiIiksICIiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiAoMCwgc2V0SW50ZXJ2YWwp
KCgpID0+IHt9LCAxMDApLCAibnVtYmVyIik7CisKKyAgICAoKCkgPT4geyBfX2FkZEV2ZW50TGlz
dGVuZXIoImZvbyIsIGV2ZW50ID0+IHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfSk7IH0pKCk7
CisgICAgY29uc3QgX19kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudDsKKyAgICAoKCkgPT4g
eyBhc3NlcnRfZmFsc2UoX19kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIiwgeyBjYW5jZWxh
YmxlOiB0cnVlIH0pKSk7IH0pKCk7Cit9LCAiR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB3b3Jr
cyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7CisKK2Z1bmN0aW9uIGdldEdsb2Jh
bFByb3BlcnR5RGVzY3JpcHRvcihrZXkpIHsKKyAgICBmb3IgKGxldCBvYmogPSBnbG9iYWxUaGlz
OyBvYmo7IG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKSB7CisgICAgICAgIGNvbnN0
IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KTsKKyAgICAg
ICAgaWYgKGRlc2MpIHJldHVybiBkZXNjOworICAgIH0KK30KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9n
bG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12
YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRp
bmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIEdsb2JhbCBvYmplY3Qn
cyBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1Mg
R2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxl
IG9iamVjdAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxl
ZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29y
a3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mg
c2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKK1BBU1MgR2xvYmFs
IG9iamVjdCdzIG9wZXJhdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVk
CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2Vi
SURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUu
YW55Lndvcmtlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0
LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0
ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVk
ZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5k
b3dzL2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
NzUwNTEpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1vcGVuZXItcmVtb3ZlLWZyYW1lLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKIAotRkFJTCBvcGVuZXIgb2YgZGlz
Y2FyZGVkIG5lc3RlZCBicm93c2luZyBjb250ZXh0IFRoZSBXaW5kb3cub3BlbmVyIGdldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKLUZBSUwgb3BlbmVyIG9mIGRp
c2NhcmRlZCBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dCBUaGUgV2luZG93Lm9wZW5lciBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93CitQQVNTIG9wZW5lciBv
ZiBkaXNjYXJkZWQgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQKK1BBU1Mgb3BlbmVyIG9mIGRpc2Nh
cmRlZCBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dAogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9w
cm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjc1MDUxKQorKysgTGF5b3V0VGVzdHMvanMvcHJvcGVydHktb2Ytd2lu
ZG93LWFzLXByb3RvdHlwZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw0ICswLDAg
QEAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcHJvcGVydHktb2Ytd2luZG93LWFzLXByb3Rv
dHlwZS5odG1sCShyZXZpc2lvbiAyNzUwNTEpCisrKyBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1v
Zi13aW5kb3ctYXMtcHJvdG90eXBlLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMyArMCwwIEBA
Ci08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0vLyBTbyBsb25nIGFzIHRoZSBsaW5lIGJl
bG93IGRvZXNuJ3QgY3Jhc2gsIHRoaXMgdGVzdCBwYXNzZXMuCi1PYmplY3QuY3JlYXRlKHdpbmRv
dykubG9jYXRpb247Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424445</attachid>
            <date>2021-03-27 03:52:52 -0700</date>
            <delta_ts>2021-03-27 05:36:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223758-20210327125250.patch</filename>
            <type>text/plain</type>
            <size>172742</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtOTc3LDYgKzk3Nyw3IEBAIG9wIDpyZXNv
bHZlX3Njb3BlLAogICAgICAgICAjICRiZWdpbjogOnByaXZhdGUsCiAgICAgICAgIHJlc29sdmVU
eXBlOiBSZXNvbHZlVHlwZSwKICAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwKKyAg
ICAgICAgdGhpc1ZhbHVlRm9yQ2FsbD86IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7CiAgICAgICAgIHJlc29sdmVUeXBlOiBSZXNvbHZlVHlwZSwgIyBvZmZzZXQgNApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNyArNDM3LDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogICAgIERFRlMoT3BQdXNo
V2l0aFNjb3BlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZUxleGljYWxFbnZpcm9ubWVudCwgZHN0
KQogICAgIERFRlMoT3BDcmVhdGVHZW5lcmF0b3JGcmFtZUVudmlyb25tZW50LCBkc3QpCi0gICAg
REVGUyhPcFJlc29sdmVTY29wZSwgZHN0KQorICAgIERFRlMoT3BSZXNvbHZlU2NvcGUsIHRoaXNW
YWx1ZUZvckNhbGwsIGRzdCkKICAgICBERUZTKE9wUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5j
RGVjbEluRXZhbCwgZHN0KQogICAgIERFRlMoT3BTdHJjYXQsIGRzdCkKICAgICBERUZTKE9wVG9Q
cmltaXRpdmUsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjM4NSw3ICsyMzg1LDcgQEAgUmVzb2x2ZVR5cGUgQnl0ZWNv
ZGVHZW5lcmF0b3I6OnJlc29sdmVUeQogICAgIHJldHVybiBHbG9iYWxQcm9wZXJ0eTsKIH0KIAot
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVTY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2FsbCkKIHsKICAgICBzd2l0Y2gg
KHZhcmlhYmxlLm9mZnNldCgpLmtpbmQoKSkgewogICAgIGNhc2UgVmFyS2luZDo6U3RhY2s6CkBA
IC0yNDIyLDggKzI0MjIsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXNvbAogICAgIGNhc2UgVmFyS2luZDo6SW52YWxpZDoKICAgICAgICAgLy8gSW5kaWNhdGVzIG5v
bi1sb2NhbCByZXNvbHV0aW9uLgogICAgICAgICAKKyAgICAgICAgaWYgKCF0aGlzVmFsdWVGb3JD
YWxsKQorICAgICAgICAgICAgdGhpc1ZhbHVlRm9yQ2FsbCA9IG5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICBkc3QgPSB0ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICAgICAgT3BSZXNvbHZlU2NvcGU6
OmVtaXQodGhpcywga2lsbChkc3QpLCBzY29wZVJlZ2lzdGVyKCksIGFkZENvbnN0YW50KHZhcmlh
YmxlLmlkZW50KCkpLCByZXNvbHZlVHlwZSgpLCBsb2NhbFNjb3BlRGVwdGgoKSk7CisgICAgICAg
IE9wUmVzb2x2ZVNjb3BlOjplbWl0KHRoaXMsIGtpbGwoZHN0KSwgc2NvcGVSZWdpc3RlcigpLCBh
ZGRDb25zdGFudCh2YXJpYWJsZS5pZGVudCgpKSwgcmVzb2x2ZVR5cGUoKSwgbG9jYWxTY29wZURl
cHRoKCksIHRoaXNWYWx1ZUZvckNhbGwpOwogICAgICAgICByZXR1cm4gZHN0OwogICAgIH0KICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtODg1LDcgKzg4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlc29sdmVUeXBl
IHJlc29sdmVUeXBlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRM
b2NhbChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxlJik7Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0aGlzVmFsdWVGb3JDYWxsID0gbnVsbHB0cik7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZXNvbHZlTW9kZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJs
ZSYsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSwgSW5pdGlhbGl6YXRpb25Nb2RlKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3LDE4
ICsxMjc3LDE2IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWkKICAg
ICAgICAgZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogCisgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGlm
IChsb2NhbCkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5vRXhw
ZWN0ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBpcyBp
biBhCiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBvdXIg
YnVpbHQtaW4gY29uc3RydWN0b3JzLgogICAgICAgICBleHBlY3RlZEZ1bmN0aW9uID0gTm9FeHBl
Y3RlZEZ1bmN0aW9uOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rp
dm90ID0gZGl2b3RTdGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0g
ICAgICAgIGdlbmVyYXRvci5tb3ZlKAotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhcikpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIsIFRo
cm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhciwgY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGZ1bmMuZ2V0KCksIG51bGxwdHIpOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTY1LDcgKzMxNjUsOCBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEpTT2JqZWN0KiByZXNvbHZlZFNj
b3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNjb3BlLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBpbXBsKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWVGb3JDYWxsOworICAgIEpT
T2JqZWN0KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNj
b3BlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKSwgdGhpc1ZhbHVlRm9yQ2FsbCk7CiAg
ICAgcmV0dXJuIHJlc29sdmVkU2NvcGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjc1MTMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIyNSw5ICsxMjI1LDEyIEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1df
UEFUSChzbG93X3BhdGhfcmUKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fc2NvcGUpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEpT
T2JqZWN0KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNj
b3BlLCBpZGVudCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWVGb3JDYWxsOworICAgIEpTT2JqZWN0
KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNjb3BlLCBp
ZGVudCwgdGhpc1ZhbHVlRm9yQ2FsbCk7CiAgICAgLy8gUHJveHkgY2FuIHRocm93IGFuIGVycm9y
IGhlcmUsIGUuZy4gUHJveHkgaW4gd2l0aCBzdGF0ZW1lbnQncyBAdW5zY29wYWJsZXMuCiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKHRoaXNWYWx1ZUZvckNhbGwpCisgICAgICAgIEdF
VChieXRlY29kZS5tX3RoaXNWYWx1ZUZvckNhbGwpID0gdGhpc1ZhbHVlRm9yQ2FsbDsKIAogICAg
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9yZXNvbHZlVHlwZTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI3
NTEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVW5zY29w
YWJsZShKU0dsb2JhbAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5QcmVkaWNhdGVGdW5j
dG9yLCB0eXBlbmFtZSBTa2lwUHJlZGljYXRlRnVuY3Rvcj4KLUFMV0FZU19JTkxJTkUgSlNPYmpl
Y3QqIEpTU2NvcGU6OnJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29w
ZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9y
IHJldHVyblByZWRpY2F0ZSwgU2tpcFByZWRpY2F0ZUZ1bmN0b3Igc2tpcFByZWRpY2F0ZSkKK0FM
V0FZU19JTkxJTkUgSlNPYmplY3QqIEpTU2NvcGU6OnJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBKU1Zh
bHVlJiB0aGlzVmFsdWVGb3JDYWxsLCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9yIHJldHVyblByZWRp
Y2F0ZSwgU2tpcFByZWRpY2F0ZUZ1bmN0b3Igc2tpcFByZWRpY2F0ZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC0yNDIsOCArMjQyLDExIEBAIEFMV0FZU19JTkxJTkUgSlNPYmplY3Qq
IEpTU2NvcGU6OnJlc29sdmUKICAgICAgICAgICAgICAgICBKU09iamVjdCogZXh0ZW5zaW9uU2Nv
cGVPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKGdsb2JhbFNjb3BlRXh0ZW5zaW9uKTsK
ICAgICAgICAgICAgICAgICBoYXNQcm9wZXJ0eSA9IGV4dGVuc2lvblNjb3BlT2JqZWN0LT5oYXNQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIGlmIChoYXNQ
cm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGV4dGVuc2lvblNjb3BlT2JqZWN0LT50eXBlKCkgPT0gV2l0aFNjb3Bl
VHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZUZvckNhbGwgPSBKU1ZhbHVlKGV4
dGVuc2lvblNjb3BlT2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dGVuc2lv
blNjb3BlT2JqZWN0OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTI1Niw4ICsyNTksMTEgQEAgQUxXQVlT
X0lOTElORSBKU09iamVjdCogSlNTY29wZTo6cmVzb2x2ZQogICAgICAgICBpZiAoaGFzUHJvcGVy
dHkpIHsKICAgICAgICAgICAgIGJvb2wgdW5zY29wYWJsZSA9IGlzVW5zY29wYWJsZShnbG9iYWxP
YmplY3QsIHNjb3BlLCBvYmplY3QsIGlkZW50KTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkgfHwgIXVuc2NvcGFibGUpOwotICAgICAgICAgICAg
aWYgKCF1bnNjb3BhYmxlKQorICAgICAgICAgICAgaWYgKCF1bnNjb3BhYmxlKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNjb3BlLT50eXBlKCkgPT0gV2l0aFNjb3BlVHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgdGhpc1ZhbHVlRm9yQ2FsbCA9IEpTVmFsdWUob2JqZWN0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHJldHVyblByZWRpY2F0ZShzY29wZSkpCkBAIC0yNzYsNyArMjgyLDggQEAgSlNWYWx1ZSBK
U1Njb3BlOjpyZXNvbHZlU2NvcGVGb3JIb2lzdGluZwogICAgIGF1dG8gc2tpcFByZWRpY2F0ZSA9
IFsmXSAoSlNTY29wZSogc2NvcGUpIC0+IGJvb2wgewogICAgICAgICByZXR1cm4gc2NvcGUtPmlz
V2l0aFNjb3BlKCk7CiAgICAgfTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gcmVzb2x2ZShnbG9i
YWxPYmplY3QsIHNjb3BlLCBpZGVudCwgcmV0dXJuUHJlZGljYXRlLCBza2lwUHJlZGljYXRlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZUZvckNhbGw7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHJl
c29sdmUoZ2xvYmFsT2JqZWN0LCBzY29wZSwgaWRlbnQsIHRoaXNWYWx1ZUZvckNhbGwsIHJldHVy
blByZWRpY2F0ZSwgc2tpcFByZWRpY2F0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKQEAgLTI5MSw3ICsyOTgs
NyBAQCBKU1ZhbHVlIEpTU2NvcGU6OnJlc29sdmVTY29wZUZvckhvaXN0aW5nCiAgICAgcmV0dXJu
IHJlc3VsdCA/IEpTVmFsdWUob2JqZWN0KSA6IGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTT2JqZWN0
KiBKU1Njb3BlOjpyZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUq
IHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK0pTT2JqZWN0KiBKU1Njb3BlOjpyZXNv
bHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgSlNWYWx1ZSYgdGhpc1ZhbHVlRm9yQ2FsbCkKIHsKICAgICBhdXRv
IHByZWRpY2F0ZTEgPSBbJl0gKEpTU2NvcGUqKSAtPiBib29sIHsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjk5LDcgKzMwNiw3IEBAIEpTT2JqZWN0KiBKU1Njb3BlOjpyZXNvbHZlKEpTR2xv
YmFsT2JqZWMKICAgICBhdXRvIHByZWRpY2F0ZTIgPSBbJl0gKEpTU2NvcGUqKSAtPiBib29sIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07Ci0gICAgcmV0dXJuIHJlc29sdmUoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgaWRlbnQsIHByZWRpY2F0ZTEsIHByZWRpY2F0ZTIpOworICAgIHJldHVy
biByZXNvbHZlKGdsb2JhbE9iamVjdCwgc2NvcGUsIGlkZW50LCB0aGlzVmFsdWVGb3JDYWxsLCBw
cmVkaWNhdGUxLCBwcmVkaWNhdGUyKTsKIH0KIAogUmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0
UmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgZGVwdGhPZmZzZXQs
IEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0T3JQdXQgZ2V0T3JQ
dXQsIFJlc29sdmVUeXBlIHVubGlua2VkVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxp
emF0aW9uTW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgSlNPYmplY3QqIG9iamVjdEF0U2NvcGUoSlNTY29wZSopOwogCi0gICAgc3RhdGljIEpTT2Jq
ZWN0KiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBzdGF0aWMgSlNPYmplY3QqIHJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBKU1Njb3Bl
KiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUmIHRoaXNWYWx1ZUZvckNhbGwpOwogICAgIHN0
YXRpYyBKU1ZhbHVlIHJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoSlNHbG9i
YWxPYmplY3QqLCBKU1Njb3BlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIHN0YXRpYyBSZXNv
bHZlT3AgYWJzdHJhY3RSZXNvbHZlKEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IGRlcHRoT2Zmc2V0
LCBKU1Njb3BlKiwgY29uc3QgSWRlbnRpZmllciYsIEdldE9yUHV0LCBSZXNvbHZlVHlwZSwgSW5p
dGlhbGl6YXRpb25Nb2RlKTsKIApAQCAtODgsNyArODgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNT
Y29wZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqIG5leHQpOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0dXJuUHJlZGljYXRlRnVuY3RvciwgdHlwZW5hbWUgU2tpcFByZWRpY2F0ZUZ1bmN0
b3I+Ci0gICAgc3RhdGljIEpTT2JqZWN0KiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNTY29w
ZSosIGNvbnN0IElkZW50aWZpZXImLCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9yLCBTa2lwUHJlZGlj
YXRlRnVuY3Rvcik7CisgICAgc3RhdGljIEpTT2JqZWN0KiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0
KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlJiB0aGlzVmFsdWVGb3JDYWxs
LCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9yLCBTa2lwUHJlZGljYXRlRnVuY3Rvcik7CiAKIHByaXZh
dGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTU2NvcGU+IG1fbmV4dDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDk1IEBACisyMDIxLTAzLTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBNYWtlIHx0aGlzfCB2YWx1ZSBjYXN0
aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1dGUgYW5kIElETE9wZXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaDoK
KworICAgICAgICAxLiBSZW1vdmVzIHByb3RvdHlwZSBjaGFpbiB0cmF2ZXJzYWwgZnJvbSB0b0pT
RE9NV2luZG93KCksIHdoaWNoIGZpeGVzCisgICAgICAgICAgIGBPYmplY3QuY3JlYXRlKHdpbmRv
dykubG9jYXRpb25gIHRvIHRocm93IGFzIHBlciBzcGVjIFsxXSwgYWxpZ25pbmcgV2ViS2l0Cisg
ICAgICAgICAgIHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAgICAgIDIuIE1lcmdlcyB0b0pT
RE9NV2luZG93KCkgYW5kIGZyaWVuZHMgaW50byB0b0pTRE9NR2xvYmFsT2JqZWN0PEpTQ2xhc3M+
IHRoYXQKKyAgICAgICAgICAgaGFuZGxlcyBpbmhlcml0YW5jZSBhbmQgdW53cmFwcyBKU1Byb3h5
LiBUaGlzIGZpeGVzIGBnbG9iYWxUaGlzLnJlZ2lzdGVyUGFpbnQoLi4uKWAKKyAgICAgICAgICAg
aW5zaWRlIGEgd29ya2xldCBub3QgdG8gdGhyb3cuCisKKyAgICAgICAgMy4gRXh0cmFjdHMgY2Fz
dFRoaXNWYWx1ZTxKU0NsYXNzPiB0aGF0IHVzZXMgY29tcGlsZS10aW1lIGluaGVyaXRhbmNlIGNo
ZWNrCisgICAgICAgICAgIHRvIHByb3ZpZGUgaW1wbGljaXQgfHRoaXN8IHZhbHVlIGZvciBET00g
Z2xvYmFsIG9iamVjdHMsIHdoaWNoIGZpeGVzIGF0dHJpYnV0ZQorICAgICAgICAgICBnZXR0ZXIg
LyBzZXR0ZXIsIGNhbGxlZCBvbiBhbiBlbnZpcm9ubWVudCByZWNvcmQsIG5vdCB0byB0aHJvdyBh
cyBwZXIgc3BlYyBbMl0uCisKKyAgICAgICAgNC4gUmVtb3ZlcyBbSW1wbGljaXRUaGlzXSBhbmQg
W0N1c3RvbVByb3h5VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlcyBiZWNhdXNlCisgICAg
ICAgICAgIGFsbCBET00gZ2xvYmFsIG9iamVjdHMgYXJlIHdyYXBwZWQgaW4gYSBKU1Byb3h5IGFu
ZCByZXF1aXJlIHNwZWNpYWwgY2FzdGluZy4KKworICAgICAgICAgICBbSW1wbGljaXRUaGlzXSB3
YXMgcmVtb3ZlZCBmcm9tIHRoZSBzcGVjIFszXSBhIHdoaWxlIGFnbywgYW5kIGl0IHdhcyB0cmlj
a3kgbm90CisgICAgICAgICAgIHRvIG1pc3MgW0N1c3RvbVByb3h5VG9KU09iamVjdF0gd2hlbiBh
ZGRpbmcgYSBuZXcgRE9NIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgNS4gUmVwbGFjZXMgdG9U
aGlzKCkgd2l0aCBlbnN1cmVUaGlzVmFsdWUoKSB0byBhdm9pZCBub24taW5saW5hYmxlIG1ldGhv
ZCB0YWJsZSBjYWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJlZHVjZXMgV2ViQ29yZSAtLXJl
bGVhc2UgYmluYXJ5IHNpemUgYnkgMC4zJSAoMjQ4IEtCKS4KKworICAgICAgICBbMV0gaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMS4x
LjIuMykKKyAgICAgICAgWzJdIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVj
YWxsIChzdGVwIDEuYi5paWkpCisgICAgICAgIFszXSBodHRwczovL2dpdGh1Yi5jb20vaGV5Y2Ft
L3dlYmlkbC9wdWxsLzE1NQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNp
dC10aGlzLXZhbHVlLmFueS5qcworICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLXJlbW92ZS1m
cmFtZS5odG1sCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUF0
dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NQ2FzdFRoaXNWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZVRoaXNW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmg6IFJlbW92ZWQuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
SlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb246OmNhbGwpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTo6Y2FsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlOjpjYWxsUmV0dXJuaW5nT3duUHJvbWlz
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNE
T01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChX
ZWJDb3JlOjpJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZERvY3VtZW50V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50VGFyZ2V0Q2FzdCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9K
U1JlbW90ZURPTVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrZXJHbG9iYWxTY29w
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b0pTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTV29ya2xldEdsb2JhbFNjb3BlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKFNob3Vs
ZEdlbmVyYXRlVG9KU0RlY2xhcmF0aW9uKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRET01BdHRy
aWJ1dGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
ICAgICAgICAqIHBhZ2UvUmVtb3RlRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5pZGw6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbDoKKwogMjAy
MS0wMy0yNiAgSWFuIEdpbGJlcnQgIDxpYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXJ0eSBs
YXlvdXQgZm9yIGZsb2F0aW5nIGNoaWxkcmVuIG9mIGlubGluZSBvbiBmdWxsIGxheW91dApJbmRl
eDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5oCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKICAgICBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oCi0gICAgYmluZGluZ3MvanMvSlNET01D
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oCisgICAgYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1Zh
bHVlLmgKICAgICBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NQ29udmVydEFueS5oCiAgICAgYmluZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICAgICBFeHBvc2VkPUF1ZGlvV29ya2xldCwKICAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAg
IEltcGxpY2l0VGhpcywKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAg
ICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2Jh
bD0oV29ya2xldCxBdWRpb1dvcmtsZXQpLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc1MTMxKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzcxLDcgKzIzNzEsNiBAQAogCQk3QzgxMzlBNjFFRDYyODZBMDBDRTI2RTggLyog
SlNET01BdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODEzOUEzMUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTUF0dHJpYnV0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDODEzOUE3MUVE
NjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4MTM5QTQxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9N
T3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0M4MTM5QTgxRUQ2Mjg3NDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5n
UHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4MTM5QTUxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdD
ODEzOUFBMUVENjYwNEIwMENFMjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlBOTFF
RDYyREYyMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDODNERTg2MUQwNEND
NUQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2
ZXIuaCAqLzsgfTsKIAkJN0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFu
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0
OTIxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFFMUU0QTMzQUYwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzhFMzQ5MzFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
NjMxLDYgKzI2MzAsNyBAQAogCQk4NDE5RDJBOTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5
dGVTdHJlYW1CdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NDE5RDJBNjEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyLmggKi87IH07CiAJCTg0MTlEMkFEMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0
cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQxOUQyQUIxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgg
Ki87IH07CiAJCTg0MTlEMkJBMTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQy
QjgxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmggKi87IH07CisJCTg0
MUM0NDE2MjYwQzM4RkQwMEZGNjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MUM0NDE0MjYwQzM4QkEwMEZG
NjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NDIyNDE4NDEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDIyNDE4MjEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmggKi87IH07CiAJCTg0MjI0MTk0MTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NDIyNDE5MTEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
ICovOyB9OwogCQk4NDMwMEJENjEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMDBC
RDUxMjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCAqLzsgfTsKQEAgLTEw
NjQ4LDcgKzEwNjQ4LDYgQEAKIAkJN0M4MTM5QTMxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0
cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQXR0cmlidXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE0MUVENjI4MUQwMENFMjZF
OCAvKiBKU0RPTU9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTU9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlBNTFF
RDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzgxMzlBOTFFRDYyREYyMDBDRTI2
RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ByaW5nU29sdmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBX
SExTTFVubmFtZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4
NEYgLyogV0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVk
VHlwZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTkyLDYgKzExMTkx
LDcgQEAKIAkJODQxOUQyQUIxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291
cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkI3MTIwRTBDNzYw
MDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg0MTlEMkI4MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5n
QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU3RyaW5n
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDFDNDQxNDI2MEMzOEJB
MDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRE9NQ2FzdFRoaXNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NDIyNDE4MTEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MjI0MTgyMTA3
RTc3RjQwMDc2NkE4NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MjI0MTkwMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjcyMDgsNyArMjcyMDgsNyBAQAogCQkJCTQxREVGQ0IyMUU1NkMxQjkwMDBEOUU1RiAvKiBK
U0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgKi8sCiAJCQkJN0M0NUM5Q0ExRTNFOEQyRTAwQUFCNTU4
IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmNwcCAqLywKIAkJCQk3QzQ1QzlDOTFFM0U4Q0Q3MDBB
QUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJpdHkuaCAqLywKLQkJCQk3QzgxMzlBOTFFRDYyREYy
MDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oICovLAorCQkJCTg0MUM0
NDE0MjYwQzM4QkEwMEZGNjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCAqLywKIAkJCQk3QzQ1
QzlDQzFFM0U4RjA4MDBBQUI1NTggLyogSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAgKi8sCiAJ
CQkJN0M0NUM5QzcxRTNFOEFGRjAwQUFCNTU4IC8qIEpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCAq
LywKIAkJCQlFMUMzNkNCQzBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuY3Bw
ICovLApAQCAtMzMwNzcsNyArMzMwNzcsNyBAQAogCQkJCTdDNDVDOUQ0MUUzRkNCREYwMEFBQjU1
OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNzMx
RjJBQkU3MTAwMjcyRjc5IC8qIEpTRE9NQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5
MTczMUYyQUJFNzEwMDI3MkY3QSAvKiBKU0RPTUNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJN0M4MTM5QUExRUQ2NjA0QjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTg0MUM0NDE2MjYwQzM4RkQwMEZGNjY3MyAvKiBK
U0RPTUNhc3RUaGlzVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0MyQzM0MUJDMjlBOEYw
MDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4NDEz
NDFDRERCMTU1MDBCMDk1OEMgLyogSlNET01Db252ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzhFMzRBRDFFNEEzM0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QW55LmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaAko
cmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRy
aWJ1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCIKKyNpbmNsdWRlICJK
U0RPTUNhc3RUaGlzVmFsdWUuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDE1ICszNSwxMyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgU3RhdGljU2V0dGVyID0gYm9vbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQ2xhc3MmKTsKICAgICB1c2luZyBTdGF0aWNHZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYpOwotICAgIAotICAgIHN0YXRpYyBKU0NsYXNzKiBjYXN0KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogICAgIHRlbXBsYXRlPFNl
dHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRpYyBib29sIHNldChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
IGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKIAotICAgICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUp
OworICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgaWYgY29uc3RleHBy
IChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3cpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZVNldHRlclR5cGVFcnJvcigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRyaWJ1
dGVOYW1lKTsKQEAgLTY2LDExICs2NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkpOwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgewotICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBBU1NFUlQoY2FzdFRoaXNWYWx1
ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKSk7CiAgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlND
bGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIo
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QpKSkpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVl
PEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgewogICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OlRocm93KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9N
QXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwg
MjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBNaWNoYWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciA6
IHVpbnQ4X3QgeworICAgIFRocm93LAorICAgIFJldHVybkVhcmx5LAorICAgIFJlamVjdFByb21p
c2UsCisgICAgQXNzZXJ0LAorfTsKKworaW5saW5lIEpTQzo6SlNWYWx1ZSBlbnN1cmVUaGlzVmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkg
PyBKU0M6OkpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpIDogdGhpc1ZhbHVlOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBKU0NsYXNzPgoraW5saW5lIEpTQ2xhc3MqIGNhc3RUaGlzVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNET01HbG9iYWxPYmplY3Qs
IEpTQ2xhc3M+KQorICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdDxKU0NsYXNzPih2
bSwgZW5zdXJlVGhpc1ZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNzKj4odm0sIHRo
aXNWYWx1ZSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3IuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2Ft
QHdlYmtpdC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFlbCBQcnVldHQgPG1p
Y2hhZWxANjhrLm9yZz4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNwcmFnbWEg
b25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3IgewotICAgIFRocm93LAotICAgIFJldHVybkVhcmx5LAotICAgIFJlamVjdFByb21p
c2UsCi0gICAgQXNzZXJ0Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw0ICsxNTMsMTkgQEAgV0VCQ09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QmIGNhbGxl
cgogCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgRE9NV3JhcHBlcldvcmxkJik7CiAKK3RlbXBsYXRlPGNsYXNzIEpTQ2xhc3M+
CitpbmxpbmUgSlNDbGFzcyogdG9KU0RPTUdsb2JhbE9iamVjdChKU0M6OlZNJiB2bSwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNE
T01HbG9iYWxPYmplY3QsIEpTQ2xhc3M+KTsKKworICAgIGlmIChKU0M6OkpTT2JqZWN0KiBvYmpl
Y3QgPSB2YWx1ZS5nZXRPYmplY3QoKSkgeworICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxK
U0NsYXNzPih2bSkpCisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNDbGFzcyo+KG9i
amVjdCk7CisgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBKU0M6OlB1cmVGb3J3YXJkaW5n
UHJveHlUeXBlKQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNz
Kj4odm0sIEpTQzo6anNDYXN0PEpTQzo6SlNQcm94eSo+KG9iamVjdCktPnRhcmdldCgpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCShyZXZp
c2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIgorI2luY2x1ZGUgIkpTRE9N
Q2FzdFRoaXNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTQgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSosIENsYXNzUGFyYW1ldGVyKTsKICAgICB1c2luZyBTdGF0aWNPcGVyYXRp
b24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCi0gICAgc3RhdGljIEpTQ2xhc3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6Q2FsbEZyYW1lJik7Ci0KICAgICB0ZW1wbGF0ZTxPcGVyYXRpb24gb3BlcmF0aW9uLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJh
bWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5hbWUpCiAgICAgewogICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0
VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVy
YXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0
aW9uUmV0dXJuaW5nUHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oCShyZXZpc2lvbiAyNzUxMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1By
b21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVy
YXRpb25OYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGNh
bGxQcm9taXNlRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBbJm9wZXJh
dGlvbk5hbWVdIChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpIHsK
LSAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBJRExPcGVyYXRpb248SlNDbGFzcz46OmNh
c3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRo
cm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmVqZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVycm9yKHByb21pc2UuZ2V0KCksIEpTQ2xhc3M6Omlu
Zm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0NsYXNzPjo6T3BlcmF0aW9u
IG9wZXJhdGlvbiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZT4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBjYWxsUmV0dXJuaW5nT3duUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBv
cGVyYXRpb25OYW1lKQogICAgIHsKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IElETE9wZXJh
dGlvbjxKU0NsYXNzPjo6Y2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOworICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogICAgICAgICBpZiBjb25zdGV4cHIg
KHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0Ns
YXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3BlcmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3NywyMyArMjc3LDYgQEAgSlNET01XaW5kb3cqIHRvSlNET01XaW5k
b3coRnJhbWUmIGZyYW1lLAogICAgIHJldHVybiBmcmFtZS5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
d29ybGQpOwogfQogCi1KU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6OlZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgd2hpbGUgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKLSAgICAgICAgaWYgKGNsYXNzSW5m
byA9PSBKU0RPTVdpbmRvdzo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgICAgIGlmIChjbGFzc0luZm8gPT0gSlNXaW5kb3dQcm94
eTo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cq
Pih2bSwganNDYXN0PEpTV2luZG93UHJveHkqPihvYmplY3QpLT53aW5kb3coKSk7Ci0gICAgICAg
IHZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIH0KLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQogRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBhc0pTRE9NV2luZG93KCZjYWxsZXJHbG9iYWxPYmplY3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKSktPndyYXBwZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDcgKzExMyw2IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2IK
IC8vIFRoZSBmb2xsb3dpbmcgcmV0dXJuIGEgSlNET01XaW5kb3cgb3IgbnVsbHB0ci4KIEpTRE9N
V2luZG93KiB0b0pTRE9NV2luZG93KEZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJik7CiBpbmxpbmUg
SlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQm
IHdvcmxkKSB7IHJldHVybiBmcmFtZSA/IHRvSlNET01XaW5kb3coKmZyYW1lLCB3b3JsZCkgOiBu
dWxscHRyOyB9Ci1XRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6
OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gRE9NV2luZG93IGFzc29jaWF0ZWQgd2l0aCBnbG9i
YWwgb2JqZWN0IG9mIHRoZSAibW9zdC1yZWNlbnRseS1lbnRlcmVkIGF1dGhvciBmdW5jdGlvbiBv
ciBzY3JpcHQKIC8vIG9uIHRoZSBzdGFjaywgb3IgdGhlIGF1dGhvciBmdW5jdGlvbiBvciBzY3Jp
cHQgdGhhdCBvcmlnaW5hbGx5IHNjaGVkdWxlZCB0aGUgY3VycmVudGx5LXJ1bm5pbmcgY2FsbGJh
Y2suIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBA
IERFRklORV9WSVNJVF9BRERJVElPTkFMX0NISUxEUkVOKEpTRE9NV2kKIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0RPTVdpbmRvd193ZWJraXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNET01XaW5kb3cq
IGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNET01XaW5kb3cqIGNhc3RlZFRoaXMgPSB0b0pTRE9NR2xvYmFsT2JqZWN0PEpT
RE9NV2luZG93Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKQEAgLTYwNiwxMSArNjA2LDYgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NVwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RGF0YWJhc2U+Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
V2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShpbXBsLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHZlcnNpb24pLCBXVEZNb3ZlKGRpc3BsYXlOYW1lKSwgV1RGTW92ZShl
c3RpbWF0ZWRTaXplKSwgV1RGTW92ZShjcmVhdGlvbkNhbGxiYWNrKSkpKTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3Qo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1l
KQotewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwg
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpF
Q01BTW9kZTo6c2xvcHB5KCkpKTsKLX0KLQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU0RPTVdpbmRvdz46OmNhbGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5E
YXRhYmFzZUJvZHk+KCpnbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvcGVuRGF0YWJhc2UiKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBKU09iamVj
dCogY2FjaGVkRG9jdW1lbnRXcmFwcGVyKEpTR2xvYmFsCiAgICAgaWYgKCF3aW5kb3cpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogZG9jdW1lbnRHbG9iYWxPYmplY3QgPSB0
b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgdG9KUygmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKndpbmRvdykpOworICAgIGF1dG8qIGRvY3VtZW50R2xvYmFsT2JqZWN0ID0gdG9K
U0RPTUdsb2JhbE9iamVjdDxKU0RPTVdpbmRvdz4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCB0
b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAqd2luZG93KSk7CiAgICAgaWYgKCFkb2N1bWVudEds
b2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCShyZXZpc2lv
biAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzCiB7CiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGpzRHlu
YW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHZtLCB0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJn
ZXQpOwotICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZtLCB0aGlzVmFsdWUp
KQorICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NR2xvYmFsT2JqZWN0PEpTRE9NV2luZG93
Pih2bSwgdGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdl
dFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKLSAgICBpZiAoYXV0byogc2Nv
cGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCisgICAgaWYgKGF1dG8q
IHNjb3BlID0gdG9KU0RPTUdsb2JhbE9iamVjdDxKU1dvcmtlckdsb2JhbFNjb3BlPih2bSwgdGhp
c1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+
KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5o
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAg
ICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5
KCkpKTsKKyAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGVu
c3VyZVRoaXNWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkV2
ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMjc1
MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93QmFzZS5oIgogCi0jaW5jbHVkZSAiSlNSZW1v
dGVET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CkBAIC03MSwyMSArNzAsNCBAQCBSdW50aW1lRmxhZ3MgSlNSZW1vdGVET01XaW5k
b3dCYXNlOjpqYXZhCiAgICAgcmV0dXJuIFJ1bnRpbWVGbGFncyB7IH07CiB9CiAKLUpTUmVtb3Rl
RE9NV2luZG93KiB0b0pTUmVtb3RlRE9NV2luZG93KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICB3aGlsZSAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
ID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwotICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpTUmVt
b3RlRE9NV2luZG93OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTUmVtb3Rl
RE9NV2luZG93Kj4ob2JqZWN0KTsKLSAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1dpbmRvd1By
b3h5OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1JlbW90ZURP
TVdpbmRvdyo+KHZtLCBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvdygpKTsK
LSAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgfQot
ICAgIHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2Uu
aAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNXaW5kb3dQcm94eTsKLWNsYXNzIEpTUmVtb3RlRE9N
V2luZG93OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBKU1JlbW90ZURPTVdpbmRvd0Jhc2UgOiBw
dWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogcHVibGljOgpAQCAtNTgsNiArNTcsNCBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxSZW1vdGVET01XaW5kb3c+IG1fd3JhcHBlZDsKIH07CiAKLVdFQkNP
UkVfRVhQT1JUIEpTUmVtb3RlRE9NV2luZG93KiB0b0pTUmVtb3RlRE9NV2luZG93KEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDcgQEAK
ICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2su
aCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNNaWNyb3Rhc2tDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KQEAgLTQzLDExICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvTWljcm90YXNrLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0jaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aCIKLSNlbmRpZgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKQEAgLTE2Niw0OSArMTU5LDQgQEAgSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiwgV29y
a2VyR2xvYgogICAgIHJldHVybiAmY29udGV4dFdyYXBwZXItPnByb3h5KCk7CiB9CiAKLUpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFz
T2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUpKTsKLSAgICBpZiAo
Y2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFz
T2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSlNX
b3JrZXJHbG9iYWxTY29wZSogdG9KU1dvcmtlckdsb2JhbFNjb3BlKFZNJiB2bSwgSlNWYWx1ZSB2
YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUpLT5j
bGFzc0luZm8odm0pOwotICAgIGlmIChjbGFzc0luZm8gPT0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNDYXN0PEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Omlu
Zm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+
KGFzT2JqZWN0KHZhbHVlKSk7Ci0jZW5kaWYKLQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94
eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtlckdsb2JhbFNj
b3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwot
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1K
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogdG9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFz
T2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwotICAgIGlmIChjbGFz
c0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0
KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHJldmlzaW9uIDI3NTEzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDIwICszMyw4IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgiCiAjZW5kaWYKIAotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBKU1Byb3h5Owot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGU7Ci1jbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgV29ya2VyR2xvYmFsU2Nv
cGU7Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1jbGFzcyBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTsKLSNlbmRpZgotCiBjbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSA6IHB1
YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9N
R2xvYmFsT2JqZWN0OwpAQCAtOTIsMTAgKzgwLDQgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6SlNHbG9iYWxPYgogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IFdvcmtlckdsb2JhbFNjb3BlJik7CiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgV29ya2VyR2xvYmFsU2NvcGUqIHNjb3Bl
KSB7IHJldHVybiBzY29wZSA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgKnNjb3BlKSA6IEpT
Qzo6anNOdWxsKCk7IH0KIAotSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogdG9KU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotSlNXb3JrZXJH
bG9iYWxTY29wZSogdG9KU1dvcmtlckdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUp
OwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUqIHRvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
Ci0jZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAkocmV2
aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5o
IgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgotI2luY2x1ZGUgIkpTV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KQEAgLTE0NSwxNiArMTQ0LDQgQEAgSlNWYWx1ZSB0b0pTKEpTR2xv
YmFsT2JqZWN0KiwgV29ya2xldEdsbwogICAgIHJldHVybiAmY29udGV4dFdyYXBwZXItPnByb3h5
KCk7CiB9CiAKLUpTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3BlKFZN
JiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVl
KS0+Y2xhc3NJbmZvKHZtKTsKLQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygp
KQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZSo+KHZt
LCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLQotICAgIHJl
dHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
aAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNz
IFdvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlIDog
cHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsKQEAgLTgwLDYgKzc5LDQgQEAgaW5saW5lIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYgogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFdvcmtsZXRHbG9i
YWxTY29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQogCi1KU1dvcmtsZXRHbG9iYWxTY29wZSogdG9K
U1dvcmtsZXRHbG9iYWxTY29wZShKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzEyLDcgKzE3MTIsNyBAQCBzdWIgU2hvdWxkR2VuZXJhdGVUb0pTRGVjbGFyYXRpb24KIAog
ICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTdXBwcmVz
c1RvSlNPYmplY3R9KTsKICAgICByZXR1cm4gMCBpZiBub3QgTmVlZHNJbXBsZW1lbnRhdGlvbkNs
YXNzKCRpbnRlcmZhY2UpOwotICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH07CisgICAgcmV0dXJuIDAgaWYgSXNET01H
bG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAgICAgcmV0dXJuIDEgaWYgKCEkaGFzUGFyZW50IG9y
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pTR2VuZXJhdGVUb0pTT2JqZWN0fSBv
ciAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Ub0pTT2JqZWN0fSk7CiAg
ICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+cGFyZW50VHlwZSAmJiAkaW50ZXJmYWNlLT5wYXJl
bnRUeXBlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CiAgICAgcmV0dXJuIDEgaWYgQHskaW50ZXJm
YWNlLT5jb25zdHJ1Y3RvcnN9ID4gMCAmJiAhSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFj
ZSk7CkBAIC0yMDQyLDggKzIwNDIsNyBAQCBzdWIgSXNBY2NlbGVyYXRlZERPTUF0dHJpYnV0ZQog
ICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJ
ZGVudGlmaWVyfSBhbmQgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOwogCiAgICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBzcGVjaWFsIGxvZ2ljIGZv
ciBjYXN0aW5nIHdlIGNhbm5vdCBob2lzdCB0eXBlIGNoZWNrIHRvIEpTQy4KLSAgICByZXR1cm4g
MCBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsaWNpdFRoaXN9OwotICAg
IHJldHVybiAwIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5
VG9KU09iamVjdH07CisgICAgcmV0dXJuIDAgaWYgSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFj
ZSk7CiAKICAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICByZXR1cm4g
MCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkVG9NYXBMaWtlfTsK
QEAgLTQ4MjcsMzkgKzQ4MjYsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBHZW5lcmF0ZUdldENhbGxEYXRhKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05h
bWUpOwogICAgIH0KICAgICAKLSAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7Ci0gICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUF0dHJpYnV0ZS5oIik7Ci0KLSAgICAgICAgbXkgJGNh
c3RpbmdGdW5jdGlvbiA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVBy
b3h5VG9KU09iamVjdH0gPyAidG8ke2NsYXNzTmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRo
aXNPYmplY3QoJGludGVyZmFjZSk7Ci0gICAgICAgICMgRklYTUU6IFJlbW92ZSBJbXBsaWNpdFRo
aXMga2V5d29yZCBhcyBpdCBpcyBubyBsb25nZXIgZGVmaW5lZCBieSBXZWJJREwgc3BlYyBhbmQg
aXMgb25seSB1c2VkIGluIERPTVdpbmRvdy4KLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0ltcGxpY2l0VGhpc30pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAidGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFzc05hbWV9KiBJRExBdHRyaWJ1dGU8JHtj
bGFzc05hbWV9Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUo
JmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29kZWRUaGlzVmFsdWUpO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NO
YW1lfSogSURMQXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSlcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGlmICgkbnVtT3BlcmF0aW9ucyA+IDAgJiYgJGludGVyZmFjZU5hbWUgbmUgIkV2ZW50VGFyZ2V0
IikgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01PcGVyYXRpb24uaCIpOwotCi0g
ICAgICAgICMgRklYTUU6IE1ha2UgY29uc2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6Y2FzdCBhbmQg
SURMT3BlcmF0aW9uPD46OmNhc3QgaW4gY2FzZSBvZiBDdXN0b21Qcm94eVRvSlNPYmplY3QuCi0g
ICAgICAgIG15ICRjYXN0aW5nRnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENhc3Rp
bmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICBteSAkdGhpc1ZhbHVl
ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0
fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c2xvcHB5KCkpIiA6ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkiOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURMT3Bl
cmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2Fz
dGluZ0Z1bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAkdGhpc1ZhbHVl
KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfQorICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUF0dHJpYnV0ZS5oIikgaWYgJG51bUF0dHJpYnV0ZXMg
PiAwOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTU9wZXJhdGlvbi5oIikgaWYgJG51bU9w
ZXJhdGlvbnMgPiAwICYmICRpbnRlcmZhY2VOYW1lIG5lICJFdmVudFRhcmdldCI7CiAKICAgICBp
ZiAoTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIG15ICRj
b25zdHJ1Y3RvckdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNv
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMuanNvbgkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsxMjUs
NiBAQAogICAgICAgICAiQ3VzdG9tUHJldmVudEV4dGVuc2lvbnMiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiQ3Vz
dG9tUHJveHlUb0pTT2JqZWN0IjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAgICAgIkN1c3RvbVB1c2hFdmVudEhhbmRsZXJT
Y29wZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAg
ICAgICAgIH0sCkBAIC0yNTIsOSArMjQ5LDYgQEAKICAgICAgICAgIkltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2Ui
XQogICAgICAgICB9LAotICAgICAgICAiSW1wbGljaXRUaGlzIjogewotICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAgICAgIkludGVy
ZmFjZU5hbWUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2Ui
XSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCShyZXZp
c2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTEgKzIwMSw2IEBAIEpTVmFs
dWUgSlNET01XaW5kb3c6OmdldENvbnN0cnVjdG9yKFZNJiAKICAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNET01XaW5kb3dET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
SlNET01XaW5kb3cqIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpA
QCAtMzc5LDQ0ICszNzQsNiBAQCB2b2lkIEpTRE9NV2luZG93OjphbmFseXplSGVhcChKU0NlbGwq
IGNlCiAgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwogfQogCi0jaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVu
dGlmaWVyKCI/P183RE9NV2luZG93QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU5RE9NV2luZG93RVtdOyB9Ci0jZW5k
aWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPERPTVdpbmRvdz4m
JiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0IHZv
aWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOwot
I2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lk
ZW50aWZpZXIoIj8/XzdET01XaW5kb3dAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQq
IGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlOURPTVdpbmRvd0VbMl07Ci0j
ZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgRE9NV2luZG93IGRvZXMgbm90IGhhdmUgYSB2
dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8RE9NV2luZG93Pjo6dmFsdWUsICJET01XaW5kb3cg
aXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9u
IHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBET01XaW5k
b3cgaGFzIHN1YmNsYXNzZXMuIElmIERPTVdpbmRvdyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBw
YXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgRE9NV2luZG93IHlv
dSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBT
a2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5p
dGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRW
VGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPERPTVdpbmRv
dz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRE9NV2luZG93JiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KIERPTVdpbmRvdyog
SlNET01XaW5kb3c6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KHZt
LCB2YWx1ZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDEwICs2OSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mLCBKU1dpbmRvd1Byb3h5Kik7CiB9OwogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBET01XaW5kb3cmKTsKLWlubGlu
ZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01XaW5kb3cqIGltcGwpIHsg
cmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmlt
cGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPERPTVdpbmRvdz4mJik7
Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPERPTVdpbmRvdz4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRl
ZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwo
KSkgOiBKU0M6OmpzTnVsbCgpOyB9CiAKIGNsYXNzIEpTRE9NV2luZG93UHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzUxMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYgQEAg
SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpnZQogICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIElETEF0
dHJpYnV0ZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTEgKzIxNCw2IEBAIHZvaWQgSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3c6OmRlc3Ryb3kKICAgICB0aGlzT2JqZWN0LT5KU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdzo6fkpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KCk7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KiBJRExPcGVyYXRpb248SlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlz
aW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDExICsx
MjMsNiBAQCBKU1ZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvCiAgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSogSURM
QXR0cmlidXRlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19
Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYgQEAgSlNWYWx1ZSBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTo6Z2V0QwogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSogSURMQXR0cmlidXRlPEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MywxNiArMTgzLDYgQEAgdm9pZCBKU1Rlc3RDRVJlYWN0aW9u
czo6ZGVzdHJveShKU0M6OkpTQwogICAgIHRoaXNPYmplY3QtPkpTVGVzdENFUmVhY3Rpb25zOjp+
SlNUZXN0Q0VSZWFjdGlvbnMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFj
dGlvbnMqIElETEF0dHJpYnV0ZTxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zKiBJRExPcGVyYXRpb248SlNUZXN0Q0VS
ZWFjdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJl
YWN0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDE2ICsxNjQsNiBAQCB2b2lkIEpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXI6OmRlc3RyCiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcjo6fkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIoKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogSURMQXR0cmli
dXRlPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19
Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIElETE9w
ZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwCShy
ZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1Niw2
IEBAIHZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmRlc3Ryb3koSlNDOjpKU0MKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RDU1NQcm9wZXJ0eTo6fkpTVGVzdENTU1Byb3BlcnR5KCk7CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdENTU1Byb3BlcnR5KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJv
cGVydHk+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NT
UHJvcGVydHkqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NT
UHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRy
YWNlci5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1
LDE2ICsyMDUsNiBAQCB2b2lkIEpTVGVzdENhbGxUcmFjZXI6OmRlc3Ryb3koSlNDOjpKU0NlCiAg
ICAgdGhpc09iamVjdC0+SlNUZXN0Q2FsbFRyYWNlcjo6fkpTVGVzdENhbGxUcmFjZXIoKTsKIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q2FsbFRyYWNlciogSURMQXR0cmlidXRlPEpTVGVz
dENhbGxUcmFjZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q2FsbFRyYWNlcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENhbGxU
cmFjZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2FsbFRyYWNlcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24g
Mjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODIsMTYgKzQ4Miw2
IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6ZGVzdHJveSgKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjp+SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyogSURMT3Bl
cmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGUuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2OCwxMSArMjY4LDYgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlOjpkZXN0cgogICAgIHRoaXNPYmplY3QtPkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6
On5KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUqIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MDUsMTYgKzYwNSw2IEBAIEpTVmFsdWUgSlNUZXN0RE9NSklUOjpn
ZXRDb25zdHJ1Y3RvcihWTSYKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9N
SklURE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogSURM
QXR0cmlidXRlPEpTVGVzdERPTUpJVD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RET01KSVQqIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdERPTUpJVENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDksMTYgKzI0OSw2IEBAIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNP
Tjo6ZGVzdHJveShKU0M6OkoKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3REZWZhdWx0VG9KU09OOjp+
SlNUZXN0RGVmYXVsdFRvSlNPTigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZh
dWx0VG9KU09OKiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTj46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09OKj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTiogSURMT3BlcmF0aW9u
PEpTVGVzdERlZmF1bHRUb0pTT04+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3REZWZhdWx0VG9KU09OKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNw
cAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MiwxNiArMTgyLDYgQEAgdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZQogICAgIHRoaXNPYmplY3QtPkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZDo6fkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCgpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIElE
TEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwLDE2ICsxNzAsNiBAQCBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0OjpnZXRDCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0KiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdCogSURMT3BlcmF0aW9uPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBj
YWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAyNzUx
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MywxNiArMTcz
LDYgQEAgSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOgogICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwqIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPjo6Y2Fz
dChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWwqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsKiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RmluYWwqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21h
aW5TZWN1cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjc1MTMxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNl
Y3VyaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDE2ICsxODIsNiBAQCB2b2lkIEpTVGVz
dERvbWFpblNlY3VyaXR5OjpkZXN0cm95KEpTQzo6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0RG9t
YWluU2VjdXJpdHk6On5KU1Rlc3REb21haW5TZWN1cml0eSgpOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3REb21haW5TZWN1cml0eSogSURMQXR0cmlidXRlPEpTVGVzdERvbWFpblNlY3Vy
aXR5Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERvbWFp
blNlY3VyaXR5Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RG9tYWluU2Vj
dXJpdHkqIElETE9wZXJhdGlvbjxKU1Rlc3REb21haW5TZWN1cml0eT46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERvbWFpblNlY3VyaXR5Kj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2
aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsMTYgKzI3
Niw2IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6ZGVzdHJveShKU0MKICAgICB0aGlz
T2JqZWN0LT5KU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjp+SlNUZXN0RW5hYmxlZEJ5U2V0dGluZygp
OwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBJRExBdHRy
aWJ1dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyogSURMT3BlcmF0aW9uPEpTVGVzdEVu
YWJsZWRCeVNldHRpbmc+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxMSArMTU0LDYgQEAgdm9pZCBKU1Rlc3RF
bmFibGVkRm9yQ29udGV4dDo6ZGVzdHJveShKUwogICAgIHRoaXNPYmplY3QtPkpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0Ojp+SlNUZXN0RW5hYmxlZEZvckNvbnRleHQoKTsKIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQqIElETEF0dHJpYnV0ZTxKU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjc1MTMx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsMTEgKzI1OCw2IEBAIEpTVmFs
dWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3QKICAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2Fz
dDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBJRExBdHRyaWJ1dGU8SlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIxLDExICsyMjEsNiBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRPd25Qcm9wZXJ0eU5hCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRUYXJnZXQqIElETE9wZXJhdGlvbjxKU1Rlc3RFdmVu
dFRhcmdldD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50
VGFyZ2V0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlz
VmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFdmVudFRhcmdl
dENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEgKzE1Myw2
IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWwKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RFeGNlcHRpb246On5KU1Rlc3RFeGNlcHRpb24oKTsKIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBJRExBdHRyaWJ1dGU8SlNUZXN0RXhjZXB0aW9uPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFeGNlcHRpb25Db25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzLDExICsxNjMsNiBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGU6OmRlc3Ryb3koCiAgICAgdGhpc09iamVjdC0+SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6
fkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSURMQXR0cmlidXRlPEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxMSw3ICs1MTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENv
bXBhY3RIYXNoSW5kZXggSlNUCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RH
bG9iYWxPYmplY3RUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJyZWd1bGFyQXR0cmlidXRlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9yZWd1
bGFyQXR0cmlidXRlKSB9IH0sCisgICAgeyAicmVndWxhckF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RfcmVndWxhckF0dHJpYnV0ZSkgfSB9LAogICAgIHsgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRlQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3B1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUpIH0g
fSwKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIHsgInB1YmxpY0FuZFByaXZhdGVDb25k
aXRpb25hbEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X3B1Ymxp
Y0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdWJs
aWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpIH0gfSwKQEAgLTcxMCwxNiArNzEwLDYg
QEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDOjpKUwogICAgIHRoaXNPYmpl
Y3QtPkpTVGVzdEdsb2JhbE9iamVjdDo6fkpTVGVzdEdsb2JhbE9iamVjdCgpOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9i
YWxPYmplY3Q+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
R2xvYmFsT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0R2xvYmFs
T2JqZWN0KiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKQEAgLTc0MCw3ICs3MzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3Rf
cmVndWxhckF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKIHsK
LSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RH
bG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNU
ZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKQEAgLTE4MjksNDQgKzE4MTksNiBAQCB2b2lkIEpTVGVzdEdsb2JhbE9i
amVjdE93bmVyOjpmaW5hbGl6ZShKCiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RH
bG9iYWxPYmplY3QtPndyYXBwZWQoKSwganNUZXN0R2xvYmFsT2JqZWN0KTsKIH0KIAotI2lmIEVO
QUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRl
bnRpZmllcigiPz9fN1Rlc3RHbG9iYWxPYmplY3RAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vs
c2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE2VGVzdEdsb2JhbE9i
amVjdEVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0R2xvYmFsT2JqZWN0PiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJs
ZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVj
dGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RHbG9iYWxPYmplY3RAV2Vi
Q29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZf
WlRWTjdXZWJDb3JlMTZUZXN0R2xvYmFsT2JqZWN0RVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYg
dGhpcyBmYWlscyBUZXN0R2xvYmFsT2JqZWN0IGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlv
dSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJp
YnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfcG9seW1vcnBoaWM8VGVzdEdsb2JhbE9iamVjdD46OnZhbHVlLCAiVGVzdEdsb2JhbE9iamVj
dCBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRp
b24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3RH
bG9iYWxPYmplY3QgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RHbG9iYWxPYmplY3QgaGFzIHN1YmNs
YXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1
aXJlIFRlc3RHbG9iYWxPYmplY3QgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcK
LSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0
aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRh
YmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJu
IGNyZWF0ZVdyYXBwZXI8VGVzdEdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEdsb2Jh
bE9iamVjdCYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGltcGwpOwotfQotCiBUZXN0R2xvYmFsT2JqZWN0KiBKU1Rlc3RHbG9iYWxP
YmplY3Q6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAg
IGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPih2
bSwgdmFsdWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjc1MTMx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsNiBAQCBpbmxpbmUgdm9pZCog
d3JhcHBlcktleShUZXN0R2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsK
IH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgVGVzdEdsb2JhbE9iamVjdCYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3RHbG9iYWxPYmplY3QqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051
bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RHbG9iYWxPYmplY3Q+JiYpOwotaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxU
ZXN0R2xvYmFsT2JqZWN0PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVk
KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgp
KSA6IEpTQzo6anNOdWxsKCk7IH0KIAogY2xhc3MgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBl
IGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2MSwxMSArMjYxLDYgQEAgYm9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDgsMTYgKzUwOCw2IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpkZXN0
cm95KEpTQzo6SlNDZWwKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RJbnRlcmZhY2U6On5KU1Rlc3RJ
bnRlcmZhY2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBJRExB
dHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdEludGVyZmFjZSogSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MywxMSArMTUzLDYgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZTo6ZAogICAgIHRoaXNPYmplY3QtPkpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlOjp+SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUoKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqIElETEF0dHJp
YnV0ZTxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYs
MTEgKzE2Niw2IEBAIHZvaWQgSlNUZXN0SXRlcmFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwKICAg
ICB0aGlzT2JqZWN0LT5KU1Rlc3RJdGVyYWJsZTo6fkpTVGVzdEl0ZXJhYmxlKCk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdEl0ZXJhYmxlKiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFi
bGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZSo+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
OwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYxLDE2ICsxNjEsNiBAQCB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
OjpkZXN0cm95CiAgICAgdGhpc09iamVjdC0+SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6On5K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogSURMQXR0cmlidXRlPEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IqIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFt
ZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyNzUx
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTYgKzE1Niw2
IEBAIHZvaWQgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q6OmRlc3QKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdDo6fkpTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0KiBJRExBdHRyaWJ1dGU8SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+Ojpj
YXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCogSURMT3BlcmF0aW9uPEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZy
YW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0X3JlYWRvbmx5U3RyaW5nQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDgsMTEgKzIwOCw2IEBAIHZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Z2V0T3cKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExPcGVyYXRpb248SlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDE2ICsxNzksNiBAQCB2b2lkIEpTVGVzdE1hcExpa2U6OmRlc3Ry
b3koSlNDOjpKU0NlbGwqCiAgICAgdGhpc09iamVjdC0+SlNUZXN0TWFwTGlrZTo6fkpTVGVzdE1h
cExpa2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWFwTGlrZSogSURMQXR0cmli
dXRlPEpTVGVzdE1hcExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TWFwTGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE1h
cExpa2UqIElETE9wZXJhdGlvbjxKU1Rlc3RNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsMTYgKzE4Miw2IEBAIHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW8KICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zOjp+SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucygpOwog
fQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zKiBJRExBdHRyaWJ1dGU8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogSURMT3BlcmF0aW9uPEpTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0K
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzMSwxMSArMzMxLDYgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0K
LQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3
NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCwxMSAr
MjI4LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZAogICAgIHJl
dHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxP
YmplY3QsIGluZGV4KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDUsMTEgKzIwNSw2IEBAIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cjo6Z2UKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDExICsyODQsNiBAQCBib29sIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OmRlCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9w
ZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVy
dHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTEgKzMxMSw2IEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9w
ZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lv
biAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSwxMSArMzMxLDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQQogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwg
c2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0K
LQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDE2ICszMDksNiBA
QCBzdGF0aWMgYm9vbCBpc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOCiAgICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
fQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0K
LQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODYsMTYgKzI4Niw2IEBAIHN0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0eU4KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3Is
IHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyog
SURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxs
RnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwot
fQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTksMTYgKzI1OSw2IEBAIEpTVmFsdWUgSlNUZXN0Tm9kZTo6Z2V0
Q29uc3RydWN0b3IoVk0mIHYKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Tm9k
ZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb2RlKiBJRExBdHRy
aWJ1dGU8SlNUZXN0Tm9kZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROb2RlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSog
SURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb2RlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxG
cmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RO
b2RlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24g
Mjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MjIsMTYgKzI1MjIsNiBAQCB2b2lkIEpTVGVz
dE9iajo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iCiAgICAgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T2JqKiBJRExBdHRyaWJ1dGU8SlNUZXN0
T2JqPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
OwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bC5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3NiwxMSArMTc2LDYgQEAgdm9pZCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6ZGVz
dHJveQogICAgIHRoaXNPYmplY3QtPkpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjp+SlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWwoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWwqIElETE9wZXJhdGlvbjxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYg
Y2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50
aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsMTEgKzI1NCw2IEBAIEpTVmFs
dWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXQKICAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogSURMQXR0cmlidXRl
PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtl
LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
MywxNiArMTczLDYgQEAgdm9pZCBKU1Rlc3RSZWFkT25seU1hcExpa2U6OmRlc3Ryb3koSlNDOgog
ICAgIHRoaXNPYmplY3QtPkpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6fkpTVGVzdFJlYWRPbmx5TWFw
TGlrZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RSZWFkT25seU1hcExpa2UqIElE
TEF0dHJpYnV0ZTxKU1Rlc3RSZWFkT25seU1hcExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlNYXBMaWtlKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKiBJRExPcGVyYXRpb248SlNUZXN0
UmVhZE9ubHlNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0UmVhZE9ubHlNYXBMaWtlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDE2ICsxNzEsNiBAQCB2b2lkIEpTVGVzdFJlYWRPbmx5
U2V0TGlrZTo6ZGVzdHJveShKU0M6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0UmVhZE9ubHlTZXRM
aWtlOjp+SlNUZXN0UmVhZE9ubHlTZXRMaWtlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdFJlYWRPbmx5U2V0TGlrZSogSURMQXR0cmlidXRlPEpTVGVzdFJlYWRPbmx5U2V0TGlrZT46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seVNl
dExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RSZWFkT25seVNldExp
a2UqIElETE9wZXJhdGlvbjxKU1Rlc3RSZWFkT25seVNldExpa2U+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seVNldExpa2UqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsMTYgKzE4MSw2IEBAIHZvaWQgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWMKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6On5KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogSURMT3BlcmF0
aW9uPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
dExpa2UuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nywx
NiArMTc3LDYgQEAgdm9pZCBKU1Rlc3RTZXRMaWtlOjpkZXN0cm95KEpTQzo6SlNDZWxsKgogICAg
IHRoaXNPYmplY3QtPkpTVGVzdFNldExpa2U6On5KU1Rlc3RTZXRMaWtlKCk7CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdFNldExpa2UqIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXRMaWtlPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2UqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXRMaWtlKiBJRExPcGVyYXRpb248
SlNUZXN0U2V0TGlrZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNldExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFNldExpa2VD
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDE2
ICsxODAsNiBAQCB2b2lkIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvCiAgICAg
dGhpc09iamVjdC0+SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6fkpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogSURMQXR0cmlidXRlPEpT
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMqIElETE9wZXJhdGlvbjxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAy
NzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1Niw2IEBAIHZvaWQg
SlNUZXN0U3RyaW5naWZpZXI6OmRlc3Ryb3koSlNDOjpKU0MKICAgICB0aGlzT2JqZWN0LT5KU1Rl
c3RTdHJpbmdpZmllcjo6fkpTVGVzdFN0cmluZ2lmaWVyKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdFN0cmluZ2lmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXI+Ojpj
YXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxG
cmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllcio+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwot
fQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYsNiBAQCB2b2lk
IEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uCiAgICAgdGhpc09iamVjdC0+SlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246On5KU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbiogSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OCwxMSArMTU4LDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uOjpkZQogICAgIHRoaXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb246On5KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKCk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24qIElETE9wZXJh
dGlvbjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbio+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQot
CiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bkNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHJldmlzaW9u
IDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTgsMTEgKzE1OCw2IEBAIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnQKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXM6On5KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMoKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKiBJ
RExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjo6Y2Fz
dChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJh
bWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxG
cmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYsNiBAQCB2b2lkIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0CiAgICAgdGhpc09iamVjdC0+SlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjp+SlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyogSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyNzUx
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxNiAr
MTU5LDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOgogICAgIHRo
aXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6On5KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqIElETEF0dHJpYnV0ZTxKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKiBJRExP
cGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1
ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2
aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTYwLDE2ICsxNjAsNiBAQCB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6
On5KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSgpOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSogSURMQXR0cmlidXRl
PEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUqIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzEsMTYgKzI3MSw2IEBAIHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRl
c3Ryb3koSlNDOjpKU0NlbGwKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RUeXBlZGVmczo6fkpTVGVz
dFR5cGVkZWZzKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFR5cGVkZWZzKiBJRExB
dHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RUeXBlZGVmcyogSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJH
bG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxT
Y29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxMSArMTY0LDYgQEAgSlNWYWx1ZSBKU1dv
cmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1YwogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1dvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTV29ya2VyR2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1dvcmtlckdsb2JhbFNjb3BlPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2VyR2xvYmFsU2Nv
cGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMjczLDQ0ICsyNjgsNiBAQCB2b2lk
IEpTV29ya2VyR2xvYmFsU2NvcGU6OmFuYWx5emVIZWFwKEpTCiAgICAgQmFzZTo6YW5hbHl6ZUhl
YXAoY2VsbCwgYW5hbHl6ZXIpOwogfQogCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQot
I2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJu
ICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183V29ya2VyR2xvYmFs
U2NvcGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVybiAiQyIgeyBleHRlcm4g
dm9pZCogX1pUVk43V2ViQ29yZTE3V29ya2VyR2xvYmFsU2NvcGVFW107IH0KLSNlbmRpZgotI2Vu
ZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8V29ya2VyR2xvYmFsU2NvcGU+
JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2
b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsK
LSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19p
ZGVudGlmaWVyKCI/P183V29ya2VyR2xvYmFsU2NvcGVAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQot
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTdXb3JrZXJH
bG9iYWxTY29wZUVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgV29ya2VyR2xv
YmFsU2NvcGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQot
ICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZh
Y2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxXb3Jr
ZXJHbG9iYWxTY29wZT46OnZhbHVlLCAiV29ya2VyR2xvYmFsU2NvcGUgaXMgbm90IHBvbHltb3Jw
aGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2
ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBXb3JrZXJHbG9iYWxTY29wZSBoYXMg
c3ViY2xhc3Nlcy4gSWYgV29ya2VyR2xvYmFsU2NvcGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQg
cGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFdvcmtlckdsb2Jh
bFNjb3BlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRk
aW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJ
REwgZGVmaW5pdGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0g
ZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVy
PFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1K
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3JrZXJHbG9iYWxTY29wZSYgaW1w
bCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGltcGwpOwotfQotCiBXb3JrZXJHbG9iYWxTY29wZSogSlNXb3JrZXJHbG9iYWxTY29wZTo6dG9X
cmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV29ya2VyR2xvYmFsU2NvcGUqPih2bSwgdmFsdWUp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2Vy
R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNzUxMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29w
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMCArNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNDOjpKU1Byb3h5Kik7CiB9OwogCi1KU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBXb3Jr
ZXJHbG9iYWxTY29wZSYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFdvcmtlckdsb2JhbFNjb3BlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4mJik7Ci1pbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFdvcmtlckdsb2Jh
bFNjb3BlPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6
anNOdWxsKCk7IH0KIAogY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSBmaW5hbCA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsMTEgKzEzMyw2IEBAIEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2Nv
cGU6OmdldENvbnN0cnUKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXb3JrbGV0R2xv
YmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNXb3JrbGV0R2xv
YmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1dvcmtsZXRHbG9iYWxTY29wZT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZSo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMTg3LDQ0ICsxODIsNiBAQCB2b2lkIEpTV29ya2xl
dEdsb2JhbFNjb3BlOjphbmFseXplSGVhcChKCiAgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwg
YW5hbHl6ZXIpOwogfQogCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRG
T1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183V29ya2xldEdsb2JhbFNjb3BlQFdl
YkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9a
VFZON1dlYkNvcmUxOFdvcmtsZXRHbG9iYWxTY29wZUVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQot
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1w
bCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lkKiBh
Y3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNpZiBQ
TEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlm
aWVyKCI/P183V29ya2xldEdsb2JhbFNjb3BlQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTE4V29ya2xldEdsb2Jh
bFNjb3BlRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBXb3JrbGV0R2xvYmFs
U2NvcGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQotICAg
IC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
ZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxXb3JrbGV0
R2xvYmFsU2NvcGU+Ojp2YWx1ZSwgIldvcmtsZXRHbG9iYWxTY29wZSBpcyBub3QgcG9seW1vcnBo
aWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZl
IGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFdvcmtsZXRHbG9iYWxTY29wZSBoYXMg
c3ViY2xhc3Nlcy4gSWYgV29ya2xldEdsb2JhbFNjb3BlIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0
IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBXb3JrbGV0R2xv
YmFsU2NvcGUgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBh
ZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9
PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8V29ya2xldEdsb2JhbFNjb3BlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQot
Ci1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUm
IGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKLX0KLQogV29ya2xldEdsb2JhbFNjb3BlKiBKU1dvcmtsZXRHbG9iYWxTY29w
ZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlKj4odm0s
IHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNzUx
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0
R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTAgKzY5LDYgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwogfTsK
IAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgV29ya2xldEdsb2JhbFNjb3BlJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgV29ya2xldEdsb2JhbFNjb3BlKiBpbXBsKSB7IHJldHVybiBpbXBsID8g
dG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNO
dWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOwotaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0
cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNy
ZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25O
dWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQogCiBjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZVBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNyArNDYyLDcgQEAgYm9v
bCBJbnNwZWN0b3JDb250cm9sbGVyOjpjYW5BY2Nlc3NJbnNwZQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogCi0gICAgSlNET01XaW5kb3cqIGluc3BlY3Rl
ZFdpbmRvdyA9IHRvSlNET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgbGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogaW5zcGVjdGVkV2luZG93ID0ganNEeW5hbWljQ2Fz
dDxKU0RPTVdpbmRvdyo+KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCksIGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgIGlmICghaW5zcGVjdGVkV2luZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3NTEzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTAgKzMzLDggQEAKICAgICBDdXN0b21HZXRQcm90b3R5cGUsCiAgICAgQ3VzdG9tSGVhcFNuYXBz
aG90LAogICAgIEN1c3RvbVByZXZlbnRFeHRlbnNpb25zLAotICAgIEN1c3RvbVByb3h5VG9KU09i
amVjdCwKICAgICBDdXN0b21QdXQsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0g
ICAgSW1wbGljaXRUaGlzLAogICAgIEludGVyZmFjZU5hbWU9V2luZG93LAogICAgIElzSW1tdXRh
YmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGlj
T2JqZWN0T25Qcm90b3R5cGUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdp
bmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5k
b3cuaWRsCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURP
TVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDcgQEAKICAgICBDdXN0b21H
ZXRPd25Qcm9wZXJ0eVNsb3QsCiAgICAgQ3VzdG9tR2V0UHJvdG90eXBlLAogICAgIEN1c3RvbVBy
ZXZlbnRFeHRlbnNpb25zLAotICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBDdXN0b21Q
dXQsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIEludGVyZmFjZU5hbWU9V2luZG93LAogICAgIElz
SW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBl
RXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc1MTMx
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw5IEBACiAgKi8KIAogWwotICAgIEN1c3Rv
bVByb3h5VG9KU09iamVjdCwKICAgICBFeHBvc2VkPURlZGljYXRlZFdvcmtlciwKICAgICBHbG9i
YWw9KFdvcmtlcixEZWRpY2F0ZWRXb3JrZXIpLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmpl
Y3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKIF0g
aW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIDogV29ya2VyR2xvYmFsU2NvcGUg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsOSBAQAogICovCiAKIFsKLSAg
ICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCiAgICAgRXhwb3NlZD1Xb3JrZXIsCiAgICAgSlNDdXN0
b21NYXJrRnVuY3Rpb24sCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2Jq
ZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiBd
IGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSA6IEV2ZW50VGFyZ2V0IHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsMTIgKzI0LDEwIEBACiAgKi8KIAogWwotICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwK
ICAgICBHbG9iYWw9KFdvcmtlcixTZXJ2aWNlV29ya2VyKSwKICAgICBFeHBvc2VkPVNlcnZpY2VX
b3JrZXIsCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAgICAgRW5hYmxlZEF0UnVu
dGltZT1TZXJ2aWNlV29ya2VyLAotICAgIEltcGxpY2l0VGhpcywKICAgICBKU0N1c3RvbU1hcmtG
dW5jdGlvbiwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJc0lt
bXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLApJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAkocmV2
aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAgICAgQ29uZGl0
aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBK
U0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIElzSW1tdXRh
YmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGlj
T2JqZWN0T25Qcm90b3R5cGUsCiAgICAgR2xvYmFsPShXb3JrbGV0LFBhaW50V29ya2xldCksCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5pZGwJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCw4IEBACiAqLwogCiBbCi0g
ICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEV4cG9zZWQ9V29ya2xldCwKICAgICBKU0xl
Z2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UsCi0gICAgSW1wbGljaXRUaGlzLAog
ICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJv
dG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiAgICAgR2xvYmFsPVdvcmtsZXQsCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0yNyAgQWxleGV5IFNodmF5a2Eg
IDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gTWFrZSB8dGhpc3wg
dmFsdWUgY2FzdGluZyBjb25zaXN0ZW50IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExPcGVy
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
Mzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBpbmhlcml0czxUYXJnZXQ+IGluc3RlYWQgb2YgdG9KU0RPTVdpbmRvdygpIGlmIHRoZSB2YWx1
ZSBpcyBuZXZlciBhIEpTUHJveHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6
OnJlcG9ydEV4Y2VwdGlvbik6CisKIDIwMjEtMDMtMjYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEdyaWQgbGF5b3V0IGxhYmVscyBj
YW4gYmUgZHJhd24gb3V0c2lkZSB0aGUgdmlld3BvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlcG9ydEV4Y2VwdGlvbihKU0MKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0
IGhhcyBhIERPTVdpbmRvdyBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgdGhpcyBjb250ZXh0IGRp
ZG4ndCBvcmlnaW5hdGUgZnJvbSBhIFBhZ2UuCi0gICAgaWYgKCF0b0pTRE9NV2luZG93KGdsb2Jh
bE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSkKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5o
ZXJpdHM8SlNET01XaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0oKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFs
T2JqZWN0LCBleGNlcHRpb24pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAzLTI3ICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBNYWtlIHx0aGlzfCB2
YWx1ZSBjYXN0aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1dGUgYW5kIElETE9wZXJh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIz
NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IGluaGVyaXRzPFRhcmdldD4gaW5zdGVhZCBvZiB0b0pTRE9NV2luZG93KCkgaWYgdGhlIHZhbHVl
IGlzIG5ldmVyIGEgSlNQcm94eS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKCtbV2ViVmlldyBfcmVwb3J0RXhjZXB0aW9uOmluQ29udGV4dDpdKToKKwogMjAyMS0w
My0yNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkZl
YXR1cmUgY2xhc3MgZmFpbHMgdG8gY29weS9yZXRhaW4gaXRzIGluc3RhbmNlIHZhcmlhYmxlcwpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNp
b24gMjc1MTMxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCArICh2b2lkKV9yZXBvcnRFeGNl
cHRpb246KEpTVmFsdWVSZWYpZXhjCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxP
YmplY3QpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IGhhcyBhIERPTVdpbmRvdyBn
bG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgdGhpcyBjb250ZXh0IGRpZG4ndCBvcmlnaW5hdGUgZnJv
bSBhIFdlYlZpZXcuCi0gICAgaWYgKCFXZWJDb3JlOjp0b0pTRE9NV2luZG93KGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSkKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8
V2ViQ29yZTo6SlNET01XaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0oKSkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRvSlMoZ2xv
YmFsT2JqZWN0LCBleGNlcHRpb24pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAzLTI3ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBNYWtlIHx0aGlz
fCB2YWx1ZSBjYXN0aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1dGUgYW5kIElETE9w
ZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIzNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIGluaGVyaXRzPFRhcmdldD4gaW5zdGVhZCBvZiB0b0pTRE9NV2luZG93KCkgaWYgdGhlIHZh
bHVlIGlzIG5ldmVyIGEgSlNQcm94eS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAg
ICAoV2ViVmlldzo6cmVwb3J0RXhjZXB0aW9uKToKKwogMjAyMS0wMy0yMiAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBKUyBhbmQgQ1NT
IGZpbGVzIG9mIG1lZGlhIGNvbnRyb2xzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2MjEsNyArNjYyMSw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6cmVwb3J0RXhjZXB0aW9uKF9Jbl8gSlMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGds
b2JhbE9iamVjdCk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgaGFzIGEgRE9NV2lu
ZG93IGdsb2JhbCBvYmplY3QsIG90aGVyd2lzZSB0aGlzIGNvbnRleHQgZGlkbid0IG9yaWdpbmF0
ZSBmcm9tIGEgV2ViVmlldy4KLSAgICBpZiAoIXRvSlNET01XaW5kb3coZ2xvYmFsT2JqZWN0LT52
bSgpLCBnbG9iYWxPYmplY3QpKQorICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RP
TVdpbmRvdz4oZ2xvYmFsT2JqZWN0LT52bSgpKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAog
ICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2Jq
ZWN0LCBleGNlcHRpb24pKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTEzMSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTI3
ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2Vi
SURMXSBNYWtlIHx0aGlzfCB2YWx1ZSBjYXN0aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRy
aWJ1dGUgYW5kIElETE9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBqcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJv
dG90eXBlLmh0bWw6IFJlbW92ZWQuCisKIDIwMjEtMDMtMjYgIFJvYmVydCBKZW5uZXIgIDxqZW5u
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgXSBpbnNwZWN0b3IvZGVidWdnZXIvY3Nw
LWV4Y2VwdGlvbnMuaHRtbCBpcyBhIGZsYWtleSB0ZXh0IGZhaWx1cmUKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNr
LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFk
ZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGlj
ay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdp
dGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mt
b3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgot
VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9u
IGFuIEV2ZW50VGFyZ2V0IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHRhcmdldCBub2Rl
cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlv
dSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0
IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0
aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVu
dExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRo
ZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0
IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXRO
b2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNr
LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRk
RXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiA8L2hl
YWQ+CiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRp
bmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gRXZlbnRUYXJnZXQgdXNpbmcgYWRkRXZlbnRMaXN0ZW5l
ciBpcwotICAgICAgIHRoZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2
MTQyKS4gIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cg
d2l0aAotICAgICAgIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNh
ZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgorICAg
ICAgIHRoZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhp
cyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9w
PgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdpdGhCdXR0b24uaHRtbCIgb25sb2FkPSJvbmxvYWRG
b3JCdXR0b25DaGlsZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9y
dGN1dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFNlY3Vy
aXR5RXJyb3I6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGNyb3NzLW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21h
aW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLVRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdo
ZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB3aXRoIHRoZSBzaG9y
dGN1dCAob25jbGljaywgZXRjKSwgaXMgdGhlIHRhcmdldCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9w
cm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxl
cnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVu
c2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMg
dGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBF
dmVudFRhcmdldCB3aXRoIHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgaXMgdGhlIHRhcmdl
dCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2Vz
IGlmIG5vIGVycm9ycyB3ZXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25j
bGljay1zaG9ydGN1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlz
dGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDggKzIzLDcgQEAKIDwvaGVhZD4KIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMg
dGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRh
cmdldCB3aXRoIHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgCi0gICAgICAgaXMgdGhlIHRh
cmdldCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBh
c3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoCi0gICAgICAgdGhlIGRv
bWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJu
aW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CisgICAgICAgaXMgdGhlIHRhcmdldCBu
b2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlm
IG5vIGVycm9ycyB3ZXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CiAgICAgPGlmcmFtZSBp
ZD0idGFyZ2V0Q2hpbGQiIHNyYz0iIj48L2lmcmFtZT4KICAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL2NoaWxkV2l0aEJ1dHRvbi5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckJ1dHRvbkNoaWxkKCk7
Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVu
ZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjog
QmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20g
YWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBw
b3J0cyBtdXN0IG1hdGNoLgotVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5n
IGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHVzaW5nIGFkZEV2ZW50TGlzdGVu
ZXIsIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlz
IHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRv
bWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJu
aW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2Vk
IHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB1c2luZyBh
ZGRFdmVudExpc3RlbmVyLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81
NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhl
IGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBS
ZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRk
RXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw3ICsxNCw2IEBACiAKICAg
ICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CiAgICAgICAgICAgICB2YXIgeGhyQ2hpbGQgPSB3aW5k
b3cuZnJhbWVzWzFdOwotICAgICAgICAgICAgLy8geGhyQ2hpbGQuWEhSLm9wZW4oJ0dFVCcsIG51
bGwsIHRydWUpOwogICAgICAgICAgICAgeGhyQ2hpbGQuWEhSLm9wZW4oIkdFVCIsICIuLi8uLi94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2UpOwogICAgICAgICAgICAg
eGhyQ2hpbGQuWEhSLnNlbmQoIiIpOwogCkBAIC0yNSw4ICsyNCw3IEBACiA8L2hlYWQ+CiA8Ym9k
eT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRM
aXN0ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3QgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciwgCi0g
ICAgICAgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuICBU
aGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgKLSAg
ICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFT
Y3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KKyAgICAgICBpcyB0
aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBh
c3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxp
ZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9
InJlc291cmNlcy9jaGlsZFdpdGhYTUxIdHRwUmVxdWVzdC5odG1sIiBvbmxvYWQ9Im9ubG9hZEZv
clhIUkNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3NTEzMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNz
LVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZy
YW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEg
Y3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLgotVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVu
ZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGggdGhlIHNob3J0Y3V0IChvbnJlYWR5c3RhdGVj
aGFuZ2UpLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4g
VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRo
ZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIg
d2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCitUaGlzIHRlc3RzIHRoYXQgZnJhbWUg
dXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3Qgd2l0
aCB0aGUgc2hvcnRjdXQgKG9ucmVhZHlzdGF0ZWNoYW5nZSksIGlzIHRoZSByZXF1ZXN0cyBmcmFt
ZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIG5vIGVycm9y
cyB3ZXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIv
eHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwJKHJldmlzaW9uIDI3NTEzMSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0
LXNob3J0Y3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKIDwvaGVhZD4K
IDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBl
dmVudExpc3RlbmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBzaG9ydGN1dCAob25y
ZWFkeXN0YXRlY2hhbmdlKSwgCi0gICAgICAgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjov
L3Byb2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4g
YWxlcnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0
IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25z
b2xlLjwvcD4KKyAgICAgICBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81
NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhl
IGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJh
bWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdpdGhYTUxIdHRwUmVxdWVzdC5o
dG1sIiBvbmxvYWQ9Im9ubG9hZEZvclhIUkNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1v
bmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFk
ZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1hZGRF
dmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAK
LUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3Jp
Z2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2lu
IGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhpcyB0
ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRoZSB3
aW5kb3cgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFy
Oi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFu
IGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFu
ICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCitU
aGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24g
dGhlIHdpbmRvdyB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRoZSB3aW5kb3cncyBmcmFtZS4g
KHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIG5vIGVycm9ycyB3
ZXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAy
NzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13
aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDggKzMzLDcgQEAKIDwvaGVhZD4KIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFt
ZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiB0aGUgd2luZG93IHVzaW5nIGFk
ZEV2ZW50TGlzdGVuZXIgaXMgCi0gICAgICAgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRhcjovL3By
b2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxl
cnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFu
ZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xl
LjwvcD4KKyAgICAgICB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQy
KS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNv
bGUuPC9wPgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdpbmRvdy5odG1sIiBvbmxvYWQ9Im9ubG9h
ZEZvckNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3NTEzMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNz
LXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZy
YW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEg
Y3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLgotVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVu
ZXJzIG9uIHRoZSB3aW5kb3cgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIGlzIHRo
ZSB3aW5kb3cncyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFz
c2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAi
bG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxv
Z2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0
dGluZyBldmVudExpc3RlbmVycyBvbiB0aGUgd2luZG93IHdpdGggdGhlIHNob3J0Y3V0IChvbmNs
aWNrLCBldGMpLCBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQy
KS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNv
bGUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94
c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1
dC5odG1sCShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw4ICszMyw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3Rz
IHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRv
dyB3aXRoIHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgCi0gICAgICAgaXMgdGhlIHdpbmRv
dydzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlm
IHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9m
ICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMg
bG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KKyAgICAgICBpcyB0aGUgd2luZG93J3MgZnJhbWUu
IChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMg
d2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENo
aWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdp
bmRvdy5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2Vz
L3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jl
c291cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVy
Lmh0bWwJKHJldmlzaW9uIDI3NTEzMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFk
ZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMSBAQAogICAg
IDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5wYXJlbnQuZnJhbWVzWzFdLmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdidXR0b24nKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBhbGVydCgiZG9jdW1lbnQuZG9t
YWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CisgICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CiAg
ICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICBhbGVydChlKTsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbigpIHt9KTsgLy8gbm8tb3AsIHNob3Vs
ZG4ndCB0aHJvdwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICAgICAgd2luZG93LmxvY2F0aW9u
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUt
aWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3Rl
bmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC5o
dG1sCShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1zaG9y
dGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDExIEBACiAgICAgPHNjcmlwdD4K
ICAgICAgICAgd2luZG93LnBhcmVudC5mcmFtZXNbMV0uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2J1dHRvbicpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICAgICAgYWxlcnQoImRvY3VtZW50LmRvbWFpbjogIiArIHdpbmRvdy5kb2N1bWVudC5k
b21haW4pOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoImRvY3VtZW50LmRvbWFpbjog
IiArIHdpbmRvdy5kb2N1bWVudC5kb21haW4pOwogICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAgICAgICAgICAgYWxlcnQoZSk7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihl
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwg
ZnVuY3Rpb24oKSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cKICAgICAgICAgfQogCiAg
ICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIjsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLVhNTEh0dHBS
ZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1YTUxIdHRw
UmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NTEzMSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxk
LVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NCwxMCArNCwxMSBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5wYXJlbnQuZnJhbWVz
WzFdLlhIUi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICB0cnkgewotICAgICAgICAgICAgICAgIGFsZXJ0KCJkb2N1bWVudC5kb21haW46ICIgKyB3aW5k
b3cuZG9jdW1lbnQuZG9tYWluKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJkb2N1
bWVudC5kb21haW46ICIgKyB3aW5kb3cuZG9jdW1lbnQuZG9tYWluKTsKICAgICAgICAgICAgIH0g
Y2F0Y2goZSkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGUpOworICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoZSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICByZW1vdmVFdmVudExp
c3RlbmVyKG5hbWUsIGZ1bmN0aW9uKCkge30pOyAvLyBuby1vcCwgc2hvdWxkbid0IHRocm93CiAg
ICAgICAgIH0sIGZhbHNlKTsKIAogICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCI7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNl
cy90YXJnZXRDaGlsZC1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3Rhcmdl
dENoaWxkLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwJKHJldmlzaW9uIDI3NTEzMSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3Rhcmdl
dENoaWxkLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQs
MTAgKzQsMTEgQEAKICAgICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cucGFyZW50LmZyYW1lc1sx
XS5YSFIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIGFsZXJ0KCJkb2N1bWVudC5kb21haW46ICIgKyB3aW5kb3cuZG9j
dW1lbnQuZG9tYWluKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJkb2N1bWVudC5k
b21haW46ICIgKyB3aW5kb3cuZG9jdW1lbnQuZG9tYWluKTsKICAgICAgICAgICAgIH0gY2F0Y2go
ZSkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGUpOworICAgICAgICAgICAgICAgIGNvbnNvbGUu
ZXJyb3IoZSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVy
KG5hbWUsIGZ1bmN0aW9uKCkge30pOyAvLyBuby1vcCwgc2hvdWxkbid0IHRocm93CiAgICAgICAg
IH0KIAogICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCI7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13
aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQt
d2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAyNzUxMzEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJn
ZXRDaGlsZC13aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQsMTAgKzQsMTEgQEAKICAgICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cucGFyZW50
LmZyYW1lc1sxXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBhbGVydCgiZG9jdW1lbnQuZG9tYWluOiAiICsg
d2luZG93LmRvY3VtZW50LmRvbWFpbik7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigi
ZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CiAgICAgICAgICAg
ICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICBhbGVydChlKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbigpIHt9KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJv
dwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0
bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNv
dXJjZXMvdGFyZ2V0Q2hpbGQtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90
YXJnZXRDaGlsZC13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzUxMzEp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90
YXJnZXRDaGlsZC13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC00LDEwICs0LDExIEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93LnBhcmVudC5mcmFt
ZXNbMV0ub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICBhbGVydCgiZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFp
bik7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiZG9jdW1lbnQuZG9tYWluOiAiICsg
d2luZG93LmRvY3VtZW50LmRvbWFpbik7CiAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAg
ICAgICAgICAgICBhbGVydChlKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5j
dGlvbigpIHt9KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAgICB9CiAKICAgICAg
ICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNv
dXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjcgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExd
IE1ha2UgfHRoaXN8IHZhbHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIElETEF0dHJpYnV0
ZSBhbmQgSURMT3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2Jh
bC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuanM6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3Qt
aW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFs
LW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1v
cGVuZXItcmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wMy0yNiAgVGltIE5ndXll
biAgPG50aW0uYnVnc0BnbWFpbC5jb20+CiAKICAgICAgICAgQWRkIGludGVycG9sYXRpb24gZm9y
IG9iamVjdC1wb3NpdGlvbiBDU1MgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1w
bGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEgQEAKKworUEFTUyBHbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxl
ZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitGQUlMIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgdGhy
b3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgYXNzZXJ0X3Rocm93c19qczog
ZnVuY3Rpb24gIigpID0+IHsgT2JqZWN0LmNyZWF0ZShnbG9iYWxUaGlzKS5vcmlnaW4gPSBvcmln
aW47IH0iIGRpZCBub3QgdGhyb3cKK1BBU1MgR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJv
d3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBHbG9iYWwgb2JqZWN0
J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1
bWVudC5hbGwpCitQQVNTIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVk
IG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkKK1BBU1MgR2xvYmFsIG9iamVj
dCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAo
ZG9jdW1lbnQuYWxsKQorUEFTUyBHbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHdvcmtzIHdoZW4gY2Fs
bGVkIG9uIG51bGwgLyB1bmRlZmluZWQKK1BBU1MgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3Jr
cyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCitQQVNTIEdsb2JhbCBvYmplY3QncyBv
cGVyYXRpb24gd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFs
dWUuYW55Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3Qt
aW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBA
Cis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dl
YklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVl
LmFueS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNp
dC10aGlzLXZhbHVlLmFueS5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFs
LW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDgyIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlciAKKworLy8gaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMS4xLjIu
MSkKKy8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtc2V0
dGVyIChzdGVwIDQuNS4xKQorLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZu
LWNyZWF0ZS1vcGVyYXRpb24tZnVuY3Rpb24gKHN0ZXAgMi4xLjIuMSkKKworY29uc3Qgbm90R2xv
YmFsT2JqZWN0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhp
cykpOworCit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4geyBPYmplY3QuY3JlYXRlKGdsb2JhbFRoaXMpLnNlbGY7IH0pOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldEdsb2JhbFByb3BlcnR5RGVzY3JpcHRvcigibG9j
YXRpb24iKS5nZXQuY2FsbChub3RHbG9iYWxPYmplY3QpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChnbG9iYWxUaGlzLCAibmF2aWdhdG9y
Iiwgbm90R2xvYmFsT2JqZWN0KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
ICgpID0+IHsgbmV3IFByb3h5KGdsb2JhbFRoaXMsIHt9KS5vbmVycm9yOyB9KTsKK30sICJHbG9i
YWwgb2JqZWN0J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2Jq
ZWN0Iik7CisKK3Rlc3QoKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiB7IE9iamVjdC5jcmVhdGUoZ2xvYmFsVGhpcykub3JpZ2luID0gb3JpZ2luOyB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXRHbG9iYWxQcm9wZXJ0eURl
c2NyaXB0b3IoIm9uZXJyb3IiKS5zZXQuY2FsbChub3RHbG9iYWxPYmplY3QsIG9uZXJyb3IpOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LnNldChn
bG9iYWxUaGlzLCAib25vZmZsaW5lIiwgb25vZmZsaW5lLCBub3RHbG9iYWxPYmplY3QpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkoZ2xvYmFs
VGhpcywge30pLm9ub25saW5lID0gb25vbmxpbmU7IH0pOworfSwgIkdsb2JhbCBvYmplY3QncyBz
ZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsKKwordGVz
dCgoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0
LmNyZWF0ZShnbG9iYWxUaGlzKS5zZXRUaW1lb3V0KCgpID0+IHt9LCAxMDApOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBjbGVhclRpbWVvdXQuY2FsbChub3RH
bG9iYWxPYmplY3QsICgpID0+IHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IHsgUmVmbGVjdC5hcHBseShidG9hLCBub3RHbG9iYWxPYmplY3QsIFsiIl0pOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkoZ2xv
YmFsVGhpcywge30pLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvbyIsICgpID0+IHt9KTsgfSk7Cit9
LCAiR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21w
YXRpYmxlIG9iamVjdCIpOworCitpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIikg
eworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgImRvY3VtZW50
IikuZ2V0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAgfSwgIkdsb2JhbCBvYmplY3QncyBn
ZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50
LmFsbCkiKTsKKworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywg
Im5hbWUiKS5zZXQuY2FsbChkb2N1bWVudC5hbGwpOyB9KTsKKyAgICB9LCAiR2xvYmFsIG9iamVj
dCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAoZG9j
dW1lbnQuYWxsKSIpOworCisgICAgdGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGFsZXJ0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAg
fSwgIkdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29t
cGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkiKTsKK30KKworY29uc3QgbG9jYXRpb25HZXR0
ZXIgPSBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoImxvY2F0aW9uIikuZ2V0OwordGVzdCgo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoInNl
bGYiKS5nZXQuY2FsbChudWxsKSwgc2VsZik7CisgICAgYXNzZXJ0X2VxdWFscygoKCkgPT4gbG9j
YXRpb25HZXR0ZXIoKSkoKSwgbG9jYXRpb24pOworICAgIGFzc2VydF9lcXVhbHMoUmVmbGVjdC5n
ZXQoZ2xvYmFsVGhpcywgIm9yaWdpbiIsIG51bGwpLCBvcmlnaW4pOworICAgIGFzc2VydF9lcXVh
bHMoUmVmbGVjdC5nZXQoZ2xvYmFsVGhpcywgIm9ub2ZmbGluZSIsIHVuZGVmaW5lZCksIG9ub2Zm
bGluZSk7Cit9LCAiR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBu
dWxsIC8gdW5kZWZpbmVkIik7CisKK3Rlc3QoKCkgPT4geworICAgIGNvbnN0IGZuID0gKCkgPT4g
e307CisKKyAgICBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9yaWdpbiIpLnNldC5jYWxs
KG51bGwsICJmb28iKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9yaWdpbiwgImZvbyIpOworICAgIGdl
dEdsb2JhbFByb3BlcnR5RGVzY3JpcHRvcigib25lcnJvciIpLnNldC5jYWxsKHVuZGVmaW5lZCwg
Zm4pOworICAgIGFzc2VydF9lcXVhbHMob25lcnJvciwgZm4pOworICAgIGFzc2VydF90cnVlKFJl
ZmxlY3Quc2V0KGdsb2JhbFRoaXMsICJvbm9mZmxpbmUiLCBmbiwgbnVsbCkpOworICAgIGFzc2Vy
dF9lcXVhbHMob25vZmZsaW5lLCBmbik7CisKKyAgICBjb25zdCBvbm9ubGluZVNldHRlciA9IGdl
dEdsb2JhbFByb3BlcnR5RGVzY3JpcHRvcigib25vbmxpbmUiKS5zZXQ7CisgICAgKCgpID0+IHsg
b25vbmxpbmVTZXR0ZXIoZm4pOyB9KSgpOworICAgIGFzc2VydF9lcXVhbHMob25vbmxpbmUsIGZu
KTsKK30sICJHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwg
LyB1bmRlZmluZWQiKTsKKworY29uc3QgX19hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0
ZW5lcjsKK3Rlc3QoKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoYXRvYi5jYWxsKG51bGwsICIi
KSwgIiIpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mICgwLCBzZXRJbnRlcnZhbCkoKCkgPT4g
e30sIDEwMCksICJudW1iZXIiKTsKKworICAgICgoKSA9PiB7IF9fYWRkRXZlbnRMaXN0ZW5lcigi
Zm9vIiwgZXZlbnQgPT4geyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9KTsgfSkoKTsKKyAgICBj
b25zdCBfX2Rpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50OworICAgICgoKSA9PiB7IGFzc2Vy
dF9mYWxzZShfX2Rpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJmb28iLCB7IGNhbmNlbGFibGU6IHRy
dWUgfSkpKTsgfSkoKTsKK30sICJHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHdvcmtzIHdoZW4g
Y2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQiKTsKKworZnVuY3Rpb24gZ2V0R2xvYmFsUHJvcGVy
dHlEZXNjcmlwdG9yKGtleSkgeworICAgIGZvciAobGV0IG9iaiA9IGdsb2JhbFRoaXM7IG9iajsg
b2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpIHsKKyAgICAgICAgY29uc3QgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpOworICAgICAgICBpZiAo
ZGVzYykgcmV0dXJuIGRlc2M7CisgICAgfQorfQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1v
YmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9i
YWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRl
ciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBHbG9iYWwg
b2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0
CitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGlu
Y29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVu
IGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCitQQVNTIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIg
d29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFTUyBHbG9iYWwgb2JqZWN0
J3Mgb3BlcmF0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNt
YXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29y
a2VyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGlj
aXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5k
aW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3Bl
bmVyLXJlbW92ZS1mcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1i
ZWRkZWQtb3BlbmVyLXJlbW92ZS1mcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTEzMSkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIG9wZW5lciBvZiBkaXNjYXJkZWQg
bmVzdGVkIGJyb3dzaW5nIGNvbnRleHQgVGhlIFdpbmRvdy5vcGVuZXIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdwotRkFJTCBvcGVuZXIgb2YgZGlzY2FyZGVk
IGF1eGlsaWFyeSBicm93c2luZyBjb250ZXh0IFRoZSBXaW5kb3cub3BlbmVyIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKK1BBU1Mgb3BlbmVyIG9mIGRpc2Nh
cmRlZCBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dAorUEFTUyBvcGVuZXIgb2YgZGlzY2FyZGVkIGF1
eGlsaWFyeSBicm93c2luZyBjb250ZXh0CiAKSW5kZXg6IExheW91dFRlc3RzL2pzL3Byb3BlcnR5
LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMt
cHJvdG90eXBlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDQgKzAsMCBAQAotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExh
eW91dFRlc3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLmh0
bWwJKHJldmlzaW9uIDI3NTEzMSkKKysrIExheW91dFRlc3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRv
dy1hcy1wcm90b3R5cGUuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLS8vIFNvIGxvbmcgYXMgdGhlIGxpbmUgYmVsb3cgZG9l
c24ndCBjcmFzaCwgdGhpcyB0ZXN0IHBhc3Nlcy4KLU9iamVjdC5jcmVhdGUod2luZG93KS5sb2Nh
dGlvbjsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="444126"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424448</attachid>
            <date>2021-03-27 05:10:11 -0700</date>
            <delta_ts>2021-05-11 00:32:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223758-20210327141008.patch</filename>
            <type>text/plain</type>
            <size>172743</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtOTc3LDYgKzk3Nyw3IEBAIG9wIDpyZXNv
bHZlX3Njb3BlLAogICAgICAgICAjICRiZWdpbjogOnByaXZhdGUsCiAgICAgICAgIHJlc29sdmVU
eXBlOiBSZXNvbHZlVHlwZSwKICAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwKKyAg
ICAgICAgdGhpc1ZhbHVlRm9yQ2FsbD86IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7CiAgICAgICAgIHJlc29sdmVUeXBlOiBSZXNvbHZlVHlwZSwgIyBvZmZzZXQgNApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNyArNDM3LDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogICAgIERFRlMoT3BQdXNo
V2l0aFNjb3BlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZUxleGljYWxFbnZpcm9ubWVudCwgZHN0
KQogICAgIERFRlMoT3BDcmVhdGVHZW5lcmF0b3JGcmFtZUVudmlyb25tZW50LCBkc3QpCi0gICAg
REVGUyhPcFJlc29sdmVTY29wZSwgZHN0KQorICAgIERFRlMoT3BSZXNvbHZlU2NvcGUsIHRoaXNW
YWx1ZUZvckNhbGwsIGRzdCkKICAgICBERUZTKE9wUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5j
RGVjbEluRXZhbCwgZHN0KQogICAgIERFRlMoT3BTdHJjYXQsIGRzdCkKICAgICBERUZTKE9wVG9Q
cmltaXRpdmUsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjM4NSw3ICsyMzg1LDcgQEAgUmVzb2x2ZVR5cGUgQnl0ZWNv
ZGVHZW5lcmF0b3I6OnJlc29sdmVUeQogICAgIHJldHVybiBHbG9iYWxQcm9wZXJ0eTsKIH0KIAot
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVTY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2FsbCkKIHsKICAgICBzd2l0Y2gg
KHZhcmlhYmxlLm9mZnNldCgpLmtpbmQoKSkgewogICAgIGNhc2UgVmFyS2luZDo6U3RhY2s6CkBA
IC0yNDIyLDggKzI0MjIsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXNvbAogICAgIGNhc2UgVmFyS2luZDo6SW52YWxpZDoKICAgICAgICAgLy8gSW5kaWNhdGVzIG5v
bi1sb2NhbCByZXNvbHV0aW9uLgogICAgICAgICAKKyAgICAgICAgaWYgKCF0aGlzVmFsdWVGb3JD
YWxsKQorICAgICAgICAgICAgdGhpc1ZhbHVlRm9yQ2FsbCA9IG5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICBkc3QgPSB0ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICAgICAgT3BSZXNvbHZlU2NvcGU6
OmVtaXQodGhpcywga2lsbChkc3QpLCBzY29wZVJlZ2lzdGVyKCksIGFkZENvbnN0YW50KHZhcmlh
YmxlLmlkZW50KCkpLCByZXNvbHZlVHlwZSgpLCBsb2NhbFNjb3BlRGVwdGgoKSk7CisgICAgICAg
IE9wUmVzb2x2ZVNjb3BlOjplbWl0KHRoaXMsIGtpbGwoZHN0KSwgc2NvcGVSZWdpc3RlcigpLCBh
ZGRDb25zdGFudCh2YXJpYWJsZS5pZGVudCgpKSwgcmVzb2x2ZVR5cGUoKSwgbG9jYWxTY29wZURl
cHRoKCksIHRoaXNWYWx1ZUZvckNhbGwpOwogICAgICAgICByZXR1cm4gZHN0OwogICAgIH0KICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtODg1LDcgKzg4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlc29sdmVUeXBl
IHJlc29sdmVUeXBlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRM
b2NhbChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxlJik7Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0aGlzVmFsdWVGb3JDYWxsID0gbnVsbHB0cik7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZXNvbHZlTW9kZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJs
ZSYsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSwgSW5pdGlhbGl6YXRpb25Nb2RlKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3LDE4
ICsxMjc3LDE2IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWkKICAg
ICAgICAgZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogCisgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGlm
IChsb2NhbCkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5vRXhw
ZWN0ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBpcyBp
biBhCiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBvdXIg
YnVpbHQtaW4gY29uc3RydWN0b3JzLgogICAgICAgICBleHBlY3RlZEZ1bmN0aW9uID0gTm9FeHBl
Y3RlZEZ1bmN0aW9uOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rp
dm90ID0gZGl2b3RTdGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0g
ICAgICAgIGdlbmVyYXRvci5tb3ZlKAotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhcikpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIsIFRo
cm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhciwgY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGZ1bmMuZ2V0KCksIG51bGxwdHIpOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTY1LDcgKzMxNjUsOCBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEpTT2JqZWN0KiByZXNvbHZlZFNj
b3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNjb3BlLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBpbXBsKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWVGb3JDYWxsOworICAgIEpT
T2JqZWN0KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNj
b3BlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKSwgdGhpc1ZhbHVlRm9yQ2FsbCk7CiAg
ICAgcmV0dXJuIHJlc29sdmVkU2NvcGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjc1MTMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIyNSw5ICsxMjI1LDEyIEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1df
UEFUSChzbG93X3BhdGhfcmUKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fc2NvcGUpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEpT
T2JqZWN0KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNj
b3BlLCBpZGVudCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWVGb3JDYWxsOworICAgIEpTT2JqZWN0
KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNjb3BlLCBp
ZGVudCwgdGhpc1ZhbHVlRm9yQ2FsbCk7CiAgICAgLy8gUHJveHkgY2FuIHRocm93IGFuIGVycm9y
IGhlcmUsIGUuZy4gUHJveHkgaW4gd2l0aCBzdGF0ZW1lbnQncyBAdW5zY29wYWJsZXMuCiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKHRoaXNWYWx1ZUZvckNhbGwpCisgICAgICAgIEdF
VChieXRlY29kZS5tX3RoaXNWYWx1ZUZvckNhbGwpID0gdGhpc1ZhbHVlRm9yQ2FsbDsKIAogICAg
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9yZXNvbHZlVHlwZTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI3
NTEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVW5zY29w
YWJsZShKU0dsb2JhbAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5QcmVkaWNhdGVGdW5j
dG9yLCB0eXBlbmFtZSBTa2lwUHJlZGljYXRlRnVuY3Rvcj4KLUFMV0FZU19JTkxJTkUgSlNPYmpl
Y3QqIEpTU2NvcGU6OnJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29w
ZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9y
IHJldHVyblByZWRpY2F0ZSwgU2tpcFByZWRpY2F0ZUZ1bmN0b3Igc2tpcFByZWRpY2F0ZSkKK0FM
V0FZU19JTkxJTkUgSlNPYmplY3QqIEpTU2NvcGU6OnJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBKU1Zh
bHVlJiB0aGlzVmFsdWVGb3JDYWxsLCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9yIHJldHVyblByZWRp
Y2F0ZSwgU2tpcFByZWRpY2F0ZUZ1bmN0b3Igc2tpcFByZWRpY2F0ZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC0yNDIsOCArMjQyLDExIEBAIEFMV0FZU19JTkxJTkUgSlNPYmplY3Qq
IEpTU2NvcGU6OnJlc29sdmUKICAgICAgICAgICAgICAgICBKU09iamVjdCogZXh0ZW5zaW9uU2Nv
cGVPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKGdsb2JhbFNjb3BlRXh0ZW5zaW9uKTsK
ICAgICAgICAgICAgICAgICBoYXNQcm9wZXJ0eSA9IGV4dGVuc2lvblNjb3BlT2JqZWN0LT5oYXNQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIGlmIChoYXNQ
cm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGdsb2JhbFNjb3BlRXh0ZW5zaW9uLT50eXBlKCkgPT0gV2l0aFNjb3Bl
VHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZUZvckNhbGwgPSBKU1ZhbHVlKGV4
dGVuc2lvblNjb3BlT2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dGVuc2lv
blNjb3BlT2JqZWN0OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTI1Niw4ICsyNTksMTEgQEAgQUxXQVlT
X0lOTElORSBKU09iamVjdCogSlNTY29wZTo6cmVzb2x2ZQogICAgICAgICBpZiAoaGFzUHJvcGVy
dHkpIHsKICAgICAgICAgICAgIGJvb2wgdW5zY29wYWJsZSA9IGlzVW5zY29wYWJsZShnbG9iYWxP
YmplY3QsIHNjb3BlLCBvYmplY3QsIGlkZW50KTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkgfHwgIXVuc2NvcGFibGUpOwotICAgICAgICAgICAg
aWYgKCF1bnNjb3BhYmxlKQorICAgICAgICAgICAgaWYgKCF1bnNjb3BhYmxlKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNjb3BlLT50eXBlKCkgPT0gV2l0aFNjb3BlVHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgdGhpc1ZhbHVlRm9yQ2FsbCA9IEpTVmFsdWUob2JqZWN0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHJldHVyblByZWRpY2F0ZShzY29wZSkpCkBAIC0yNzYsNyArMjgyLDggQEAgSlNWYWx1ZSBK
U1Njb3BlOjpyZXNvbHZlU2NvcGVGb3JIb2lzdGluZwogICAgIGF1dG8gc2tpcFByZWRpY2F0ZSA9
IFsmXSAoSlNTY29wZSogc2NvcGUpIC0+IGJvb2wgewogICAgICAgICByZXR1cm4gc2NvcGUtPmlz
V2l0aFNjb3BlKCk7CiAgICAgfTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gcmVzb2x2ZShnbG9i
YWxPYmplY3QsIHNjb3BlLCBpZGVudCwgcmV0dXJuUHJlZGljYXRlLCBza2lwUHJlZGljYXRlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZUZvckNhbGw7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHJl
c29sdmUoZ2xvYmFsT2JqZWN0LCBzY29wZSwgaWRlbnQsIHRoaXNWYWx1ZUZvckNhbGwsIHJldHVy
blByZWRpY2F0ZSwgc2tpcFByZWRpY2F0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKQEAgLTI5MSw3ICsyOTgs
NyBAQCBKU1ZhbHVlIEpTU2NvcGU6OnJlc29sdmVTY29wZUZvckhvaXN0aW5nCiAgICAgcmV0dXJu
IHJlc3VsdCA/IEpTVmFsdWUob2JqZWN0KSA6IGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTT2JqZWN0
KiBKU1Njb3BlOjpyZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUq
IHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK0pTT2JqZWN0KiBKU1Njb3BlOjpyZXNv
bHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgSlNWYWx1ZSYgdGhpc1ZhbHVlRm9yQ2FsbCkKIHsKICAgICBhdXRv
IHByZWRpY2F0ZTEgPSBbJl0gKEpTU2NvcGUqKSAtPiBib29sIHsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjk5LDcgKzMwNiw3IEBAIEpTT2JqZWN0KiBKU1Njb3BlOjpyZXNvbHZlKEpTR2xv
YmFsT2JqZWMKICAgICBhdXRvIHByZWRpY2F0ZTIgPSBbJl0gKEpTU2NvcGUqKSAtPiBib29sIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07Ci0gICAgcmV0dXJuIHJlc29sdmUoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgaWRlbnQsIHByZWRpY2F0ZTEsIHByZWRpY2F0ZTIpOworICAgIHJldHVy
biByZXNvbHZlKGdsb2JhbE9iamVjdCwgc2NvcGUsIGlkZW50LCB0aGlzVmFsdWVGb3JDYWxsLCBw
cmVkaWNhdGUxLCBwcmVkaWNhdGUyKTsKIH0KIAogUmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0
UmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgZGVwdGhPZmZzZXQs
IEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0T3JQdXQgZ2V0T3JQ
dXQsIFJlc29sdmVUeXBlIHVubGlua2VkVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxp
emF0aW9uTW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgSlNPYmplY3QqIG9iamVjdEF0U2NvcGUoSlNTY29wZSopOwogCi0gICAgc3RhdGljIEpTT2Jq
ZWN0KiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICBzdGF0aWMgSlNPYmplY3QqIHJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBKU1Njb3Bl
KiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUmIHRoaXNWYWx1ZUZvckNhbGwpOwogICAgIHN0
YXRpYyBKU1ZhbHVlIHJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoSlNHbG9i
YWxPYmplY3QqLCBKU1Njb3BlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIHN0YXRpYyBSZXNv
bHZlT3AgYWJzdHJhY3RSZXNvbHZlKEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IGRlcHRoT2Zmc2V0
LCBKU1Njb3BlKiwgY29uc3QgSWRlbnRpZmllciYsIEdldE9yUHV0LCBSZXNvbHZlVHlwZSwgSW5p
dGlhbGl6YXRpb25Nb2RlKTsKIApAQCAtODgsNyArODgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNT
Y29wZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqIG5leHQpOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0dXJuUHJlZGljYXRlRnVuY3RvciwgdHlwZW5hbWUgU2tpcFByZWRpY2F0ZUZ1bmN0
b3I+Ci0gICAgc3RhdGljIEpTT2JqZWN0KiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNTY29w
ZSosIGNvbnN0IElkZW50aWZpZXImLCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9yLCBTa2lwUHJlZGlj
YXRlRnVuY3Rvcik7CisgICAgc3RhdGljIEpTT2JqZWN0KiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0
KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlJiB0aGlzVmFsdWVGb3JDYWxs
LCBSZXR1cm5QcmVkaWNhdGVGdW5jdG9yLCBTa2lwUHJlZGljYXRlRnVuY3Rvcik7CiAKIHByaXZh
dGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTU2NvcGU+IG1fbmV4dDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDk1IEBACisyMDIxLTAzLTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBNYWtlIHx0aGlzfCB2YWx1ZSBjYXN0
aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1dGUgYW5kIElETE9wZXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaDoK
KworICAgICAgICAxLiBSZW1vdmVzIHByb3RvdHlwZSBjaGFpbiB0cmF2ZXJzYWwgZnJvbSB0b0pT
RE9NV2luZG93KCksIHdoaWNoIGZpeGVzCisgICAgICAgICAgIGBPYmplY3QuY3JlYXRlKHdpbmRv
dykubG9jYXRpb25gIHRvIHRocm93IGFzIHBlciBzcGVjIFsxXSwgYWxpZ25pbmcgV2ViS2l0Cisg
ICAgICAgICAgIHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAgICAgIDIuIE1lcmdlcyB0b0pT
RE9NV2luZG93KCkgYW5kIGZyaWVuZHMgaW50byB0b0pTRE9NR2xvYmFsT2JqZWN0PEpTQ2xhc3M+
IHRoYXQKKyAgICAgICAgICAgaGFuZGxlcyBpbmhlcml0YW5jZSBhbmQgdW53cmFwcyBKU1Byb3h5
LiBUaGlzIGZpeGVzIGBnbG9iYWxUaGlzLnJlZ2lzdGVyUGFpbnQoLi4uKWAKKyAgICAgICAgICAg
aW5zaWRlIGEgd29ya2xldCBub3QgdG8gdGhyb3cuCisKKyAgICAgICAgMy4gRXh0cmFjdHMgY2Fz
dFRoaXNWYWx1ZTxKU0NsYXNzPiB0aGF0IHVzZXMgY29tcGlsZS10aW1lIGluaGVyaXRhbmNlIGNo
ZWNrCisgICAgICAgICAgIHRvIHByb3ZpZGUgaW1wbGljaXQgfHRoaXN8IHZhbHVlIGZvciBET00g
Z2xvYmFsIG9iamVjdHMsIHdoaWNoIGZpeGVzIGF0dHJpYnV0ZQorICAgICAgICAgICBnZXR0ZXIg
LyBzZXR0ZXIsIGNhbGxlZCBvbiBhbiBlbnZpcm9ubWVudCByZWNvcmQsIG5vdCB0byB0aHJvdyBh
cyBwZXIgc3BlYyBbMl0uCisKKyAgICAgICAgNC4gUmVtb3ZlcyBbSW1wbGljaXRUaGlzXSBhbmQg
W0N1c3RvbVByb3h5VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlcyBiZWNhdXNlCisgICAg
ICAgICAgIGFsbCBET00gZ2xvYmFsIG9iamVjdHMgYXJlIHdyYXBwZWQgaW4gYSBKU1Byb3h5IGFu
ZCByZXF1aXJlIHNwZWNpYWwgY2FzdGluZy4KKworICAgICAgICAgICBbSW1wbGljaXRUaGlzXSB3
YXMgcmVtb3ZlZCBmcm9tIHRoZSBzcGVjIFszXSBhIHdoaWxlIGFnbywgYW5kIGl0IHdhcyB0cmlj
a3kgbm90CisgICAgICAgICAgIHRvIG1pc3MgW0N1c3RvbVByb3h5VG9KU09iamVjdF0gd2hlbiBh
ZGRpbmcgYSBuZXcgRE9NIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgNS4gUmVwbGFjZXMgdG9U
aGlzKCkgd2l0aCBlbnN1cmVUaGlzVmFsdWUoKSB0byBhdm9pZCBub24taW5saW5hYmxlIG1ldGhv
ZCB0YWJsZSBjYWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJlZHVjZXMgV2ViQ29yZSAtLXJl
bGVhc2UgYmluYXJ5IHNpemUgYnkgMC4zJSAoMjQ4IEtCKS4KKworICAgICAgICBbMV0gaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMS4x
LjIuMykKKyAgICAgICAgWzJdIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVj
YWxsIChzdGVwIDEuYi5paWkpCisgICAgICAgIFszXSBodHRwczovL2dpdGh1Yi5jb20vaGV5Y2Ft
L3dlYmlkbC9wdWxsLzE1NQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNp
dC10aGlzLXZhbHVlLmFueS5qcworICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLXJlbW92ZS1m
cmFtZS5odG1sCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUF0
dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NQ2FzdFRoaXNWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZVRoaXNW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmg6IFJlbW92ZWQuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
SlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb246OmNhbGwpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTo6Y2FsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlOjpjYWxsUmV0dXJuaW5nT3duUHJvbWlz
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNE
T01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChX
ZWJDb3JlOjpJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZERvY3VtZW50V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50VGFyZ2V0Q2FzdCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9K
U1JlbW90ZURPTVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrZXJHbG9iYWxTY29w
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b0pTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTV29ya2xldEdsb2JhbFNjb3BlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKFNob3Vs
ZEdlbmVyYXRlVG9KU0RlY2xhcmF0aW9uKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRET01BdHRy
aWJ1dGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
ICAgICAgICAqIHBhZ2UvUmVtb3RlRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5pZGw6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbDoKKwogMjAy
MS0wMy0yNiAgSWFuIEdpbGJlcnQgIDxpYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXJ0eSBs
YXlvdXQgZm9yIGZsb2F0aW5nIGNoaWxkcmVuIG9mIGlubGluZSBvbiBmdWxsIGxheW91dApJbmRl
eDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5oCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKICAgICBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oCi0gICAgYmluZGluZ3MvanMvSlNET01D
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oCisgICAgYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1Zh
bHVlLmgKICAgICBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NQ29udmVydEFueS5oCiAgICAgYmluZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICAgICBFeHBvc2VkPUF1ZGlvV29ya2xldCwKICAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAg
IEltcGxpY2l0VGhpcywKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAg
ICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2Jh
bD0oV29ya2xldCxBdWRpb1dvcmtsZXQpLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc1MTMxKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzcxLDcgKzIzNzEsNiBAQAogCQk3QzgxMzlBNjFFRDYyODZBMDBDRTI2RTggLyog
SlNET01BdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODEzOUEzMUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTUF0dHJpYnV0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDODEzOUE3MUVE
NjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4MTM5QTQxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9N
T3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0M4MTM5QTgxRUQ2Mjg3NDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5n
UHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4MTM5QTUxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdD
ODEzOUFBMUVENjYwNEIwMENFMjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlBOTFF
RDYyREYyMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDODNERTg2MUQwNEND
NUQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2
ZXIuaCAqLzsgfTsKIAkJN0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFu
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0
OTIxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFFMUU0QTMzQUYwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzhFMzQ5MzFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
NjMxLDYgKzI2MzAsNyBAQAogCQk4NDE5RDJBOTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5
dGVTdHJlYW1CdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NDE5RDJBNjEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyLmggKi87IH07CiAJCTg0MTlEMkFEMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0
cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQxOUQyQUIxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgg
Ki87IH07CiAJCTg0MTlEMkJBMTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQy
QjgxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmggKi87IH07CisJCTg0
MUM0NDE2MjYwQzM4RkQwMEZGNjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MUM0NDE0MjYwQzM4QkEwMEZG
NjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NDIyNDE4NDEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDIyNDE4MjEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmggKi87IH07CiAJCTg0MjI0MTk0MTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NDIyNDE5MTEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
ICovOyB9OwogCQk4NDMwMEJENjEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMDBC
RDUxMjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCAqLzsgfTsKQEAgLTEw
NjQ4LDcgKzEwNjQ4LDYgQEAKIAkJN0M4MTM5QTMxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0
cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQXR0cmlidXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE0MUVENjI4MUQwMENFMjZF
OCAvKiBKU0RPTU9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTU9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlBNTFF
RDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzgxMzlBOTFFRDYyREYyMDBDRTI2
RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ByaW5nU29sdmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBX
SExTTFVubmFtZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg1QjIwNDIyRkIwNjMyMDAzMDY4
NEYgLyogV0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbm5hbWVk
VHlwZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTkyLDYgKzExMTkx
LDcgQEAKIAkJODQxOUQyQUIxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291
cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkI3MTIwRTBDNzYw
MDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg0MTlEMkI4MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5n
QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU3RyaW5n
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDFDNDQxNDI2MEMzOEJB
MDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRE9NQ2FzdFRoaXNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NDIyNDE4MTEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MjI0MTgyMTA3
RTc3RjQwMDc2NkE4NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MjI0MTkwMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjcyMDgsNyArMjcyMDgsNyBAQAogCQkJCTQxREVGQ0IyMUU1NkMxQjkwMDBEOUU1RiAvKiBK
U0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgKi8sCiAJCQkJN0M0NUM5Q0ExRTNFOEQyRTAwQUFCNTU4
IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmNwcCAqLywKIAkJCQk3QzQ1QzlDOTFFM0U4Q0Q3MDBB
QUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJpdHkuaCAqLywKLQkJCQk3QzgxMzlBOTFFRDYyREYy
MDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oICovLAorCQkJCTg0MUM0
NDE0MjYwQzM4QkEwMEZGNjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCAqLywKIAkJCQk3QzQ1
QzlDQzFFM0U4RjA4MDBBQUI1NTggLyogSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAgKi8sCiAJ
CQkJN0M0NUM5QzcxRTNFOEFGRjAwQUFCNTU4IC8qIEpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCAq
LywKIAkJCQlFMUMzNkNCQzBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuY3Bw
ICovLApAQCAtMzMwNzcsNyArMzMwNzcsNyBAQAogCQkJCTdDNDVDOUQ0MUUzRkNCREYwMEFBQjU1
OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNzMx
RjJBQkU3MTAwMjcyRjc5IC8qIEpTRE9NQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5
MTczMUYyQUJFNzEwMDI3MkY3QSAvKiBKU0RPTUNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJN0M4MTM5QUExRUQ2NjA0QjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTg0MUM0NDE2MjYwQzM4RkQwMEZGNjY3MyAvKiBK
U0RPTUNhc3RUaGlzVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0MyQzM0MUJDMjlBOEYw
MDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4NDEz
NDFDRERCMTU1MDBCMDk1OEMgLyogSlNET01Db252ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzhFMzRBRDFFNEEzM0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QW55LmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaAko
cmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRy
aWJ1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCIKKyNpbmNsdWRlICJK
U0RPTUNhc3RUaGlzVmFsdWUuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDE1ICszNSwxMyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgU3RhdGljU2V0dGVyID0gYm9vbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQ2xhc3MmKTsKICAgICB1c2luZyBTdGF0aWNHZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYpOwotICAgIAotICAgIHN0YXRpYyBKU0NsYXNzKiBjYXN0KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogICAgIHRlbXBsYXRlPFNl
dHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRpYyBib29sIHNldChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
IGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKIAotICAgICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUp
OworICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgaWYgY29uc3RleHBy
IChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3cpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZVNldHRlclR5cGVFcnJvcigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRyaWJ1
dGVOYW1lKTsKQEAgLTY2LDExICs2NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkpOwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgewotICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBBU1NFUlQoY2FzdFRoaXNWYWx1
ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKSk7CiAgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlND
bGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIo
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QpKSkpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVl
PEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgewogICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OlRocm93KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9N
QXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwg
MjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBNaWNoYWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciA6
IHVpbnQ4X3QgeworICAgIFRocm93LAorICAgIFJldHVybkVhcmx5LAorICAgIFJlamVjdFByb21p
c2UsCisgICAgQXNzZXJ0LAorfTsKKworaW5saW5lIEpTQzo6SlNWYWx1ZSBlbnN1cmVUaGlzVmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkg
PyBKU0M6OkpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpIDogdGhpc1ZhbHVlOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBKU0NsYXNzPgoraW5saW5lIEpTQ2xhc3MqIGNhc3RUaGlzVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNET01HbG9iYWxPYmplY3Qs
IEpTQ2xhc3M+KQorICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdDxKU0NsYXNzPih2
bSwgZW5zdXJlVGhpc1ZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNzKj4odm0sIHRo
aXNWYWx1ZSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3IuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2Ft
QHdlYmtpdC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFlbCBQcnVldHQgPG1p
Y2hhZWxANjhrLm9yZz4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNwcmFnbWEg
b25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3IgewotICAgIFRocm93LAotICAgIFJldHVybkVhcmx5LAotICAgIFJlamVjdFByb21p
c2UsCi0gICAgQXNzZXJ0Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw0ICsxNTMsMTkgQEAgV0VCQ09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QmIGNhbGxl
cgogCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgRE9NV3JhcHBlcldvcmxkJik7CiAKK3RlbXBsYXRlPGNsYXNzIEpTQ2xhc3M+
CitpbmxpbmUgSlNDbGFzcyogdG9KU0RPTUdsb2JhbE9iamVjdChKU0M6OlZNJiB2bSwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNE
T01HbG9iYWxPYmplY3QsIEpTQ2xhc3M+KTsKKworICAgIGlmIChKU0M6OkpTT2JqZWN0KiBvYmpl
Y3QgPSB2YWx1ZS5nZXRPYmplY3QoKSkgeworICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxK
U0NsYXNzPih2bSkpCisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNDbGFzcyo+KG9i
amVjdCk7CisgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBKU0M6OlB1cmVGb3J3YXJkaW5n
UHJveHlUeXBlKQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNz
Kj4odm0sIEpTQzo6anNDYXN0PEpTQzo6SlNQcm94eSo+KG9iamVjdCktPnRhcmdldCgpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCShyZXZp
c2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIgorI2luY2x1ZGUgIkpTRE9N
Q2FzdFRoaXNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTQgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSosIENsYXNzUGFyYW1ldGVyKTsKICAgICB1c2luZyBTdGF0aWNPcGVyYXRp
b24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCi0gICAgc3RhdGljIEpTQ2xhc3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6Q2FsbEZyYW1lJik7Ci0KICAgICB0ZW1wbGF0ZTxPcGVyYXRpb24gb3BlcmF0aW9uLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJh
bWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5hbWUpCiAgICAgewogICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0
VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVy
YXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0
aW9uUmV0dXJuaW5nUHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oCShyZXZpc2lvbiAyNzUxMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1By
b21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVy
YXRpb25OYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGNh
bGxQcm9taXNlRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBbJm9wZXJh
dGlvbk5hbWVdIChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpIHsK
LSAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBJRExPcGVyYXRpb248SlNDbGFzcz46OmNh
c3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRo
cm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmVqZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVycm9yKHByb21pc2UuZ2V0KCksIEpTQ2xhc3M6Omlu
Zm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0NsYXNzPjo6T3BlcmF0aW9u
IG9wZXJhdGlvbiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZT4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBjYWxsUmV0dXJuaW5nT3duUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBv
cGVyYXRpb25OYW1lKQogICAgIHsKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IElETE9wZXJh
dGlvbjxKU0NsYXNzPjo6Y2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOworICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogICAgICAgICBpZiBjb25zdGV4cHIg
KHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0Ns
YXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3BlcmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3NywyMyArMjc3LDYgQEAgSlNET01XaW5kb3cqIHRvSlNET01XaW5k
b3coRnJhbWUmIGZyYW1lLAogICAgIHJldHVybiBmcmFtZS5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
d29ybGQpOwogfQogCi1KU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6OlZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgd2hpbGUgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKLSAgICAgICAgaWYgKGNsYXNzSW5m
byA9PSBKU0RPTVdpbmRvdzo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgICAgIGlmIChjbGFzc0luZm8gPT0gSlNXaW5kb3dQcm94
eTo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cq
Pih2bSwganNDYXN0PEpTV2luZG93UHJveHkqPihvYmplY3QpLT53aW5kb3coKSk7Ci0gICAgICAg
IHZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIH0KLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQogRE9NV2luZG93JiBpbmN1bWJlbnRET01XaW5kb3coSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBhc0pTRE9NV2luZG93KCZjYWxsZXJHbG9iYWxPYmplY3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKSktPndyYXBwZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDcgKzExMyw2IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2IK
IC8vIFRoZSBmb2xsb3dpbmcgcmV0dXJuIGEgSlNET01XaW5kb3cgb3IgbnVsbHB0ci4KIEpTRE9N
V2luZG93KiB0b0pTRE9NV2luZG93KEZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJik7CiBpbmxpbmUg
SlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQm
IHdvcmxkKSB7IHJldHVybiBmcmFtZSA/IHRvSlNET01XaW5kb3coKmZyYW1lLCB3b3JsZCkgOiBu
dWxscHRyOyB9Ci1XRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6
OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gRE9NV2luZG93IGFzc29jaWF0ZWQgd2l0aCBnbG9i
YWwgb2JqZWN0IG9mIHRoZSAibW9zdC1yZWNlbnRseS1lbnRlcmVkIGF1dGhvciBmdW5jdGlvbiBv
ciBzY3JpcHQKIC8vIG9uIHRoZSBzdGFjaywgb3IgdGhlIGF1dGhvciBmdW5jdGlvbiBvciBzY3Jp
cHQgdGhhdCBvcmlnaW5hbGx5IHNjaGVkdWxlZCB0aGUgY3VycmVudGx5LXJ1bm5pbmcgY2FsbGJh
Y2suIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBA
IERFRklORV9WSVNJVF9BRERJVElPTkFMX0NISUxEUkVOKEpTRE9NV2kKIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0RPTVdpbmRvd193ZWJraXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNET01XaW5kb3cq
IGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNET01XaW5kb3cqIGNhc3RlZFRoaXMgPSB0b0pTRE9NR2xvYmFsT2JqZWN0PEpT
RE9NV2luZG93Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKQEAgLTYwNiwxMSArNjA2LDYgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NVwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RGF0YWJhc2U+Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
V2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShpbXBsLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHZlcnNpb24pLCBXVEZNb3ZlKGRpc3BsYXlOYW1lKSwgV1RGTW92ZShl
c3RpbWF0ZWRTaXplKSwgV1RGTW92ZShjcmVhdGlvbkNhbGxiYWNrKSkpKTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3Qo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1l
KQotewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwg
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpF
Q01BTW9kZTo6c2xvcHB5KCkpKTsKLX0KLQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU0RPTVdpbmRvdz46OmNhbGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5E
YXRhYmFzZUJvZHk+KCpnbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvcGVuRGF0YWJhc2UiKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBKU09iamVj
dCogY2FjaGVkRG9jdW1lbnRXcmFwcGVyKEpTR2xvYmFsCiAgICAgaWYgKCF3aW5kb3cpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogZG9jdW1lbnRHbG9iYWxPYmplY3QgPSB0
b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgdG9KUygmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKndpbmRvdykpOworICAgIGF1dG8qIGRvY3VtZW50R2xvYmFsT2JqZWN0ID0gdG9K
U0RPTUdsb2JhbE9iamVjdDxKU0RPTVdpbmRvdz4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCB0
b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAqd2luZG93KSk7CiAgICAgaWYgKCFkb2N1bWVudEds
b2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCShyZXZpc2lv
biAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzCiB7CiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGpzRHlu
YW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHZtLCB0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJn
ZXQpOwotICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZtLCB0aGlzVmFsdWUp
KQorICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NR2xvYmFsT2JqZWN0PEpTRE9NV2luZG93
Pih2bSwgdGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdl
dFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKLSAgICBpZiAoYXV0byogc2Nv
cGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCisgICAgaWYgKGF1dG8q
IHNjb3BlID0gdG9KU0RPTUdsb2JhbE9iamVjdDxKU1dvcmtlckdsb2JhbFNjb3BlPih2bSwgdGhp
c1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+
KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5o
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAg
ICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5
KCkpKTsKKyAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGVu
c3VyZVRoaXNWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkV2
ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMjc1
MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93QmFzZS5oIgogCi0jaW5jbHVkZSAiSlNSZW1v
dGVET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CkBAIC03MSwyMSArNzAsNCBAQCBSdW50aW1lRmxhZ3MgSlNSZW1vdGVET01XaW5k
b3dCYXNlOjpqYXZhCiAgICAgcmV0dXJuIFJ1bnRpbWVGbGFncyB7IH07CiB9CiAKLUpTUmVtb3Rl
RE9NV2luZG93KiB0b0pTUmVtb3RlRE9NV2luZG93KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICB3aGlsZSAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
ID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwotICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpTUmVt
b3RlRE9NV2luZG93OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTUmVtb3Rl
RE9NV2luZG93Kj4ob2JqZWN0KTsKLSAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1dpbmRvd1By
b3h5OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1JlbW90ZURP
TVdpbmRvdyo+KHZtLCBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvdygpKTsK
LSAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgfQot
ICAgIHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2Uu
aAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNXaW5kb3dQcm94eTsKLWNsYXNzIEpTUmVtb3RlRE9N
V2luZG93OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBKU1JlbW90ZURPTVdpbmRvd0Jhc2UgOiBw
dWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogcHVibGljOgpAQCAtNTgsNiArNTcsNCBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxSZW1vdGVET01XaW5kb3c+IG1fd3JhcHBlZDsKIH07CiAKLVdFQkNP
UkVfRVhQT1JUIEpTUmVtb3RlRE9NV2luZG93KiB0b0pTUmVtb3RlRE9NV2luZG93KEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDcgQEAK
ICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2su
aCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNNaWNyb3Rhc2tDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KQEAgLTQzLDExICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvTWljcm90YXNrLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0jaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aCIKLSNlbmRpZgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKQEAgLTE2Niw0OSArMTU5LDQgQEAgSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiwgV29y
a2VyR2xvYgogICAgIHJldHVybiAmY29udGV4dFdyYXBwZXItPnByb3h5KCk7CiB9CiAKLUpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFz
T2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUpKTsKLSAgICBpZiAo
Y2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFz
T2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSlNX
b3JrZXJHbG9iYWxTY29wZSogdG9KU1dvcmtlckdsb2JhbFNjb3BlKFZNJiB2bSwgSlNWYWx1ZSB2
YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUpLT5j
bGFzc0luZm8odm0pOwotICAgIGlmIChjbGFzc0luZm8gPT0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNDYXN0PEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Omlu
Zm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+
KGFzT2JqZWN0KHZhbHVlKSk7Ci0jZW5kaWYKLQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94
eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtlckdsb2JhbFNj
b3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwot
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1K
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogdG9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFz
T2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwotICAgIGlmIChjbGFz
c0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0
KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHJldmlzaW9uIDI3NTEzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDIwICszMywxMCBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2VuZGlmCiAKLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgSlNQcm94eTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlOwotY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFdvcmtlckdsb2JhbFNj
b3BlOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotY2xhc3MgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU7Ci0jZW5kaWYKLQogY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UgOiBw
dWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0RP
TUdsb2JhbE9iamVjdDsKQEAgLTkyLDEwICs4Miw0IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkpTR2xvYmFsT2IKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBXb3JrZXJHbG9iYWxTY29wZSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFdvcmtlckdsb2JhbFNjb3BlKiBzY29w
ZSkgeyByZXR1cm4gc2NvcGUgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsICpzY29wZSkgOiBK
U0M6OmpzTnVsbCgpOyB9CiAKLUpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLUpTV29ya2Vy
R2xvYmFsU2NvcGUqIHRvSlNXb3JrZXJHbG9iYWxTY29wZShKU0M6OlZNJiwgSlNDOjpKU1ZhbHVl
KTsKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLUpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKiB0b0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUp
OwotI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAJKHJl
dmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEds
b2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNs
dWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2su
aCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC0xNDUsMTYgKzE0NCw0IEBAIEpTVmFsdWUgdG9KUyhKU0ds
b2JhbE9iamVjdCosIFdvcmtsZXRHbG8KICAgICByZXR1cm4gJmNvbnRleHRXcmFwcGVyLT5wcm94
eSgpOwogfQogCi1KU1dvcmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxTY29wZShW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBjbGFzc0luZm8gPSBhc09iamVjdCh2YWx1
ZSktPmNsYXNzSW5mbyh2bSk7Ci0KLSAgICBpZiAoY2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8o
KSkKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2NvcGUqPih2
bSwganNDYXN0PEpTUHJveHkqPihhc09iamVjdCh2YWx1ZSkpLT50YXJnZXQoKSk7Ci0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmgJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFz
cyBXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSA6
IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CkBAIC04MCw2ICs3OSw0IEBAIGlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2IKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKIGlubGluZSBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xv
YmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVj
dCwgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KIAotSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRv
SlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMTcxMiw3ICsxNzEyLDcgQEAgc3ViIFNob3VsZEdlbmVyYXRlVG9KU0RlY2xhcmF0aW9uCiAK
ICAgICByZXR1cm4gMCBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U3VwcHJl
c3NUb0pTT2JqZWN0fSk7CiAgICAgcmV0dXJuIDAgaWYgbm90IE5lZWRzSW1wbGVtZW50YXRpb25D
bGFzcygkaW50ZXJmYWNlKTsKLSAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9OworICAgIHJldHVybiAwIGlmIElzRE9N
R2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpOwogICAgIHJldHVybiAxIGlmICghJGhhc1BhcmVudCBv
ciAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0dlbmVyYXRlVG9KU09iamVjdH0g
b3IgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tVG9KU09iamVjdH0pOwog
ICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPnBhcmVudFR5cGUgJiYgJGludGVyZmFjZS0+cGFy
ZW50VHlwZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiOwogICAgIHJldHVybiAxIGlmIEB7JGludGVy
ZmFjZS0+Y29uc3RydWN0b3JzfSA+IDAgJiYgIUhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZh
Y2UpOwpAQCAtMjA0Miw4ICsyMDQyLDcgQEAgc3ViIElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUK
ICAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRl
SWRlbnRpZmllcn0gYW5kIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKTsKIAogICAgICMgSWYgdGhlIGludGVyZmFjZSBoYXMgc3BlY2lhbCBsb2dpYyBm
b3IgY2FzdGluZyB3ZSBjYW5ub3QgaG9pc3QgdHlwZSBjaGVjayB0byBKU0MuCi0gICAgcmV0dXJu
IDAgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGljaXRUaGlzfTsKLSAg
ICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94
eVRvSlNPYmplY3R9OworICAgIHJldHVybiAwIGlmIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZh
Y2UpOwogCiAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJu
IDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZFRvTWFwTGlrZX07
CkBAIC00ODI3LDM5ICs0ODI2LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgR2VuZXJhdGVHZXRDYWxsRGF0YShcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgewotICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01BdHRyaWJ1dGUuaCIpOwotCi0gICAgICAgIG15ICRj
YXN0aW5nRnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Q
cm94eVRvSlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JU
aGlzT2JqZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICAjIEZJWE1FOiBSZW1vdmUgSW1wbGljaXRU
aGlzIGtleXdvcmQgYXMgaXQgaXMgbm8gbG9uZ2VyIGRlZmluZWQgYnkgV2ViSURMIHNwZWMgYW5k
IGlzIG9ubHkgdXNlZCBpbiBET01XaW5kb3cuCi0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntJbXBsaWNpdFRoaXN9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURMQXR0cmlidXRlPCR7
Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKGRlY29kZWRUaGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzbG9wcHkoKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKHZtLCBkZWNvZGVkVGhpc1ZhbHVlKTtcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2NsYXNz
TmFtZX0qIElETEF0dHJpYnV0ZTwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpXG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoJG51bU9wZXJhdGlvbnMgPiAwICYmICRpbnRlcmZhY2VOYW1lIG5lICJFdmVudFRhcmdl
dCIpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NT3BlcmF0aW9uLmgiKTsKLQot
ICAgICAgICAjIEZJWE1FOiBNYWtlIGNvbnNpc3RlbnQgSURMQXR0cmlidXRlPD46OmNhc3QgYW5k
IElETE9wZXJhdGlvbjw+OjpjYXN0IGluIGNhc2Ugb2YgQ3VzdG9tUHJveHlUb0pTT2JqZWN0Lgot
ICAgICAgICBteSAkY2FzdGluZ0Z1bmN0aW9uID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJ0byR7Y2xhc3NOYW1lfSIgOiBHZXRDYXN0
aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKTsKLSAgICAgICAgbXkgJHRoaXNWYWx1
ZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVj
dH0gPyAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnNsb3BweSgpKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2NsYXNzTmFtZX0qIElETE9w
ZXJhdGlvbjwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNh
c3RpbmdGdW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJHRoaXNWYWx1
ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0KKyAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01BdHRyaWJ1dGUuaCIpIGlmICRudW1BdHRyaWJ1dGVz
ID4gMDsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01PcGVyYXRpb24uaCIpIGlmICRudW1P
cGVyYXRpb25zID4gMCAmJiAkaW50ZXJmYWNlTmFtZSBuZSAiRXZlbnRUYXJnZXQiOwogCiAgICAg
aWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewogICAgICAgICBteSAk
Y29uc3RydWN0b3JHZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3Ii
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpz
b24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb24JKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsOSArMTI1
LDYgQEAKICAgICAgICAgIkN1c3RvbVByZXZlbnRFeHRlbnNpb25zIjogewogICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKLSAgICAgICAgIkN1
c3RvbVByb3h5VG9KU09iamVjdCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJDdXN0b21QdXNoRXZlbnRIYW5kbGVy
U2NvcGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQog
ICAgICAgICB9LApAQCAtMjUyLDkgKzI0OSw2IEBACiAgICAgICAgICJJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNl
Il0KICAgICAgICAgfSwKLSAgICAgICAgIkltcGxpY2l0VGhpcyI6IHsKLSAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJJbnRl
cmZhY2VOYW1lIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNl
Il0sCiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkocmV2
aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDExICsyMDEsNiBAQCBKU1Zh
bHVlIEpTRE9NV2luZG93OjpnZXRDb25zdHJ1Y3RvcihWTSYgCiAgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTRE9NV2luZG93KiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
QEAgLTM3OSw0NCArMzc0LDYgQEAgdm9pZCBKU0RPTVdpbmRvdzo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZQogICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKIH0KIAotI2lmIEVO
QUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRl
bnRpZmllcigiPz9fN0RPTVdpbmRvd0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0
ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlOURPTVdpbmRvd0VbXTsgfQotI2Vu
ZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxET01XaW5kb3c+
JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2
b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsK
LSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19p
ZGVudGlmaWVyKCI/P183RE9NV2luZG93QFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTlET01XaW5kb3dFWzJdOwot
I2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIERPTVdpbmRvdyBkb2VzIG5vdCBoYXZlIGEg
dnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPERPTVdpbmRvdz46OnZhbHVlLCAiRE9NV2luZG93
IGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlv
biB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gRE9NV2lu
ZG93IGhhcyBzdWJjbGFzc2VzLiBJZiBET01XaW5kb3cgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQg
cGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIERPTVdpbmRvdyB5
b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUg
U2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmlu
aXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVk
VlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxET01XaW5k
b3c+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIERPTVdpbmRvdyYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiBET01XaW5kb3cq
IEpTRE9NV2luZG93Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPih2
bSwgdmFsdWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSwxMCArNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJiwgSlNXaW5kb3dQcm94eSopOwogfTsKIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgRE9NV2luZG93Jik7Ci1pbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NV2luZG93KiBpbXBsKSB7
IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICpp
bXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxET01XaW5kb3c+JiYp
OwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZlB0cjxET01XaW5kb3c+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0
ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxs
KCkpIDogSlNDOjpqc051bGwoKTsgfQogCiBjbGFzcyBKU0RPTVdpbmRvd1Byb3RvdHlwZSBmaW5h
bCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjc1MTMx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTEgKzEyMyw2IEBA
IEpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Z2UKICAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKiBJRExB
dHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDExICsyMTQsNiBAQCB2b2lkIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93OjpkZXN0cm95CiAgICAgdGhpc09iamVjdC0+SlNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3c6On5KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdygpOwogfQogCi10ZW1wbGF0
ZTw+IGlubGluZSBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyogSURMT3BlcmF0aW9uPEpTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZp
c2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSAr
MTIzLDYgQEAgSlNWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpnZXRDbwogICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIElE
TEF0dHJpYnV0ZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
fQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsMTEgKzEyMyw2IEBAIEpTVmFsdWUgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OmdldEMKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTYgKzE4Myw2IEBAIHZvaWQgSlNUZXN0Q0VSZWFjdGlv
bnM6OmRlc3Ryb3koSlNDOjpKU0MKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDRVJlYWN0aW9uczo6
fkpTVGVzdENFUmVhY3Rpb25zKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVh
Y3Rpb25zKiBJRExBdHRyaWJ1dGU8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9ucyogSURMT3BlcmF0aW9uPEpTVGVzdENF
UmVhY3Rpb25zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VS
ZWFjdGlvbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENFUmVhY3Rp
b25zQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxNiArMTY0LDYgQEAgdm9pZCBKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpkZXN0cgogICAgIHRoaXNPYmplY3QtPkpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXI6On5KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKCk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIElETEF0dHJp
YnV0ZTxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
fQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBJRExP
cGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAko
cmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYs
NiBAQCB2b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpkZXN0cm95KEpTQzo6SlNDCiAgICAgdGhpc09i
amVjdC0+SlNUZXN0Q1NTUHJvcGVydHk6On5KU1Rlc3RDU1NQcm9wZXJ0eSgpOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RDU1NQcm9wZXJ0eSogSURMQXR0cmlidXRlPEpTVGVzdENTU1By
b3BlcnR5Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENT
U1Byb3BlcnR5Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENT
U1Byb3BlcnR5Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxU
cmFjZXIuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
NSwxNiArMjA1LDYgQEAgdm9pZCBKU1Rlc3RDYWxsVHJhY2VyOjpkZXN0cm95KEpTQzo6SlNDZQog
ICAgIHRoaXNPYmplY3QtPkpTVGVzdENhbGxUcmFjZXI6On5KU1Rlc3RDYWxsVHJhY2VyKCk7CiB9
CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENhbGxUcmFjZXIqIElETEF0dHJpYnV0ZTxKU1Rl
c3RDYWxsVHJhY2VyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdENhbGxUcmFjZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDYWxs
VHJhY2VyKiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENhbGxUcmFjZXIqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJldmlzaW9u
IDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDE2ICs0ODIs
NiBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OmRlc3Ryb3koCiAgICAgdGhpc09i
amVjdC0+SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6fkpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyog
SURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMqIElETE9w
ZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjgsMTEgKzI2OCw2IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZTo6ZGVzdHIKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
Ojp+SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RET01KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjA1LDE2ICs2MDUsNiBAQCBKU1ZhbHVlIEpTVGVzdERPTUpJVDo6
Z2V0Q29uc3RydWN0b3IoVk0mCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERP
TUpJVERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIElE
TEF0dHJpYnV0ZTxKU1Rlc3RET01KSVQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0RE9NSklUKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0RE9NSklUKiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RET01KSVRDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09O
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ5LDE2ICsyNDksNiBAQCB2b2lkIEpTVGVzdERlZmF1bHRUb0pT
T046OmRlc3Ryb3koSlNDOjpKCiAgICAgdGhpc09iamVjdC0+SlNUZXN0RGVmYXVsdFRvSlNPTjo6
fkpTVGVzdERlZmF1bHRUb0pTT04oKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVm
YXVsdFRvSlNPTiogSURMQXR0cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT04+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
Ci17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTio+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT04qIElETE9wZXJhdGlv
bjxKU1Rlc3REZWZhdWx0VG9KU09OPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RGVmYXVsdFRvSlNPTio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5j
cHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsMTYgKzE4Miw2IEBAIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2UKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQ6On5KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQoKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogSURMT3BlcmF0aW9uPEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdC5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3MCwxNiArMTcwLDYgQEAgSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdDo6Z2V0QwogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdCogSURMQXR0cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQqIElETE9wZXJhdGlvbjxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYg
Y2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50
aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkocmV2aXNpb24gMjc1
MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsMTYgKzE3
Myw2IEBAIEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDoKICAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbERPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsKiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbCogSURMT3BlcmF0aW9uPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWw+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9t
YWluU2VjdXJpdHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHJldmlzaW9uIDI3NTEzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5T
ZWN1cml0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxNiArMTgyLDYgQEAgdm9pZCBKU1Rl
c3REb21haW5TZWN1cml0eTo6ZGVzdHJveShKU0M6OgogICAgIHRoaXNPYmplY3QtPkpTVGVzdERv
bWFpblNlY3VyaXR5Ojp+SlNUZXN0RG9tYWluU2VjdXJpdHkoKTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0RG9tYWluU2VjdXJpdHkqIElETEF0dHJpYnV0ZTxKU1Rlc3REb21haW5TZWN1
cml0eT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REb21h
aW5TZWN1cml0eSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERvbWFpblNl
Y3VyaXR5KiBJRExPcGVyYXRpb248SlNUZXN0RG9tYWluU2VjdXJpdHk+OjpjYXN0KEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REb21haW5TZWN1cml0eSo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJl
dmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDE2ICsy
NzYsNiBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmRlc3Ryb3koSlNDCiAgICAgdGhp
c09iamVjdC0+SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6fkpTVGVzdEVuYWJsZWRCeVNldHRpbmco
KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyogSURMQXR0
cmlidXRlPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcqIElETE9wZXJhdGlvbjxKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBj
YWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTEgKzE1NCw2IEBAIHZvaWQgSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQ6OmRlc3Ryb3koSlMKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dDo6fkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KCk7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KiBJRExBdHRyaWJ1dGU8SlNUZXN0RW5h
YmxlZEZvckNvbnRleHQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDExICsyNTgsNiBAQCBKU1Zh
bHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0CiAgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogSURMQXR0cmlidXRlPEpTVGVzdEV2
ZW50Q29uc3RydWN0b3I+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMSwxMSArMjIxLDYgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdl
dDo6Z2V0T3duUHJvcGVydHlOYQogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdEV2ZW50VGFyZ2V0KiBJRExPcGVyYXRpb248SlNUZXN0RXZl
bnRUYXJnZXQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVu
dFRhcmdldCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RXZlbnRUYXJn
ZXRDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDExICsxNTMs
NiBAQCB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsCiAgICAgdGhpc09i
amVjdC0+SlNUZXN0RXhjZXB0aW9uOjp+SlNUZXN0RXhjZXB0aW9uKCk7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdEV4Y2VwdGlvbiogSURMQXR0cmlidXRlPEpTVGVzdEV4Y2VwdGlvbj46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24q
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RXhjZXB0aW9uQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MywxMSArMTYzLDYgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlOjpkZXN0cm95KAogICAgIHRoaXNPYmplY3QtPkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6
On5KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIElETEF0dHJpYnV0ZTxKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MTEsNyArNTExLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAicmVndWxhckF0dHJpYnV0ZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfcmVn
dWxhckF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInJlZ3VsYXJBdHRyaWJ1dGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0X3JlZ3VsYXJBdHRyaWJ1dGUpIH0gfSwKICAgICB7ICJwdWJsaWNBbmRQcml2YXRlQXR0cmli
dXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfcHVibGljQW5kUHJpdmF0ZUF0
dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKSB9
IH0sCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICB7ICJwdWJsaWNBbmRQcml2YXRlQ29u
ZGl0aW9uYWxBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9wdWJs
aWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfcHVi
bGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKSB9IH0sCkBAIC03MTAsMTYgKzcxMCw2
IEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpkZXN0cm95KEpTQzo6SlMKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RHbG9iYWxPYmplY3Q6On5KU1Rlc3RHbG9iYWxPYmplY3QoKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0R2xvYmFsT2JqZWN0KiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dEdsb2JhbE9iamVjdCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEdsb2Jh
bE9iamVjdCogSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CkBAIC03NDAsNyArNzMwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdAogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0
X3JlZ3VsYXJBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCiB7
Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0
R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5h
bWUpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpz
VGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRlR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCkBAIC0xODI5LDQ0ICsxODE5LDYgQEAgdm9pZCBKU1Rlc3RHbG9iYWxP
YmplY3RPd25lcjo6ZmluYWxpemUoSgogICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0
R2xvYmFsT2JqZWN0LT53cmFwcGVkKCksIGpzVGVzdEdsb2JhbE9iamVjdCk7CiB9CiAKLSNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lk
ZW50aWZpZXIoIj8/XzdUZXN0R2xvYmFsT2JqZWN0QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNl
bHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxNlRlc3RHbG9iYWxP
YmplY3RFW107IH0KLSNlbmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdEdsb2JhbE9iamVjdD4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdf
SU5URUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFi
bGVQb2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0R2xvYmFsT2JqZWN0QFdl
YkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAm
X1pUVk43V2ViQ29yZTE2VGVzdEdsb2JhbE9iamVjdEVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElm
IHRoaXMgZmFpbHMgVGVzdEdsb2JhbE9iamVjdCBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5
b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRy
aWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3BvbHltb3JwaGljPFRlc3RHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgIlRlc3RHbG9iYWxPYmpl
Y3QgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0
aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBUZXN0
R2xvYmFsT2JqZWN0IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0R2xvYmFsT2JqZWN0IGhhcyBzdWJj
bGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVx
dWlyZSBUZXN0R2xvYmFsT2JqZWN0IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5n
Ci0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZU
YWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPFRlc3RHbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHbG9i
YWxPYmplY3QmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQogVGVzdEdsb2JhbE9iamVjdCogSlNUZXN0R2xvYmFs
T2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4o
dm0sIHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDYgQEAgaW5saW5lIHZvaWQq
IHdyYXBwZXJLZXkoVGVzdEdsb2JhbE9iamVjdAogICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7
CiB9CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFRlc3RHbG9iYWxPYmplY3QmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0R2xvYmFsT2JqZWN0KiBpbXBsKSB7IHJldHVybiBpbXBsID8g
dG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNO
dWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0R2xvYmFsT2JqZWN0PiYmKTsKLWlubGlu
ZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8
VGVzdEdsb2JhbE9iamVjdD4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRl
ZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwo
KSkgOiBKU0M6OmpzTnVsbCgpOyB9CiAKIGNsYXNzIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlw
ZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjEsMTEgKzI2MSw2IEBAIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyOjoKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNo
b3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTA4LDE2ICs1MDgsNiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVz
dHJveShKU0M6OkpTQ2VsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0SW50ZXJmYWNlOjp+SlNUZXN0
SW50ZXJmYWNlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZSogSURM
QXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RJbnRlcmZhY2UqIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEgKzE1Myw2IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmU6OmQKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZTo6fkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKCk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKiBJRExBdHRy
aWJ1dGU8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0
ZXJhYmxlLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDExICsxNjYsNiBAQCB2b2lkIEpTVGVzdEl0ZXJhYmxlOjpkZXN0cm95KEpTQzo6SlNDZWxsCiAg
ICAgdGhpc09iamVjdC0+SlNUZXN0SXRlcmFibGU6On5KU1Rlc3RJdGVyYWJsZSgpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJdGVyYWJsZSogSURMT3BlcmF0aW9uPEpTVGVzdEl0ZXJh
YmxlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGUq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgp
KTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSwxNiArMTYxLDYgQEAgdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6ZGVzdHJveQogICAgIHRoaXNPYmplY3QtPkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp+
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIElETEF0dHJpYnV0ZTxKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBJRExPcGVyYXRpb248SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJh
bWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1
MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE2ICsxNTYs
NiBAQCB2b2lkIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpkZXN0CiAgICAgdGhpc09i
amVjdC0+SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q6On5KU1Rlc3RMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCogSURMQXR0cmlidXRlPEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Pjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QqIElETE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxG
cmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdF9yZWFkb25seVN0cmluZ0F0dHJpYnV0ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucy5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA4LDExICsyMDgsNiBAQCB2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OmdldE93CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSURMT3BlcmF0aW9uPEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3OSwxNiArMTc5LDYgQEAgdm9pZCBKU1Rlc3RNYXBMaWtlOjpkZXN0
cm95KEpTQzo6SlNDZWxsKgogICAgIHRoaXNPYmplY3QtPkpTVGVzdE1hcExpa2U6On5KU1Rlc3RN
YXBMaWtlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE1hcExpa2UqIElETEF0dHJp
YnV0ZTxKU1Rlc3RNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdE1hcExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RN
YXBMaWtlKiBJRExPcGVyYXRpb248SlNUZXN0TWFwTGlrZT46OmNhc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVy
biBqc0R5bmFtaWNDYXN0PEpTVGVzdE1hcExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdE1hcExpa2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgyLDE2ICsxODIsNiBAQCB2b2lkIEpTVGVzdE1hcExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvCiAgICAgdGhpc09iamVjdC0+SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uczo6fkpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMoKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucyogSURMQXR0cmlidXRlPEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMqIElETE9wZXJhdGlvbjxKU1Rlc3RN
YXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQot
CiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzEsMTEgKzMzMSw2IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW4KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2Ny
aXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19
Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
NzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMTEg
KzIyOCw2IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmQKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBpbmRleCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBj
YWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA1LDExICsyMDUsNiBAQCB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXI6OmdlCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciogSURMT3BlcmF0aW9uPEpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxMSArMjg0LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyOjpkZQogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJv
cGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3Bl
cnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDExICszMTEsNiBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJv
cGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcio+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNp
b24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzEsMTEgKzMzMSw2IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckEKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3Is
IHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlciogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19
Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOSwxNiArMzA5LDYg
QEAgc3RhdGljIGJvb2wgaXNMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnR5TgogICAgIHJldHVybiBK
U09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMqIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzKiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19
Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg2LDE2ICsyODYsNiBAQCBzdGF0aWMgYm9vbCBpc0xlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydHlOCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9y
LCBzaG91bGRUaHJvdyk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMq
IElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVy
biBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2Fs
bEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
LX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjU5LDE2ICsyNTksNiBAQCBKU1ZhbHVlIEpTVGVzdE5vZGU6Omdl
dENvbnN0cnVjdG9yKFZNJiB2CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5v
ZGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogSURMQXR0
cmlidXRlPEpTVGVzdE5vZGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Tm9kZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5vZGUq
IElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Tm9kZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxs
RnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
Tm9kZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9u
IDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIyLDE2ICsyNTIyLDYgQEAgdm9pZCBKU1Rl
c3RPYmo6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYgogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogSURMQXR0cmlidXRlPEpTVGVz
dE9iaj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RPYmoqIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgp
KTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9iakNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYsMTEgKzE3Niw2IEBAIHZvaWQgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw6OmRl
c3Ryb3kKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6fkpTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsKiBJRExPcGVyYXRpb248SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWw+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDExICsyNTQsNiBAQCBKU1Zh
bHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Z2V0CiAgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIElETEF0dHJpYnV0
ZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Kj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlr
ZS5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzMsMTYgKzE3Myw2IEBAIHZvaWQgSlNUZXN0UmVhZE9ubHlNYXBMaWtlOjpkZXN0cm95KEpTQzoK
ICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RSZWFkT25seU1hcExpa2U6On5KU1Rlc3RSZWFkT25seU1h
cExpa2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0UmVhZE9ubHlNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFJlYWRPbmx5TWFwTGlrZSo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSogSURMT3BlcmF0aW9uPEpTVGVz
dFJlYWRPbmx5TWFwTGlrZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdFJlYWRPbmx5TWFwTGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBj
YWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSwxNiArMTcxLDYgQEAgdm9pZCBKU1Rlc3RSZWFkT25s
eVNldExpa2U6OmRlc3Ryb3koSlNDOgogICAgIHRoaXNPYmplY3QtPkpTVGVzdFJlYWRPbmx5U2V0
TGlrZTo6fkpTVGVzdFJlYWRPbmx5U2V0TGlrZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RSZWFkT25seVNldExpa2UqIElETEF0dHJpYnV0ZTxKU1Rlc3RSZWFkT25seVNldExpa2U+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlT
ZXRMaWtlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UmVhZE9ubHlTZXRM
aWtlKiBJRExPcGVyYXRpb248SlNUZXN0UmVhZE9ubHlTZXRMaWtlPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlTZXRMaWtlKj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDE2ICsxODEsNiBAQCB2b2lkIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAgICAgdGhpc09iamVjdC0+SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp+SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSogSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIElETE9wZXJh
dGlvbjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpjYXN0KEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1
ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXRMaWtlLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcs
MTYgKzE3Nyw2IEBAIHZvaWQgSlNUZXN0U2V0TGlrZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCoKICAg
ICB0aGlzT2JqZWN0LT5KU1Rlc3RTZXRMaWtlOjp+SlNUZXN0U2V0TGlrZSgpOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RTZXRMaWtlKiBJRExBdHRyaWJ1dGU8SlNUZXN0U2V0TGlrZT46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXRMaWtlKj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2V0TGlrZSogSURMT3BlcmF0aW9u
PEpTVGVzdFNldExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3RTZXRMaWtlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50
aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTZXRMaWtl
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzUx
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCwx
NiArMTgwLDYgQEAgdm9pZCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpbwogICAg
IHRoaXNPYmplY3QtPkpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6On5KU1Rl
c3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMqIElETEF0dHJpYnV0ZTxK
U1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zKiBJRExPcGVyYXRpb248SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24g
Mjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYsNiBAQCB2b2lk
IEpTVGVzdFN0cmluZ2lmaWVyOjpkZXN0cm95KEpTQzo6SlNDCiAgICAgdGhpc09iamVjdC0+SlNU
ZXN0U3RyaW5naWZpZXI6On5KU1Rlc3RTdHJpbmdpZmllcigpOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RTdHJpbmdpZmllciogSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxs
RnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXIqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
LX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NiwxMSArMTU2LDYgQEAgdm9p
ZCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbgogICAgIHRoaXNPYmplY3QtPkpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjp+SlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24oKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24qIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTEgKzE1OCw2IEBAIHZvaWQgSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbjo6ZGUKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uOjp+SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbigpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKiBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24qPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0K
LQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCShyZXZpc2lv
biAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU4LDExICsxNTgsNiBAQCB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50CiAgICAgdGhpc09iamVjdC0+SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzOjp+SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKCk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyog
SURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZy
YW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxs
RnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NiwxMSArMTU2LDYgQEAgdm9pZCBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdAogICAgIHRoaXNPYmplY3QtPkpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6fkpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcqIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZ0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjc1
MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTYg
KzE1OSw2IEBAIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZToKICAgICB0
aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjp+SlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKiBJRExBdHRyaWJ1dGU8SlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSogSURM
T3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHJl
dmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2MCwxNiArMTYwLDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZQogICAgIHRoaXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
Ojp+SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUoKTsKIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUqIElETEF0dHJpYnV0
ZTxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlKiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcxLDE2ICsyNzEsNiBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzOjpk
ZXN0cm95KEpTQzo6SlNDZWxsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0VHlwZWRlZnM6On5KU1Rl
c3RUeXBlZGVmcygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RUeXBlZGVmcyogSURM
QXR0cmlidXRlPEpTVGVzdFR5cGVkZWZzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0VHlwZWRlZnMqIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjc1MTMxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFs
U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsMTEgKzE2NCw2IEBAIEpTVmFsdWUgSlNX
b3JrZXJHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWMKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1dvcmtlckdsb2JhbFNjb3BlKiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9iYWxTY29wZT46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtlckdsb2JhbFNj
b3BlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTI3Myw0NCArMjY4LDYgQEAgdm9p
ZCBKU1dvcmtlckdsb2JhbFNjb3BlOjphbmFseXplSGVhcChKUwogICAgIEJhc2U6OmFuYWx5emVI
ZWFwKGNlbGwsIGFuYWx5emVyKTsKIH0KIAotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
LSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1dvcmtlckdsb2Jh
bFNjb3BlQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQqIF9aVFZON1dlYkNvcmUxN1dvcmtlckdsb2JhbFNjb3BlRVtdOyB9Ci0jZW5kaWYKLSNl
bmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFdvcmtlckdsb2JhbFNjb3Bl
PiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qg
dm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7
Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9f
aWRlbnRpZmllcigiPz9fN1dvcmtlckdsb2JhbFNjb3BlQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UK
LSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTE3V29ya2Vy
R2xvYmFsU2NvcGVFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFdvcmtlckds
b2JhbFNjb3BlIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUK
LSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJm
YWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8V29y
a2VyR2xvYmFsU2NvcGU+Ojp2YWx1ZSwgIldvcmtlckdsb2JhbFNjb3BlIGlzIG5vdCBwb2x5bW9y
cGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhh
dmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gV29ya2VyR2xvYmFsU2NvcGUgaGFz
IHN1YmNsYXNzZXMuIElmIFdvcmtlckdsb2JhbFNjb3BlIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0
IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBXb3JrZXJHbG9i
YWxTY29wZSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFk
ZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
SURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09
IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxXb3JrZXJHbG9iYWxTY29wZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV29ya2VyR2xvYmFsU2NvcGUmIGlt
cGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpbXBsKTsKLX0KLQogV29ya2VyR2xvYmFsU2NvcGUqIEpTV29ya2VyR2xvYmFsU2NvcGU6OnRv
V3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlKj4odm0sIHZhbHVl
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtl
ckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjc1MTMxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2Nv
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTAgKzY5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwogfTsKIAotSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29y
a2VyR2xvYmFsU2NvcGUmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBXb3JrZXJHbG9iYWxTY29wZSogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1K
U0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01H
bG9iYWxPYmplY3QqLCBSZWY8V29ya2VyR2xvYmFsU2NvcGU+JiYpOwotaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxXb3JrZXJHbG9i
YWxTY29wZT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6
OmpzTnVsbCgpOyB9CiAKIGNsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUgZmluYWwg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
V29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDExICsxMzMsNiBAQCBKU1ZhbHVlIEpTV29ya2xldEdsb2JhbFNj
b3BlOjpnZXRDb25zdHJ1CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV29ya2xldEds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTV29ya2xldEds
b2JhbFNjb3BlKiBJRExBdHRyaWJ1dGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
Ci17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2NvcGUqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNXb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTE4Nyw0NCArMTgyLDYgQEAgdm9pZCBKU1dvcmts
ZXRHbG9iYWxTY29wZTo6YW5hbHl6ZUhlYXAoSgogICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGws
IGFuYWx5emVyKTsKIH0KIAotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFU
Rk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBl
eHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1dvcmtsZXRHbG9iYWxTY29wZUBX
ZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBf
WlRWTjdXZWJDb3JlMThXb3JrbGV0R2xvYmFsU2NvcGVFW107IH0KLSNlbmRpZgotI2VuZGlmCi0K
LUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8V29ya2xldEdsb2JhbFNjb3BlPiYmIGlt
cGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYg
UExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRp
ZmllcigiPz9fN1dvcmtsZXRHbG9iYWxTY29wZUBXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAg
dm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxOFdvcmtsZXRHbG9i
YWxTY29wZUVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgV29ya2xldEdsb2Jh
bFNjb3BlIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAg
ICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8V29ya2xl
dEdsb2JhbFNjb3BlPjo6dmFsdWUsICJXb3JrbGV0R2xvYmFsU2NvcGUgaXMgbm90IHBvbHltb3Jw
aGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2
ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBXb3JrbGV0R2xvYmFsU2NvcGUgaGFz
IHN1YmNsYXNzZXMuIElmIFdvcmtsZXRHbG9iYWxTY29wZSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdl
dCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgV29ya2xldEds
b2JhbFNjb3BlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkg
YWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFj
ZSBJREwgZGVmaW5pdGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIg
PT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFw
cGVyPFdvcmtsZXRHbG9iYWxTY29wZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0K
LQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV29ya2xldEdsb2JhbFNjb3Bl
JiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbCk7Ci19Ci0KIFdvcmtsZXRHbG9iYWxTY29wZSogSlNXb3JrbGV0R2xvYmFsU2Nv
cGU6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZSo+KHZt
LCB2YWx1ZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjc1
MTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xl
dEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEwICs2OSw2IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsKIH07
CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFdvcmtsZXRHbG9iYWxTY29wZSogaW1wbCkgeyByZXR1cm4gaW1wbCA/
IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6Ompz
TnVsbCgpOyB9Ci1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKLWlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQ
dHI8V29ya2xldEdsb2JhbFNjb3BlPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlD
cmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9u
TnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KIAogY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVQ
cm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDcgKzQ2Miw3IEBAIGJv
b2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGUKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIAotICAgIEpTRE9NV2luZG93KiBpbnNwZWN0
ZWRXaW5kb3cgPSB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCksIGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIGluc3BlY3RlZFdpbmRvdyA9IGpzRHluYW1pY0Nh
c3Q8SlNET01XaW5kb3cqPihsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLCBsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNzUxMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDEwICszMyw4IEBACiAgICAgQ3VzdG9tR2V0UHJvdG90eXBlLAogICAgIEN1c3RvbUhlYXBTbmFw
c2hvdCwKICAgICBDdXN0b21QcmV2ZW50RXh0ZW5zaW9ucywKLSAgICBDdXN0b21Qcm94eVRvSlNP
YmplY3QsCiAgICAgQ3VzdG9tUHV0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAot
ICAgIEltcGxpY2l0VGhpcywKICAgICBJbnRlcmZhY2VOYW1lPVdpbmRvdywKICAgICBJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3Rp
Y09iamVjdE9uUHJvdG90eXBlLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2lu
ZG93LmlkbAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVE
T01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw3IEBACiAgICAgQ3VzdG9t
R2V0T3duUHJvcGVydHlTbG90LAogICAgIEN1c3RvbUdldFByb3RvdHlwZSwKICAgICBDdXN0b21Q
cmV2ZW50RXh0ZW5zaW9ucywKLSAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCiAgICAgQ3VzdG9t
UHV0LAotICAgIEltcGxpY2l0VGhpcywKICAgICBJbnRlcmZhY2VOYW1lPVdpbmRvdywKICAgICBJ
c0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlw
ZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NTEz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksOSBAQAogICovCiAKIFsKLSAgICBDdXN0
b21Qcm94eVRvSlNPYmplY3QsCiAgICAgRXhwb3NlZD1EZWRpY2F0ZWRXb3JrZXIsCiAgICAgR2xv
YmFsPShXb3JrZXIsRGVkaWNhdGVkV29ya2VyKSwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmpl
Y3QsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2Jq
ZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiBd
IGludGVyZmFjZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA6IFdvcmtlckdsb2JhbFNjb3Bl
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRs
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTEgKzI0LDkgQEAKICAqLwogCiBbCi0g
ICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEV4cG9zZWQ9V29ya2VyLAogICAgIEpTQ3Vz
dG9tTWFya0Z1bmN0aW9uLAogICAgIEpTTGVnYWN5UGFyZW50PUpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLAotICAgIEltcGxpY2l0VGhpcywKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdCwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAog
XSBpbnRlcmZhY2UgV29ya2VyR2xvYmFsU2NvcGUgOiBFdmVudFRhcmdldCB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc1MTMxKQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDEyICsyNCwxMCBAQAogICovCiAKIFsKLSAgICBDdXN0b21Qcm94eVRvSlNPYmplY3Qs
CiAgICAgR2xvYmFsPShXb3JrZXIsU2VydmljZVdvcmtlciksCiAgICAgRXhwb3NlZD1TZXJ2aWNl
V29ya2VyLAogICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEVuYWJsZWRBdFJ1
bnRpbWU9U2VydmljZVdvcmtlciwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSlNDdXN0b21NYXJr
RnVuY3Rpb24sCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJ
bW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHJl
dmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogICAgIENvbmRp
dGlvbmFsPUNTU19QQUlOVElOR19BUEksCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEltcGxpY2l0VGhpcywKICAgICBJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3Rp
Y09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2JhbD0oV29ya2xldCxQYWludFdvcmtsZXQpLApJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRs
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMCArMjQsOCBAQAogKi8KIAogWwot
ICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBFeHBvc2VkPVdvcmtsZXQsCiAgICAgSlNM
ZWdhY3lQYXJlbnQ9SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLAotICAgIEltcGxpY2l0VGhpcywK
ICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJc0ltbXV0YWJsZVBy
b3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2JhbD1Xb3JrbGV0LApJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDMtMjcgIEFsZXhleSBTaHZheWth
ICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExdIE1ha2UgfHRoaXN8
IHZhbHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIElETEF0dHJpYnV0ZSBhbmQgSURMT3Bl
cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjM3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgaW5oZXJpdHM8VGFyZ2V0PiBpbnN0ZWFkIG9mIHRvSlNET01XaW5kb3coKSBpZiB0aGUgdmFs
dWUgaXMgbmV2ZXIgYSBKU1Byb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpyZXBvcnRFeGNlcHRpb24pOgorCiAyMDIxLTAzLTI2ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBHcmlkIGxheW91dCBsYWJlbHMg
Y2FuIGJlIGRyYXduIG91dHNpZGUgdGhlIHZpZXdwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpyZXBvcnRFeGNlcHRpb24oSlNDCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4
dCBoYXMgYSBET01XaW5kb3cgZ2xvYmFsIG9iamVjdCwgb3RoZXJ3aXNlIHRoaXMgY29udGV4dCBk
aWRuJ3Qgb3JpZ2luYXRlIGZyb20gYSBQYWdlLgotICAgIGlmICghdG9KU0RPTVdpbmRvdyhnbG9i
YWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCkpCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlu
aGVyaXRzPEpTRE9NV2luZG93PihnbG9iYWxPYmplY3QtPnZtKCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2Jh
bE9iamVjdCwgZXhjZXB0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0yNyAgQWxleGV5IFNodmF5a2Eg
IDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gTWFrZSB8dGhpc3wg
dmFsdWUgY2FzdGluZyBjb25zaXN0ZW50IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExPcGVy
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
Mzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBpbmhlcml0czxUYXJnZXQ+IGluc3RlYWQgb2YgdG9KU0RPTVdpbmRvdygpIGlmIHRoZSB2YWx1
ZSBpcyBuZXZlciBhIEpTUHJveHkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgrW1dlYlZpZXcgX3JlcG9ydEV4Y2VwdGlvbjppbkNvbnRleHQ6XSk6CisKIDIwMjEt
MDMtMjYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJG
ZWF0dXJlIGNsYXNzIGZhaWxzIHRvIGNvcHkvcmV0YWluIGl0cyBpbnN0YW5jZSB2YXJpYWJsZXMK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlz
aW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTMyNCw3ICsxMzI0LDcgQEAgKyAodm9pZClfcmVwb3J0RXhj
ZXB0aW9uOihKU1ZhbHVlUmVmKWV4YwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFs
T2JqZWN0KTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBoYXMgYSBET01XaW5kb3cg
Z2xvYmFsIG9iamVjdCwgb3RoZXJ3aXNlIHRoaXMgY29udGV4dCBkaWRuJ3Qgb3JpZ2luYXRlIGZy
b20gYSBXZWJWaWV3LgotICAgIGlmICghV2ViQ29yZTo6dG9KU0RPTVdpbmRvdyhnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdCkpCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmluaGVyaXRz
PFdlYkNvcmU6OkpTRE9NV2luZG93PihnbG9iYWxPYmplY3QtPnZtKCkpKQogICAgICAgICByZXR1
cm47CiAKICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0b0pTKGds
b2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0yNyAgQWxleGV5IFNodmF5
a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gTWFrZSB8dGhp
c3wgdmFsdWUgY2FzdGluZyBjb25zaXN0ZW50IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExP
cGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBpbmhlcml0czxUYXJnZXQ+IGluc3RlYWQgb2YgdG9KU0RPTVdpbmRvdygpIGlmIHRoZSB2
YWx1ZSBpcyBuZXZlciBhIEpTUHJveHkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYlZpZXc6OnJlcG9ydEV4Y2VwdGlvbik6CisKIDIwMjEtMDMtMjIgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgSlMgYW5kIENT
UyBmaWxlcyBvZiBtZWRpYSBjb250cm9scwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAJKHJldmlzaW9uIDI3NTEzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjIxLDcgKzY2MjEsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OnJlcG9ydEV4Y2VwdGlvbihfSW5fIEpTCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhn
bG9iYWxPYmplY3QpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IGhhcyBhIERPTVdp
bmRvdyBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgdGhpcyBjb250ZXh0IGRpZG4ndCBvcmlnaW5h
dGUgZnJvbSBhIFdlYlZpZXcuCi0gICAgaWYgKCF0b0pTRE9NV2luZG93KGdsb2JhbE9iamVjdC0+
dm0oKSwgZ2xvYmFsT2JqZWN0KSkKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNE
T01XaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0oKSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9i
amVjdCwgZXhjZXB0aW9uKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMy0y
NyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dl
YklETF0gTWFrZSB8dGhpc3wgdmFsdWUgY2FzdGluZyBjb25zaXN0ZW50IGJldHdlZW4gSURMQXR0
cmlidXRlIGFuZCBJRExPcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICoganMvcHJvcGVydHktb2Ytd2luZG93LWFzLXByb3RvdHlwZS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICoganMvcHJvcGVydHktb2Ytd2luZG93LWFzLXBy
b3RvdHlwZS5odG1sOiBSZW1vdmVkLgorCiAyMDIxLTAzLTI2ICBSb2JlcnQgSmVubmVyICA8amVu
bmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIF0gaW5zcGVjdG9yL2RlYnVnZ2VyL2Nz
cC1leGNlcHRpb25zLmh0bWwgaXMgYSBmbGFrZXkgdGV4dCBmYWlsdXJlCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGlj
ay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1h
ZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xp
Y2stYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQgYSBmcmFtZSB3
aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGNyb3Nz
LW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4K
LVRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBv
biBhbiBFdmVudFRhcmdldCB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRoZSB0YXJnZXQgbm9k
ZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5
b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9z
dCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8g
dGhlIGNvbnNvbGUuCitUaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZl
bnRMaXN0ZW5lcnMgb24gYW4gRXZlbnRUYXJnZXQgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcyB0
aGUgdGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVz
dCBwYXNzZXMgaWYgbm8gZXJyb3JzIHdlcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgogCiAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0
Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGlj
ay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NTEzMSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFk
ZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogPC9o
ZWFkPgogPGJvZHk+CiAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0
aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIEV2ZW50VGFyZ2V0IHVzaW5nIGFkZEV2ZW50TGlzdGVu
ZXIgaXMKLSAgICAgICB0aGUgdGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQy
NjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9n
IHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5z
YWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KKyAg
ICAgICB0aGUgdGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRo
aXMgdGVzdCBwYXNzZXMgaWYgbm8gZXJyb3JzIHdlcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwv
cD4KICAgICA8aWZyYW1lIGlkPSJ0YXJnZXRDaGlsZCIgc3JjPSIiPjwvaWZyYW1lPgogICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvY2hpbGRXaXRoQnV0dG9uLmh0bWwiIG9ubG9hZD0ib25sb2Fk
Rm9yQnV0dG9uQ2hpbGQoKTsiPjwvaWZyYW1lPgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hv
cnRjdXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBTZWN1
cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9t
YWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi1UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3
aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gRXZlbnRUYXJnZXQgd2l0aCB0aGUgc2hv
cnRjdXQgKG9uY2xpY2ssIGV0YyksIGlzIHRoZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8v
cHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFs
ZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJV
bnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCitUaGlz
IHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4g
RXZlbnRUYXJnZXQgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIGlzIHRoZSB0YXJn
ZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3Nl
cyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9u
Y2xpY2stc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC5odG1s
CShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw4ICsyMyw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3Rz
IHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gRXZlbnRU
YXJnZXQgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIAotICAgICAgIGlzIHRoZSB0
YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gIFRoaXMgdGVzdCBw
YXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aAotICAgICAgIHRoZSBk
b21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2Fy
bmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgorICAgICAgIGlzIHRoZSB0YXJnZXQg
bm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBp
ZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUg
aWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9jaGlsZFdpdGhCdXR0b24uaHRtbCIgb25sb2FkPSJvbmxvYWRGb3JCdXR0b25DaGlsZCgp
OyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3Rl
bmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjc1MTMxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5l
ci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6
IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9t
IGFjY2Vzc2luZyBhIGNyb3NzLW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KLVRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGlu
ZyBldmVudExpc3RlbmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB1c2luZyBhZGRFdmVudExpc3Rl
bmVyLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhp
cyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBk
b21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2Fy
bmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCitUaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNl
ZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3QgdXNpbmcg
YWRkRXZlbnRMaXN0ZW5lciwgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0v
NTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgbm8gZXJyb3JzIHdlcmUgbG9nZ2VkIHRvIHRo
ZSBjb25zb2xlLgogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlz
dGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRw
UmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NTEzMSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFk
ZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQsNiBAQAogCiAg
ICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewogICAgICAgICAgICAgdmFyIHhockNoaWxkID0gd2lu
ZG93LmZyYW1lc1sxXTsKLSAgICAgICAgICAgIC8vIHhockNoaWxkLlhIUi5vcGVuKCdHRVQnLCBu
dWxsLCB0cnVlKTsKICAgICAgICAgICAgIHhockNoaWxkLlhIUi5vcGVuKCJHRVQiLCAiLi4vLi4v
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsKICAgICAgICAgICAg
IHhockNoaWxkLlhIUi5zZW5kKCIiKTsKIApAQCAtMjUsOCArMjQsNyBAQAogPC9oZWFkPgogPGJv
ZHk+CiAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50
TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIsIAot
ICAgICAgIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiAg
VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoCi0g
ICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZh
U2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CisgICAgICAgaXMg
dGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBw
YXNzZXMgaWYgbm8gZXJyb3JzIHdlcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KICAgICA8
aWZyYW1lIGlkPSJ0YXJnZXRDaGlsZCIgc3JjPSIiPjwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvY2hpbGRXaXRoWE1MSHR0cFJlcXVlc3QuaHRtbCIgb25sb2FkPSJvbmxvYWRG
b3JYSFJDaGlsZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9s
aXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hz
cy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQgYSBm
cmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBh
IGNyb3NzLW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBt
YXRjaC4KLVRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3Rl
bmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBzaG9ydGN1dCAob25yZWFkeXN0YXRl
Y2hhbmdlKSwgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0Miku
IFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0
aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQi
IHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgorVGhpcyB0ZXN0cyB0aGF0IGZyYW1l
IHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHdp
dGggdGhlIHNob3J0Y3V0IChvbnJlYWR5c3RhdGVjaGFuZ2UpLCBpcyB0aGUgcmVxdWVzdHMgZnJh
bWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJv
cnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzUxMzEpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVz
dC1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiA8L2hlYWQ+
CiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcg
ZXZlbnRMaXN0ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCB0aGUgc2hvcnRjdXQgKG9u
cmVhZHlzdGF0ZWNoYW5nZSksIAotICAgICAgIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6
Ly9wcm9ibGVtLzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFu
IGFsZXJ0IGRpYWxvZyB3aXRoCi0gICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBp
dCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29u
c29sZS48L3A+CisgICAgICAgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0v
NTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgbm8gZXJyb3JzIHdlcmUgbG9nZ2VkIHRvIHRo
ZSBjb25zb2xlLjwvcD4KICAgICA8aWZyYW1lIGlkPSJ0YXJnZXRDaGlsZCIgc3JjPSIiPjwvaWZy
YW1lPgogICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvY2hpbGRXaXRoWE1MSHR0cFJlcXVlc3Qu
aHRtbCIgb25sb2FkPSJvbmxvYWRGb3JYSFJDaGlsZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ct
b25jbGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1h
ZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRk
RXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBA
Ci1DT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9y
aWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGNyb3NzLW9yaWdp
biBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLVRoaXMg
dGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiB0aGUg
d2luZG93IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRh
cjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBh
biBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBh
biAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgor
VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9u
IHRoZSB3aW5kb3cgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgd2luZG93J3MgZnJhbWUu
IChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMg
d2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5l
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlz
dGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkocmV2aXNpb24g
Mjc1MTMxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mt
d2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw4ICszMyw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJh
bWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRvdyB1c2luZyBh
ZGRFdmVudExpc3RlbmVyIGlzIAotICAgICAgIHRoZSB3aW5kb3cncyBmcmFtZS4gKHJkYXI6Ly9w
cm9ibGVtLzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFs
ZXJ0IGRpYWxvZyB3aXRoCi0gICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBh
bmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29s
ZS48L3A+CisgICAgICAgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0
MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgbm8gZXJyb3JzIHdlcmUgbG9nZ2VkIHRvIHRoZSBjb25z
b2xlLjwvcD4KICAgICA8aWZyYW1lIGlkPSJ0YXJnZXRDaGlsZCIgc3JjPSIiPjwvaWZyYW1lPgog
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvY2hpbGRXaW5kb3cuaHRtbCIgb25sb2FkPSJvbmxv
YWRGb3JDaGlsZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9s
aXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hz
cy13aW5kb3ctb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQgYSBm
cmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBh
IGNyb3NzLW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBt
YXRjaC4KLVRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3Rl
bmVycyBvbiB0aGUgd2luZG93IHdpdGggdGhlIHNob3J0Y3V0IChvbmNsaWNrLCBldGMpLCBpcyB0
aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBh
c3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2Yg
ImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBs
b2dnZWQgdG8gdGhlIGNvbnNvbGUuCitUaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNl
dHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRvdyB3aXRoIHRoZSBzaG9ydGN1dCAob25j
bGljaywgZXRjKSwgaXMgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0
MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgbm8gZXJyb3JzIHdlcmUgbG9nZ2VkIHRvIHRoZSBjb25z
b2xlLgogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIv
eHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stc2hvcnRj
dXQuaHRtbAkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOCArMzMsNyBAQAogPC9oZWFkPgogPGJvZHk+CiAgICAgPHA+VGhpcyB0ZXN0
cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRoZSB3aW5k
b3cgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIAotICAgICAgIGlzIHRoZSB3aW5k
b3cncyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBp
ZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoCi0gICAgICAgdGhlIGRvbWFpbiBv
ZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlz
IGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CisgICAgICAgaXMgdGhlIHdpbmRvdydzIGZyYW1l
LiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgbm8gZXJyb3Jz
IHdlcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KICAgICA8aWZyYW1lIGlkPSJ0YXJnZXRD
aGlsZCIgc3JjPSIiPjwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvY2hpbGRX
aW5kb3cuaHRtbCIgb25sb2FkPSJvbmxvYWRGb3JDaGlsZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNl
cy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9y
ZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5l
ci5odG1sCShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1h
ZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTEgQEAKICAg
ICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cucGFyZW50LmZyYW1lc1sxXS5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYnV0dG9uJykuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQoImRvY3VtZW50LmRv
bWFpbjogIiArIHdpbmRvdy5kb2N1bWVudC5kb21haW4pOworICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoImRvY3VtZW50LmRvbWFpbjogIiArIHdpbmRvdy5kb2N1bWVudC5kb21haW4pOwog
ICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQoZSk7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgZnVuY3Rpb24oKSB7fSk7IC8vIG5vLW9wLCBzaG91
bGRuJ3QgdGhyb3cKICAgICAgICAgfSwgZmFsc2UpOwogCiAgICAgICAgIHdpbmRvdy5sb2NhdGlv
biA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1l
LWlmcmFtZS5odG1sIjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlz
dGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQu
aHRtbAkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hv
cnRjdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMSBAQAogICAgIDxzY3JpcHQ+
CiAgICAgICAgIHdpbmRvdy5wYXJlbnQuZnJhbWVzWzFdLmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdidXR0b24nKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgICAgIGFsZXJ0KCJkb2N1bWVudC5kb21haW46ICIgKyB3aW5kb3cuZG9jdW1lbnQu
ZG9tYWluKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJkb2N1bWVudC5kb21haW46
ICIgKyB3aW5kb3cuZG9jdW1lbnQuZG9tYWluKTsKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewot
ICAgICAgICAgICAgICAgIGFsZXJ0KGUpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
ZSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKG5hbWUs
IGZ1bmN0aW9uKCkge30pOyAvLyBuby1vcCwgc2hvdWxkbid0IHRocm93CiAgICAgICAgIH0KIAog
ICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCI7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1YTUxIdHRw
UmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtWE1MSHR0
cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGls
ZC1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsMTAgKzQsMTEgQEAKICAgICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cucGFyZW50LmZyYW1l
c1sxXS5YSFIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBhbGVydCgiZG9jdW1lbnQuZG9tYWluOiAiICsgd2lu
ZG93LmRvY3VtZW50LmRvbWFpbik7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiZG9j
dW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CiAgICAgICAgICAgICB9
IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICBhbGVydChlKTsKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmVycm9yKGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZlbnRM
aXN0ZW5lcihuYW1lLCBmdW5jdGlvbigpIHt9KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwog
ICAgICAgICB9LCBmYWxzZSk7CiAKICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwi
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJj
ZXMvdGFyZ2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJn
ZXRDaGlsZC1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzUxMzEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJn
ZXRDaGlsZC1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
LDEwICs0LDExIEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93LnBhcmVudC5mcmFtZXNb
MV0uWEhSLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgICAgICBhbGVydCgiZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRv
Y3VtZW50LmRvbWFpbik7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiZG9jdW1lbnQu
ZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CiAgICAgICAgICAgICB9IGNhdGNo
KGUpIHsKLSAgICAgICAgICAgICAgICBhbGVydChlKTsKKyAgICAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihuYW1lLCBmdW5jdGlvbigpIHt9KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAg
ICB9CiAKICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQt
d2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxk
LXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMjc1MTMxKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFy
Z2V0Q2hpbGQtd2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00LDEwICs0LDExIEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93LnBhcmVu
dC5mcmFtZXNbMV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQoImRvY3VtZW50LmRvbWFpbjogIiAr
IHdpbmRvdy5kb2N1bWVudC5kb21haW4pOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
ImRvY3VtZW50LmRvbWFpbjogIiArIHdpbmRvdy5kb2N1bWVudC5kb21haW4pOwogICAgICAgICAg
ICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQoZSk7CisgICAgICAgICAgICAg
ICAgY29uc29sZS5lcnJvcihlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlbW92ZUV2
ZW50TGlzdGVuZXIobmFtZSwgZnVuY3Rpb24oKSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhy
b3cKICAgICAgICAgfSwgZmFsc2UpOwogCiAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5o
dG1sIjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVz
b3VyY2VzL3RhcmdldENoaWxkLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMv
dGFyZ2V0Q2hpbGQtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAkocmV2aXNpb24gMjc1MTMx
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMv
dGFyZ2V0Q2hpbGQtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNCwxMCArNCwxMSBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5wYXJlbnQuZnJh
bWVzWzFdLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICAgICAgYWxlcnQoImRvY3VtZW50LmRvbWFpbjogIiArIHdpbmRvdy5kb2N1bWVudC5kb21h
aW4pOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoImRvY3VtZW50LmRvbWFpbjogIiAr
IHdpbmRvdy5kb2N1bWVudC5kb21haW4pOwogICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAg
ICAgICAgICAgICAgYWxlcnQoZSk7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgZnVu
Y3Rpb24oKSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cKICAgICAgICAgfQogCiAgICAg
ICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIjsKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAzLTI3ICBB
bGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURM
XSBNYWtlIHx0aGlzfCB2YWx1ZSBjYXN0aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1
dGUgYW5kIElETE9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIzNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRp
bmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9i
YWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LmpzOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0
LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2Jh
bC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQt
b3BlbmVyLXJlbW92ZS1mcmFtZS1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDMtMjYgIFRpbSBOZ3V5
ZW4gIDxudGltLmJ1Z3NAZ21haWwuY29tPgogCiAgICAgICAgIEFkZCBpbnRlcnBvbGF0aW9uIGZv
ciBvYmplY3QtcG9zaXRpb24gQ1NTIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFs
LW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNt
YXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWlt
cGxpY2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExIEBACisKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxs
ZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorRkFJTCBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRo
cm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IGFzc2VydF90aHJvd3NfanM6
IGZ1bmN0aW9uICIoKSA9PiB7IE9iamVjdC5jcmVhdGUoZ2xvYmFsVGhpcykub3JpZ2luID0gb3Jp
Z2luOyB9IiBkaWQgbm90IHRocm93CitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhy
b3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xvYmFsIG9iamVj
dCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAoZG9j
dW1lbnQuYWxsKQorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxl
ZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpCitQQVNTIEdsb2JhbCBvYmpl
Y3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3Qg
KGRvY3VtZW50LmFsbCkKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNh
bGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCitQQVNTIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgd29y
a3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mg
b3BlcmF0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKKwpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZh
bHVlLmFueS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0
LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBA
QAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0
dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1
ZS5hbnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGlj
aXQtdGhpcy12YWx1ZS5hbnkuanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2Jh
bC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw4MiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIgCisKKy8vIGh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIChzdGVwIDEuMS4y
LjEpCisvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNl
dHRlciAoc3RlcCA0LjUuMSkKKy8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rm
bi1jcmVhdGUtb3BlcmF0aW9uLWZ1bmN0aW9uIChzdGVwIDIuMS4yLjEpCisKK2NvbnN0IG5vdEds
b2JhbE9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRo
aXMpKTsKKwordGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsgT2JqZWN0LmNyZWF0ZShnbG9iYWxUaGlzKS5zZWxmOyB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoImxv
Y2F0aW9uIikuZ2V0LmNhbGwobm90R2xvYmFsT2JqZWN0KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5nZXQoZ2xvYmFsVGhpcywgIm5hdmlnYXRv
ciIsIG5vdEdsb2JhbE9iamVjdCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiB7IG5ldyBQcm94eShnbG9iYWxUaGlzLCB7fSkub25lcnJvcjsgfSk7Cit9LCAiR2xv
YmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9i
amVjdCIpOworCit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyBPYmplY3QuY3JlYXRlKGdsb2JhbFRoaXMpLm9yaWdpbiA9IG9yaWdpbjsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZ2V0R2xvYmFsUHJvcGVydHlE
ZXNjcmlwdG9yKCJvbmVycm9yIikuc2V0LmNhbGwobm90R2xvYmFsT2JqZWN0LCBvbmVycm9yKTsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5zZXQo
Z2xvYmFsVGhpcywgIm9ub2ZmbGluZSIsIG9ub2ZmbGluZSwgbm90R2xvYmFsT2JqZWN0KTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KGdsb2Jh
bFRoaXMsIHt9KS5vbm9ubGluZSA9IG9ub25saW5lOyB9KTsKK30sICJHbG9iYWwgb2JqZWN0J3Mg
c2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisKK3Rl
c3QoKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9iamVj
dC5jcmVhdGUoZ2xvYmFsVGhpcykuc2V0VGltZW91dCgoKSA9PiB7fSwgMTAwKTsgfSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgY2xlYXJUaW1lb3V0LmNhbGwobm90
R2xvYmFsT2JqZWN0LCAoKSA9PiB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiB7IFJlZmxlY3QuYXBwbHkoYnRvYSwgbm90R2xvYmFsT2JqZWN0LCBbIiJdKTsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KGds
b2JhbFRoaXMsIHt9KS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCAoKSA9PiB7fSk7IH0pOwor
fSwgIkdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29t
cGF0aWJsZSBvYmplY3QiKTsKKworaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gInVuZGVmaW5lZCIp
IHsKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
ICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICJkb2N1bWVu
dCIpLmdldC5jYWxsKGRvY3VtZW50LmFsbCk7IH0pOworICAgIH0sICJHbG9iYWwgb2JqZWN0J3Mg
Z2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVu
dC5hbGwpIik7CisKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cs
ICJuYW1lIikuc2V0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAgfSwgIkdsb2JhbCBvYmpl
Y3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRv
Y3VtZW50LmFsbCkiKTsKKworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4geyBhbGVydC5jYWxsKGRvY3VtZW50LmFsbCk7IH0pOworICAg
IH0sICJHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNv
bXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpIik7Cit9CisKK2NvbnN0IGxvY2F0aW9uR2V0
dGVyID0gZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJsb2NhdGlvbiIpLmdldDsKK3Rlc3Qo
KCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJz
ZWxmIikuZ2V0LmNhbGwobnVsbCksIHNlbGYpOworICAgIGFzc2VydF9lcXVhbHMoKCgpID0+IGxv
Y2F0aW9uR2V0dGVyKCkpKCksIGxvY2F0aW9uKTsKKyAgICBhc3NlcnRfZXF1YWxzKFJlZmxlY3Qu
Z2V0KGdsb2JhbFRoaXMsICJvcmlnaW4iLCBudWxsKSwgb3JpZ2luKTsKKyAgICBhc3NlcnRfZXF1
YWxzKFJlZmxlY3QuZ2V0KGdsb2JhbFRoaXMsICJvbm9mZmxpbmUiLCB1bmRlZmluZWQpLCBvbm9m
ZmxpbmUpOworfSwgIkdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24g
bnVsbCAvIHVuZGVmaW5lZCIpOworCit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBmbiA9ICgpID0+
IHt9OworCisgICAgZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJvcmlnaW4iKS5zZXQuY2Fs
bChudWxsLCAiZm9vIik7CisgICAgYXNzZXJ0X2VxdWFscyhvcmlnaW4sICJmb28iKTsKKyAgICBn
ZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9uZXJyb3IiKS5zZXQuY2FsbCh1bmRlZmluZWQs
IGZuKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9uZXJyb3IsIGZuKTsKKyAgICBhc3NlcnRfdHJ1ZShS
ZWZsZWN0LnNldChnbG9iYWxUaGlzLCAib25vZmZsaW5lIiwgZm4sIG51bGwpKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKG9ub2ZmbGluZSwgZm4pOworCisgICAgY29uc3Qgb25vbmxpbmVTZXR0ZXIgPSBn
ZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9ub25saW5lIikuc2V0OworICAgICgoKSA9PiB7
IG9ub25saW5lU2V0dGVyKGZuKTsgfSkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9ub25saW5lLCBm
bik7Cit9LCAiR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxs
IC8gdW5kZWZpbmVkIik7CisKK2NvbnN0IF9fYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlz
dGVuZXI7Cit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGF0b2IuY2FsbChudWxsLCAi
IiksICIiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiAoMCwgc2V0SW50ZXJ2YWwpKCgpID0+
IHt9LCAxMDApLCAibnVtYmVyIik7CisKKyAgICAoKCkgPT4geyBfX2FkZEV2ZW50TGlzdGVuZXIo
ImZvbyIsIGV2ZW50ID0+IHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfSk7IH0pKCk7CisgICAg
Y29uc3QgX19kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudDsKKyAgICAoKCkgPT4geyBhc3Nl
cnRfZmFsc2UoX19kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIiwgeyBjYW5jZWxhYmxlOiB0
cnVlIH0pKSk7IH0pKCk7Cit9LCAiR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB3b3JrcyB3aGVu
IGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7CisKK2Z1bmN0aW9uIGdldEdsb2JhbFByb3Bl
cnR5RGVzY3JpcHRvcihrZXkpIHsKKyAgICBmb3IgKGxldCBvYmogPSBnbG9iYWxUaGlzOyBvYmo7
IG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKSB7CisgICAgICAgIGNvbnN0IGRlc2Mg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KTsKKyAgICAgICAgaWYg
KGRlc2MpIHJldHVybiBkZXNjOworICAgIH0KK30KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xv
YmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0
ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xvYmFs
IG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVj
dAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBp
bmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hl
biBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVy
IHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKK1BBU1MgR2xvYmFsIG9iamVj
dCdzIG9wZXJhdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCisKSW5k
ZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndv
cmtlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxp
Y2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmlu
ZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9w
ZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2Vt
YmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzUxMzEp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvd2luZG93cy9lbWJlZGRlZC1vcGVuZXItcmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKIAotRkFJTCBvcGVuZXIgb2YgZGlzY2FyZGVk
IG5lc3RlZCBicm93c2luZyBjb250ZXh0IFRoZSBXaW5kb3cub3BlbmVyIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKLUZBSUwgb3BlbmVyIG9mIGRpc2NhcmRl
ZCBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dCBUaGUgV2luZG93Lm9wZW5lciBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93CitQQVNTIG9wZW5lciBvZiBkaXNj
YXJkZWQgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQKK1BBU1Mgb3BlbmVyIG9mIGRpc2NhcmRlZCBh
dXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dAogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0
eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjc1MTMxKQorKysgTGF5b3V0VGVzdHMvanMvcHJvcGVydHktb2Ytd2luZG93LWFz
LXByb3RvdHlwZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw0ICswLDAgQEAKLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcHJvcGVydHktb2Ytd2luZG93LWFzLXByb3RvdHlwZS5o
dG1sCShyZXZpc2lvbiAyNzUxMzEpCisrKyBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5k
b3ctYXMtcHJvdG90eXBlLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMyArMCwwIEBACi08IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0vLyBTbyBsb25nIGFzIHRoZSBsaW5lIGJlbG93IGRv
ZXNuJ3QgY3Jhc2gsIHRoaXMgdGVzdCBwYXNzZXMuCi1PYmplY3QuY3JlYXRlKHdpbmRvdykubG9j
YXRpb247Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428253</attachid>
            <date>2021-05-11 00:32:59 -0700</date>
            <delta_ts>2021-05-17 09:38:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223758-20210511103257.patch</filename>
            <type>text/plain</type>
            <size>82526</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBACisyMDIxLTA1LTEwICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBNYWtl
IHx0aGlzfCB2YWx1ZSBjYXN0aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1dGUgYW5k
IElETE9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaDoKKworICAgICAgICAxLiBSZW1vdmVzIHByb3RvdHlwZSBjaGFpbiB0
cmF2ZXJzYWwgZnJvbSB0b0pTRE9NV2luZG93KCksIHdoaWNoIGZpeGVzCisgICAgICAgICAgIGBP
YmplY3QuY3JlYXRlKHdpbmRvdykubG9jYXRpb25gIHRvIHRocm93IGFzIHBlciBzcGVjIFsxXSwg
YWxpZ25pbmcgV2ViS2l0CisgICAgICAgICAgIHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAg
ICAgIDIuIE1lcmdlcyB0b0pTRE9NV2luZG93KCkgYW5kIGZyaWVuZHMgaW50byB0b0pTRE9NR2xv
YmFsT2JqZWN0PEpTQ2xhc3M+IHRoYXQKKyAgICAgICAgICAgaGFuZGxlcyBpbmhlcml0YW5jZSBh
bmQgdW53cmFwcyBKU1Byb3h5LiBUaGlzIGZpeGVzIGBnbG9iYWxUaGlzLnJlZ2lzdGVyUGFpbnQo
Li4uKWAKKyAgICAgICAgICAgaW5zaWRlIGEgd29ya2xldCBub3QgdG8gdGhyb3cuCisKKyAgICAg
ICAgMy4gRXh0cmFjdHMgY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPiB0aGF0IHVzZXMgY29tcGlsZS10
aW1lIGluaGVyaXRhbmNlIGNoZWNrCisgICAgICAgICAgIHRvIHByb3ZpZGUgaW1wbGljaXQgfHRo
aXN8IHZhbHVlIGZvciBET00gZ2xvYmFsIG9iamVjdHMsIHdoaWNoIGZpeGVzIGF0dHJpYnV0ZQor
ICAgICAgICAgICBnZXR0ZXIgLyBzZXR0ZXIsIGNhbGxlZCBvbiBhbiBlbnZpcm9ubWVudCByZWNv
cmQsIG5vdCB0byB0aHJvdyBhcyBwZXIgc3BlYyBbMl0uCisKKyAgICAgICAgNC4gUmVtb3ZlcyBb
SW1wbGljaXRUaGlzXSBhbmQgW0N1c3RvbVByb3h5VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0cmli
dXRlcyBiZWNhdXNlCisgICAgICAgICAgIGFsbCBET00gZ2xvYmFsIG9iamVjdHMgYXJlIHdyYXBw
ZWQgaW4gYSBKU1Byb3h5IGFuZCByZXF1aXJlIHNwZWNpYWwgY2FzdGluZy4KKworICAgICAgICAg
ICBbSW1wbGljaXRUaGlzXSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBzcGVjIFszXSBhIHdoaWxlIGFn
bywgYW5kIGl0IHdhcyB0cmlja3kgbm90CisgICAgICAgICAgIHRvIG1pc3MgW0N1c3RvbVByb3h5
VG9KU09iamVjdF0gd2hlbiBhZGRpbmcgYSBuZXcgRE9NIGdsb2JhbCBvYmplY3QuCisKKyAgICAg
ICAgNS4gUmVwbGFjZXMgdG9UaGlzKCkgd2l0aCBlbnN1cmVUaGlzVmFsdWUoKSB0byBhdm9pZCBu
b24taW5saW5hYmxlIG1ldGhvZCB0YWJsZSBjYWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJl
ZHVjZXMgV2ViQ29yZSAtLXJlbGVhc2UgYmluYXJ5IHNpemUgYnkgMC4zJSAoMjQ4IEtCKS4KKwor
ICAgICAgICBbMV0gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0
ZS1nZXR0ZXIgKHN0ZXAgMS4xLjIuMykKKyAgICAgICAgWzJdIGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtZXZhbHVhdGVjYWxsIChzdGVwIDEuYi5paWkpCisgICAgICAgIFszXSBodHRwczov
L2dpdGh1Yi5jb20vaGV5Y2FtL3dlYmlkbC9wdWxsLzE1NQorCisgICAgICAgIFRlc3RzOiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xv
YmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5qcworICAgICAgICAgICAgICAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRk
ZWQtb3BlbmVyLXJlbW92ZS1mcmFtZS5odG1sCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmli
dXRlOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmVuc3VyZVRoaXNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb246OmNh
bGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTo6Y2Fs
bCk6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlOjpjYWxs
UmV0dXJuaW5nT3duUHJvbWlzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUik6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZERvY3VtZW50V3JhcHBlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2
ZW50VGFyZ2V0Q2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KU1JlbW90ZURPTVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
SlNXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b0pTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTV29ya2xldEdsb2Jh
bFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKFNob3VsZEdlbmVyYXRlVG9KU0RlY2xhcmF0aW9uKToKKyAgICAgICAgKElz
QWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvUmVtb3RlRE9NV2luZG93LmlkbDoKKyAg
ICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGw6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmlkbDoKKwogMjAyMS0wNS0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC5odG1sIGZhaWxzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmgKICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAogICAgIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmgKLSAgICBiaW5kaW5ncy9qcy9KU0RPTUNh
c3RlZFRoaXNFcnJvckJlaGF2aW9yLmgKKyAgICBiaW5kaW5ncy9qcy9KU0RPTUNhc3RUaGlzVmFs
dWUuaAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCiAgICAgYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0QW55LmgKICAgICBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogICAgIEV4cG9zZWQ9QXVkaW9Xb3JrbGV0LAogICAgIENv
bmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAg
SW1wbGljaXRUaGlzLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAg
IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiAgICAgR2xvYmFs
PShXb3JrbGV0LEF1ZGlvV29ya2xldCksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTIzOTMsNyArMjM5Myw2IEBACiAJCTdDODEzOUE2MUVENjI4NkEwMENFMjZFOCAvKiBK
U0RPTUF0dHJpYnV0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M4MTM5QTMxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4MTM5QTcxRUQ2
Mjg3NDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlBNDFFRDYyODFEMDBDRTI2RTggLyogSlNET01P
cGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzgxMzlBODFFRDYyODc0MDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQ
cm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzgxMzlBNTFFRDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0M4
MTM5QUExRUQ2NjA0QjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE5MUVE
NjJERjIwMENFMjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4M0RFODYxRDA0Q0M1
RDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZl
ci5oICovOyB9OwogCQk3QzhFMzRBRDFFNEEzM0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QW55
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5
MjFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0QW55LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4RTM0QUUxRTRBMzNBRjAwNTRDRTIz
IC8qIEpTRE9NQ29udmVydEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDOEUzNDkzMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2
NTQsNiArMjY1Myw3IEBACiAJCTg0MTlEMkE5MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg0MTlEMkE2MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXIuaCAqLzsgfTsKIAkJODQxOUQyQUQxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDE5RDJBQjEyMEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaCAq
LzsgfTsKIAkJODQxOUQyQkExMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDE5RDJC
ODEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCAqLzsgfTsKKwkJODQx
QzQ0MTYyNjBDMzhGRDAwRkY2NjczIC8qIEpTRE9NQ2FzdFRoaXNWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxQzQ0MTQyNjBDMzhCQTAwRkY2
NjczIC8qIEpTRE9NQ2FzdFRoaXNWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg0MjI0MTg0MTA3RTc3RjQwMDc2NkE4NyAvKiBKU1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0MjI0MTgyMTA3RTc3RjQwMDc2NkE4NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuaCAqLzsgfTsKIAkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg0MjI0MTkxMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Lmgg
Ki87IH07CiAJCTg0MzAwQkQ2MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJE
NTEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oICovOyB9OwpAQCAtMTA3
MDIsNyArMTA3MDIsNiBAQAogCQk3QzgxMzlBMzFFRDYyODFEMDBDRTI2RTggLyogSlNET01BdHRy
aWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01BdHRyaWJ1dGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4MTM5QTQxRUQ2MjgxRDAwQ0UyNkU4
IC8qIEpTRE9NT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODEzOUE1MUVE
NjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDODEzOUE5MUVENjJERjIwMENFMjZF
OCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcHJpbmdTb2x2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4NUIyMDEyMkZCMDQ4NTAwMzA2ODRGIC8qIFdI
TFNMVW5uYW1lZFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xVbm5hbWVkVHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODVCMjA0MjJGQjA2MzIwMDMwNjg0
RiAvKiBXSExTTFVubmFtZWRUeXBlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVubmFtZWRU
eXBlSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyNDYsNiArMTEyNDUs
NyBAQAogCQk4NDE5RDJBQjEyMEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1Tb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQxOUQyQjcxMjBFMEM3NjAw
MTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODQxOUQyQjgxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdC
dWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhTdHJpbmdC
dWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0MUM0NDE0MjYwQzM4QkEw
MEZGNjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNET01DYXN0VGhpc1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg0MjI0MTgxMTA3RTc3RjQwMDc2NkE4NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQyMjQxODIxMDdF
NzdGNDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQyMjQxOTAxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNzMwMyw3ICsyNzMwMyw3IEBACiAJCQkJNDFERUZDQjIxRTU2QzFCOTAwMEQ5RTVGIC8qIEpT
RE9NQmluZGluZ0ludGVybmFscy5qcyAqLywKIAkJCQk3QzQ1QzlDQTFFM0U4RDJFMDBBQUI1NTgg
LyogSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwICovLAogCQkJCTdDNDVDOUM5MUUzRThDRDcwMEFB
QjU1OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5oICovLAotCQkJCTdDODEzOUE5MUVENjJERjIw
MENFMjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmggKi8sCisJCQkJODQxQzQ0
MTQyNjBDMzhCQTAwRkY2NjczIC8qIEpTRE9NQ2FzdFRoaXNWYWx1ZS5oICovLAogCQkJCTdDNDVD
OUNDMUUzRThGMDgwMEFBQjU1OCAvKiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcCAqLywKIAkJ
CQk3QzQ1QzlDNzFFM0U4QUZGMDBBQUI1NTggLyogSlNET01FeGNlcHRpb25IYW5kbGluZy5oICov
LAogCQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAg
Ki8sCkBAIC0zMzE5Miw3ICszMzE5Miw3IEBACiAJCQkJN0M0NUM5RDQxRTNGQ0JERjAwQUFCNTU4
IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFG
MkFCRTcxMDAyNzJGNzkgLyogSlNET01DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkx
NzMxRjJBQkU3MTAwMjcyRjdBIC8qIEpTRE9NQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywK
LQkJCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQxQzQ0MTYyNjBDMzhGRDAwRkY2NjczIC8qIEpT
RE9NQ2FzdFRoaXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQzJDMzQxQkMyOUE4RjAw
NzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDg0MTM0
MUNEREIxNTUwMEIwOTU4QyAvKiBKU0RPTUNvbnZlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
OEUzNEFEMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCShy
ZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJp
YnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIgorI2luY2x1ZGUgIkpT
RE9NQ2FzdFRoaXNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMTUgKzM3LDEzIEBAIHB1YmxpYzoKICAgICB1
c2luZyBHZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xhc3Mm
KTsKICAgICB1c2luZyBHZXR0ZXJQYXNzaW5nUHJvcGVydHlOYW1lID0gSlNDOjpKU1ZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHVz
aW5nIFN0YXRpY0dldHRlciA9IEpTQzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0g
ICAgCi0gICAgc3RhdGljIEpTQ2xhc3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogCiAgICAgdGVtcGxhdGU8U2V0dGVyIHNldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhy
b3c+CiAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkKICAgICB7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogCi0gICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBj
YXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmplY3QpKSB7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKICAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0
aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVyVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpOwpAQCAtNjIsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKIAotICAgICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOwor
ICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgaWYgY29uc3RleHByIChz
aG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3cpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZVNldHRlclR5cGVFcnJvcigmbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRyaWJ1dGVO
YW1lKTsKQEAgLTg1LDExICs4MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkp
OwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydCkgewotICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBBU1NFUlQoY2FzdFRoaXNWYWx1ZTxK
U0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKSk7CiAgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDbGFz
cyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIobGV4
aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QpKSkpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpT
Q2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgewogICAgICAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OlRocm93KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0
cmlidXRlR2V0dGVyVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBK
U0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpOwpAQCAtMTEwLDExICsxMDgsMTEgQEAgcHVi
bGljOgogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKIAogICAgICAgICBpZiBjb25zdGV4cHIgKHNo
b3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOworICAgICAg
ICAgICAgQVNTRVJUKGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpOwogICAgICAgICAgICAgYXV0byogdGhp
c09iamVjdCA9IEpTQzo6anNDYXN0PEpTQ2xhc3MqPihKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlND
OjpKU1ZhbHVlOjplbmNvZGUoZ2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBhdHRyaWJ1dGVOYW1lKSkpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAg
ICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpIHsKICAgICAgICAgICAgICAgICBpZiBjb25z
dGV4cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5
cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygp
LCBhdHRyaWJ1dGVOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q2FzdFRoaXNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ2FzdFRoaXNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
RXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
TWljaGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gY2xhc3MgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IgOiB1aW50OF90IHsKKyAgICBU
aHJvdywKKyAgICBSZXR1cm5FYXJseSwKKyAgICBSZWplY3RQcm9taXNlLAorICAgIEFzc2VydCwK
K307CisKK3RlbXBsYXRlPGNsYXNzIEpTQ2xhc3M+CitpbmxpbmUgSlNDbGFzcyogY2FzdFRoaXNW
YWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0RPTUdsb2Jh
bE9iamVjdCwgSlNDbGFzcz4pCisgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0PEpT
Q2xhc3M+KHZtLCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSA/IEpTQzo6SlNWYWx1ZSgm
bGV4aWNhbEdsb2JhbE9iamVjdCkgOiB0aGlzVmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNzKj4odm0sIHRoaXNWYWx1ZSk7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNh
c3RlZFRoaXNFcnJvckJlaGF2aW9yLmgJKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwg
MjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+Ci0gKiAg
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
IENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IgewotICAgIFRo
cm93LAotICAgIFJldHVybkVhcmx5LAotICAgIFJlamVjdFByb21pc2UsCi0gICAgQXNzZXJ0Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw0ICsxNTMsMTkgQEAg
V0VCQ09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QmIGNhbGxlcgogCiBKU0RPTUdsb2JhbE9i
amVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRE9NV3Jh
cHBlcldvcmxkJik7CiAKK3RlbXBsYXRlPGNsYXNzIEpTQ2xhc3M+CitpbmxpbmUgSlNDbGFzcyog
dG9KU0RPTUdsb2JhbE9iamVjdChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorewor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNET01HbG9iYWxPYmplY3QsIEpT
Q2xhc3M+KTsKKworICAgIGlmIChKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmpl
Y3QoKSkgeworICAgICAgICBpZiAob2JqZWN0LT50eXBlKCkgPT0gSlNDOjpQdXJlRm9yd2FyZGlu
Z1Byb3h5VHlwZSkKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDbGFz
cyo+KHZtLCBKU0M6OmpzQ2FzdDxKU0M6OkpTUHJveHkqPihvYmplY3QpLT50YXJnZXQoKSk7Cisg
ICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTQ2xhc3M+KHZtKSkKKyAgICAgICAgICAgIHJl
dHVybiBKU0M6OmpzQ2FzdDxKU0NsYXNzKj4ob2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCShyZXZpc2lvbiAyNzcyNjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNET01DYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvci5oIgorI2luY2x1ZGUgIkpTRE9NQ2FzdFRoaXNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzUsNyArMzUsMTUgQEAgcHVibGljOgogICAgIHVzaW5nIE9wZXJhdGlvbiA9IEpTQzo6
RW5jb2RlZEpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKiwgQ2xh
c3NQYXJhbWV0ZXIpOwogICAgIHVzaW5nIFN0YXRpY09wZXJhdGlvbiA9IEpTQzo6RW5jb2RlZEpT
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKLSAgICBzdGF0
aWMgSlNDbGFzcyogY2FzdChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmKTsK
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUg
aXMgZml4ZWQgbm90IHRvIHBhc3MgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKyAgICBz
dGF0aWMgSlNDbGFzcyogY2FzdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0RPTUdsb2JhbE9iamVjdCwgSlNDbGFzcz4pCisgICAg
ICAgICAgICByZXR1cm4gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkVDTUFNb2RlOjpzdHJpY3QoKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g
Y2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOworICAgIH0KIAogICAgIHRlbXBsYXRlPE9wZXJhdGlvbiBvcGVyYXRpb24sIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OlRocm93PgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGwoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFt
ZSwgY29uc3QgY2hhciogb3BlcmF0aW9uTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMjc3MjYyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgyLDIzICsyODIsNiBAQCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSYg
ZnJhbWUsCiAgICAgcmV0dXJuIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCk7CiB9
CiAKLUpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICB3aGlsZSAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
ID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwotICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpTRE9N
V2luZG93OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKLSAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1dpbmRvd1Byb3h5OjppbmZvKCkp
Ci0gICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KHZtLCBqc0Nh
c3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvdygpKTsKLSAgICAgICAgdmFsdWUgPSBv
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRy
OwotfQotCiBET01XaW5kb3cmIGluY3VtYmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIGFz
SlNET01XaW5kb3coJmNhbGxlckdsb2JhbE9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpKS0+d3JhcHBlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmgJKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0
LDYgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYgogLy8gVGhlIGZv
bGxvd2luZyByZXR1cm4gYSBKU0RPTVdpbmRvdyBvciBudWxscHRyLgogSlNET01XaW5kb3cqIHRv
SlNET01XaW5kb3coRnJhbWUmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU0RPTVdpbmRv
dyogdG9KU0RPTVdpbmRvdyhGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIHsg
cmV0dXJuIGZyYW1lID8gdG9KU0RPTVdpbmRvdygqZnJhbWUsIHdvcmxkKSA6IG51bGxwdHI7IH0K
LVdFQkNPUkVfRVhQT1JUIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEpTQzo6Vk0mLCBKU0M6
OkpTVmFsdWUpOwogCiAvLyBET01XaW5kb3cgYXNzb2NpYXRlZCB3aXRoIGdsb2JhbCBvYmplY3Qg
b2YgdGhlICJtb3N0LXJlY2VudGx5LWVudGVyZWQgYXV0aG9yIGZ1bmN0aW9uIG9yIHNjcmlwdAog
Ly8gb24gdGhlIHN0YWNrLCBvciB0aGUgYXV0aG9yIGZ1bmN0aW9uIG9yIHNjcmlwdCB0aGF0IG9y
aWdpbmFsbHkgc2NoZWR1bGVkIHRoZSBjdXJyZW50bHktcnVubmluZyBjYWxsYmFjay4iCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgREVGSU5FX1ZJ
U0lUX0FERElUSU9OQUxfQ0hJTERSRU4oSlNET01XaQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzRE9NV2luZG93X3dlYmtpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBKU0RPTVdpbmRvdyogY2FzdGVkVGhp
cyA9IHRvSlNET01XaW5kb3codm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U0RPTVdpbmRvdyogY2FzdGVkVGhpcyA9IHRvSlNET01HbG9iYWxPYmplY3Q8SlNET01XaW5kb3c+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMobGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGNhc3RlZFRoaXMtPndyYXBwZWQo
KS53ZWJraXROYW1lc3BhY2UoKSkpOwpAQCAtNTc4LDExICs1NzgsNiBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01XCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxEYXRhYmFzZT4+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXZWJDb3JlOjpE
T01XaW5kb3dXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKGltcGwsIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUodmVyc2lvbiksIFdURk1vdmUoZGlzcGxheU5hbWUpLCBXVEZNb3ZlKGVzdGltYXRlZFNp
emUpLCBXVEZNb3ZlKGNyZWF0aW9uQ2FsbGJhY2spKSkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU0RPTVdpbmRvdyogSURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIHRvSlNET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpz
bG9wcHkoKSkpOwotfQotCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRE9N
V2luZG93Pjo6Y2FsbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fb3BlbkRhdGFiYXNlQm9k
eT4oKmdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZW5EYXRhYmFzZSIpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIEpTT2JqZWN0KiBjYWNoZWRE
b2N1bWVudFdyYXBwZXIoSlNHbG9iYWwKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvKiBkb2N1bWVudEdsb2JhbE9iamVjdCA9IHRvSlNET01XaW5k
b3cobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
d2luZG93KSk7CisgICAgYXV0byogZG9jdW1lbnRHbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFs
T2JqZWN0PEpTRE9NV2luZG93PihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHRvSlMoJmxleGlj
YWxHbG9iYWxPYmplY3QsICp3aW5kb3cpKTsKICAgICBpZiAoIWRvY3VtZW50R2xvYmFsT2JqZWN0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAJKHJldmlzaW9uIDI3NzI2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw5ICs2NSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFy
Z2V0V3JhcHBlcj4ganMKIHsKICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxK
U0V2ZW50VGFyZ2V0Kj4odm0sIHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7Ci0gICAg
aWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1ZSkpCisgICAgaWYg
KGF1dG8qIHdpbmRvdyA9IHRvSlNET01HbG9iYWxPYmplY3Q8SlNET01XaW5kb3c+KHZtLCB0aGlz
VmFsdWUpKQogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4o
d2luZG93LT53cmFwcGVkKCksICp3aW5kb3cpOwotICAgIGlmIChhdXRvKiBzY29wZSA9IHRvSlNX
b3JrZXJHbG9iYWxTY29wZSh2bSwgdGhpc1ZhbHVlKSkKKyAgICBpZiAoYXV0byogc2NvcGUgPSB0
b0pTRE9NR2xvYmFsT2JqZWN0PEpTV29ya2VyR2xvYmFsU2NvcGU+KHZtLCB0aGlzVmFsdWUpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndy
YXBwZWQoKSwgKnNjb3BlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgJKHJldmlzaW9u
IDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIGF1dG8gdGhp
c09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9U
aGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzbG9wcHkoKSkpOworICAg
ICAgICBhdXRvIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICAgICAgYXV0byB0
aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpID8gSlNDOjpKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSA6IHRoaXNWYWx1ZSk7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJFdmVu
dFRhcmdldCIsIG9wZXJhdGlvbk5hbWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDI3NzI2
MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCIKIAotI2luY2x1ZGUgIkpTUmVtb3Rl
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwpAQCAtNzEsMjEgKzcwLDQgQEAgUnVudGltZUZsYWdzIEpTUmVtb3RlRE9NV2luZG93
QmFzZTo6amF2YQogICAgIHJldHVybiBSdW50aW1lRmxhZ3MgeyB9OwogfQogCi1KU1JlbW90ZURP
TVdpbmRvdyogdG9KU1JlbW90ZURPTVdpbmRvdyhKU0M6OlZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkK
LXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgd2hpbGUgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9
IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKLSAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1JlbW90
ZURPTVdpbmRvdzo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1JlbW90ZURP
TVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgICAgIGlmIChjbGFzc0luZm8gPT0gSlNXaW5kb3dQcm94
eTo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNSZW1vdGVET01X
aW5kb3cqPih2bSwganNDYXN0PEpTV2luZG93UHJveHkqPihvYmplY3QpLT53aW5kb3coKSk7Ci0g
ICAgICAgIHZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmgJ
KHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3Rl
RE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTV2luZG93UHJveHk7Ci1jbGFzcyBKU1JlbW90ZURPTVdp
bmRvdzsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNSZW1vdGVET01XaW5kb3dCYXNlIDogcHVi
bGljIEpTRE9NR2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTU4LDYgKzU3LDQgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8UmVtb3RlRE9NV2luZG93PiBtX3dyYXBwZWQ7CiB9OwogCi1XRUJDT1JF
X0VYUE9SVCBKU1JlbW90ZURPTVdpbmRvdyogdG9KU1JlbW90ZURPTVdpbmRvdyhKU0M6OlZNJiwg
SlNDOjpKU1ZhbHVlKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAkocmV2aXNpb24gMjc3MjYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw3IEBACiAj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RUYXNrLmgi
CiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTTWljcm90YXNrQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CkBAIC00MywxMSArNDEsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL01pY3JvdGFzay5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCi0jaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgi
Ci0jZW5kaWYKLQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CkBAIC0xNjYsNDkgKzE1OSw0IEBAIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCosIFdvcmtl
ckdsb2IKICAgICByZXR1cm4gJmNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwogfQogCi1KU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKiB0b0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8gPSBhc09i
amVjdCh2YWx1ZSktPmNsYXNzSW5mbyh2bSk7Ci0gICAgaWYgKGNsYXNzSW5mbyA9PSBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGFzT2JqZWN0KHZhbHVlKSk7Ci0gICAgaWYgKGNs
YXNzSW5mbyA9PSBKU1Byb3h5OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPih2bSwganNDYXN0PEpTUHJveHkqPihhc09i
amVjdCh2YWx1ZSkpLT50YXJnZXQoKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUpTV29y
a2VyR2xvYmFsU2NvcGUqIHRvSlNXb3JrZXJHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFsdWUgdmFs
dWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xh
c3NJbmZvKHZtKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGU6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUpKTsKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBpZiAoY2xhc3NJbmZvID09IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZv
KCkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihh
c09iamVjdCh2YWx1ZSkpOwotI2VuZGlmCi0KLSAgICBpZiAoY2xhc3NJbmZvID09IEpTUHJveHk6
OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29w
ZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLQot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8gPSBhc09i
amVjdCh2YWx1ZSktPmNsYXNzSW5mbyh2bSk7Ci0gICAgaWYgKGNsYXNzSW5mbyA9PSBKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNDYXN0PEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUpKTsKLSAgICBpZiAoY2xhc3NJ
bmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPih2bSwganNDYXN0PEpTUHJveHkqPihhc09iamVjdCh2
YWx1ZSkpLT50YXJnZXQoKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCShyZXZpc2lvbiAyNzcyNjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywyMCArMzMsMTAgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNlbmRpZgogCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEpTUHJveHk7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZTsKLWNsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLWNsYXNzIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOwotI2VuZGlmCi0KIGNsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlIDogcHVi
bGljIEpTRE9NR2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01H
bG9iYWxPYmplY3Q7CkBAIC05MiwxMCArODIsNCBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpKU0dsb2JhbE9iCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
V29ya2VyR2xvYmFsU2NvcGUmKTsKIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBXb3JrZXJHbG9iYWxTY29wZSogc2NvcGUp
IHsgcmV0dXJuIHNjb3BlID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCAqc2NvcGUpIDogSlND
Ojpqc051bGwoKTsgfQogCi1KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKiB0b0pTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci1KU1dvcmtlckds
b2JhbFNjb3BlKiB0b0pTV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSogdG9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsK
LSNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCShyZXZp
c2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVk
ZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RUYXNrLmgi
CiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgpAQCAtMTQ1LDE2ICsxNDQsNCBAQCBKU1ZhbHVlIHRvSlMoSlNHbG9i
YWxPYmplY3QqLCBXb3JrbGV0R2xvCiAgICAgcmV0dXJuICZjb250ZXh0V3JhcHBlci0+cHJveHko
KTsKIH0KIAotSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUp
LT5jbGFzc0luZm8odm0pOwotCi0gICAgaWYgKGNsYXNzSW5mbyA9PSBKU1Byb3h5OjppbmZvKCkp
Ci0gICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlKj4odm0s
IGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwotCi0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5o
CShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3Mg
V29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UgOiBw
dWJsaWMgSlNET01HbG9iYWxPYmplY3QgewpAQCAtODAsNiArNzksNCBAQCBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgV29ya2xldEdsb2JhbFNjb3BlJik7CiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgV29ya2xldEdsb2Jh
bFNjb3BlKiBzY29wZSkgeyByZXR1cm4gc2NvcGUgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3Qs
ICpzY29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CiAKLUpTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pT
V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc3MjYyKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAg
LTE2OTcsNyArMTY5Nyw3IEBAIHN1YiBTaG91bGRHZW5lcmF0ZVRvSlNEZWNsYXJhdGlvbgogCiAg
ICAgcmV0dXJuIDAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N1cHByZXNz
VG9KU09iamVjdH0pOwogICAgIHJldHVybiAwIGlmIG5vdCBOZWVkc0ltcGxlbWVudGF0aW9uQ2xh
c3MoJGludGVyZmFjZSk7Ci0gICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fTsKKyAgICByZXR1cm4gMCBpZiBJc0RPTUds
b2JhbE9iamVjdCgkaW50ZXJmYWNlKTsKICAgICByZXR1cm4gMSBpZiAoISRoYXNQYXJlbnQgb3Ig
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNHZW5lcmF0ZVRvSlNPYmplY3R9IG9y
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVRvSlNPYmplY3R9KTsKICAg
ICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlICYmICRpbnRlcmZhY2UtPnBhcmVu
dFR5cGUtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKICAgICByZXR1cm4gMSBpZiBAeyRpbnRlcmZh
Y2UtPmNvbnN0cnVjdG9yc30gPiAwICYmICFIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNl
KTsKQEAgLTIwMjksOCArMjAyOSw3IEBAIHN1YiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlCiAg
ICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlk
ZW50aWZpZXJ9IGFuZCBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0
dHJpYnV0ZSk7CiAKICAgICAjIElmIHRoZSBpbnRlcmZhY2UgaGFzIHNwZWNpYWwgbG9naWMgZm9y
IGNhc3Rpbmcgd2UgY2Fubm90IGhvaXN0IHR5cGUgY2hlY2sgdG8gSlNDLgotICAgIHJldHVybiAw
IGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxpY2l0VGhpc307Ci0gICAg
cmV0dXJuIDAgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlU
b0pTT2JqZWN0fTsKKyAgICByZXR1cm4gMCBpZiBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNl
KTsKIAogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgIHJldHVybiAw
IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmRUb01hcExpa2V9OwpA
QCAtNDgxMyw0MSArNDgxMiw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
IEdlbmVyYXRlR2V0Q2FsbERhdGEoXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSk7CiAgICAgfQogICAgIAotICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKLSAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQXR0cmlidXRlLmgiKTsKLQotICAgICAgICBteSAkY2Fz
dGluZ0Z1bmN0aW9uID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJv
eHlUb0pTT2JqZWN0fSA/ICJ0byR7Y2xhc3NOYW1lfSIgOiBHZXRDYXN0aW5nSGVscGVyRm9yVGhp
c09iamVjdCgkaW50ZXJmYWNlKTsKLSAgICAgICAgIyBGSVhNRTogUmVtb3ZlIEltcGxpY2l0VGhp
cyBrZXl3b3JkIGFzIGl0IGlzIG5vIGxvbmdlciBkZWZpbmVkIGJ5IFdlYklETCBzcGVjIGFuZCBp
cyBvbmx5IHVzZWQgaW4gRE9NV2luZG93LgotICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3NTgKLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0ltcGxpY2l0VGhpc30pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAidGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFzc05hbWV9KiBJRExBdHRyaWJ1dGU8JHtj
bGFzc05hbWV9Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUo
JmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29kZWRUaGlzVmFsdWUpO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NO
YW1lfSogSURMQXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSlcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGlmICgkbnVtT3BlcmF0aW9ucyA+IDAgJiYgJGludGVyZmFjZU5hbWUgbmUgIkV2ZW50VGFyZ2V0
IikgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01PcGVyYXRpb24uaCIpOwotCi0g
ICAgICAgICMgRklYTUU6IE1ha2UgY29uc2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6Y2FzdCBhbmQg
SURMT3BlcmF0aW9uPD46OmNhc3QgaW4gY2FzZSBvZiBDdXN0b21Qcm94eVRvSlNPYmplY3QuCi0g
ICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1OAot
ICAgICAgICBteSAkY2FzdGluZ0Z1bmN0aW9uID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJ0byR7Y2xhc3NOYW1lfSIgOiBHZXRDYXN0
aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKTsKLSAgICAgICAgbXkgJHRoaXNWYWx1
ZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVj
dH0gPyAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnNsb3BweSgpKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2NsYXNzTmFtZX0qIElETE9w
ZXJhdGlvbjwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNh
c3RpbmdGdW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJHRoaXNWYWx1
ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0KKyAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01BdHRyaWJ1dGUuaCIpIGlmICRudW1BdHRyaWJ1dGVz
ID4gMDsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01PcGVyYXRpb24uaCIpIGlmICRudW1P
cGVyYXRpb25zID4gMCAmJiAkaW50ZXJmYWNlTmFtZSBuZSAiRXZlbnRUYXJnZXQiOwogCiAgICAg
aWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewogICAgICAgICBteSAk
Y29uc3RydWN0b3JHZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3Ii
OwpAQCAtNDg5NywxMCArNDg2Myw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIklH
Tk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIilcbiIpOwogICAgIHB1c2go
QGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidGF1dG9sb2dpY2FsLWNvbXBh
cmVcIilcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZvaWQgKCpteVZpc2l0T3V0
cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSAke2NsYXNz
TmFtZX06OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCos
IEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
O1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpNZXRob2RUYWJsZTo6Vmlz
aXRPdXRwdXRDb25zdHJhaW50c1B0ciBteVZpc2l0T3V0cHV0Q29uc3RyYWludCA9ICR7Y2xhc3NO
YW1lfTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cztcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEpTQzo6TWV0aG9kVGFibGU6OlZpc2l0T3V0cHV0Q29uc3RyYWludHNQdHIganNDZWxs
VmlzaXRPdXRwdXRDb25zdHJhaW50ID0gSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHM7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAobXlWaXNpdE91dHB1dENv
bnN0cmFpbnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KVxuIik7Ci0jICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICgmJHtjbGFzc05hbWV9Ojp2aXNpdE91dHB1dENvbnN0cmFp
bnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cylcbiIpOwogICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJJR05PUkVf
V0FSTklOR1NfRU5EXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5H
U19FTkRcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTksOSArMTE5LDYgQEAKICAgICAgICAgIkN1c3RvbVByZXZlbnRFeHRlbnNpb25zIjogewogICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKLSAg
ICAgICAgIkN1c3RvbVByb3h5VG9KU09iamVjdCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJDdXN0b21QdXNoRXZl
bnRIYW5kbGVyU2NvcGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiXQogICAgICAgICB9LApAQCAtMjQ2LDkgKzI0Myw2IEBACiAgICAgICAgICJJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0KICAgICAgICAgfSwKLSAgICAgICAgIkltcGxpY2l0VGhpcyI6IHsKLSAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAg
ICAgICJJbnRlcmZhY2VOYW1lIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIiwgIm5hbWVzcGFjZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MCw3ICs0NjAsNyBAQCBib29s
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNhbkFjY2Vzc0luc3BlCiB7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAKLSAgICBKU0RPTVdpbmRvdyogaW5zcGVjdGVk
V2luZG93ID0gdG9KU0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiBpbnNwZWN0ZWRXaW5kb3cgPSBqc0R5bmFtaWNDYXN0
PEpTRE9NV2luZG93Kj4obGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjc3MjYyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
MCArMzMsOCBAQAogICAgIEN1c3RvbUdldFByb3RvdHlwZSwKICAgICBDdXN0b21IZWFwU25hcHNo
b3QsCiAgICAgQ3VzdG9tUHJldmVudEV4dGVuc2lvbnMsCi0gICAgQ3VzdG9tUHJveHlUb0pTT2Jq
ZWN0LAogICAgIEN1c3RvbVB1dCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAg
ICBJbXBsaWNpdFRoaXMsCiAgICAgSW50ZXJmYWNlTmFtZT1XaW5kb3csCiAgICAgSXNJbW11dGFi
bGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNP
YmplY3RPblByb3RvdHlwZSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2lu
ZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRv
dy5pZGwJKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9N
V2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsNyBAQAogICAgIEN1c3RvbUdl
dE93blByb3BlcnR5U2xvdCwKICAgICBDdXN0b21HZXRQcm90b3R5cGUsCiAgICAgQ3VzdG9tUHJl
dmVudEV4dGVuc2lvbnMsCi0gICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEN1c3RvbVB1
dCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSW50ZXJmYWNlTmFtZT1XaW5kb3csCiAgICAgSXNJ
bW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVF
eG90aWNPYmplY3RPblByb3RvdHlwZSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzcyNjIp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDkgQEAKICAqLwogCiBbCi0gICAgQ3VzdG9t
UHJveHlUb0pTT2JqZWN0LAogICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAogICAgIEdsb2Jh
bD0oV29ya2VyLERlZGljYXRlZFdvcmtlciksCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAotICAgIEltcGxpY2l0VGhpcywKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVj
dCwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAogXSBp
bnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgOiBXb3JrZXJHbG9iYWxTY29wZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbAko
cmV2aXNpb24gMjc3MjYyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsyNCw5IEBACiAgKi8KIAogWwotICAg
IEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBFeHBvc2VkPVdvcmtlciwKICAgICBKU0N1c3Rv
bU1hcmtGdW5jdGlvbiwKICAgICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZSwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmpl
Y3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKIF0g
aW50ZXJmYWNlIFdvcmtlckdsb2JhbFNjb3BlIDogRXZlbnRUYXJnZXQgewpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCwxMiArMjQsMTAgQEAKICAqLwogCiBbCi0gICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAog
ICAgIEdsb2JhbD0oV29ya2VyLFNlcnZpY2VXb3JrZXIpLAogICAgIEV4cG9zZWQ9U2VydmljZVdv
cmtlciwKICAgICBDb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUiwKICAgICBFbmFibGVkQXRSdW50
aW1lPVNlcnZpY2VXb3JrZXIsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIEpTQ3VzdG9tTWFya0Z1
bmN0aW9uLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1t
dXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCShyZXZp
c2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIEpT
R2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11dGFi
bGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNP
YmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9KFdvcmtsZXQsUGFpbnRXb3JrbGV0KSwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbAko
cmV2aXNpb24gMjc3MjYyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTAgKzI0LDggQEAKICovCiAKIFsKLSAg
ICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCiAgICAgRXhwb3NlZD1Xb3JrbGV0LAogICAgIEpTTGVn
YWN5UGFyZW50PUpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSwKLSAgICBJbXBsaWNpdFRoaXMsCiAg
ICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90
b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9V29ya2xldCwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTEwICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBNYWtlIHx0aGlzfCB2
YWx1ZSBjYXN0aW5nIGNvbnNpc3RlbnQgYmV0d2VlbiBJRExBdHRyaWJ1dGUgYW5kIElETE9wZXJh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIz
NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IGluaGVyaXRzPFRhcmdldD4gaW5zdGVhZCBvZiB0b0pTRE9NV2luZG93KCkgaWYgdGhlIHZhbHVl
IGlzIG5ldmVyIGEgSlNQcm94eS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6
cmVwb3J0RXhjZXB0aW9uKToKKwogMjAyMS0wNS0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHBpY2tlciBVSSBmb3IgPGlu
cHV0IHR5cGU9ZGF0ZT4gYW5kIDxpbnB1dCB0eXBlPWRhdGV0aW1lLWxvY2FsPgpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTYsNyArMjU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVwb3J0RXhjZXB0aW9uKEpT
QwogICAgIEpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CiAKICAgICAvLyBNYWtlIHN1
cmUgdGhlIGNvbnRleHQgaGFzIGEgRE9NV2luZG93IGdsb2JhbCBvYmplY3QsIG90aGVyd2lzZSB0
aGlzIGNvbnRleHQgZGlkbid0IG9yaWdpbmF0ZSBmcm9tIGEgUGFnZS4KLSAgICBpZiAoIXRvSlNE
T01XaW5kb3coZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QpKQorICAgIGlmICghZ2xv
YmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTVdpbmRvdz4oZ2xvYmFsT2JqZWN0LT52bSgpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgdG9KUyhnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3MjYyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMTAgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExd
IE1ha2UgfHRoaXN8IHZhbHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIElETEF0dHJpYnV0
ZSBhbmQgSURMT3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgaW5oZXJpdHM8VGFyZ2V0PiBpbnN0ZWFkIG9mIHRvSlNET01XaW5kb3co
KSBpZiB0aGUgdmFsdWUgaXMgbmV2ZXIgYSBKU1Byb3h5LgorCisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9yZXBvcnRFeGNlcHRpb246aW5Db250ZXh0
Ol0pOgorCiAyMDIxLTA1LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFJlbW92ZSB0aGUgb25lIHVzZSBvZiBTdHJpbmc6OnRvSW50IGZyb20gV2Vi
S2l0TGVnYWN5CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCShyZXZpc2lvbiAyNzcyNjIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMzYsNyArMTMzNiw3IEBAICsgKHZvaWQp
X3JlcG9ydEV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGMKICAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrKGdsb2JhbE9iamVjdCk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgaGFzIGEg
RE9NV2luZG93IGdsb2JhbCBvYmplY3QsIG90aGVyd2lzZSB0aGlzIGNvbnRleHQgZGlkbid0IG9y
aWdpbmF0ZSBmcm9tIGEgV2ViVmlldy4KLSAgICBpZiAoIVdlYkNvcmU6OnRvSlNET01XaW5kb3co
Z2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QpKQorICAgIGlmICghZ2xvYmFsT2JqZWN0
LT5pbmhlcml0czxXZWJDb3JlOjpKU0RPTVdpbmRvdz4oZ2xvYmFsT2JqZWN0LT52bSgpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgdG9KUyhnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3MjYyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMTAgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExd
IE1ha2UgfHRoaXN8IHZhbHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIElETEF0dHJpYnV0
ZSBhbmQgSURMT3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgaW5oZXJpdHM8VGFyZ2V0PiBpbnN0ZWFkIG9mIHRvSlNET01XaW5kb3co
KSBpZiB0aGUgdmFsdWUgaXMgbmV2ZXIgYSBKU1Byb3h5LgorCisgICAgICAgICogV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJWaWV3OjpyZXBvcnRFeGNlcHRpb24pOgorCiAyMDIxLTA1LTA0ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVt
b3ZlIHVudXNlZCByZWZlcmVuY2VzIHRvIFBhZ2VHcm91cCBmcm9tIFdlYktpdExlZ2FjeQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI3NzI2MikKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjE1
LDcgKzY2MTUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlcG9ydEV4Y2VwdGlvbihfSW5fIEpTCiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gTWFrZSBz
dXJlIHRoZSBjb250ZXh0IGhhcyBhIERPTVdpbmRvdyBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2Ug
dGhpcyBjb250ZXh0IGRpZG4ndCBvcmlnaW5hdGUgZnJvbSBhIFdlYlZpZXcuCi0gICAgaWYgKCF0
b0pTRE9NV2luZG93KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSkKKyAgICBpZiAo
IWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01XaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0oKSkp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0xMCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gTWFrZSB8dGhpc3wgdmFsdWUgY2FzdGlu
ZyBjb25zaXN0ZW50IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExPcGVyYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcHJvcGVydHkt
b2Ytd2luZG93LWFzLXByb3RvdHlwZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
anMvcHJvcGVydHktb2Ytd2luZG93LWFzLXByb3RvdHlwZS5odG1sOiBSZW1vdmVkLgorCiAyMDIx
LTA1LTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1N0cmVhbWVyXSBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQt
dmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwgZmFpbHMKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50
TGlzdGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlz
dGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVu
dExpc3RlbmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLUNP
TlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2lu
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZy
YW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhpcyB0ZXN0
cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIEV2ZW50
VGFyZ2V0IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHRhcmdldCBub2RlcyBmcmFtZS4g
KHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBz
ZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBh
bmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29s
ZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVy
cyBvbiBhbiBFdmVudFRhcmdldCB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRoZSB0YXJnZXQg
bm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBp
ZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xp
Y2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50
TGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMjc3MjYyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0
ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiA8L2hlYWQ+CiA8Ym9k
eT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRM
aXN0ZW5lcnMgb24gYW4gRXZlbnRUYXJnZXQgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcwotICAg
ICAgIHRoZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gIFRo
aXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aAotICAg
ICAgIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNj
cmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgorICAgICAgIHRoZSB0
YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBh
c3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxp
ZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9
InJlc291cmNlcy9jaGlsZFdpdGhCdXR0b24uaHRtbCIgb25sb2FkPSJvbmxvYWRGb3JCdXR0b25D
aGlsZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9s
aXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3Rl
bmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6
IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9t
IGFjY2Vzc2luZyBhIGNyb3NzLW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KLVRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGlu
ZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB3aXRoIHRoZSBzaG9ydGN1dCAob25j
bGljaywgZXRjKSwgaXMgdGhlIHRhcmdldCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0
MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9n
IHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZh
U2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhh
dCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdl
dCB3aXRoIHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgaXMgdGhlIHRhcmdldCBub2RlcyBm
cmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIG5vIGVy
cm9ycyB3ZXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9y
dGN1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
bGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHJldmlzaW9u
IDI3NzI2MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNz
LUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDggKzIzLDcgQEAKIDwvaGVhZD4KIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFt
ZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB3aXRo
IHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgCi0gICAgICAgaXMgdGhlIHRhcmdldCBub2Rl
cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBpZiB5
b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoCi0gICAgICAgdGhlIGRvbWFpbiBvZiAi
bG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxv
Z2dlZCB0byB0aGUgY29uc29sZS48L3A+CisgICAgICAgaXMgdGhlIHRhcmdldCBub2RlcyBmcmFt
ZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIG5vIGVycm9y
cyB3ZXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CiAgICAgPGlmcmFtZSBpZD0idGFyZ2V0
Q2hpbGQiIHNyYz0iIj48L2lmcmFtZT4KICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2NoaWxk
V2l0aEJ1dHRvbi5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckJ1dHRvbkNoaWxkKCk7Ij48L2lmcmFt
ZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVu
ZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhN
TEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzcy
NjIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxI
dHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBh
IGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5n
IGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0
IG1hdGNoLgotVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlz
dGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIsIGlzIHRo
ZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFz
c2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAi
bG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxv
Z2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0
dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB1c2luZyBhZGRFdmVudExp
c3RlbmVyLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4g
VGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUu
CiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mt
WE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFk
ZEV2ZW50TGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMjc3MjYyKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0
ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw3ICsxNCw2IEBACiAKICAgICAgICAgZnVu
Y3Rpb24gc3RhcnQoKSB7CiAgICAgICAgICAgICB2YXIgeGhyQ2hpbGQgPSB3aW5kb3cuZnJhbWVz
WzFdOwotICAgICAgICAgICAgLy8geGhyQ2hpbGQuWEhSLm9wZW4oJ0dFVCcsIG51bGwsIHRydWUp
OwogICAgICAgICAgICAgeGhyQ2hpbGQuWEhSLm9wZW4oIkdFVCIsICIuLi8uLi94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2UpOwogICAgICAgICAgICAgeGhyQ2hpbGQu
WEhSLnNlbmQoIiIpOwogCkBAIC0yNSw4ICsyNCw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KICAgICA8
cD5UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMg
b24gYW4gWE1MSHR0cFJlcXVlc3QgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciwgCi0gICAgICAgaXMg
dGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3Qg
cGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUg
ZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdh
cm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KKyAgICAgICBpcyB0aGUgcmVxdWVz
dHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBu
byBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUgaWQ9
InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291cmNl
cy9jaGlsZFdpdGhYTUxIdHRwUmVxdWVzdC5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvclhIUkNoaWxk
KCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hz
cy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzI2MikK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBS
ZXF1ZXN0LXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGgg
b3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3Jp
Z2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhp
cyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFu
IFhNTEh0dHBSZXF1ZXN0IHdpdGggdGhlIHNob3J0Y3V0IChvbnJlYWR5c3RhdGVjaGFuZ2UpLCBp
cyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0
IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4g
b2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBp
cyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCitUaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVu
IHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCB0aGUgc2hv
cnRjdXQgKG9ucmVhZHlzdGF0ZWNoYW5nZSksIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6
Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIG5vIGVycm9ycyB3ZXJlIGxv
Z2dlZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0
dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwJKHJldmlzaW9uIDI3NzI2MikKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKIDwvaGVhZD4KIDxib2R5Pgog
ICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3Rl
bmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBzaG9ydGN1dCAob25yZWFkeXN0YXRl
Y2hhbmdlKSwgCi0gICAgICAgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0v
NTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlh
bG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAi
VW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4K
KyAgICAgICBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4g
VGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUu
PC9wPgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdpdGhYTUxIdHRwUmVxdWVzdC5odG1sIiBvbmxv
YWQ9Im9ubG9hZEZvclhIUkNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFk
ZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlz
dGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1hZGRFdmVudExpc3Rl
bmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUg
TUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQ
cm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhpcyB0ZXN0cyB0aGF0
IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRoZSB3aW5kb3cgdXNp
bmcgYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxl
bS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRp
YWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUg
SmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCitUaGlzIHRlc3Rz
IHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRv
dyB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRoZSB3aW5kb3cncyBmcmFtZS4gKHJkYXI6Ly9w
cm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIG5vIGVycm9ycyB3ZXJlIGxvZ2dl
ZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mt
d2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAyNzcyNjIpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25j
bGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDcg
QEAKIDwvaGVhZD4KIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdo
ZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiB0aGUgd2luZG93IHVzaW5nIGFkZEV2ZW50TGlz
dGVuZXIgaXMgCi0gICAgICAgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQy
NjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9n
IHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5z
YWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KKyAg
ICAgICB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0
ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgog
ICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFt
ZSBzcmM9InJlc291cmNlcy9jaGlsZFdpbmRvdy5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckNoaWxk
KCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hz
cy13aW5kb3ctb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzI2MikK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1v
bmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGgg
b3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3Jp
Z2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhp
cyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRo
ZSB3aW5kb3cgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIGlzIHRoZSB3aW5kb3cn
cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlv
dSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0
IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0
aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVu
dExpc3RlbmVycyBvbiB0aGUgd2luZG93IHdpdGggdGhlIHNob3J0Y3V0IChvbmNsaWNrLCBldGMp
LCBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0
ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93
LW9uY2xpY2stc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCShy
ZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3Rl
bmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw4ICszMyw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJh
bWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRvdyB3aXRoIHRo
ZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgCi0gICAgICAgaXMgdGhlIHdpbmRvdydzIGZyYW1l
LiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24n
dCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhv
c3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRv
IHRoZSBjb25zb2xlLjwvcD4KKyAgICAgICBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8v
cHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiBubyBlcnJvcnMgd2VyZSBsb2dn
ZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9
IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdpbmRvdy5odG1s
IiBvbmxvYWQ9Im9ubG9hZEZvckNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENo
aWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90
YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHJl
dmlzaW9uIDI3NzI2MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVu
ZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlz
dGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMSBAQAogICAgIDxzY3JpcHQ+
CiAgICAgICAgIHdpbmRvdy5wYXJlbnQuZnJhbWVzWzFdLmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdidXR0b24nKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBhbGVydCgiZG9jdW1lbnQuZG9tYWluOiAiICsg
d2luZG93LmRvY3VtZW50LmRvbWFpbik7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigi
ZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CiAgICAgICAgICAg
ICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICBhbGVydChlKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbigpIHt9KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJv
dwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0
bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNv
dXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291
cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC5odG1sCShyZXZp
c2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3Jlc291cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDExIEBACiAgICAgPHNjcmlwdD4KICAgICAgICAg
d2luZG93LnBhcmVudC5mcmFtZXNbMV0uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1dHRvbicp
Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAg
ICAgYWxlcnQoImRvY3VtZW50LmRvbWFpbjogIiArIHdpbmRvdy5kb2N1bWVudC5kb21haW4pOwor
ICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoImRvY3VtZW50LmRvbWFpbjogIiArIHdpbmRv
dy5kb2N1bWVudC5kb21haW4pOwogICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAg
ICAgICAgYWxlcnQoZSk7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgZnVuY3Rpb24o
KSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cKICAgICAgICAgfQogCiAgICAgICAgIHdp
bmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLVhNTEh0dHBSZXF1ZXN0LWFk
ZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1YTUxIdHRwUmVxdWVzdC1h
ZGRFdmVudExpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NzI2MikKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLVhNTEh0dHBS
ZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwx
MSBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5wYXJlbnQuZnJhbWVzWzFdLlhIUi5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgIGFsZXJ0KCJkb2N1bWVudC5kb21haW46ICIgKyB3aW5kb3cuZG9jdW1l
bnQuZG9tYWluKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJkb2N1bWVudC5kb21h
aW46ICIgKyB3aW5kb3cuZG9jdW1lbnQuZG9tYWluKTsKICAgICAgICAgICAgIH0gY2F0Y2goZSkg
ewotICAgICAgICAgICAgICAgIGFsZXJ0KGUpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoZSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKG5h
bWUsIGZ1bmN0aW9uKCkge30pOyAvLyBuby1vcCwgc2hvdWxkbid0IHRocm93CiAgICAgICAgIH0s
IGZhbHNlKTsKIAogICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCI7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRD
aGlsZC1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLVhN
TEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwJKHJldmlzaW9uIDI3NzI2MikKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLVhN
TEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTEg
QEAKICAgICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cucGFyZW50LmZyYW1lc1sxXS5YSFIub25y
ZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB0cnkgewotICAgICAg
ICAgICAgICAgIGFsZXJ0KCJkb2N1bWVudC5kb21haW46ICIgKyB3aW5kb3cuZG9jdW1lbnQuZG9t
YWluKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJkb2N1bWVudC5kb21haW46ICIg
KyB3aW5kb3cuZG9jdW1lbnQuZG9tYWluKTsKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewotICAg
ICAgICAgICAgICAgIGFsZXJ0KGUpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGZ1
bmN0aW9uKCkge30pOyAvLyBuby1vcCwgc2hvdWxkbid0IHRocm93CiAgICAgICAgIH0KIAogICAg
ICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCI7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13aW5kb3ctb25j
bGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtd2luZG93LW9u
Y2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13
aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQs
MTAgKzQsMTEgQEAKICAgICA8c2NyaXB0PgogICAgICAgICB3aW5kb3cucGFyZW50LmZyYW1lc1sx
XS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgICAgICBhbGVydCgiZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRv
Y3VtZW50LmRvbWFpbik7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiZG9jdW1lbnQu
ZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CiAgICAgICAgICAgICB9IGNhdGNo
KGUpIHsKLSAgICAgICAgICAgICAgICBhbGVydChlKTsKKyAgICAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihuYW1lLCBmdW5jdGlvbigpIHt9KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAg
ICB9LCBmYWxzZSk7CiAKICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFy
Z2V0Q2hpbGQtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGls
ZC13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGls
ZC13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0
LDExIEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgd2luZG93LnBhcmVudC5mcmFtZXNbMV0ub25j
bGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBh
bGVydCgiZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRvY3VtZW50LmRvbWFpbik7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiZG9jdW1lbnQuZG9tYWluOiAiICsgd2luZG93LmRv
Y3VtZW50LmRvbWFpbik7CiAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAg
ICBhbGVydChlKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbigpIHt9
KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAgICB9CiAKICAgICAgICAgd2luZG93
LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jv
c3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDUtMTAgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExdIE1ha2UgfHRo
aXN8IHZhbHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIElETEF0dHJpYnV0ZSBhbmQgSURM
T3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjM3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1v
YmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3Qt
aW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQt
dGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1p
bXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1vcGVuZXItcmVt
b3ZlLWZyYW1lLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wNS0xMCAgUm9iIEJ1aXMgIDxyYnVpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIEltcGxlbWVudCA8Zm9ybT4ucmVxdWVzdFN1Ym1pdCgpCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1w
bGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACisKK1BBU1MgR2xvYmFsIG9iamVjdCdz
IGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBH
bG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUg
b2JqZWN0CitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVk
IG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJv
d3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAoZG9jdW1lbnQuYWxsKQorUEFT
UyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGli
bGUgb2JqZWN0IChkb2N1bWVudC5hbGwpCitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24g
dGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkK
K0ZBSUwgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8g
dW5kZWZpbmVkIFRoZSBXaW5kb3cubG9jYXRpb24gZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mIFdpbmRvdworRkFJTCBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdo
ZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgVGhlIFdpbmRvdy5vbm9ubGluZSBzZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93CitQQVNTIEdsb2JhbCBvYmpl
Y3QncyBvcGVyYXRpb24gd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRo
aXMtdmFsdWUuYW55Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1v
YmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlz
LXZhbHVlLmFueS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1p
bXBsaWNpdC10aGlzLXZhbHVlLmFueS5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
Z2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDgyIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlciAKKworLy8gaHR0
cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAg
MS4xLjIuMSkKKy8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1
dGUtc2V0dGVyIChzdGVwIDQuNS4xKQorLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jZGZuLWNyZWF0ZS1vcGVyYXRpb24tZnVuY3Rpb24gKHN0ZXAgMi4xLjIuMSkKKworY29uc3Qg
bm90R2xvYmFsT2JqZWN0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xv
YmFsVGhpcykpOworCit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKGdsb2JhbFRoaXMpLnNlbGY7IH0pOworICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldEdsb2JhbFByb3BlcnR5RGVzY3JpcHRv
cigibG9jYXRpb24iKS5nZXQuY2FsbChub3RHbG9iYWxPYmplY3QpOyB9KTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0LmdldChnbG9iYWxUaGlzLCAibmF2
aWdhdG9yIiwgbm90R2xvYmFsT2JqZWN0KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHsgbmV3IFByb3h5KGdsb2JhbFRoaXMsIHt9KS5vbmVycm9yOyB9KTsKK30s
ICJHbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGli
bGUgb2JqZWN0Iik7CisKK3Rlc3QoKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiB7IE9iamVjdC5jcmVhdGUoZ2xvYmFsVGhpcykub3JpZ2luID0gb3JpZ2luOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXRHbG9iYWxQcm9w
ZXJ0eURlc2NyaXB0b3IoIm9uZXJyb3IiKS5zZXQuY2FsbChub3RHbG9iYWxPYmplY3QsIG9uZXJy
b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBSZWZsZWN0
LnNldChnbG9iYWxUaGlzLCAib25vZmZsaW5lIiwgb25vZmZsaW5lLCBub3RHbG9iYWxPYmplY3Qp
OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHko
Z2xvYmFsVGhpcywge30pLm9ub25saW5lID0gb25vbmxpbmU7IH0pOworfSwgIkdsb2JhbCBvYmpl
Y3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QiKTsK
KwordGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsg
T2JqZWN0LmNyZWF0ZShnbG9iYWxUaGlzKS5zZXRUaW1lb3V0KCgpID0+IHt9LCAxMDApOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBjbGVhclRpbWVvdXQuY2Fs
bChub3RHbG9iYWxPYmplY3QsICgpID0+IHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5hcHBseShidG9hLCBub3RHbG9iYWxPYmplY3QsIFsi
Il0pOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJv
eHkoZ2xvYmFsVGhpcywge30pLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvbyIsICgpID0+IHt9KTsg
fSk7Cit9LCAiR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24g
aW5jb21wYXRpYmxlIG9iamVjdCIpOworCitpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAidW5kZWZp
bmVkIikgeworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgImRv
Y3VtZW50IikuZ2V0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAgfSwgIkdsb2JhbCBvYmpl
Y3QncyBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRv
Y3VtZW50LmFsbCkiKTsKKworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdp
bmRvdywgIm5hbWUiKS5zZXQuY2FsbChkb2N1bWVudC5hbGwpOyB9KTsKKyAgICB9LCAiR2xvYmFs
IG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVj
dCAoZG9jdW1lbnQuYWxsKSIpOworCisgICAgdGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGFsZXJ0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7
CisgICAgfSwgIkdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkiKTsKK30KKworY29uc3QgbG9jYXRp
b25HZXR0ZXIgPSBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoImxvY2F0aW9uIikuZ2V0Owor
dGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0
b3IoInNlbGYiKS5nZXQuY2FsbChudWxsKSwgc2VsZik7CisgICAgYXNzZXJ0X2VxdWFscygoKCkg
PT4gbG9jYXRpb25HZXR0ZXIoKSkoKSwgbG9jYXRpb24pOworICAgIGFzc2VydF9lcXVhbHMoUmVm
bGVjdC5nZXQoZ2xvYmFsVGhpcywgIm9yaWdpbiIsIG51bGwpLCBvcmlnaW4pOworICAgIGFzc2Vy
dF9lcXVhbHMoUmVmbGVjdC5nZXQoZ2xvYmFsVGhpcywgIm9ub2ZmbGluZSIsIHVuZGVmaW5lZCks
IG9ub2ZmbGluZSk7Cit9LCAiR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxl
ZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7CisKK3Rlc3QoKCkgPT4geworICAgIGNvbnN0IGZuID0g
KCkgPT4ge307CisKKyAgICBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9yaWdpbiIpLnNl
dC5jYWxsKG51bGwsICJmb28iKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9yaWdpbiwgImZvbyIpOwor
ICAgIGdldEdsb2JhbFByb3BlcnR5RGVzY3JpcHRvcigib25lcnJvciIpLnNldC5jYWxsKHVuZGVm
aW5lZCwgZm4pOworICAgIGFzc2VydF9lcXVhbHMob25lcnJvciwgZm4pOworICAgIGFzc2VydF90
cnVlKFJlZmxlY3Quc2V0KGdsb2JhbFRoaXMsICJvbm9mZmxpbmUiLCBmbiwgbnVsbCkpOworICAg
IGFzc2VydF9lcXVhbHMob25vZmZsaW5lLCBmbik7CisKKyAgICBjb25zdCBvbm9ubGluZVNldHRl
ciA9IGdldEdsb2JhbFByb3BlcnR5RGVzY3JpcHRvcigib25vbmxpbmUiKS5zZXQ7CisgICAgKCgp
ID0+IHsgb25vbmxpbmVTZXR0ZXIoZm4pOyB9KSgpOworICAgIGFzc2VydF9lcXVhbHMob25vbmxp
bmUsIGZuKTsKK30sICJHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9u
IG51bGwgLyB1bmRlZmluZWQiKTsKKworY29uc3QgX19hZGRFdmVudExpc3RlbmVyID0gYWRkRXZl
bnRMaXN0ZW5lcjsKK3Rlc3QoKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoYXRvYi5jYWxsKG51
bGwsICIiKSwgIiIpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mICgwLCBzZXRJbnRlcnZhbCko
KCkgPT4ge30sIDEwMCksICJudW1iZXIiKTsKKworICAgICgoKSA9PiB7IF9fYWRkRXZlbnRMaXN0
ZW5lcigiZm9vIiwgZXZlbnQgPT4geyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9KTsgfSkoKTsK
KyAgICBjb25zdCBfX2Rpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50OworICAgICgoKSA9PiB7
IGFzc2VydF9mYWxzZShfX2Rpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJmb28iLCB7IGNhbmNlbGFi
bGU6IHRydWUgfSkpKTsgfSkoKTsKK30sICJHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHdvcmtz
IHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQiKTsKKworZnVuY3Rpb24gZ2V0R2xvYmFs
UHJvcGVydHlEZXNjcmlwdG9yKGtleSkgeworICAgIGZvciAobGV0IG9iaiA9IGdsb2JhbFRoaXM7
IG9iajsgb2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpIHsKKyAgICAgICAgY29uc3Qg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpOworICAgICAg
ICBpZiAoZGVzYykgcmV0dXJuIGRlc2M7CisgICAgfQorfQpJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ds
b2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZh
bHVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgR2xvYmFsIG9iamVjdCdz
IGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBH
bG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUg
b2JqZWN0CitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVk
IG9uIGluY29tcGF0aWJsZSBvYmplY3QKK0ZBSUwgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3Jr
cyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXb3JrZXJHbG9iYWxTY29wZS5s
b2NhdGlvbiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV29ya2VyR2xv
YmFsU2NvcGUKK0ZBSUwgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBv
biBudWxsIC8gdW5kZWZpbmVkIFRoZSBXb3JrZXJHbG9iYWxTY29wZS5vbm9ubGluZSBzZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV29ya2VyR2xvYmFsU2NvcGUKK1BBU1Mg
R2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5k
ZWZpbmVkCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMt
dmFsdWUuYW55Lndvcmtlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndv
cmtlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBs
YXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRl
c3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzcyNjIpCisrKyBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0
eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0x
LDQgKzAsMCBAQAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5
cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ct
YXMtcHJvdG90eXBlLmh0bWwJKHJldmlzaW9uIDI3NzI2MikKKysrIExheW91dFRlc3RzL2pzL3By
b3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDEz
ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLS8vIFNvIGxvbmcgYXMgdGhl
IGxpbmUgYmVsb3cgZG9lc24ndCBjcmFzaCwgdGhpcyB0ZXN0IHBhc3Nlcy4KLU9iamVjdC5jcmVh
dGUod2luZG93KS5sb2NhdGlvbjsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428841</attachid>
            <date>2021-05-17 09:39:04 -0700</date>
            <delta_ts>2021-05-20 12:45:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223758-20210517193902.patch</filename>
            <type>text/plain</type>
            <size>165602</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA1LTE3ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBSZW1v
dmUgW0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3RdIGV4dGVuZGVkIGF0
dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgY2hhbmdlIGludHJvZHVjZXMgY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPiwgdGFraW5nIGEg
c3RlcCB0b3dhcmRzIHVuaWZpY2F0aW9uIG9mIHx0aGlzfAorICAgICAgICB2YWx1ZSBjYXN0aW5n
IGJldHdlZW4gSURMQXR0cmlidXRlIGFuZCBJRExPcGVyYXRpb24uIFRoZSBoZWxwZXIgdXNlcyBj
b21waWxlLXRpbWUgaW5oZXJpdGFuY2UKKyAgICAgICAgY2hlY2sgdG8gcHJvdmlkZSBpbXBsaWNp
dCB8dGhpc3wgdmFsdWUgZm9yIERPTSBnbG9iYWwgb2JqZWN0cyBbMV0sIHJlcGxhY2luZyBbSW1w
bGljaXRUaGlzXQorICAgICAgICBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNoIHdhcyByZW1vdmVk
IGZyb20gdGhlIHNwZWMgWzJdIGEgd2hpbGUgYWdvLgorCisgICAgICAgIElETEF0dHJpYnV0ZSBj
YW4ndCBwZXJmb3JtIHRvVGhpcygpIHdpdGggRUNNQU1vZGU6OnN0cmljdCgpLCBsaWtlIElETE9w
ZXJhdGlvbiBub3cgZG9lcywKKyAgICAgICAgYmVjYXVzZSBDdXN0b21WYWx1ZSBnZXR0ZXJzIGFy
ZSBjYWxsZWQgd2l0aCB8dGhpc3wgdmFsdWUgb2YgSlNHbG9iYWxPYmplY3QgdHlwZSwgd2hpY2gg
Z2V0cworICAgICAgICB0YWludGVkIGJ5IEpTU2NvcGU6OnRvVGhpcygpLiAjMjI1Mzk3IHdpbGwg
cmVtb3ZlIHRoZSBuZWVkIGZvciB0b1RoaXMoKSwgZmluYWxseSBtYWtpbmcgfHRoaXN8CisgICAg
ICAgIHZhbHVlIGNhc3RpbmcgY29uc2lzdGVudCBiZXR3ZWVuIGF0dHJpYnV0ZXMgYW5kIG9wZXJh
dGlvbnMuCisKKyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCBmaXhlcyBgT2JqZWN0LmNyZWF0ZSh3
aW5kb3cpLmxvY2F0aW9uYCB0byB0aHJvdyBhcyBwZXIgc3BlYyBbMV0gYnkgcmVtb3ZpbmcKKyAg
ICAgICAgcHJvdG90eXBlIGNoYWluIHRyYXZlcnNhbCBmcm9tIHRvSlNET01XaW5kb3coKSwgd2hp
Y2ggYWxpZ25zIFdlYktpdCB3aXRoIEJsaW5rIGFuZCBHZWNrby4KKworICAgICAgICBBcyBET00g
Z2xvYmFsIG9iamVjdHMgYXJlIHdyYXBwZWQgaW4gcHJveGllcyBhbmQgcmVxdWlyZSBzcGVjaWFs
IGNhc3RpbmcsIHRvSlNET01XaW5kb3coKSBhbmQKKyAgICAgICAgZnJpZW5kcyBhcmUgbWVyZ2Vk
IGludG8gdG9KU0RPTUdsb2JhbE9iamVjdDxKU0NsYXNzPiwgd2hpY2ggaXMgYXdhcmUgb2YgaW5o
ZXJpdGFuY2UgLyBKU1Byb3h5LgorICAgICAgICBJdCByZXBsYWNlcyBbQ3VzdG9tUHJveHlUb0pT
T2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNoIGNvdWxkIGJlIG1pc3NlZCB3aGVuIGFk
ZGluZyBuZXcKKyAgICAgICAgRE9NIGdsb2JhbCBvYmplY3RzLCBmaXhpbmcgd29ya2xldHMnIGds
b2JhbCBmdW5jdGlvbnMgbm90IHRvIHRocm93IHdoZW4gY2FsbGVkIG9uIGBnbG9iYWxUaGlzYC4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZWR1Y2VzIFdlYkNvcmUgLS1yZWxlYXNlIGJpbmFyeSBz
aXplIGJ5IDAuMiUgKDE0NyBLQikuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIChzdGVwIDEuMS4yLjMpCisgICAgICAg
IFsyXSBodHRwczovL2dpdGh1Yi5jb20vaGV5Y2FtL3dlYmlkbC9wdWxsLzE1NQorCisgICAgICAg
IFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5qcworICAgICAg
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVk
aW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1yZWdpc3RlcnBy
b2Nlc3Nvci1jYWxsZWQtb24tZ2xvYmFsdGhpcy5odHRwcy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvKi5odG1sCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURMQXR0cmlidXRlOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRl
OjpzZXRQYXNzaW5nUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklETEF0dHJpYnV0
ZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklETEF0dHJpYnV0ZTo6Z2V0UGFzc2luZ1Byb3Bl
cnR5TmFtZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FzdFRoaXNWYWx1ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
RE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uOjpjYXN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdpbmRvdyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlv
bjxKU0RPTVdpbmRvdz46OmNhc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkRG9jdW1lbnRXcmFw
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb248
SlNFdmVudFRhcmdldD46OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9N
V2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTUmVtb3RlRE9NV2luZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoU2hvdWxkR2VuZXJhdGVUb0pTRGVjbGFy
YXRpb24pOgorICAgICAgICAoSXNBY2NlbGVyYXRlZERPTUF0dHJpYnV0ZSk6CisgICAgICAgIChH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvKjogVXBk
YXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRTY3Jp
cHRTdGF0ZSBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAq
IHBhZ2UvUmVtb3RlRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGw6Cisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbDoKKwogMjAyMS0wNS0xNSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gTW92ZSBCbG9j
a01hcmdpbkNvbGxhcHNlIHRvIGl0cyBvd24gY2xhc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQko
cmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uaAog
ICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5k
aW5nU2VjdXJpdHkuaAotICAgIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3IuaAorICAgIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNWYWx1ZS5oCiAgICAgYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0LmgKICAgICBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaAogICAg
IGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2
IEBACiAgICAgRXhwb3NlZD1BdWRpb1dvcmtsZXQsCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElP
LAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAg
SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5
cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9KFdvcmtsZXQsQXVkaW9Xb3Jr
bGV0KSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM5NCw3ICsyMzk0
LDYgQEAKIAkJN0M4MTM5QTYxRUQ2Mjg2QTAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlBMzFFRDYy
ODFEMDBDRTI2RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyogSlNE
T01PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDODEzOUE0MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDODEzOUE4MUVENjI4
NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE1MUVENjI4MUQwMENF
MjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2
RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpT
RE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5n
U29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi87IH07CiAJCTdDOEUz
NEFEMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOEUzNDkyMUU0QTMzOEUwMDU0Q0UyMyAv
KiBKU0RPTUNvbnZlcnRBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzhFMzRBRTFFNEEzM0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0
OTMxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjY0OCw2ICsyNjQ3LDcgQEAKIAkJ
ODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTYxMjBE
OTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oICovOyB9OwogCQk4NDE5
RDJBRDEyMEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MTlEMkFCMTIwRDkyRkMw
MDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oICovOyB9OwogCQk4NDE5RDJCQTEy
MEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MTlEMkI4MTIwRTBDNzYwMDE0MUY4RiAv
KiBTVkdQYXRoU3RyaW5nQnVpbGRlci5oICovOyB9OworCQk4NDFDNDQxNjI2MEMzOEZEMDBGRjY2
NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NDFDNDQxNDI2MEMzOEJBMDBGRjY2NzMgLyogSlNET01DYXN0VGhp
c1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODQyMjQxODQxMDdFNzdGNDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxODIx
MDdFNzdGNDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oICovOyB9OwogCQk4
NDIyNDE5NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxOTExMDdFNzhB
NzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCAqLzsgfTsKIAkJODQzMDBCRDYx
MjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ1MTIwQzlBQUMwMDIxOTU0QSAv
KiBTVkdQYXRoU3RyaW5nU291cmNlLmggKi87IH07CkBAIC0xMDcwMSw3ICsxMDcwMSw2IEBACiAJ
CTdDODEzOUEzMUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTUF0dHJpYnV0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUF0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzgxMzlBNDFFRDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01PcGVyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4MTM5QTUxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpT
RE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01D
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5
cGVIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGVIYXNoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTIyOCw2ICsxMTIyNyw3IEBACiAJCTg0MTlEMkFCMTIw
RDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NDE5RDJCNzEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0
cmluZ0J1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDE5
RDJCODEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQxQzQ0MTQyNjBDMzhCQTAwRkY2NjczIC8qIEpTRE9NQ2Fz
dFRoaXNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNhc3RU
aGlzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQyMjQxODExMDdFNzdG
NDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDIyNDE4MjEwN0U3N0Y0MDA3NjZBODcgLyogSlNT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NDIyNDE5MDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzE1LDcgKzI3MzE1LDcg
QEAKIAkJCQk0MURFRkNCMjFFNTZDMUI5MDAwRDlFNUYgLyogSlNET01CaW5kaW5nSW50ZXJuYWxz
LmpzICovLAogCQkJCTdDNDVDOUNBMUUzRThEMkUwMEFBQjU1OCAvKiBKU0RPTUJpbmRpbmdTZWN1
cml0eS5jcHAgKi8sCiAJCQkJN0M0NUM5QzkxRTNFOENENzAwQUFCNTU4IC8qIEpTRE9NQmluZGlu
Z1NlY3VyaXR5LmggKi8sCi0JCQkJN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLywKKwkJCQk4NDFDNDQxNDI2MEMzOEJBMDBGRjY2NzMg
LyogSlNET01DYXN0VGhpc1ZhbHVlLmggKi8sCiAJCQkJN0M0NUM5Q0MxRTNFOEYwODAwQUFCNTU4
IC8qIEpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwICovLAogCQkJCTdDNDVDOUM3MUUzRThBRkYw
MEFBQjU1OCAvKiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmggKi8sCiAJCQkJRTFDMzZDQkMwRUIw
ODA2MjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAqLywKQEAgLTMzMTg4LDcgKzMz
MTg4LDcgQEAKIAkJCQk3QzQ1QzlENDFFM0ZDQkRGMDBBQUI1NTggLyogSlNET01CaW5kaW5nU2Vj
dXJpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTczMUYyQUJFNzEwMDI3MkY3OSAvKiBK
U0RPTUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGN0Eg
LyogSlNET01DYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDODEzOUFBMUVENjYw
NEIwMENFMjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4NDFDNDQxNjI2MEMzOEZEMDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNET01Db25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwODQxMzQxQ0REQjE1NTAwQjA5NThDIC8q
IEpTRE9NQ29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QUQxRTRBMzNBRjAwNTRD
RTIzIC8qIEpTRE9NQ29udmVydEFueS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDI3NzU0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0RPTUNh
c3RlZFRoaXNFcnJvckJlaGF2aW9yLmgiCisjaW5jbHVkZSAiSlNET01DYXN0VGhpc1ZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zNywxNSArMzcsMTMgQEAgcHVibGljOgogICAgIHVzaW5nIEdldHRlciA9IEpTQzo6
SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDbGFzcyYpOwogICAgIHVzaW5nIEdldHRl
clBhc3NpbmdQcm9wZXJ0eU5hbWUgPSBKU0M6OkpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQ2xhc3MmLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgdXNpbmcgU3RhdGljR2V0dGVyID0g
SlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLSAgICAKLSAgICBzdGF0aWMgSlND
bGFzcyogY2FzdChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAK
ICAgICB0ZW1wbGF0ZTxTZXR0ZXIgc2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91
bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgYm9v
bCBzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKQogICAgIHsKICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CiAKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3RUaGlzVmFs
dWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpIHsKICAgICAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OlRocm93KQogICAgICAgICAgICAgICAgIHJldHVybiBKU0M6OnRocm93Vk1ET01BdHRyaWJ1dGVT
ZXR0ZXJUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpTQ2xhc3M6
OmluZm8oKSwgYXR0cmlidXRlTmFtZSk7CkBAIC02Miw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogCi0gICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBj
YXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmplY3QpKSB7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKICAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0
aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVyVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpOwpAQCAtODUsMTEgKzgz
LDExIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAKICAgICAgICAgaWYgY29u
c3RleHByIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0KSB7
Ci0gICAgICAgICAgICBBU1NFUlQoY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUp
KTsKKyAgICAgICAgICAgIEFTU0VSVChjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKTsKICAgICAgICAgICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0NsYXNzKj4oSlNDOjpKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCkpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOworICAgICAgICAg
ICAgYXV0byogdGhpc09iamVjdCA9IGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgaWYgY29uc3RleHBy
IChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3cpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU0M6OnRocm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJy
b3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpTQ2xhc3M6OmluZm8oKSwgYXR0
cmlidXRlTmFtZSk7CkBAIC0xMTAsMTEgKzEwOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCkgewotICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBBU1NFUlQoY2FzdFRo
aXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKSk7CiAgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nh
c3Q8SlNDbGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6OmVuY29kZShn
ZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIGF0dHJpYnV0ZU5hbWUpKSkp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3Qo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cg
PT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93KQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVl
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0
VGhpc1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxz
YW1Ad2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBNaWNoYWVsIFBydWV0dCA8bWlj
aGFlbEA2OGsub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvciA6IHVpbnQ4X3QgeworICAgIFRocm93LAorICAgIFJldHVybkVh
cmx5LAorICAgIFJlamVjdFByb21pc2UsCisgICAgQXNzZXJ0LAorfTsKKwordGVtcGxhdGU8Y2xh
c3MgSlNDbGFzcz4KK2lubGluZSBKU0NsYXNzKiBjYXN0VGhpc1ZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUpCit7Cisg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTRE9NR2xvYmFsT2JqZWN0LCBKU0NsYXNzPikK
KyAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Q8SlNDbGFzcz4odm0sIHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpID8gSlNDOjpKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSA6IHRoaXNWYWx1ZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gSlNDOjpqc0R5bmFtaWND
YXN0PEpTQ2xhc3MqPih2bSwgdGhpc1ZhbHVlKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3IuaAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oCShub25leGlzdGVudCkKQEAgLTEsMzUgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDA2LCAyMDA4LTIwMDksIDIwMTMsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAw
NyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEy
IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAx
MyBNaWNoYWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBj
bGFzcyBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciB7Ci0gICAgVGhyb3csCi0gICAgUmV0dXJuRWFy
bHksCi0gICAgUmVqZWN0UHJvbWlzZSwKLSAgICBBc3NlcnQKLX07Ci0KLX0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkocmV2aXNpb24g
Mjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDQgKzE1MywxOSBAQCBXRUJDT1JFX0VYUE9SVCBKU0RP
TUdsb2JhbE9iamVjdCYgY2FsbGVyCiAKIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFs
T2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBET01XcmFwcGVyV29ybGQmKTsKIAordGVt
cGxhdGU8Y2xhc3MgSlNDbGFzcz4KK2lubGluZSBKU0NsYXNzKiB0b0pTRE9NR2xvYmFsT2JqZWN0
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0RPTUdsb2JhbE9iamVjdCwgSlNDbGFzcz4pOworCisgICAgaWYg
KGF1dG8qIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpKSB7CisgICAgICAgIGlmIChvYmplY3Qt
PnR5cGUoKSA9PSBKU0M6OlB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKQorICAgICAgICAgICAgcmV0
dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNzKj4odm0sIEpTQzo6anNDYXN0PEpTQzo6SlNQ
cm94eSo+KG9iamVjdCktPnRhcmdldCgpKTsKKyAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8
SlNDbGFzcz4odm0pKQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTQ2xhc3MqPihv
YmplY3QpOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0
aW9uLmgJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgiCisjaW5j
bHVkZSAiSlNET01DYXN0VGhpc1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw3ICszNSwxNSBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgT3BlcmF0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqLCBDbGFzc1BhcmFtZXRlcik7CiAgICAgdXNpbmcgU3Rh
dGljT3BlcmF0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKIAotICAgIHN0YXRpYyBKU0NsYXNzKiBjYXN0KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBh
ZnRlciBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSBpcyBmaXhlZCBub3QgdG8gcGFzcyByZXNvbHZl
ZCBzY29wZSBhcyB8dGhpc3wgdmFsdWUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTM5NworICAgIHN0YXRpYyBKU0NsYXNzKiBjYXN0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJh
bWUpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTRE9N
R2xvYmFsT2JqZWN0LCBKU0NsYXNzPikKKyAgICAgICAgICAgIHJldHVybiBjYXN0VGhpc1ZhbHVl
PEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1Ro
aXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnN0cmljdCgpKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CisgICAgfQogCiAgICAgdGVt
cGxhdGU8T3BlcmF0aW9uIG9wZXJhdGlvbiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxk
VGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CiAgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1l
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsMjMgKzI4Miw2IEBAIEpTRE9N
V2luZG93KiB0b0pTRE9NV2luZG93KEZyYW1lJiBmcmFtZSwKICAgICByZXR1cm4gZnJhbWUuc2Ny
aXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKIH0KIAotSlNET01XaW5kb3cqIHRvSlNET01XaW5k
b3coSlNDOjpWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHdoaWxlICghdmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8gPSBvYmplY3QtPmNsYXNzSW5mbyh2bSk7Ci0g
ICAgICAgIGlmIChjbGFzc0luZm8gPT0gSlNET01XaW5kb3c6OmluZm8oKSkKLSAgICAgICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwotICAgICAgICBpZiAoY2xhc3NJ
bmZvID09IEpTV2luZG93UHJveHk6OmluZm8oKSkKLSAgICAgICAgICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTRE9NV2luZG93Kj4odm0sIGpzQ2FzdDxKU1dpbmRvd1Byb3h5Kj4ob2JqZWN0KS0+
d2luZG93KCkpOwotICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIERPTVdpbmRvdyYgaW5jdW1iZW50
RE9NV2luZG93KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gYXNKU0RPTVdpbmRvdygmY2FsbGVyR2xvYmFsT2Jq
ZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpLT53cmFwcGVkKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkocmV2aXNpb24g
Mjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNiBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iCiAvLyBUaGUgZm9sbG93aW5nIHJldHVybiBhIEpTRE9NV2luZG93
IG9yIG51bGxwdHIuCiBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSYsIERPTVdyYXBw
ZXJXb3JsZCYpOwogaW5saW5lIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93KEZyYW1lKiBmcmFt
ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkgeyByZXR1cm4gZnJhbWUgPyB0b0pTRE9NV2luZG93
KCpmcmFtZSwgd29ybGQpIDogbnVsbHB0cjsgfQotV0VCQ09SRV9FWFBPUlQgSlNET01XaW5kb3cq
IHRvSlNET01XaW5kb3coSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CiAKIC8vIERPTVdpbmRvdyBh
c3NvY2lhdGVkIHdpdGggZ2xvYmFsIG9iamVjdCBvZiB0aGUgIm1vc3QtcmVjZW50bHktZW50ZXJl
ZCBhdXRob3IgZnVuY3Rpb24gb3Igc2NyaXB0CiAvLyBvbiB0aGUgc3RhY2ssIG9yIHRoZSBhdXRo
b3IgZnVuY3Rpb24gb3Igc2NyaXB0IHRoYXQgb3JpZ2luYWxseSBzY2hlZHVsZWQgdGhlIGN1cnJl
bnRseS1ydW5uaW5nIGNhbGxiYWNrLiIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQsNyArODQsNyBAQCBERUZJTkVfVklTSVRfQURESVRJT05BTF9DSElMRFJFTihKU0RP
TVdpCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfd2Via2l0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIEpTRE9NV2luZG93KiBjYXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyh2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSB0b0pTRE9NR2xv
YmFsT2JqZWN0PEpTRE9NV2luZG93Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxl
eGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKQEAgLTU3OCwxMSAr
NTc4LDYgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NVwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RGF0YWJh
c2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShp
bXBsLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZlcnNpb24pLCBXVEZNb3ZlKGRpc3BsYXlOYW1l
KSwgV1RGTW92ZShlc3RpbWF0ZWRTaXplKSwgV1RGTW92ZShjcmVhdGlvbkNhbGxiYWNrKSkpKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxKU0RPTVdp
bmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKLX0KLQogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2UsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhbGw8anNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uX29wZW5EYXRhYmFzZUJvZHk+KCpnbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvcGVu
RGF0YWJhc2UiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
NyBAQCBKU09iamVjdCogY2FjaGVkRG9jdW1lbnRXcmFwcGVyKEpTR2xvYmFsCiAgICAgaWYgKCF3
aW5kb3cpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogZG9jdW1lbnRHbG9i
YWxPYmplY3QgPSB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgdG9KUygm
bGV4aWNhbEdsb2JhbE9iamVjdCwgKndpbmRvdykpOworICAgIGF1dG8qIGRvY3VtZW50R2xvYmFs
T2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdDxKU0RPTVdpbmRvdz4obGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLCB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAqd2luZG93KSk7CiAgICAgaWYg
KCFkb2N1bWVudEdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20u
Y3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzCiB7CiAgICAgaWYgKGF1dG8qIHRh
cmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHZtLCB0aGlzVmFsdWUpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFw
cGVkKCksICp0YXJnZXQpOwotICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZt
LCB0aGlzVmFsdWUpKQorICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NR2xvYmFsT2JqZWN0
PEpTRE9NV2luZG93Pih2bSwgdGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKLSAgICBp
ZiAoYXV0byogc2NvcGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCisg
ICAgaWYgKGF1dG8qIHNjb3BlID0gdG9KU0RPTUdsb2JhbE9iamVjdDxKU1dvcmtlckdsb2JhbFNj
b3BlPih2bSwgdGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRh
cmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldEN1c3RvbS5oCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDgg
QEAgcHVibGljOgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01B
TW9kZTo6c2xvcHB5KCkpKTsKKyAgICAgICAgYXV0byB0aGlzVmFsdWUgPSBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzdHJp
Y3QoKSk7CisgICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCB0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSA/IEpTQzo6SlNWYWx1ZSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCkgOiB0aGlzVmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJnZXQiLCBvcGVyYXRpb25OYW1lKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jh
c2UuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3dCYXNlLmgi
CiAKLSNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTV2luZG93UHJv
eHkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTcxLDIxICs3MCw0IEBAIFJ1bnRpbWVG
bGFncyBKU1JlbW90ZURPTVdpbmRvd0Jhc2U6OmphdmEKICAgICByZXR1cm4gUnVudGltZUZsYWdz
IHsgfTsKIH0KIAotSlNSZW1vdGVET01XaW5kb3cqIHRvSlNSZW1vdGVET01XaW5kb3coSlNDOjpW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHdoaWxlICghdmFsdWUuaXNOdWxsKCkpIHsKLSAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8gPSBvYmplY3QtPmNsYXNzSW5mbyh2bSk7Ci0gICAgICAgIGlm
IChjbGFzc0luZm8gPT0gSlNSZW1vdGVET01XaW5kb3c6OmluZm8oKSkKLSAgICAgICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNSZW1vdGVET01XaW5kb3cqPihvYmplY3QpOwotICAgICAgICBpZiAoY2xh
c3NJbmZvID09IEpTV2luZG93UHJveHk6OmluZm8oKSkKLSAgICAgICAgICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTUmVtb3RlRE9NV2luZG93Kj4odm0sIGpzQ2FzdDxKU1dpbmRvd1Byb3h5Kj4o
b2JqZWN0KS0+d2luZG93KCkpOwotICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9N
V2luZG93QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVtb3RlRE9NV2luZG93QmFzZS5oCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1dpbmRvd1Byb3h5
OwotY2xhc3MgSlNSZW1vdGVET01XaW5kb3c7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTUmVt
b3RlRE9NV2luZG93QmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CkBA
IC01OCw2ICs1Nyw0IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlbW90ZURPTVdpbmRvdz4gbV93
cmFwcGVkOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgSlNSZW1vdGVET01XaW5kb3cqIHRvSlNSZW1v
dGVET01XaW5kb3coSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsOSArMzIsNyBAQAogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkpT
RE9NR2xvYmFsT2JqZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgot
I2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU01p
Y3JvdGFza0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgpAQCAtNDMsMTEgKzQxLDYgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NaWNyb3Rhc2suaD4KICNpbmNsdWRlIDx3dGYvTGFu
Z3VhZ2UuaD4KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSNpbmNsdWRlICJKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oIgotI2VuZGlmCi0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMTY2LDQ5ICsxNTksNCBAQCBKU1ZhbHVlIHRvSlMo
SlNHbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iCiAgICAgcmV0dXJuICZjb250ZXh0V3JhcHBlci0+
cHJveHkoKTsKIH0KIAotSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogdG9KU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUpLT5jbGFzc0luZm8odm0pOwotICAgIGlm
IChjbGFzc0luZm8gPT0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpKQotICAg
ICAgICByZXR1cm4ganNDYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihhc09iamVj
dCh2YWx1ZSkpOwotICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4odm0s
IGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwotICAgIHJldHVy
biBudWxscHRyOwotfQotCi1KU1dvcmtlckdsb2JhbFNjb3BlKiB0b0pTV29ya2VyR2xvYmFsU2Nv
cGUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8g
PSBhc09iamVjdCh2YWx1ZSktPmNsYXNzSW5mbyh2bSk7Ci0gICAgaWYgKGNsYXNzSW5mbyA9PSBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0Nh
c3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGFzT2JqZWN0KHZhbHVlKSk7Ci0KLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGNsYXNzSW5mbyA9PSBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNDYXN0PEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUpKTsKLSNlbmRpZgotCi0gICAgaWYg
KGNsYXNzSW5mbyA9PSBKU1Byb3h5OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTV29ya2VyR2xvYmFsU2NvcGUqPih2bSwganNDYXN0PEpTUHJveHkqPihhc09iamVjdCh2
YWx1ZSkpLT50YXJnZXQoKSk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLUpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKiB0b0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUpLT5jbGFzc0luZm8odm0pOwotICAgIGlm
IChjbGFzc0luZm8gPT0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKLSAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+KGFzT2JqZWN0KHZh
bHVlKSk7Ci0gICAgaWYgKGNsYXNzSW5mbyA9PSBKU1Byb3h5OjppbmZvKCkpCi0gICAgICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4odm0sIGpzQ2Fz
dDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwotICAgIHJldHVybiBudWxs
cHRyOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAko
cmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjAgKzMzLDEwIEBACiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjZW5kaWYKIAotbmFtZXNwYWNlIEpT
QyB7Ci1jbGFzcyBKU1Byb3h5OwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlOwog
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1j
bGFzcyBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKLSNlbmRpZgotCiBjbGFzcyBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTRE9NR2xvYmFsT2JqZWN0OwpAQCAtOTIsMTAgKzgyLDQgQEAgaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYgogSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCosIFdvcmtlckdsb2JhbFNjb3BlJik7CiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgV29y
a2VyR2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/IHRvSlMobGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KIAotSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZSogdG9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6
OkpTVmFsdWUpOwotSlNXb3JrZXJHbG9iYWxTY29wZSogdG9KU1dvcmtlckdsb2JhbFNjb3BlKEpT
Qzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlND
OjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0jZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpT
RE9NR2xvYmFsT2JqZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgot
I2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KQEAgLTE0NSwxNiArMTQ0LDQg
QEAgSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiwgV29ya2xldEdsbwogICAgIHJldHVybiAm
Y29udGV4dFdyYXBwZXItPnByb3h5KCk7CiB9CiAKLUpTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pT
V29ya2xldEdsb2JhbFNjb3BlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8qIGNsYXNz
SW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLQotICAgIGlmIChjbGFzc0lu
Zm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dv
cmtsZXRHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSkt
PnRhcmdldCgpKTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuaAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1dvcmts
ZXRHbG9iYWxTY29wZTsKIGNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlIDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsKQEAgLTgwLDYg
Kzc5LDQgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYgogSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOwog
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIFdvcmtsZXRHbG9iYWxTY29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9K
UyhsZXhpY2FsR2xvYmFsT2JqZWN0LCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQogCi1KU1dv
cmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6OlZNJiwgSlNDOjpK
U1ZhbHVlKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3
NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xNjk3LDcgKzE2OTcsNyBAQCBzdWIgU2hvdWxkR2VuZXJh
dGVUb0pTRGVjbGFyYXRpb24KIAogICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntTdXBwcmVzc1RvSlNPYmplY3R9KTsKICAgICByZXR1cm4gMCBpZiBub3Qg
TmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpOwotICAgIHJldHVybiAwIGlmICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH07Cisg
ICAgcmV0dXJuIDAgaWYgSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAgICAgcmV0dXJu
IDEgaWYgKCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pT
R2VuZXJhdGVUb0pTT2JqZWN0fSBvciAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21Ub0pTT2JqZWN0fSk7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+cGFyZW50VHlw
ZSAmJiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CiAgICAg
cmV0dXJuIDEgaWYgQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9ID4gMCAmJiAhSGFzQ3VzdG9t
Q29uc3RydWN0b3IoJGludGVyZmFjZSk7CkBAIC0yMDI5LDggKzIwMjksNyBAQCBzdWIgSXNBY2Nl
bGVyYXRlZERPTUF0dHJpYnV0ZQogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgQXR0cmlidXRlU2hvdWxkQmVPbklu
c3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgIyBJZiB0aGUgaW50ZXJmYWNl
IGhhcyBzcGVjaWFsIGxvZ2ljIGZvciBjYXN0aW5nIHdlIGNhbm5vdCBob2lzdCB0eXBlIGNoZWNr
IHRvIEpTQy4KLSAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntJbXBsaWNpdFRoaXN9OwotICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH07CisgICAgcmV0dXJuIDAgaWYgSXNET01H
bG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAKICAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5p
c1N0YXRpYzsKICAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntGb3J3YXJkVG9NYXBMaWtlfTsKQEAgLTQ4MTMsNDEgKzQ4MTIsOCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBHZW5lcmF0ZUdldENhbGxEYXRhKFxAaW1wbENvbnRlbnQs
ICRpbnRlcmZhY2UsICRjbGFzc05hbWUpOwogICAgIH0KICAgICAKLSAgICBpZiAoJG51bUF0dHJp
YnV0ZXMgPiAwKSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUF0dHJpYnV0ZS5o
Iik7Ci0KLSAgICAgICAgbXkgJGNhc3RpbmdGdW5jdGlvbiA9ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAidG8ke2NsYXNzTmFtZX0iIDog
R2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7Ci0gICAgICAgICMgRklY
TUU6IFJlbW92ZSBJbXBsaWNpdFRoaXMga2V5d29yZCBhcyBpdCBpcyBubyBsb25nZXIgZGVmaW5l
ZCBieSBXZWJJREwgc3BlYyBhbmQgaXMgb25seSB1c2VkIGluIERPTVdpbmRvdy4KLSAgICAgICAg
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzU4Ci0gICAgICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsaWNpdFRoaXN9KSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NO
YW1lfSogSURMQXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSlcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpO1xu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGRlY29kZWRUaGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKGRlY29kZWRUaGlzVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50b1RoaXMoJmxleGlj
YWxHbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSk7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKHZtLCBkZWNvZGVk
VGhpc1ZhbHVlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1w
bGF0ZTw+IGlubGluZSAke2NsYXNzTmFtZX0qIElETEF0dHJpYnV0ZTwke2NsYXNzTmFtZX0+Ojpj
YXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlv
bihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoJG51bU9wZXJhdGlvbnMgPiAwICYmICRpbnRlcmZh
Y2VOYW1lIG5lICJFdmVudFRhcmdldCIpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
RE9NT3BlcmF0aW9uLmgiKTsKLQotICAgICAgICAjIEZJWE1FOiBNYWtlIGNvbnNpc3RlbnQgSURM
QXR0cmlidXRlPD46OmNhc3QgYW5kIElETE9wZXJhdGlvbjw+OjpjYXN0IGluIGNhc2Ugb2YgQ3Vz
dG9tUHJveHlUb0pTT2JqZWN0LgotICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM3NTgKLSAgICAgICAgbXkgJGNhc3RpbmdGdW5jdGlvbiA9ICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAidG8k
e2NsYXNzTmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7
Ci0gICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMo
JmxleGljYWxHbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkiIDogImNhbGxGcmFtZS50
aGlzVmFsdWUoKSI7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBpbmxp
bmUgJHtjbGFzc05hbWV9KiBJRExPcGVyYXRpb248JHtjbGFzc05hbWV9Pjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpXG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24oSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksICR0aGlzVmFsdWUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKLSAgICB9CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQXR0cmlidXRl
LmgiKSBpZiAkbnVtQXR0cmlidXRlcyA+IDA7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9N
T3BlcmF0aW9uLmgiKSBpZiAkbnVtT3BlcmF0aW9ucyA+IDAgJiYgJGludGVyZmFjZU5hbWUgbmUg
IkV2ZW50VGFyZ2V0IjsKIAogICAgIGlmIChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVy
ZmFjZSkpIHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yR2V0dGVyID0gImpzIiAuICRpbnRlcmZh
Y2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNzc1NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTE5LDkgKzExOSw2IEBACiAgICAgICAgICJDdXN0b21QcmV2ZW50RXh0ZW5z
aW9ucyI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAg
ICAgICAgIH0sCi0gICAgICAgICJDdXN0b21Qcm94eVRvSlNPYmplY3QiOiB7Ci0gICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQotICAgICAgICB9LAogICAgICAgICAi
Q3VzdG9tUHVzaEV2ZW50SGFuZGxlclNjb3BlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKQEAgLTI0Niw5ICsyNDMsNiBAQAogICAg
ICAgICAiSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJJbXBsaWNpdFRo
aXMiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQotICAg
ICAgICB9LAogICAgICAgICAiSW50ZXJmYWNlTmFtZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJuYW1lc3BhY2UiXSwKICAgICAgICAgICAgICJ2YWx1
ZXMiOiBbIioiXQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDEsMTEgKzIwMSw2IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OmdldENv
bnN0cnVjdG9yKFZNJiAKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNET01XaW5kb3dE
T01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETEF0dHJp
YnV0ZTxKU0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU0RPTVdpbmRvdyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RP
TVdpbmRvd0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMzc5LDQ0ICszNzQsNiBAQCB2
b2lkIEpTRE9NV2luZG93OjphbmFseXplSGVhcChKU0NlbGwqIGNlCiAgICAgQmFzZTo6YW5hbHl6
ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwogfQogCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZ
KQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0
ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183RE9NV2luZG93
QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQq
IF9aVFZON1dlYkNvcmU5RE9NV2luZG93RVtdOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPERPTVdpbmRvdz4mJiBpbXBsKQotewotCi0jaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50
ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdET01XaW5k
b3dAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9ICZfWlRWTjdXZWJDb3JlOURPTVdpbmRvd0VbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRo
aXMgZmFpbHMgRE9NV2luZG93IGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRv
IGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0
aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1v
cnBoaWM8RE9NV2luZG93Pjo6dmFsdWUsICJET01XaW5kb3cgaXMgbm90IHBvbHltb3JwaGljIik7
Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVz
ZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBET01XaW5kb3cgaGFzIHN1YmNsYXNzZXMuIElm
IERPTVdpbmRvdyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pT
KCkgd2UgY3VycmVudGx5IHJlcXVpcmUgRE9NV2luZG93IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRp
bmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBh
dHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJFTEVBU0VfQVNT
RVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRp
ZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPERPTVdpbmRvdz4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9N
V2luZG93JiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KIERPTVdpbmRvdyogSlNET01XaW5kb3c6OnRvV3JhcHBl
ZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KHZtLCB2YWx1ZSkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5k
b3cuaAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEwICs2OSw2IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU1dpbmRvd1By
b3h5Kik7CiB9OwogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqLCBET01XaW5kb3cmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBET01XaW5kb3cqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsg
fQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgUmVmPERPTVdpbmRvdz4mJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPERPTVdpbmRvdz4mJiBp
bXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9
CiAKIGNsYXNzIEpTRE9NV2luZG93UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYgQEAgSlNWYWx1ZSBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlOjpnZQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cu
Y3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTYsMTEgKzIxNiw2IEBAIHZvaWQgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmRlc3Ry
b3kKICAgICB0aGlzT2JqZWN0LT5KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6fkpTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93KiBJRExPcGVyYXRpb248SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNh
bGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDExICsxMjMsNiBAQCBKU1ZhbHVlIEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSogSURMQXR0cmlidXRlPEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJl
dmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywx
MSArMTIzLDYgQEAgSlNWYWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Z2V0QwogICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSogSURMQXR0cmlidXRlPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9ucy5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
NCwxNiArMTg0LDYgQEAgdm9pZCBKU1Rlc3RDRVJlYWN0aW9uczo6ZGVzdHJveShKU0M6OkpTQwog
ICAgIHRoaXNPYmplY3QtPkpTVGVzdENFUmVhY3Rpb25zOjp+SlNUZXN0Q0VSZWFjdGlvbnMoKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnMqIElETEF0dHJpYnV0ZTxK
U1Rlc3RDRVJlYWN0aW9ucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDRVJlYWN0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dENFUmVhY3Rpb25zKiBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY0LDE2ICsxNjQsNiBAQCB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6
OmRlc3RyCiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6fkpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogSURMQXR0cmlidXRlPEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxUcmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsMTYgKzIwNiw2IEBAIHZvaWQgSlNUZXN0Q2FsbFRyYWNl
cjo6ZGVzdHJveShKU0M6OkpTQ2UKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDYWxsVHJhY2VyOjp+
SlNUZXN0Q2FsbFRyYWNlcigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDYWxsVHJh
Y2VyKiBJRExBdHRyaWJ1dGU8SlNUZXN0Q2FsbFRyYWNlcj46OmNhc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDYWxsVHJhY2VyKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0Q2FsbFRyYWNlciogSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFj
ZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDYWxsVHJhY2Vy
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUo
KSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDYWxsVHJhY2VyQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4MywxNiArNDgzLDYgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
OjpkZXN0cm95KAogICAgIHRoaXNPYmplY3QtPkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6On5K
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMqIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzKiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2Fs
bEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDExICsyNjgsNiBAQCB2b2lkIEpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OmRlc3RyCiAgICAgdGhpc09iamVjdC0+SlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6fkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUoKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSogSURM
QXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSo+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAko
cmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNSwxNiArNjA1LDYgQEAg
SlNWYWx1ZSBKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKFZNJgogICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RET01KSVRET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0RE9NSklUKiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Y2FzdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVCo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0K
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJ
VD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYg
Y2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVCo+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwot
fQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RE9NSklUQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCShyZXZpc2lv
biAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSwxNiArMjQ5LDYgQEAg
dm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OOjpkZXN0cm95KEpTQzo6SgogICAgIHRoaXNPYmplY3Qt
PkpTVGVzdERlZmF1bHRUb0pTT046On5KU1Rlc3REZWZhdWx0VG9KU09OKCk7CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT04qIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZh
dWx0VG9KU09OPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dERlZmF1bHRUb0pTT04qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZh
dWx0VG9KU09OKiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRvSlNPTj46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT04qPihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDE2ICsxODIsNiBAQCB2b2lkIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlCiAgICAgdGhpc09iamVjdC0+SlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjp+SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZCogSURMQXR0cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIElETE9wZXJh
dGlvbjxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpjYXN0KEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1
ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCShyZXZpc2lvbiAyNzc1NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTYgKzE3MCw2IEBAIEpTVmFs
dWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6OmdldEMKICAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRET01Db25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQqIElETEF0dHJpYnV0ZTxK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCo+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KiBJRExPcGVyYXRpb248SlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbC5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTczLDE2ICsxNzMsNiBAQCBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWw6CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWxET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCogSURMQXR0cmlidXRlPEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWw+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwqIElETE9wZXJhdGlvbjxK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjc3
NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjEsMTEgKzE2MSw2IEBAIHZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHIK
ICAgICB0aGlzT2JqZWN0LT5KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
Ojp+SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgpOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3Rvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2
aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDE2ICsxODMs
NiBAQCB2b2lkIEpTVGVzdERvbWFpblNlY3VyaXR5OjpkZXN0cm95KEpTQzo6CiAgICAgdGhpc09i
amVjdC0+SlNUZXN0RG9tYWluU2VjdXJpdHk6On5KU1Rlc3REb21haW5TZWN1cml0eSgpOwogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REb21haW5TZWN1cml0eSogSURMQXR0cmlidXRlPEpT
VGVzdERvbWFpblNlY3VyaXR5Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdERvbWFpblNlY3VyaXR5Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0RG9tYWluU2VjdXJpdHkqIElETE9wZXJhdGlvbjxKU1Rlc3REb21haW5TZWN1cml0eT46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2Fs
bEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERvbWFpblNlY3VyaXR5
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUo
KSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REb21haW5TZWN1cml0eUNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzcsMTYgKzI3Nyw2IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6ZGVzdHJv
eShKU0MKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjp+SlNUZXN0RW5h
YmxlZEJ5U2V0dGluZygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nKiBJRExBdHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyogSURMT3Bl
cmF0aW9uPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxMSArMTU0LDYg
QEAgdm9pZCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6ZGVzdHJveShKUwogICAgIHRoaXNPYmpl
Y3QtPkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Ojp+SlNUZXN0RW5hYmxlZEZvckNvbnRleHQoKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQqIElETEF0dHJp
YnV0ZTxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCo+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsMTEg
KzI1OCw2IEBAIEpTVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3QKICAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBJRExBdHRy
aWJ1dGU8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjc3
NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDExICsyMjEsNiBAQCB2b2lkIEpT
VGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hCiAgICAgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRUYXJnZXQqIElETE9wZXJh
dGlvbjxKU1Rlc3RFdmVudFRhcmdldD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTMsMTEgKzE1Myw2IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlND
ZWwKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RFeGNlcHRpb246On5KU1Rlc3RFeGNlcHRpb24oKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBJRExBdHRyaWJ1dGU8SlNU
ZXN0RXhjZXB0aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdEV4Y2VwdGlvbio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RFeGNlcHRpb25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDExICsxNjMsNiBAQCB2b2lkIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU6OmRlc3Ryb3koCiAgICAgdGhpc09iamVjdC0+SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZTo6fkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoKTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSURMQXR0cmlidXRlPEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc3
NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMyw3ICs1MTMsNyBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJyZWd1
bGFyQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRlKSB9IH0sCisgICAgeyAicmVndWxhckF0dHJpYnV0
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZSkgfSB9LAogICAgIHsgInB1YmxpY0Fu
ZFByaXZhdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9wdWJs
aWNBbmRQcml2YXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3B1YmxpY0FuZFByaXZh
dGVBdHRyaWJ1dGUpIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIHsgInB1Ymxp
Y0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X3B1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpIH0gfSwKQEAg
LTcxMywxNiArNzEzLDYgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDOjpK
UwogICAgIHRoaXNPYmplY3QtPkpTVGVzdEdsb2JhbE9iamVjdDo6fkpTVGVzdEdsb2JhbE9iamVj
dCgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxp
bmUgSlNUZXN0R2xvYmFsT2JqZWN0KiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxs
RnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7
Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTc0Myw3ICs3MzMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRy
aWJ1dGVOYW1lKSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE4NDMsNDQgKzE4MzMsNiBAQCB2b2lk
IEpTVGVzdEdsb2JhbE9iamVjdE93bmVyOjpmaW5hbGl6ZShKCiAgICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc1Rlc3RHbG9iYWxPYmplY3QtPndyYXBwZWQoKSwganNUZXN0R2xvYmFsT2JqZWN0
KTsKIH0KIAotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4p
Ci0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9p
ZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RHbG9iYWxPYmplY3RAV2ViQ29yZUBANkJA
IilbXSkoKTsgfQotI2Vsc2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29y
ZTE2VGVzdEdsb2JhbE9iamVjdEVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2xvYmFsT2JqZWN0PiYmIGltcGwpCi17Ci0KLSNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9p
bnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQot
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RH
bG9iYWxPYmplY3RAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRh
YmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTZUZXN0R2xvYmFsT2JqZWN0RVsyXTsKLSNlbmRp
ZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0R2xvYmFsT2JqZWN0IGRvZXMgbm90IGhhdmUg
YSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdEdsb2JhbE9iamVjdD46OnZhbHVlLCAi
VGVzdEdsb2JhbE9iamVjdCBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBo
aXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBv
cgotICAgIC8vIFRlc3RHbG9iYWxPYmplY3QgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RHbG9iYWxP
YmplY3QgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdl
IGN1cnJlbnRseSByZXF1aXJlIFRlc3RHbG9iYWxPYmplY3QgeW91IHRvIG9wdCBvdXQgb2YgYmlu
ZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9u
IGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9B
U1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdEdsb2JhbE9iamVjdD4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdEdsb2JhbE9iamVjdCYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiBUZXN0R2xvYmFsT2JqZWN0
KiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RH
bG9iYWxPYmplY3QqPih2bSwgdmFsdWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsNiBA
QCBpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0R2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIHdy
YXBwYWJsZU9iamVjdDsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEdsb2JhbE9iamVjdCYpOwotaW5saW5lIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHbG9iYWxPYmplY3QqIGltcGwpIHsg
cmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmlt
cGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RHbG9iYWxPYmpl
Y3Q+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZlB0cjxUZXN0R2xvYmFsT2JqZWN0PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5y
ZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KIAogY2xhc3MgSlNUZXN0R2xvYmFs
T2JqZWN0UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2NCwxMSArMjY0LDYgQEAgYm9vbCBKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVy
dHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5
RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI3NzU0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDksMTYgKzUwOSw2IEBAIHZvaWQgSlNUZXN0
SW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWwKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RJbnRl
cmZhY2U6On5KU1Rlc3RJbnRlcmZhY2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
SW50ZXJmYWNlKiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZSogSURMT3BlcmF0aW9uPEpTVGVzdEludGVy
ZmFjZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxMSArMTUzLDYgQEAgdm9pZCBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6ZAogICAgIHRoaXNPYmplY3QtPkpTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjp+SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmUoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUqIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjYsMTEgKzE2Niw2IEBAIHZvaWQgSlNUZXN0SXRlcmFibGU6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RJdGVyYWJsZTo6fkpTVGVzdEl0ZXJh
YmxlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEl0ZXJhYmxlKiBJRExPcGVyYXRp
b248SlNUZXN0SXRlcmFibGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJdGVyYWJsZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJh
bWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SXRl
cmFibGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDE2ICsxNjEsNiBAQCB2b2lkIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpkZXN0cm95CiAgICAgdGhpc09iamVjdC0+SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I6On5KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcigpOwogfQogCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogSURMQXR0cmlidXRlPEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIElETE9wZXJhdGlvbjxKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3Bw
CShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTcsMTYgKzE1Nyw2IEBAIHZvaWQgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q6OmRl
c3QKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdDo6fkpTVGVz
dExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KiBJRExBdHRyaWJ1dGU8SlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3Q+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCogSURMT3BlcmF0aW9uPEpTVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0X3JlYWRvbmx5U3RyaW5nQXR0cmlidXRl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsMTEgKzIwOCw2IEBAIHZvaWQgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3cKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExPcGVy
YXRpb248SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVy
biBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI3
NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
YXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDE2ICsxNzksNiBAQCB2b2lkIEpTVGVz
dE1hcExpa2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqCiAgICAgdGhpc09iamVjdC0+SlNUZXN0TWFw
TGlrZTo6fkpTVGVzdE1hcExpa2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWFw
TGlrZSogSURMQXR0cmlidXRlPEpTVGVzdE1hcExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdE1hcExpa2UqIElETE9wZXJhdGlvbjxKU1Rlc3RNYXBMaWtlPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUp
Ci17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZSo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTYgKzE4Myw2IEBAIHZvaWQgSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW8KICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjp+SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zKiBJRExBdHRyaWJ1dGU8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogSURMT3Bl
cmF0aW9uPEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlz
VmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCwxMSArMzM0LDYgQEAgYm9vbCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5l
d1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciogSURMT3BlcmF0aW9u
PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyOSwxMSArMjI5LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcjo6ZAogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KGNlbGws
IGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMTEgKzIwNSw2IEBAIHZvaWQgSlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVy
YXRpb248SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0K
LQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDExICsyODcsNiBAQCBib29s
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlCiAgICAgcmV0dXJuIEpTT2JqZWN0
OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsMTEgKzMxNCw2IEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciogSURMT3BlcmF0
aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7
Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCwxMSArMzM0LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQQogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJv
cGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3Bl
cnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKiBJRExPcGVyYXRpb248SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyNzc1NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEyLDE2ICszMTIsNiBAQCBzdGF0aWMgYm9vbCBpc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlO
CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRU
aHJvdyk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksMTYgKzI4OSw2IEBAIHN0YXRpYyBib29sIGlzTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0eU4KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9w
ZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
Ci17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19
Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVz
cGFjZU9iamVjdC5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQsMTYgKzE1NCw2IEBAIHZvaWQgSlNUZXN0TmFtZXNwYWNlT2JqZWN0OjpkZXN0
cm95KEpTQzoKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lc3BhY2VPYmplY3Q6On5KU1Rlc3RO
YW1lc3BhY2VPYmplY3QoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZXNwYWNl
T2JqZWN0KiBJRExBdHRyaWJ1dGU8SlNUZXN0TmFtZXNwYWNlT2JqZWN0Pjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVzcGFjZU9iamVjdCo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVzcGFjZU9iamVjdCogSURMT3BlcmF0
aW9uPEpTVGVzdE5hbWVzcGFjZU9iamVjdD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVzcGFjZU9iamVjdCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JfbmFtZXNwYWNlQXR0cmlidXRlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShy
ZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwxNiArMjYwLDYgQEAgSlNW
YWx1ZSBKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdgogICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE5vZGUqIElETEF0dHJpYnV0ZTxKU1Rlc3ROb2RlPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3ROb2RlKiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdE5vZGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2OSwxNiAr
MjU2OSw2IEBAIHZvaWQgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2IKICAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RPYmoq
IElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
T2JqKiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNh
bGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDExICsxNzcsNiBAQCB2b2lkIEpTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsOjpkZXN0cm95CiAgICAgdGhpc09iamVjdC0+SlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWw6On5KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCgpOwogfQogCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCogSURMT3BlcmF0aW9uPEpTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAko
cmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
NCwxMSArMjU0LDYgQEAgSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmdldAog
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRE
T01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50KiBJRExBdHRyaWJ1dGU8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTczLDE2ICsxNzMsNiBAQCB2b2lkIEpTVGVzdFJlYWRPbmx5TWFw
TGlrZTo6ZGVzdHJveShKU0M6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0UmVhZE9ubHlNYXBMaWtl
Ojp+SlNUZXN0UmVhZE9ubHlNYXBMaWtlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dFJlYWRPbmx5TWFwTGlrZSogSURMQXR0cmlidXRlPEpTVGVzdFJlYWRPbmx5TWFwTGlrZT46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seU1hcExp
a2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RSZWFkT25seU1hcExpa2Uq
IElETE9wZXJhdGlvbjxKU1Rlc3RSZWFkT25seU1hcExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seU1hcExpa2UqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9u
IDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsMTYgKzE3MSw2IEBA
IHZvaWQgSlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpkZXN0cm95KEpTQzoKICAgICB0aGlzT2JqZWN0
LT5KU1Rlc3RSZWFkT25seVNldExpa2U6On5KU1Rlc3RSZWFkT25seVNldExpa2UoKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKiBJRExBdHRyaWJ1dGU8SlNU
ZXN0UmVhZE9ubHlTZXRMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdFJlYWRPbmx5U2V0TGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdFJlYWRPbmx5U2V0TGlrZSogSURMT3BlcmF0aW9uPEpTVGVzdFJlYWRPbmx5U2V0TGlr
ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYg
Y2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFJlYWRPbmx5U2V0
TGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1Zh
bHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0UmVhZE9ubHlTZXRM
aWtlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjc3
NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miwx
NiArMTgyLDYgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhYwogICAg
IHRoaXNPYmplY3QtPkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6fkpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIElETEF0dHJpYnV0ZTxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc3LDE2ICsxNzcsNiBAQCB2b2lkIEpTVGVzdFNldExpa2U6OmRlc3Ry
b3koSlNDOjpKU0NlbGwqCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U2V0TGlrZTo6fkpTVGVzdFNl
dExpa2UoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2V0TGlrZSogSURMQXR0cmli
dXRlPEpTVGVzdFNldExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0U2V0TGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNl
dExpa2UqIElETE9wZXJhdGlvbjxKU1Rlc3RTZXRMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2V0TGlrZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEsMTYgKzE4MSw2IEBAIHZvaWQgSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW8KICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zOjp+SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucygpOwog
fQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zKiBJRExBdHRyaWJ1dGU8SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyogSURMT3BlcmF0aW9uPEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0K
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllci5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NiwxMSArMTU2LDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdpZmllcjo6ZGVzdHJveShKU0M6OkpTQwog
ICAgIHRoaXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVyOjp+SlNUZXN0U3RyaW5naWZpZXIoKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXIqIElETE9wZXJhdGlvbjxK
U1Rlc3RTdHJpbmdpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdFN0cmluZ2lmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxG
cmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RT
dHJpbmdpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCShyZXZpc2lv
biAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYsMTEgKzE1Niw2IEBAIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24K
ICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6fkpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKiBJRExPcGVyYXRpb248SlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbio+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQot
CiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDExICsxNTgsNiBAQCB2
b2lkIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OmRlCiAgICAgdGhpc09iamVjdC0+
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6fkpTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24oKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbiogSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNh
bGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFt
ZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQog
ewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmNwcAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwxMSArMTU4LDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudAogICAgIHRoaXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6fkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBcygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXMqIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJldmlzaW9uIDI3NzU0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYs
MTEgKzE1Niw2IEBAIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3QKICAg
ICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6On5K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcoKTsKIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKiBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjo6Y2FzdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50
aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZS5jcHAJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5LDE2ICsxNTksNiBAQCB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGU6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZTo6fkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUoKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSogSURMQXR0
cmlidXRlPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+OjpjYXN0KEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUqIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMTYgKzE2MCw2IEBAIHZvaWQgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZTo6fkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlKiBJRExBdHRyaWJ1dGU8SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSogSURMT3BlcmF0aW9uPEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlz
aW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MiwxNiArMjcyLDYgQEAgdm9p
ZCBKU1Rlc3RUeXBlZGVmczo6ZGVzdHJveShKU0M6OkpTQ2VsbAogICAgIHRoaXNPYmplY3QtPkpT
VGVzdFR5cGVkZWZzOjp+SlNUZXN0VHlwZWRlZnMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0VHlwZWRlZnMqIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0K
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFR5cGVkZWZzKiBJRExPcGVyYXRpb248SlNUZXN0VHlw
ZWRlZnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
cyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0VHlwZWRlZnNDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJ
KHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDExICsx
NjQsNiBAQCBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjCiAgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgSlNXb3JrZXJHbG9iYWxTY29wZSogSURMQXR0cmlidXRlPEpT
V29ya2VyR2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNXb3JrZXJHbG9iYWxTY29wZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC0y
NzMsNDQgKzI2OCw2IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZTo6YW5hbHl6ZUhlYXAoSlMK
ICAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7CiB9CiAKLSNpZiBFTkFCTEUo
QklORElOR19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRp
c2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZp
ZXIoIj8/XzdXb3JrZXJHbG9iYWxTY29wZUBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQot
ZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTdXb3JrZXJHbG9iYWxTY29w
ZUVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxXb3JrZXJHbG9iYWxTY29wZT4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQ
b2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdXb3JrZXJHbG9iYWxTY29wZUBXZWJD
b3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9a
VFZON1dlYkNvcmUxN1dvcmtlckdsb2JhbFNjb3BlRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYg
dGhpcyBmYWlscyBXb3JrZXJHbG9iYWxTY29wZSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5
b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRy
aWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3BvbHltb3JwaGljPFdvcmtlckdsb2JhbFNjb3BlPjo6dmFsdWUsICJXb3JrZXJHbG9iYWxT
Y29wZSBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3Nl
cnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFdv
cmtlckdsb2JhbFNjb3BlIGhhcyBzdWJjbGFzc2VzLiBJZiBXb3JrZXJHbG9iYWxTY29wZSBoYXMg
c3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5
IHJlcXVpcmUgV29ya2VyR2xvYmFsU2NvcGUgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJk
ZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0
dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAg
cmV0dXJuIGNyZWF0ZVdyYXBwZXI8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdv
cmtlckdsb2JhbFNjb3BlJiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KIFdvcmtlckdsb2JhbFNjb3BlKiBKU1dv
cmtlckdsb2JhbFNjb3BlOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNXb3JrZXJHbG9i
YWxTY29wZSo+KHZtLCB2YWx1ZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHJl
dmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEwICs2OSw2IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJv
eHkqKTsKIH07CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFdvcmtlckdsb2JhbFNjb3BlJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV29ya2VyR2xvYmFsU2NvcGUqIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDog
SlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiYm
KTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNO
ZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVh
c2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQogCiBjbGFzcyBKU1dvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI3NzU0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxMSArMTMzLDYgQEAgSlNWYWx1
ZSBKU1dvcmtsZXRHbG9iYWxTY29wZTo6Z2V0Q29uc3RydQogICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBKU1dvcmtsZXRHbG9iYWxTY29wZSogSURMQXR0cmlidXRlPEpTV29ya2xldEdsb2Jh
bFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2xl
dEdsb2JhbFNjb3BlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzV29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC0xODcsNDQgKzE4
Miw2IEBAIHZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGU6OmFuYWx5emVIZWFwKEoKICAgICBCYXNl
OjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7CiB9CiAKLSNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0
ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdX
b3JrbGV0R2xvYmFsU2NvcGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVybiAi
QyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE4V29ya2xldEdsb2JhbFNjb3BlRVtdOyB9
Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFdvcmts
ZXRHbG9iYWxTY29wZT4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZ
KQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVy
KGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdXb3JrbGV0R2xvYmFsU2NvcGVAV2ViQ29yZUBA
NkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdX
ZWJDb3JlMThXb3JrbGV0R2xvYmFsU2NvcGVFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlz
IGZhaWxzIFdvcmtsZXRHbG9iYWxTY29wZSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3Ug
bmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1
dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3BvbHltb3JwaGljPFdvcmtsZXRHbG9iYWxTY29wZT46OnZhbHVlLCAiV29ya2xldEdsb2JhbFNj
b3BlIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2Vy
dGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gV29y
a2xldEdsb2JhbFNjb3BlIGhhcyBzdWJjbGFzc2VzLiBJZiBXb3JrbGV0R2xvYmFsU2NvcGUgaGFz
IHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRs
eSByZXF1aXJlIFdvcmtsZXRHbG9iYWxTY29wZSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhh
cmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmli
dXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChh
Y3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXb3JrbGV0R2xvYmFsU2NvcGU+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFdvcmtsZXRHbG9iYWxTY29wZSYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiBXb3JrbGV0R2xvYmFsU2NvcGUq
IEpTV29ya2xldEdsb2JhbFNjb3BlOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNXb3Jr
bGV0R2xvYmFsU2NvcGUqPih2bSwgdmFsdWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNj
b3BlLmgJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwx
MCArNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwg
SlNDOjpKU1Byb3h5Kik7CiB9OwogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKLWlubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUqIGlt
cGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFdvcmtsZXRH
bG9iYWxTY29wZT4mJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4mJiBpbXBsKSB7IHJldHVy
biBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CiAKIGNsYXNzIEpT
V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2MCw3ICs0NjAsNyBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmNhbkFjY2Vzc0luc3Bl
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAKLSAgICBK
U0RPTVdpbmRvdyogaW5zcGVjdGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFs
T2JqZWN0LT52bSgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiBpbnNwZWN0ZWRX
aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4obGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSwgbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAko
cmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsOCBAQAogICAgIEN1c3RvbUdldFByb3RvdHlwZSwK
ICAgICBDdXN0b21IZWFwU25hcHNob3QsCiAgICAgQ3VzdG9tUHJldmVudEV4dGVuc2lvbnMsCi0g
ICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEN1c3RvbVB1dCwKICAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX0VYUE9SVCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSW50ZXJmYWNlTmFtZT1X
aW5kb3csCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11
dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSAr
MzAsNyBAQAogICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdCwKICAgICBDdXN0b21HZXRQcm90
b3R5cGUsCiAgICAgQ3VzdG9tUHJldmVudEV4dGVuc2lvbnMsCi0gICAgQ3VzdG9tUHJveHlUb0pT
T2JqZWN0LAogICAgIEN1c3RvbVB1dCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSW50ZXJmYWNl
TmFtZT1XaW5kb3csCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAg
SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aWRsCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDkgQEAK
ICAqLwogCiBbCi0gICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEV4cG9zZWQ9RGVkaWNh
dGVkV29ya2VyLAogICAgIEdsb2JhbD0oV29ya2VyLERlZGljYXRlZFdvcmtlciksCiAgICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEltcGxpY2l0VGhpcywKICAgICBJc0ltbXV0YWJs
ZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdE9uUHJvdG90eXBlLAogXSBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUg
OiBXb3JrZXJHbG9iYWxTY29wZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsy
NCw5IEBACiAgKi8KIAogWwotICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBFeHBvc2Vk
PVdvcmtlciwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBKU0xlZ2FjeVBhcmVudD1K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZSwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11dGFi
bGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNP
YmplY3RPblByb3RvdHlwZSwKIF0gaW50ZXJmYWNlIFdvcmtlckdsb2JhbFNjb3BlIDogRXZlbnRU
YXJnZXQgewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NzU0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsMTAgQEAKICAqLwogCiBbCi0gICAgQ3Vz
dG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEdsb2JhbD0oV29ya2VyLFNlcnZpY2VXb3JrZXIpLAog
ICAgIEV4cG9zZWQ9U2VydmljZVdvcmtlciwKICAgICBDb25kaXRpb25hbD1TRVJWSUNFX1dPUktF
UiwKICAgICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXIsCi0gICAgSW1wbGljaXRUaGlz
LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhv
dGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5
cGUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDYgQEAKICAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAogICAgIEpTQ3VzdG9t
TWFya0Z1bmN0aW9uLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBJbXBsaWNp
dFRoaXMsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11
dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9KFdvcmts
ZXQsUGFpbnRXb3JrbGV0KSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTAg
KzI0LDggQEAKICovCiAKIFsKLSAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCiAgICAgRXhwb3Nl
ZD1Xb3JrbGV0LAogICAgIEpTTGVnYWN5UGFyZW50PUpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSwK
LSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Qs
CiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBH
bG9iYWw9V29ya2xldCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc1NDApCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1
LTE3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBb
V2ViSURMXSBSZW1vdmUgW0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3Rd
IGV4dGVuZGVkIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBpbmhlcml0czxUPiBpbnN0ZWFkIG9mIHRvSlNET01XaW5kb3coKSBp
ZiB0aGUgdmFsdWUgaXMgbmV2ZXIgYSBKU1Byb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpyZXBvcnRFeGNlcHRpb24pOgorCiAyMDIxLTA1LTE1ICBJYW4gR2lsYmVydCAg
PGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZTo6S2V5ZnJhbWVWYWx1ZSB3aXRoIFZhcmlhbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAkocmV2aXNpb24gMjc3NTQwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlcG9ydEV4Y2VwdGlvbihKU0MKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0
IGhhcyBhIERPTVdpbmRvdyBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgdGhpcyBjb250ZXh0IGRp
ZG4ndCBvcmlnaW5hdGUgZnJvbSBhIFBhZ2UuCi0gICAgaWYgKCF0b0pTRE9NV2luZG93KGdsb2Jh
bE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSkKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5o
ZXJpdHM8SlNET01XaW5kb3c+KGdsb2JhbE9iamVjdC0+dm0oKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFs
T2JqZWN0LCBleGNlcHRpb24pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NzU0MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTE3ICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBSZW1vdmUgW0ltcGxp
Y2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpbmhl
cml0czxUPiBpbnN0ZWFkIG9mIHRvSlNET01XaW5kb3coKSBpZiB0aGUgdmFsdWUgaXMgbmV2ZXIg
YSBKU1Byb3h5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tX
ZWJWaWV3IF9yZXBvcnRFeGNlcHRpb246aW5Db250ZXh0Ol0pOgorCiAyMDIxLTA1LTEzICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRleHRJ
bmRpY2F0b3IgYm91bmNlIGZvciBBcHBIaWdobGlnaHRzIG9uIHNjcm9sbC4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDI3NzU0MCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTMzNiw3ICsxMzM2LDcgQEAgKyAodm9pZClfcmVwb3J0RXhjZXB0aW9uOihKU1Zh
bHVlUmVmKWV4YwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKIAog
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBoYXMgYSBET01XaW5kb3cgZ2xvYmFsIG9iamVj
dCwgb3RoZXJ3aXNlIHRoaXMgY29udGV4dCBkaWRuJ3Qgb3JpZ2luYXRlIGZyb20gYSBXZWJWaWV3
LgotICAgIGlmICghV2ViQ29yZTo6dG9KU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QtPnZtKCksIGds
b2JhbE9iamVjdCkpCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmluaGVyaXRzPFdlYkNvcmU6OkpT
RE9NV2luZG93PihnbG9iYWxPYmplY3QtPnZtKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBX
ZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwg
ZXhjZXB0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAy
Nzc1NDApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0xNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIFtJbXBsaWNpdFRoaXNd
IGFuZCBbQ3VzdG9tUHJveHlUb0pTT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaW5oZXJpdHM8VD4g
aW5zdGVhZCBvZiB0b0pTRE9NV2luZG93KCkgaWYgdGhlIHZhbHVlIGlzIG5ldmVyIGEgSlNQcm94
eS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6cmVwb3J0RXhj
ZXB0aW9uKToKKwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIERyb3AgbGVnYWN5IC8gcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24K
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNzc1NDApCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjYxNCw3ICs2NjE0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpyZXBvcnRFeGNlcHRpb24oX0luXyBK
UwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGUgY29udGV4dCBoYXMgYSBET01XaW5kb3cgZ2xvYmFsIG9iamVjdCwgb3RoZXJ3
aXNlIHRoaXMgY29udGV4dCBkaWRuJ3Qgb3JpZ2luYXRlIGZyb20gYSBXZWJWaWV3LgotICAgIGlm
ICghdG9KU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCkpCisgICAg
aWYgKCFnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NV2luZG93PihnbG9iYWxPYmplY3QtPnZt
KCkpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbikpOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjc3NTQwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDUtMTcgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExdIFJlbW92ZSBbSW1wbGljaXRUaGlz
XSBhbmQgW0N1c3RvbVByb3h5VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9saXN0ZW5lci8qOgorICAgICAgICBUaGlzIGlzIGEgcHJvZ3Jlc3Npb246IEJs
aW5rIGFuZCBHZWNrbyBkb24ndCBjYWxsIGV2ZW50IGxpc3RlbmVycyBiZWxvbmdpbmcgdG8gZGVz
dHJveWVkIGZyYW1lcy4KKworICAgICAgICAqIGpzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90
b3R5cGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGpzL3Byb3BlcnR5LW9mLXdp
bmRvdy1hcy1wcm90b3R5cGUuaHRtbDogUmVtb3ZlZC4KKwogMjAyMS0wNS0xNSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgYWxsb3cgOnZpc2l0ZWQg
bGluayBzdHlsZSBpbiBzdWJ0cmVlcyB0aGF0IHVzZSBtaXgtYmxlbmQtbW9kZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3Rl
clBhaW50QmluZGluZ3MuaHRtbAkocmV2aXNpb24gMjc3NTQwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNywxMyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogfSwgJ3Rlc3QgdGhhdCBy
ZWdpc3RlclBhaW50IHJ1bnMnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKKyAgZ2xvYmFsVGhpcy5y
ZWdpc3RlclBhaW50KCdiYXNpYzEtZ2xvYmFsVGhpcycsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0
IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsiLS10ZXN0Il07IH0KKyAgICBwYWludCgpIHsg
fQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIChjYWxsZWQgb24gZ2xv
YmFsVGhpcyknKTsKKwordGVzdChmdW5jdGlvbigpIHsKICAgcmVnaXN0ZXJQYWludCgnYmFzaWMy
JywgY2xhc3MgewogICAgIHBhaW50KCkgeyB9CiAgIH0pOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZl
bnRMaXN0ZW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRM
aXN0ZW5lci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzU0MCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2
ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMyBAQAot
Q09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmln
aW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4g
ZnJhbWUuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi1UaGlzIHRl
c3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gRXZl
bnRUYXJnZXQgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgdGFyZ2V0IG5vZGVzIGZyYW1l
LiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0
IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0
IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25z
b2xlLgorVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVu
ZXJzIG9uIGFuIEV2ZW50VGFyZ2V0IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHRhcmdl
dCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2Vz
IGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9j
YWxob3N0IiBpbiBpdCBhbmQgbm8gd2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4K
IAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1K
U1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2Rl
LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAyNzc1NDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25j
bGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcg
QEAKIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGlu
ZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB1c2luZyBhZGRFdmVudExpc3RlbmVy
IGlzCiAgICAgICAgdGhlIHRhcmdldCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYx
NDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3
aXRoCi0gICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2Fm
ZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CisgICAg
ICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgbm8gd2FybmluZ3MgYXJlIGxv
Z2dlZCB0byB0aGUgY29uc29sZS48L3A+CiAgICAgPGlmcmFtZSBpZD0idGFyZ2V0Q2hpbGQiIHNy
Yz0iIj48L2lmcmFtZT4KICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2NoaWxkV2l0aEJ1dHRv
bi5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckJ1dHRvbkNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9k
eT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpT
VGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUt
b25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzU0MCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNs
aWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAK
LUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3Jp
Z2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2lu
IGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhpcyB0
ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIEV2
ZW50VGFyZ2V0IHdpdGggdGhlIHNob3J0Y3V0IChvbmNsaWNrLCBldGMpLCBpcyB0aGUgdGFyZ2V0
IG5vZGVzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMg
aWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJsb2Nh
bGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2Vk
IHRvIHRoZSBjb25zb2xlLgorVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5n
IGV2ZW50TGlzdGVuZXJzIG9uIGFuIEV2ZW50VGFyZ2V0IHdpdGggdGhlIHNob3J0Y3V0IChvbmNs
aWNrLCBldGMpLCBpcyB0aGUgdGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQy
NjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cg
d2l0aCB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBubyB3YXJuaW5ncyBhcmUg
bG9nZ2VkIHRvIHRoZSBjb25zb2xlLgogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94
c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQuaHRtbAkocmV2aXNpb24gMjc3NTQwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXRO
b2RlLW9uY2xpY2stc2hvcnRjdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogPGJvZHk+CiAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5n
IGV2ZW50TGlzdGVuZXJzIG9uIGFuIEV2ZW50VGFyZ2V0IHdpdGggdGhlIHNob3J0Y3V0IChvbmNs
aWNrLCBldGMpLCAKICAgICAgICBpcyB0aGUgdGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3By
b2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxl
cnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFu
ZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xl
LjwvcD4KKyAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBubyB3YXJu
aW5ncyBhcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KICAgICA8aWZyYW1lIGlkPSJ0YXJn
ZXRDaGlsZCIgc3JjPSIiPjwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvY2hp
bGRXaXRoQnV0dG9uLmh0bWwiIG9ubG9hZD0ib25sb2FkRm9yQnV0dG9uQ2hpbGQoKTsiPjwvaWZy
YW1lPgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mt
WE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
NzU0MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhN
TEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBCbG9ja2Vk
IGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3Np
bmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11
c3QgbWF0Y2guCi1UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRM
aXN0ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3QgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciwgaXMg
dGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBw
YXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9m
ICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMg
bG9nZ2VkIHRvIHRoZSBjb25zb2xlLgorVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBz
ZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHVzaW5nIGFkZEV2ZW50
TGlzdGVuZXIsIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIp
LiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgg
dGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgbm8gd2FybmluZ3MgYXJlIGxvZ2dl
ZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mt
WE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAyNzc1NDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVx
dWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDYg
QEAKIAogICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKICAgICAgICAgICAgIHZhciB4aHJDaGls
ZCA9IHdpbmRvdy5mcmFtZXNbMV07Ci0gICAgICAgICAgICAvLyB4aHJDaGlsZC5YSFIub3Blbign
R0VUJywgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICB4aHJDaGlsZC5YSFIub3BlbigiR0VUIiwg
Ii4uLy4uL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7CiAgICAg
ICAgICAgICB4aHJDaGlsZC5YSFIuc2VuZCgiIik7CiAKQEAgLTI2LDcgKzI1LDcgQEAKIDxib2R5
PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExp
c3RlbmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB1c2luZyBhZGRFdmVudExpc3RlbmVyLCAKICAg
ICAgICBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gIFRo
aXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aAotICAg
ICAgIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNj
cmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgorICAgICAgIHRoZSBk
b21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIG5vIHdhcm5pbmdzIGFyZSBsb2dnZWQgdG8g
dGhlIGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9p
ZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdpdGhYTUxIdHRwUmVxdWVz
dC5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvclhIUkNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0
dHBSZXF1ZXN0LXNob3J0Y3V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzU0MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2Vj
dXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRv
bWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQg
d2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGggdGhl
IHNob3J0Y3V0IChvbnJlYWR5c3RhdGVjaGFuZ2UpLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChy
ZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2Vl
IGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5k
IGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUu
CitUaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMg
b24gYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCB0aGUgc2hvcnRjdXQgKG9ucmVhZHlzdGF0ZWNoYW5n
ZSksIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlz
IHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRv
bWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgbm8gd2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0
aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0
LXNob3J0Y3V0Lmh0bWwJKHJldmlzaW9uIDI3NzU0MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMg
dGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBYTUxIdHRw
UmVxdWVzdCB3aXRoIHRoZSBzaG9ydGN1dCAob25yZWFkeXN0YXRlY2hhbmdlKSwgCiAgICAgICAg
aXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuICBUaGlzIHRl
c3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgKLSAgICAgICB0
aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQi
IHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KKyAgICAgICB0aGUgZG9tYWlu
IG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBubyB3YXJuaW5ncyBhcmUgbG9nZ2VkIHRvIHRoZSBj
b25zb2xlLjwvcD4KICAgICA8aWZyYW1lIGlkPSJ0YXJnZXRDaGlsZCIgc3JjPSIiPjwvaWZyYW1l
PgogICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvY2hpbGRXaXRoWE1MSHR0cFJlcXVlc3QuaHRt
bCIgb25sb2FkPSJvbmxvYWRGb3JYSFJDaGlsZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25j
bGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1hZGRF
dmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3NTQwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZl
bnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1D
T05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdp
biAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGNyb3NzLW9yaWdpbiBm
cmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLVRoaXMgdGVz
dHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiB0aGUgd2lu
ZG93IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRhcjov
L3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBh
bGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAi
VW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgorVGhp
cyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRo
ZSB3aW5kb3cgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChy
ZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2Vl
IGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5k
IG5vIHdhcm5pbmdzIGFyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRk
RXZlbnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRt
bAkocmV2aXNpb24gMjc3NTQwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9s
aXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQg
ZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRvdyB1c2lu
ZyBhZGRFdmVudExpc3RlbmVyIGlzIAogICAgICAgIHRoZSB3aW5kb3cncyBmcmFtZS4gKHJkYXI6
Ly9wcm9ibGVtLzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFu
IGFsZXJ0IGRpYWxvZyB3aXRoCi0gICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBp
dCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29u
c29sZS48L3A+CisgICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgbm8g
d2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CiAgICAgPGlmcmFtZSBpZD0i
dGFyZ2V0Q2hpbGQiIHNyYz0iIj48L2lmcmFtZT4KICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L2NoaWxkV2luZG93Lmh0bWwiIG9ubG9hZD0ib25sb2FkRm9yQ2hpbGQoKTsiPjwvaWZyYW1lPgog
PC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94
c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNr
LXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3NTQwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNT
QUdFOiBTZWN1cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3Rv
Y29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi1UaGlzIHRlc3RzIHRoYXQgZnJh
bWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRvdyB3aXRoIHRo
ZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgaXMgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRhcjov
L3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBh
bGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAi
VW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgorVGhp
cyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRo
ZSB3aW5kb3cgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIGlzIHRoZSB3aW5kb3cn
cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlv
dSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0
IiBpbiBpdCBhbmQgbm8gd2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ct
b25jbGljay1zaG9ydGN1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHJl
dmlzaW9uIDI3NzU0MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVu
ZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAKIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdo
ZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiB0aGUgd2luZG93IHdpdGggdGhlIHNob3J0Y3V0
IChvbmNsaWNrLCBldGMpLCAKICAgICAgICBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8v
cHJvYmxlbS81NDI2MTQyKS4gIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBh
bGVydCBkaWFsb2cgd2l0aAotICAgICAgIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQg
YW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNv
bGUuPC9wPgorICAgICAgIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIG5vIHdh
cm5pbmdzIGFyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUgaWQ9InRh
cmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9j
aGlsZFdpbmRvdy5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckNoaWxkKCk7Ij48L2lmcmFtZT4KIDwv
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVz
b3VyY2VzL3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3Rl
bmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExp
c3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NzU0MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNs
aWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAK
ICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgIGFsZXJ0KGUpOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9vIiwgZnVuY3Rp
b24oKSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cKICAgICAgICAgfSwgZmFsc2UpOwog
CiAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIjsKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLUpTVGFy
Z2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJn
ZXROb2RlLW9uY2xpY2stc2hvcnRjdXQuaHRtbAkocmV2aXNpb24gMjc3NTQwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQt
SlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw2
ICs4LDcgQEAKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgIGFsZXJ0
KGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwg
ZnVuY3Rpb24oKSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cKICAgICAgICAgfQogCiAg
ICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIjsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLVhNTEh0dHBS
ZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1YTUxIdHRw
UmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NzU0MCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxk
LVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw2ICs4LDcgQEAKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgIGFs
ZXJ0KGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChuZXcgRXZl
bnQoImZvbyIpKTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAgICB9LCBmYWxzZSk7
CiAKICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtWE1M
SHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1YTUxIdHRwUmVx
dWVzdC1zaG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzc1NDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1YTUxIdHRwUmVx
dWVzdC1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsNyBAQAogICAgICAg
ICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgICAgICAgYWxlcnQoZSk7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCBmdW5jdGlvbigpIHt9
KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAgICB9CiAKICAgICAgICAgd2luZG93
LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jv
c3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtd2luZG93LW9uY2xpY2stYWRkRXZl
bnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLXdpbmRvdy1vbmNsaWNrLWFkZEV2
ZW50TGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMjc3NTQwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtd2luZG93LW9uY2xp
Y2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsNyBAQAog
ICAgICAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgICAgICAgYWxlcnQoZSk7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJmb28iLCBmdW5jdGlvbigp
IHt9KTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAgICB9LCBmYWxzZSk7CiAKICAg
ICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtd2luZG93LW9u
Y2xpY2stc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13aW5kb3ctb25jbGljay1z
aG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzc1NDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13aW5kb3ctb25jbGljay1z
aG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsNyBAQAogICAgICAgICAgICAg
fSBjYXRjaChlKSB7CiAgICAgICAgICAgICAgICAgYWxlcnQoZSk7CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIikpOyAvLyBuby1vcCwgc2hv
dWxkbid0IHRocm93CiAgICAgICAgIH0KIAogICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUu
aHRtbCI7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU4
NSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNS0xNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIFtJbXBsaWNpdFRoaXNdIGFu
ZCBbQ3VzdG9tUHJveHlUb0pTT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12
YWx1ZS5hbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMt
dmFsdWUuYW55Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5h
bnkuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFu
eS53b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0
LXJlZ2lzdGVycHJvY2Vzc29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0dHBzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRp
by1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXJlZ2lzdGVycHJv
Y2Vzc29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmts
ZXQtaW50ZXJmYWNlL3Byb2Nlc3NvcnMvZHVtbXktcHJvY2Vzc29yLWdsb2JhbHRoaXMuanM6IEFk
ZGVkLgorCiAyMDIxLTA1LTE2ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBNYXRoTUwgV1BUcyB3YWl0IGZvciBhbGwgZm9udCBsb2FkcwpJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNt
YXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxp
Y2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJp
bmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIEdsb2JhbCBvYmplY3QncyBn
ZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xv
YmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9i
amVjdAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBv
biBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dz
IHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkKK1BBU1Mg
R2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxl
IG9iamVjdCAoZG9jdW1lbnQuYWxsKQorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRo
cm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpCitG
QUlMIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVu
ZGVmaW5lZCBUaGUgV2luZG93LmxvY2F0aW9uIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiBXaW5kb3cKK0ZBSUwgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVu
IGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXaW5kb3cub25vbmxpbmUgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdworUEFTUyBHbG9iYWwgb2JqZWN0
J3Mgb3BlcmF0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNt
YXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlz
LXZhbHVlLmFueS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2Jq
ZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3Ry
dWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12
YWx1ZS5hbnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1w
bGljaXQtdGhpcy12YWx1ZS5hbnkuanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ds
b2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw4MiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIgCisKKy8vIGh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyIChzdGVwIDEu
MS4yLjEpCisvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRl
LXNldHRlciAoc3RlcCA0LjUuMSkKKy8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2Rmbi1jcmVhdGUtb3BlcmF0aW9uLWZ1bmN0aW9uIChzdGVwIDIuMS4yLjEpCisKK2NvbnN0IG5v
dEdsb2JhbE9iamVjdCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2Jh
bFRoaXMpKTsKKwordGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
ICgpID0+IHsgT2JqZWN0LmNyZWF0ZShnbG9iYWxUaGlzKS5zZWxmOyB9KTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3Io
ImxvY2F0aW9uIikuZ2V0LmNhbGwobm90R2xvYmFsT2JqZWN0KTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5nZXQoZ2xvYmFsVGhpcywgIm5hdmln
YXRvciIsIG5vdEdsb2JhbE9iamVjdCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiB7IG5ldyBQcm94eShnbG9iYWxUaGlzLCB7fSkub25lcnJvcjsgfSk7Cit9LCAi
R2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxl
IG9iamVjdCIpOworCit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyBPYmplY3QuY3JlYXRlKGdsb2JhbFRoaXMpLm9yaWdpbiA9IG9yaWdpbjsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZ2V0R2xvYmFsUHJvcGVy
dHlEZXNjcmlwdG9yKCJvbmVycm9yIikuc2V0LmNhbGwobm90R2xvYmFsT2JqZWN0LCBvbmVycm9y
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgUmVmbGVjdC5z
ZXQoZ2xvYmFsVGhpcywgIm9ub2ZmbGluZSIsIG9ub2ZmbGluZSwgbm90R2xvYmFsT2JqZWN0KTsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5KGds
b2JhbFRoaXMsIHt9KS5vbm9ubGluZSA9IG9ub25saW5lOyB9KTsKK30sICJHbG9iYWwgb2JqZWN0
J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0Iik7CisK
K3Rlc3QoKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9i
amVjdC5jcmVhdGUoZ2xvYmFsVGhpcykuc2V0VGltZW91dCgoKSA9PiB7fSwgMTAwKTsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgY2xlYXJUaW1lb3V0LmNhbGwo
bm90R2xvYmFsT2JqZWN0LCAoKSA9PiB7fSk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuYXBwbHkoYnRvYSwgbm90R2xvYmFsT2JqZWN0LCBbIiJd
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgbmV3IFByb3h5
KGdsb2JhbFRoaXMsIHt9KS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCAoKSA9PiB7fSk7IH0p
OworfSwgIkdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGlu
Y29tcGF0aWJsZSBvYmplY3QiKTsKKworaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gInVuZGVmaW5l
ZCIpIHsKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICJkb2N1
bWVudCIpLmdldC5jYWxsKGRvY3VtZW50LmFsbCk7IH0pOworICAgIH0sICJHbG9iYWwgb2JqZWN0
J3MgZ2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1
bWVudC5hbGwpIik7CisKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5k
b3csICJuYW1lIikuc2V0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAgfSwgIkdsb2JhbCBv
YmplY3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3Qg
KGRvY3VtZW50LmFsbCkiKTsKKworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBhbGVydC5jYWxsKGRvY3VtZW50LmFsbCk7IH0pOwor
ICAgIH0sICJHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBp
bmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpIik7Cit9CisKK2NvbnN0IGxvY2F0aW9u
R2V0dGVyID0gZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJsb2NhdGlvbiIpLmdldDsKK3Rl
c3QoKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9y
KCJzZWxmIikuZ2V0LmNhbGwobnVsbCksIHNlbGYpOworICAgIGFzc2VydF9lcXVhbHMoKCgpID0+
IGxvY2F0aW9uR2V0dGVyKCkpKCksIGxvY2F0aW9uKTsKKyAgICBhc3NlcnRfZXF1YWxzKFJlZmxl
Y3QuZ2V0KGdsb2JhbFRoaXMsICJvcmlnaW4iLCBudWxsKSwgb3JpZ2luKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKFJlZmxlY3QuZ2V0KGdsb2JhbFRoaXMsICJvbm9mZmxpbmUiLCB1bmRlZmluZWQpLCBv
bm9mZmxpbmUpOworfSwgIkdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQg
b24gbnVsbCAvIHVuZGVmaW5lZCIpOworCit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBmbiA9ICgp
ID0+IHt9OworCisgICAgZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJvcmlnaW4iKS5zZXQu
Y2FsbChudWxsLCAiZm9vIik7CisgICAgYXNzZXJ0X2VxdWFscyhvcmlnaW4sICJmb28iKTsKKyAg
ICBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9uZXJyb3IiKS5zZXQuY2FsbCh1bmRlZmlu
ZWQsIGZuKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9uZXJyb3IsIGZuKTsKKyAgICBhc3NlcnRfdHJ1
ZShSZWZsZWN0LnNldChnbG9iYWxUaGlzLCAib25vZmZsaW5lIiwgZm4sIG51bGwpKTsKKyAgICBh
c3NlcnRfZXF1YWxzKG9ub2ZmbGluZSwgZm4pOworCisgICAgY29uc3Qgb25vbmxpbmVTZXR0ZXIg
PSBnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoIm9ub25saW5lIikuc2V0OworICAgICgoKSA9
PiB7IG9ub25saW5lU2V0dGVyKGZuKTsgfSkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9ub25saW5l
LCBmbik7Cit9LCAiR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBu
dWxsIC8gdW5kZWZpbmVkIik7CisKK2NvbnN0IF9fYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50
TGlzdGVuZXI7Cit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGF0b2IuY2FsbChudWxs
LCAiIiksICIiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiAoMCwgc2V0SW50ZXJ2YWwpKCgp
ID0+IHt9LCAxMDApLCAibnVtYmVyIik7CisKKyAgICAoKCkgPT4geyBfX2FkZEV2ZW50TGlzdGVu
ZXIoImZvbyIsIGV2ZW50ID0+IHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfSk7IH0pKCk7Cisg
ICAgY29uc3QgX19kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudDsKKyAgICAoKCkgPT4geyBh
c3NlcnRfZmFsc2UoX19kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIiwgeyBjYW5jZWxhYmxl
OiB0cnVlIH0pKSk7IH0pKCk7Cit9LCAiR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB3b3JrcyB3
aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIik7CisKK2Z1bmN0aW9uIGdldEdsb2JhbFBy
b3BlcnR5RGVzY3JpcHRvcihrZXkpIHsKKyAgICBmb3IgKGxldCBvYmogPSBnbG9iYWxUaGlzOyBv
Ymo7IG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKSB7CisgICAgICAgIGNvbnN0IGRl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KTsKKyAgICAgICAg
aWYgKGRlc2MpIHJldHVybiBkZXNjOworICAgIH0KK30KSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9i
YWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1
ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
Z2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIEdsb2JhbCBvYmplY3QncyBn
ZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xv
YmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9i
amVjdAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBv
biBpbmNvbXBhdGlibGUgb2JqZWN0CitGQUlMIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mg
d2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBUaGUgV29ya2VyR2xvYmFsU2NvcGUubG9j
YXRpb24gZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdvcmtlckdsb2Jh
bFNjb3BlCitGQUlMIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24g
bnVsbCAvIHVuZGVmaW5lZCBUaGUgV29ya2VyR2xvYmFsU2NvcGUub25vbmxpbmUgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdvcmtlckdsb2JhbFNjb3BlCitQQVNTIEds
b2JhbCBvYmplY3QncyBvcGVyYXRpb24gd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVm
aW5lZAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZh
bHVlLmFueS53b3JrZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9i
amVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXIuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3Jr
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkv
dGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXJlZ2lzdGVycHJvY2Vzc29y
LWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0dHBzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXJlZ2lzdGVy
cHJvY2Vzc29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0dHBzLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3Jr
bGV0LXJlZ2lzdGVycHJvY2Vzc29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0dHBzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKKworUEFTUyAjIEFVRElUIFRBU0sg
UlVOTkVSIFNUQVJURUQuCitQQVNTIEV4ZWN1dGluZyAicmVnaXN0ZXJwcm9jZXNzb3ItY2FsbGVk
LW9uLWdsb2JhbHRoaXMiCitQQVNTIEF1ZGl0IHJlcG9ydAorUEFTUyA+IFtyZWdpc3RlcnByb2Nl
c3Nvci1jYWxsZWQtb24tZ2xvYmFsdGhpc10KK1BBU1MgICAiZHVtbXlXb3JrbGV0Tm9kZSIgaXMg
YW4gaW5zdGFuY2Ugb2YgQXVkaW9Xb3JrbGV0Tm9kZSBpcyB0cnVlLgorUEFTUyA8IFtyZWdpc3Rl
cnByb2Nlc3Nvci1jYWxsZWQtb24tZ2xvYmFsdGhpc10gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAo
dG90YWwgMSBhc3NlcnRpb25zKQorUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAx
IHRhc2tzIHJhbiBzdWNjZXNzZnVsbHkuCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3Jr
bGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtcmVnaXN0ZXJwcm9jZXNzb3ItY2FsbGVkLW9uLWds
b2JhbHRoaXMuaHR0cHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29y
a2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXJlZ2lzdGVycHJvY2Vzc29yLWNhbGxlZC1vbi1n
bG9iYWx0aGlzLmh0dHBzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRp
b3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1yZWdpc3RlcnByb2Nlc3Nvci1jYWxsZWQt
b24tZ2xvYmFsdGhpcy5odHRwcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT4KKyAgICAgIFRl
c3QgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUncyByZWdpc3RlclByb2Nlc3NvcigpIGNhbGxlZCBv
biBnbG9iYWxUaGlzCisgICAgPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvd2ViYXVkaW8v
cmVzb3VyY2VzL2F1ZGl0LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8
c2NyaXB0IGlkPSJsYXlvdXQtdGVzdC1jb2RlIj4KKyAgICAgIGNvbnN0IGF1ZGl0ID0gQXVkaXQu
Y3JlYXRlVGFza1J1bm5lcigpOworICAgICAgY29uc3QgcmVhbHRpbWVDb250ZXh0ID0gbmV3IEF1
ZGlvQ29udGV4dCgpOworICAgICAgY29uc3QgZmlsZVBhdGggPSAncHJvY2Vzc29ycy9kdW1teS1w
cm9jZXNzb3ItZ2xvYmFsdGhpcy5qcyc7CisKKyAgICAgIGF1ZGl0LmRlZmluZSgncmVnaXN0ZXJw
cm9jZXNzb3ItY2FsbGVkLW9uLWdsb2JhbHRoaXMnLCAodGFzaywgc2hvdWxkKSA9PiB7CisgICAg
ICAgIHJlYWx0aW1lQ29udGV4dC5hdWRpb1dvcmtsZXQuYWRkTW9kdWxlKGZpbGVQYXRoKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICBjb25zdCBkdW1teVdvcmtsZXROb2RlID0gbmV3IEF1ZGlvV29y
a2xldE5vZGUocmVhbHRpbWVDb250ZXh0LCAnZHVtbXktZ2xvYmFsdGhpcycpOworICAgICAgICAg
IHNob3VsZChkdW1teVdvcmtsZXROb2RlIGluc3RhbmNlb2YgQXVkaW9Xb3JrbGV0Tm9kZSwKKyAg
ICAgICAgICAgICciZHVtbXlXb3JrbGV0Tm9kZSIgaXMgYW4gaW5zdGFuY2Ugb2YgQXVkaW9Xb3Jr
bGV0Tm9kZScpLmJlVHJ1ZSgpOworICAgICAgICAgIHRhc2suZG9uZSgpOworICAgICAgICB9KTsK
KyAgICAgIH0pOworCisgICAgICBhdWRpdC5ydW4oKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3By
b2Nlc3NvcnMvZHVtbXktcHJvY2Vzc29yLWdsb2JhbHRoaXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVk
aW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3NvcnMvZHVtbXktcHJvY2Vz
c29yLWdsb2JhbHRoaXMuanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dv
cmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3NvcnMvZHVtbXktcHJvY2Vzc29yLWdsb2JhbHRoaXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgRHVtbXlQcm9jZXNzb3IgZXh0
ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICBzdXBl
cigpOworICB9CisKKyAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKKyAg
ICAvLyBEb2Vzbid0IGRvIGFueXRoaW5nIGhlcmUuCisgICAgcmV0dXJuIHRydWU7CisgIH0KK30K
KworZ2xvYmFsVGhpcy5yZWdpc3RlclByb2Nlc3NvcignZHVtbXktZ2xvYmFsdGhpcycsIER1bW15
UHJvY2Vzc29yKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1w
cm90b3R5cGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Byb3Bl
cnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1NDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDQgKzAsMCBAQAotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2pzL3By
b3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLmh0bWwJKHJldmlzaW9uIDI3
NzU0MCkKKysrIExheW91dFRlc3RzL2pzL3Byb3BlcnR5LW9mLXdpbmRvdy1hcy1wcm90b3R5cGUu
aHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLS8vIFNvIGxvbmcgYXMgdGhlIGxpbmUgYmVsb3cgZG9lc24ndCBjcmFzaCwgdGhp
cyB0ZXN0IHBhc3Nlcy4KLU9iamVjdC5jcmVhdGUod2luZG93KS5sb2NhdGlvbjsKLTwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429207</attachid>
            <date>2021-05-20 12:46:04 -0700</date>
            <delta_ts>2021-05-20 14:27:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223758-20210520224602.patch</filename>
            <type>text/plain</type>
            <size>165999</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA1LTIwICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBSZW1v
dmUgW0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3RdIGV4dGVuZGVkIGF0
dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaW50cm9kdWNlcyBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+LCB0YWtpbmcgYSBzdGVw
IHRvd2FyZHMgdW5pZmljYXRpb24gb2YgfHRoaXN8CisgICAgICAgIHZhbHVlIGNhc3RpbmcgYmV0
d2VlbiBJRExBdHRyaWJ1dGUgYW5kIElETE9wZXJhdGlvbi4gVGhlIGhlbHBlciB1c2VzIGNvbXBp
bGUtdGltZSBpbmhlcml0YW5jZQorICAgICAgICBjaGVjayB0byBwcm92aWRlIGltcGxpY2l0IHx0
aGlzfCB2YWx1ZSBmb3IgRE9NIGdsb2JhbCBvYmplY3RzIFsxXSwgcmVwbGFjaW5nIFtJbXBsaWNp
dFRoaXNdCisgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZSwgd2hpY2ggd2FzIHJlbW92ZWQgZnJv
bSB0aGUgc3BlYyBbMl0gYSB3aGlsZSBhZ28uCisKKyAgICAgICAgSURMQXR0cmlidXRlIGNhbid0
IHBlcmZvcm0gdG9UaGlzKCkgd2l0aCBFQ01BTW9kZTo6c3RyaWN0KCksIGxpa2UgSURMT3BlcmF0
aW9uIG5vdyBkb2VzLAorICAgICAgICBiZWNhdXNlIEN1c3RvbVZhbHVlIGdldHRlcnMgYXJlIGNh
bGxlZCB3aXRoIHx0aGlzfCB2YWx1ZSBvZiBKU0dsb2JhbE9iamVjdCB0eXBlLCB3aGljaCBnZXRz
CisgICAgICAgIHRhaW50ZWQgYnkgSlNTY29wZTo6dG9UaGlzKCkuICMyMjUzOTcgd2lsbCByZW1v
dmUgdGhlIG5lZWQgZm9yIHRvVGhpcygpLCBmaW5hbGx5IG1ha2luZyB8dGhpc3wKKyAgICAgICAg
dmFsdWUgY2FzdGluZyBjb25zaXN0ZW50IGJldHdlZW4gYXR0cmlidXRlcyBhbmQgb3BlcmF0aW9u
cy4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIGZpeGVzIGBPYmplY3QuY3JlYXRlKHdpbmRv
dykubG9jYXRpb25gIHRvIHRocm93IGFzIHBlciBzcGVjIFsxXSBieSByZW1vdmluZworICAgICAg
ICBwcm90b3R5cGUgY2hhaW4gdHJhdmVyc2FsIGZyb20gdG9KU0RPTVdpbmRvdygpLCB3aGljaCBh
bGlnbnMgV2ViS2l0IHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAgICAgIEFzIERPTSBnbG9i
YWwgb2JqZWN0cyBhcmUgd3JhcHBlZCBpbiBwcm94aWVzIGFuZCByZXF1aXJlIHNwZWNpYWwgY2Fz
dGluZywgdG9KU0RPTVdpbmRvdygpIGFuZAorICAgICAgICBmcmllbmRzIGFyZSBtZXJnZWQgaW50
byB0b0pTRE9NR2xvYmFsT2JqZWN0PEpTQ2xhc3M+LCB3aGljaCBpcyBhd2FyZSBvZiBpbmhlcml0
YW5jZSAvIEpTUHJveHkuCisgICAgICAgIEl0IHJlcGxhY2VzIFtDdXN0b21Qcm94eVRvSlNPYmpl
Y3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgd2hpY2ggY291bGQgYmUgbWlzc2VkIHdoZW4gYWRkaW5n
IG5ldworICAgICAgICBET00gZ2xvYmFsIG9iamVjdHMsIGZpeGluZyB3b3JrbGV0cycgZ2xvYmFs
IGZ1bmN0aW9ucyBub3QgdG8gdGhyb3cgd2hlbiBjYWxsZWQgb24gYGdsb2JhbFRoaXNgLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIHJlZHVjZXMgV2ViQ29yZSAtLXJlbGVhc2UgYmluYXJ5IHNpemUg
YnkgMC4yJSAoMTQ3IEtCKS4KKworICAgICAgICBbMV0gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIgKHN0ZXAgMS4xLjIuMykKKyAgICAgICAgWzJd
IGh0dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2ViaWRsL3B1bGwvMTU1CisKKyAgICAgICAgVGVz
dHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmlu
ZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LmpzCisgICAgICAgICAg
ICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXJlZ2lzdGVycHJvY2Vz
c29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
Y3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci8qLmh0bWwKKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5pZGw6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJRExBdHRyaWJ1dGU6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGU6OnNl
dFBhc3NpbmdQcm9wZXJ0eU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXRQYXNzaW5nUHJvcGVydHlO
YW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNhc3RUaGlzVmFsdWUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmg6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01H
bG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb246OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTRE9NV2luZG93KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpT
RE9NV2luZG93Pjo6Y2FzdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1
bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWREb2N1bWVudFdyYXBwZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNFdmVudFRhcmdldENhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2
ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNSZW1vdGVET01XaW5kb3cpOiBEZWxl
dGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0b0pTV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6dG9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9KU1dvcmtsZXRHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChTaG91bGRHZW5lcmF0ZVRvSlNEZWNsYXJhdGlv
bik6CisgICAgICAgIChJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlKToKKyAgICAgICAgKEdlbmVy
YXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy8qOiBVcGRhdGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0
YXRlIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFn
ZS9SZW1vdGVET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaWRs
OgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDoKKyAgICAg
ICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsOgorCiAyMDIxLTA1LTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0hhcmRlbmluZ10gVXNlIENo
ZWNrZWRBcml0aG1ldGljcyBpbiBXZWJBdWRpb0J1ZmZlckxpc3QgY29uc3RydWN0b3IKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uaAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCiAgICAgYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuaAotICAgIGJpbmRpbmdzL2pzL0pTRE9NQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3IuaAorICAgIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNWYWx1
ZS5oCiAgICAgYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKICAgICBiaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRBbnkuaAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw2IEBACiAgICAgRXhwb3NlZD1BdWRpb1dvcmtsZXQsCiAgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBJ
bXBsaWNpdFRoaXMsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAg
SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9
KFdvcmtsZXQsQXVkaW9Xb3JrbGV0KSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjQwNCw3ICsyNDA0LDYgQEAKIAkJN0M4MTM5QTYxRUQ2Mjg2QTAwQ0UyNkU4IC8qIEpT
RE9NQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzgxMzlBMzFFRDYyODFEMDBDRTI2RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzgxMzlBNzFFRDYy
ODc0MDBDRTI2RTggLyogSlNET01PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE0MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9w
ZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1By
b21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3Qzgx
MzlBQTFFRDY2MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4MTM5QTkxRUQ2
MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzgzREU4NjFEMDRDQzVE
MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVy
LmggKi87IH07CiAJCTdDOEUzNEFEMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOEUzNDky
MUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzhFMzRBRTFFNEEzM0FGMDA1NENFMjMg
LyogSlNET01Db252ZXJ0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M4RTM0OTMxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjY1
OCw2ICsyNjU3LDcgQEAKIAkJODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRl
U3RyZWFtQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODQxOUQyQTYxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
ci5oICovOyB9OwogCQk4NDE5RDJBRDEyMEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJl
YW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0MTlEMkFCMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oICov
OyB9OwogCQk4NDE5RDJCQTEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MTlEMkI4
MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5oICovOyB9OworCQk4NDFD
NDQxNjI2MEMzOEZEMDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDFDNDQxNDI2MEMzOEJBMDBGRjY2
NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQyMjQxODQxMDdFNzdGNDAwNzY2QTg3IC8qIEpTU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODQyMjQxODIxMDdFNzdGNDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudC5oICovOyB9OwogCQk4NDIyNDE5NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQyMjQxOTExMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCAq
LzsgfTsKIAkJODQzMDBCRDYxMjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ1
MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmggKi87IH07CkBAIC0xMDcy
NSw3ICsxMDcyNSw2IEBACiAJCTdDODEzOUEzMUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTUF0dHJp
YnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUF0dHJpYnV0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgxMzlBNDFFRDYyODFEMDBDRTI2RTgg
LyogSlNET01PcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
T01PcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4MTM5QTUxRUQ2
MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4
IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg1QjIwMTIyRkIwNDg1MDAzMDY4NEYgLyogV0hM
U0xVbm5hbWVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4NUIyMDQyMkZCMDYzMjAwMzA2ODRG
IC8qIFdITFNMVW5uYW1lZFR5cGVIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5
cGVIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTI1Miw2ICsxMTI1MSw3
IEBACiAJCTg0MTlEMkFCMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDE5RDJCNzEyMEUwQzc2MDAx
NDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NDE5RDJCODEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1
aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFN0cmluZ0J1
aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQxQzQ0MTQyNjBDMzhCQTAw
RkY2NjczIC8qIEpTRE9NQ2FzdFRoaXNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RPTUNhc3RUaGlzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODQyMjQxODExMDdFNzdGNDAwNzY2QTg3IC8qIEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDIyNDE4MjEwN0U3
N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NDIyNDE5MDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI3MzY5LDcgKzI3MzY5LDcgQEAKIAkJCQk0MURFRkNCMjFFNTZDMUI5MDAwRDlFNUYgLyogSlNE
T01CaW5kaW5nSW50ZXJuYWxzLmpzICovLAogCQkJCTdDNDVDOUNBMUUzRThEMkUwMEFBQjU1OCAv
KiBKU0RPTUJpbmRpbmdTZWN1cml0eS5jcHAgKi8sCiAJCQkJN0M0NUM5QzkxRTNFOENENzAwQUFC
NTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggKi8sCi0JCQkJN0M4MTM5QTkxRUQ2MkRGMjAw
Q0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLywKKwkJCQk4NDFDNDQx
NDI2MEMzOEJBMDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggKi8sCiAJCQkJN0M0NUM5
Q0MxRTNFOEYwODAwQUFCNTU4IC8qIEpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwICovLAogCQkJ
CTdDNDVDOUM3MUUzRThBRkYwMEFBQjU1OCAvKiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmggKi8s
CiAJCQkJRTFDMzZDQkMwRUIwODA2MjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAq
LywKQEAgLTMzMjU1LDcgKzMzMjU1LDcgQEAKIAkJCQk3QzQ1QzlENDFFM0ZDQkRGMDBBQUI1NTgg
LyogSlNET01CaW5kaW5nU2VjdXJpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTczMUYy
QUJFNzEwMDI3MkY3OSAvKiBKU0RPTUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3
MzFGMkFCRTcxMDAyNzJGN0EgLyogSlNET01DYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDODEzOUFBMUVENjYwNEIwMENFMjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2
aW9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDFDNDQxNjI2MEMzOEZEMDBGRjY2NzMgLyogSlNE
T01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDMkMzNDFCQzI5QThGMDA3
NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwODQxMzQx
Q0REQjE1NTAwQjA5NThDIC8qIEpTRE9NQ29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4
RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHJl
dmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmli
dXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgiCisjaW5jbHVkZSAiSlNE
T01DYXN0VGhpc1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxNSArMzcsMTMgQEAgcHVibGljOgogICAgIHVz
aW5nIEdldHRlciA9IEpTQzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDbGFzcyYp
OwogICAgIHVzaW5nIEdldHRlclBhc3NpbmdQcm9wZXJ0eU5hbWUgPSBKU0M6OkpTVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xhc3MmLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgdXNp
bmcgU3RhdGljR2V0dGVyID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLSAg
ICAKLSAgICBzdGF0aWMgSlNDbGFzcyogY2FzdChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiAKICAgICB0ZW1wbGF0ZTxTZXR0ZXIgc2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJv
dz4KICAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKQogICAgIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNh
c3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgYXV0byogdGhpc09i
amVjdCA9IGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09i
amVjdCkpIHsKICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OlRocm93KQogICAgICAgICAgICAgICAgIHJldHVybiBKU0M6OnRo
cm93Vk1ET01BdHRyaWJ1dGVTZXR0ZXJUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIEpTQ2xhc3M6OmluZm8oKSwgYXR0cmlidXRlTmFtZSk7CkBAIC02Miw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogCi0gICAgICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7Cisg
ICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNo
b3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVyVHlwZUVycm9yKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5h
bWUpOwpAQCAtODUsMTEgKzgzLDExIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CiAKICAgICAgICAgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0KSB7Ci0gICAgICAgICAgICBBU1NFUlQoY2FzdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUpKTsKKyAgICAgICAgICAgIEFTU0VSVChjYXN0VGhpc1ZhbHVlPEpT
Q2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpKTsKICAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0NsYXNz
Kj4oSlNDOjpKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRlcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCkpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUpOworICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3RUaGlzVmFsdWU8SlND
bGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6VGhyb3cpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU0M6OnRocm93Vk1ET01BdHRy
aWJ1dGVHZXR0ZXJUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpT
Q2xhc3M6OmluZm8oKSwgYXR0cmlidXRlTmFtZSk7CkBAIC0xMTAsMTEgKzEwOCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hv
dWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCkgewotICAgICAgICAg
ICAgQVNTRVJUKGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAg
ICAgICBBU1NFUlQoY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSk7CiAgICAgICAgICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDbGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6
OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3Qs
IGF0dHJpYnV0ZU5hbWUpKSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byog
dGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAg
ICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIGNvbnN0
ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93KQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlR2V0dGVyVHlw
ZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCks
IGF0dHJpYnV0ZU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
YXN0VGhpc1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01DYXN0VGhpc1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01DYXN0VGhpc1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBN
aWNoYWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworZW51bSBjbGFzcyBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciA6IHVpbnQ4X3QgeworICAgIFRo
cm93LAorICAgIFJldHVybkVhcmx5LAorICAgIFJlamVjdFByb21pc2UsCisgICAgQXNzZXJ0LAor
fTsKKwordGVtcGxhdGU8Y2xhc3MgSlNDbGFzcz4KK0pTQ2xhc3MqIGNhc3RUaGlzVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNET01HbG9iYWxPYmplY3Qs
IEpTQ2xhc3M+KQorICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdDxKU0NsYXNzPih2
bSwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgPyBKU0M6OkpTVmFsdWUoJmxleGljYWxH
bG9iYWxPYmplY3QpIDogdGhpc1ZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDbGFzcyo+KHZtLCB0aGlzVmFsdWUpOworfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvci5oCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgJKG5vbmV4aXN0ZW50KQpAQCAt
MSwzNSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgtMjAw
OSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgotICogIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmln
aHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDEzIE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVsQDY4ay5vcmc+Ci0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1lbnVtIGNsYXNzIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHsKLSAgICBUaHJvdywKLSAg
ICBSZXR1cm5FYXJseSwKLSAgICBSZWplY3RQcm9taXNlLAotICAgIEFzc2VydAotfTsKLQotfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
CShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNCArMTUzLDE5IEBAIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0JiBjYWxsZXIKIAogSlNET01HbG9iYWxPYmplY3QqIHRv
SlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTVdyYXBwZXJXb3Js
ZCYpOwogCit0ZW1wbGF0ZTxjbGFzcyBKU0NsYXNzPgorSlNDbGFzcyogdG9KU0RPTUdsb2JhbE9i
amVjdChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNET01HbG9iYWxPYmplY3QsIEpTQ2xhc3M+KTsKKworICAg
IGlmIChhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKSkgeworICAgICAgICBpZiAob2Jq
ZWN0LT50eXBlKCkgPT0gSlNDOjpQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSkKKyAgICAgICAgICAg
IHJldHVybiBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDbGFzcyo+KHZtLCBKU0M6OmpzQ2FzdDxKU0M6
OkpTUHJveHkqPihvYmplY3QpLT50YXJnZXQoKSk7CisgICAgICAgIGlmIChvYmplY3QtPmluaGVy
aXRzPEpTQ2xhc3M+KHZtKSkKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0NsYXNz
Kj4ob2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVy
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9w
ZXJhdGlvbi5oCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIgor
I2luY2x1ZGUgIkpTRE9NQ2FzdFRoaXNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNyArMzUsMTUgQEAgcHVi
bGljOgogICAgIHVzaW5nIE9wZXJhdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKiwgQ2xhc3NQYXJhbWV0ZXIpOwogICAgIHVzaW5n
IFN0YXRpY09wZXJhdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKLSAgICBzdGF0aWMgSlNDbGFzcyogY2FzdChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgYWZ0ZXIgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgaXMgZml4ZWQgbm90IHRvIHBhc3MgcmVz
b2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKyAgICBzdGF0aWMgSlNDbGFzcyogY2FzdChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2Fs
bEZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0RPTUdsb2JhbE9iamVjdCwgSlNDbGFzcz4pCisgICAgICAgICAgICByZXR1cm4gY2FzdFRoaXNW
YWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCku
dG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzdHJpY3QoKSkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOworICAgIH0KIAogICAg
IHRlbXBsYXRlPE9wZXJhdGlvbiBvcGVyYXRpb24sIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNo
b3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRpYyBK
U0M6OkVuY29kZWRKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgY29uc3QgY2hhciogb3BlcmF0aW9u
TmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDIzICsyODIsNiBAQCBK
U0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSYgZnJhbWUsCiAgICAgcmV0dXJuIGZyYW1l
LnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCk7CiB9CiAKLUpTRE9NV2luZG93KiB0b0pTRE9N
V2luZG93KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmICghdmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICB3aGlsZSAoIXZhbHVlLmlz
TnVsbCgpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0g
ICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gb2JqZWN0LT5jbGFzc0luZm8odm0p
OwotICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpTRE9NV2luZG93OjppbmZvKCkpCi0gICAgICAg
ICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKLSAgICAgICAgaWYgKGNs
YXNzSW5mbyA9PSBKU1dpbmRvd1Byb3h5OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KHZtLCBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVj
dCktPndpbmRvdygpKTsKLSAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCh2bSk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBET01XaW5kb3cmIGluY3Vt
YmVudERPTVdpbmRvdyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIGFzSlNET01XaW5kb3coJmNhbGxlckdsb2Jh
bE9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKS0+d3JhcHBlZCgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJldmlz
aW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDYgQEAgaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYgogLy8gVGhlIGZvbGxvd2luZyByZXR1cm4gYSBKU0RPTVdp
bmRvdyBvciBudWxscHRyLgogSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUmLCBET01X
cmFwcGVyV29ybGQmKTsKIGlubGluZSBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSog
ZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIHsgcmV0dXJuIGZyYW1lID8gdG9KU0RPTVdp
bmRvdygqZnJhbWUsIHdvcmxkKSA6IG51bGxwdHI7IH0KLVdFQkNPUkVfRVhQT1JUIEpTRE9NV2lu
ZG93KiB0b0pTRE9NV2luZG93KEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogCiAvLyBET01XaW5k
b3cgYXNzb2NpYXRlZCB3aXRoIGdsb2JhbCBvYmplY3Qgb2YgdGhlICJtb3N0LXJlY2VudGx5LWVu
dGVyZWQgYXV0aG9yIGZ1bmN0aW9uIG9yIHNjcmlwdAogLy8gb24gdGhlIHN0YWNrLCBvciB0aGUg
YXV0aG9yIGZ1bmN0aW9uIG9yIHNjcmlwdCB0aGF0IG9yaWdpbmFsbHkgc2NoZWR1bGVkIHRoZSBj
dXJyZW50bHktcnVubmluZyBjYWxsYmFjay4iCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDcgKzg0LDcgQEAgREVGSU5FX1ZJU0lUX0FERElUSU9OQUxfQ0hJTERSRU4o
SlNET01XaQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X3dlYmtpdCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKTsKLSAgICBKU0RPTVdpbmRvdyogY2FzdGVkVGhpcyA9IHRvSlNET01XaW5kb3codm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0gdG9KU0RP
TUdsb2JhbE9iamVjdDxKU0RPTVdpbmRvdz4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLndlYmtpdE5hbWVzcGFjZSgpKSk7CkBAIC02MDIs
MTEgKzYwMiw2IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVcKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPERh
dGFiYXNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIFdlYkNvcmU6OkRPTVdpbmRvd1dlYkRhdGFiYXNlOjpvcGVuRGF0YWJh
c2UoaW1wbCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2ZXJzaW9uKSwgV1RGTW92ZShkaXNwbGF5
TmFtZSksIFdURk1vdmUoZXN0aW1hdGVkU2l6ZSksIFdURk1vdmUoY3JlYXRpb25DYWxsYmFjaykp
KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTRE9NV2luZG93KiBJRExPcGVyYXRpb248SlNE
T01XaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhsZXhpY2FsR2xv
YmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnNsb3BweSgpKSk7Ci19Ci0KIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fb3BlbkRhdGFiYXNlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYWxsPGpzRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9vcGVuRGF0YWJhc2VCb2R5PigqZ2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
b3BlbkRhdGFiYXNlIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgSlNPYmplY3QqIGNhY2hlZERvY3VtZW50V3JhcHBlcihKU0dsb2JhbAogICAgIGlm
ICghd2luZG93KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIGRvY3VtZW50
R2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHRv
SlMoJmxleGljYWxHbG9iYWxPYmplY3QsICp3aW5kb3cpKTsKKyAgICBhdXRvKiBkb2N1bWVudEds
b2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Q8SlNET01XaW5kb3c+KGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKSwgdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgKndpbmRvdykpOwogICAg
IGlmICghZG9jdW1lbnRHbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDkgKzY1LDkgQEAg
c3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqcwogewogICAgIGlmIChhdXRv
KiB0YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih2bSwgdGhpc1ZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+
d3JhcHBlZCgpLCAqdGFyZ2V0KTsKLSAgICBpZiAoYXV0byogd2luZG93ID0gdG9KU0RPTVdpbmRv
dyh2bSwgdGhpc1ZhbHVlKSkKKyAgICBpZiAoYXV0byogd2luZG93ID0gdG9KU0RPTUdsb2JhbE9i
amVjdDxKU0RPTVdpbmRvdz4odm0sIHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7Ci0g
ICAgaWYgKGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUp
KQorICAgIGlmIChhdXRvKiBzY29wZSA9IHRvSlNET01HbG9iYWxPYmplY3Q8SlNXb3JrZXJHbG9i
YWxTY29wZT4odm0sIHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZl
bnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRDdXN0b20uaAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw4IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0s
IGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
RUNNQU1vZGU6OnNsb3BweSgpKSk7CisgICAgICAgIGF1dG8gdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6
c3RyaWN0KCkpOworICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2
bSwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgPyBKU0M6OkpTVmFsdWUoJmxleGljYWxH
bG9iYWxPYmplY3QpIDogdGhpc1ZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgIkV2ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dCYXNlLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93QmFz
ZS5oIgogCi0jaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1dpbmRv
d1Byb3h5LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC03MSwyMSArNzAsNCBAQCBSdW50
aW1lRmxhZ3MgSlNSZW1vdGVET01XaW5kb3dCYXNlOjpqYXZhCiAgICAgcmV0dXJuIFJ1bnRpbWVG
bGFncyB7IH07CiB9CiAKLUpTUmVtb3RlRE9NV2luZG93KiB0b0pTUmVtb3RlRE9NV2luZG93KEpT
Qzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICB3aGlsZSAoIXZhbHVlLmlzTnVsbCgpKSB7
Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgICAgIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwotICAgICAg
ICBpZiAoY2xhc3NJbmZvID09IEpTUmVtb3RlRE9NV2luZG93OjppbmZvKCkpCi0gICAgICAgICAg
ICByZXR1cm4ganNDYXN0PEpTUmVtb3RlRE9NV2luZG93Kj4ob2JqZWN0KTsKLSAgICAgICAgaWYg
KGNsYXNzSW5mbyA9PSBKU1dpbmRvd1Byb3h5OjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1JlbW90ZURPTVdpbmRvdyo+KHZtLCBqc0Nhc3Q8SlNXaW5kb3dQcm94
eSo+KG9iamVjdCktPndpbmRvdygpKTsKLSAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90
ZURPTVdpbmRvd0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuaAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNXaW5kb3dQ
cm94eTsKLWNsYXNzIEpTUmVtb3RlRE9NV2luZG93OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBK
U1JlbW90ZURPTVdpbmRvd0Jhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogcHVibGlj
OgpAQCAtNTgsNiArNTcsNCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZW1vdGVET01XaW5kb3c+
IG1fd3JhcHBlZDsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIEpTUmVtb3RlRE9NV2luZG93KiB0b0pT
UmVtb3RlRE9NV2luZG93KEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDkgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3Qu
aCIKLSNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
SlNNaWNyb3Rhc2tDYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KQEAgLTQzLDExICs0MSw2
IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWljcm90YXNrLmg+CiAjaW5jbHVkZSA8d3Rm
L0xhbmd1YWdlLmg+CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0jaW5jbHVkZSAiSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNlbmRpZgotCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTE2Niw0OSArMTU5LDQgQEAgSlNWYWx1ZSB0
b0pTKEpTR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYgogICAgIHJldHVybiAmY29udGV4dFdyYXBw
ZXItPnByb3h5KCk7CiB9CiAKLUpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAg
ICBpZiAoY2xhc3NJbmZvID09IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkK
LSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oYXNP
YmplY3QodmFsdWUpKTsKLSAgICBpZiAoY2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAg
ICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+
KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQotSlNXb3JrZXJHbG9iYWxTY29wZSogdG9KU1dvcmtlckdsb2Jh
bFNjb3BlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvID0gYXNPYmplY3QodmFsdWUpLT5jbGFzc0luZm8odm0pOwotICAgIGlmIChjbGFzc0luZm8g
PT0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpKQotICAgICAgICByZXR1cm4g
anNDYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwot
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+KGFzT2JqZWN0KHZhbHVlKSk7Ci0jZW5kaWYKLQotICAg
IGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmpl
Y3QodmFsdWUpKS0+dGFyZ2V0KCkpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi1KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogdG9KU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKLSAg
ICBpZiAoY2xhc3NJbmZvID09IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCkpCi0g
ICAgICAgIHJldHVybiBqc0Nhc3Q8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihhc09iamVj
dCh2YWx1ZSkpOwotICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+KHZtLCBq
c0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmgJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDIwICszMywxMCBAQAog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2VuZGlmCiAKLW5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgSlNQcm94eTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29w
ZTsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotY2xhc3MgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci0jZW5kaWYKLQogY2xhc3MgSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0RPTUdsb2JhbE9iamVjdDsKQEAgLTkyLDEwICs4Miw0IEBA
IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2IKIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iYWxTY29wZSYpOwogaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFdvcmtlckdsb2JhbFNjb3BlKiBzY29wZSkgeyByZXR1cm4gc2NvcGUgPyB0b0pTKGxleGljYWxH
bG9iYWxPYmplY3QsICpzY29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CiAKLUpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUqIHRvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6OlZNJiwg
SlNDOjpKU1ZhbHVlKTsKLUpTV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNXb3JrZXJHbG9iYWxTY29w
ZShKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LUpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKiB0b0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3Qu
aCIKLSNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC0xNDUsMTYgKzE0
NCw0IEBAIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCosIFdvcmtsZXRHbG8KICAgICByZXR1
cm4gJmNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwogfQogCi1KU1dvcmtsZXRHbG9iYWxTY29wZSog
dG9KU1dvcmtsZXRHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBj
bGFzc0luZm8gPSBhc09iamVjdCh2YWx1ZSktPmNsYXNzSW5mbyh2bSk7Ci0KLSAgICBpZiAoY2xh
c3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNXb3JrbGV0R2xvYmFsU2NvcGUqPih2bSwganNDYXN0PEpTUHJveHkqPihhc09iamVjdCh2YWx1
ZSkpLT50YXJnZXQoKSk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNX
b3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIEpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CkBAIC04
MCw2ICs3OSw0IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2IKIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUm
KTsKIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/
IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KIAot
SlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpT
Qzo6SlNWYWx1ZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgc3ViIFNob3VsZEdl
bmVyYXRlVG9KU0RlY2xhcmF0aW9uCiAKICAgICByZXR1cm4gMCBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57U3VwcHJlc3NUb0pTT2JqZWN0fSk7CiAgICAgcmV0dXJuIDAgaWYg
bm90IE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKTsKLSAgICByZXR1cm4gMCBp
ZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9
OworICAgIHJldHVybiAwIGlmIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpOwogICAgIHJl
dHVybiAxIGlmICghJGhhc1BhcmVudCBvciAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntKU0dlbmVyYXRlVG9KU09iamVjdH0gb3IgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tVG9KU09iamVjdH0pOwogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPnBhcmVu
dFR5cGUgJiYgJGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiOwog
ICAgIHJldHVybiAxIGlmIEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfSA+IDAgJiYgIUhhc0N1
c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpOwpAQCAtMjAyNyw4ICsyMDI3LDcgQEAgc3ViIElz
QWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUKICAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIEF0dHJpYnV0ZVNob3VsZEJl
T25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAogICAgICMgSWYgdGhlIGludGVy
ZmFjZSBoYXMgc3BlY2lhbCBsb2dpYyBmb3IgY2FzdGluZyB3ZSBjYW5ub3QgaG9pc3QgdHlwZSBj
aGVjayB0byBKU0MuCi0gICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57SW1wbGljaXRUaGlzfTsKLSAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9OworICAgIHJldHVybiAwIGlmIElz
RE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpOwogCiAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0
ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Rm9yd2FyZFRvTWFwTGlrZX07CkBAIC00ODE1LDQxICs0ODE0LDggQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgR2VuZXJhdGVHZXRDYWxsRGF0YShcQGltcGxDb250
ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCRudW1B
dHRyaWJ1dGVzID4gMCkgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01BdHRyaWJ1
dGUuaCIpOwotCi0gICAgICAgIG15ICRjYXN0aW5nRnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9
IiA6IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICAj
IEZJWE1FOiBSZW1vdmUgSW1wbGljaXRUaGlzIGtleXdvcmQgYXMgaXQgaXMgbm8gbG9uZ2VyIGRl
ZmluZWQgYnkgV2ViSURMIHNwZWMgYW5kIGlzIG9ubHkgdXNlZCBpbiBET01XaW5kb3cuCi0gICAg
ICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1OAotICAg
ICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGljaXRUaGlzfSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2Ns
YXNzTmFtZX0qIElETEF0dHJpYnV0ZTwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpXG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChkZWNvZGVkVGhpc1ZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkudG9UaGlzKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpO1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlvbih2bSwgZGVj
b2RlZFRoaXNWYWx1ZSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFzc05hbWV9KiBJRExBdHRyaWJ1dGU8JHtjbGFzc05hbWV9
Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVu
Y3Rpb24oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCRudW1PcGVyYXRpb25zID4gMCAmJiAkaW50
ZXJmYWNlTmFtZSBuZSAiRXZlbnRUYXJnZXQiKSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJKU0RPTU9wZXJhdGlvbi5oIik7Ci0KLSAgICAgICAgIyBGSVhNRTogTWFrZSBjb25zaXN0ZW50
IElETEF0dHJpYnV0ZTw+OjpjYXN0IGFuZCBJRExPcGVyYXRpb248Pjo6Y2FzdCBpbiBjYXNlIG9m
IEN1c3RvbVByb3h5VG9KU09iamVjdC4KLSAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzU4Ci0gICAgICAgIG15ICRjYXN0aW5nRnVuY3Rpb24gPSAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8g
InRvJHtjbGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZh
Y2UpOwotICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9U
aGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpIiA6ICJjYWxsRnJh
bWUudGhpc1ZhbHVlKCkiOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4g
aW5saW5lICR7Y2xhc3NOYW1lfSogSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKVxu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAkdGhpc1ZhbHVlKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7Ci0gICAgfQorICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUF0dHJp
YnV0ZS5oIikgaWYgJG51bUF0dHJpYnV0ZXMgPiAwOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJK
U0RPTU9wZXJhdGlvbi5oIikgaWYgJG51bU9wZXJhdGlvbnMgPiAwICYmICRpbnRlcmZhY2VOYW1l
IG5lICJFdmVudFRhcmdldCI7CiAKICAgICBpZiAoTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRp
bnRlcmZhY2UpKSB7CiAgICAgICAgIG15ICRjb25zdHJ1Y3RvckdldHRlciA9ICJqcyIgLiAkaW50
ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjc3ODE2KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw5ICsxMjQsNiBAQAogICAgICAgICAiQ3VzdG9tUHJldmVudEV4
dGVuc2lvbnMiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2Ui
XQogICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tUHJveHlUb0pTT2JqZWN0IjogewotICAgICAg
ICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAg
ICAgIkN1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkBAIC0yNTEsOSArMjQ4LDYgQEAK
ICAgICAgICAgIkltcGxlbWVudGF0aW9uTGFja3NWVGFibGUiOiB7CiAgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiSW1wbGlj
aXRUaGlzIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0K
LSAgICAgICAgfSwKICAgICAgICAgIkludGVyZmFjZU5hbWUiOiB7CiAgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAibmFtZXNwYWNlIl0sCiAgICAgICAgICAgICAi
dmFsdWVzIjogWyIqIl0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAxLDExICsyMDEsNiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpn
ZXRDb25zdHJ1Y3RvcihWTSYgCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTRE9NV2lu
ZG93RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTRE9NV2luZG93KiBJRExB
dHRyaWJ1dGU8SlNET01XaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNET01XaW5kb3cqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNET01XaW5kb3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTM3OSw0NCArMzc0LDYg
QEAgdm9pZCBKU0RPTVdpbmRvdzo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZQogICAgIEJhc2U6OmFu
YWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKIH0KIAotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykK
LWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN0RPTVdp
bmRvd0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlOURPTVdpbmRvd0VbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxET01XaW5kb3c+JiYgaW1wbCkKLXsKLQotI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4p
Ci0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183RE9N
V2luZG93QFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSAmX1pUVk43V2ViQ29yZTlET01XaW5kb3dFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJ
ZiB0aGlzIGZhaWxzIERPTVdpbmRvdyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVl
ZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUg
dG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Bv
bHltb3JwaGljPERPTVdpbmRvdz46OnZhbHVlLCAiRE9NV2luZG93IGlzIG5vdCBwb2x5bW9ycGhp
YyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUg
YSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gRE9NV2luZG93IGhhcyBzdWJjbGFzc2Vz
LiBJZiBET01XaW5kb3cgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8g
dG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIERPTVdpbmRvdyB5b3UgdG8gb3B0IG91dCBvZiBi
aW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRp
b24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNF
X0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxET01XaW5kb3c+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IERPTVdpbmRvdyYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiBET01XaW5kb3cqIEpTRE9NV2luZG93Ojp0b1dy
YXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPih2bSwgdmFsdWUpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9N
V2luZG93LmgJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMCArNjks
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNXaW5k
b3dQcm94eSopOwogfTsKIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgRE9NV2luZG93Jik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRE9NV2luZG93KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9K
UyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxs
KCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxET01XaW5kb3c+JiYpOwotaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxET01XaW5kb3c+
JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwo
KTsgfQogCiBjbGFzcyBKU0RPTVdpbmRvd1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTEgKzEyMyw2IEBAIEpTVmFsdWUgSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZTo6Z2UKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKiBJRExBdHRyaWJ1dGU8SlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93LmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE2LDExICsyMTYsNiBAQCB2b2lkIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Ojpk
ZXN0cm95CiAgICAgdGhpc09iamVjdC0+SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6On5KU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU0V4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdyogSURMT3BlcmF0aW9uPEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1l
LnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYgQEAgSlNWYWx1ZSBK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpnZXRDbwogICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsMTEgKzEyMyw2IEBAIEpTVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmdldEMK
ICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVE
T01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUqIElETEF0dHJpYnV0ZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQsMTYgKzE4NCw2IEBAIHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnM6OmRlc3Ryb3koSlNDOjpK
U0MKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDRVJlYWN0aW9uczo6fkpTVGVzdENFUmVhY3Rpb25z
KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zKiBJRExBdHRyaWJ1
dGU8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RDRVJlYWN0aW9ucyogSURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUp
Ci17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NCwxNiArMTY0LDYgQEAgdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyOjpkZXN0cgogICAgIHRoaXNPYmplY3QtPkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6
On5KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIElETEF0dHJpYnV0ZTxKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDE2ICsyMDYsNiBAQCB2b2lkIEpTVGVzdENhbGxU
cmFjZXI6OmRlc3Ryb3koSlNDOjpKU0NlCiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q2FsbFRyYWNl
cjo6fkpTVGVzdENhbGxUcmFjZXIoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q2Fs
bFRyYWNlciogSURMQXR0cmlidXRlPEpTVGVzdENhbGxUcmFjZXI+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2FsbFRyYWNlcio+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdENhbGxUcmFjZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxs
VHJhY2VyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2FsbFRy
YWNlcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1Zh
bHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q2FsbFRyYWNlckNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODMsMTYgKzQ4Myw2IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlczo6ZGVzdHJveSgKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Ojp+SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcygpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcyogSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50
aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCwxMSArMjY4LDYgQEAgdm9p
ZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpkZXN0cgogICAgIHRoaXNPYmplY3QtPkpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6On5KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUq
IElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDUsMTYgKzYwNSw2
IEBAIEpTVmFsdWUgSlNUZXN0RE9NSklUOjpnZXRDb25zdHJ1Y3RvcihWTSYKICAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9NSklURE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdERPTUpJVCogSURMQXR0cmlidXRlPEpTVGVzdERPTUpJVD46OmNhc3Qo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
fQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIElETE9wZXJhdGlvbjxKU1Rlc3RE
T01KSVQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVQq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgp
KTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERPTUpJVENvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2
aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksMTYgKzI0OSw2
IEBAIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTjo6ZGVzdHJveShKU0M6OkoKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3REZWZhdWx0VG9KU09OOjp+SlNUZXN0RGVmYXVsdFRvSlNPTigpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09OKiBJRExBdHRyaWJ1dGU8SlNUZXN0
RGVmYXVsdFRvSlNPTj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3REZWZhdWx0VG9KU09OKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
RGVmYXVsdFRvSlNPTiogSURMT3BlcmF0aW9uPEpTVGVzdERlZmF1bHRUb0pTT04+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09OKj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0K
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxNiArMTgyLDYgQEAgdm9p
ZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZQogICAgIHRoaXNPYmplY3QtPkpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6fkpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBJRExP
cGVyYXRpb248SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6Y2FzdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlz
VmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkocmV2aXNpb24gMjc3ODE2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDE2ICsxNzAsNiBAQCBK
U1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OjpnZXRDCiAgICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KiBJRExBdHRyaWJ1
dGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCogSURMT3BlcmF0aW9u
PEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3MywxNiArMTczLDYgQEAgSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsOgogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwqIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKiBJRExPcGVyYXRp
b248SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD46OmNhc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVy
biBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxD
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHJldmlzaW9u
IDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTYxLDExICsxNjEsNiBAQCB2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyCiAgICAgdGhpc09iamVjdC0+SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZTo6fkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSogSURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJ
KHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MywxNiAr
MTgzLDYgQEAgdm9pZCBKU1Rlc3REb21haW5TZWN1cml0eTo6ZGVzdHJveShKU0M6OgogICAgIHRo
aXNPYmplY3QtPkpTVGVzdERvbWFpblNlY3VyaXR5Ojp+SlNUZXN0RG9tYWluU2VjdXJpdHkoKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RG9tYWluU2VjdXJpdHkqIElETEF0dHJpYnV0
ZTxKU1Rlc3REb21haW5TZWN1cml0eT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3REb21haW5TZWN1cml0eSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdERvbWFpblNlY3VyaXR5KiBJRExPcGVyYXRpb248SlNUZXN0RG9tYWluU2VjdXJp
dHk+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REb21haW5TZWN1
cml0eSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1Zh
bHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RG9tYWluU2VjdXJp
dHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjc3LDE2ICsyNzcsNiBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmRl
c3Ryb3koSlNDCiAgICAgdGhpc09iamVjdC0+SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6fkpTVGVz
dEVuYWJsZWRCeVNldHRpbmcoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZyogSURMQXR0cmlidXRlPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcqIElE
TE9wZXJhdGlvbjxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCShyZXZp
c2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTEgKzE1
NCw2IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmRlc3Ryb3koSlMKICAgICB0aGlz
T2JqZWN0LT5KU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6fkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KiBJRExB
dHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4
LDExICsyNTgsNiBAQCBKU1ZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0CiAg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogSURM
QXR0cmlidXRlPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9u
IDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSwxMSArMjIxLDYgQEAgdm9p
ZCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYQogICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
cywgbW9kZSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEV2ZW50VGFyZ2V0KiBJRExP
cGVyYXRpb248SlNUZXN0RXZlbnRUYXJnZXQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDExICsxNTMsNiBAQCB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJveShKU0M6
OkpTQ2VsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0RXhjZXB0aW9uOjp+SlNUZXN0RXhjZXB0aW9u
KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEV4Y2VwdGlvbiogSURMQXR0cmlidXRl
PEpTVGVzdEV4Y2VwdGlvbj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFeGNlcHRpb24qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MywxMSArMTYzLDYgQEAgdm9pZCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpkZXN0cm95KAogICAgIHRoaXNPYmplY3QtPkpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU6On5KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKCk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIElETEF0dHJpYnV0ZTxK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTMsNyArNTEzLDcgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAi
cmVndWxhckF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInJlZ3VsYXJBdHRy
aWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGUpIH0gfSwKICAgICB7ICJwdWJs
aWNBbmRQcml2YXRlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3Rf
cHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQ
cml2YXRlQXR0cmlidXRlKSB9IH0sCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICB7ICJw
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RfcHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKSB9IH0s
CkBAIC03MTMsMTYgKzcxMyw2IEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpkZXN0cm95KEpT
Qzo6SlMKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RHbG9iYWxPYmplY3Q6On5KU1Rlc3RHbG9iYWxP
YmplY3QoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0R2xvYmFsT2JqZWN0KiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdEdsb2JhbE9iamVjdCogSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVj
dD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYg
Y2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVj
dCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0Q29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC03NDMsNyArNzMzLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdAogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
YXR0cmlidXRlTmFtZSkpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1dGVHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGF0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRlR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxP
YmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0xODQzLDQ0ICsxODMzLDYgQEAg
dm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RPd25lcjo6ZmluYWxpemUoSgogICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNUZXN0R2xvYmFsT2JqZWN0LT53cmFwcGVkKCksIGpzVGVzdEdsb2JhbE9i
amVjdCk7CiB9CiAKLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0o
V0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0R2xvYmFsT2JqZWN0QFdlYkNvcmVA
QDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmUxNlRlc3RHbG9iYWxPYmplY3RFW107IH0KLSNlbmRpZgotI2VuZGlmCi0KLUpTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEdsb2JhbE9iamVjdD4mJiBpbXBsKQotewotCi0j
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJs
ZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJ
TikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdU
ZXN0R2xvYmFsT2JqZWN0QFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTE2VGVzdEdsb2JhbE9iamVjdEVbMl07Ci0j
ZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdEdsb2JhbE9iamVjdCBkb2VzIG5vdCBo
YXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RHbG9iYWxPYmplY3Q+Ojp2YWx1
ZSwgIlRlc3RHbG9iYWxPYmplY3QgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5
b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1
Zywgb3IKLSAgICAvLyBUZXN0R2xvYmFsT2JqZWN0IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0R2xv
YmFsT2JqZWN0IGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMo
KSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0R2xvYmFsT2JqZWN0IHlvdSB0byBvcHQgb3V0IG9m
IGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRh
dGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJFTEVB
U0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsK
LSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RHbG9iYWxPYmplY3Q+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RHbG9iYWxPYmplY3QmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQogVGVzdEdsb2JhbE9i
amVjdCogSlNUZXN0R2xvYmFsT2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0R2xvYmFsT2JqZWN0Kj4odm0sIHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmgJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgy
LDYgQEAgaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdEdsb2JhbE9iamVjdAogICAgIHJldHVy
biB3cmFwcGFibGVPYmplY3Q7CiB9CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RHbG9iYWxPYmplY3QmKTsKLWlubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2xvYmFsT2JqZWN0KiBpbXBs
KSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
ICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0R2xvYmFs
T2JqZWN0PiYmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWZQdHI8VGVzdEdsb2JhbE9iamVjdD4mJiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlt
cGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CiAKIGNsYXNzIEpTVGVzdEds
b2JhbE9iamVjdFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
ewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsMTEgKzI2Miw2IEBAIGJvb2wgSlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyOjoKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9w
ZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAy
Nzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5LDE2ICs1MDksNiBAQCB2b2lkIEpT
VGVzdEludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0
SW50ZXJmYWNlOjp+SlNUZXN0SW50ZXJmYWNlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdEludGVyZmFjZSogSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQot
Ci10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIElETE9wZXJhdGlvbjxKU1Rlc3RJ
bnRlcmZhY2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEgKzE1Myw2IEBAIHZvaWQg
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OmQKICAgICB0aGlzT2JqZWN0LT5KU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6fkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlKiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY2LDExICsxNjYsNiBAQCB2b2lkIEpTVGVzdEl0ZXJhYmxlOjpkZXN0
cm95KEpTQzo6SlNDZWxsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0SXRlcmFibGU6On5KU1Rlc3RJ
dGVyYWJsZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJdGVyYWJsZSogSURMT3Bl
cmF0aW9uPEpTVGVzdEl0ZXJhYmxlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SXRlcmFibGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVz
dEl0ZXJhYmxlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxNiArMTYxLDYgQEAgdm9pZCBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveQogICAgIHRoaXNPYmplY3QtPkpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjp+SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIElETEF0dHJpYnV0ZTxK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBJRExPcGVyYXRpb248SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU3LDE2ICsxNTcsNiBAQCB2b2lkIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
OjpkZXN0CiAgICAgdGhpc09iamVjdC0+SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q6On5K
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCogSURMQXR0cmlidXRlPEpTVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QqIElETE9wZXJhdGlvbjxKU1Rlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9yZWFkb25seVN0cmluZ0F0dHJp
YnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDExICsyMDgsNiBAQCB2b2lkIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSURM
T3BlcmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0K
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZpc2lv
biAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxNiArMTc5LDYgQEAgdm9pZCBK
U1Rlc3RNYXBMaWtlOjpkZXN0cm95KEpTQzo6SlNDZWxsKgogICAgIHRoaXNPYmplY3QtPkpTVGVz
dE1hcExpa2U6On5KU1Rlc3RNYXBMaWtlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dE1hcExpa2UqIElETEF0dHJpYnV0ZTxKU1Rlc3RNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE1hcExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RNYXBMaWtlKiBJRExPcGVyYXRpb248SlNUZXN0TWFwTGlrZT46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZy
YW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE1hcExpa2UqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2VDb25zdHJ1Y3RvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDE2ICsxODMsNiBAQCB2b2lkIEpT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvCiAgICAgdGhpc09iamVjdC0+SlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6fkpTVGVzdE1hcExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucyogSURMQXR0cmlidXRlPEpTVGVzdE1hcExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMqIElE
TE9wZXJhdGlvbjxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUp
Ci17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsMTEgKzMzMiw2IEBAIGJvb2wgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICByZXR1cm4gSlNPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJh
dGlvbjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFt
ZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjksMTEgKzIyOSw2IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXI6OmQKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChj
ZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDExICsyMDUsNiBAQCB2b2lkIEpTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXI6OmdlCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciogSURM
T3BlcmF0aW9uPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYXN0KEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7
Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSwxMSArMjg1LDYgQEAg
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZQogICAgIHJldHVybiBKU09i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRp
b248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVy
biBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDExICszMTIsNiBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIqIElETE9w
ZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
cio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsMTEgKzMzMiw2IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQ
cm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciogSURMT3BlcmF0aW9u
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFt
ZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjc3ODE2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxMCwxNiArMzEwLDYgQEAgc3RhdGljIGJvb2wgaXNMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnR5TgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBJRExPcGVyYXRpb248SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFt
ZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI3NzgxNikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDE2ICsyODcsNiBAQCBzdGF0aWMgYm9vbCBp
c0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVP
d25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3
UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMqIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExPcGVyYXRpb248
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZy
YW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU0LDE2ICsxNTQsNiBAQCB2b2lkIEpTVGVzdE5hbWVzcGFjZU9iamVjdDo6
ZGVzdHJveShKU0M6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0TmFtZXNwYWNlT2JqZWN0Ojp+SlNU
ZXN0TmFtZXNwYWNlT2JqZWN0KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVz
cGFjZU9iamVjdCogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVzcGFjZU9iamVjdD46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lc3BhY2VPYmplY3QqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lc3BhY2VPYmplY3QqIElETE9w
ZXJhdGlvbjxKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3ROYW1lc3BhY2VPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9yX25hbWVzcGFjZUF0dHJpYnV0
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCkKIHsKICAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsMTYgKzI2MCw2IEBA
IEpTVmFsdWUgSlNUZXN0Tm9kZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHYKICAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0Tm9kZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3ROb2RlKiBJRExBdHRyaWJ1dGU8SlNUZXN0Tm9kZT46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkK
LXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROb2RlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Njks
MTYgKzI1NjksNiBAQCB2b2lkIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iCiAg
ICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
T2JqKiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE9iaiogSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0T2JqQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NywxMSArMTc3LDYgQEAgdm9pZCBKU1Rlc3RP
cGVyYXRpb25Db25kaXRpb25hbDo6ZGVzdHJveQogICAgIHRoaXNPYmplY3QtPkpTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsOjp+SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwoKTsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwqIElETE9wZXJhdGlvbjxK
U1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5j
cHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTQsMTEgKzI1NCw2IEBAIEpTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpn
ZXQKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCogSURMQXR0cmlidXRlPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewog
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MywxNiArMTczLDYgQEAgdm9pZCBKU1Rlc3RSZWFkT25s
eU1hcExpa2U6OmRlc3Ryb3koSlNDOgogICAgIHRoaXNPYmplY3QtPkpTVGVzdFJlYWRPbmx5TWFw
TGlrZTo6fkpTVGVzdFJlYWRPbmx5TWFwTGlrZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RSZWFkT25seU1hcExpa2UqIElETEF0dHJpYnV0ZTxKU1Rlc3RSZWFkT25seU1hcExpa2U+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlN
YXBMaWtlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UmVhZE9ubHlNYXBM
aWtlKiBJRExPcGVyYXRpb248SlNUZXN0UmVhZE9ubHlNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlNYXBMaWtlKj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZp
c2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDE2ICsxNzEs
NiBAQCB2b2lkIEpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6ZGVzdHJveShKU0M6CiAgICAgdGhpc09i
amVjdC0+SlNUZXN0UmVhZE9ubHlTZXRMaWtlOjp+SlNUZXN0UmVhZE9ubHlTZXRMaWtlKCk7CiB9
CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSogSURMQXR0cmlidXRl
PEpTVGVzdFJlYWRPbmx5U2V0TGlrZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RSZWFkT25seVNldExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RSZWFkT25seVNldExpa2UqIElETE9wZXJhdGlvbjxKU1Rlc3RSZWFkT25seVNl
dExpa2U+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25s
eVNldExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFJlYWRPbmx5
U2V0TGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9u
IDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsMTYgKzE4Miw2IEBAIHZvaWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWMK
ICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6On5K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoKTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBJRExBdHRyaWJ1dGU8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NywxNiArMTc3LDYgQEAgdm9pZCBKU1Rlc3RTZXRMaWtlOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKgogICAgIHRoaXNPYmplY3QtPkpTVGVzdFNldExpa2U6On5KU1Rl
c3RTZXRMaWtlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNldExpa2UqIElETEF0
dHJpYnV0ZTxKU1Rlc3RTZXRMaWtlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdFNldExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RTZXRMaWtlKiBJRExPcGVyYXRpb248SlNUZXN0U2V0TGlrZT46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2UqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzVGVzdFNldExpa2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgxLDE2ICsxODEsNiBAQCB2b2lkIEpTVGVzdFNldExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uczo6fkpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMo
KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9ucyogSURMQXR0cmlidXRlPEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMqIElETE9wZXJhdGlvbjxKU1Rl
c3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyo+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwot
fQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9uc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXIuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYsMTEgKzE1Niw2IEBAIHZvaWQgSlNUZXN0U3RyaW5naWZpZXI6OmRlc3Ryb3koSlNDOjpK
U0MKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdpZmllcjo6fkpTVGVzdFN0cmluZ2lmaWVy
KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyKiBJRExPcGVyYXRp
b248SlNUZXN0U3RyaW5naWZpZXI+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RTdHJpbmdpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBj
YWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2
aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDExICsxNTYsNiBAQCB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246
On5KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbigpOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiogSURMT3BlcmF0aW9u
PEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24qPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
LX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNzc4MTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwxMSArMTU4LDYg
QEAgdm9pZCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpkZQogICAgIHRoaXNPYmpl
Y3QtPkpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246On5KU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24qIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxs
RnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcy5jcHAJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTEgKzE1OCw2IEBAIHZvaWQgSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnQKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6On5KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzKiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXND
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZpc2lvbiAy
Nzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU2LDExICsxNTYsNiBAQCB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
CiAgICAgdGhpc09iamVjdC0+SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
Ojp+SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKCk7CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyogSURM
T3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz46OmNhc3Qo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1l
KQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJh
bWUudGhpc1ZhbHVlKCkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUuY3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1OSwxNiArMTU5LDYgQEAgdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlOgogICAgIHRoaXNPYmplY3QtPkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGU6On5KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKCk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqIElE
TEF0dHJpYnV0ZTxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPjo6Y2FzdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlKiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDE2ICsxNjAsNiBAQCB2b2lkIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6On5KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSogSURMQXR0cmlidXRlPEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUqIElETE9wZXJhdGlvbjxKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19Ci0KIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShy
ZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsMTYgKzI3Miw2IEBA
IHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwKICAgICB0aGlzT2JqZWN0
LT5KU1Rlc3RUeXBlZGVmczo6fkpTVGVzdFR5cGVkZWZzKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdFR5cGVkZWZzKiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
fQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RUeXBlZGVmcyogSURMT3BlcmF0aW9uPEpTVGVz
dFR5cGVkZWZzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKLX0KLQogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwx
MSArMTY0LDYgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1YwogICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTV29ya2VyR2xvYmFsU2NvcGUqIElETEF0dHJpYnV0
ZTxKU1dvcmtlckdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTV29ya2VyR2xvYmFsU2NvcGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpA
QCAtMjczLDQ0ICsyNjgsNiBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGU6OmFuYWx5emVIZWFw
KEpTCiAgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwogfQogCi0jaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVu
dGlmaWVyKCI/P183V29ya2VyR2xvYmFsU2NvcGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vs
c2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE3V29ya2VyR2xvYmFs
U2NvcGVFW107IH0KLSNlbmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8V29ya2VyR2xvYmFsU2NvcGU+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRh
YmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhw
ZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183V29ya2VyR2xvYmFsU2NvcGVA
V2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
ICZfWlRWTjdXZWJDb3JlMTdXb3JrZXJHbG9iYWxTY29wZUVbMl07Ci0jZW5kaWYKLQotICAgIC8v
IElmIHRoaXMgZmFpbHMgV29ya2VyR2xvYmFsU2NvcGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwg
c28geW91IG5lZWQgdG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUg
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19wb2x5bW9ycGhpYzxXb3JrZXJHbG9iYWxTY29wZT46OnZhbHVlLCAiV29ya2VyR2xv
YmFsU2NvcGUgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMg
YXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAv
LyBXb3JrZXJHbG9iYWxTY29wZSBoYXMgc3ViY2xhc3Nlcy4gSWYgV29ya2VyR2xvYmFsU2NvcGUg
aGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJl
bnRseSByZXF1aXJlIFdvcmtlckdsb2JhbFNjb3BlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcg
aGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRy
aWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJFTEVBU0VfQVNTRVJU
KGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRpZgot
ICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBXb3JrZXJHbG9iYWxTY29wZSYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiBXb3JrZXJHbG9iYWxTY29wZSog
SlNXb3JrZXJHbG9iYWxTY29wZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV29ya2Vy
R2xvYmFsU2NvcGUqPih2bSwgdmFsdWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5o
CShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMCArNjks
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNDOjpK
U1Byb3h5Kik7CiB9OwogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iYWxTY29wZSYpOwotaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdvcmtlckdsb2JhbFNjb3BlKiBpbXBsKSB7IHJl
dHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBs
KSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxXb3JrZXJHbG9iYWxTY29w
ZT4mJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5y
ZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KIAogY2xhc3MgSlNXb3JrZXJHbG9i
YWxTY29wZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAy
Nzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTEgKzEzMyw2IEBAIEpT
VmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnUKICAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1dvcmtsZXRH
bG9iYWxTY29wZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dv
cmtsZXRHbG9iYWxTY29wZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMTg3LDQ0
ICsxODIsNiBAQCB2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlOjphbmFseXplSGVhcChKCiAgICAg
QmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwogfQogCi0jaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/
P183V29ya2xldEdsb2JhbFNjb3BlQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxOFdvcmtsZXRHbG9iYWxTY29wZUVb
XTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxX
b3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9p
bnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183V29ya2xldEdsb2JhbFNjb3BlQFdlYkNv
cmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pU
Vk43V2ViQ29yZTE4V29ya2xldEdsb2JhbFNjb3BlRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYg
dGhpcyBmYWlscyBXb3JrbGV0R2xvYmFsU2NvcGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28g
eW91IG5lZWQgdG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0
cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19wb2x5bW9ycGhpYzxXb3JrbGV0R2xvYmFsU2NvcGU+Ojp2YWx1ZSwgIldvcmtsZXRHbG9i
YWxTY29wZSBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBh
c3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8v
IFdvcmtsZXRHbG9iYWxTY29wZSBoYXMgc3ViY2xhc3Nlcy4gSWYgV29ya2xldEdsb2JhbFNjb3Bl
IGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJy
ZW50bHkgcmVxdWlyZSBXb3JrbGV0R2xvYmFsU2NvcGUgeW91IHRvIG9wdCBvdXQgb2YgYmluZGlu
ZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NF
UlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V29ya2xldEdsb2JhbFNjb3BlPihnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQogV29ya2xldEdsb2JhbFNj
b3BlKiBKU1dvcmtsZXRHbG9iYWxTY29wZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
V29ya2xldEdsb2JhbFNjb3BlKj4odm0sIHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9i
YWxTY29wZS5oCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjksMTAgKzY5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYsIEpTQzo6SlNQcm94eSopOwogfTsKIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2xldEdsb2JhbFNjb3BlJik7Ci1pbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV29ya2xldEdsb2JhbFNjb3Bl
KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxXb3Jr
bGV0R2xvYmFsU2NvcGU+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkgeyBy
ZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQogCiBjbGFz
cyBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpjYW5BY2Nlc3NJ
bnNwZQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogCi0g
ICAgSlNET01XaW5kb3cqIGluc3BlY3RlZFdpbmRvdyA9IHRvSlNET01XaW5kb3cobGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSwgbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogaW5zcGVj
dGVkV2luZG93ID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCksIGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmICghaW5zcGVjdGVkV2luZG93
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDggQEAKICAgICBDdXN0b21HZXRQcm90b3R5
cGUsCiAgICAgQ3VzdG9tSGVhcFNuYXBzaG90LAogICAgIEN1c3RvbVByZXZlbnRFeHRlbnNpb25z
LAotICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBDdXN0b21QdXQsCiAgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIEludGVyZmFjZU5h
bWU9V2luZG93LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElz
SW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNzc4MTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDkgKzMwLDcgQEAKICAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QsCiAgICAgQ3VzdG9tR2V0
UHJvdG90eXBlLAogICAgIEN1c3RvbVByZXZlbnRFeHRlbnNpb25zLAotICAgIEN1c3RvbVByb3h5
VG9KU09iamVjdCwKICAgICBDdXN0b21QdXQsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIEludGVy
ZmFjZU5hbWU9V2luZG93LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAog
ICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmlkbAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw5
IEBACiAgKi8KIAogWwotICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBFeHBvc2VkPURl
ZGljYXRlZFdvcmtlciwKICAgICBHbG9iYWw9KFdvcmtlcixEZWRpY2F0ZWRXb3JrZXIpLAogICAg
IEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBJbXBsaWNpdFRoaXMsCiAgICAgSXNJbW11
dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90
aWNPYmplY3RPblByb3RvdHlwZSwKIF0gaW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlIDogV29ya2VyR2xvYmFsU2NvcGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
MSArMjQsOSBAQAogICovCiAKIFsKLSAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCiAgICAgRXhw
b3NlZD1Xb3JrZXIsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgSlNMZWdhY3lQYXJl
bnQ9SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIElzSW1t
dXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhv
dGljT2JqZWN0T25Qcm90b3R5cGUsCiBdIGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSA6IEV2
ZW50VGFyZ2V0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzc4MTYp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDEwIEBACiAgKi8KIAogWwotICAg
IEN1c3RvbVByb3h5VG9KU09iamVjdCwKICAgICBHbG9iYWw9KFdvcmtlcixTZXJ2aWNlV29ya2Vy
KSwKICAgICBFeHBvc2VkPVNlcnZpY2VXb3JrZXIsCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9X
T1JLRVIsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyLAotICAgIEltcGxpY2l0
VGhpcywKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlw
ZUV4b3RpY09iamVjdCwKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJv
dG90eXBlLApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw2IEBACiAgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKICAgICBKU0N1
c3RvbU1hcmtGdW5jdGlvbiwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgSW1w
bGljaXRUaGlzLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAogICAgIElz
SW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiAgICAgR2xvYmFsPShX
b3JrbGV0LFBhaW50V29ya2xldCksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDEwICsyNCw4IEBACiAqLwogCiBbCi0gICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAogICAgIEV4
cG9zZWQ9V29ya2xldCwKICAgICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UsCi0gICAgSW1wbGljaXRUaGlzLAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2Jq
ZWN0LAogICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiAg
ICAgR2xvYmFsPVdvcmtsZXQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3ODE2KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0wNS0yMCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgW1dlYklETF0gUmVtb3ZlIFtJbXBsaWNpdFRoaXNdIGFuZCBbQ3VzdG9tUHJveHlUb0pTT2Jq
ZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIFVzZSBpbmhlcml0czxUPiBpbnN0ZWFkIG9mIHRvSlNET01XaW5kb3coKSBp
ZiB0aGUgdmFsdWUgaXMgbmV2ZXIgYSBKU1Byb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpyZXBvcnRFeGNlcHRpb24pOgorCiAyMDIxLTA1LTIwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRMb2NrIG1vcmUgaW4gSVBD
OjpDb25uZWN0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDI3NzgxNikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpyZXBvcnRFeGNlcHRpb24oSlNDCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2Jq
ZWN0KTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBoYXMgYSBET01XaW5kb3cgZ2xv
YmFsIG9iamVjdCwgb3RoZXJ3aXNlIHRoaXMgY29udGV4dCBkaWRuJ3Qgb3JpZ2luYXRlIGZyb20g
YSBQYWdlLgotICAgIGlmICghdG9KU0RPTVdpbmRvdyhnbG9iYWxPYmplY3QtPnZtKCksIGdsb2Jh
bE9iamVjdCkpCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NV2luZG93Pihn
bG9iYWxPYmplY3QtPnZtKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJDb3JlOjpyZXBv
cnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc4MTYpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMS0wNS0yMCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5j
b20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIFtJbXBsaWNpdFRoaXNdIGFuZCBbQ3VzdG9t
UHJveHlUb0pTT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3NTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYW0gV2VpbmlnLgorCisgICAgICAgIFVzZSBpbmhlcml0czxUPiBpbnN0ZWFkIG9mIHRvSlNE
T01XaW5kb3coKSBpZiB0aGUgdmFsdWUgaXMgbmV2ZXIgYSBKU1Byb3h5LgorCisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9yZXBvcnRFeGNlcHRpb246
aW5Db250ZXh0Ol0pOgorCiAyMDIxLTA1LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcGRhdGUgQmFzZTY0IGVuY29kaW5nL2RlY29kaW5nIHRvIG1hdGNoIG1v
cmUgbW9kZXJuIFdlYktpdCBjb252ZW50aW9ucwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjc3ODE2KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzM2LDcg
KzEzMzYsNyBAQCArICh2b2lkKV9yZXBvcnRFeGNlcHRpb246KEpTVmFsdWVSZWYpZXhjCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gTWFrZSBzdXJl
IHRoZSBjb250ZXh0IGhhcyBhIERPTVdpbmRvdyBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgdGhp
cyBjb250ZXh0IGRpZG4ndCBvcmlnaW5hdGUgZnJvbSBhIFdlYlZpZXcuCi0gICAgaWYgKCFXZWJD
b3JlOjp0b0pTRE9NV2luZG93KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSkKKyAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8V2ViQ29yZTo6SlNET01XaW5kb3c+KGdsb2Jh
bE9iamVjdC0+dm0oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkNvcmU6OnJlcG9ydEV4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzgxNikKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTA1LTIwICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4K
KworICAgICAgICBbV2ViSURMXSBSZW1vdmUgW0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94
eVRvSlNPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCisKKyAgICAgICAgVXNlIGluaGVyaXRzPFQ+IGluc3RlYWQgb2YgdG9KU0RPTVdp
bmRvdygpIGlmIHRoZSB2YWx1ZSBpcyBuZXZlciBhIEpTUHJveHkuCisKKyAgICAgICAgKiBXZWJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnJlcG9ydEV4Y2VwdGlvbik6CisKIDIwMjEtMDUt
MTYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBjcmVhdGluZy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNh
bnZhcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI3Nzgx
NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NjE2LDcgKzY2MTYsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlcG9ydEV4Y2VwdGlvbihf
SW5fIEpTCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCiAgICAg
Ly8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IGhhcyBhIERPTVdpbmRvdyBnbG9iYWwgb2JqZWN0LCBv
dGhlcndpc2UgdGhpcyBjb250ZXh0IGRpZG4ndCBvcmlnaW5hdGUgZnJvbSBhIFdlYlZpZXcuCi0g
ICAgaWYgKCF0b0pTRE9NV2luZG93KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSkK
KyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01XaW5kb3c+KGdsb2JhbE9iamVj
dC0+dm0oKSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBXZWJDb3JlOjpyZXBvcnRF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzc4MTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNS0yMCAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIFtJbXBsaWNp
dFRoaXNdIGFuZCBbQ3VzdG9tUHJveHlUb0pTT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3NTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvbGlzdGVuZXIvKjoKKyAgICAgICAgVGhpcyBpcyBhIHByb2dyZXNzaW9uOiBC
bGluayBhbmQgR2Vja28gZG9uJ3QgY2FsbCBldmVudCBsaXN0ZW5lcnMgYmVsb25naW5nIHRvIGRl
c3Ryb3llZCBmcmFtZXMuCisKKyAgICAgICAgKiBqcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJv
dG90eXBlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcy9wcm9wZXJ0eS1vZi13
aW5kb3ctYXMtcHJvdG90eXBlLmh0bWw6IFJlbW92ZWQuCisKIDIwMjEtMDUtMjAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIDx2aWRlbz4gcmVuZGVyZWQgaW5z
aWRlIDx0ZW1wbGF0ZT4gc2hvd3MgYmxhY2sgZm9yIHdlYmNhbSBzdHJlYW0gKFNhZmFyaSAxNC4w
LjMgb25seSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3Rl
clBhaW50QmluZGluZ3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwJKHJldmlzaW9uIDI3NzgxNikK
KysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGlu
Z3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsMTMgQEAgdGVzdChmdW5jdGlvbigp
IHsKIH0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zJyk7CiAKIHRlc3QoZnVuY3Rpb24o
KSB7CisgIGdsb2JhbFRoaXMucmVnaXN0ZXJQYWludCgnYmFzaWMxLWdsb2JhbFRoaXMnLCBjbGFz
cyB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbIi0tdGVzdCJd
OyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQg
cnVucyAoY2FsbGVkIG9uIGdsb2JhbFRoaXMpJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CiAgIHJl
Z2lzdGVyUGFpbnQoJ2Jhc2ljMicsIGNsYXNzIHsKICAgICBwYWludCgpIHsgfQogICB9KTsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0
Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9k
ZS1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc4MTYp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1Rhcmdl
dE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tl
ZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNz
aW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBt
dXN0IG1hdGNoLgotVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50
TGlzdGVuZXJzIG9uIGFuIEV2ZW50VGFyZ2V0IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgaXMgdGhl
IHRhcmdldCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3Qg
cGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBv
ZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlz
IGxvZ2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4g
c2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB1c2luZyBhZGRFdmVudExp
c3RlbmVyIGlzIHRoZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQy
KS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRo
IHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIG5vIHdhcm5pbmdzIGFyZSBsb2dn
ZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVu
ZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkocmV2aXNp
b24gMjc3ODE2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94
c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJh
bWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gRXZlbnRUYXJnZXQgdXNp
bmcgYWRkRXZlbnRMaXN0ZW5lciBpcwogICAgICAgIHRoZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChy
ZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNl
ZSBhbiBhbGVydCBkaWFsb2cgd2l0aAotICAgICAgIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIg
aW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhl
IGNvbnNvbGUuPC9wPgorICAgICAgIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5k
IG5vIHdhcm5pbmdzIGFyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgogICAgIDxpZnJhbWUg
aWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9jaGlsZFdpdGhCdXR0b24uaHRtbCIgb25sb2FkPSJvbmxvYWRGb3JCdXR0b25DaGlsZCgp
OyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5l
ci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzc4MTYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hz
cy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IEJsb2Nr
ZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vz
c2luZyBhIGNyb3NzLW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KLVRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVu
dExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB3aXRoIHRoZSBzaG9ydGN1dCAob25jbGljaywg
ZXRjKSwgaXMgdGhlIHRhcmdldCBub2RlcyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIp
LiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgg
dGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0
IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFt
ZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB3aXRo
IHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgaXMgdGhlIHRhcmdldCBub2RlcyBmcmFtZS4g
KHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBz
ZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBh
bmQgbm8gd2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25j
bGljay1zaG9ydGN1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJ
KHJldmlzaW9uIDI3NzgxNikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlz
dGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDcgQEAKIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBmcmFt
ZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB3aXRo
IHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgCiAgICAgICAgaXMgdGhlIHRhcmdldCBub2Rl
cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBpZiB5
b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoCi0gICAgICAgdGhlIGRvbWFpbiBvZiAi
bG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxv
Z2dlZCB0byB0aGUgY29uc29sZS48L3A+CisgICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0
IiBpbiBpdCBhbmQgbm8gd2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CiAg
ICAgPGlmcmFtZSBpZD0idGFyZ2V0Q2hpbGQiIHNyYz0iIj48L2lmcmFtZT4KICAgICA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL2NoaWxkV2l0aEJ1dHRvbi5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckJ1
dHRvbkNoaWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVu
ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNzc4MTYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2Vj
dXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRv
bWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQg
d2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHVzaW5nIGFk
ZEV2ZW50TGlzdGVuZXIsIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0
MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9n
IHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZh
U2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhh
dCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBYTUxIdHRwUmVx
dWVzdCB1c2luZyBhZGRFdmVudExpc3RlbmVyLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFy
Oi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFu
IGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIG5v
IHdhcm5pbmdzIGFyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZl
bnRMaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LWFkZEV2ZW50TGlzdGVuZXIuaHRtbAko
cmV2aXNpb24gMjc3ODE2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xNCw3ICsxNCw2IEBACiAKICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CiAgICAg
ICAgICAgICB2YXIgeGhyQ2hpbGQgPSB3aW5kb3cuZnJhbWVzWzFdOwotICAgICAgICAgICAgLy8g
eGhyQ2hpbGQuWEhSLm9wZW4oJ0dFVCcsIG51bGwsIHRydWUpOwogICAgICAgICAgICAgeGhyQ2hp
bGQuWEhSLm9wZW4oIkdFVCIsICIuLi8uLi94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcmVwbHku
eG1sIiwgZmFsc2UpOwogICAgICAgICAgICAgeGhyQ2hpbGQuWEhSLnNlbmQoIiIpOwogCkBAIC0y
Niw3ICsyNSw3IEBACiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3
aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3QgdXNpbmcgYWRk
RXZlbnRMaXN0ZW5lciwgCiAgICAgICAgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3By
b2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxl
cnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFu
ZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xl
LjwvcD4KKyAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBubyB3YXJu
aW5ncyBhcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KICAgICA8aWZyYW1lIGlkPSJ0YXJn
ZXRDaGlsZCIgc3JjPSIiPjwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvY2hp
bGRXaXRoWE1MSHR0cFJlcXVlc3QuaHRtbCIgb25sb2FkPSJvbmxvYWRGb3JYSFJDaGlsZCgpOyI+
PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1M
SHR0cFJlcXVlc3Qtc2hvcnRjdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc4MTYpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVz
dC1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1D
T05TT0xFIE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdp
biAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGNyb3NzLW9yaWdpbiBm
cmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLVRoaXMgdGVz
dHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBYTUxI
dHRwUmVxdWVzdCB3aXRoIHRoZSBzaG9ydGN1dCAob25yZWFkeXN0YXRlY2hhbmdlKSwgaXMgdGhl
IHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNz
ZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJs
b2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9n
Z2VkIHRvIHRoZSBjb25zb2xlLgorVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0
aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGggdGhlIHNob3J0Y3V0
IChvbnJlYWR5c3RhdGVjaGFuZ2UpLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJv
YmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0
IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIG5vIHdhcm5p
bmdzIGFyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzc4MTYpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVz
dC1zaG9ydGN1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiA8Ym9keT4K
ICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0
ZW5lcnMgb24gYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCB0aGUgc2hvcnRjdXQgKG9ucmVhZHlzdGF0
ZWNoYW5nZSksIAogICAgICAgIGlzIHRoZSByZXF1ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVt
LzU0MjYxNDIpLiAgVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRp
YWxvZyB3aXRoCi0gICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4g
IlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+
CisgICAgICAgdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgbm8gd2FybmluZ3Mg
YXJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS48L3A+CiAgICAgPGlmcmFtZSBpZD0idGFyZ2V0Q2hp
bGQiIHNyYz0iIj48L2lmcmFtZT4KICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2NoaWxkV2l0
aFhNTEh0dHBSZXF1ZXN0Lmh0bWwiIG9ubG9hZD0ib25sb2FkRm9yWEhSQ2hpbGQoKTsiPjwvaWZy
YW1lPgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0
ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mt
d2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
NzgxNikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdp
bmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBCbG9ja2Vk
IGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3Np
bmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11
c3QgbWF0Y2guCi1UaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRM
aXN0ZW5lcnMgb24gdGhlIHdpbmRvdyB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRoZSB3aW5k
b3cncyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlm
IHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxo
b3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0
byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBl
dmVudExpc3RlbmVycyBvbiB0aGUgd2luZG93IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgaXMgdGhl
IHdpbmRvdydzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNz
ZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJs
b2NhbGhvc3QiIGluIGl0IGFuZCBubyB3YXJuaW5ncyBhcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xl
LgogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNz
LXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1h
ZGRFdmVudExpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NzgxNikKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlz
dGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogPGJvZHk+CiAgICAg
PHA+VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJz
IG9uIHRoZSB3aW5kb3cgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcyAKICAgICAgICB0aGUgd2lu
ZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gIFRoaXMgdGVzdCBwYXNzZXMg
aWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aAotICAgICAgIHRoZSBkb21haW4g
b2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBp
cyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9wPgorICAgICAgIHRoZSBkb21haW4gb2YgImxvY2Fs
aG9zdCIgaW4gaXQgYW5kIG5vIHdhcm5pbmdzIGFyZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuPC9w
PgogICAgIDxpZnJhbWUgaWQ9InRhcmdldENoaWxkIiBzcmM9IiI+PC9pZnJhbWU+CiAgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9jaGlsZFdpbmRvdy5odG1sIiBvbmxvYWQ9Im9ubG9hZEZvckNo
aWxkKCk7Ij48L2lmcmFtZT4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Nzgx
NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRv
dy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdp
dGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mt
b3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgot
VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9u
IHRoZSB3aW5kb3cgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIGlzIHRoZSB3aW5k
b3cncyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlm
IHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxo
b3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0
byB0aGUgY29uc29sZS4KK1RoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBl
dmVudExpc3RlbmVycyBvbiB0aGUgd2luZG93IHdpdGggdGhlIHNob3J0Y3V0IChvbmNsaWNrLCBl
dGMpLCBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhp
cyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBk
b21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIG5vIHdhcm5pbmdzIGFyZSBsb2dnZWQgdG8g
dGhlIGNvbnNvbGUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9s
aXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGlj
ay1zaG9ydGN1dC5odG1sCShyZXZpc2lvbiAyNzc4MTYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiA8Ym9keT4KICAgICA8cD5UaGlzIHRlc3Rz
IHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZlbnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRv
dyB3aXRoIHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRjKSwgCiAgICAgICAgaXMgdGhlIHdpbmRv
dydzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuICBUaGlzIHRlc3QgcGFzc2VzIGlm
IHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGgKLSAgICAgICB0aGUgZG9tYWluIG9m
ICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMg
bG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4KKyAgICAgICB0aGUgZG9tYWluIG9mICJsb2NhbGhv
c3QiIGluIGl0IGFuZCBubyB3YXJuaW5ncyBhcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLjwvcD4K
ICAgICA8aWZyYW1lIGlkPSJ0YXJnZXRDaGlsZCIgc3JjPSIiPjwvaWZyYW1lPgogICAgIDxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvY2hpbGRXaW5kb3cuaHRtbCIgb25sb2FkPSJvbmxvYWRGb3JDaGls
ZCgpOyI+PC9pZnJhbWU+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGlj
ay1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2Rl
LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAyNzc4MTYpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGls
ZC1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTgsNiArOCw3IEBACiAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAg
ICAgICBhbGVydChlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlz
dGVuZXIoImZvbyIsIGZ1bmN0aW9uKCkge30pOyAvLyBuby1vcCwgc2hvdWxkbid0IHRocm93CiAg
ICAgICAgIH0sIGZhbHNlKTsKIAogICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCI7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNl
cy90YXJnZXRDaGlsZC1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2Vz
L3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHJldmlzaW9u
IDI3NzgxNikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVz
b3VyY2VzL3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBACiAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKICAg
ICAgICAgICAgICAgICBhbGVydChlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZEV2
ZW50TGlzdGVuZXIoImZvbyIsIGZ1bmN0aW9uKCkge30pOyAvLyBuby1vcCwgc2hvdWxkbid0IHRo
cm93CiAgICAgICAgIH0KIAogICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCI7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90
YXJnZXRDaGlsZC1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMv
dGFyZ2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lv
biAyNzc4MTYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jl
c291cmNlcy90YXJnZXRDaGlsZC1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBACiAgICAgICAgICAgICB9IGNhdGNoKGUpIHsK
ICAgICAgICAgICAgICAgICBhbGVydChlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRp
c3BhdGNoRXZlbnQobmV3IEV2ZW50KCJmb28iKSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cK
ICAgICAgICAgfSwgZmFsc2UpOwogCiAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1s
IjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3Vy
Y2VzL3RhcmdldENoaWxkLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFy
Z2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRtbAkocmV2aXNpb24gMjc3ODE2KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFy
Z2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw2ICs4LDcgQEAKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgIGFs
ZXJ0KGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigi
Zm9vIiwgZnVuY3Rpb24oKSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cKICAgICAgICAg
fQogCiAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIjsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLXdp
bmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13
aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDI3NzgxNikKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3Rhcmdl
dENoaWxkLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtOCw2ICs4LDcgQEAKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAg
ICAgIGFsZXJ0KGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5l
cigiZm9vIiwgZnVuY3Rpb24oKSB7fSk7IC8vIG5vLW9wLCBzaG91bGRuJ3QgdGhyb3cKICAgICAg
ICAgfSwgZmFsc2UpOwogCiAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIjsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3Rh
cmdldENoaWxkLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hp
bGQtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAkocmV2aXNpb24gMjc3ODE2KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hp
bGQtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4
LDcgQEAKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgIGFsZXJ0KGUp
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImZv
byIpKTsgLy8gbm8tb3AsIHNob3VsZG4ndCB0aHJvdwogICAgICAgICB9CiAKICAgICAgICAgd2lu
ZG93LmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNzc4MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDUtMjAgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJJRExdIFJlbW92
ZSBbSW1wbGljaXRUaGlzXSBhbmQgW0N1c3RvbVByb3h5VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0
cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIzNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3Qt
aW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0
LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGlj
aXQtdGhpcy12YWx1ZS5hbnkuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12
YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNp
dC10aGlzLXZhbHVlLmFueS53b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZh
Y2UvYXVkaW93b3JrbGV0LXJlZ2lzdGVycHJvY2Vzc29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0
dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3Jr
bGV0LXJlZ2lzdGVycHJvY2Vzc29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzLmh0dHBzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBp
L3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3NvcnMvZHVtbXktcHJvY2Vzc29yLWds
b2JhbHRoaXMuanM6IEFkZGVkLgorCiAyMDIxLTA1LTIwICBGZWxpcGUgRXJpYXMgIDxmZWxpcGVl
cmlhc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0gV3JvbmcgaGVpZ2h0IG9m
IGFuIGVtcHR5IHRhYmxlIGluc2lkZSBhbiBvcnRob2dvbmFsIGZsZXggcGFyZW50CkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQt
dGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACisKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRl
ciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAorUEFTUyBHbG9iYWwg
b2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0
CitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGlu
Y29tcGF0aWJsZSBvYmplY3QKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hl
biBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAoZG9jdW1lbnQuYWxsKQorUEFTUyBHbG9i
YWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2Jq
ZWN0IChkb2N1bWVudC5hbGwpCitQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dz
IHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkKK0ZBSUwg
R2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZp
bmVkIFRoZSBXaW5kb3cubG9jYXRpb24gZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mIFdpbmRvdworRkFJTCBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2Fs
bGVkIG9uIG51bGwgLyB1bmRlZmluZWQgVGhlIFdpbmRvdy5vbm9ubGluZSBzZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93CitQQVNTIEdsb2JhbCBvYmplY3QncyBv
cGVyYXRpb24gd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFs
dWUuYW55Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3Qt
aW1wbGljaXQtdGhpcy12YWx1ZS5hbnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBA
Cis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dl
YklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVl
LmFueS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNp
dC10aGlzLXZhbHVlLmFueS5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFs
LW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDg1IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcgorCisvLyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLWdldHRlciAoc3RlcCAxLjEuMi4x
KQorLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0
ZXIgKHN0ZXAgNC41LjEpCisvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4t
Y3JlYXRlLW9wZXJhdGlvbi1mdW5jdGlvbiAoc3RlcCAyLjEuMi4xKQorCitjb25zdCBub3RHbG9i
YWxPYmplY3QgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlz
KSk7CisKK3Rlc3QoKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9
PiB7IE9iamVjdC5jcmVhdGUoZ2xvYmFsVGhpcykuc2VsZjsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJsb2Nh
dGlvbiIpLmdldC5jYWxsKG5vdEdsb2JhbE9iamVjdCk7IH0pOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3QuZ2V0KGdsb2JhbFRoaXMsICJuYXZpZ2F0b3Ii
LCBub3RHbG9iYWxPYmplY3QpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyBuZXcgUHJveHkoZ2xvYmFsVGhpcywge30pLm9uZXJyb3I7IH0pOworfSwgIkdsb2Jh
bCBvYmplY3QncyBnZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmpl
Y3QiKTsKKwordGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsgT2JqZWN0LmNyZWF0ZShnbG9iYWxUaGlzKS5vcmlnaW4gPSBvcmlnaW47IH0pOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldEdsb2JhbFByb3BlcnR5RGVz
Y3JpcHRvcigib25lcnJvciIpLnNldC5jYWxsKG5vdEdsb2JhbE9iamVjdCwgb25lcnJvcik7IH0p
OworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IFJlZmxlY3Quc2V0KGds
b2JhbFRoaXMsICJvbm9mZmxpbmUiLCBvbm9mZmxpbmUsIG5vdEdsb2JhbE9iamVjdCk7IH0pOwor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IG5ldyBQcm94eShnbG9iYWxU
aGlzLCB7fSkub25vbmxpbmUgPSBvbm9ubGluZTsgfSk7Cit9LCAiR2xvYmFsIG9iamVjdCdzIHNl
dHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCIpOworCit0ZXN0
KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBPYmplY3Qu
Y3JlYXRlKGdsb2JhbFRoaXMpLnNldEludGVydmFsKCgpID0+IHt9LCAxMDApOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBjbGVhclRpbWVvdXQuY2FsbChub3RH
bG9iYWxPYmplY3QsICgpID0+IHt9KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IHsgUmVmbGVjdC5hcHBseShidG9hLCBub3RHbG9iYWxPYmplY3QsIFsiIl0pOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBuZXcgUHJveHkoZ2xv
YmFsVGhpcywge30pLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvbyIsICgpID0+IHt9KTsgfSk7Cit9
LCAiR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21w
YXRpYmxlIG9iamVjdCIpOworCitpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIikg
eworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgImRvY3VtZW50
IikuZ2V0LmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAgfSwgIkdsb2JhbCBvYmplY3QncyBn
ZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50
LmFsbCkiKTsKKworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywg
Im5hbWUiKS5zZXQuY2FsbChkb2N1bWVudC5hbGwpOyB9KTsKKyAgICB9LCAiR2xvYmFsIG9iamVj
dCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAoZG9j
dW1lbnQuYWxsKSIpOworCisgICAgdGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGZvY3VzLmNhbGwoZG9jdW1lbnQuYWxsKTsgfSk7CisgICAg
fSwgIkdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29t
cGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkiKTsKK30KKworLy8gQW4gZW5naW5lIG1pZ2h0
IGhhdmUgZGlmZmVyZW50IGNvZGUgcGF0aCBmb3IgY2FsbGluZyBhIGZ1bmN0aW9uIGZyb20gb3V0
ZXIgc2NvcGUgdG8gaW1wbGVtZW50IHN0ZXAgMS5iLmlpaSBvZiBodHRwczovL3RjMzkuZXMvZWNt
YTI2Mi8jc2VjLWV2YWx1YXRlY2FsbAorY29uc3QgbG9jYXRpb25HZXR0ZXIgPSBnZXRHbG9iYWxQ
cm9wZXJ0eURlc2NyaXB0b3IoImxvY2F0aW9uIikuZ2V0OwordGVzdCgoKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhnZXRHbG9iYWxQcm9wZXJ0eURlc2NyaXB0b3IoInNlbGYiKS5nZXQuY2FsbChu
dWxsKSwgc2VsZik7CisgICAgYXNzZXJ0X2VxdWFscygoKCkgPT4gbG9jYXRpb25HZXR0ZXIoKSko
KSwgbG9jYXRpb24pOworICAgIGFzc2VydF9lcXVhbHMoUmVmbGVjdC5nZXQoZ2xvYmFsVGhpcywg
Im9yaWdpbiIsIG51bGwpLCBvcmlnaW4pOworICAgIGFzc2VydF9lcXVhbHMoUmVmbGVjdC5nZXQo
Z2xvYmFsVGhpcywgIm9ub2ZmbGluZSIsIHVuZGVmaW5lZCksIG9ub2ZmbGluZSk7Cit9LCAiR2xv
YmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVk
Iik7CisKK3Rlc3QoKCkgPT4geworICAgIGNvbnN0IGZuID0gKCkgPT4ge307CisKKyAgICAvLyBv
cmlnaW4gaXMgW1JlcGxhY2VhYmxlXQorICAgIGdldEdsb2JhbFByb3BlcnR5RGVzY3JpcHRvcigi
b3JpZ2luIikuc2V0LmNhbGwobnVsbCwgImZvbyIpOworICAgIGFzc2VydF9lcXVhbHMob3JpZ2lu
LCAiZm9vIik7CisgICAgZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJvbmVycm9yIikuc2V0
LmNhbGwodW5kZWZpbmVkLCBmbik7CisgICAgYXNzZXJ0X2VxdWFscyhvbmVycm9yLCBmbik7Cisg
ICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXQoZ2xvYmFsVGhpcywgIm9ub2ZmbGluZSIsIGZuLCBu
dWxsKSk7CisgICAgYXNzZXJ0X2VxdWFscyhvbm9mZmxpbmUsIGZuKTsKKworICAgIGNvbnN0IG9u
b25saW5lU2V0dGVyID0gZ2V0R2xvYmFsUHJvcGVydHlEZXNjcmlwdG9yKCJvbm9ubGluZSIpLnNl
dDsKKyAgICAoKCkgPT4geyBvbm9ubGluZVNldHRlcihmbik7IH0pKCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhvbm9ubGluZSwgZm4pOworfSwgIkdsb2JhbCBvYmplY3QncyBzZXR0ZXIgd29ya3Mgd2hl
biBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworCisvLyBBbiBlbmdpbmUgbWlnaHQgaGF2
ZSBkaWZmZXJlbnQgY29kZSBwYXRoIGZvciBjYWxsaW5nIGEgZnVuY3Rpb24gZnJvbSBvdXRlciBz
Y29wZSB0byBpbXBsZW1lbnQgc3RlcCAxLmIuaWlpIG9mIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYy
LyNzZWMtZXZhbHVhdGVjYWxsCitjb25zdCBfX2FkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExp
c3RlbmVyOwordGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhhdG9iLmNhbGwobnVsbCwg
IiIpLCAiIik7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgKDAsIHNldEludGVydmFsKSgoKSA9
PiB7fSwgMTAwKSwgIm51bWJlciIpOworCisgICAgKCgpID0+IHsgX19hZGRFdmVudExpc3RlbmVy
KCJmb28iLCBldmVudCA9PiB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH0pOyB9KSgpOworICAg
IGNvbnN0IF9fZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnQ7CisgICAgKCgpID0+IHsgYXNz
ZXJ0X2ZhbHNlKF9fZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImZvbyIsIHsgY2FuY2VsYWJsZTog
dHJ1ZSB9KSkpOyB9KSgpOworfSwgIkdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gd29ya3Mgd2hl
biBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCIpOworCitmdW5jdGlvbiBnZXRHbG9iYWxQcm9w
ZXJ0eURlc2NyaXB0b3Ioa2V5KSB7CisgICAgZm9yIChsZXQgb2JqID0gZ2xvYmFsVGhpczsgb2Jq
OyBvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSkgeworICAgICAgICBjb25zdCBkZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7CisgICAgICAgIGlm
IChkZXNjKSByZXR1cm4gZGVzYzsKKyAgICB9Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFs
LW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2Vi
SURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUu
YW55Lndvcmtlci1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ds
b2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKworUEFTUyBHbG9iYWwgb2JqZWN0J3MgZ2V0
dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CitQQVNTIEdsb2Jh
bCBvYmplY3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmpl
Y3QKK1BBU1MgR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24g
aW5jb21wYXRpYmxlIG9iamVjdAorRkFJTCBHbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHdvcmtzIHdo
ZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgVGhlIFdvcmtlckdsb2JhbFNjb3BlLmxvY2F0
aW9uIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXb3JrZXJHbG9iYWxT
Y29wZQorRkFJTCBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51
bGwgLyB1bmRlZmluZWQgVGhlIFdvcmtlckdsb2JhbFNjb3BlLm9ub25saW5lIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXb3JrZXJHbG9iYWxTY29wZQorUEFTUyBHbG9i
YWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmlu
ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1
ZS5hbnkud29ya2VyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmpl
Y3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2Vy
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1yZWdpc3RlcnByb2Nlc3Nvci1j
YWxsZWQtb24tZ2xvYmFsdGhpcy5odHRwcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVk
aW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1yZWdpc3RlcnBy
b2Nlc3Nvci1jYWxsZWQtb24tZ2xvYmFsdGhpcy5odHRwcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xl
dC1yZWdpc3RlcnByb2Nlc3Nvci1jYWxsZWQtb24tZ2xvYmFsdGhpcy5odHRwcy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgIyBBVURJVCBUQVNLIFJV
Tk5FUiBTVEFSVEVELgorUEFTUyBFeGVjdXRpbmcgInJlZ2lzdGVycHJvY2Vzc29yLWNhbGxlZC1v
bi1nbG9iYWx0aGlzIgorUEFTUyBBdWRpdCByZXBvcnQKK1BBU1MgPiBbcmVnaXN0ZXJwcm9jZXNz
b3ItY2FsbGVkLW9uLWdsb2JhbHRoaXNdCitQQVNTICAgImR1bW15V29ya2xldE5vZGUiIGlzIGFu
IGluc3RhbmNlIG9mIEF1ZGlvV29ya2xldE5vZGUgaXMgdHJ1ZS4KK1BBU1MgPCBbcmVnaXN0ZXJw
cm9jZXNzb3ItY2FsbGVkLW9uLWdsb2JhbHRoaXNdIEFsbCBhc3NlcnRpb25zIHBhc3NlZC4gKHRv
dGFsIDEgYXNzZXJ0aW9ucykKK1BBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogMSB0
YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LgorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xl
dC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXJlZ2lzdGVycHJvY2Vzc29yLWNhbGxlZC1vbi1nbG9i
YWx0aGlzLmh0dHBzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmts
ZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1yZWdpc3RlcnByb2Nlc3Nvci1jYWxsZWQtb24tZ2xv
YmFsdGhpcy5odHRwcy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93
b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtcmVnaXN0ZXJwcm9jZXNzb3ItY2FsbGVkLW9u
LWdsb2JhbHRoaXMuaHR0cHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+CisgICAgICBUZXN0
IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlJ3MgcmVnaXN0ZXJQcm9jZXNzb3IoKSBjYWxsZWQgb24g
Z2xvYmFsVGhpcworICAgIDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3dlYmF1ZGlvL3Jl
c291cmNlcy9hdWRpdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNj
cmlwdCBpZD0ibGF5b3V0LXRlc3QtY29kZSI+CisgICAgICBjb25zdCBhdWRpdCA9IEF1ZGl0LmNy
ZWF0ZVRhc2tSdW5uZXIoKTsKKyAgICAgIGNvbnN0IHJlYWx0aW1lQ29udGV4dCA9IG5ldyBBdWRp
b0NvbnRleHQoKTsKKyAgICAgIGNvbnN0IGZpbGVQYXRoID0gJ3Byb2Nlc3NvcnMvZHVtbXktcHJv
Y2Vzc29yLWdsb2JhbHRoaXMuanMnOworCisgICAgICBhdWRpdC5kZWZpbmUoJ3JlZ2lzdGVycHJv
Y2Vzc29yLWNhbGxlZC1vbi1nbG9iYWx0aGlzJywgKHRhc2ssIHNob3VsZCkgPT4geworICAgICAg
ICByZWFsdGltZUNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZShmaWxlUGF0aCkudGhlbigo
KSA9PiB7CisgICAgICAgICAgY29uc3QgZHVtbXlXb3JrbGV0Tm9kZSA9IG5ldyBBdWRpb1dvcmts
ZXROb2RlKHJlYWx0aW1lQ29udGV4dCwgJ2R1bW15LWdsb2JhbHRoaXMnKTsKKyAgICAgICAgICBz
aG91bGQoZHVtbXlXb3JrbGV0Tm9kZSBpbnN0YW5jZW9mIEF1ZGlvV29ya2xldE5vZGUsCisgICAg
ICAgICAgICAnImR1bW15V29ya2xldE5vZGUiIGlzIGFuIGluc3RhbmNlIG9mIEF1ZGlvV29ya2xl
dE5vZGUnKS5iZVRydWUoKTsKKyAgICAgICAgICB0YXNrLmRvbmUoKTsKKyAgICAgICAgfSk7Cisg
ICAgICB9KTsKKworICAgICAgYXVkaXQucnVuKCk7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9j
ZXNzb3JzL2R1bW15LXByb2Nlc3Nvci1nbG9iYWx0aGlzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlv
LWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzb3JzL2R1bW15LXByb2Nlc3Nv
ci1nbG9iYWx0aGlzLmpzCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3Jr
bGV0LWludGVyZmFjZS9wcm9jZXNzb3JzL2R1bW15LXByb2Nlc3Nvci1nbG9iYWx0aGlzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIER1bW15UHJvY2Vzc29yIGV4dGVu
ZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgc3VwZXIo
KTsKKyAgfQorCisgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CisgICAg
Ly8gRG9lc24ndCBkbyBhbnl0aGluZyBoZXJlLgorICAgIHJldHVybiB0cnVlOworICB9Cit9CisK
K2dsb2JhbFRoaXMucmVnaXN0ZXJQcm9jZXNzb3IoJ2R1bW15LWdsb2JhbHRoaXMnLCBEdW1teVBy
b2Nlc3Nvcik7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJv
dG90eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0
eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3ODE2KQor
KysgTGF5b3V0VGVzdHMvanMvcHJvcGVydHktb2Ytd2luZG93LWFzLXByb3RvdHlwZS1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw0ICswLDAgQEAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9wcm9w
ZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcHJvcGVydHktb2Ytd2luZG93LWFzLXByb3RvdHlwZS5odG1sCShyZXZpc2lvbiAyNzc4
MTYpCisrKyBMYXlvdXRUZXN0cy9qcy9wcm9wZXJ0eS1vZi13aW5kb3ctYXMtcHJvdG90eXBlLmh0
bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxz
Y3JpcHQ+Ci0vLyBTbyBsb25nIGFzIHRoZSBsaW5lIGJlbG93IGRvZXNuJ3QgY3Jhc2gsIHRoaXMg
dGVzdCBwYXNzZXMuCi1PYmplY3QuY3JlYXRlKHdpbmRvdykubG9jYXRpb247Ci08L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="450338"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>