<?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>232840</bug_id>
          
          <creation_ts>2021-11-08 13:09:42 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 18/23] Remove the result FilterImage from FilterEffect</short_desc>
          <delta_ts>2022-01-07 14:22:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1812784</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-08 13:09:42 -0800</bug_when>
    <thetext>A FilterEffect should be applied to any input FilterImages and results a FilterImage. These FilterImages will managed by the Filter class and should be cached by the creator of the source ImageBuffer. In the case of the GPU Process, they will be cached by RemoteResourceCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815191</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-15 13:11:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/85425842&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827896</commentid>
    <comment_count>2</comment_count>
      <attachid>448280</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-04 04:12:42 -0800</bug_when>
    <thetext>Created attachment 448280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827976</commentid>
    <comment_count>3</comment_count>
      <attachid>448302</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-04 09:38:37 -0800</bug_when>
    <thetext>Created attachment 448302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828182</commentid>
    <comment_count>4</comment_count>
      <attachid>448302</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-04 21:48:21 -0800</bug_when>
    <thetext>Comment on attachment 448302
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FilterResults.cpp:40
&gt; +    for (auto input : inputs) {

Using &quot;auto&quot; here means we copy each Ref&lt;FilterImage&gt;. I think that instead we should use &quot;auto&amp;&quot; and save a bit of reference count churn.

&gt; Source/WebCore/platform/graphics/filters/FilterResults.cpp:46
&gt; +        auto addResult = m_resultReferences.ensure(input, [] {
&gt; +            return FilterEffectSet();
&gt; +        });
&gt; +
&gt; +        auto&amp; references = addResult.iterator-&gt;value;
&gt; +        references.add(effect);

This can just use add, because FilterEffectSet() is a null pointer, very cheap to construct and destruct. Can write this as a one-liner.

    m_resultReferences.add(input, { }).iterator-&gt;value.add(effect);

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:52
&gt; +    void appendEffectToEffectRenderer(FilterEffect*, RenderObject*);

This should take a FilterEffect&amp; instead of a FilterEffect*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828946</commentid>
    <comment_count>5</comment_count>
      <attachid>448605</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-07 09:46:49 -0800</bug_when>
    <thetext>Created attachment 448605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829071</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-07 14:22:16 -0800</bug_when>
    <thetext>Committed r287782 (245842@main): &lt;https://commits.webkit.org/245842@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448605.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448280</attachid>
            <date>2022-01-04 04:12:42 -0800</date>
            <delta_ts>2022-01-04 09:38:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232840-20220104041241.patch</filename>
            <type>text/plain</type>
            <size>46992</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTExMmM2MGUxMDU0N2Vj
ODgwY2ViODgyYTk2NDFjMzY5ZjBmY2VlZC4uODIyZTRkNTEzYTNjODZiN2I0OGQ4ZjYwY2U0ODVl
OWEzOWI3OWY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIyLTAxLTA0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UmVtb3ZlIHRoZSByZXN1bHQgRmlsdGVySW1hZ2UgZnJvbSBGaWx0ZXJFZmZlY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0MAorICAgICAgICBy
ZGFyOi8vODU0MjU4NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmluZyB0aGUgcmVzdWx0IEZpbHRlckltYWdlIGZyb20gRmlsdGVyRWZmZWN0
IHdpbGwgYWxsb3cgcmV1c2luZyB0aGUKKyAgICAgICAgc2FtZSBGaWx0ZXJFZmZlY3QgZm9yIGFs
bCB0aGUgcmVuZGVyZXJzIHRoYXQgcmVmZXJlbmNlIGl0LiBUaGUgcmVzdWx0cyAKKyAgICAgICAg
d2lsbCBub3cgYmUgc3RvcmVkIGluIHRoZSBuZXcgY2xhc3MgJ0ZpbHRlclJlc3VsdHMnLgorCisg
ICAgICAgIC0tIEZpbHRlckRhdGEgc3RpbGwga2VlcHMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcg
dGhlIEZpbHRlciB0byBpdHMKKyAgICAgICAgICAgcmVuZGVyZXIgaW4gYSBuZXcgbWVtYmVyIG9m
IHR5cGUgRmlsdGVyUmVzdWx0cy4KKworICAgICAgICAtLSBSZW5kZXJMYXllckZpbHRlcnMgd2ls
bCBub3QgbmVlZCB0byBjbGVhciBpdHMgQ1NTRmlsdGVyIGludGVybWVkaWF0ZQorICAgICAgICAg
ICByZXN1bHRzIGJlY2F1c2UgdGhpcyB3aWxsIGhhcHBlbiBvbmNlIHRoZSB0ZW1wb3JhcnkgRmls
dGVyUmVzdWx0cyBnb2VzCisgICAgICAgICAgIG91dCBvZiBzY29wZS4KKworICAgICAgICBGaWx0
ZXJSZXN1bHRzIHdpbGwgaGF2ZSB0d28gbWFwczoKKworICAgICAgICAxLiBGaWx0ZXJFZmZlY3Qg
LT4gRmlsdGVySW1hZ2U6IFRoZSB2YWx1ZSBpcyB0aGUgcmVzdWx0IEZpbHRlckltYWdlIG9mIAor
ICAgICAgICAgICBhcHBseWluZyB0aGUgRmlsdGVyRWZmZWN0LgorICAgICAgICAyLiBGaWx0ZXJJ
bWFnZSAtPiBGaWx0ZXJFZmZlY3RTZXQ6IFRoZSB2YWx1ZSBpcyBhIGxpc3Qgb2YgRmlsdGVyRWZm
ZWN0cywKKyAgICAgICAgICAgd2hvc2UgRmlsdGVySW1hZ2VzIGRlcGVuZCBvbiB0aGUga2V5IEZp
bHRlckltYWdlLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpoYXNSZXN1bHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpmaWx0ZXJJbWFnZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJG
dW5jdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmFwcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpvdXRzZXRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpjbGVhclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzOjplZmZlY3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6c2V0RWZmZWN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlclJlc3VsdHM6OmNsZWFyRWZmZWN0UmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaDogQWRkZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRz
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckZpbHRlcnM6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6Y2xlYXJS
ZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6c2V0dXBCdWlsdGluRWZmZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVmZmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9F
ZmZlY3RSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjphcHBl
bmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6bGFzdEVmZmVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjplZmZlY3RSZWZlcmVuY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZEJ1aWx0aW5F
ZmZlY3RzKTogRGVsZXRlZC4KKwogMjAyMi0wMS0wMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICAiYW5pbWF0aW9uIiBzaG9ydGhhbmQgZG9lcyBub3QgcGFy
c2UgdmFsdWVzIGluIHRoZSByaWdodCBvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MzUzMGE5MWMxMDA5YWY2
ODU1Y2E1YzNhYmRiMDYwNWNhOTg3YzM1Li4wM2Q2ZTEwNTZhMzA1ODRhMTliZjFjZmM2NmZmNjli
NTM0ODk5Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTA0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVt
b3ZlIHRoZSByZXN1bHQgRmlsdGVySW1hZ2UgZnJvbSBGaWx0ZXJFZmZlY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0MAorICAgICAgICByZGFy
Oi8vODU0MjU4NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyKToKKwogMjAyMi0wMS0wMSAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5j
b20+CiAKICAgICAgICAgVXBkYXRlIHVzZXItdmlzaWJsZSBjb3B5cmlnaHQgc3RyaW5ncyB0byBp
bmNsdWRlIDIwMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYmQ1YTc0NzljYjM5ZTQ2Y2M5MTA0MDBmNGVl
Mzg0OTMyNGM3NTMxZi4uMjkwMTVjNjBkZGE4Zjc1ZWYzOTQ5ZTkyZmJmMjY4NWFkYzllZmFiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIxMjEsNiArMjEyMSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUFscGhhLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDNjOWVjMjVjMGE5MjQ2MDZhZTJlYjMyNzY0YTE3OGRkY2M5NDQzZjguLmQ0NWZiNTdj
NGRlMjkyZWY2MDJmMzA0NmU2YWEwYzc4ZDUyZTY2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMzUsNiArMjMzNSw3IEBA
CiAJCTcyQjhCMDM1Mjc1MzQzODYwMEY3NTJBQSAvKiBGaWx0ZXJGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MkQ3NTYyNzJBMTc0MTAw
QzU2QTA5IC8qIEZpbHRlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCOEIwMzYyNzUzNDQxNDAwRjc1MkFBIC8qIEZpbHRlcklt
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQz
NUVGNDI3M0QwNzY3MDAwNUU3RUUgLyogRmlsdGVySW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzJENzM2NDQyNzg0NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVG
OCAvKiBGaWx0ZXJSZXN1bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dn
aW5nRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MkY2NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZF
ODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4
MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMw
MDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQu
aCAqLzsgfTsKQEAgLTExMjE0LDYgKzExMjE1LDggQEAKIAkJNzFGNkVFNDEyNTVFREY5QzAwRkM0
QzVCIC8qIEdyaWRUcmFja1NpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JpZFRyYWNrU2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
RjkzNkY3MURENEY5OUIwMDkyMkNDNyAvKiB0cmFja3Mtc3VwcG9ydC5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJ0cmFja3Mtc3VwcG9ydC5qcyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkY4NTE4MjJBM0Y4MUYwMDVENTk1OSAvKiBOYXZpZ2F0
b3JNYXhUb3VjaFBvaW50cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9yTWF4
VG91Y2hQb2ludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjExQjVENjI3
NjUzNjgyMDA3NkZFRjggLyogRmlsdGVyUmVzdWx0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJS
ZXN1bHRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTFCNUQ4Mjc2NTQ0ODUw
MDc2RkVGOCAvKiBGaWx0ZXJSZXN1bHRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlclJl
c3VsdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjE0NDM0NTIyNDBDOEJB
MDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
MTRCOUI3Mjc0NDU4RkEwMDNCRTZERiAvKiBGaWx0ZXJFZmZlY3RWZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmlsdGVyRWZmZWN0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjc4NCw2ICsyNjc4Nyw4IEBACiAJCQkJNDlFQ0VCNjQxNDk5NzkwRDAwQ0REM0E0IC8qIEZp
bHRlck9wZXJhdGlvbi5oICovLAogCQkJCTQ5RUNFQjY1MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmls
dGVyT3BlcmF0aW9ucy5oICovLAorCQkJCTcyMTFCNUQ4Mjc2NTQ0ODUwMDc2RkVGOCAvKiBGaWx0
ZXJSZXN1bHRzLmNwcCAqLywKKwkJCQk3MjExQjVENjI3NjUzNjgyMDA3NkZFRjggLyogRmlsdGVy
UmVzdWx0cy5oICovLAogCQkJCTg0NzMwRDc0MTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNvdXJj
ZS5oICovLAogCQkJCUExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNl
LmNwcCAqLywKIAkJCQk4NDczMEQ3NTEyNDhGMEIzMDBEM0E5QzkgLyogUG9pbnRMaWdodFNvdXJj
ZS5oICovLApAQCAtMzQzNzgsNiArMzQzODMsNyBAQAogCQkJCTcyNDY5NjNFMjc1QzYxNjcwMEE5
MTU2QSAvKiBGaWx0ZXJJbWFnZVZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkUx
NDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFQ0VCNzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyRDczNjQ0Mjc4NDYxQTAwMDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzJDMDBEOTEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRh
YmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkI3RDJERDI1MEZEODI4MDAwMjA3QUEg
LyogRmxleEZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRl
eCAyZmQ0MjI5YjcxMjdmMDQ5MGQ0MmQ1NDFlMTQ0YWQ2YTlkOGUxZmViLi5iOGFmYzk1MTFiZDkz
NzNhY2Y5MDhlNjU2NTE1ODgyZDJlOTgxZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0yNiw3ICsyNiw5
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlckltYWdlLmgiCisjaW5jbHVkZSAiRmlsdGVyUmVz
dWx0cy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIu
aCIKIApAQCAtMTQ2LDcgKzE0OCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlz
KS5mbHVzaERyYXdpbmdDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFw
cGx5KHRoaXMsIHsgeyB9LCBsb2dpY2FsU2l6ZSgpIH0pOworICAgICAgICAKKyAgICAgICAgRmls
dGVyUmVzdWx0cyByZXN1bHRzOworICAgICAgICBhdXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseSh0
aGlzLCB7IHsgfSwgbG9naWNhbFNpemUoKSB9LCByZXN1bHRzKTsKICAgICAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNDk0ODhjNTk5
NjMyMWZiZjY1MjIyNzdiYTBjOTY5ZTUwNzBmZDVkZC4uYWU1NmY1MDQ1NGIxMjk5MWVkNTQ3NDE3
YTlhM2RiMDA0YTFlNTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC02MzEsOSArNjMxLDkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+
IGltYWdlLCBjb25zdAogICAgIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKFdURk1vdmUoaW1h
Z2UpLCAqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNl
SW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImIGZpbHRlcikK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXIm
IGZpbHRlciwgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGZp
bHRlci5hcHBseShzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGZpbHRlci5hcHBseShzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCByZXN1bHRzKTsK
ICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAzMmVhMmVk
MTQ1MWM1NGI0Y2RlODEzMGE0OTM3ZTdkNTMyMDE2YTNmLi4xZWRkNDkzMmE2ZmE1MzA5NjIzM2I2
YzU0ZmQzZGMyNTllNDdlMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODYsNiArODYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZpbHRlcjsKK2NsYXNzIEZp
bHRlclJlc3VsdHM7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CkBAIC00NTIsNyArNDUzLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVy
KFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIq
IHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiwg
RmlsdGVyUmVzdWx0cyYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAwOWYyYjU3YzY0YThkMjFlMjk2NTFl
YWY1N2MxYzc3Nzk3Nzg2ZjVmLi4zMWFjOGI0YWQ3ZGJmNzJkYTM2NGEwNTU3NzZmNmIyOTc5YTQ2
OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0zMTIsOSArMzEy
LDkgQEAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY28KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UpCit2b2lkIERyYXdG
aWx0ZXJlZEltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdl
QnVmZmVyKiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cykKIHsKLSAgICBjb250
ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBtX3NvdXJjZUltYWdlUmVj
dCwgbV9maWx0ZXIpOworICAgIGNvbnRleHQuZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNl
SW1hZ2UsIG1fc291cmNlSW1hZ2VSZWN0LCBtX2ZpbHRlciwgcmVzdWx0cyk7CiB9CiAKIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3RmlsdGVy
ZWRJbWFnZUJ1ZmZlciYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4
IDgzNWIwMTJkNWZjMGI0OTYwNGVmM2FlYWJmNTExYWE2MWNiM2UyMjIuLmVmMGMxODc3ZDE5Mzhi
ZGMwNjEwNTRiOTQyZmE2MjgwYmM0N2YyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaApAQCAtNzM3LDcgKzczNyw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRpZmllci5pc1ZhbGlkKCk7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlQnVmZmVyJikgY29uc3Q7CiAKICAgICBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCkBAIC05
MjQsNyArOTI0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZUltYWdlUmVjdDsgfQogCiAgICAgTk9fUkVUVVJOX0RVRV9U
T19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkltYWdlQnVmZmVy
KiBzb3VyY2VJbWFnZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmLCBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIEZpbHRlclJlc3VsdHMmKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZVJlY3Q7
IH0KQEAgLTEwMzksNyArMTAzOSw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogV2UgbWlnaHQg
d2FudCB0byB2YWxpZGF0ZSBJbWFnZVBhaW50aW5nT3B0aW9ucy4KICAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRpZmllci5pc1ZhbGlkKCk7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6
SW1hZ2VCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYsIEltYWdlQnVmZmVyJikgY29uc3Q7CiAKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNzlmYzliN2MzY2RkNzJmYjg3MWUx
MTQ5NmU4NWNkNzY4ZWQwZjczMC4uZTAxMGM5ZDBlZjczYzEwNjRkMTFlMzI5ZDViMGJiMWYwZTQ0
YzFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTQ2
LDEyICsxNDYsMTIgQEAgdm9pZCBSZWNvcmRlcjo6c2V0TWl0ZXJMaW1pdChmbG9hdCBtaXRlckxp
bWl0KQogICAgIHJlY29yZFNldE1pdGVyTGltaXQobWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgUmVj
b3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRlciYgZmlsdGVyKQordm9pZCBS
ZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIsIEZpbHRl
clJlc3VsdHMmIHJlc3VsdHMpCiB7CiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKIAogICAgIGlmIChzb3VyY2VJbWFnZSAmJiAhY2FuRHJhd0ltYWdlQnVmZmVyKCpzb3Vy
Y2VJbWFnZSkpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1
ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBzb3VyY2VJ
bWFnZVJlY3QsIGZpbHRlciwgcmVzdWx0cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICApOwogCiAg
ICAgICAgIGlmICghaXNSZWNvcmRlZCkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0
ZXIpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIsIHJlc3VsdHMpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKaW5kZXggMDJhZTU3MDYxMmUzNGI4MjNmNjA3NGJmZWZkZTM2MGVlZTg3ZTYx
ZC4uMThkOTMzMzk1OTE4ZmRlMjE5YTIwYTZjMjFmZTQ1ZWIwNGEyNjBkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yMjUsNyArMjI1LDcgQEAgcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSBmaW5hbDsKICNlbmRp
ZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBG
aWx0ZXImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJ
bWFnZVJlY3QsIEZpbHRlciYsIEZpbHRlclJlc3VsdHMmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25l
ZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2Rl
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmNwcAppbmRleCA4MzZlMTNjOTc1Y2UwNmI0YTBkNGQ1YjA4ZmNhZTQ2YTYxN2Iy
NmJkLi40NmJiMzU2MmZiNTc2MjM4NGRhMWU2YzM0YTM4MzRiMTE5MjRmMjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCkBA
IC04MSw3ICs4MSw3IEBAIGJvb2wgRmlsdGVyOjpjbGFtcEZpbHRlclJlZ2lvbklmTmVlZGVkKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXI6OmFwcGx5
KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QpCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJj
ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyUmVzdWx0cyYg
cmVzdWx0cykKIHsKICAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGlucHV0OwogCkBAIC05Miw3ICs5
Miw3IEBAIFJlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVyOjphcHBseShJbWFnZUJ1ZmZlciogc291
cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGFwcGx5KGlucHV0LmdldCgpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFwcGx5KGlucHV0LmdldCgpLCByZXN1bHRzKTsKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4IDdjNTVmMzQzZjBiNjAwOWM2NTAy
ZWEyOWFiMTYxYjlmZTBiOGY0YWQuLjJmMzlmODgwYTAwZTZiMDRiYTliOTY1MjE3MWNiNjE2YmMz
MjJmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXIuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZpbHRlckVmZmVjdDsKIGNsYXNzIEZpbHRlckltYWdlOworY2xhc3MgRmlsdGVyUmVzdWx0czsK
IAogY2xhc3MgRmlsdGVyIDogcHVibGljIEZpbHRlckZ1bmN0aW9uIHsKICAgICB1c2luZyBGaWx0
ZXJGdW5jdGlvbjo6YXBwbHk7CkBAIC02NSw4ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
Y2xhbXBGaWx0ZXJSZWdpb25JZk5lZWRlZCgpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8RmlsdGVy
SW1hZ2U+IGFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSkgPSAwOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCk7CisgICAgdmlydHVhbCBSZWZQdHI8
RmlsdGVySW1hZ2U+IGFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0
cyYpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KElt
YWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3Qs
IEZpbHRlclJlc3VsdHMmKTsKIAogcHJvdGVjdGVkOgogICAgIHVzaW5nIEZpbHRlckZ1bmN0aW9u
OjpGaWx0ZXJGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA3Yzk1MWZlYTRiZGVkYjIx
OTAwNDFkZTcxYzJhMTdhNmJiNWQxNThlLi5iNTJlOTBjMmQ2ODVkOTQ2M2ZlMDc4MGI1M2Q5YTE2
ZDY5MGI2MzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0QXBwbGllci5oIgogI2luY2x1ZGUg
IkZpbHRlckVmZmVjdEdlb21ldHJ5LmgiCisjaW5jbHVkZSAiRmlsdGVyUmVzdWx0cy5oIgogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTk5LDE3ICsxMDAsMTcgQEAgdm9pZCBGaWx0ZXJFZmZl
Y3Q6OmNvcnJlY3RQcmVtdWx0aXBsaWVkSW5wdXRzKGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBp
bnB1dHMpIGMKICAgICAgICAgaW5wdXQtPmNvcnJlY3RQcmVtdWx0aXBsaWVkUGl4ZWxCdWZmZXIo
KTsKIH0KIAotUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXJFZmZlY3Q6OmFwcGx5KGNvbnN0IEZp
bHRlciYgZmlsdGVyLCBGaWx0ZXJJbWFnZSYgaW5wdXQpCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZp
bHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIEZpbHRlckltYWdlJiBpbnB1
dCwgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cykKIHsKLSAgICByZXR1cm4gYXBwbHkoZmlsdGVyLCBG
aWx0ZXJJbWFnZVZlY3RvciB7IFJlZiB7IGlucHV0IH0gfSk7CisgICAgcmV0dXJuIGFwcGx5KGZp
bHRlciwgRmlsdGVySW1hZ2VWZWN0b3IgeyBSZWYgeyBpbnB1dCB9IH0sIHJlc3VsdHMpOwogfQog
Ci1SZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8RmlsdGVyRWZmZWN0R2VvbWV0cnk+JiBnZW9tZXRyeSkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4g
RmlsdGVyRWZmZWN0OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1h
Z2VWZWN0b3ImIGlucHV0cywgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cywgY29uc3Qgc3RkOjpvcHRp
b25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4mIGdlb21ldHJ5KQogewogICAgIEFTU0VSVChpbnB1
dHMuc2l6ZSgpID09IG51bWJlck9mSW1hZ2VJbnB1dHMoKSk7CiAKLSAgICBpZiAobV9maWx0ZXJJ
bWFnZSkKLSAgICAgICAgcmV0dXJuIG1fZmlsdGVySW1hZ2U7CisgICAgaWYgKGF1dG8gcmVzdWx0
ID0gcmVzdWx0cy5lZmZlY3RSZXN1bHQoKnRoaXMpKQorICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgYXV0byBwcmltaXRpdmVTdWJyZWdpb24gPSBjYWxjdWxhdGVQcmltaXRpdmVTdWJyZWdp
b24oZmlsdGVyLCBpbnB1dHMsIGdlb21ldHJ5KTsKICAgICBhdXRvIGltYWdlUmVjdCA9IGNhbGN1
bGF0ZUltYWdlUmVjdChmaWx0ZXIsIGlucHV0cywgcHJpbWl0aXZlU3VicmVnaW9uKTsKQEAgLTEy
Niw4ICsxMjcsOCBAQCBSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29u
c3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVgogICAgIGlmICghYXBwbGllcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBtX2ZpbHRlckltYWdlID0gRmlsdGVySW1h
Z2U6OmNyZWF0ZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwgYWJzb2x1dGVJbWFnZVJl
Y3QsIGlzQWxwaGFJbWFnZSwgaXNWYWxpZFByZW11bHRpcGxpZWQsIGZpbHRlci5yZW5kZXJpbmdN
b2RlKCksIGltYWdlQ29sb3JTcGFjZSk7Ci0gICAgaWYgKCFtX2ZpbHRlckltYWdlKQorICAgIGF1
dG8gcmVzdWx0ID0gRmlsdGVySW1hZ2U6OmNyZWF0ZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdl
UmVjdCwgYWJzb2x1dGVJbWFnZVJlY3QsIGlzQWxwaGFJbWFnZSwgaXNWYWxpZFByZW11bHRpcGxp
ZWQsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQ29sb3JTcGFjZSk7CisgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZp
bHRlcnMsIHN0cmVhbQpAQCAtMTQxLDEwICsxNDIsMTEgQEAgUmVmUHRyPEZpbHRlckltYWdlPiBG
aWx0ZXJFZmZlY3Q6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFn
ZVYKICAgICBpZiAoaXNWYWxpZFByZW11bHRpcGxpZWQpCiAgICAgICAgIGNvcnJlY3RQcmVtdWx0
aXBsaWVkSW5wdXRzKGlucHV0cyk7CiAKLSAgICBpZiAoIWFwcGxpZXItPmFwcGx5KGZpbHRlciwg
aW5wdXRzLCAqbV9maWx0ZXJJbWFnZSkpCi0gICAgICAgIG1fZmlsdGVySW1hZ2UgPSBudWxscHRy
OworICAgIGlmICghYXBwbGllci0+YXBwbHkoZmlsdGVyLCBpbnB1dHMsICpyZXN1bHQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtX2ZpbHRlckltYWdlOworICAgIHJl
c3VsdHMuc2V0RWZmZWN0UmVzdWx0KCp0aGlzLCBpbnB1dHMsIHsgKnJlc3VsdCB9KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiBGaWx0ZXJFZmZlY3QmIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZl
Y3QodW5zaWduZWQgbnVtYmVyKSBjb25zdApAQCAtMTUzLDIwICsxNTUsNiBAQCBGaWx0ZXJFZmZl
Y3QmIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVyKSBjb25zdAogICAg
IHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpOwogfQogCi12b2lkIEZpbHRlckVmZmVj
dDo6Y2xlYXJSZXN1bHQoKQotewotICAgIG1fZmlsdGVySW1hZ2UgPSBudWxscHRyOwotfQotCi12
b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCkKLXsKLSAgICAvLyBDbGVh
ciBhbGwgcmVzdWx0cywgcmVnYXJkbGVzcyB0aGF0IHRoZSBjdXJyZW50IGVmZmVjdCBoYXMKLSAg
ICAvLyBhIHJlc3VsdC4gQ2FuIGJlIHVzZWQgaWYgYW4gZWZmZWN0IGlzIGluIGFuIGVycm9uZW91
cyBzdGF0ZS4KLSAgICBjbGVhclJlc3VsdCgpOwotICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9p
bnB1dEVmZmVjdHMpCi0gICAgICAgIGVmZmVjdC0+Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7Ci19
Ci0KIFRleHRTdHJlYW0mIEZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cywgRmlsdGVyUmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb24pIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkdW1wIHRoZSBzdWJSZWdpb25zIG9mIHRoZSBmaWx0
ZXIgcHJpbWl0aXZlcyBoZXJlIGxhdGVyLiBUaGlzIGlzbid0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAw
NjUyMDAxN2U5ZDIxZjdhZTc3MjMzMWVjY2FhMjcyN2RlMmFkOTAwLi41ZmZlZGM1MjEwYTM1N2Nj
YzFiOWQzZjFlYzY2OTRkMzU0YzdkOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTQzLDE3ICs0Mywx
MiBAQCBjbGFzcyBGaWx0ZXJFZmZlY3QgOiBwdWJsaWMgRmlsdGVyRnVuY3Rpb24gewogICAgIHVz
aW5nIEZpbHRlckZ1bmN0aW9uOjphcHBseTsKIAogcHVibGljOgotICAgIHZvaWQgY2xlYXJSZXN1
bHQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOwotICAgIGJv
b2wgaGFzUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJJbWFnZTsgfQotCi0gICAgUmVm
UHRyPEZpbHRlckltYWdlPiBmaWx0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVySW1h
Z2U7IH0KICAgICBGaWx0ZXJJbWFnZVZlY3RvciB0YWtlSW1hZ2VJbnB1dHMoRmlsdGVySW1hZ2VW
ZWN0b3ImIHN0YWNrKSBjb25zdDsKIAogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZl
Y3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZlY3QmIGlucHV0
RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKIAotICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHko
Y29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgY29uc3Qgc3Rk
OjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4mID0gc3RkOjpudWxsb3B0KTsKKyAgICBS
ZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdl
VmVjdG9yJiBpbnB1dHMsIEZpbHRlclJlc3VsdHMmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZpbHRl
ckVmZmVjdEdlb21ldHJ5PiYgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBvcGVyYXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVy
YXRpbmdDb2xvclNwYWNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3Bh
Y2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5n
Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KQEAgLTgzLDEyICs3OCwxMCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVh
dGVBcHBsaWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0ID0gMDsKIAotICAgIFJlZlB0cjxGaWx0ZXJJ
bWFnZT4gYXBwbHkoY29uc3QgRmlsdGVyJiwgRmlsdGVySW1hZ2UmIGlucHV0KSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIEZpbHRlckltYWdl
JiBpbnB1dCwgRmlsdGVyUmVzdWx0cyYpIG92ZXJyaWRlOwogCiAgICAgRmlsdGVyRWZmZWN0VmVj
dG9yIG1faW5wdXRFZmZlY3RzOwogCi0gICAgUmVmUHRyPEZpbHRlckltYWdlPiBtX2ZpbHRlcklt
YWdlOwotCiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmgK
aW5kZXggMDliN2U0MTRkZDg3NWJkMWI1NGJkYmRjMTcxMmFlMzQyYTBmNWJiMi4uYWIxOGIwODZl
OTdiNTMwMGQ3OThhOTlmNjE0Y2M3OGZmYzViNzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaApAQCAt
NDAsNiArNDAsNyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGaWx0ZXI7CitjbGFzcyBGaWx0ZXJSZXN1bHRzOwogCiBlbnVtIGNsYXNzIEZpbHRlclJl
cHJlc2VudGF0aW9uIDogdWludDhfdCB7CiAgICAgVGVzdE91dHB1dCwKQEAgLTk2LDkgKzk3LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUmVmUHRyPEZp
bHRlckltYWdlPiBhcHBseShjb25zdCBGaWx0ZXImLCBGaWx0ZXJJbWFnZSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoY29uc3QgRmls
dGVyJiwgRmlsdGVySW1hZ2UmLCBGaWx0ZXJSZXN1bHRzJikgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIHZpcnR1YWwgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3QgeyByZXR1cm4geyB9OyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyUmVzdWx0KCkgeyB9CiAKICAgICB2aXJ0dWFsIFdURjo6VGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBGaWx0ZXJS
ZXByZXNlbnRhdGlvbiA9IEZpbHRlclJlcHJlc2VudGF0aW9uOjpUZXN0T3V0cHV0KSBjb25zdCA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyUmVzdWx0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlclJlc3VsdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxYmIxY2QwOGE5MWE1NTNmNmVl
ZmZhOWY4MzkzYTMyOGI5MmNmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuY3BwCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbHRlclJlc3VsdHMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitGaWx0ZXJJbWFnZSogRmlsdGVyUmVzdWx0czo6ZWZmZWN0UmVzdWx0KEZpbHRl
ckVmZmVjdCYgZWZmZWN0KQoreworICAgIHJldHVybiBtX3Jlc3VsdHMuZ2V0KGVmZmVjdCk7Cit9
CisKK3ZvaWQgRmlsdGVyUmVzdWx0czo6c2V0RWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYgZWZm
ZWN0LCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBSZWY8RmlsdGVySW1hZ2U+JiYg
cmVzdWx0KQoreworICAgIG1fcmVzdWx0cy5zZXQoeyBlZmZlY3QgfSwgV1RGTW92ZShyZXN1bHQp
KTsKKyAgICAKKyAgICBmb3IgKGF1dG8gaW5wdXQgOiBpbnB1dHMpIHsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3Jlc3VsdFJlZmVyZW5jZXMuZW5zdXJlKGlucHV0LCBbXSB7CisgICAgICAg
ICAgICByZXR1cm4gRmlsdGVyRWZmZWN0U2V0KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1
dG8mIHJlZmVyZW5jZXMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICByZWZl
cmVuY2VzLmFkZChlZmZlY3QpOworICAgIH0KK30KKwordm9pZCBGaWx0ZXJSZXN1bHRzOjpjbGVh
ckVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9yZXN1bHRzLmZpbmQoZWZmZWN0KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXN1bHRz
LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZXJhdG9yLT52
YWx1ZTsKKyAgICBtX3Jlc3VsdHMucmVtb3ZlKGl0ZXJhdG9yKTsKKworICAgIGZvciAoYXV0byYg
cmVmZXJlbmNlIDogbV9yZXN1bHRSZWZlcmVuY2VzLmdldChyZXN1bHQpKQorICAgICAgICBjbGVh
ckVmZmVjdFJlc3VsdChyZWZlcmVuY2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
clJlc3VsdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyUmVzdWx0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOTJhOTIxYTQ5YjI5ZWE3NTI1YmEyMjVkOTE0NGVj
ZGM2NjM1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRmlsdGVySW1hZ2VWZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmls
dGVyRWZmZWN0OworY2xhc3MgRmlsdGVySW1hZ2U7CisKK2NsYXNzIEZpbHRlclJlc3VsdHMgewor
cHVibGljOgorICAgIEZpbHRlclJlc3VsdHMoKSA9IGRlZmF1bHQ7CisKKyAgICBGaWx0ZXJJbWFn
ZSogZWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYpOworICAgIHZvaWQgc2V0RWZmZWN0UmVzdWx0
KEZpbHRlckVmZmVjdCYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIFJlZjxGaWx0
ZXJJbWFnZT4mJiByZXN1bHQpOworICAgIHZvaWQgY2xlYXJFZmZlY3RSZXN1bHQoRmlsdGVyRWZm
ZWN0Jik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgRmlsdGVyRWZmZWN0U2V0ID0gSGFzaFNldDxS
ZWY8RmlsdGVyRWZmZWN0Pj47CisgICAgSGFzaE1hcDxSZWY8RmlsdGVyRWZmZWN0PiwgUmVmPEZp
bHRlckltYWdlPj4gbV9yZXN1bHRzOworICAgIC8vIFRoZSB2YWx1ZSBpcyBhIGxpc3Qgb2YgRmls
dGVyRWZmZWN0cywgd2hvc2UgRmlsdGVySW1hZ2VzIGRlcGVuZCBvbiB0aGUga2V5IEZpbHRlcklt
YWdlLgorICAgIEhhc2hNYXA8UmVmPEZpbHRlckltYWdlPiwgRmlsdGVyRWZmZWN0U2V0PiBtX3Jl
c3VsdFJlZmVyZW5jZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDg5OTYyMDYzMDQ5OThiNTM1MDdjNzI0NmM3
ZmFmNzViZDI3OGU2MjAuLjgwZmNiZTVhNDY5MDc5MzhhODRiZmUwMGNhNmQ0NTQ3NjZmYTA5NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0zODEsMTMgKzM4MSw3
IEBAIGJvb2wgQ1NTRmlsdGVyOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygpIGNvbnN0CiB9
CiAjZW5kaWYKIAotdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCi17
Ci0gICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKQotICAgICAgICBmdW5jdGlv
bi0+Y2xlYXJSZXN1bHQoKTsKLX0KLQotUmVmUHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFw
cGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gQ1NTRmls
dGVyOjphcHBseShGaWx0ZXJJbWFnZSogc291cmNlSW1hZ2UsIEZpbHRlclJlc3VsdHMmIHJlc3Vs
dHMpCiB7CiAgICAgaWYgKCFzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zOTUsNyArMzg5LDcgQEAgUmVmUHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFwcGx5KEZp
bHRlckltYWdlKiBzb3VyY2VJbWFnZSkKICAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IHJlc3VsdCA9
IHNvdXJjZUltYWdlOwogCiAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKSB7
Ci0gICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5hcHBseSgqdGhpcywgKnJlc3VsdCk7CisgICAg
ICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5hcHBseSgqdGhpcywgKnJlc3VsdCwgcmVzdWx0cyk7CiAg
ICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCmluZGV4IGJlYTJiMGJiNjI4N2M4MTFlNGUx
N2Q1YThhNDI3MmZkYzQzZTg1OGYuLmNmM2RiZGVlYWQ3ZWVjODg2ZGVkOTdmN2M2MDQwZTQ1MmUz
YTcyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTU3LDggKzU3LDcg
QEAgcHVibGljOgogCiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3QgZmluYWw7CiAKLSAg
ICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwotICAgIFJlZlB0cjxGaWx0ZXJJbWFn
ZT4gYXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJjZUltYWdlKSBmaW5hbDsKKyAgICBSZWZQdHI8Rmls
dGVySW1hZ2U+IGFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYp
IGZpbmFsOwogCiBwcml2YXRlOgogICAgIENTU0ZpbHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBib29sIGhhc0ZpbHRlclRoYXRN
b3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0
eU9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRl
cnMuY3BwCmluZGV4IDhjMjAzYTBjYjNiMDQ1MzNmNjk0MDJiMzg5N2FkNTI4ZDYxMGI0NzguLmYz
ZmY0NjM1YWYxMzAyOWFlYTQyYzRiZDYwNDgxNmE4Nzc1Y2M4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0yMjIsMTAgKzIyMiw4
IEBAIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKICAgICBBU1NFUlQoaW5wdXRDb250ZXh0KCkpOwog
ICAgIGlucHV0Q29udGV4dCgpLT5yZXN0b3JlKCk7CiAKLSAgICBhdXRvJiBmaWx0ZXIgPSAqbV9m
aWx0ZXI7Ci0KLSAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIo
bV9zb3VyY2VJbWFnZS5nZXQoKSwgbV9maWx0ZXJSZWdpb24sIGZpbHRlcik7Ci0gICAgZmlsdGVy
LmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOworICAgIEZpbHRlclJlc3VsdHMgcmVzdWx0czsK
KyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIobV9zb3VyY2VJ
bWFnZS5nZXQoKSwgbV9maWx0ZXJSZWdpb24sICptX2ZpbHRlciwgcmVzdWx0cyk7CiAKICAgICBM
T0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJSZW5kZXJMYXllckZpbHRlcnMgIiA8
PCB0aGlzIDw8ICIgYXBwbHlGaWx0ZXJFZmZlY3QgZG9uZVxuIik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
CmluZGV4IGVjNWFhYzEzMGFlNGU3ZGJiMWIyODI5YTMxMDQ3NTQ0NmZkNDA0YzMuLmJiZDY1YmNi
MzAyZTVlMWI3YzgxYjQ1MTlmNDM5ZmU2OTZhY2YyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0y
MTUsNyArMjE1LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVz
b3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKIAogICAgIGlmICghZmlsdGVy
RGF0YS5ib3VuZGFyaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0g
RmlsdGVyRGF0YTo6QnVpbHQ7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdGaWx0ZXJlZEltYWdlQnVm
ZmVyKGZpbHRlckRhdGEuc291cmNlR3JhcGhpY0J1ZmZlci5nZXQoKSwgZmlsdGVyRGF0YS5kcmF3
aW5nUmVnaW9uLCAqZmlsdGVyRGF0YS5maWx0ZXIpOworICAgICAgICBjb250ZXh0LT5kcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIuZ2V0KCksIGZp
bHRlckRhdGEuZHJhd2luZ1JlZ2lvbiwgKmZpbHRlckRhdGEuZmlsdGVyLCBmaWx0ZXJEYXRhLnJl
c3VsdHMpOwogICAgIH0KIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwg
IlJlbmRlclNWR1Jlc291cmNlRmlsdGVyICIgPDwgdGhpcyA8PCAiIHBvc3RBcHBseVJlc291cmNl
IGRvbmVcbiIpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvCiAg
ICAgICAgIC8vIG9yIG5vbmUgb2YgdGhlbSB3aWxsIGJlIGNoYW5nZWQuCiAgICAgICAgIGlmICgh
cHJpbWl0dmUtPnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShlZmZlY3QsIGF0dHJpYnV0ZSkpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJ1aWxkZXItPmNsZWFyUmVzdWx0c1JlY3Vyc2l2
ZSgqZWZmZWN0KTsKKyAgICAgICAgZmlsdGVyRGF0YS0+cmVzdWx0cy5jbGVhckVmZmVjdFJlc3Vs
dCgqZWZmZWN0KTsKIAogICAgICAgICAvLyBSZXBhaW50IHRoZSBpbWFnZSBvbiB0aGUgc2NyZWVu
LgogICAgICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKCpvYmplY3RGaWx0ZXJEYXRhUGFp
ci5rZXksIFJlcGFpbnRJbnZhbGlkYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDAxODUzOGFjOWZh
NTJlY2I5MWE1ZTVmNjVjNTM5ODE1YjJhNzJiZmEuLjA1MWM4OGRhMzAyNWM4MGI4M2RhNjM5MWFj
YWI3NGVkMjAzOTk5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJGaWx0ZXJSZXN1bHRzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlci5oIgpAQCAtNTEsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGRy
YXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwogICAgIEZpbHRlckRhdGFTdGF0ZSBz
dGF0ZSB7IFBhaW50aW5nU291cmNlIH07CisgICAgRmlsdGVyUmVzdWx0cyByZXN1bHRzOwogfTsK
IAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKaW5kZXggNmUwYjQ0OWExYWI5NDQyZDc3NWExMGY4
ZDU4NmI5NDc0NzBlMjZkMi4uNWQ2YjZlMTJlMzgzM2U4MDQ2ZDE1OTQ5NDA4ZjNiNzk5MGE1OGRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U1ZHRmlsdGVyLmgiCiAKKyNpbmNsdWRlICJGaWx0ZXJSZXN1bHRzLmgiCiAjaW5jbHVkZSAiU1ZH
RmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTb3VyY2VHcmFwaGljLmgiCkBAIC0xMzAsMTIgKzEzMSwxMiBAQCBGaWx0ZXJFZmZlY3RWZWN0
b3IgU1ZHRmlsdGVyOjplZmZlY3RzT2ZUeXBlKEZpbHRlckZ1bmN0aW9uOjpUeXBlIGZpbHRlclR5
cGUpIGNvbgogICAgIHJldHVybiBjb3B5VG9WZWN0b3IoZWZmZWN0cyk7CiB9CiAKLVJlZlB0cjxG
aWx0ZXJJbWFnZT4gU1ZHRmlsdGVyOjphcHBseShjb25zdCBGaWx0ZXImLCBGaWx0ZXJJbWFnZSYg
c291cmNlSW1hZ2UpCitSZWZQdHI8RmlsdGVySW1hZ2U+IFNWR0ZpbHRlcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiwgRmlsdGVySW1hZ2UmIHNvdXJjZUltYWdlLCBGaWx0ZXJSZXN1bHRzJiByZXN1bHRz
KQogewotICAgIHJldHVybiBhcHBseSgmc291cmNlSW1hZ2UpOworICAgIHJldHVybiBhcHBseSgm
c291cmNlSW1hZ2UsIHJlc3VsdHMpOwogfQogCi1SZWZQdHI8RmlsdGVySW1hZ2U+IFNWR0ZpbHRl
cjo6YXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJjZUltYWdlKQorUmVmUHRyPEZpbHRlckltYWdlPiBT
VkdGaWx0ZXI6OmFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYg
cmVzdWx0cykKIHsKICAgICBBU1NFUlQoIW1fZXhwcmVzc2lvbi5pc0VtcHR5KCkpOwogCkBAIC0x
NDYsOCArMTQ3LDggQEAgUmVmUHRyPEZpbHRlckltYWdlPiBTVkdGaWx0ZXI6OmFwcGx5KEZpbHRl
ckltYWdlKiBzb3VyY2VJbWFnZSkKICAgICAgICAgYXV0byBnZW9tZXRyeSA9IHRlcm0uZ2VvbWV0
cnk7CiAKICAgICAgICAgaWYgKGVmZmVjdC0+ZmlsdGVyVHlwZSgpID09IEZpbHRlckVmZmVjdDo6
VHlwZTo6U291cmNlR3JhcGhpYykgewotICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gZWZm
ZWN0LT5maWx0ZXJJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKHJlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IHJlc3Vs
dHMuZWZmZWN0UmVzdWx0KGVmZmVjdCkpIHsKKyAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQo
eyAqcmVzdWx0IH0pOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
CkBAIC0xNjEsMTIgKzE2Miw3IEBAIFJlZlB0cjxGaWx0ZXJJbWFnZT4gU1ZHRmlsdGVyOjphcHBs
eShGaWx0ZXJJbWFnZSogc291cmNlSW1hZ2UpCiAgICAgICAgIC8vIE5lZWQgdG8gcmVtb3ZlIHRo
ZSBpbnB1dHMgaGVyZSBpbiBjYXNlIHRoZSBlZmZlY3QgYWxyZWFkeSBoYXMgYSByZXN1bHQuCiAg
ICAgICAgIGF1dG8gaW5wdXRzID0gZWZmZWN0LT50YWtlSW1hZ2VJbnB1dHMoc3RhY2spOwogCi0g
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGVmZmVjdC0+ZmlsdGVySW1hZ2UoKSkgewotICAgICAg
ICAgICAgc3RhY2suYXBwZW5kKHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSB0ZXJtLmVmZmVj
dC0+YXBwbHkoKnRoaXMsIGlucHV0cywgZ2VvbWV0cnkpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHRlcm0uZWZmZWN0LT5hcHBseSgqdGhpcywgaW5wdXRzLCByZXN1bHRzLCBnZW9tZXRyeSk7CiAg
ICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE4
MywxMyArMTc5LDYgQEAgSW50T3V0c2V0cyBTVkdGaWx0ZXI6Om91dHNldHMoKSBjb25zdAogICAg
IHJldHVybiBsYXN0RWZmZWN0KCktPm91dHNldHMoKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXI6OmNs
ZWFyUmVzdWx0KCkKLXsKLSAgICBBU1NFUlQoIW1fZXhwcmVzc2lvbi5pc0VtcHR5KCkpOwotICAg
IGZvciAoYXV0byYgdGVybSA6IG1fZXhwcmVzc2lvbikKLSAgICAgICAgdGVybS5lZmZlY3QtPmNs
ZWFyUmVzdWx0KCk7Ci19Ci0KIFRleHRTdHJlYW0mIFNWR0ZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cywgRmlsdGVyUmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRp
b24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9leHByZXNzaW9uLnJiZWdpbigpLCBl
bmQgPSBtX2V4cHJlc3Npb24ucmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggOGUxNjUwNTE4
NDliZjRkMWVhMThiNDkyMWViMjRlOTZlYmNlNjk2Yi4uNTExNzIwNGM3N2VlNDlmNDg2ZmIyNjgx
Mjk5ZGEwMDhkYzVlYTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBjb25zdCBmaW5hbDsKICAgICBGaWx0ZXJFZmZlY3RW
ZWN0b3IgZWZmZWN0c09mVHlwZShGaWx0ZXJGdW5jdGlvbjo6VHlwZSkgY29uc3QgZmluYWw7CiAK
LSAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSkg
ZmluYWw7CisgICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShGaWx0ZXJJbWFnZSogc291cmNl
SW1hZ2UsIEZpbHRlclJlc3VsdHMmKSBmaW5hbDsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBGaWx0ZXJSZXByZXNlbnRhdGlv
bikgY29uc3QgZmluYWw7CiAKQEAgLTY0LDkgKzY0LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IEZsb2F0U2l6ZSByZXNvbHZlZFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3QgZmluYWw7CiAK
LSAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIEZpbHRlckltYWdl
JiBzb3VyY2VJbWFnZSkgZmluYWw7CisgICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShjb25z
dCBGaWx0ZXImLCBGaWx0ZXJJbWFnZSYgc291cmNlSW1hZ2UsIEZpbHRlclJlc3VsdHMmKSBmaW5h
bDsKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNsZWFy
UmVzdWx0KCkgZmluYWw7CiAKICAgICBGbG9hdFJlY3QgbV90YXJnZXRCb3VuZGluZ0JveDsKICAg
ICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1fcHJpbWl0aXZlVW5pdHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIu
Y3BwCmluZGV4IDFhMGM1MmM0YWViZGY1OTRlMDA3NzIyYzYzMTVkYjZiNmJkNzg3YjEuLjYyOGMy
MGY5ZjkzZjVlYTU3NzBkMDMwZmRkZDJhNjU2NDMzMjE5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCkBA
IC00MSw3ICs0MSw2IEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6c2V0dXBCdWlsdGluRWZmZWN0
cyhSZWY8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljKQogewogICAgIG1fYnVpbHRpbkVmZmVj
dHMuYWRkKFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKSwgc291cmNlR3JhcGhpYy5wdHIoKSk7
CiAgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291
cmNlQWxwaGE6OmNyZWF0ZShzb3VyY2VHcmFwaGljKSk7Ci0gICAgYWRkQnVpbHRpbkVmZmVjdHMo
KTsKIH0KIAogc3RhdGljIE9wdGlvblNldDxGaWx0ZXJFZmZlY3RHZW9tZXRyeTo6RmxhZ3M+IGVm
ZmVjdEdlb21ldHJ5RmxhZ3NGb3JFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCkBAIC0xMDIs
MTQgKzEwMSwxMSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpidWls
ZEZpbHRlckVmZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdAogI2VuZGlmCiAKICAgICAgICAg
aWYgKGF1dG8gcmVuZGVyZXIgPSBlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LmNvcHlSZWYoKSwgcmVuZGVy
ZXIpOworICAgICAgICAgICAgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZW5kZXJlcihlZmZlY3QuZ2V0
KCksIHJlbmRlcmVyKTsKIAogICAgICAgICBhZGQoZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZm
ZWN0KTsKICAgICB9CiAKLSAgICBpZiAoIWVmZmVjdCkKLSAgICAgICAgY2xlYXJFZmZlY3RzKCk7
Ci0KICAgICByZXR1cm4gZWZmZWN0OwogfQogCkBAIC0xNDIsNDQgKzEzOCwxNiBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21T
dHJpbmcmIGlkKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQpOwogfQog
Ci12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhS
ZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGVmZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lk
IFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZm
ZWN0KiBlZmZlY3QsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIC8vIFRoZSBlZmZlY3Qg
bXVzdCBiZSBhIG5ld2x5IGNyZWF0ZWQgZmlsdGVyIGVmZmVjdC4KLSAgICBBU1NFUlQoIW1fZWZm
ZWN0UmVmZXJlbmNlcy5jb250YWlucyhlZmZlY3QpKTsKICAgICBBU1NFUlQoIW9iamVjdCB8fCAh
bV9lZmZlY3RSZW5kZXJlci5jb250YWlucyhvYmplY3QpKTsKLSAgICBtX2VmZmVjdFJlZmVyZW5j
ZXMuYWRkKGVmZmVjdCwgRmlsdGVyRWZmZWN0U2V0KCkpOwotCi0gICAgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpLnNpemUoKTsKLQotICAgIC8v
IEl0IGlzIG5vdCBwb3NzaWJsZSB0byBhZGQgdGhlIHNhbWUgdmFsdWUgdG8gYSBzZXQgdHdpY2Uu
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kp
Ci0gICAgICAgIGVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LT5pbnB1dEVmZmVjdChpKSkuYWRkKGVm
ZmVjdC5nZXQoKSk7CiAKICAgICAvLyBJZiBvYmplY3QgaXMgbnVsbCwgdGhhdCBtZWFucyB0aGUg
ZWxlbWVudCBpc24ndCBhdHRhY2hlZCBmb3Igc29tZQogICAgIC8vIHJlYXNvbiwgd2hpY2ggaW4g
dHVybiBtZWFuIHRoYXQgY2VydGFpbiB0eXBlcyBvZiBpbnZhbGlkYXRpb24gd2lsbCBub3QKICAg
ICAvLyB3b3JrICh0aGUgTGF5b3V0T2JqZWN0IC0+IEZpbHRlckVmZmVjdCBtYXBwaW5nIHdpbGwg
bm90IGJlIGRlZmluZWQpLgogICAgIGlmIChvYmplY3QpCi0gICAgICAgIG1fZWZmZWN0UmVuZGVy
ZXIuYWRkKG9iamVjdCwgZWZmZWN0LmdldCgpKTsKLX0KLQotdm9pZCBTVkdGaWx0ZXJCdWlsZGVy
OjpjbGVhckVmZmVjdHMoKQotewotICAgIG1fbGFzdEVmZmVjdCA9IG51bGxwdHI7Ci0gICAgbV9u
YW1lZEVmZmVjdHMuY2xlYXIoKTsKLSAgICBtX2VmZmVjdFJlZmVyZW5jZXMuY2xlYXIoKTsKLSAg
ICBtX2VmZmVjdFJlbmRlcmVyLmNsZWFyKCk7Ci0gICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKLX0K
LQotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjpjbGVhclJlc3VsdHNSZWN1cnNpdmUoRmlsdGVyRWZm
ZWN0JiBlZmZlY3QpCi17Ci0gICAgaWYgKCFlZmZlY3QuaGFzUmVzdWx0KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGVmZmVjdC5jbGVhclJlc3VsdCgpOwotCi0gICAgZm9yIChhdXRvJiByZWZl
cmVuY2UgOiBlZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCkpCi0gICAgICAgIGNsZWFyUmVzdWx0c1Jl
Y3Vyc2l2ZSgqcmVmZXJlbmNlKTsKKyAgICAgICAgbV9lZmZlY3RSZW5kZXJlci5hZGQob2JqZWN0
LCBlZmZlY3QpOwogfQogCiBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVjdEdlb21ldHJ5PiBTVkdG
aWx0ZXJCdWlsZGVyOjplZmZlY3RHZW9tZXRyeShGaWx0ZXJFZmZlY3QmIGVmZmVjdCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuaAppbmRleCAxZDZjMjA4NGRhMjE2MTY1ZTFmYWIyYjkxNzIwOWU5YTJhNzAxNWE2
Li42ZDg5M2QzYjMwOWM1YWNjMDU3NWNjNGY3NDNjMmY3ZTEwZTFhZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5o
CkBAIC0zNyw4ICszNyw2IEBAIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiBjbGFzcyBTVkdGaWx0
ZXJCdWlsZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0
eXBlZGVmIEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj4gRmlsdGVyRWZmZWN0U2V0OwotCiAgICAgU1ZH
RmlsdGVyQnVpbGRlcigpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc2V0VGFyZ2V0Qm91bmRpbmdC
b3goY29uc3QgRmxvYXRSZWN0JiByKSB7IG1fdGFyZ2V0Qm91bmRpbmdCb3ggPSByOyB9CkBAIC00
OCw0NCArNDYsMjIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpbWl0aXZlVW5pdHMoU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSB1bml0cykgeyBtX3ByaW1pdGl2ZVVuaXRzID0gdW5pdHM7IH0K
IAogICAgIHZvaWQgYWRkKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0
Pik7Ci0KICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21T
dHJpbmcmKSBjb25zdDsKLSAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KLQotICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZl
Y3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYsIFJlbmRlck9iamVjdCopOwotCi0g
ICAgaW5saW5lIEZpbHRlckVmZmVjdFNldCYgZWZmZWN0UmVmZXJlbmNlcyhGaWx0ZXJFZmZlY3Qm
IGVmZmVjdCkKLSAgICB7Ci0gICAgICAgIC8vIE9ubHkgYWxsb3dlZCBmb3IgZWZmZWN0cyBiZWxv
bmdzIHRvIHRoaXMgYnVpbGRlci4KLSAgICAgICAgQVNTRVJUKG1fZWZmZWN0UmVmZXJlbmNlcy5j
b250YWlucygmZWZmZWN0KSk7Ci0gICAgICAgIHJldHVybiBtX2VmZmVjdFJlZmVyZW5jZXMuZmlu
ZCgmZWZmZWN0KS0+dmFsdWU7Ci0gICAgfQogCiAgICAgLy8gUmVxdWlyZWQgdG8gY2hhbmdlIHRo
ZSBhdHRyaWJ1dGVzIG9mIGEgZmlsdGVyIGR1cmluZyBhbiBzdmdBdHRyaWJ1dGVDaGFuZ2VkLgor
ICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3QqLCBSZW5k
ZXJPYmplY3QqKTsKICAgICBpbmxpbmUgRmlsdGVyRWZmZWN0KiBlZmZlY3RCeVJlbmRlcmVyKFJl
bmRlck9iamVjdCogb2JqZWN0KSB7IHJldHVybiBtX2VmZmVjdFJlbmRlcmVyLmdldChvYmplY3Qp
OyB9CiAKLSAgICB2b2lkIGNsZWFyRWZmZWN0cygpOwotICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVj
dXJzaXZlKEZpbHRlckVmZmVjdCYpOwotCiAgICAgdm9pZCBzZXR1cEJ1aWx0aW5FZmZlY3RzKFJl
ZjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdyYXBoaWMpOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkRmlsdGVyRWZmZWN0cyhTVkdGaWx0ZXJFbGVtZW50Jik7CiAgICAgYm9vbCBidWlsZEV4
cHJlc3Npb24oU1ZHRmlsdGVyRXhwcmVzc2lvbiYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGlu
bGluZSB2b2lkIGFkZEJ1aWx0aW5FZmZlY3RzKCkKLSAgICB7Ci0gICAgICAgIGZvciAoYXV0byYg
ZWZmZWN0IDogbV9idWlsdGluRWZmZWN0cy52YWx1ZXMoKSkKLSAgICAgICAgICAgIG1fZWZmZWN0
UmVmZXJlbmNlcy5hZGQoZWZmZWN0LCBGaWx0ZXJFZmZlY3RTZXQoKSk7Ci0gICAgfQotCiAgICAg
c3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4gZWZmZWN0R2VvbWV0cnkoRmlsdGVy
RWZmZWN0JikgY29uc3Q7CiAgICAgYm9vbCBidWlsZEVmZmVjdEV4cHJlc3Npb24oRmlsdGVyRWZm
ZWN0JiwgRmlsdGVyRWZmZWN0VmVjdG9yJiBzdGFjaywgdW5zaWduZWQgbGV2ZWwsIFNWR0ZpbHRl
ckV4cHJlc3Npb24mKSBjb25zdDsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEZp
bHRlckVmZmVjdD4+IG1fYnVpbHRpbkVmZmVjdHM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBS
ZWZQdHI8RmlsdGVyRWZmZWN0Pj4gbV9uYW1lZEVmZmVjdHM7Ci0gICAgLy8gVGhlIHZhbHVlIGlz
IGEgbGlzdCwgd2hpY2ggY29udGFpbnMgdGhvc2UgZmlsdGVyIGVmZmVjdHMsCi0gICAgLy8gd2hp
Y2ggZGVwZW5kcyBvbiB0aGUga2V5IGZpbHRlciBlZmZlY3QuCi0gICAgSGFzaE1hcDxSZWZQdHI8
RmlsdGVyRWZmZWN0PiwgRmlsdGVyRWZmZWN0U2V0PiBtX2VmZmVjdFJlZmVyZW5jZXM7CiAgICAg
SGFzaE1hcDxSZW5kZXJPYmplY3QqLCBGaWx0ZXJFZmZlY3QqPiBtX2VmZmVjdFJlbmRlcmVyOwog
CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9sYXN0RWZmZWN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IGU4ZjZmN2JlMTk1NmU2Y2FjNDQyMWU1YWEzNDYxNzk1NDc2OWZm
MGQuLmMyNjdhN2NkMmE4NTQyZTg2ZjFiZGY4MWIzMzk5YWU1YjZkNTY0ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIlJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFw
SW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlclJlc3VsdHMuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI1NSw3ICsyNTYsOCBAQCB2
b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUgogICAgICAgICB9CiAgICAgfQogCi0gICAgaGFuZGxlSXRl
bShEaXNwbGF5TGlzdDo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2VJZGVudGlm
aWVyLCBzb3VyY2VJbWFnZVJlY3QsIFdURk1vdmUoZmlsdGVyKSksIHNvdXJjZUltYWdlLmdldCgp
KTsKKyAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7CisgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlz
dDo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2VJZGVudGlmaWVyLCBzb3VyY2VJ
bWFnZVJlY3QsIFdURk1vdmUoZmlsdGVyKSksIHNvdXJjZUltYWdlLmdldCgpLCByZXN1bHRzKTsK
IH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3R2x5cGhzKERpc3BsYXlM
aXN0OjpEcmF3R2x5cGhzJiYgaXRlbSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448302</attachid>
            <date>2022-01-04 09:38:37 -0800</date>
            <delta_ts>2022-01-04 21:48:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232840-20220104093837.patch</filename>
            <type>text/plain</type>
            <size>47654</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTExMmM2MGUxMDU0N2Vj
ODgwY2ViODgyYTk2NDFjMzY5ZjBmY2VlZC4uNzFhZTY0MTNlMTVhZWRhNDMxN2NjNDA5NjM3Yjkw
ZjQ2MmMwZjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIyLTAxLTA0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UmVtb3ZlIHRoZSByZXN1bHQgRmlsdGVySW1hZ2UgZnJvbSBGaWx0ZXJFZmZlY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0MAorICAgICAgICBy
ZGFyOi8vODU0MjU4NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmluZyB0aGUgcmVzdWx0IEZpbHRlckltYWdlIGZyb20gRmlsdGVyRWZmZWN0
IHdpbGwgYWxsb3cgcmV1c2luZyB0aGUKKyAgICAgICAgc2FtZSBGaWx0ZXJFZmZlY3QgZm9yIGFs
bCB0aGUgcmVuZGVyZXJzIHRoYXQgcmVmZXJlbmNlIGl0LiBUaGUgcmVzdWx0cyAKKyAgICAgICAg
d2lsbCBub3cgYmUgc3RvcmVkIGluIHRoZSBuZXcgY2xhc3MgJ0ZpbHRlclJlc3VsdHMnLgorCisg
ICAgICAgIC0tIEZpbHRlckRhdGEgc3RpbGwga2VlcHMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcg
dGhlIEZpbHRlciB0byBpdHMKKyAgICAgICAgICAgcmVuZGVyZXIgaW4gYSBuZXcgbWVtYmVyIG9m
IHR5cGUgRmlsdGVyUmVzdWx0cy4KKworICAgICAgICAtLSBSZW5kZXJMYXllckZpbHRlcnMgd2ls
bCBub3QgbmVlZCB0byBjbGVhciBpdHMgQ1NTRmlsdGVyIGludGVybWVkaWF0ZQorICAgICAgICAg
ICByZXN1bHRzIGJlY2F1c2UgdGhpcyB3aWxsIGhhcHBlbiBvbmNlIHRoZSB0ZW1wb3JhcnkgRmls
dGVyUmVzdWx0cyBnb2VzCisgICAgICAgICAgIG91dCBvZiBzY29wZS4KKworICAgICAgICBGaWx0
ZXJSZXN1bHRzIHdpbGwgaGF2ZSB0d28gbWFwczoKKworICAgICAgICAxLiBGaWx0ZXJFZmZlY3Qg
LT4gRmlsdGVySW1hZ2U6IFRoZSB2YWx1ZSBpcyB0aGUgcmVzdWx0IEZpbHRlckltYWdlIG9mIAor
ICAgICAgICAgICBhcHBseWluZyB0aGUgRmlsdGVyRWZmZWN0LgorICAgICAgICAyLiBGaWx0ZXJJ
bWFnZSAtPiBGaWx0ZXJFZmZlY3RTZXQ6IFRoZSB2YWx1ZSBpcyBhIGxpc3Qgb2YgRmlsdGVyRWZm
ZWN0cywKKyAgICAgICAgICAgd2hvc2UgRmlsdGVySW1hZ2VzIGRlcGVuZCBvbiB0aGUga2V5IEZp
bHRlckltYWdlLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6OmFwcGx5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjphcHBseSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y2xlYXJSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpjbGVhclJlc3VsdHNSZWN1cnNpdmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6Omhhc1Jlc3VsdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmZpbHRlckltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJGdW5jdGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246
Om91dHNldHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmNsZWFy
UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlclJlc3VsdHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlclJlc3VsdHM6
OmVmZmVjdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzOjpzZXRFZmZl
Y3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6Y2xlYXJFZmZlY3RS
ZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0
cy5oOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVy
OjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9DU1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyOjpjbGVhclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJC
dWlsZGVyOjpzZXR1cEJ1aWx0aW5FZmZlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRl
ckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJSZXN1
bHRzUmVjdXJzaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjps
YXN0RWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1
aWxkZXI6OmVmZmVjdFJlZmVyZW5jZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyQnVpbGRlcjo6YWRkQnVpbHRpbkVmZmVjdHMpOiBEZWxldGVkLgorCiAyMDIyLTAxLTAx
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgICJhbmltYXRp
b24iIHNob3J0aGFuZCBkb2VzIG5vdCBwYXJzZSB2YWx1ZXMgaW4gdGhlIHJpZ2h0IG9yZGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDgzNTMwYTkxYzEwMDlhZjY4NTVjYTVjM2FiZGIwNjA1Y2E5ODdjMzUuLjAzZDZl
MTA1NmEzMDU4NGExOWJmMWNmYzY2ZmY2OWI1MzQ4OTkyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDEtMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0dQVSBQcm9jZXNzXSBSZW1vdmUgdGhlIHJlc3VsdCBGaWx0ZXJJbWFnZSBmcm9t
IEZpbHRlckVmZmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyODQwCisgICAgICAgIHJkYXI6Ly84NTQyNTg0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorCiAyMDIyLTAxLTAxICBK
ZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdXNlci12aXNp
YmxlIGNvcHlyaWdodCBzdHJpbmdzIHRvIGluY2x1ZGUgMjAyMgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggZjhiODlmMGVlZmZmZDllMDMwN2I2NDk5NTc0ZGYyNDE1MWVjY2U5ZC4uODk1ZTNhNDEzYjRj
MmZiMDM2NGRlYzVjMmU4OWFlMTNjNDAzY2I1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNjEx
LDYgKzE2MTEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZVZlY3Rvci5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJSZXN1bHRzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0
U291cmNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2Uu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCBiZDVhNzQ3OWNiMzllNDZjYzkxMDQwMGY0ZWUzODQ5MzI0Yzc1MzFmLi4yOTAxNWM2
MGRkYThmNzVlZjM5NDllOTJmYmYyNjg1YWRjOWVmYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjEy
MSw2ICsyMTIxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyUmVzdWx0cy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJj
ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2M5ZWMyNWMwYTkyNDYw
NmFlMmViMzI3NjRhMTc4ZGRjYzk0NDNmOC4uZDQ1ZmI1N2M0ZGUyOTJlZjYwMmYzMDQ2ZTZhYTBj
NzhkNTJlNjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjMzNSw2ICsyMzM1LDcgQEAKIAkJNzJCOEIwMzUyNzUzNDM4NjAw
Rjc1MkFBIC8qIEZpbHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjYyRDc1NjI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MkI4QjAzNjI3NTM0NDE0MDBGNzUyQUEgLyogRmlsdGVySW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNDM1RUY0MjczRDA3NjcwMDA1RTdFRSAv
KiBGaWx0ZXJJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1
MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkQ3MzY0NDI3ODQ2MUEwMDAzOTg2
NjMgLyogRmlsdGVyUmVzdWx0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzIxMUI1RDYyNzY1MzY4MjAwNzZGRUY4IC8qIEZpbHRlclJlc3VsdHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY2NjdF
MTI2MEMyNkFDMDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjY2N0RGMjYwQzI2NDQwMEVF
MzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBU
aW1lbGluZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZh
Y3RvcnkuaCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNF
ODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovOyB9OwpAQCAtMTEyMTQsNiAr
MTEyMTUsOCBAQAogCQk3MUY2RUU0MTI1NUVERjlDMDBGQzRDNUIgLyogR3JpZFRyYWNrU2l6ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmlkVHJhY2tTaXplLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGOTM2RjcxREQ0Rjk5QjAwOTIyQ0M3
IC8qIHRyYWNrcy1zdXBwb3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gInRyYWNrcy1zdXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFGRjg1MTgyMkEzRjgxRjAwNUQ1OTU5IC8qIE5hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JNYXhUb3VjaFBvaW50cy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0
ZXJSZXN1bHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlclJlc3VsdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzIxMUI1RDgyNzY1NDQ4NTAwNzZGRUY4IC8qIEZpbHRlclJlc3Vs
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyUmVzdWx0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRl
ZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZG
NyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNEI5QjcyNzQ0NThGQTAwM0JFNkRG
IC8qIEZpbHRlckVmZmVjdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3RWZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2Nzg0LDYgKzI2Nzg3LDggQEAK
IAkJCQk0OUVDRUI2NDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8sCiAJ
CQkJNDlFQ0VCNjUxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovLAog
CQkJCTQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi8sCisJ
CQkJNzIxMUI1RDgyNzY1NDQ4NTAwNzZGRUY4IC8qIEZpbHRlclJlc3VsdHMuY3BwICovLAorCQkJ
CTcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0ZXJSZXN1bHRzLmggKi8sCiAJCQkJODQ3
MzBENzQxMjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNlLmggKi8sCiAJCQkJQTFFMTE1NDUx
MzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovLAogCQkJCTg0NzMwRDc1
MTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNlLmggKi8sCkBAIC0zNDM3OCw2ICsz
NDM4Myw3IEBACiAJCQkJNzI0Njk2M0UyNzVDNjE2NzAwQTkxNTZBIC8qIEZpbHRlckltYWdlVmVj
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI2RTE0OTk3OTBEMDBDREQzQTQgLyogRmls
dGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQz
QTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJENzM2NDQyNzg0
NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MkMw
MEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZGQjdEMkREMjUwRkQ4MjgwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDJmZDQyMjliNzEyN2YwNDkwZDQy
ZDU0MWUxNDRhZDZhOWQ4ZTFmZWIuLmI4YWZjOTUxMWJkOTM3M2FjZjkwOGU2NTY1MTU4ODJkMmU5
ODFlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAi
RmlsdGVySW1hZ2UuaCIKKyNpbmNsdWRlICJGaWx0ZXJSZXN1bHRzLmgiCiAjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCkBAIC0xNDYsNyArMTQ4LDkg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgY29u
c3RfY2FzdDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQo
KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkodGhpcywgeyB7IH0sIGxvZ2lj
YWxTaXplKCkgfSk7CisgICAgICAgIAorICAgICAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFwcGx5KHRoaXMsIHsgeyB9LCBsb2dpY2FsU2l6
ZSgpIH0sIHJlc3VsdHMpOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA0OTQ4OGM1OTk2MzIxZmJmNjUyMjI3N2JhMGM5Njll
NTA3MGZkNWRkLi5hZTU2ZjUwNDU0YjEyOTkxZWQ1NDc0MTdhOWEzZGIwMDRhMWU1MmZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTYzMSw5ICs2MzEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0CiAgICAgSW1h
Z2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCBvcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRlciYgZmlsdGVyKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJSZXN1bHRz
JiByZXN1bHRzKQogewotICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFwcGx5KHNvdXJjZUltYWdl
LCBzb3VyY2VJbWFnZVJlY3QpOworICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFwcGx5KHNvdXJj
ZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QsIHJlc3VsdHMpOwogICAgIGlmICghcmVzdWx0KQogICAg
ICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDMyZWEyZWQxNDUxYzU0YjRjZGU4MTMwYTQ5Mzdl
N2Q1MzIwMTZhM2YuLjFlZGQ0OTMyYTZmYTUzMDk2MjMzYjZjNTRmZDNkYzI1OWU0N2UwYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCkBAIC04Niw2ICs4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgRmlsdGVyOworY2xhc3MgRmlsdGVyUmVzdWx0czsKIGNsYXNzIEZs
b2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZTsKQEAgLTQ1Miw3ICs0NTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZ0lt
YWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIEZpbHRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImLCBGaWx0ZXJSZXN1bHRzJik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCmluZGV4IDA5ZjJiNTdjNjRhOGQyMWUyOTY1MWVhZjU3YzFjNzc3OTc3ODZmNWYuLjMx
YWM4YjRhZDdkYmY3MmRhMzY0YTA1NTc3NmY2YjI5NzlhNDY5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTMxMiw5ICszMTIsOSBAQCBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjbwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIERyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKiBzb3VyY2VJbWFnZSkKK3ZvaWQgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBG
aWx0ZXJSZXN1bHRzJiByZXN1bHRzKQogewotICAgIGNvbnRleHQuZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIoc291cmNlSW1hZ2UsIG1fc291cmNlSW1hZ2VSZWN0LCBtX2ZpbHRlcik7CisgICAgY29u
dGV4dC5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgbV9zb3VyY2VJbWFnZVJl
Y3QsIG1fZmlsdGVyLCByZXN1bHRzKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJiBpdGVtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggODM1YjAxMmQ1ZmMwYjQ5NjA0ZWYz
YWVhYmY1MTFhYTYxY2IzZTIyMi4uZWYwYzE4NzdkMTkzOGJkYzA2MTA1NGI5NDJmYTYyODBiYzQ3
ZjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC03MzcsNyArNzM3LDcg
QEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyLmlzVmFsaWQoKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgSW1h
Z2VCdWZmZXImKSBjb25zdDsKIAogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCBwdWJsaWM6
CiAgICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
SW1hZ2VSZWN0OyB9CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlQnVmZmVyKiBz
b3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYpOwogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUltYWdlUmVjdDsgfQpAQCAtMTAzOSw3ICsxMDM5LDcg
QEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIHZhbGlkYXRlIEltYWdl
UGFpbnRpbmdPcHRpb25zLgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2VCdWZmZXJJZGVudGlmaWVyLmlzVmFsaWQoKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgSW1hZ2VCdWZm
ZXImKSBjb25zdDsKIAogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAppbmRleCA3OWZjOWI3YzNjZGQ3MmZiODcxZTExNDk2ZTg1Y2Q3NjhlZDBmNzMwLi5l
MDEwYzlkMGVmNzNjMTA2NGQxMWUzMjlkNWIwYmIxZjBlNDRjMWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIFJl
Y29yZGVyOjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiAgICAgcmVjb3JkU2V0TWl0
ZXJMaW1pdChtaXRlckxpbWl0KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIpCit2b2lkIFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBGaWx0ZXImIGZpbHRlciwgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cykKIHsK
ICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKHNvdXJj
ZUltYWdlICYmICFjYW5EcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlKSkgewotICAgICAgICBH
cmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBzb3Vy
Y2VJbWFnZVJlY3QsIGZpbHRlcik7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyLCByZXN1
bHRzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQg
UmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFn
ZSwgY29uc3QgRmxvYXRSZWN0CiAgICAgICAgICk7CiAKICAgICAgICAgaWYgKCFpc1JlY29yZGVk
KSB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
KHNvdXJjZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlcik7CisgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBzb3VyY2VJ
bWFnZVJlY3QsIGZpbHRlciwgcmVzdWx0cyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAwMmFl
NTcwNjEyZTM0YjgyM2Y2MDc0YmZlZmRlMzYwZWVlODdlNjFkLi4xOGQ5MzMzOTU5MThmZGUyMTlh
MjBhNmMyMWZlNDVlYjA0YTI2MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRlciYpIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNv
dXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiwgRmls
dGVyUmVzdWx0cyYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
d0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCos
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBv
aW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCmluZGV4IDgz
NmUxM2M5NzVjZTA2YjRhMGQ0ZDViMDhmY2FlNDZhNjE3YjI2YmQuLjQ2YmIzNTYyZmI1NzYyMzg0
ZGExZTZjMzRhMzgzNGIxMTkyNGYyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBG
aWx0ZXI6OmNsYW1wRmlsdGVyUmVnaW9uSWZOZWVkZWQoKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1SZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKK1JlZlB0cjxGaWx0ZXJJbWFn
ZT4gRmlsdGVyOjphcHBseShJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXJSZXN1bHRzJiByZXN1bHRzKQogewogICAgIFJlZlB0
cjxGaWx0ZXJJbWFnZT4gaW5wdXQ7CiAKQEAgLTkyLDcgKzkyLDcgQEAgUmVmUHRyPEZpbHRlcklt
YWdlPiBGaWx0ZXI6OmFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8g
cmVzdWx0ID0gYXBwbHkoaW5wdXQuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gYXBwbHkoaW5w
dXQuZ2V0KCksIHJlc3VsdHMpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmgKaW5kZXggN2M1NWYzNDNmMGI2MDA5YzY1MDJlYTI5YWIxNjFiOWZlMGI4ZjRhZC4u
MmYzOWY4ODBhMDBlNmIwNGJhOWI5NjUyMTcxY2I2MTZiYzMyMmZlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC0zMiw2ICsz
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyRWZmZWN0OwogY2xhc3Mg
RmlsdGVySW1hZ2U7CitjbGFzcyBGaWx0ZXJSZXN1bHRzOwogCiBjbGFzcyBGaWx0ZXIgOiBwdWJs
aWMgRmlsdGVyRnVuY3Rpb24gewogICAgIHVzaW5nIEZpbHRlckZ1bmN0aW9uOjphcHBseTsKQEAg
LTY1LDggKzY2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBjbGFtcEZpbHRlclJlZ2lvbklmTmVl
ZGVkKCk7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoRmlsdGVySW1h
Z2UqIHNvdXJjZUltYWdlKSA9IDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEZpbHRlcklt
YWdlPiBhcHBseShJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoRmls
dGVySW1hZ2UqIHNvdXJjZUltYWdlLCBGaWx0ZXJSZXN1bHRzJikgPSAwOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyUmVzdWx0cyYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgdXNpbmcgRmlsdGVyRnVuY3Rpb246OkZpbHRlckZ1bmN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCmluZGV4IDdjOTUxZmVhNGJkZWRiMjE5MDA0MWRlNzFjMmExN2E2YmI1ZDE1
OGUuLmI1MmU5MGMyZDY4NWQ5NDYzZmUwNzgwYjUzZDlhMTZkNjkwYjYzMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3RBcHBsaWVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0R2VvbWV0cnku
aCIKKyNpbmNsdWRlICJGaWx0ZXJSZXN1bHRzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpA
QCAtOTksMTcgKzEwMCwxNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29ycmVjdFByZW11bHRpcGxp
ZWRJbnB1dHMoY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cykgYwogICAgICAgICBpbnB1
dC0+Y29ycmVjdFByZW11bHRpcGxpZWRQaXhlbEJ1ZmZlcigpOwogfQogCi1SZWZQdHI8RmlsdGVy
SW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIEZpbHRlcklt
YWdlJiBpbnB1dCkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVyRWZmZWN0OjphcHBseShjb25z
dCBGaWx0ZXImIGZpbHRlciwgRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0ZXJSZXN1bHRzJiByZXN1
bHRzKQogewotICAgIHJldHVybiBhcHBseShmaWx0ZXIsIEZpbHRlckltYWdlVmVjdG9yIHsgUmVm
IHsgaW5wdXQgfSB9KTsKKyAgICByZXR1cm4gYXBwbHkoZmlsdGVyLCBGaWx0ZXJJbWFnZVZlY3Rv
ciB7IFJlZiB7IGlucHV0IH0gfSwgcmVzdWx0cyk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJJbWFnZT4g
RmlsdGVyRWZmZWN0OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1h
Z2VWZWN0b3ImIGlucHV0cywgY29uc3Qgc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRy
eT4mIGdlb21ldHJ5KQorUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXJFZmZlY3Q6OmFwcGx5KGNv
bnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0
ZXJSZXN1bHRzJiByZXN1bHRzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVjdEdlb21l
dHJ5PiYgZ2VvbWV0cnkpCiB7CiAgICAgQVNTRVJUKGlucHV0cy5zaXplKCkgPT0gbnVtYmVyT2ZJ
bWFnZUlucHV0cygpKTsKIAotICAgIGlmIChtX2ZpbHRlckltYWdlKQotICAgICAgICByZXR1cm4g
bV9maWx0ZXJJbWFnZTsKKyAgICBpZiAoYXV0byByZXN1bHQgPSByZXN1bHRzLmVmZmVjdFJlc3Vs
dCgqdGhpcykpCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBhdXRvIHByaW1pdGl2ZVN1
YnJlZ2lvbiA9IGNhbGN1bGF0ZVByaW1pdGl2ZVN1YnJlZ2lvbihmaWx0ZXIsIGlucHV0cywgZ2Vv
bWV0cnkpOwogICAgIGF1dG8gaW1hZ2VSZWN0ID0gY2FsY3VsYXRlSW1hZ2VSZWN0KGZpbHRlciwg
aW5wdXRzLCBwcmltaXRpdmVTdWJyZWdpb24pOwpAQCAtMTI2LDggKzEyNyw4IEBAIFJlZlB0cjxG
aWx0ZXJJbWFnZT4gRmlsdGVyRWZmZWN0OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29u
c3QgRmlsdGVySW1hZ2VWCiAgICAgaWYgKCFhcHBsaWVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIG1fZmlsdGVySW1hZ2UgPSBGaWx0ZXJJbWFnZTo6Y3JlYXRlKHByaW1pdGl2ZVN1
YnJlZ2lvbiwgaW1hZ2VSZWN0LCBhYnNvbHV0ZUltYWdlUmVjdCwgaXNBbHBoYUltYWdlLCBpc1Zh
bGlkUHJlbXVsdGlwbGllZCwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VDb2xvclNwYWNl
KTsKLSAgICBpZiAoIW1fZmlsdGVySW1hZ2UpCisgICAgYXV0byByZXN1bHQgPSBGaWx0ZXJJbWFn
ZTo6Y3JlYXRlKHByaW1pdGl2ZVN1YnJlZ2lvbiwgaW1hZ2VSZWN0LCBhYnNvbHV0ZUltYWdlUmVj
dCwgaXNBbHBoYUltYWdlLCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwgZmlsdGVyLnJlbmRlcmluZ01v
ZGUoKSwgaW1hZ2VDb2xvclNwYWNlKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtCkBAIC0xNDEs
MTAgKzE0MiwxMSBAQCBSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29u
c3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVgogICAgIGlmIChpc1ZhbGlkUHJl
bXVsdGlwbGllZCkKICAgICAgICAgY29ycmVjdFByZW11bHRpcGxpZWRJbnB1dHMoaW5wdXRzKTsK
IAotICAgIGlmICghYXBwbGllci0+YXBwbHkoZmlsdGVyLCBpbnB1dHMsICptX2ZpbHRlckltYWdl
KSkKLSAgICAgICAgbV9maWx0ZXJJbWFnZSA9IG51bGxwdHI7CisgICAgaWYgKCFhcHBsaWVyLT5h
cHBseShmaWx0ZXIsIGlucHV0cywgKnJlc3VsdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIG1fZmlsdGVySW1hZ2U7CisgICAgcmVzdWx0cy5zZXRFZmZlY3RSZXN1bHQo
KnRoaXMsIGlucHV0cywgeyAqcmVzdWx0IH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEZp
bHRlckVmZmVjdCYgRmlsdGVyRWZmZWN0OjppbnB1dEVmZmVjdCh1bnNpZ25lZCBudW1iZXIpIGNv
bnN0CkBAIC0xNTMsMjAgKzE1NSw2IEBAIEZpbHRlckVmZmVjdCYgRmlsdGVyRWZmZWN0OjppbnB1
dEVmZmVjdCh1bnNpZ25lZCBudW1iZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5wdXRFZmZlY3Rz
LmF0KG51bWJlcik7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdCgpCi17Ci0g
ICAgbV9maWx0ZXJJbWFnZSA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgRmlsdGVyRWZmZWN0OjpjbGVh
clJlc3VsdHNSZWN1cnNpdmUoKQotewotICAgIC8vIENsZWFyIGFsbCByZXN1bHRzLCByZWdhcmRs
ZXNzIHRoYXQgdGhlIGN1cnJlbnQgZWZmZWN0IGhhcwotICAgIC8vIGEgcmVzdWx0LiBDYW4gYmUg
dXNlZCBpZiBhbiBlZmZlY3QgaXMgaW4gYW4gZXJyb25lb3VzIHN0YXRlLgotICAgIGNsZWFyUmVz
dWx0KCk7Ci0gICAgZm9yIChhdXRvJiBlZmZlY3QgOiBtX2lucHV0RWZmZWN0cykKLSAgICAgICAg
ZWZmZWN0LT5jbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKLX0KLQogVGV4dFN0cmVhbSYgRmlsdGVy
RWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBGaWx0ZXJSZXBy
ZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGR1bXAgdGhlIHN1YlJlZ2lvbnMgb2YgdGhlIGZpbHRlciBwcmltaXRpdmVzIGhlcmUgbGF0
ZXIuIFRoaXMgaXNuJ3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDA2NTIwMDE3ZTlkMjFmN2FlNzcyMzMx
ZWNjYWEyNzI3ZGUyYWQ5MDAuLjVmZmVkYzUyMTBhMzU3Y2NjMWI5ZDNmMWVjNjY5NGQzNTRjN2Q5
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNDMsMTcgKzQzLDEyIEBAIGNsYXNzIEZpbHRlckVmZmVj
dCA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiAgICAgdXNpbmcgRmlsdGVyRnVuY3Rpb246OmFw
cGx5OwogCiBwdWJsaWM6Ci0gICAgdm9pZCBjbGVhclJlc3VsdCgpIG92ZXJyaWRlOwotICAgIHZv
aWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7Ci0gICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCB7
IHJldHVybiBtX2ZpbHRlckltYWdlOyB9Ci0KLSAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGZpbHRl
ckltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJJbWFnZTsgfQogICAgIEZpbHRlckltYWdl
VmVjdG9yIHRha2VJbWFnZUlucHV0cyhGaWx0ZXJJbWFnZVZlY3RvciYgc3RhY2spIGNvbnN0Owog
CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMoKSB7IHJldHVybiBtX2lucHV0
RWZmZWN0czsgfQogICAgIEZpbHRlckVmZmVjdCYgaW5wdXRFZmZlY3QodW5zaWduZWQpIGNvbnN0
OwogCi0gICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBG
aWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVj
dEdlb21ldHJ5PiYgPSBzdGQ6Om51bGxvcHQpOworICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBw
bHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVy
UmVzdWx0cyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0R2VvbWV0cnk+JiA9IHN0
ZDo6bnVsbG9wdCk7CiAKICAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG9wZXJhdGlu
Z0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFj
ZTsgfQpAQCAtODMsMTIgKzc4LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVy
JikgY29uc3QgPSAwOwogCi0gICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShjb25zdCBGaWx0
ZXImLCBGaWx0ZXJJbWFnZSYgaW5wdXQpIG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJJbWFn
ZT4gYXBwbHkoY29uc3QgRmlsdGVyJiwgRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0ZXJSZXN1bHRz
Jikgb3ZlcnJpZGU7CiAKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVmZmVjdHM7CiAK
LSAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IG1fZmlsdGVySW1hZ2U7Ci0KICAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaAppbmRleCAwOWI3ZTQxNGRkODc1YmQx
YjU0YmRiZGMxNzEyYWUzNDJhMGY1YmIyLi5hYjE4YjA4NmU5N2I1MzAwZDc5OGE5OWY2MTRjYzc4
ZmZjNWI3NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFRl
eHRTdHJlYW07CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlcjsKK2NsYXNzIEZp
bHRlclJlc3VsdHM7CiAKIGVudW0gY2xhc3MgRmlsdGVyUmVwcmVzZW50YXRpb24gOiB1aW50OF90
IHsKICAgICBUZXN0T3V0cHV0LApAQCAtOTYsOSArOTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0
IEZpbHRlciYsIEZpbHRlckltYWdlJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShjb25zdCBGaWx0ZXImLCBGaWx0ZXJJbWFnZSYsIEZp
bHRlclJlc3VsdHMmKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJbnRPdXRzZXRz
IG91dHNldHMoKSBjb25zdCB7IHJldHVybiB7IH07IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJS
ZXN1bHQoKSB7IH0KIAogICAgIHZpcnR1YWwgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIEZpbHRlclJlcHJlc2VudGF0aW9uID0gRmlsdGVy
UmVwcmVzZW50YXRpb246OlRlc3RPdXRwdXQpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDFiYjFjZDA4YTkxYTU1M2Y2ZWVmZmE5ZjgzOTNhMzI4YjkyY2ZmMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyUmVzdWx0cy5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRmlsdGVyUmVzdWx0cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRlckltYWdl
KiBGaWx0ZXJSZXN1bHRzOjplZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiBlZmZlY3QpCit7Cisg
ICAgcmV0dXJuIG1fcmVzdWx0cy5nZXQoZWZmZWN0KTsKK30KKwordm9pZCBGaWx0ZXJSZXN1bHRz
OjpzZXRFZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0IEZpbHRlckltYWdl
VmVjdG9yJiBpbnB1dHMsIFJlZjxGaWx0ZXJJbWFnZT4mJiByZXN1bHQpCit7CisgICAgbV9yZXN1
bHRzLnNldCh7IGVmZmVjdCB9LCBXVEZNb3ZlKHJlc3VsdCkpOworICAgIAorICAgIGZvciAoYXV0
byBpbnB1dCA6IGlucHV0cykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVzdWx0UmVm
ZXJlbmNlcy5lbnN1cmUoaW5wdXQsIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBGaWx0ZXJFZmZl
Y3RTZXQoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byYgcmVmZXJlbmNlcyA9IGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHJlZmVyZW5jZXMuYWRkKGVmZmVjdCk7Cisg
ICAgfQorfQorCit2b2lkIEZpbHRlclJlc3VsdHM6OmNsZWFyRWZmZWN0UmVzdWx0KEZpbHRlckVm
ZmVjdCYgZWZmZWN0KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc3VsdHMuZmluZChlZmZl
Y3QpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc3VsdHMuZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gcmVzdWx0ID0gaXRlcmF0b3ItPnZhbHVlOworICAgIG1fcmVzdWx0cy5y
ZW1vdmUoaXRlcmF0b3IpOworCisgICAgZm9yIChhdXRvJiByZWZlcmVuY2UgOiBtX3Jlc3VsdFJl
ZmVyZW5jZXMuZ2V0KHJlc3VsdCkpCisgICAgICAgIGNsZWFyRWZmZWN0UmVzdWx0KHJlZmVyZW5j
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2Y5MmE5MjFhNDliMjllYTc1MjViYTIyNWQ5MTQ0ZWNkYzY2MzU5YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVz
dWx0cy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGaWx0ZXJJbWFnZVZlY3Rv
ci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWx0ZXJFZmZlY3Q7CitjbGFzcyBGaWx0
ZXJJbWFnZTsKKworY2xhc3MgRmlsdGVyUmVzdWx0cyB7CitwdWJsaWM6CisgICAgRmlsdGVyUmVz
dWx0cygpID0gZGVmYXVsdDsKKworICAgIEZpbHRlckltYWdlKiBlZmZlY3RSZXN1bHQoRmlsdGVy
RWZmZWN0Jik7CisgICAgdm9pZCBzZXRFZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiwgY29uc3Qg
RmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgUmVmPEZpbHRlckltYWdlPiYmIHJlc3VsdCk7Cisg
ICAgdm9pZCBjbGVhckVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmKTsKKworcHJpdmF0ZToKKyAg
ICB1c2luZyBGaWx0ZXJFZmZlY3RTZXQgPSBIYXNoU2V0PFJlZjxGaWx0ZXJFZmZlY3Q+PjsKKyAg
ICBIYXNoTWFwPFJlZjxGaWx0ZXJFZmZlY3Q+LCBSZWY8RmlsdGVySW1hZ2U+PiBtX3Jlc3VsdHM7
CisgICAgLy8gVGhlIHZhbHVlIGlzIGEgbGlzdCBvZiBGaWx0ZXJFZmZlY3RzLCB3aG9zZSBGaWx0
ZXJJbWFnZXMgZGVwZW5kIG9uIHRoZSBrZXkgRmlsdGVySW1hZ2UuCisgICAgSGFzaE1hcDxSZWY8
RmlsdGVySW1hZ2U+LCBGaWx0ZXJFZmZlY3RTZXQ+IG1fcmVzdWx0UmVmZXJlbmNlczsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKaW5kZXggODk5NjIwNjMwNDk5OGI1MzUwN2M3MjQ2YzdmYWY3NWJkMjc4ZTYyMC4uODBmY2Jl
NWE0NjkwNzkzOGE4NGJmZTAwY2E2ZDQ1NDc2NmZhMDk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAKQEAgLTM4MSwxMyArMzgxLDcgQEAgYm9vbCBDU1NGaWx0ZXI6OnN1
cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIENTU0Zp
bHRlcjo6Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCkKLXsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0
aW9uIDogbV9mdW5jdGlvbnMpCi0gICAgICAgIGZ1bmN0aW9uLT5jbGVhclJlc3VsdCgpOwotfQot
Ci1SZWZQdHI8RmlsdGVySW1hZ2U+IENTU0ZpbHRlcjo6YXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJj
ZUltYWdlKQorUmVmUHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFwcGx5KEZpbHRlckltYWdl
KiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cykKIHsKICAgICBpZiAoIXNvdXJj
ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM5NSw3ICszODksNyBAQCBSZWZQ
dHI8RmlsdGVySW1hZ2U+IENTU0ZpbHRlcjo6YXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJjZUltYWdl
KQogICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gcmVzdWx0ID0gc291cmNlSW1hZ2U7CiAKICAgICBm
b3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKLSAgICAgICAgcmVzdWx0ID0gZnVu
Y3Rpb24tPmFwcGx5KCp0aGlzLCAqcmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24t
PmFwcGx5KCp0aGlzLCAqcmVzdWx0LCByZXN1bHRzKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmgKaW5kZXggYmVhMmIwYmI2Mjg3YzgxMWU0ZTE3ZDVhOGE0MjcyZmRjNDNlODU4Zi4u
Y2YzZGJkZWVhZDdlZWM4ODZkZWQ5N2Y3YzYwNDBlNDUyZTNhNzIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtNTcsOCArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRP
dXRzZXRzIG91dHNldHMoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7Ci0gICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShGaWx0ZXJJbWFnZSog
c291cmNlSW1hZ2UpIGZpbmFsOworICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoRmlsdGVy
SW1hZ2UqIHNvdXJjZUltYWdlLCBGaWx0ZXJSZXN1bHRzJikgZmluYWw7CiAKIHByaXZhdGU6CiAg
ICAgQ1NTRmlsdGVyKFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IENsaXBPcGVyYXRpb24sIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0Zp
bHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggOGMyMDNhMGNi
M2IwNDUzM2Y2OTQwMmIzODk3YWQ1MjhkNjEwYjQ3OC4uZjNmZjQ2MzVhZjEzMDI5YWVhNDJjNGJk
NjA0ODE2YTg3NzVjYzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVycy5jcHAKQEAgLTIyMiwxMCArMjIyLDggQEAgdm9pZCBSZW5kZXJMYXllckZp
bHRlcnM6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KQogICAgIEFTU0VSVChpbnB1dENvbnRleHQoKSk7CiAgICAgaW5wdXRDb250ZXh0KCktPnJl
c3RvcmUoKTsKIAotICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKLQotICAgIGRlc3RpbmF0
aW9uQ29udGV4dC5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihtX3NvdXJjZUltYWdlLmdldCgpLCBt
X2ZpbHRlclJlZ2lvbiwgZmlsdGVyKTsKLSAgICBmaWx0ZXIuY2xlYXJJbnRlcm1lZGlhdGVSZXN1
bHRzKCk7CisgICAgRmlsdGVyUmVzdWx0cyByZXN1bHRzOworICAgIGRlc3RpbmF0aW9uQ29udGV4
dC5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihtX3NvdXJjZUltYWdlLmdldCgpLCBtX2ZpbHRlclJl
Z2lvbiwgKm1fZmlsdGVyLCByZXN1bHRzKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJz
LCBzdHJlYW0gPDwgIlJlbmRlckxheWVyRmlsdGVycyAiIDw8IHRoaXMgPDwgIiBhcHBseUZpbHRl
ckVmZmVjdCBkb25lXG4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZWM1YWFjMTMwYWU0ZTdk
YmIxYjI4MjlhMzEwNDc1NDQ2ZmQ0MDRjMy4uYmJkNjViY2IzMDJlNWUxYjdjODFiNDUxOWY0Mzlm
ZTY5NmFjZjJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgR3JhcGhpYwogCiAgICAgaWYgKCFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKLSAg
ICAgICAgY29udGV4dC0+ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS5zb3VyY2VH
cmFwaGljQnVmZmVyLmdldCgpLCBmaWx0ZXJEYXRhLmRyYXdpbmdSZWdpb24sICpmaWx0ZXJEYXRh
LmZpbHRlcik7CisgICAgICAgIGNvbnRleHQtPmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKGZpbHRl
ckRhdGEuc291cmNlR3JhcGhpY0J1ZmZlci5nZXQoKSwgZmlsdGVyRGF0YS5kcmF3aW5nUmVnaW9u
LCAqZmlsdGVyRGF0YS5maWx0ZXIsIGZpbHRlckRhdGEucmVzdWx0cyk7CiAgICAgfQogCiAgICAg
TE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIgIiA8PCB0aGlzIDw8ICIgcG9zdEFwcGx5UmVzb3VyY2UgZG9uZVxuIik7CkBAIC0yNDUsNyAr
MjQ1LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0aXZlQXR0cmlidXRl
Q2hhbmdlZChSZW5kZXJPYmplY3QqIG9iamVjdCwgY28KICAgICAgICAgLy8gb3Igbm9uZSBvZiB0
aGVtIHdpbGwgYmUgY2hhbmdlZC4KICAgICAgICAgaWYgKCFwcmltaXR2ZS0+c2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKGVmZmVjdCwgYXR0cmlidXRlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgYnVpbGRlci0+Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCplZmZlY3QpOworICAgICAgICBm
aWx0ZXJEYXRhLT5yZXN1bHRzLmNsZWFyRWZmZWN0UmVzdWx0KCplZmZlY3QpOwogCiAgICAgICAg
IC8vIFJlcGFpbnQgdGhlIGltYWdlIG9uIHRoZSBzY3JlZW4uCiAgICAgICAgIG1hcmtDbGllbnRG
b3JJbnZhbGlkYXRpb24oKm9iamVjdEZpbHRlckRhdGFQYWlyLmtleSwgUmVwYWludEludmFsaWRh
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmgKaW5kZXggMDE4NTM4YWM5ZmE1MmVjYjkxYTVlNWY2NWM1Mzk4MTVi
MmE3MmJmYS4uMDUxYzg4ZGEzMDI1YzgwYjgzZGE2MzkxYWNhYjc0ZWQyMDM5OTlhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZp
bHRlclJlc3VsdHMuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCkBAIC01MSw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbjsKICAgICBGbG9h
dFNpemUgc2NhbGU7CiAgICAgRmlsdGVyRGF0YVN0YXRlIHN0YXRlIHsgUGFpbnRpbmdTb3VyY2Ug
fTsKKyAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7CiB9OwogCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmNwcAppbmRleCA2ZTBiNDQ5YTFhYjk0NDJkNzc1YTEwZjhkNTg2Yjk0NzQ3MGUyNmQyLi41ZDZi
NmUxMmUzODMzZTgwNDZkMTU5NDk0MDhmM2I3OTkwYTU4ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAgLTIzLDYgKzIzLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKIAorI2luY2x1
ZGUgIkZpbHRlclJlc3VsdHMuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5j
bHVkZSAiU1ZHRmlsdGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKQEAg
LTEzMCwxMiArMTMxLDEyIEBAIEZpbHRlckVmZmVjdFZlY3RvciBTVkdGaWx0ZXI6OmVmZmVjdHNP
ZlR5cGUoRmlsdGVyRnVuY3Rpb246OlR5cGUgZmlsdGVyVHlwZSkgY29uCiAgICAgcmV0dXJuIGNv
cHlUb1ZlY3RvcihlZmZlY3RzKTsKIH0KIAotUmVmUHRyPEZpbHRlckltYWdlPiBTVkdGaWx0ZXI6
OmFwcGx5KGNvbnN0IEZpbHRlciYsIEZpbHRlckltYWdlJiBzb3VyY2VJbWFnZSkKK1JlZlB0cjxG
aWx0ZXJJbWFnZT4gU1ZHRmlsdGVyOjphcHBseShjb25zdCBGaWx0ZXImLCBGaWx0ZXJJbWFnZSYg
c291cmNlSW1hZ2UsIEZpbHRlclJlc3VsdHMmIHJlc3VsdHMpCiB7Ci0gICAgcmV0dXJuIGFwcGx5
KCZzb3VyY2VJbWFnZSk7CisgICAgcmV0dXJuIGFwcGx5KCZzb3VyY2VJbWFnZSwgcmVzdWx0cyk7
CiB9CiAKLVJlZlB0cjxGaWx0ZXJJbWFnZT4gU1ZHRmlsdGVyOjphcHBseShGaWx0ZXJJbWFnZSog
c291cmNlSW1hZ2UpCitSZWZQdHI8RmlsdGVySW1hZ2U+IFNWR0ZpbHRlcjo6YXBwbHkoRmlsdGVy
SW1hZ2UqIHNvdXJjZUltYWdlLCBGaWx0ZXJSZXN1bHRzJiByZXN1bHRzKQogewogICAgIEFTU0VS
VCghbV9leHByZXNzaW9uLmlzRW1wdHkoKSk7CiAKQEAgLTE0Niw4ICsxNDcsOCBAQCBSZWZQdHI8
RmlsdGVySW1hZ2U+IFNWR0ZpbHRlcjo6YXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJjZUltYWdlKQog
ICAgICAgICBhdXRvIGdlb21ldHJ5ID0gdGVybS5nZW9tZXRyeTsKIAogICAgICAgICBpZiAoZWZm
ZWN0LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBlZmZlY3QtPmZpbHRlckltYWdlKCkpIHsK
LSAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQocmVzdWx0LnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gcmVzdWx0cy5lZmZlY3RSZXN1bHQoZWZmZWN0
KSkgeworICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZCh7ICpyZXN1bHQgfSk7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTE2MSwxMiArMTYyLDcgQEAg
UmVmUHRyPEZpbHRlckltYWdlPiBTVkdGaWx0ZXI6OmFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJ
bWFnZSkKICAgICAgICAgLy8gTmVlZCB0byByZW1vdmUgdGhlIGlucHV0cyBoZXJlIGluIGNhc2Ug
dGhlIGVmZmVjdCBhbHJlYWR5IGhhcyBhIHJlc3VsdC4KICAgICAgICAgYXV0byBpbnB1dHMgPSBl
ZmZlY3QtPnRha2VJbWFnZUlucHV0cyhzdGFjayk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0
ID0gZWZmZWN0LT5maWx0ZXJJbWFnZSgpKSB7Ci0gICAgICAgICAgICBzdGFjay5hcHBlbmQocmVz
dWx0LnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBhdXRvIHJlc3VsdCA9IHRlcm0uZWZmZWN0LT5hcHBseSgqdGhpcywgaW5wdXRz
LCBnZW9tZXRyeSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGVybS5lZmZlY3QtPmFwcGx5KCp0
aGlzLCBpbnB1dHMsIHJlc3VsdHMsIGdlb21ldHJ5KTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTgzLDEzICsxNzksNiBAQCBJbnRPdXRz
ZXRzIFNWR0ZpbHRlcjo6b3V0c2V0cygpIGNvbnN0CiAgICAgcmV0dXJuIGxhc3RFZmZlY3QoKS0+
b3V0c2V0cygpOwogfQogCi12b2lkIFNWR0ZpbHRlcjo6Y2xlYXJSZXN1bHQoKQotewotICAgIEFT
U0VSVCghbV9leHByZXNzaW9uLmlzRW1wdHkoKSk7Ci0gICAgZm9yIChhdXRvJiB0ZXJtIDogbV9l
eHByZXNzaW9uKQotICAgICAgICB0ZXJtLmVmZmVjdC0+Y2xlYXJSZXN1bHQoKTsKLX0KLQogVGV4
dFN0cmVhbSYgU1ZHRmlsdGVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRz
LCBGaWx0ZXJSZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbikgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8gaXQgPSBtX2V4cHJlc3Npb24ucmJlZ2luKCksIGVuZCA9IG1fZXhwcmVzc2lvbi5yZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA4ZTE2NTA1MTg0OWJmNGQxZWExOGI0OTIxZWIyNGU5
NmViY2U2OTZiLi41MTE3MjA0Yzc3ZWU0OWY0ODZmYjI2ODEyOTlkYTAwOGRjNWVhMGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVj
dCgpIGNvbnN0IGZpbmFsOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciBlZmZlY3RzT2ZUeXBlKEZp
bHRlckZ1bmN0aW9uOjpUeXBlKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0cjxGaWx0ZXJJbWFn
ZT4gYXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJjZUltYWdlKSBmaW5hbDsKKyAgICBSZWZQdHI8Rmls
dGVySW1hZ2U+IGFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYp
IGZpbmFsOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdU
Rjo6VGV4dFN0cmVhbSYsIEZpbHRlclJlcHJlc2VudGF0aW9uKSBjb25zdCBmaW5hbDsKIApAQCAt
NjQsOSArNjQsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgRmxvYXRTaXplIHJlc29sdmVkU2l6
ZShjb25zdCBGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0cjxGaWx0ZXJJbWFn
ZT4gYXBwbHkoY29uc3QgRmlsdGVyJiwgRmlsdGVySW1hZ2UmIHNvdXJjZUltYWdlKSBmaW5hbDsK
KyAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIEZpbHRlckltYWdl
JiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYpIGZpbmFsOwogICAgIEludE91dHNldHMgb3V0
c2V0cygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY2xlYXJSZXN1bHQoKSBmaW5hbDsKIAogICAg
IEZsb2F0UmVjdCBtX3RhcmdldEJvdW5kaW5nQm94OwogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUgbV9wcmltaXRpdmVVbml0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggMWEwYzUyYzRhZWJk
ZjU5NGUwMDc3MjJjNjMxNWRiNmI2YmQ3ODdiMS4uNjI4YzIwZjlmOTNmNWVhNTc3MGQwMzBmZGRk
MmE2NTY0MzMyMTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgdm9pZCBT
VkdGaWx0ZXJCdWlsZGVyOjpzZXR1cEJ1aWx0aW5FZmZlY3RzKFJlZjxGaWx0ZXJFZmZlY3Q+IHNv
dXJjZUdyYXBoaWMpCiB7CiAgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlR3JhcGhpYzo6
ZWZmZWN0TmFtZSgpLCBzb3VyY2VHcmFwaGljLnB0cigpKTsKICAgICBtX2J1aWx0aW5FZmZlY3Rz
LmFkZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpLCBTb3VyY2VBbHBoYTo6Y3JlYXRlKHNvdXJj
ZUdyYXBoaWMpKTsKLSAgICBhZGRCdWlsdGluRWZmZWN0cygpOwogfQogCiBzdGF0aWMgT3B0aW9u
U2V0PEZpbHRlckVmZmVjdEdlb21ldHJ5OjpGbGFncz4gZWZmZWN0R2VvbWV0cnlGbGFnc0ZvckVs
ZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKQEAgLTEwMiwxNCArMTAxLDExIEBAIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZmZWN0cyhTVkdGaWx0
ZXJFbGVtZW50JiBmaWx0CiAjZW5kaWYKIAogICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IGVm
ZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGFwcGVuZEVmZmVjdFRvRWZmZWN0
UmVmZXJlbmNlcyhlZmZlY3QuY29weVJlZigpLCByZW5kZXJlcik7CisgICAgICAgICAgICBhcHBl
bmRFZmZlY3RUb0VmZmVjdFJlbmRlcmVyKGVmZmVjdC5nZXQoKSwgcmVuZGVyZXIpOwogCiAgICAg
ICAgIGFkZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwogICAgIH0KIAotICAgIGlm
ICghZWZmZWN0KQotICAgICAgICBjbGVhckVmZmVjdHMoKTsKLQogICAgIHJldHVybiBlZmZlY3Q7
CiB9CiAKQEAgLTE0Miw0NCArMTM4LDE2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRl
ckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0CiAgICAg
cmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyQnVpbGRl
cjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYg
ZWZmZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBw
ZW5kRWZmZWN0VG9FZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3bHkgY3JlYXRl
ZCBmaWx0ZXIgZWZmZWN0LgotICAgIEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5z
KGVmZmVjdCkpOwogICAgIEFTU0VSVCghb2JqZWN0IHx8ICFtX2VmZmVjdFJlbmRlcmVyLmNvbnRh
aW5zKG9iamVjdCkpOwotICAgIG1fZWZmZWN0UmVmZXJlbmNlcy5hZGQoZWZmZWN0LCBGaWx0ZXJF
ZmZlY3RTZXQoKSk7Ci0KLSAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0RWZmZWN0cyA9IGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCkuc2l6ZSgpOwotCi0gICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRv
IGFkZCB0aGUgc2FtZSB2YWx1ZSB0byBhIHNldCB0d2ljZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkKLSAgICAgICAgZWZmZWN0UmVmZXJl
bmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0KGkpKS5hZGQoZWZmZWN0LmdldCgpKTsKIAogICAgIC8v
IElmIG9iamVjdCBpcyBudWxsLCB0aGF0IG1lYW5zIHRoZSBlbGVtZW50IGlzbid0IGF0dGFjaGVk
IGZvciBzb21lCiAgICAgLy8gcmVhc29uLCB3aGljaCBpbiB0dXJuIG1lYW4gdGhhdCBjZXJ0YWlu
IHR5cGVzIG9mIGludmFsaWRhdGlvbiB3aWxsIG5vdAogICAgIC8vIHdvcmsgKHRoZSBMYXlvdXRP
YmplY3QgLT4gRmlsdGVyRWZmZWN0IG1hcHBpbmcgd2lsbCBub3QgYmUgZGVmaW5lZCkuCiAgICAg
aWYgKG9iamVjdCkKLSAgICAgICAgbV9lZmZlY3RSZW5kZXJlci5hZGQob2JqZWN0LCBlZmZlY3Qu
Z2V0KCkpOwotfQotCi12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cygpCi17Ci0g
ICAgbV9sYXN0RWZmZWN0ID0gbnVsbHB0cjsKLSAgICBtX25hbWVkRWZmZWN0cy5jbGVhcigpOwot
ICAgIG1fZWZmZWN0UmVmZXJlbmNlcy5jbGVhcigpOwotICAgIG1fZWZmZWN0UmVuZGVyZXIuY2xl
YXIoKTsKLSAgICBhZGRCdWlsdGluRWZmZWN0cygpOwotfQotCi12b2lkIFNWR0ZpbHRlckJ1aWxk
ZXI6OmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZShGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKLXsKLSAgICBp
ZiAoIWVmZmVjdC5oYXNSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZWZmZWN0LmNs
ZWFyUmVzdWx0KCk7Ci0KLSAgICBmb3IgKGF1dG8mIHJlZmVyZW5jZSA6IGVmZmVjdFJlZmVyZW5j
ZXMoZWZmZWN0KSkKLSAgICAgICAgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCpyZWZlcmVuY2UpOwor
ICAgICAgICBtX2VmZmVjdFJlbmRlcmVyLmFkZChvYmplY3QsIGVmZmVjdCk7CiB9CiAKIHN0ZDo6
b3B0aW9uYWw8RmlsdGVyRWZmZWN0R2VvbWV0cnk+IFNWR0ZpbHRlckJ1aWxkZXI6OmVmZmVjdEdl
b21ldHJ5KEZpbHRlckVmZmVjdCYgZWZmZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDFkNmMy
MDg0ZGEyMTYxNjVlMWZhYjJiOTE3MjA5ZTlhMmE3MDE1YTYuLjZkODkzZDNiMzA5YzVhY2MwNTc1
Y2M0Zjc0M2MyZjdlMTBlMWFlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTM3LDggKzM3LDYgQEAgY2xh
c3MgU1ZHRmlsdGVyRWxlbWVudDsKIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaFNldDxGaWx0ZXJF
ZmZlY3QqPiBGaWx0ZXJFZmZlY3RTZXQ7Ci0KICAgICBTVkdGaWx0ZXJCdWlsZGVyKCkgPSBkZWZh
dWx0OwogCiAgICAgdm9pZCBzZXRUYXJnZXRCb3VuZGluZ0JveChjb25zdCBGbG9hdFJlY3QmIHIp
IHsgbV90YXJnZXRCb3VuZGluZ0JveCA9IHI7IH0KQEAgLTQ4LDQ0ICs0NiwyMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcmltaXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHVu
aXRzKSB7IG1fcHJpbWl0aXZlVW5pdHMgPSB1bml0czsgfQogCiAgICAgdm9pZCBhZGQoY29uc3Qg
QXRvbVN0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKLQogICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwotICAgIEZp
bHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQo
KTsgfQotCi0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZp
bHRlckVmZmVjdD4mJiwgUmVuZGVyT2JqZWN0Kik7Ci0KLSAgICBpbmxpbmUgRmlsdGVyRWZmZWN0
U2V0JiBlZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCYgZWZmZWN0KQotICAgIHsKLSAgICAg
ICAgLy8gT25seSBhbGxvd2VkIGZvciBlZmZlY3RzIGJlbG9uZ3MgdG8gdGhpcyBidWlsZGVyLgot
ICAgICAgICBBU1NFUlQobV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKCZlZmZlY3QpKTsKLSAg
ICAgICAgcmV0dXJuIG1fZWZmZWN0UmVmZXJlbmNlcy5maW5kKCZlZmZlY3QpLT52YWx1ZTsKLSAg
ICB9CiAKICAgICAvLyBSZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMgb2YgYSBmaWx0
ZXIgZHVyaW5nIGFuIHN2Z0F0dHJpYnV0ZUNoYW5nZWQuCisgICAgdm9pZCBhcHBlbmRFZmZlY3RU
b0VmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdCosIFJlbmRlck9iamVjdCopOwogICAgIGlubGlu
ZSBGaWx0ZXJFZmZlY3QqIGVmZmVjdEJ5UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpIHsg
cmV0dXJuIG1fZWZmZWN0UmVuZGVyZXIuZ2V0KG9iamVjdCk7IH0KIAotICAgIHZvaWQgY2xlYXJF
ZmZlY3RzKCk7Ci0gICAgdm9pZCBjbGVhclJlc3VsdHNSZWN1cnNpdmUoRmlsdGVyRWZmZWN0Jik7
Ci0KICAgICB2b2lkIHNldHVwQnVpbHRpbkVmZmVjdHMoUmVmPEZpbHRlckVmZmVjdD4gc291cmNl
R3JhcGhpYyk7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRGaWx0ZXJFZmZlY3RzKFNW
R0ZpbHRlckVsZW1lbnQmKTsKICAgICBib29sIGJ1aWxkRXhwcmVzc2lvbihTVkdGaWx0ZXJFeHBy
ZXNzaW9uJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgaW5saW5lIHZvaWQgYWRkQnVpbHRpbkVm
ZmVjdHMoKQotICAgIHsKLSAgICAgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBtX2J1aWx0aW5FZmZl
Y3RzLnZhbHVlcygpKQotICAgICAgICAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChlZmZlY3Qs
IEZpbHRlckVmZmVjdFNldCgpKTsKLSAgICB9Ci0KICAgICBzdGQ6Om9wdGlvbmFsPEZpbHRlckVm
ZmVjdEdlb21ldHJ5PiBlZmZlY3RHZW9tZXRyeShGaWx0ZXJFZmZlY3QmKSBjb25zdDsKICAgICBi
b29sIGJ1aWxkRWZmZWN0RXhwcmVzc2lvbihGaWx0ZXJFZmZlY3QmLCBGaWx0ZXJFZmZlY3RWZWN0
b3ImIHN0YWNrLCB1bnNpZ25lZCBsZXZlbCwgU1ZHRmlsdGVyRXhwcmVzc2lvbiYpIGNvbnN0Owog
CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pj4gbV9idWlsdGlu
RWZmZWN0czsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBt
X25hbWVkRWZmZWN0czsKLSAgICAvLyBUaGUgdmFsdWUgaXMgYSBsaXN0LCB3aGljaCBjb250YWlu
cyB0aG9zZSBmaWx0ZXIgZWZmZWN0cywKLSAgICAvLyB3aGljaCBkZXBlbmRzIG9uIHRoZSBrZXkg
ZmlsdGVyIGVmZmVjdC4KLSAgICBIYXNoTWFwPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+LCBGaWx0ZXJF
ZmZlY3RTZXQ+IG1fZWZmZWN0UmVmZXJlbmNlczsKICAgICBIYXNoTWFwPFJlbmRlck9iamVjdCos
IEZpbHRlckVmZmVjdCo+IG1fZWZmZWN0UmVuZGVyZXI7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBtX2xhc3RFZmZlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZThm
NmY3YmUxOTU2ZTZjYWM0NDIxZTVhYTM0NjE3OTU0NzY5ZmYwZC4uYzI2N2E3Y2QyYTg1NDJlODZm
MWJkZjgxYjMzOTlhZTViNmQ1NjRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRmlsdGVyUmVzdWx0cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtMjU1LDcgKzI1Niw4IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdS
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUltYWdlUmVjdCwg
V1RGTW92ZShmaWx0ZXIpKSwgc291cmNlSW1hZ2UuZ2V0KCkpOworICAgIEZpbHRlclJlc3VsdHMg
cmVzdWx0czsKKyAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3RmlsdGVyZWRJbWFnZUJ1
ZmZlcihzb3VyY2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUltYWdlUmVjdCwgV1RGTW92ZShmaWx0
ZXIpKSwgc291cmNlSW1hZ2UuZ2V0KCksIHJlc3VsdHMpOwogfQogCiB2b2lkIFJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXI6OmRyYXdHbHlwaHMoRGlzcGxheUxpc3Q6OkRyYXdHbHlwaHMmJiBpdGVt
KQo=
</data>
<flag name="review"
          id="474148"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448605</attachid>
            <date>2022-01-07 09:46:49 -0800</date>
            <delta_ts>2022-01-07 14:22:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232840-20220107094648.patch</filename>
            <type>text/plain</type>
            <size>49127</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjZmJmMDc3MWIxMmU5
ZTg3ODQ1MzFjODY3OTQ0NTZiODhhNjRhOC4uOWRhMjA3ZmZmMTlmYjdiOTZkNzFiMmVkNDk4OGNk
ODMzOTMxOTVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIyLTAxLTA3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UmVtb3ZlIHRoZSByZXN1bHQgRmlsdGVySW1hZ2UgZnJvbSBGaWx0ZXJFZmZlY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0MAorICAgICAgICBy
ZGFyOi8vODU0MjU4NDIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBSZW1vdmluZyB0aGUgcmVzdWx0IEZpbHRlckltYWdlIGZyb20gRmlsdGVyRWZmZWN0IHdp
bGwgYWxsb3cgcmV1c2luZyB0aGUKKyAgICAgICAgc2FtZSBGaWx0ZXJFZmZlY3QgZm9yIGFsbCB0
aGUgcmVuZGVyZXJzIHRoYXQgcmVmZXJlbmNlIGl0LiBUaGUgcmVzdWx0cyAKKyAgICAgICAgd2ls
bCBub3cgYmUgc3RvcmVkIGluIHRoZSBuZXcgY2xhc3MgJ0ZpbHRlclJlc3VsdHMnLgorCisgICAg
ICAgIC0tIEZpbHRlckRhdGEgc3RpbGwga2VlcHMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdGhl
IEZpbHRlciB0byBpdHMKKyAgICAgICAgICAgcmVuZGVyZXIgaW4gYSBuZXcgbWVtYmVyIG9mIHR5
cGUgRmlsdGVyUmVzdWx0cy4KKworICAgICAgICAtLSBSZW5kZXJMYXllckZpbHRlcnMgd2lsbCBu
b3QgbmVlZCB0byBjbGVhciBpdHMgQ1NTRmlsdGVyIGludGVybWVkaWF0ZQorICAgICAgICAgICBy
ZXN1bHRzIGJlY2F1c2UgdGhpcyB3aWxsIGhhcHBlbiBvbmNlIHRoZSB0ZW1wb3JhcnkgRmlsdGVy
UmVzdWx0cyBnb2VzCisgICAgICAgICAgIG91dCBvZiBzY29wZS4KKworICAgICAgICBGaWx0ZXJS
ZXN1bHRzIHdpbGwgaGF2ZSB0d28gbWFwczoKKworICAgICAgICAxLiBGaWx0ZXJFZmZlY3QgLT4g
RmlsdGVySW1hZ2U6IFRoZSB2YWx1ZSBpcyB0aGUgcmVzdWx0IEZpbHRlckltYWdlIG9mIAorICAg
ICAgICAgICBhcHBseWluZyB0aGUgRmlsdGVyRWZmZWN0LgorICAgICAgICAyLiBGaWx0ZXJJbWFn
ZSAtPiBGaWx0ZXJFZmZlY3RTZXQ6IFRoZSB2YWx1ZSBpcyBhIGxpc3Qgb2YgRmlsdGVyRWZmZWN0
cywKKyAgICAgICAgICAgd2hvc2UgRmlsdGVySW1hZ2VzIGRlcGVuZCBvbiB0aGUga2V5IEZpbHRl
ckltYWdlLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1cnNpdmUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6Omhhc1Jlc3VsdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZpbHRlckltYWdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1
bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6YXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246Om91dHNldHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmNsZWFyUmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzOjplZmZlY3RSZXN1bHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6c2V0RWZmZWN0UmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlclJlc3VsdHM6OmNsZWFyRWZmZWN0UmVzdWx0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpjbGVhclJl
c3VsdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpzZXR1cEJ1aWx0aW5FZmZlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZmZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0Vm
ZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVu
ZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpsYXN0RWZmZWN0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmVmZmVjdFJlZmVyZW5jZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YWRkQnVpbHRpbkVm
ZmVjdHMpOiBEZWxldGVkLgorCiAyMDIyLTAxLTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBNaWNyb3Bob25lIGRldmljZSBmaWx0ZXJpbmcgaGV1cmlzdGlj
IGlzIHRvbyBoYXJzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOTYyZWIwMTZjYTk5MmI5N2Y1OGEyM2VkMWI5Mzg4
ZDVlYTUzNzA4Li5lMjMwYTFlZTgzMDgzZjU2MDIzOTE4NGYxNTAzOTA5ZWMwYTdmY2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTA3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
aWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIHRoZSByZXN1bHQg
RmlsdGVySW1hZ2UgZnJvbSBGaWx0ZXJFZmZlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0MAorICAgICAgICByZGFyOi8vODU0MjU4NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKToKKwog
MjAyMi0wMS0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
TWljcm9waG9uZSBkZXZpY2UgZmlsdGVyaW5nIGhldXJpc3RpYyBpcyB0b28gaGFyc2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IDkwODJlMmI2YmQyNGZjMzA2YTRhYzkwNDM3OGZmYmY1NzQ1OWEyMTku
LjRlMjYwYjgzMGJiMTExOTc5YzhjNWM0Y2Y5NmJjMTE3MjU5NmI1MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTYxMyw2ICsxNjEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2VWZWN0b3Iu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9MaWdodFNvdXJjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2lu
dExpZ2h0U291cmNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA1YjAxODZlYzQ1ZjlhMWFhZWYxZWZjMWEyNGE4YzY1NWM5YjY5ZDk2Li44MzIxY2Ex
YjNmODE3YWI3Mjk2NTEzYTc5MzQ4ZTc5ZWViZTk4NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzM1LDYgKzIzMzUsNyBA
QAogCQk3MkI4QjAzNTI3NTM0Mzg2MDBGNzUyQUEgLyogRmlsdGVyRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjJENzU2MjcyQTE3NDEw
MEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyQjhCMDM2Mjc1MzQ0MTQwMEY3NTJBQSAvKiBGaWx0ZXJJ
bWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
MzVFRjQyNzNEMDc2NzAwMDVFN0VFIC8qIEZpbHRlckltYWdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFD
IC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFj
a2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcyRDczNjQ0Mjc4NDYxQTAwMDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgyMDA3NkZF
RjggLyogRmlsdGVyUmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9n
Z2luZ0RvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzJGNjY3REYyNjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NG
RTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEy
ODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBEMENFMEIz
MDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50
LmggKi87IH07CkBAIC0xMTIxOSw2ICsxMTIyMCw3IEBACiAJCTcxRjZFRTQxMjU1RURGOUMwMEZD
NEM1QiAvKiBHcmlkVHJhY2tTaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyaWRUcmFja1NpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUY5MzZGNzFERDRGOTlCMDA5MjJDQzcgLyogdHJhY2tzLXN1cHBvcnQuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAidHJhY2tzLXN1cHBvcnQuanMiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZGODUxODIyQTNGODFGMDA1RDU5NTkgLyogTmF2aWdh
dG9yTWF4VG91Y2hQb2ludHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvck1h
eFRvdWNoUG9pbnRzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxMUI1RDYy
NzY1MzY4MjAwNzZGRUY4IC8qIEZpbHRlclJlc3VsdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVy
UmVzdWx0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjE0NDM0NTIyNDBDOEJB
MDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
MTRCOUI3Mjc0NDU4RkEwMDNCRTZERiAvKiBGaWx0ZXJFZmZlY3RWZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmlsdGVyRWZmZWN0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjc5Niw2ICsyNjc5OCw3IEBACiAJCQkJNDlFQ0VCNjQxNDk5NzkwRDAwQ0REM0E0IC8qIEZp
bHRlck9wZXJhdGlvbi5oICovLAogCQkJCTQ5RUNFQjY1MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmls
dGVyT3BlcmF0aW9ucy5oICovLAorCQkJCTcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0
ZXJSZXN1bHRzLmggKi8sCiAJCQkJODQ3MzBENzQxMjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291
cmNlLmggKi8sCiAJCQkJQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3Vy
Y2UuY3BwICovLAogCQkJCTg0NzMwRDc1MTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291
cmNlLmggKi8sCkBAIC0zNDM5MSw2ICszNDM5NCw3IEBACiAJCQkJNzI0Njk2M0UyNzVDNjE2NzAw
QTkxNTZBIC8qIEZpbHRlckltYWdlVmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI2
RTE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzJENzM2NDQyNzg0NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVk
VGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQjdEMkREMjUwRkQ4MjgwMDAyMDdB
QSAvKiBGbGV4Rm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmlu
ZGV4IDJmZDQyMjliNzEyN2YwNDkwZDQyZDU0MWUxNDRhZDZhOWQ4ZTFmZWIuLmVmMzY5OTJhYzA0
Mjg4Y2Y1YmY5MjhlM2FjMzMyNTJiODU5NGFkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckltYWdlLmgi
CisjaW5jbHVkZSAiRmlsdGVyUmVzdWx0cy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKIApAQCAtMTQ2LDcgKzE0Nyw5IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3Jl
dGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gZmlsdGVyLmFwcGx5KHRoaXMsIHsgeyB9LCBsb2dpY2FsU2l6ZSgpIH0pOwor
ICAgICAgICAKKyAgICAgICAgRmlsdGVyUmVzdWx0cyByZXN1bHRzOworICAgICAgICBhdXRvIHJl
c3VsdCA9IGZpbHRlci5hcHBseSh0aGlzLCB7IHsgfSwgbG9naWNhbFNpemUoKSB9LCByZXN1bHRz
KTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKaW5kZXggNDk0ODhjNTk5NjMyMWZiZjY1MjIyNzdiYTBjOTY5ZTUwNzBmZDVkZC4uYWU1
NmY1MDQ1NGIxMjk5MWVkNTQ3NDE3YTlhM2RiMDA0YTFlNTJmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC02MzEs
OSArNjMxLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZl
cihSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdAogICAgIEltYWdlQnVmZmVyOjpkcmF3
Q29uc3VtaW5nKFdURk1vdmUoaW1hZ2UpLCAqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0
aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VS
ZWN0LCBGaWx0ZXImIGZpbHRlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBGaWx0ZXImIGZpbHRlciwgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cykKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseShzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VS
ZWN0KTsKKyAgICBhdXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseShzb3VyY2VJbWFnZSwgc291cmNl
SW1hZ2VSZWN0LCByZXN1bHRzKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAppbmRleCAzMmVhMmVkMTQ1MWM1NGI0Y2RlODEzMGE0OTM3ZTdkNTMyMDE2YTNmLi4x
ZWRkNDkzMmE2ZmE1MzA5NjIzM2I2YzU0ZmQzZGMyNTllNDdlMGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODYsNiAr
ODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNs
YXNzIEZpbHRlcjsKK2NsYXNzIEZpbHRlclJlc3VsdHM7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0
OwogY2xhc3MgR3JhZGllbnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7
CkBAIC00NTIsNyArNDUzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZWZQ
dHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBG
aWx0ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCwgRmlsdGVyJiwgRmlsdGVyUmVzdWx0cyYpOwogCiAgICAgdmlydHVhbCB2b2lk
IGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAw
OWYyYjU3YzY0YThkMjFlMjk2NTFlYWY1N2MxYzc3Nzk3Nzg2ZjVmLi4zMWFjOGI0YWQ3ZGJmNzJk
YTM2NGEwNTU3NzZmNmIyOTc5YTQ2OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCkBAIC0zMTIsOSArMzEyLDkgQEAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBE
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY28KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogc291
cmNlSW1hZ2UpCit2b2lkIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYg
cmVzdWx0cykKIHsKLSAgICBjb250ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUlt
YWdlLCBtX3NvdXJjZUltYWdlUmVjdCwgbV9maWx0ZXIpOworICAgIGNvbnRleHQuZHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIG1fc291cmNlSW1hZ2VSZWN0LCBtX2ZpbHRlciwg
cmVzdWx0cyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciYgaXRlbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCmluZGV4IDgzNWIwMTJkNWZjMGI0OTYwNGVmM2FlYWJmNTExYWE2MWNi
M2UyMjIuLmVmMGMxODc3ZDE5MzhiZGMwNjEwNTRiOTQyZmE2MjgwYmM0N2YyMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNzM3LDcgKzczNyw3IEBAIHB1YmxpYzoKICAg
ICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
blJlY3Q7IH0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVy
SWRlbnRpZmllci5pc1ZhbGlkKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlQnVmZmVyJikgY29u
c3Q7CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OwogCkBAIC05MjQsNyArOTI0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVj
dCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUltYWdlUmVjdDsgfQog
CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYs
IFdlYkNvcmU6OkltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIEZp
bHRlclJlc3VsdHMmKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VJbWFnZVJlY3Q7IH0KQEAgLTEwMzksNyArMTAzOSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byB2YWxpZGF0ZSBJbWFnZVBhaW50aW5nT3B0aW9u
cy4KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRp
Zmllci5pc1ZhbGlkKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlQnVmZmVyJikgY29uc3Q7CiAK
ICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
NzlmYzliN2MzY2RkNzJmYjg3MWUxMTQ5NmU4NWNkNzY4ZWQwZjczMC4uZTAxMGM5ZDBlZjczYzEw
NjRkMTFlMzI5ZDViMGJiMWYwZTQ0YzFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBSZWNvcmRlcjo6c2V0TWl0
ZXJMaW1pdChmbG9hdCBtaXRlckxpbWl0KQogICAgIHJlY29yZFNldE1pdGVyTGltaXQobWl0ZXJM
aW1pdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdl
QnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZp
bHRlciYgZmlsdGVyKQordm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwg
RmlsdGVyJiBmaWx0ZXIsIEZpbHRlclJlc3VsdHMmIHJlc3VsdHMpCiB7CiAgICAgYXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKIAogICAgIGlmIChzb3VyY2VJbWFnZSAmJiAhY2Fu
RHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSkpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBm
aWx0ZXIpOworICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
KHNvdXJjZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlciwgcmVzdWx0cyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdAogICAgICAgICApOwogCiAgICAgICAgIGlmICghaXNSZWNvcmRlZCkgewotICAgICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwg
c291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0
ZXIsIHJlc3VsdHMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMDJhZTU3MDYxMmUzNGI4MjNm
NjA3NGJmZWZkZTM2MGVlZTg3ZTYxZC4uMThkOTMzMzk1OTE4ZmRlMjE5YTIwYTZjMjFmZTQ1ZWIw
NGEyNjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yMjUs
NyArMjI1LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5RmlsbFBh
dHRlcm4oKSBmaW5hbDsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRlciYsIEZpbHRlclJlc3VsdHMmKSBm
aW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhp
bmdNb2RlKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdHbHlwaHNBbmRDYWNo
ZUZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNo
b3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAppbmRleCA4MzZlMTNjOTc1Y2UwNmI0
YTBkNGQ1YjA4ZmNhZTQ2YTYxN2IyNmJkLi5iYmVlZmU3Y2ExZWNjZDIxYmJkZDIyOTg0YzgxMDc1
MzkyMThkMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIxLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNyArODEsNyBAQCBib29sIEZpbHRlcjo6Y2xhbXBGaWx0
ZXJSZWdpb25JZk5lZWRlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxGaWx0ZXJJ
bWFnZT4gRmlsdGVyOjphcHBseShJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlSW1hZ2VSZWN0KQorUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXI6OmFwcGx5
KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIEZpbHRlclJlc3VsdHMmIHJlc3VsdHMpCiB7CiAgICAgUmVmUHRyPEZpbHRlckltYWdlPiBp
bnB1dDsKIApAQCAtOTIsNyArOTIsNyBAQCBSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBw
bHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBhcHBseShp
bnB1dC5nZXQoKSk7CisgICAgYXV0byByZXN1bHQgPSBhcHBseShpbnB1dC5nZXQoKSwgcmVzdWx0
cyk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA3
YzU1ZjM0M2YwYjYwMDljNjUwMmVhMjlhYjE2MWI5ZmUwYjhmNGFkLi5hMWY1NDAyOGQzOWY3YjVl
YTYxNWYzYWRhYmExY2ZmMjUxOTU4ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGaWx0ZXJFZmZlY3Q7CiBjbGFzcyBGaWx0ZXJJbWFnZTsKK2NsYXNzIEZpbHRlclJlc3VsdHM7
CiAKIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiAgICAgdXNpbmcgRmls
dGVyRnVuY3Rpb246OmFwcGx5OwpAQCAtNjUsOCArNjYsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGNsYW1wRmlsdGVyUmVnaW9uSWZOZWVkZWQoKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRl
ckltYWdlPiBhcHBseShGaWx0ZXJJbWFnZSogc291cmNlSW1hZ2UpID0gMDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpOworICAgIHZpcnR1YWwgUmVmUHRy
PEZpbHRlckltYWdlPiBhcHBseShGaWx0ZXJJbWFnZSogc291cmNlSW1hZ2UsIEZpbHRlclJlc3Vs
dHMmKSA9IDA7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShJ
bWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0
LCBGaWx0ZXJSZXN1bHRzJik7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBGaWx0ZXJGdW5jdGlv
bjo6RmlsdGVyRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggN2M5NTFmZWE0YmRlZGIy
MTkwMDQxZGU3MWMyYTE3YTZiYjVkMTU4ZS4uMTA2OWRmMmU5OGVhYmUwMGNkMWY3MGJhNDBhYzll
OTkwYjk1YzVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMyw3ICszLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0QXBwbGllci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdEdl
b21ldHJ5LmgiCisjaW5jbHVkZSAiRmlsdGVyUmVzdWx0cy5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KQEAgLTk5LDE3ICsxMDAsMTcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcnJlY3RQcmVt
dWx0aXBsaWVkSW5wdXRzKGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMpIGMKICAgICAg
ICAgaW5wdXQtPmNvcnJlY3RQcmVtdWx0aXBsaWVkUGl4ZWxCdWZmZXIoKTsKIH0KIAotUmVmUHRy
PEZpbHRlckltYWdlPiBGaWx0ZXJFZmZlY3Q6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBG
aWx0ZXJJbWFnZSYgaW5wdXQpCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBw
bHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIEZpbHRlckltYWdlJiBpbnB1dCwgRmlsdGVyUmVzdWx0
cyYgcmVzdWx0cykKIHsKLSAgICByZXR1cm4gYXBwbHkoZmlsdGVyLCBGaWx0ZXJJbWFnZVZlY3Rv
ciB7IFJlZiB7IGlucHV0IH0gfSk7CisgICAgcmV0dXJuIGFwcGx5KGZpbHRlciwgRmlsdGVySW1h
Z2VWZWN0b3IgeyBSZWYgeyBpbnB1dCB9IH0sIHJlc3VsdHMpOwogfQogCi1SZWZQdHI8RmlsdGVy
SW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0
R2VvbWV0cnk+JiBnZW9tZXRyeSkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVyRWZmZWN0Ojph
cHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0
cywgRmlsdGVyUmVzdWx0cyYgcmVzdWx0cywgY29uc3Qgc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZl
Y3RHZW9tZXRyeT4mIGdlb21ldHJ5KQogewogICAgIEFTU0VSVChpbnB1dHMuc2l6ZSgpID09IG51
bWJlck9mSW1hZ2VJbnB1dHMoKSk7CiAKLSAgICBpZiAobV9maWx0ZXJJbWFnZSkKLSAgICAgICAg
cmV0dXJuIG1fZmlsdGVySW1hZ2U7CisgICAgaWYgKGF1dG8gcmVzdWx0ID0gcmVzdWx0cy5lZmZl
Y3RSZXN1bHQoKnRoaXMpKQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgYXV0byBwcmlt
aXRpdmVTdWJyZWdpb24gPSBjYWxjdWxhdGVQcmltaXRpdmVTdWJyZWdpb24oZmlsdGVyLCBpbnB1
dHMsIGdlb21ldHJ5KTsKICAgICBhdXRvIGltYWdlUmVjdCA9IGNhbGN1bGF0ZUltYWdlUmVjdChm
aWx0ZXIsIGlucHV0cywgcHJpbWl0aXZlU3VicmVnaW9uKTsKQEAgLTEyNiw4ICsxMjcsOCBAQCBS
ZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IEZpbHRlckltYWdlVgogICAgIGlmICghYXBwbGllcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBtX2ZpbHRlckltYWdlID0gRmlsdGVySW1hZ2U6OmNyZWF0ZShwcmlt
aXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwgYWJzb2x1dGVJbWFnZVJlY3QsIGlzQWxwaGFJbWFn
ZSwgaXNWYWxpZFByZW11bHRpcGxpZWQsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQ29s
b3JTcGFjZSk7Ci0gICAgaWYgKCFtX2ZpbHRlckltYWdlKQorICAgIGF1dG8gcmVzdWx0ID0gRmls
dGVySW1hZ2U6OmNyZWF0ZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwgYWJzb2x1dGVJ
bWFnZVJlY3QsIGlzQWxwaGFJbWFnZSwgaXNWYWxpZFByZW11bHRpcGxpZWQsIGZpbHRlci5yZW5k
ZXJpbmdNb2RlKCksIGltYWdlQ29sb3JTcGFjZSk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbQpA
QCAtMTQxLDEwICsxNDIsMTEgQEAgUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXJFZmZlY3Q6OmFw
cGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVYKICAgICBpZiAoaXNW
YWxpZFByZW11bHRpcGxpZWQpCiAgICAgICAgIGNvcnJlY3RQcmVtdWx0aXBsaWVkSW5wdXRzKGlu
cHV0cyk7CiAKLSAgICBpZiAoIWFwcGxpZXItPmFwcGx5KGZpbHRlciwgaW5wdXRzLCAqbV9maWx0
ZXJJbWFnZSkpCi0gICAgICAgIG1fZmlsdGVySW1hZ2UgPSBudWxscHRyOworICAgIGlmICghYXBw
bGllci0+YXBwbHkoZmlsdGVyLCBpbnB1dHMsICpyZXN1bHQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBtX2ZpbHRlckltYWdlOworICAgIHJlc3VsdHMuc2V0RWZmZWN0
UmVzdWx0KCp0aGlzLCBpbnB1dHMsIHsgKnJlc3VsdCB9KTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBGaWx0ZXJFZmZlY3QmIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVt
YmVyKSBjb25zdApAQCAtMTUzLDIwICsxNTUsNiBAQCBGaWx0ZXJFZmZlY3QmIEZpbHRlckVmZmVj
dDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVyKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0
RWZmZWN0cy5hdChudW1iZXIpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQo
KQotewotICAgIG1fZmlsdGVySW1hZ2UgPSBudWxscHRyOwotfQotCi12b2lkIEZpbHRlckVmZmVj
dDo6Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCkKLXsKLSAgICAvLyBDbGVhciBhbGwgcmVzdWx0cywg
cmVnYXJkbGVzcyB0aGF0IHRoZSBjdXJyZW50IGVmZmVjdCBoYXMKLSAgICAvLyBhIHJlc3VsdC4g
Q2FuIGJlIHVzZWQgaWYgYW4gZWZmZWN0IGlzIGluIGFuIGVycm9uZW91cyBzdGF0ZS4KLSAgICBj
bGVhclJlc3VsdCgpOwotICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9pbnB1dEVmZmVjdHMpCi0g
ICAgICAgIGVmZmVjdC0+Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7Ci19Ci0KIFRleHRTdHJlYW0m
IEZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgRmls
dGVyUmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb24pIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBkdW1wIHRoZSBzdWJSZWdpb25zIG9mIHRoZSBmaWx0ZXIgcHJpbWl0aXZlcyBo
ZXJlIGxhdGVyLiBUaGlzIGlzbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAwNjUyMDAxN2U5ZDIxZjdh
ZTc3MjMzMWVjY2FhMjcyN2RlMmFkOTAwLi5mMzg4MzEwZTIzYmJlZWJhNTRmYjZkMDkwZTFiZDIy
NTg5OTk2NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQWxleCBNYXRoZXdzIDxwb3NzZXNzZWRwZW5ndWluYm9iQGdtYWlsLmNvbT4KICAq
IENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDE3ICs0MywxMiBAQCBjbGFzcyBG
aWx0ZXJFZmZlY3QgOiBwdWJsaWMgRmlsdGVyRnVuY3Rpb24gewogICAgIHVzaW5nIEZpbHRlckZ1
bmN0aW9uOjphcHBseTsKIAogcHVibGljOgotICAgIHZvaWQgY2xlYXJSZXN1bHQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOwotICAgIGJvb2wgaGFzUmVzdWx0
KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJJbWFnZTsgfQotCi0gICAgUmVmUHRyPEZpbHRlcklt
YWdlPiBmaWx0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVySW1hZ2U7IH0KICAgICBG
aWx0ZXJJbWFnZVZlY3RvciB0YWtlSW1hZ2VJbnB1dHMoRmlsdGVySW1hZ2VWZWN0b3ImIHN0YWNr
KSBjb25zdDsKIAogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKCkgeyByZXR1
cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZlY3QmIGlucHV0RWZmZWN0KHVuc2ln
bmVkKSBjb25zdDsKIAotICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoY29uc3QgRmlsdGVy
JiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgY29uc3Qgc3RkOjpvcHRpb25hbDxG
aWx0ZXJFZmZlY3RHZW9tZXRyeT4mID0gc3RkOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8RmlsdGVy
SW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1
dHMsIEZpbHRlclJlc3VsdHMmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVjdEdlb21l
dHJ5PiYgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBvcGVyYXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNw
YWNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9
IGNvbG9yU3BhY2U7IH0KQEAgLTgzLDEyICs3OCwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVhdGVBcHBsaWVyKGNv
bnN0IEZpbHRlciYpIGNvbnN0ID0gMDsKIAotICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHko
Y29uc3QgRmlsdGVyJiwgRmlsdGVySW1hZ2UmIGlucHV0KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIEZpbHRlckltYWdlJiBpbnB1dCwgRmls
dGVyUmVzdWx0cyYpIG92ZXJyaWRlOwogCiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1faW5wdXRF
ZmZlY3RzOwogCi0gICAgUmVmUHRyPEZpbHRlckltYWdlPiBtX2ZpbHRlckltYWdlOwotCiAgICAg
RGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmgKaW5kZXggMDliN2U0
MTRkZDg3NWJkMWI1NGJkYmRjMTcxMmFlMzQyYTBmNWJiMi4uNjAwNTQ4NjUxMWQ3OTViOTA4YmU5
MDc2ODhiMDNlMGE4ZmY0N2U5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDcgQEAg
Y2xhc3MgVGV4dFN0cmVhbTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOwor
Y2xhc3MgRmlsdGVyUmVzdWx0czsKIAogZW51bSBjbGFzcyBGaWx0ZXJSZXByZXNlbnRhdGlvbiA6
IHVpbnQ4X3QgewogICAgIFRlc3RPdXRwdXQsCkBAIC05Niw5ICs5Nyw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBw
bHkoY29uc3QgRmlsdGVyJiwgRmlsdGVySW1hZ2UmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIEZpbHRlcklt
YWdlJiwgRmlsdGVyUmVzdWx0cyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIElu
dE91dHNldHMgb3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBjbGVhclJlc3VsdCgpIHsgfQogCiAgICAgdmlydHVhbCBXVEY6OlRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgRmlsdGVyUmVwcmVzZW50YXRpb24g
PSBGaWx0ZXJSZXByZXNlbnRhdGlvbjo6VGVzdE91dHB1dCkgY29uc3QgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3Vs
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVz
dWx0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1MGI2YmNlOTliZTZjZGMyZGJiOTc5MjBiMTlmOTA5NTA2MjI2
ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlclJlc3VsdHMuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVySW1hZ2VWZWN0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRmlsdGVyRWZmZWN0OworY2xhc3MgRmlsdGVySW1hZ2U7CisKK2Ns
YXNzIEZpbHRlclJlc3VsdHMgeworcHVibGljOgorICAgIEZpbHRlclJlc3VsdHMoKSA9IGRlZmF1
bHQ7CisKKyAgICBGaWx0ZXJJbWFnZSogZWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYgZWZmZWN0
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0cy5nZXQoZWZmZWN0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldEVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgY29u
c3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgUmVmPEZpbHRlckltYWdlPiYmIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIG1fcmVzdWx0cy5zZXQoeyBlZmZlY3QgfSwgV1RGTW92ZShyZXN1bHQp
KTsKKyAgICAgICAgCisgICAgICAgIGZvciAoYXV0byYgaW5wdXQgOiBpbnB1dHMpCisgICAgICAg
ICAgICBtX3Jlc3VsdFJlZmVyZW5jZXMuYWRkKGlucHV0LCBGaWx0ZXJFZmZlY3RTZXQoKSkuaXRl
cmF0b3ItPnZhbHVlLmFkZChlZmZlY3QpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJFZmZlY3RS
ZXN1bHQoRmlsdGVyRWZmZWN0JiBlZmZlY3QpCisgICAgeworICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9yZXN1bHRzLmZpbmQoZWZmZWN0KTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVz
dWx0cy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHJlc3VsdCA9
IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgbV9yZXN1bHRzLnJlbW92ZShpdGVyYXRvcik7CisK
KyAgICAgICAgZm9yIChhdXRvJiByZWZlcmVuY2UgOiBtX3Jlc3VsdFJlZmVyZW5jZXMuZ2V0KHJl
c3VsdCkpCisgICAgICAgICAgICBjbGVhckVmZmVjdFJlc3VsdChyZWZlcmVuY2UpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICB1c2luZyBGaWx0ZXJFZmZlY3RTZXQgPSBIYXNoU2V0PFJlZjxGaWx0
ZXJFZmZlY3Q+PjsKKyAgICBIYXNoTWFwPFJlZjxGaWx0ZXJFZmZlY3Q+LCBSZWY8RmlsdGVySW1h
Z2U+PiBtX3Jlc3VsdHM7CisgICAgLy8gVGhlIHZhbHVlIGlzIGEgbGlzdCBvZiBGaWx0ZXJFZmZl
Y3RzLCB3aG9zZSBGaWx0ZXJJbWFnZXMgZGVwZW5kIG9uIHRoZSBrZXkgRmlsdGVySW1hZ2UuCisg
ICAgSGFzaE1hcDxSZWY8RmlsdGVySW1hZ2U+LCBGaWx0ZXJFZmZlY3RTZXQ+IG1fcmVzdWx0UmVm
ZXJlbmNlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggODk5NjIwNjMwNDk5OGI1MzUwN2M3MjQ2YzdmYWY3NWJk
Mjc4ZTYyMC4uZjMyMjk2Njg1YWYzZTJhOGJlMTE1ZTJkYTgwYThmMGU0YzIxMjc4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0zODEsMTMgKzM4MSw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpz
dXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygpIGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBDU1NG
aWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCi17Ci0gICAgZm9yIChhdXRvJiBmdW5j
dGlvbiA6IG1fZnVuY3Rpb25zKQotICAgICAgICBmdW5jdGlvbi0+Y2xlYXJSZXN1bHQoKTsKLX0K
LQotUmVmUHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFwcGx5KEZpbHRlckltYWdlKiBzb3Vy
Y2VJbWFnZSkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gQ1NTRmlsdGVyOjphcHBseShGaWx0ZXJJbWFn
ZSogc291cmNlSW1hZ2UsIEZpbHRlclJlc3VsdHMmIHJlc3VsdHMpCiB7CiAgICAgaWYgKCFzb3Vy
Y2VJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zOTUsNyArMzg5LDcgQEAgUmVm
UHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFn
ZSkKICAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IHJlc3VsdCA9IHNvdXJjZUltYWdlOwogCiAgICAg
Zm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZ1
bmN0aW9uLT5hcHBseSgqdGhpcywgKnJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9u
LT5hcHBseSgqdGhpcywgKnJlc3VsdCwgcmVzdWx0cyk7CiAgICAgICAgIGlmICghcmVzdWx0KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NT
U0ZpbHRlci5oCmluZGV4IGJlYTJiMGJiNjI4N2M4MTFlNGUxN2Q1YThhNDI3MmZkYzQzZTg1OGYu
LmZiOTg4NGZhOWIxOTQ1MjhmMGQxMjk5OGQxNDY5YmEzOWIzMGUxMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw4ICsyNyw2IEBACiAKICNpbmNsdWRlICJGaWx0
ZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCi0jaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgotI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01Nyw4ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICBSZWZQ
dHI8RmlsdGVySW1hZ2U+IGFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSkgZmluYWw7Cisg
ICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShGaWx0ZXJJbWFnZSogc291cmNlSW1hZ2UsIEZp
bHRlclJlc3VsdHMmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBDU1NGaWx0ZXIoUmVuZGVyaW5n
TW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiwgYm9vbCBo
YXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJp
Y3RlZEJ5U2VjdXJpdHlPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJzLmNwcAppbmRleCA4YzIwM2EwY2IzYjA0NTMzZjY5NDAyYjM4OTdhZDUy
OGQ2MTBiNDc4Li5mM2ZmNDYzNWFmMTMwMjlhZWE0MmM0YmQ2MDQ4MTZhODc3NWNjODdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAt
MjIyLDEwICsyMjIsOCBAQCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZl
Y3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiAgICAgQVNTRVJUKGlucHV0
Q29udGV4dCgpKTsKICAgICBpbnB1dENvbnRleHQoKS0+cmVzdG9yZSgpOwogCi0gICAgYXV0byYg
ZmlsdGVyID0gKm1fZmlsdGVyOwotCi0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyKG1fc291cmNlSW1hZ2UuZ2V0KCksIG1fZmlsdGVyUmVnaW9uLCBmaWx0ZXIp
OwotICAgIGZpbHRlci5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKKyAgICBGaWx0ZXJSZXN1
bHRzIHJlc3VsdHM7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVm
ZmVyKG1fc291cmNlSW1hZ2UuZ2V0KCksIG1fZmlsdGVyUmVnaW9uLCAqbV9maWx0ZXIsIHJlc3Vs
dHMpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiUmVuZGVyTGF5
ZXJGaWx0ZXJzICIgPDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVyRWZmZWN0IGRvbmVcbiIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAppbmRleCBhNDYyYmJkZTgzYTY5Y2FjODAxNzdmNTk3ZjlkNzA2MzNiNjgw
ZTczLi5kMzYyZmFlZDVkMjRhNWYxZjE3ZTc1ZmFhYTg1MWQ4ZDc5NjBlYjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAKICAg
ICBpZiAoIWZpbHRlckRhdGEuYm91bmRhcmllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZmlsdGVy
RGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkJ1aWx0OwotICAgICAgICBjb250ZXh0LT5kcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIuZ2V0KCksIGZp
bHRlckRhdGEuZHJhd2luZ1JlZ2lvbiwgKmZpbHRlckRhdGEuZmlsdGVyKTsKKyAgICAgICAgY29u
dGV4dC0+ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVm
ZmVyLmdldCgpLCBmaWx0ZXJEYXRhLmRyYXdpbmdSZWdpb24sICpmaWx0ZXJEYXRhLmZpbHRlciwg
ZmlsdGVyRGF0YS5yZXN1bHRzKTsKICAgICB9CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVy
cywgc3RyZWFtIDw8ICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciAiIDw8IHRoaXMgPDwgIiBwb3N0
QXBwbHlSZXNvdXJjZSBkb25lXG4iKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjbwogICAgICAgICAvLyBvciBub25lIG9mIHRoZW0gd2lsbCBiZSBjaGFuZ2VkLgog
ICAgICAgICBpZiAoIXByaW1pdHZlLT5zZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoZWZmZWN0LCBh
dHRyaWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBidWlsZGVyLT5jbGVhclJl
c3VsdHNSZWN1cnNpdmUoKmVmZmVjdCk7CisgICAgICAgIGZpbHRlckRhdGEtPnJlc3VsdHMuY2xl
YXJFZmZlY3RSZXN1bHQoKmVmZmVjdCk7CiAKICAgICAgICAgLy8gUmVwYWludCB0aGUgaW1hZ2Ug
b24gdGhlIHNjcmVlbi4KICAgICAgICAgbWFya0NsaWVudEZvckludmFsaWRhdGlvbigqb2JqZWN0
RmlsdGVyRGF0YVBhaXIua2V5LCBSZXBhaW50SW52YWxpZGF0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRl
eCBlYTJjYzMxNTUwMzRlNGI2NzEwM2I0N2UwOTJkYWY0OWQ2MzFkOGQ2Li5lN2ZkYTE0N2E2MmFi
N2I5M2IzNGExNjU0MzBjODkyNGEwY2Y5OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC0yMyw2ICsyMyw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmlsdGVyUmVzdWx0cy5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIu
aCIKICNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAg
IEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uOwogICAgIEZsb2F0U2l6ZSBzY2FsZTsKICAgICBGaWx0
ZXJEYXRhU3RhdGUgc3RhdGUgeyBQYWludGluZ1NvdXJjZSB9OworICAgIEZpbHRlclJlc3VsdHMg
cmVzdWx0czsKIH07CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCmluZGV4IDZlMGI0NDlhMWFi
OTQ0MmQ3NzVhMTBmOGQ1ODZiOTQ3NDcwZTI2ZDIuLjQ0OWRlOTczZjg2MjQ0NmNiMGZiYzFmNWY4
M2IwZTQxYjIwYjE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNWR0ZpbHRlci5oIgogCisjaW5jbHVkZSAiRmlsdGVyUmVzdWx0cy5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU291cmNlR3JhcGhpYy5oIgpAQCAtMTMwLDEyICsxMzEsMTIgQEAgRmlsdGVyRWZmZWN0
VmVjdG9yIFNWR0ZpbHRlcjo6ZWZmZWN0c09mVHlwZShGaWx0ZXJGdW5jdGlvbjo6VHlwZSBmaWx0
ZXJUeXBlKSBjb24KICAgICByZXR1cm4gY29weVRvVmVjdG9yKGVmZmVjdHMpOwogfQogCi1SZWZQ
dHI8RmlsdGVySW1hZ2U+IFNWR0ZpbHRlcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgRmlsdGVySW1h
Z2UmIHNvdXJjZUltYWdlKQorUmVmUHRyPEZpbHRlckltYWdlPiBTVkdGaWx0ZXI6OmFwcGx5KGNv
bnN0IEZpbHRlciYsIEZpbHRlckltYWdlJiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYgcmVz
dWx0cykKIHsKLSAgICByZXR1cm4gYXBwbHkoJnNvdXJjZUltYWdlKTsKKyAgICByZXR1cm4gYXBw
bHkoJnNvdXJjZUltYWdlLCByZXN1bHRzKTsKIH0KIAotUmVmUHRyPEZpbHRlckltYWdlPiBTVkdG
aWx0ZXI6OmFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSkKK1JlZlB0cjxGaWx0ZXJJbWFn
ZT4gU1ZHRmlsdGVyOjphcHBseShGaWx0ZXJJbWFnZSogc291cmNlSW1hZ2UsIEZpbHRlclJlc3Vs
dHMmIHJlc3VsdHMpCiB7CiAgICAgQVNTRVJUKCFtX2V4cHJlc3Npb24uaXNFbXB0eSgpKTsKIApA
QCAtMTQ2LDggKzE0Nyw4IEBAIFJlZlB0cjxGaWx0ZXJJbWFnZT4gU1ZHRmlsdGVyOjphcHBseShG
aWx0ZXJJbWFnZSogc291cmNlSW1hZ2UpCiAgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSB0ZXJtLmdl
b21ldHJ5OwogCiAgICAgICAgIGlmIChlZmZlY3QtPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZl
Y3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9
IGVmZmVjdC0+ZmlsdGVySW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChy
ZXN1bHQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBy
ZXN1bHRzLmVmZmVjdFJlc3VsdChlZmZlY3QpKSB7CisgICAgICAgICAgICAgICAgc3RhY2suYXBw
ZW5kKHsgKnJlc3VsdCB9KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KIApAQCAtMTYxLDEyICsxNjIsNyBAQCBSZWZQdHI8RmlsdGVySW1hZ2U+IFNWR0ZpbHRlcjo6
YXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJjZUltYWdlKQogICAgICAgICAvLyBOZWVkIHRvIHJlbW92
ZSB0aGUgaW5wdXRzIGhlcmUgaW4gY2FzZSB0aGUgZWZmZWN0IGFscmVhZHkgaGFzIGEgcmVzdWx0
LgogICAgICAgICBhdXRvIGlucHV0cyA9IGVmZmVjdC0+dGFrZUltYWdlSW5wdXRzKHN0YWNrKTsK
IAotICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBlZmZlY3QtPmZpbHRlckltYWdlKCkpIHsKLSAg
ICAgICAgICAgIHN0YWNrLmFwcGVuZChyZXN1bHQucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGVybS5l
ZmZlY3QtPmFwcGx5KCp0aGlzLCBpbnB1dHMsIGdlb21ldHJ5KTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSB0ZXJtLmVmZmVjdC0+YXBwbHkoKnRoaXMsIGlucHV0cywgcmVzdWx0cywgZ2VvbWV0cnkp
OwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC0xODMsMTMgKzE3OSw2IEBAIEludE91dHNldHMgU1ZHRmlsdGVyOjpvdXRzZXRzKCkgY29uc3QK
ICAgICByZXR1cm4gbGFzdEVmZmVjdCgpLT5vdXRzZXRzKCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVy
OjpjbGVhclJlc3VsdCgpCi17Ci0gICAgQVNTRVJUKCFtX2V4cHJlc3Npb24uaXNFbXB0eSgpKTsK
LSAgICBmb3IgKGF1dG8mIHRlcm0gOiBtX2V4cHJlc3Npb24pCi0gICAgICAgIHRlcm0uZWZmZWN0
LT5jbGVhclJlc3VsdCgpOwotfQotCiBUZXh0U3RyZWFtJiBTVkdGaWx0ZXI6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIEZpbHRlclJlcHJlc2VudGF0aW9uIHJlcHJlc2Vu
dGF0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byBpdCA9IG1fZXhwcmVzc2lvbi5yYmVnaW4o
KSwgZW5kID0gbV9leHByZXNzaW9uLnJlbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCmluZGV4IDhlMTY1
MDUxODQ5YmY0ZDFlYTE4YjQ5MjFlYjI0ZTk2ZWJjZTY5NmIuLjYxZWQ3ZDM1MGE5NWM0MjRiNjRk
OTdjNDRjNzg0YmU0MjE5YmJlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFz
dEVmZmVjdCgpIGNvbnN0IGZpbmFsOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciBlZmZlY3RzT2ZU
eXBlKEZpbHRlckZ1bmN0aW9uOjpUeXBlKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0cjxGaWx0
ZXJJbWFnZT4gYXBwbHkoRmlsdGVySW1hZ2UqIHNvdXJjZUltYWdlKSBmaW5hbDsKKyAgICBSZWZQ
dHI8RmlsdGVySW1hZ2U+IGFwcGx5KEZpbHRlckltYWdlKiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVz
dWx0cyYpIGZpbmFsOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6VGV4dFN0cmVhbSYsIEZpbHRlclJlcHJlc2VudGF0aW9uKSBjb25zdCBmaW5hbDsK
IApAQCAtNjQsOSArNjQsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgRmxvYXRTaXplIHJlc29s
dmVkU2l6ZShjb25zdCBGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0cjxGaWx0
ZXJJbWFnZT4gYXBwbHkoY29uc3QgRmlsdGVyJiwgRmlsdGVySW1hZ2UmIHNvdXJjZUltYWdlKSBm
aW5hbDsKKyAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIEZpbHRl
ckltYWdlJiBzb3VyY2VJbWFnZSwgRmlsdGVyUmVzdWx0cyYpIGZpbmFsOwogICAgIEludE91dHNl
dHMgb3V0c2V0cygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY2xlYXJSZXN1bHQoKSBmaW5hbDsK
IAogICAgIEZsb2F0UmVjdCBtX3RhcmdldEJvdW5kaW5nQm94OwogICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgbV9wcmltaXRpdmVVbml0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggOGNjMzcx
NGNlOTgwN2RiMTc4NWFkYTgzZTkyNzFiZmRiNDljN2RjZi4uZjA1NTExMzEwNWRhYzg0OTJlODgw
ZDM1ZDE3ZTM0ZDk4NjBlNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MSw3ICs0MSw2IEBAIHZvaWQgU1ZHRmlsdGVyQnVp
bGRlcjo6c2V0dXBCdWlsdGluRWZmZWN0cyhSZWY8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFwaGlj
KQogewogICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUo
KSwgc291cmNlR3JhcGhpYy5wdHIoKSk7CiAgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNl
QWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNlQWxwaGE6OmNyZWF0ZShzb3VyY2VHcmFwaGljKSk7
Ci0gICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKIH0KIAogc3RhdGljIE9wdGlvblNldDxGaWx0ZXJF
ZmZlY3RHZW9tZXRyeTo6RmxhZ3M+IGVmZmVjdEdlb21ldHJ5RmxhZ3NGb3JFbGVtZW50KFNWR0Vs
ZW1lbnQmIGVsZW1lbnQpCkBAIC0xMDIsMTQgKzEwMSwxMSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYg
ZmlsdAogI2VuZGlmCiAKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBlZmZlY3RFbGVtZW50
LnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMo
ZWZmZWN0LmNvcHlSZWYoKSwgcmVuZGVyZXIpOworICAgICAgICAgICAgYXBwZW5kRWZmZWN0VG9F
ZmZlY3RSZW5kZXJlcigqZWZmZWN0LCAqcmVuZGVyZXIpOwogCiAgICAgICAgIGFkZChlZmZlY3RF
bGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwogICAgIH0KIAotICAgIGlmICghZWZmZWN0KQotICAg
ICAgICBjbGVhckVmZmVjdHMoKTsKLQogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKQEAgLTE0Miw0
NCArMTM4LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZm
ZWN0QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVm
ZmVjdHMuZ2V0KGlkKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RU
b0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4mJiBlZmZlY3QsIFJlbmRlck9i
amVjdCogb2JqZWN0KQotewotICAgIC8vIFRoZSBlZmZlY3QgbXVzdCBiZSBhIG5ld2x5IGNyZWF0
ZWQgZmlsdGVyIGVmZmVjdC4KLSAgICBBU1NFUlQoIW1fZWZmZWN0UmVmZXJlbmNlcy5jb250YWlu
cyhlZmZlY3QpKTsKLSAgICBBU1NFUlQoIW9iamVjdCB8fCAhbV9lZmZlY3RSZW5kZXJlci5jb250
YWlucyhvYmplY3QpKTsKLSAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRkKGVmZmVjdCwgRmlsdGVy
RWZmZWN0U2V0KCkpOwotCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dEVmZmVjdHMgPSBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpLnNpemUoKTsKLQotICAgIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0
byBhZGQgdGhlIHNhbWUgdmFsdWUgdG8gYSBzZXQgdHdpY2UuCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpCi0gICAgICAgIGVmZmVjdFJlZmVy
ZW5jZXMoZWZmZWN0LT5pbnB1dEVmZmVjdChpKSkuYWRkKGVmZmVjdC5nZXQoKSk7Ci0KLSAgICAv
LyBJZiBvYmplY3QgaXMgbnVsbCwgdGhhdCBtZWFucyB0aGUgZWxlbWVudCBpc24ndCBhdHRhY2hl
ZCBmb3Igc29tZQotICAgIC8vIHJlYXNvbiwgd2hpY2ggaW4gdHVybiBtZWFuIHRoYXQgY2VydGFp
biB0eXBlcyBvZiBpbnZhbGlkYXRpb24gd2lsbCBub3QKLSAgICAvLyB3b3JrICh0aGUgTGF5b3V0
T2JqZWN0IC0+IEZpbHRlckVmZmVjdCBtYXBwaW5nIHdpbGwgbm90IGJlIGRlZmluZWQpLgotICAg
IGlmIChvYmplY3QpCi0gICAgICAgIG1fZWZmZWN0UmVuZGVyZXIuYWRkKG9iamVjdCwgZWZmZWN0
LmdldCgpKTsKLX0KLQotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMoKQotewot
ICAgIG1fbGFzdEVmZmVjdCA9IG51bGxwdHI7Ci0gICAgbV9uYW1lZEVmZmVjdHMuY2xlYXIoKTsK
LSAgICBtX2VmZmVjdFJlZmVyZW5jZXMuY2xlYXIoKTsKLSAgICBtX2VmZmVjdFJlbmRlcmVyLmNs
ZWFyKCk7Ci0gICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKLX0KLQotdm9pZCBTVkdGaWx0ZXJCdWls
ZGVyOjpjbGVhclJlc3VsdHNSZWN1cnNpdmUoRmlsdGVyRWZmZWN0JiBlZmZlY3QpCit2b2lkIFNW
R0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0
JiBlZmZlY3QsIFJlbmRlck9iamVjdCYgb2JqZWN0KQogewotICAgIGlmICghZWZmZWN0Lmhhc1Jl
c3VsdCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBlZmZlY3QuY2xlYXJSZXN1bHQoKTsKLQot
ICAgIGZvciAoYXV0byYgcmVmZXJlbmNlIDogZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QpKQotICAg
ICAgICBjbGVhclJlc3VsdHNSZWN1cnNpdmUoKnJlZmVyZW5jZSk7CisgICAgbV9lZmZlY3RSZW5k
ZXJlci5hZGQoJm9iamVjdCwgJmVmZmVjdCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZm
ZWN0R2VvbWV0cnk+IFNWR0ZpbHRlckJ1aWxkZXI6OmVmZmVjdEdlb21ldHJ5KEZpbHRlckVmZmVj
dCYgZWZmZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDFkNmMyMDg0ZGEyMTYxNjVlMWZhYjJi
OTE3MjA5ZTlhMmE3MDE1YTYuLjZiMzQ5ZmZjYzEyNjVkMzlhZWQ5MzFkY2ExYjAyZDBhM2QxNDY2
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMxLDE0ICszMSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEZpbHRlckVmZmVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNWR0ZpbHRl
ckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaFNldDxGaWx0ZXJFZmZlY3QqPiBG
aWx0ZXJFZmZlY3RTZXQ7Ci0KICAgICBTVkdGaWx0ZXJCdWlsZGVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgdm9pZCBzZXRUYXJnZXRCb3VuZGluZ0JveChjb25zdCBGbG9hdFJlY3QmIHIpIHsgbV90YXJn
ZXRCb3VuZGluZ0JveCA9IHI7IH0KQEAgLTQ4LDQ0ICs0NywyMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQcmltaXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHVuaXRzKSB7IG1f
cHJpbWl0aXZlVW5pdHMgPSB1bml0czsgfQogCiAgICAgdm9pZCBhZGQoY29uc3QgQXRvbVN0cmlu
ZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKLQogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwotICAgIEZpbHRlckVmZmVj
dCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQotCi0g
ICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVj
dD4mJiwgUmVuZGVyT2JqZWN0Kik7Ci0KLSAgICBpbmxpbmUgRmlsdGVyRWZmZWN0U2V0JiBlZmZl
Y3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCYgZWZmZWN0KQotICAgIHsKLSAgICAgICAgLy8gT25s
eSBhbGxvd2VkIGZvciBlZmZlY3RzIGJlbG9uZ3MgdG8gdGhpcyBidWlsZGVyLgotICAgICAgICBB
U1NFUlQobV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKCZlZmZlY3QpKTsKLSAgICAgICAgcmV0
dXJuIG1fZWZmZWN0UmVmZXJlbmNlcy5maW5kKCZlZmZlY3QpLT52YWx1ZTsKLSAgICB9CiAKICAg
ICAvLyBSZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMgb2YgYSBmaWx0ZXIgZHVyaW5n
IGFuIHN2Z0F0dHJpYnV0ZUNoYW5nZWQuCisgICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJl
bmRlcmVyKEZpbHRlckVmZmVjdCYsIFJlbmRlck9iamVjdCYpOwogICAgIGlubGluZSBGaWx0ZXJF
ZmZlY3QqIGVmZmVjdEJ5UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpIHsgcmV0dXJuIG1f
ZWZmZWN0UmVuZGVyZXIuZ2V0KG9iamVjdCk7IH0KIAotICAgIHZvaWQgY2xlYXJFZmZlY3RzKCk7
Ci0gICAgdm9pZCBjbGVhclJlc3VsdHNSZWN1cnNpdmUoRmlsdGVyRWZmZWN0Jik7Ci0KICAgICB2
b2lkIHNldHVwQnVpbHRpbkVmZmVjdHMoUmVmPEZpbHRlckVmZmVjdD4gc291cmNlR3JhcGhpYyk7
CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRGaWx0ZXJFZmZlY3RzKFNWR0ZpbHRlckVs
ZW1lbnQmKTsKICAgICBib29sIGJ1aWxkRXhwcmVzc2lvbihTVkdGaWx0ZXJFeHByZXNzaW9uJikg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgaW5saW5lIHZvaWQgYWRkQnVpbHRpbkVmZmVjdHMoKQot
ICAgIHsKLSAgICAgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBtX2J1aWx0aW5FZmZlY3RzLnZhbHVl
cygpKQotICAgICAgICAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChlZmZlY3QsIEZpbHRlckVm
ZmVjdFNldCgpKTsKLSAgICB9Ci0KICAgICBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVjdEdlb21l
dHJ5PiBlZmZlY3RHZW9tZXRyeShGaWx0ZXJFZmZlY3QmKSBjb25zdDsKICAgICBib29sIGJ1aWxk
RWZmZWN0RXhwcmVzc2lvbihGaWx0ZXJFZmZlY3QmLCBGaWx0ZXJFZmZlY3RWZWN0b3ImIHN0YWNr
LCB1bnNpZ25lZCBsZXZlbCwgU1ZHRmlsdGVyRXhwcmVzc2lvbiYpIGNvbnN0OwogCiAgICAgSGFz
aE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pj4gbV9idWlsdGluRWZmZWN0czsK
ICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBtX25hbWVkRWZm
ZWN0czsKLSAgICAvLyBUaGUgdmFsdWUgaXMgYSBsaXN0LCB3aGljaCBjb250YWlucyB0aG9zZSBm
aWx0ZXIgZWZmZWN0cywKLSAgICAvLyB3aGljaCBkZXBlbmRzIG9uIHRoZSBrZXkgZmlsdGVyIGVm
ZmVjdC4KLSAgICBIYXNoTWFwPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+LCBGaWx0ZXJFZmZlY3RTZXQ+
IG1fZWZmZWN0UmVmZXJlbmNlczsKICAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIEZpbHRlckVm
ZmVjdCo+IG1fZWZmZWN0UmVuZGVyZXI7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2xh
c3RFZmZlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZThmNmY3YmUxOTU2
ZTZjYWM0NDIxZTVhYTM0NjE3OTU0NzY5ZmYwZC4uYzI2N2E3Y2QyYTg1NDJlODZmMWJkZjgxYjMz
OTlhZTViNmQ1NjRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmls
dGVyUmVzdWx0cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMjU1LDcgKzI1Niw4IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6
ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3RmlsdGVyZWRJbWFn
ZUJ1ZmZlcihzb3VyY2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUltYWdlUmVjdCwgV1RGTW92ZShm
aWx0ZXIpKSwgc291cmNlSW1hZ2UuZ2V0KCkpOworICAgIEZpbHRlclJlc3VsdHMgcmVzdWx0czsK
KyAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3Vy
Y2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUltYWdlUmVjdCwgV1RGTW92ZShmaWx0ZXIpKSwgc291
cmNlSW1hZ2UuZ2V0KCksIHJlc3VsdHMpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmRyYXdHbHlwaHMoRGlzcGxheUxpc3Q6OkRyYXdHbHlwaHMmJiBpdGVtKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>