<?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>221018</bug_id>
          
          <creation_ts>2021-01-26 16:10:57 -0800</creation_ts>
          <short_desc>Add support for color(a98-rgb ...) as part of CSS Color 4</short_desc>
          <delta_ts>2021-01-27 17:24:32 -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>CSS</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>220928</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722766</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-26 16:10:57 -0800</bug_when>
    <thetext>Add support for Adobe RGB 1998 and color(a98-rgb ...) as part of CSS Color 4 - https://www.w3.org/TR/css-color-4/#valdef-color-a98-rgb.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722774</commentid>
    <comment_count>1</comment_count>
      <attachid>418486</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-26 16:33:36 -0800</bug_when>
    <thetext>Created attachment 418486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722780</commentid>
    <comment_count>2</comment_count>
      <attachid>418490</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-26 16:53:04 -0800</bug_when>
    <thetext>Created attachment 418490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723062</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-27 10:57:55 -0800</bug_when>
    <thetext>Looked over the patch and it sure does look good. Wonder how this slightly changed the P3 results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723066</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-27 11:03:19 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Looked over the patch and it sure does look good. Wonder how this slightly
&gt; changed the P3 results?

I swapped the matrix values between the p3 and a98-rgb conversion matrices :(. Classic copy and paste-o for me. I&apos;m adding a few more tests and will re-upload with the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723069</commentid>
    <comment_count>5</comment_count>
      <attachid>418564</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-27 11:10:38 -0800</bug_when>
    <thetext>Created attachment 418564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723070</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-01-27 11:11:32 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723218</commentid>
    <comment_count>7</comment_count>
      <attachid>418564</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-27 17:03:45 -0800</bug_when>
    <thetext>Comment on attachment 418564
Patch

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

&gt; Source/WebCore/platform/graphics/ColorConversion.h:204
&gt; +        return std::invoke(std::forward&lt;Functor&gt;(functor), makeFromComponents&lt;SRGBA&lt;T&gt;&gt;(components));

Wondering how to refine further to make the per-encoding as small as possible. Like, can the std::invoke be shared without hurting efficiency?

Really makes me wonder about the fundamental question: Practical way to map a runtime enumeration to a template name.

&gt; Source/WebCore/platform/graphics/ColorTypes.h:34
&gt; +template&lt;typename&gt; struct SRGBA;

I’m a big fan of alphabetizing such things rather than putting them in logical order. Would include AlphaTraits too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723225</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-27 17:22:16 -0800</bug_when>
    <thetext>Committed r271992: &lt;https://trac.webkit.org/changeset/271992&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418564.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723227</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-27 17:24:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/73687600&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418486</attachid>
            <date>2021-01-26 16:33:36 -0800</date>
            <delta_ts>2021-01-26 16:53:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221018-20210126163335.patch</filename>
            <type>text/plain</type>
            <size>43820</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAyMS0wMS0yNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbG9y
KGE5OC1yZ2IgLi4uKSBhcyBwYXJ0IG9mIENTUyBDb2xvciA0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgor
ICAgICAgICBBZGQga2V5d29yZCBmb3IgYTk4LXJnYiBhbmQgYSBjb21tZW50IGluZGljYXRpbmcg
dGhhdCBsYWIsIHdoaWNoIGFscmVhZHkgZXhpc3RzIGFzIGEgdmFsdWUsCisgICAgICAgIGlzIGFs
c28gYSB2YWxpZCBpZGVudGlmaWVyIGZvciB0aGUgY29sb3IgZnVuY3Rpb24uCisgCisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JU
eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNl
Q29sb3JGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yRnVuY3Rpb25Gb3JTUkdCT3JEaXNwbGF5UDNQYXJhbWV0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgR2VuZXJhbGl6ZSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JT
UkdCT3JEaXNwbGF5UDNQYXJhbWV0ZXJzIHRvIHdvcmsgZm9yIGFsbCBSR0IgdHlwZXMsIHdoaWNo
IG5vdyBpbmNsdWRlCisgICAgICAgIEE5OFJHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUkdCVHJhbnNmZXJG
dW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JU
cmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5v
bkNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRv
TGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJDbGFtcGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpmcm9tTGluZWFyQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9MaW5lYXJOb25DbGFtcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpmcm9tTGluZWFyTm9u
Q2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJTUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0xpbmVhckV4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6dG9TUkdC
QSk6CisgICAgICAgIChXZWJDb3JlOjp0b0V4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9MaW5lYXJEaXNwbGF5UDMpOgorICAgICAgICAoV2ViQ29yZTo6dG9EaXNwbGF5UDMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJBOThSR0IpOgorICAgICAgICAoV2ViQ29yZTo6dG9B
OThSR0IpOgorICAgICAgICAoV2ViQ29yZTo6dG9YWVpBKToKKyAgICAgICAgKFdlYkNvcmU6Omxp
bmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnJnYlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0E5OFJHQik6CisgICAgICAgIChXZWJDb3JlOjp0b0xp
bmVhckE5OFJHQik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsV2l0aENvbG9yVHlwZSk6CisgICAg
ICAgIEFkZCBjb252ZXJzaW9uIHN1cHBvcnQgZm9yIEE5OFJHQiBhbmQgTGluZWFyQTk4UkdCLiBN
b3ZlIGdhbW1hIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGludG8gc3RydWN0cyBuYW1l
ZCBmb3IgdGhlIHR5cGUgb2YgdHJhbnNmZXIgZnVuY3Rpb24uIFdoaWxlIG5vdCB1c2VkIGN1cnJl
bnRseSwgdGhpcworICAgICAgICB3aWxsIGFsbG93IGZ1dHVyZSB0ZW1wbGF0aXppbmcgb2YgY29u
dmVyc2lvbiB0byBhdm9pZCBzbyBtdWNoIGJvaWxlciBwbGF0ZSBpbiB0aGUKKyAgICAgICAgZnV0
dXJlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZv
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1Rl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5oOgor
ICAgICAgICBBZGQgc2VyaWFsaXphdGlvbiBzdXBwb3J0IGZvciBjb2xvcihhOTgtcmdiIC4uLiku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIEFkZCBBOThSR0IgYXMg
YSBDb2xvclNwYWNlLCB3aGljaCByZWFsbHkganVzdCBtZWFucyBpdCBpcyBzb21ldGhpbmcKKyAg
ICAgICAgRXh0ZW5kZWRDb2xvciBjYW4gaG9sZC4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgYSBDR0Nv
bG9yU3BhY2UgZm9yIEE5OFJHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpSR0JBVHlwZTo6UkdCQVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1JHQkE6OlNSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkU1JHQkE6
OkV4dGVuZGVkU1JHQkEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyU1JHQkE6
OkxpbmVhclNSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckV4dGVuZGVk
U1JHQkE6OkxpbmVhckV4dGVuZGVkU1JHQkEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheVAzOjpEaXNwbGF5UDMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZWFy
RGlzcGxheVAzOjpMaW5lYXJEaXNwbGF5UDMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFdpdGhDb2xvclR5cGUpOiBEZWxldGVkLgorICAgICAgICBTaW1wbGlmeSBhZGRpbmcgbmV3
IFJHQiBjb2xvciB0eXBlcyBieSBhZGRpbmcgYSBzaGFyZWQgYmFzZSBjbGFzcywgUkdCQVR5cGUK
KyAgICAgICAgYW5kIGFuZCBhIHNoYXJlZCBhc0NvbG9yQ29tcG9uZW50cyBmdW5jaXRvbi4gQWxz
byBzaW1wbGlmeSBhbGwgY29sb3IgdHlwZXMgCisgICAgICAgIGJ5IHJlbW92aW5nIHRoZSBuZWVk
IHRvIGRlZmluZSB5b3VyIG93biBvcGVyYXRvcj09LyE9IGZvciBlYWNoIHR5cGUgYnkgaGF2aW5n
CisgICAgICAgIGEgc2luZ2xlIG9uZSB0aGF0IG9wZXJhdGVzIG9uIGFueSB0eXBlIHRoYXQgY2Fu
IGhhdmUgYXNDb2xvckNvbXBvbmVudHMoKSBjYWxsZWQKKyAgICAgICAgb24gaXQuCisgICAgICAg
IAorICAgICAgICBUbyBjcmVhdGUgYSBuZXcgUkdCIGNvbG9yIChvbmUgd2l0aCByZWQsIGdyZWVu
IGFuZCBibHVlIG5hbWVkIGNvbXBvbmVudHMpIG9uZQorICAgICAgICBub3cgb25seSBuZWVkcyB0
byBkbzoKKyAgICAgICAgCisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Rm9vIDogUkdCQVR5cGU8Rm9vLCBULCBSR0JNb2RlbDxUPj4geworICAgICAgICAgICAgICAgIHVz
aW5nIFJHQkFUeXBlPEZvbywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBGb28oVCwgVCwgVCwgVCkgLT4g
Rm9vPFQ+OworCisgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIHR5cGUgaGFzIGdhbW1hIGVu
Y29kZWQgYW5kIGxpbmVhciB2ZXJzaW9ucywgaXQgc2hvdWxkIGhhdmUKKyAgICAgICAgZWl0aGVy
IGEgYHVzaW5nIEdhbW1hRW5jb2RlZCA9IC4uLmAgb3IgYHVzaW5nIExpbmVhciA9IC4uLmAgZGVj
YWxhcmluZyBpdHMgCisgICAgICAgIGNvdW50ZXJwYXJ0IGFuZCBzaG91bGQgYWRkIGEgY29sb3JT
cGFjZSBtZW1iZXIgaWYgdGhlIHR5cGUgaXMgdXNlZCBieSBFeHRlbmRlZENvbG9yLgorCisgICAg
ICAgIE5vdGUsIHRoZSBkZWR1Y3Rpb24gZ3VpZGUgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgdGhpbmdz
IGxpa2UgdGhlIGZvbGxvd2luZyB3b3JraW5nOgorICAgICAgICAgICAgCisgICAgICAgICAgICBh
dXRvIGNvbG9yID0gU1JHQiB7IGZsb2F0MSwgZmxvYXQyLCAuLi4gfTsKKyAgICAgICAgICAgIAor
ICAgICAgICBVbmZvcnR1bmF0ZWx5LCBkZWR1Y3Rpb24gZG9lcyBub3QgY29tZSBhbG9uZyB3aGVu
IHlvdSBleHBsaXRpbHkgaW5oZXJpdCBjb25zdHJ1Y3RvcnMKKyAgICAgICAgbGlrZSBpcyBiZWlu
ZyBkb25lIGZvciB0aGVzZS4gU2VlIHRoZSAiRGVkdWNpbmcgZnJvbSBpbmhlcml0ZWQgY29uc3Ry
dWN0b3JzIiBzZWN0aW9uCisgICAgICAgIGluIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEv
c2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMTkvcDEwMjFyNC5odG1sLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2Up
OgorICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyBuYW1lIGZvciBnYW1tYSBjb252ZXJzaW9uIGZ1
bmN0aW9ucy4KKwogMjAyMS0wMS0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHNob3dSZW5kZXJUcmVlKCkgZHVtcCBGbG9hdGluZ09iamVj
dHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lvbiAy
NzE5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwNyw2ICsxNDA3LDggQEAgcmVjMjAyMAogLy8gY29sb3IoKSBmdW5jdGlv
bgogc1JHQgogZGlzcGxheS1wMworYTk4LXJnYgorLy8gbGFiCiAKIC8vIHByZWZlcnMtZGVmYXVs
dC1hcHBlYXJhbmNlCiBwcmVmZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNzE5MTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg3NSw5ICs4NzUsOSBAQCBzdGF0aWMgQ29sb3IgcGFyc2VM
Q0hQYXJhbWV0ZXJzKENTU1BhcnNlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4K
LXN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JTUkdCT3JEaXNwbGF5UDNQYXJhbWV0
ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MpCitzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1
bmN0aW9uRm9yUkdCVHlwZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKIHsKLSAgICBBU1NF
UlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVNSR0IgfHwgYXJncy5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZURpc3BsYXlQMyk7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVTUkdCIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVEaXNwbGF5UDMgfHwgYXJn
cy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUE5OFJnYik7CiAgICAgY29uc3VtZUlkZW50UmF3KGFy
Z3MpOwogCiAgICAgZG91YmxlIGNoYW5uZWxzWzNdID0geyAwLCAwLCAwIH07CkBAIC05MzYsMTAg
KzkzNiwxMyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVyCiAgICAg
Q29sb3IgY29sb3I7CiAgICAgc3dpdGNoIChhcmdzLnBlZWsoKS5pZCgpKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZVNSR0I6Ci0gICAgICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yU1JHQk9y
RGlzcGxheVAzUGFyYW1ldGVyczxTUkdCQTxmbG9hdD4+KGFyZ3MpOworICAgICAgICBjb2xvciA9
IHBhcnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cGVzPFNSR0JBPGZsb2F0Pj4oYXJncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVEaXNwbGF5UDM6Ci0gICAgICAgIGNvbG9yID0g
cGFyc2VDb2xvckZ1bmN0aW9uRm9yU1JHQk9yRGlzcGxheVAzUGFyYW1ldGVyczxEaXNwbGF5UDM8
ZmxvYXQ+PihhcmdzKTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JU
eXBlczxEaXNwbGF5UDM8ZmxvYXQ+PihhcmdzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NWYWx1ZUE5OFJnYjoKKyAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JU
eXBlczxBOThSR0I8ZmxvYXQ+PihhcmdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZUxhYjoKICAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JMYWJQYXJhbWV0
ZXJzKGFyZ3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw2ICs1NywyMCBAQCBzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5
elRvCiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZl
cnNpb24tY29kZQogc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJEaXNw
bGF5UDNUb1hZWk1hdHJpeCB7CisgICAgMC41NzY2NjkwNDI5MTAxMzA1ZiwgICAwLjE4NTU1ODIz
NzkwNjU0NjNmLCAgIDAuMTg4MjI4NjQ2MjM0OTk0N2YsCisgICAgMC4yOTczNDQ5NzUyNTA1MzYw
NWYsICAwLjYyNzM2MzU2NjI1NTQ2NjFmLCAgIDAuMDc1MjkxNDU4NDkzOTk3ODhmLAorICAgIDAu
MDI3MDMxMzYxMzg2NDEyMzRmLCAgMC4wNzA2ODg4NTI1MzU4MjcyM2YsICAwLjk5MTMzNzUzNjgz
NzYzODhmCit9OworCisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xv
ci1jb252ZXJzaW9uLWNvZGUKK3N0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6
VG9MaW5lYXJBOThSR0JNYXRyaXggeworCSAyLjA0MTU4NzkwMzgxMDc0NjVmLCAgICAtMC41NjUw
MDY5NzQyNzg4NTk2ZiwgICAtMC4zNDQ3MzEzNTA3NzgzMjk1NmYsCisJLTAuOTY5MjQzNjM2Mjgw
ODc5NWYsICAgICAxLjg3NTk2NzUwMTUwNzcyMDJmLCAgICAwLjA0MTU1NTA1NzQwNzE3NTU3ZiwK
KwkgMC4wMTM0NDQyODA2MzIwMzExNDJmLCAgLTAuMTE4MzYyMzkyMjMxMDE4MzhmLCAgIDEuMDE1
MTc0OTk0MzkxMjA1NGYKK307CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29s
b3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQorc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwz
LCAzPiBsaW5lYXJBOThSR0JUb1hZWk1hdHJpeCB7CiAgICAgMC40ODY1NzA5NDg2NDgyMTYyZiwg
MC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcyODUyMzQzNjNmLAogICAgIDAuMjI4OTc0NTY0
MDY5NzQ4OGYsIDAuNjkxNzM4NTIxODM2NTA2NGYsIDAuMDc5Mjg2OTE0MDkzNzQ1ZiwKICAgICAw
LjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3
NmYKQEAgLTc4LDcgKzkyLDcgQEAgc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBE
NjVUbwogCiAvLyBHYW1tYSBjb252ZXJzaW9ucy4KIAotZmxvYXQgbGluZWFyVG9SR0JDb2xvckNv
bXBvbmVudENsYW1waW5nKGZsb2F0IGMpCitmbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJv
bUxpbmVhckNsYW1waW5nKGZsb2F0IGMpCiB7CiAgICAgaWYgKGMgPCAwLjAwMzEzMDhmKQogICAg
ICAgICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KDEyLjkyZiAqIGMsIDApOwpAQCAtODYsNyArMTAw
LDcgQEAgZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKAogICAgIHJldHVy
biBjbGFtcFRvPGZsb2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1
NWYsIDAsIDEpOwogfQogCi1mbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmco
ZmxvYXQgYykKK2Zsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZs
b2F0IGMpCiB7CiAgICAgaWYgKGMgPD0gMC4wNDA0NWYpCiAgICAgICAgIHJldHVybiBzdGQ6Om1h
eDxmbG9hdD4oYyAvIDEyLjkyZiwgMCk7CkBAIC05NCw5ICsxMDgsOSBAQCBmbG9hdCByZ2JUb0xp
bmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoCiAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0
ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOwogfQogCi1mbG9hdCBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoZmxvYXQgYykKK2Zsb2F0IFNSR0JU
cmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKIHsKLSAgICBm
bG9hdCBzaWduID0gYyA+IDAgPyAxLjBmIDogLTEuMGY7CisgICAgZmxvYXQgc2lnbiA9IHN0ZDo6
c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKICAgICBjID0gc3RkOjphYnMoYyk7CiAKICAgICBp
ZiAoYyA8IDAuMDAzMTMwOGYpCkBAIC0xMDUsOSArMTE5LDkgQEAgZmxvYXQgbGluZWFyVG9SR0JD
b2xvckNvbXBvbmVudE5vbkNsYW1waQogICAgIHJldHVybiAoMS4wNTVmICogc3RkOjpwb3coYywg
MS4wZiAvIDIuNGYpIC0gMC4wNTVmKSAqIHNpZ247CiB9CiAKLWZsb2F0IHJnYlRvTGluZWFyQ29s
b3JDb21wb25lbnROb25DbGFtcGluZyhmbG9hdCBjKQorZmxvYXQgU1JHQlRyYW5zZmVyRnVuY3Rp
b246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKIHsKLSAgICBmbG9hdCBzaWduID0gYyA+
IDAgPyAxLjBmIDogLTEuMGY7CisgICAgZmxvYXQgc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0x
LjBmIDogMS4wZjsKICAgICBjID0gc3RkOjphYnMoYyk7CiAKICAgICBpZiAoYyA8PSAwLjA0MDQ1
ZikKQEAgLTExNiw2NyArMTMwLDk1IEBAIGZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRO
b25DbGFtcGkKICAgICByZXR1cm4gc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRm
KSAqIHNpZ247CiB9CiAKK2Zsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJD
bGFtcGluZyhmbG9hdCBjKQoreworICAgIHJldHVybiBjbGFtcFRvPGZsb2F0Pihmcm9tTGluZWFy
Tm9uQ2xhbXBpbmcoYyksIDAsIDEpOworfQorCitmbG9hdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9u
Ojp0b0xpbmVhckNsYW1waW5nKGZsb2F0IGMpCit7CisgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+
KHRvTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOworfQorCitmbG9hdCBBOThSR0JUcmFuc2Zl
ckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBmbG9hdCBz
aWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAgIHJldHVybiBzdGQ6OnBv
dyhzdGQ6OmFicyhjKSwgMjU2LjBmIC8gNTYzLjBmKSAqIHNpZ247Cit9CisKK2Zsb2F0IEE5OFJH
QlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBm
bG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAgIHJldHVybiBz
dGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFRyYW5zZmVyRnVuY3Rpb24sIHR5cGVuYW1lIFQ+IHN0YXRpYyBhdXRvIHRv
TGluZWFyQ2xhbXBpbmcoY29uc3QgVCYgY29sb3IpIC0+IHR5cGVuYW1lIFQ6OkxpbmVhcgorewor
ICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9yOworICAgIHJldHVybiB7IFRyYW5z
ZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xp
bmVhckNsYW1waW5nKGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJDbGFtcGluZyhjMyks
IGFscGhhIH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZmVyRnVuY3Rpb24sIHR5cGVu
YW1lIFQ+IHN0YXRpYyBhdXRvIGZyb21MaW5lYXJDbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4g
dHlwZW5hbWUgVDo6R2FtbWFFbmNvZGVkCit7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFd
ID0gY29sb3I7CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1w
aW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMyKSwgVHJhbnNm
ZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMzKSwgYWxwaGEgfTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9M
aW5lYXJOb25DbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6TGluZWFyCit7
CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7CisgICAgcmV0dXJuIHsgVHJh
bnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJOb25DbGFtcGluZyhjMSksIFRyYW5zZmVyRnVuY3Rpb246
OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzIpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhck5vbkNs
YW1waW5nKGMzKSwgYWxwaGEgfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5j
dGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gZnJvbUxpbmVhck5vbkNsYW1waW5nKGNvbnN0
IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpHYW1tYUVuY29kZWQKK3sKKyAgICBhdXRvIFtjMSwg
YzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKKyAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjpm
cm9tTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9u
Q2xhbXBpbmcoYzIpLCBUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYzMp
LCBhbHBoYSB9OworfQorCiBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBT
UkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiB7Ci0gICAgICAgIHJnYlRvTGluZWFy
Q29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5yZWQpLAotICAgICAgICByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuZ3JlZW4pLAotICAgICAgICByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuYmx1ZSksCi0gICAgICAgIGNvbG9yLmFscGhhCi0g
ICAgfTsKKyAgICByZXR1cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4o
Y29sb3IpOwogfQogCiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVk
U1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiB7
Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5yZWQp
LAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IuZ3Jl
ZW4pLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3Iu
Ymx1ZSksCi0gICAgICAgIGNvbG9yLmFscGhhCi0gICAgfTsKKyAgICByZXR1cm4gdG9MaW5lYXJO
b25DbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOwogfQogCiBTUkdCQTxmbG9h
dD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVy
biB7Ci0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5yZWQp
LAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuZ3JlZW4p
LAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuYmx1ZSks
Ci0gICAgICAgIGNvbG9yLmFscGhhCi0gICAgfTsKKyAgICByZXR1cm4gZnJvbUxpbmVhckNsYW1w
aW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CiB9CiAKIEV4dGVuZGVkU1JHQkE8Zmxv
YXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29s
b3IpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5v
bkNsYW1waW5nKGNvbG9yLnJlZCksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRO
b25DbGFtcGluZyhjb2xvci5ncmVlbiksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25l
bnROb25DbGFtcGluZyhjb2xvci5ibHVlKSwKLSAgICAgICAgY29sb3IuYWxwaGEKLSAgICB9Owor
ICAgIHJldHVybiBmcm9tTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNv
bG9yKTsKIH0KIAogTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25z
dCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gewotICAgICAgICByZ2JU
b0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IucmVkKSwKLSAgICAgICAgcmdiVG9M
aW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLmdyZWVuKSwKLSAgICAgICAgcmdiVG9M
aW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5h
bHBoYQotICAgIH07CisgICAgcmV0dXJuIHRvTGluZWFyQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVu
Y3Rpb24+KGNvbG9yKTsKIH0KIAogRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gewotICAgICAgICBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IucmVkKSwKLSAgICAgICAgbGlu
ZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLmdyZWVuKSwKLSAgICAgICAgbGlu
ZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xv
ci5hbHBoYQotICAgIH07CisgICAgcmV0dXJuIGZyb21MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNm
ZXJGdW5jdGlvbj4oY29sb3IpOwogfQogCi0vLyBNYXRyaXggY29udmVyc2lvbnMuCitMaW5lYXJB
OThSR0I8ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IEE5OFJHQjxmbG9hdD4mIGNvbG9yKQor
eworICAgIHJldHVybiB0b0xpbmVhckNsYW1waW5nPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb24+KGNv
bG9yKTsKK30KKworQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBMaW5lYXJBOThSR0I8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gZnJvbUxpbmVhckNsYW1waW5nPEE5OFJHQlRyYW5z
ZmVyRnVuY3Rpb24+KGNvbG9yKTsKK30KKworLy8gTWF0cml4IGNvbnZlcnNpb25zICh0byBhbmQg
ZnJvbSBYWVogZm9yIGFsbCBsaW5lYXIgY29sb3IgdHlwZXMpLgorCisvLyAtIExpbmVhclNSR0JB
IG1hdHJpeCBjb252ZXJzaW9ucy4KIAogTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEo
Y29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewpAQCAtMTg4LDYgKzIzMCw4IEBAIFhZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG8KICAgICByZXR1cm4gbWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JHQlRvWFlaTWF0
cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkp
OwogfQogCisvLyAtIExpbmVhckV4dGVuZGVkU1JHQkEgbWF0cml4IGNvbnZlcnNpb25zLgorCiBM
aW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgWFla
QTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGlu
Z0V4Y2VwdEFscGhhPExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pih4eXpUb0xpbmVhclNSR0JN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7CkBAIC0xOTgsNiArMjQyLDggQEAgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckV4
dGVuZGVkUwogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhh
PFhZWkE8ZmxvYXQ+PihsaW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBv
bmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKKy8vIC0gTGluZWFyRGlzcGxh
eVAzIG1hdHJpeCBjb252ZXJzaW9ucy4KKwogTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VG
cm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyRGlzcGxheVAzPGZsb2F0Pj4o
eHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXND
b2xvckNvbXBvbmVudHMoY29sb3IpKSk7CkBAIC0yMDgsNiArMjU0LDE4IEBAIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBMaW5lYXJEaXNwbGF5UDMKICAgICByZXR1cm4gbWFrZUZyb21Db21wb25l
bnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyRGlzcGxheVAzVG9YWVpN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7CiB9CiAKKy8vIC0gTGluZWFyQTk4UkdCIG1hdHJpeCBjb252ZXJzaW9ucy4KKworTGluZWFy
QTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7
CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFy
QTk4UkdCPGZsb2F0Pj4oeHl6VG9MaW5lYXJBOThSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNv
bXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRv
WFlaQShjb25zdCBMaW5lYXJBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gbWFr
ZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyQTk4
UkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IpKSk7Cit9CisKIC8vIENocm9tYXRpYyBBZGFwdGF0aW9uIGNvbnZlcnNpb25zLgog
CiBzdGF0aWMgWFlaQTxmbG9hdD4gY29udmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBv
aW50KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKQEAgLTQwNiw2ICs0NjQsOCBAQCBTUkdCQTxm
bG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYgCiAKIC8vIENvbWJpbmF0aW9uIGNvbnZl
cnNpb25zIChjb25zdHJ1Y3RlZCBmcm9tIG1vcmUgYmFzaWMgY29udmVyc2lvbnMgYWJvdmUpLgog
CisvLyAtIFNSR0IgY29tYmluYXRpb24gZnVuY3Rpb25zLgorCiBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFy
U1JHQkEoY29sb3IpKTsKQEAgLTQxNiw2ICs0NzYsOCBAQCBTUkdCQTxmbG9hdD4gdG9TUkdCQShj
b25zdCBYWVpBPGZsb2F0PiYgCiAgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQShjb2xv
cikpOwogfQogCisvLyAtIEV4dGVuZGVkU1JHQiBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCisKIFhZ
WkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3IpCiB7CiAg
ICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29sb3IpKTsKQEAgLTQyNiw2
ICs0ODgsOCBAQCBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uCiAgICAg
cmV0dXJuIHRvRXh0ZW5kZWRTUkdCQSh0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29sb3IpKTsKIH0K
IAorLy8gLSBEaXNwbGF5UDMgY29tYmluYXRpb24gZnVuY3Rpb25zLgorCiBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvWFla
QSh0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpOwpAQCAtNDM2LDYgKzUwMCwyMCBAQCBEaXNwbGF5
UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8CiAgICAgcmV0dXJuIHRvRGlzcGxheVAz
KHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7CiB9CiAKKy8vIC0gQTk4UkdCIGNvbWJpbmF0aW9u
IGZ1bmN0aW9ucy4KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEE5OFJHQjxmbG9hdD4mIGNv
bG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJBOThSR0IoY29sb3IpKTsKK30KKwor
QTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvQTk4UkdCKHRvTGluZWFyQTk4UkdCKGNvbG9yKSk7Cit9CisKKy8vIC0gTENIQSBj
b21iaW5hdGlvbiBmdW5jdGlvbnMuCisKIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMQ0hBPGZs
b2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xhYihjb2xvcikpOwpAQCAtNDQ2
LDYgKzUyNCw4IEBAIExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCBYWVpBPGZsb2F0PiYgY28KICAg
ICByZXR1cm4gdG9MQ0hBKHRvTGFiKGNvbG9yKSk7CiB9CiAKKy8vIC0gSFNMQSBjb21iaW5hdGlv
biBmdW5jdGlvbnMuCisKIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JBKGNvbG9yKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2
aXNpb24gMjcxOTE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwyMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIFRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgc1JHQiA8LT4gTGluZWFy
UkdCIC8gRGlzcGxheVAzIDwtPiBMaW5lYXJEaXNwbGF5UDMgY29udmVyc2lvbiBmdW5jdGlvbnMg
KGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IpLgotZmxvYXQgbGluZWFyVG9SR0JD
b2xvckNvbXBvbmVudENsYW1waW5nKGZsb2F0KTsKLWZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21w
b25lbnRDbGFtcGluZyhmbG9hdCk7Ci1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Tm9u
Q2xhbXBpbmcoZmxvYXQpOwotZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudE5vbkNsYW1w
aW5nKGZsb2F0KTsKKy8vIFRyYW5zZmVyIGZ1bmN0aW9ucyBmb3IgY29sb3JzIHRoYXQgY2FuIGJl
IGdhbW1hIGVuY29kZWQuCisKK3N0cnVjdCBTUkdCVHJhbnNmZXJGdW5jdGlvbiB7CisgICAgc3Rh
dGljIGZsb2F0IGZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCk7CisgICAgc3RhdGljIGZsb2F0IHRv
TGluZWFyQ2xhbXBpbmcoZmxvYXQpOworICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xh
bXBpbmcoZmxvYXQpOworICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0
KTsKK307CisKK3N0cnVjdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uIHsKKyAgICBzdGF0aWMgZmxv
YXQgZnJvbUxpbmVhckNsYW1waW5nKGZsb2F0KTsKKyAgICBzdGF0aWMgZmxvYXQgdG9MaW5lYXJD
bGFtcGluZyhmbG9hdCk7CisgICAgc3RhdGljIGZsb2F0IGZyb21MaW5lYXJOb25DbGFtcGluZyhm
bG9hdCk7CisgICAgc3RhdGljIGZsb2F0IHRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQpOworfTsK
IAogLy8gQWxsIGNvbG9yIHR5cGVzIG11c3QgYXQgbGVhc3QgaW1wbGVtZW50IHRoZSBmb2xsb3dp
bmcgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gdGhlIFhZWkEgY29sb3Igc3BhY2U6CiAvLyAgICBY
WVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOwpAQCAtOTgsNiArMTA4
LDE4IEBAIFdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCAKIC8vIEFkZGl0
aW9ucwogV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgSFNMQTxmbG9h
dD4mKTsKIAorLy8gQTk4UkdCCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29u
c3QgQTk4UkdCPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQTk4UkdCPGZsb2F0PiB0b0E5OFJH
Qihjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJDT1JFX0VYUE9SVCBMaW5l
YXJBOThSR0I8ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKKwor
Ly8gTGluZWFyQTk4UkdCCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
TGluZWFyQTk4UkdCPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyQTk4UkdCPGZsb2F0
PiB0b0xpbmVhckE5OFJHQihjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJD
T1JFX0VYUE9SVCBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExpbmVhckE5OFJHQjxmbG9h
dD4mIGNvbG9yKTsKKwogCiAvLyBJZGVudGl0eSBjb252ZXJzaW9ucyAodXNlZnVsIGZvciBnZW5l
cmljIGNvbnRleHRzKS4KIApAQCAtMTExLDYgKzEzMyw3IEBAIGNvbnN0ZXhwciBMYWI8ZmxvYXQ+
IHRvTGFiKGNvbnN0IExhYjxmbG8KIGNvbnN0ZXhwciBMQ0hBPGZsb2F0PiB0b0xDSEEoY29uc3Qg
TENIQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIEhTTEE8Zmxv
YXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBj
b25zdGV4cHIgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyBy
ZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IEE5
OFJHQjxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogCiAKIC8vIEZhbGxiYWNrIGNv
bnZlcnNpb25zLgpAQCAtMTYzLDQgKzE4NiwzNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBIU0xB
PGZsb2F0PiB0b0hTTEEoCiAgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBUJiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9BOThSR0IodG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IExpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJBOThSR0IoY29uc3QgVCYg
Y29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyQTk4UkdCKHRvWFlaQShjb2xvcikpOworfQor
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNs
dHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGNv
bXBvbmVudHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7Cisg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAg
ICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBt
YWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9y
U3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2Fy
ZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPExpbmVhclNSR0JBPFQ+Pihj
b21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3Bh
Y2U6OkE5OFJHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5j
dG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPEE5OFJHQjxUPj4oY29tcG9uZW50cykp
OworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGFiPFQ+
Pihjb21wb25lbnRzKSk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZy
b21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2Vy
aWFsaXphdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmNwcAkocmV2aXNpb24gMjcxOTE4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNiArOTYsOCBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIHNlcmlhbGl6YXRp
b24oQ29sb3JTCiAgICAgICAgIHJldHVybiAibGluZWFyLXNyZ2IiX3M7CiAgICAgY2FzZSBDb2xv
clNwYWNlOjpEaXNwbGF5UDM6CiAgICAgICAgIHJldHVybiAiZGlzcGxheS1wMyJfczsKKyAgICBj
YXNlIENvbG9yU3BhY2U6OkE5OFJHQjoKKyAgICAgICAgcmV0dXJuICJhOTgtcmdiIl9zOwogICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1cm4gImxhYiJfczsKICAgICB9CkBA
IC0xNjMsNiArMTY1LDIzIEBAIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4
dCgKICAgICByZXR1cm4gc2VyaWFsaXphdGlvbihjb2xvcik7CiB9CiAKKy8vIEE5OFJHQjxmbG9h
dD4gb3ZlcmxvYWRzCisKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IEE5OFJHQjxm
bG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKK30KKwor
U3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IEE5OFJHQjxmbG9hdD4mIGNvbG9yKQor
eworICAgIHJldHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKK30KKworU3RyaW5nIHNlcmlhbGl6
YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IEE5OFJHQjxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKK30KKwogLy8gTGFiPGZsb2F0PiBvdmVy
bG9hZHMKIAogU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgTGFiPGZsb2F0PiYgY29s
b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclNlcmlhbGl6YXRpb24uaAkocmV2aXNpb24gMjcxOTE4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDEwIEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1MK
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBEaXNwbGF5
UDM8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRl
clRyZWVBc1RleHQoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwogCitXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBBOThSR0I8ZmxvYXQ+Jik7CitXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgQTk4UkdCPGZsb2F0PiYp
OworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0
KGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKKwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6
YXRpb25Gb3JDU1MoY29uc3QgTGFiPGZsb2F0PiYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNl
cmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IExhYjxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBMYWI8ZmxvYXQ+Jik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmNwcAkocmV2aXNpb24gMjcxOTE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsOSBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDCiAgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNw
bGF5UDM6CiAgICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIENvbG9yU3BhY2U6OkE5OFJHQjoKKyAgICAgICAgdHMgPDwgImE5OC1yZ2IiOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAgICAgdHMgPDwgIkwqYSpi
IjsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsNyBA
QCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBTUkdCLAogICAgIExpbmVh
clJHQiwKICAgICBEaXNwbGF5UDMsCisgICAgQTk4UkdCLAogICAgIExhYgogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNp
b24gMjcxOTE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IEV4dGVuZGVkU1JHQkE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVh
clNSR0JBOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNSR0JBOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5UDM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IExpbmVhckRpc3BsYXlQMzsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQTk4UkdC
OwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJBOThSR0I7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IExhYjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTENIQTsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSFNMQTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFla
OworCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEFscGhhVHJhaXRzOwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBbHBoYVRyYWl0czx1aW50OF90PiB7CkBAIC0xMTgsNiArMTMxLDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgWFlaTW9kZWw8ZmxvYXQ+IHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gZmFsc2U7CiB9OwogCisKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZSwgdHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yVHlwZSBtYWtlRnJvbUNvbXBvbmVudHMoY29u
c3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjKQogewogICAgIHJldHVybiBDb2xvclR5cGUgeyBjWzBd
LCBjWzFdLCBjWzJdLCBjWzNdIH07CkBAIC0yNjksOTIgKzI4MywyNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBQYXJlbnQ+IHN0cnVjdCBDb2xvcldpCiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IFNSR0JBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8U1JHQkE8VD4+IHsKLSAg
ICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKLSAgICB1c2luZyBNb2RlbCA9IFJHQk1vZGVsPFQ+
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlIHsgQ29sb3JTcGFjZTo6U1JH
QiB9OwotICAgIAotICAgIGNvbnN0ZXhwciBTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBU
IGFscGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkKLSAgICAgICAgOiByZWQgeyByZWQgfQot
ICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQotICAgICAgICAsIGJsdWUgeyBibHVlIH0KLSAgICAg
ICAgLCBhbHBoYSB7IGFscGhhIH0KLSAgICB7Ci0gICAgICAgIGFzc2VydEluUmFuZ2UoKnRoaXMp
OwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBTUkdCQSgpCi0gICAgICAgIDogU1JHQkEgeyAwLCAw
LCAwLCAwIH0KLSAgICB7Ci0gICAgfQotCi0gICAgVCByZWQ7Ci0gICAgVCBncmVlbjsKLSAgICBU
IGJsdWU7Ci0gICAgVCBhbHBoYTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhw
ciBDb2xvckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgU1JHQkE8VD4mIGMp
Ci17Ci0gICAgcmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OwotfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNS
R0JBPFQ+JiBhLCBjb25zdCBTUkdCQTxUPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxJc0NvbnZlcnRpYmxlVG9Db2xvckNvbXBvbmVu
dHM8Q29sb3JUeXBlPj4qID0gbnVsbHB0cj4KK2NvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ29sb3JUeXBlJiBhLCBjb25zdCBDb2xvclR5cGUmIGIpCiB7CiAgICAgcmV0dXJuIGFzQ29s
b3JDb21wb25lbnRzKGEpID09IGFzQ29sb3JDb21wb25lbnRzKGIpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNSR0JBPFQ+JiBhLCBj
b25zdCBTUkdCQTxUPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWZfdDxJc0NvbnZlcnRpYmxlVG9Db2xvckNvbXBvbmVudHM8Q29sb3JUeXBl
Pj4qID0gbnVsbHB0cj4KK2NvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3JUeXBl
JiBhLCBjb25zdCBDb2xvclR5cGUmIGIpCiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQSA6IENvbG9yV2l0aEFs
cGhhSGVscGVyPEV4dGVuZGVkU1JHQkE8VD4+IHsKLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0g
VDsKLSAgICB1c2luZyBNb2RlbCA9IEV4dGVuZGVkUkdCTW9kZWw8VD47Ci0KLSAgICBjb25zdGV4
cHIgRXh0ZW5kZWRTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBUIGFscGhhID0gQWxwaGFU
cmFpdHM8VD46Om9wYXF1ZSkKLSAgICAgICAgOiByZWQgeyByZWQgfQotICAgICAgICAsIGdyZWVu
IHsgZ3JlZW4gfQotICAgICAgICAsIGJsdWUgeyBibHVlIH0KLSAgICAgICAgLCBhbHBoYSB7IGFs
cGhhIH0KLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3RleHByIEV4dGVuZGVkU1JHQkEoKQotICAg
ICAgICA6IEV4dGVuZGVkU1JHQkEgeyAwLCAwLCAwLCAwIH0KLSAgICB7Ci0gICAgfQotCi0gICAg
VCByZWQ7Ci0gICAgVCBncmVlbjsKLSAgICBUIGJsdWU7Ci0gICAgVCBhbHBoYTsKLX07Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gYXNDb2xvckNv
bXBvbmVudHMoY29uc3QgRXh0ZW5kZWRTUkdCQTxUPiYgYykKLXsKLSAgICByZXR1cm4geyBjLnJl
ZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07Ci19CisvLyBNQVJLOiAtIFJHQiBDb2xvciBU
eXBlcy4KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBhLCBjb25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBiKQotewot
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBFeHRlbmRlZFNSR0JBPFQ+JiBhLCBjb25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBiKQotewotICAg
IHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExp
bmVhclNSR0JBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8TGluZWFyU1JHQkE8VD4+IHsKK3RlbXBs
YXRlPHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBDLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBNPiBz
dHJ1Y3QgUkdCQVR5cGUgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxDPFQ+PiB7CiAgICAgdXNpbmcg
Q29tcG9uZW50VHlwZSA9IFQ7Ci0gICAgdXNpbmcgTW9kZWwgPSBSR0JNb2RlbDxUPjsKLSAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkxpbmVhclJHQjsK
LQotICAgIGNvbnN0ZXhwciBMaW5lYXJTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBUIGFs
cGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkKKyAgICB1c2luZyBNb2RlbCA9IE07CisgICAg
CisgICAgY29uc3RleHByIFJHQkFUeXBlKFQgcmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEg
PSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQogICAgICAgICA6IHJlZCB7IHJlZCB9CiAgICAgICAg
ICwgZ3JlZW4geyBncmVlbiB9CiAgICAgICAgICwgYmx1ZSB7IGJsdWUgfQpAQCAtMzYzLDggKzMx
Miw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJTUkdCQSAKICAgICAgICAg
YXNzZXJ0SW5SYW5nZSgqdGhpcyk7CiAgICAgfQogCi0gICAgY29uc3RleHByIExpbmVhclNSR0JB
KCkKLSAgICAgICAgOiBMaW5lYXJTUkdCQSB7IDAsIDAsIDAsIDAgfQorICAgIGNvbnN0ZXhwciBS
R0JBVHlwZSgpCisgICAgICAgIDogUkdCQVR5cGUgeyAwLCAwLCAwLCAwIH0KICAgICB7CiAgICAg
fQogCkBAIC0zNzQsMTQxICszMjMsNjUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExp
bmVhclNSR0JBIAogICAgIFQgYWxwaGE7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IExpbmVhclNS
R0JBPFQ+JiBjKQordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIENvbG9yVHlwZSwg
dHlwZW5hbWUgVCwgdHlwZW5hbWUgTT4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0Nv
bG9yQ29tcG9uZW50cyhjb25zdCBSR0JBVHlwZTxDb2xvclR5cGUsIFQsIE0+JiBjKQogewogICAg
IHJldHVybiB7IGMucmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMuYWxwaGEgfTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lYXJTUkdC
QTxUPiYgYSwgY29uc3QgTGluZWFyU1JHQkE8VD4mIGIpCi17Ci0gICAgcmV0dXJuIGFzQ29sb3JD
b21wb25lbnRzKGEpID09IGFzQ29sb3JDb21wb25lbnRzKGIpOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExpbmVhclNSR0JBPFQ+JiBh
LCBjb25zdCBMaW5lYXJTUkdCQTxUPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQot
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNSR0JBIDogQ29s
b3JXaXRoQWxwaGFIZWxwZXI8TGluZWFyRXh0ZW5kZWRTUkdCQTxUPj4gewotICAgIHVzaW5nIENv
bXBvbmVudFR5cGUgPSBUOwotICAgIHVzaW5nIE1vZGVsID0gRXh0ZW5kZWRSR0JNb2RlbDxUPjsK
LQotICAgIGNvbnN0ZXhwciBMaW5lYXJFeHRlbmRlZFNSR0JBKFQgcmVkLCBUIGdyZWVuLCBUIGJs
dWUsIFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQotICAgICAgICA6IHJlZCB7IHJl
ZCB9Ci0gICAgICAgICwgZ3JlZW4geyBncmVlbiB9Ci0gICAgICAgICwgYmx1ZSB7IGJsdWUgfQot
ICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIg
TGluZWFyRXh0ZW5kZWRTUkdCQSgpCi0gICAgICAgIDogTGluZWFyRXh0ZW5kZWRTUkdCQSB7IDAs
IDAsIDAsIDAgfQotICAgIHsKLSAgICB9Ci0KLSAgICBUIHJlZDsKLSAgICBUIGdyZWVuOwotICAg
IFQgYmx1ZTsKLSAgICBUIGFscGhhOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JB
IDogUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8
U1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgTGluZWFyID0gTGlu
ZWFyU1JHQkE8VD47CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xv
clNwYWNlOjpTUkdCIH07CiB9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwg
VCkgLT4gU1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNv
bXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxU
PiYgYykKLXsKLSAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxUPiYgYSwgY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxU
PiYgYikKLXsKLSAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBv
bmVudHMoYik7Ci19Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQSA6
IFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKKyAgICB1
c2luZyBSR0JBVHlwZTxFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdC
QVR5cGU7CisgICAgdXNpbmcgTGluZWFyID0gTGluZWFyRXh0ZW5kZWRTUkdCQTxUPjsKK307Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRlZFNSR0JBKFQsIFQsIFQsIFQpIC0+IEV4dGVuZGVk
U1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxUPiYgYSwgY29uc3QgTGluZWFyRXh0ZW5kZWRT
UkdCQTxUPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IExpbmVhclNSR0JBIDogUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1v
ZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVsPFQ+
Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgR2FtbWFFbmNvZGVkID0gU1JHQkE8VD47CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpMaW5lYXJSR0I7Cit9
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyU1JHQkEoVCwgVCwgVCwgVCkgLT4gTGluZWFy
U1JHQkE8VD47CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNS
R0JBIDogUkdCQVR5cGU8TGluZWFyRXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxU
Pj4geworICAgIHVzaW5nIFJHQkFUeXBlPExpbmVhckV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVk
UkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBHYW1tYUVuY29kZWQgPSBFeHRlbmRl
ZFNSR0JBPFQ+OworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckV4dGVuZGVkU1JHQkEo
VCwgVCwgVCwgVCkgLT4gTGluZWFyRXh0ZW5kZWRTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IERpc3BsYXlQMyA6IENvbG9yV2l0aEFscGhhSGVscGVyPERpc3BsYXlQMzxU
Pj4gewotICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwotICAgIHVzaW5nIE1vZGVsID0gUkdC
TW9kZWw8VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGlzcGxheVAzIDogUkdCQVR5
cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4geworICAgIHVzaW5nIFJHQkFUeXBlPERpc3Bs
YXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBMaW5lYXIgPSBMaW5l
YXJEaXNwbGF5UDM8VD47CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgPSBD
b2xvclNwYWNlOjpEaXNwbGF5UDM7Ci0KLSAgICBjb25zdGV4cHIgRGlzcGxheVAzKFQgcmVkLCBU
IGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQotICAgICAg
ICA6IHJlZCB7IHJlZCB9Ci0gICAgICAgICwgZ3JlZW4geyBncmVlbiB9Ci0gICAgICAgICwgYmx1
ZSB7IGJsdWUgfQotICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQotICAgIHsKLSAgICAgICAgYXNz
ZXJ0SW5SYW5nZSgqdGhpcyk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIERpc3BsYXlQMygpCi0g
ICAgICAgIDogRGlzcGxheVAzIHsgMCwgMCwgMCwgMCB9Ci0gICAgewotICAgIH0KLQotICAgIFQg
cmVkOwotICAgIFQgZ3JlZW47Ci0gICAgVCBibHVlOwotICAgIFQgYWxwaGE7CiB9OwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gRGlzcGxheVAzKFQsIFQsIFQsIFQpIC0+IERpc3BsYXlQMzxUPjsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9y
Q29tcG9uZW50cyhjb25zdCBEaXNwbGF5UDM8VD4mIGMpCi17Ci0gICAgcmV0dXJuIHsgYy5yZWQs
IGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERpc3BsYXlQMzxUPiYgYSwgY29uc3QgRGlz
cGxheVAzPFQ+JiBiKQotewotICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0Nv
bG9yQ29tcG9uZW50cyhiKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBEaXNwbGF5UDM8VD4mIGEsIGNvbnN0IERpc3BsYXlQMzxUPiYg
YikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDMgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMaW5lYXJEaXNw
bGF5UDM8VD4+IHsKLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKLSAgICB1c2luZyBNb2Rl
bCA9IFJHQk1vZGVsPFQ+OwotCi0gICAgY29uc3RleHByIExpbmVhckRpc3BsYXlQMyhUIHJlZCwg
VCBncmVlbiwgVCBibHVlLCBUIGFscGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkKLSAgICAg
ICAgOiByZWQgeyByZWQgfQotICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQotICAgICAgICAsIGJs
dWUgeyBibHVlIH0KLSAgICAgICAgLCBhbHBoYSB7IGFscGhhIH0KLSAgICB7Ci0gICAgICAgIGFz
c2VydEluUmFuZ2UoKnRoaXMpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBMaW5lYXJEaXNwbGF5
UDMoKQotICAgICAgICA6IExpbmVhckRpc3BsYXlQMyB7IDAsIDAsIDAsIDAgfQotICAgIHsKLSAg
ICB9Ci0KLSAgICBUIHJlZDsKLSAgICBUIGdyZWVuOwotICAgIFQgYmx1ZTsKLSAgICBUIGFscGhh
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckRpc3BsYXlQMyA6IFJHQkFUeXBl
PExpbmVhckRpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKKyAgICB1c2luZyBSR0JBVHlwZTxM
aW5lYXJEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgR2Ft
bWFFbmNvZGVkID0gRGlzcGxheVAzPFQ+OwogfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVh
ckRpc3BsYXlQMyhULCBULCBULCBUKSAtPiBMaW5lYXJEaXNwbGF5UDM8VD47CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVu
dHMoY29uc3QgTGluZWFyRGlzcGxheVAzPFQ+JiBjKQotewotICAgIHJldHVybiB7IGMucmVkLCBj
LmdyZWVuLCBjLmJsdWUsIGMuYWxwaGEgfTsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBBOThSR0IgOiBSR0JBVHlwZTxBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcg
UkdCQVR5cGU8QTk4UkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5nIExp
bmVhciA9IExpbmVhckE5OFJHQjxUPjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JT
cGFjZSA9IENvbG9yU3BhY2U6OkE5OFJHQjsKK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThS
R0IoVCwgVCwgVCwgVCkgLT4gQTk4UkdCPFQ+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVhckRpc3BsYXlQMzxUPiYgYSwgY29uc3Qg
TGluZWFyRGlzcGxheVAzPFQ+JiBiKQotewotICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhh
KSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBMaW5lYXJBOThSR0IgOiBSR0JBVHlwZTxMaW5lYXJBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7
CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyQTk4UkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFU
eXBlOworICAgIHVzaW5nIEdhbW1hRW5jb2RlZCA9IEE5OFJHQjxUPjsKK307Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBMaW5lYXJBOThSR0IoVCwgVCwgVCwgVCkgLT4gTGluZWFyQTk4UkdCPFQ+Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExp
bmVhckRpc3BsYXlQMzxUPiYgYSwgY29uc3QgTGluZWFyRGlzcGxheVAzPFQ+JiBiKQotewotICAg
IHJldHVybiAhKGEgPT0gYik7Ci19CiAKKy8vIE1BUks6IC0gTGFiIENvbG9yIFR5cGUuCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMYWIgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMYWI8
VD4+IHsKICAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKQEAgLTU0MCwxNiArNDEzLDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcAogICAgIHJldHVybiB7IGMu
bGlnaHRuZXNzLCBjLmEsIGMuYiwgYy5hbHBoYSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExhYjxUPiYgYSwgY29uc3QgTGFiPFQ+
JiBiKQotewotICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9u
ZW50cyhiKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBMYWI8VD4mIGEsIGNvbnN0IExhYjxUPiYgYikKLXsKLSAgICByZXR1cm4gIShh
ID09IGIpOwotfQotCisvLyBNQVJLOiAtIExDSEEgQ29sb3IgVHlwZS4KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IExDSEEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMQ0hBPFQ+PiB7CiAg
ICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CkBAIC01ODAsMTYgKzQ0NCw4IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXAKICAgICByZXR1cm4geyBjLmxpZ2h0bmVz
cywgYy5jaHJvbWEsIGMuaHVlLCBjLmFscGhhIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgTENIQTxUPiYgYSwgY29uc3QgTENIQTxU
PiYgYikKLXsKLSAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBv
bmVudHMoYik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yIT0oY29uc3QgTENIQTxUPiYgYSwgY29uc3QgTENIQTxUPiYgYikKLXsKLSAgICByZXR1cm4g
IShhID09IGIpOwotfQogCisvLyBNQVJLOiAtIEhTTEEgQ29sb3IgVHlwZS4KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhTTEEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxIU0xBPFQ+PiB7
CiAgICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CkBAIC02MTUsMjMgKzQ3MSwxMiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSFNMQSA6IENvbG9yCiAgICAgVCBhbHBoYTsKIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEhTTEEoVCwgVCwgVCwgVCkgLT4gSFNMQTxUPjsKLQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29t
cG9uZW50cyhjb25zdCBIU0xBPFQ+JiBjKQogewogICAgIHJldHVybiB7IGMuaHVlLCBjLnNhdHVy
YXRpb24sIGMubGlnaHRuZXNzLCBjLmFscGhhIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgSFNMQTxUPiYgYSwgY29uc3QgSFNMQTxU
PiYgYikKLXsKLSAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBv
bmVudHMoYik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yIT0oY29uc3QgSFNMQTxUPiYgYSwgY29uc3QgSFNMQTxUPiYgYikKLXsKLSAgICByZXR1cm4g
IShhID09IGIpOwotfQotCisvLyBNQVJLOiAtIFhZWiBDb2xvciBUeXBlLgogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgWFlaQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPFhZWkE8VD4+IHsK
ICAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKQEAgLTY2MiwzMyArNTA3LDYgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcAogICAgIHJldHVybiB7IGMueCwgYy55
LCBjLnosIGMuYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBYWVpBPFQ+JiBhLCBjb25zdCBYWVpBPFQ+JiBiKQotewotICAg
IHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBY
WVpBPFQ+JiBhLCBjb25zdCBYWVpBPFQ+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19
Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRl
Y2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYg
Y29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsK
LSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOwotICAgIGNhc2UgQ29s
b3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+
KGNvbXBvbmVudHMpKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZy
b21Db21wb25lbnRzPERpc3BsYXlQMzxUPj4oY29tcG9uZW50cykpOwotICAgIGNhc2UgQ29sb3JT
cGFjZTo6TGFiOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0
b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGFiPFQ+Pihjb21wb25lbnRzKSk7Ci0g
ICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JB
PFQ+Pihjb21wb25lbnRzKSk7Ci19CiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MTkxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWlu
dDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAy
NTY7IGkrKykgewogICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1NS4wZjsKLSAg
ICAgICAgICAgICAgICBjb2xvciA9IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhj
b2xvcik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9M
aW5lYXJDbGFtcGluZyhjb2xvcik7CiAgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNf
Y2FzdDx1aW50OF90Pihyb3VuZChjb2xvciAqIDI1NSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIGFycmF5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwg
MjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkr
KykgewogICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1NS4wZjsKLSAgICAgICAg
ICAgICAgICBjb2xvciA9IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvcik7
CisgICAgICAgICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVh
ckNsYW1waW5nKGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHJldmlzaW9uIDI3MTkxOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDYgKzgyLDIwIEBAIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNw
YWNlUmVmKCkKICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKIH0KIAorQ0dDb2xvclNw
YWNlUmVmIGE5OFJHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VS
ZWYgYTk4UkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICAgICAgYTk4UkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VBZG9iZVJHQjE5OTgpOworI2Vsc2UKKyAgICAgICAgYTk4UkdCQ29sb3JTcGFj
ZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gYTk4
UkdCQ29sb3JTcGFjZTsKK30KKwogQ0dDb2xvclNwYWNlUmVmIGxhYkNvbG9yU3BhY2VSZWYoKQog
ewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29udmVyc2lvbiB0byBMYWIgb24gc3Vw
cG9ydGVkIHBsYXRmb3Jtcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQCBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNv
bG9yCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJl
ZigpOwogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VS
ZWYoKTsKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCk7
CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgYTk4UkdCQ29sb3JTcGFjZVJlZigpOwog
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYo
KTsKIAogc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKQEAgLTQ2LDYgKzQ3LDggQEAgc3RhdGljIGlubGluZSBDR0Nv
bG9yU3BhY2VSZWYgY2FjaGVkQ0dDbwogICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFj
ZVJlZigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgogICAgICAgICByZXR1cm4g
ZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgor
ICAgICAgICByZXR1cm4gYTk4UkdCQ29sb3JTcGFjZVJlZigpOwogICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGFiOgogICAgICAgICByZXR1cm4gbGFiQ29sb3JTcGFjZVJlZigpOwogICAgIH0KSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3MTkxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAxLTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IoYTk4LXJnYiAuLi4pIGFz
IHBhcnQgb2YgQ1NTIENvbG9yIDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgVW4tZmFpbCBzb21lIG5v
dyBwYXNzaW5nIHRlc3RzLgorCiAyMDIxLTAxLTI2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTGF5b3V0VGVzdHNdIFBhc3MgYXV0aGVudGljYXRpb24g
dG8gQ0dJIHNjcmlwdHMKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjcxOTE4KQor
KysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNDYwNCw4
ICs0NjA0LDYgQEAgd2Via2l0Lm9yZy9iLzIyMDMyNSBodHRwL3dwdC9jc3MvY3NzLWhpZwogIyBV
bnN1cHBvcnRlZCBjc3MgY29sb3IoKSB2YXJpYW50cwogd2Via2l0Lm9yZy9iLzIyMDkyOCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvcHJlZGVmaW5lZC0wMDMu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXSAjIEludmFsaWQgdGVzdCwgbm8gY29sb3JzcGFjZSBz
cGVjaWZpZWQKIHdlYmtpdC5vcmcvYi8yMjA5MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWNvbG9yL3ByZWRlZmluZWQtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0gIyBJbnZhbGlkIHRlc3QsIG5vIGNvbG9yc3BhY2Ugc3BlY2lmaWVkCi13ZWJraXQub3JnL2Iv
MjIwOTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9wcmVk
ZWZpbmVkLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdICMgUmVxdWlyZXMgYTk4LXJnYiBz
dXBwb3J0Ci13ZWJraXQub3JnL2IvMjIwOTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb2xvci9wcmVkZWZpbmVkLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
ICMgUmVxdWlyZXMgYTk4LXJnYiBzdXBwb3J0CiB3ZWJraXQub3JnL2IvMjIwOTI4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9wcmVkZWZpbmVkLTAwOS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdICMgUmVxdWlyZXMgcHJvcGhvdG8tcmdiIHN1cHBvcnQKIHdl
YmtpdC5vcmcvYi8yMjA5MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvbG9yL3ByZWRlZmluZWQtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0gIyBSZXF1aXJl
cyBwcm9waG90by1yZ2Igc3VwcG9ydAogd2Via2l0Lm9yZy9iLzIyMDkyOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvcHJlZGVmaW5lZC0wMTEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXSAjIFJlcXVpcmVzIHJlYzIwMjAgc3VwcG9ydAo=
</data>
<flag name="commit-queue"
          id="436466"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418490</attachid>
            <date>2021-01-26 16:53:04 -0800</date>
            <delta_ts>2021-01-27 11:10:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221018-20210126165303.patch</filename>
            <type>text/plain</type>
            <size>44153</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAyMS0wMS0yNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbG9y
KGE5OC1yZ2IgLi4uKSBhcyBwYXJ0IG9mIENTUyBDb2xvciA0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgor
ICAgICAgICBBZGQga2V5d29yZCBmb3IgYTk4LXJnYiBhbmQgYSBjb21tZW50IGluZGljYXRpbmcg
dGhhdCBsYWIsIHdoaWNoIGFscmVhZHkgZXhpc3RzIGFzIGEgdmFsdWUsCisgICAgICAgIGlzIGFs
c28gYSB2YWxpZCBpZGVudGlmaWVyIGZvciB0aGUgY29sb3IgZnVuY3Rpb24uCisgCisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JU
eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNl
Q29sb3JGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yRnVuY3Rpb25Gb3JTUkdCT3JEaXNwbGF5UDNQYXJhbWV0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgR2VuZXJhbGl6ZSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JT
UkdCT3JEaXNwbGF5UDNQYXJhbWV0ZXJzIHRvIHdvcmsgZm9yIGFsbCBSR0IgdHlwZXMsIHdoaWNo
IG5vdyBpbmNsdWRlCisgICAgICAgIEE5OFJHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUkdCVHJhbnNmZXJG
dW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JU
cmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5v
bkNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRv
TGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJDbGFtcGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpmcm9tTGluZWFyQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9MaW5lYXJOb25DbGFtcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpmcm9tTGluZWFyTm9u
Q2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJTUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0xpbmVhckV4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6dG9TUkdC
QSk6CisgICAgICAgIChXZWJDb3JlOjp0b0V4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9MaW5lYXJEaXNwbGF5UDMpOgorICAgICAgICAoV2ViQ29yZTo6dG9EaXNwbGF5UDMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJBOThSR0IpOgorICAgICAgICAoV2ViQ29yZTo6dG9B
OThSR0IpOgorICAgICAgICAoV2ViQ29yZTo6dG9YWVpBKToKKyAgICAgICAgKFdlYkNvcmU6Omxp
bmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnJnYlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0E5OFJHQik6CisgICAgICAgIChXZWJDb3JlOjp0b0xp
bmVhckE5OFJHQik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsV2l0aENvbG9yVHlwZSk6CisgICAg
ICAgIEFkZCBjb252ZXJzaW9uIHN1cHBvcnQgZm9yIEE5OFJHQiBhbmQgTGluZWFyQTk4UkdCLiBN
b3ZlIGdhbW1hIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGludG8gc3RydWN0cyBuYW1l
ZCBmb3IgdGhlIHR5cGUgb2YgdHJhbnNmZXIgZnVuY3Rpb24uIFdoaWxlIG5vdCB1c2VkIGN1cnJl
bnRseSwgdGhpcworICAgICAgICB3aWxsIGFsbG93IGZ1dHVyZSB0ZW1wbGF0aXppbmcgb2YgY29u
dmVyc2lvbiB0byBhdm9pZCBzbyBtdWNoIGJvaWxlciBwbGF0ZSBpbiB0aGUKKyAgICAgICAgZnV0
dXJlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZv
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1Rl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5oOgor
ICAgICAgICBBZGQgc2VyaWFsaXphdGlvbiBzdXBwb3J0IGZvciBjb2xvcihhOTgtcmdiIC4uLiku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIEFkZCBBOThSR0IgYXMg
YSBDb2xvclNwYWNlLCB3aGljaCByZWFsbHkganVzdCBtZWFucyBpdCBpcyBzb21ldGhpbmcKKyAg
ICAgICAgRXh0ZW5kZWRDb2xvciBjYW4gaG9sZC4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgYSBDR0Nv
bG9yU3BhY2UgZm9yIEE5OFJHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpSR0JBVHlwZTo6UkdCQVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1JHQkE6OlNSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkU1JHQkE6
OkV4dGVuZGVkU1JHQkEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyU1JHQkE6
OkxpbmVhclNSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckV4dGVuZGVk
U1JHQkE6OkxpbmVhckV4dGVuZGVkU1JHQkEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheVAzOjpEaXNwbGF5UDMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZWFy
RGlzcGxheVAzOjpMaW5lYXJEaXNwbGF5UDMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFdpdGhDb2xvclR5cGUpOiBEZWxldGVkLgorICAgICAgICBTaW1wbGlmeSBhZGRpbmcgbmV3
IFJHQiBjb2xvciB0eXBlcyBieSBhZGRpbmcgYSBzaGFyZWQgYmFzZSBjbGFzcywgUkdCQVR5cGUK
KyAgICAgICAgYW5kIGFuZCBhIHNoYXJlZCBhc0NvbG9yQ29tcG9uZW50cyBmdW5jaXRvbi4gQWxz
byBzaW1wbGlmeSBhbGwgY29sb3IgdHlwZXMgCisgICAgICAgIGJ5IHJlbW92aW5nIHRoZSBuZWVk
IHRvIGRlZmluZSB5b3VyIG93biBvcGVyYXRvcj09LyE9IGZvciBlYWNoIHR5cGUgYnkgaGF2aW5n
CisgICAgICAgIGEgc2luZ2xlIG9uZSB0aGF0IG9wZXJhdGVzIG9uIGFueSB0eXBlIHRoYXQgY2Fu
IGhhdmUgYXNDb2xvckNvbXBvbmVudHMoKSBjYWxsZWQKKyAgICAgICAgb24gaXQuCisgICAgICAg
IAorICAgICAgICBUbyBjcmVhdGUgYSBuZXcgUkdCIGNvbG9yIChvbmUgd2l0aCByZWQsIGdyZWVu
IGFuZCBibHVlIG5hbWVkIGNvbXBvbmVudHMpIG9uZQorICAgICAgICBub3cgb25seSBuZWVkcyB0
byBkbzoKKyAgICAgICAgCisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Rm9vIDogUkdCQVR5cGU8Rm9vLCBULCBSR0JNb2RlbDxUPj4geworICAgICAgICAgICAgICAgIHVz
aW5nIFJHQkFUeXBlPEZvbywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBGb28oVCwgVCwgVCwgVCkgLT4g
Rm9vPFQ+OworCisgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIHR5cGUgaGFzIGdhbW1hIGVu
Y29kZWQgYW5kIGxpbmVhciB2ZXJzaW9ucywgaXQgc2hvdWxkIGhhdmUKKyAgICAgICAgZWl0aGVy
IGEgYHVzaW5nIEdhbW1hRW5jb2RlZCA9IC4uLmAgb3IgYHVzaW5nIExpbmVhciA9IC4uLmAgZGVj
YWxhcmluZyBpdHMgCisgICAgICAgIGNvdW50ZXJwYXJ0IGFuZCBzaG91bGQgYWRkIGEgY29sb3JT
cGFjZSBtZW1iZXIgaWYgdGhlIHR5cGUgaXMgdXNlZCBieSBFeHRlbmRlZENvbG9yLgorCisgICAg
ICAgIE5vdGUsIHRoZSBkZWR1Y3Rpb24gZ3VpZGUgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgdGhpbmdz
IGxpa2UgdGhlIGZvbGxvd2luZyB3b3JraW5nOgorICAgICAgICAgICAgCisgICAgICAgICAgICBh
dXRvIGNvbG9yID0gU1JHQiB7IGZsb2F0MSwgZmxvYXQyLCAuLi4gfTsKKyAgICAgICAgICAgIAor
ICAgICAgICBVbmZvcnR1bmF0ZWx5LCBkZWR1Y3Rpb24gZG9lcyBub3QgY29tZSBhbG9uZyB3aGVu
IHlvdSBleHBsaXRpbHkgaW5oZXJpdCBjb25zdHJ1Y3RvcnMKKyAgICAgICAgbGlrZSBpcyBiZWlu
ZyBkb25lIGZvciB0aGVzZS4gU2VlIHRoZSAiRGVkdWNpbmcgZnJvbSBpbmhlcml0ZWQgY29uc3Ry
dWN0b3JzIiBzZWN0aW9uCisgICAgICAgIGluIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEv
c2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMTkvcDEwMjFyNC5odG1sLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2Up
OgorICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyBuYW1lIGZvciBnYW1tYSBjb252ZXJzaW9uIGZ1
bmN0aW9ucy4KKwogMjAyMS0wMS0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHNob3dSZW5kZXJUcmVlKCkgZHVtcCBGbG9hdGluZ09iamVj
dHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lvbiAy
NzE5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwNyw2ICsxNDA3LDggQEAgcmVjMjAyMAogLy8gY29sb3IoKSBmdW5jdGlv
bgogc1JHQgogZGlzcGxheS1wMworYTk4LXJnYgorLy8gbGFiCiAKIC8vIHByZWZlcnMtZGVmYXVs
dC1hcHBlYXJhbmNlCiBwcmVmZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNzE5MTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg3NSw5ICs4NzUsOSBAQCBzdGF0aWMgQ29sb3IgcGFyc2VM
Q0hQYXJhbWV0ZXJzKENTU1BhcnNlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4K
LXN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JTUkdCT3JEaXNwbGF5UDNQYXJhbWV0
ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MpCitzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1
bmN0aW9uRm9yUkdCVHlwZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKIHsKLSAgICBBU1NF
UlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVNSR0IgfHwgYXJncy5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZURpc3BsYXlQMyk7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVTUkdCIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVEaXNwbGF5UDMgfHwgYXJn
cy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUE5OFJnYik7CiAgICAgY29uc3VtZUlkZW50UmF3KGFy
Z3MpOwogCiAgICAgZG91YmxlIGNoYW5uZWxzWzNdID0geyAwLCAwLCAwIH07CkBAIC05MzYsMTAg
KzkzNiwxMyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVyCiAgICAg
Q29sb3IgY29sb3I7CiAgICAgc3dpdGNoIChhcmdzLnBlZWsoKS5pZCgpKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZVNSR0I6Ci0gICAgICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yU1JHQk9y
RGlzcGxheVAzUGFyYW1ldGVyczxTUkdCQTxmbG9hdD4+KGFyZ3MpOworICAgICAgICBjb2xvciA9
IHBhcnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cGVzPFNSR0JBPGZsb2F0Pj4oYXJncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVEaXNwbGF5UDM6Ci0gICAgICAgIGNvbG9yID0g
cGFyc2VDb2xvckZ1bmN0aW9uRm9yU1JHQk9yRGlzcGxheVAzUGFyYW1ldGVyczxEaXNwbGF5UDM8
ZmxvYXQ+PihhcmdzKTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JU
eXBlczxEaXNwbGF5UDM8ZmxvYXQ+PihhcmdzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NWYWx1ZUE5OFJnYjoKKyAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JU
eXBlczxBOThSR0I8ZmxvYXQ+PihhcmdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZUxhYjoKICAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JMYWJQYXJhbWV0
ZXJzKGFyZ3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw2ICs1NywyMCBAQCBzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5
elRvCiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZl
cnNpb24tY29kZQogc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJEaXNw
bGF5UDNUb1hZWk1hdHJpeCB7CisgICAgMC41NzY2NjkwNDI5MTAxMzA1ZiwgICAwLjE4NTU1ODIz
NzkwNjU0NjNmLCAgIDAuMTg4MjI4NjQ2MjM0OTk0N2YsCisgICAgMC4yOTczNDQ5NzUyNTA1MzYw
NWYsICAwLjYyNzM2MzU2NjI1NTQ2NjFmLCAgIDAuMDc1MjkxNDU4NDkzOTk3ODhmLAorICAgIDAu
MDI3MDMxMzYxMzg2NDEyMzRmLCAgMC4wNzA2ODg4NTI1MzU4MjcyM2YsICAwLjk5MTMzNzUzNjgz
NzYzODhmCit9OworCisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xv
ci1jb252ZXJzaW9uLWNvZGUKK3N0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6
VG9MaW5lYXJBOThSR0JNYXRyaXggeworCSAyLjA0MTU4NzkwMzgxMDc0NjVmLCAgICAtMC41NjUw
MDY5NzQyNzg4NTk2ZiwgICAtMC4zNDQ3MzEzNTA3NzgzMjk1NmYsCisJLTAuOTY5MjQzNjM2Mjgw
ODc5NWYsICAgICAxLjg3NTk2NzUwMTUwNzcyMDJmLCAgICAwLjA0MTU1NTA1NzQwNzE3NTU3ZiwK
KwkgMC4wMTM0NDQyODA2MzIwMzExNDJmLCAgLTAuMTE4MzYyMzkyMjMxMDE4MzhmLCAgIDEuMDE1
MTc0OTk0MzkxMjA1NGYKK307CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29s
b3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQorc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwz
LCAzPiBsaW5lYXJBOThSR0JUb1hZWk1hdHJpeCB7CiAgICAgMC40ODY1NzA5NDg2NDgyMTYyZiwg
MC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcyODUyMzQzNjNmLAogICAgIDAuMjI4OTc0NTY0
MDY5NzQ4OGYsIDAuNjkxNzM4NTIxODM2NTA2NGYsIDAuMDc5Mjg2OTE0MDkzNzQ1ZiwKICAgICAw
LjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3
NmYKQEAgLTc4LDcgKzkyLDcgQEAgc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBE
NjVUbwogCiAvLyBHYW1tYSBjb252ZXJzaW9ucy4KIAotZmxvYXQgbGluZWFyVG9SR0JDb2xvckNv
bXBvbmVudENsYW1waW5nKGZsb2F0IGMpCitmbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJv
bUxpbmVhckNsYW1waW5nKGZsb2F0IGMpCiB7CiAgICAgaWYgKGMgPCAwLjAwMzEzMDhmKQogICAg
ICAgICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KDEyLjkyZiAqIGMsIDApOwpAQCAtODYsNyArMTAw
LDcgQEAgZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKAogICAgIHJldHVy
biBjbGFtcFRvPGZsb2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1
NWYsIDAsIDEpOwogfQogCi1mbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmco
ZmxvYXQgYykKK2Zsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZs
b2F0IGMpCiB7CiAgICAgaWYgKGMgPD0gMC4wNDA0NWYpCiAgICAgICAgIHJldHVybiBzdGQ6Om1h
eDxmbG9hdD4oYyAvIDEyLjkyZiwgMCk7CkBAIC05NCw5ICsxMDgsOSBAQCBmbG9hdCByZ2JUb0xp
bmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoCiAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0
ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOwogfQogCi1mbG9hdCBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoZmxvYXQgYykKK2Zsb2F0IFNSR0JU
cmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKIHsKLSAgICBm
bG9hdCBzaWduID0gYyA+IDAgPyAxLjBmIDogLTEuMGY7CisgICAgZmxvYXQgc2lnbiA9IHN0ZDo6
c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKICAgICBjID0gc3RkOjphYnMoYyk7CiAKICAgICBp
ZiAoYyA8IDAuMDAzMTMwOGYpCkBAIC0xMDUsOSArMTE5LDkgQEAgZmxvYXQgbGluZWFyVG9SR0JD
b2xvckNvbXBvbmVudE5vbkNsYW1waQogICAgIHJldHVybiAoMS4wNTVmICogc3RkOjpwb3coYywg
MS4wZiAvIDIuNGYpIC0gMC4wNTVmKSAqIHNpZ247CiB9CiAKLWZsb2F0IHJnYlRvTGluZWFyQ29s
b3JDb21wb25lbnROb25DbGFtcGluZyhmbG9hdCBjKQorZmxvYXQgU1JHQlRyYW5zZmVyRnVuY3Rp
b246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKIHsKLSAgICBmbG9hdCBzaWduID0gYyA+
IDAgPyAxLjBmIDogLTEuMGY7CisgICAgZmxvYXQgc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0x
LjBmIDogMS4wZjsKICAgICBjID0gc3RkOjphYnMoYyk7CiAKICAgICBpZiAoYyA8PSAwLjA0MDQ1
ZikKQEAgLTExNiw2NyArMTMwLDk1IEBAIGZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRO
b25DbGFtcGkKICAgICByZXR1cm4gc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRm
KSAqIHNpZ247CiB9CiAKK2Zsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJD
bGFtcGluZyhmbG9hdCBjKQoreworICAgIHJldHVybiBjbGFtcFRvPGZsb2F0Pihmcm9tTGluZWFy
Tm9uQ2xhbXBpbmcoYyksIDAsIDEpOworfQorCitmbG9hdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9u
Ojp0b0xpbmVhckNsYW1waW5nKGZsb2F0IGMpCit7CisgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+
KHRvTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEpOworfQorCitmbG9hdCBBOThSR0JUcmFuc2Zl
ckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBmbG9hdCBz
aWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAgIHJldHVybiBzdGQ6OnBv
dyhzdGQ6OmFicyhjKSwgMjU2LjBmIC8gNTYzLjBmKSAqIHNpZ247Cit9CisKK2Zsb2F0IEE5OFJH
QlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBm
bG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBmOworICAgIHJldHVybiBz
dGQ6OnBvdyhzdGQ6OmFicyhjKSwgNTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFRyYW5zZmVyRnVuY3Rpb24sIHR5cGVuYW1lIFQ+IHN0YXRpYyBhdXRvIHRv
TGluZWFyQ2xhbXBpbmcoY29uc3QgVCYgY29sb3IpIC0+IHR5cGVuYW1lIFQ6OkxpbmVhckNvdW50
ZXJwYXJ0Cit7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7CisgICAgcmV0
dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJDbGFtcGluZyhjMSksIFRyYW5zZmVyRnVu
Y3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoYzIpLCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNs
YW1waW5nKGMzKSwgYWxwaGEgfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5j
dGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gZnJvbUxpbmVhckNsYW1waW5nKGNvbnN0IFQm
IGNvbG9yKSAtPiB0eXBlbmFtZSBUOjpHYW1tYUVuY29kZWRDb3VudGVycGFydAoreworICAgIGF1
dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbG9yOworICAgIHJldHVybiB7IFRyYW5zZmVyRnVu
Y3Rpb246OmZyb21MaW5lYXJDbGFtcGluZyhjMSksIFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5l
YXJDbGFtcGluZyhjMiksIFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJDbGFtcGluZyhjMyks
IGFscGhhIH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZmVyRnVuY3Rpb24sIHR5cGVu
YW1lIFQ+IHN0YXRpYyBhdXRvIHRvTGluZWFyTm9uQ2xhbXBpbmcoY29uc3QgVCYgY29sb3IpIC0+
IHR5cGVuYW1lIFQ6OkxpbmVhckNvdW50ZXJwYXJ0Cit7CisgICAgYXV0byBbYzEsIGMyLCBjMywg
YWxwaGFdID0gY29sb3I7CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhjMSksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzIp
LCBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhck5vbkNsYW1waW5nKGMzKSwgYWxwaGEgfTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGlj
IGF1dG8gZnJvbUxpbmVhck5vbkNsYW1waW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBU
OjpHYW1tYUVuY29kZWRDb3VudGVycGFydAoreworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhh
XSA9IGNvbG9yOworICAgIHJldHVybiB7IFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25D
bGFtcGluZyhjMSksIFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhjMiks
IFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhjMyksIGFscGhhIH07Cit9
CisKIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYg
Y29sb3IpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVu
dENsYW1waW5nKGNvbG9yLnJlZCksCi0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRD
bGFtcGluZyhjb2xvci5ncmVlbiksCi0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRD
bGFtcGluZyhjb2xvci5ibHVlKSwKLSAgICAgICAgY29sb3IuYWxwaGEKLSAgICB9OworICAgIHJl
dHVybiB0b0xpbmVhckNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CiB9CiAK
IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBF
eHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgcmdi
VG9MaW5lYXJDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLnJlZCksCi0gICAgICAgIHJn
YlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5ncmVlbiksCi0gICAgICAg
IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5ibHVlKSwKLSAgICAg
ICAgY29sb3IuYWxwaGEKLSAgICB9OworICAgIHJldHVybiB0b0xpbmVhck5vbkNsYW1waW5nPFNS
R0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CiB9CiAKIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAg
bGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLnJlZCksCi0gICAgICAgIGxp
bmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5ncmVlbiksCi0gICAgICAgIGxp
bmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5ibHVlKSwKLSAgICAgICAgY29s
b3IuYWxwaGEKLSAgICB9OworICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBpbmc8U1JHQlRyYW5z
ZmVyRnVuY3Rpb24+KGNvbG9yKTsKIH0KIAogRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRl
ZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICBy
ZXR1cm4gewotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29s
b3IucmVkKSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNv
bG9yLmdyZWVuKSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5n
KGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQotICAgIH07CisgICAgcmV0dXJuIGZy
b21MaW5lYXJOb25DbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOwogfQogCiBM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiB7Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JD
b21wb25lbnRDbGFtcGluZyhjb2xvci5yZWQpLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29t
cG9uZW50Q2xhbXBpbmcoY29sb3IuZ3JlZW4pLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29t
cG9uZW50Q2xhbXBpbmcoY29sb3IuYmx1ZSksCi0gICAgICAgIGNvbG9yLmFscGhhCi0gICAgfTsK
KyAgICByZXR1cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3Ip
OwogfQogCiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiB7Ci0gICAgICAgIGxpbmVhclRvUkdCQ29s
b3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5yZWQpLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9y
Q29tcG9uZW50Q2xhbXBpbmcoY29sb3IuZ3JlZW4pLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9y
Q29tcG9uZW50Q2xhbXBpbmcoY29sb3IuYmx1ZSksCi0gICAgICAgIGNvbG9yLmFscGhhCi0gICAg
fTsKKyAgICByZXR1cm4gZnJvbUxpbmVhckNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihj
b2xvcik7CiB9CiAKLS8vIE1hdHJpeCBjb252ZXJzaW9ucy4KK0xpbmVhckE5OFJHQjxmbG9hdD4g
dG9MaW5lYXJBOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvTGluZWFyQ2xhbXBpbmc8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworfQorCitB
OThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExpbmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQor
eworICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBpbmc8QTk4UkdCVHJhbnNmZXJGdW5jdGlvbj4o
Y29sb3IpOworfQorCisvLyBNYXRyaXggY29udmVyc2lvbnMgKHRvIGFuZCBmcm9tIFhZWiBmb3Ig
YWxsIGxpbmVhciBjb2xvciB0eXBlcykuCisKKy8vIC0gTGluZWFyU1JHQkEgbWF0cml4IGNvbnZl
cnNpb25zLgogCiBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZs
b2F0PiYgY29sb3IpCiB7CkBAIC0xODgsNiArMjMwLDggQEAgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IExpbmVhclNSR0JBPGZsbwogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGlu
Z0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihsaW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKKy8vIC0g
TGluZWFyRXh0ZW5kZWRTUkdCQSBtYXRyaXggY29udmVyc2lvbnMuCisKIExpbmVhckV4dGVuZGVk
U1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8
TGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4+KHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKQEAgLTE5OCw2
ICsyNDIsOCBAQCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTCiAgICAg
cmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+
KGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9y
Q29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAorLy8gLSBMaW5lYXJEaXNwbGF5UDMgbWF0cml4IGNv
bnZlcnNpb25zLgorCiBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNv
bnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRz
Q2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Pih4eXpUb0xpbmVhckRp
c3BsYXlQM01hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50
cyhjb2xvcikpKTsKQEAgLTIwOCw2ICsyNTQsMTggQEAgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0
IExpbmVhckRpc3BsYXlQMwogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4
Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihsaW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAorLy8g
LSBMaW5lYXJBOThSR0IgbWF0cml4IGNvbnZlcnNpb25zLgorCitMaW5lYXJBOThSR0I8ZmxvYXQ+
IHRvTGluZWFyQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4g
bWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJBOThSR0I8ZmxvYXQ+
Pih4eXpUb0xpbmVhckE5OFJHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcikpKTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVu
dHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihsaW5lYXJBOThSR0JUb1hZWk1hdHJp
eC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsK
K30KKwogLy8gQ2hyb21hdGljIEFkYXB0YXRpb24gY29udmVyc2lvbnMuCiAKIHN0YXRpYyBYWVpB
PGZsb2F0PiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9pbnRUb0Q2NVdoaXRlUG9pbnQoY29uc3QgWFla
QTxmbG9hdD4mIGNvbG9yKQpAQCAtNDA2LDYgKzQ2NCw4IEBAIFNSR0JBPGZsb2F0PiB0b1NSR0JB
KGNvbnN0IEhTTEE8ZmxvYXQ+JiAKIAogLy8gQ29tYmluYXRpb24gY29udmVyc2lvbnMgKGNvbnN0
cnVjdGVkIGZyb20gbW9yZSBiYXNpYyBjb252ZXJzaW9ucyBhYm92ZSkuCiAKKy8vIC0gU1JHQiBj
b21iaW5hdGlvbiBmdW5jdGlvbnMuCisKIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxm
bG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJTUkdCQShjb2xvcikp
OwpAQCAtNDE2LDYgKzQ3Niw4IEBAIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZWkE8Zmxv
YXQ+JiAKICAgICByZXR1cm4gdG9TUkdCQSh0b0xpbmVhclNSR0JBKGNvbG9yKSk7CiB9CiAKKy8v
IC0gRXh0ZW5kZWRTUkdCIGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4KKwogWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9Y
WVpBKHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb2xvcikpOwpAQCAtNDI2LDYgKzQ4OCw4IEBAIEV4
dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb24KICAgICByZXR1cm4gdG9FeHRl
bmRlZFNSR0JBKHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb2xvcikpOwogfQogCisvLyAtIERpc3Bs
YXlQMyBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCisKIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBE
aXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyRGlz
cGxheVAzKGNvbG9yKSk7CkBAIC00MzYsNiArNTAwLDIwIEBAIERpc3BsYXlQMzxmbG9hdD4gdG9E
aXNwbGF5UDMoY29uc3QgWFlaQTwKICAgICByZXR1cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNw
bGF5UDMoY29sb3IpKTsKIH0KIAorLy8gLSBBOThSR0IgY29tYmluYXRpb24gZnVuY3Rpb25zLgor
CitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvWFlaQSh0b0xpbmVhckE5OFJHQihjb2xvcikpOworfQorCitBOThSR0I8ZmxvYXQ+
IHRvQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9BOThS
R0IodG9MaW5lYXJBOThSR0IoY29sb3IpKTsKK30KKworLy8gLSBMQ0hBIGNvbWJpbmF0aW9uIGZ1
bmN0aW9ucy4KKwogWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExDSEE8ZmxvYXQ+JiBjb2xvcikK
IHsKICAgICByZXR1cm4gdG9YWVpBKHRvTGFiKGNvbG9yKSk7CkBAIC00NDYsNiArNTI0LDggQEAg
TENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjbwogICAgIHJldHVybiB0b0xD
SEEodG9MYWIoY29sb3IpKTsKIH0KIAorLy8gLSBIU0xBIGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4K
KwogWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBy
ZXR1cm4gdG9YWVpBKHRvU1JHQkEoY29sb3IpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzE5MTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBzUkdCIDwtPiBMaW5lYXJSR0IgLyBEaXNwbGF5
UDMgPC0+IExpbmVhckRpc3BsYXlQMyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoaHR0cHM6Ly9lbi53
aWtpcGVkaWEub3JnL3dpa2kvU1JHQikuCi1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50
Q2xhbXBpbmcoZmxvYXQpOwotZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5n
KGZsb2F0KTsKLWZsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhmbG9h
dCk7Ci1mbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoZmxvYXQpOwor
Ly8gVHJhbnNmZXIgZnVuY3Rpb25zIGZvciBjb2xvcnMgdGhhdCBjYW4gYmUgZ2FtbWEgZW5jb2Rl
ZC4KKworc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uIHsKKyAgICBzdGF0aWMgZmxvYXQgZnJv
bUxpbmVhckNsYW1waW5nKGZsb2F0KTsKKyAgICBzdGF0aWMgZmxvYXQgdG9MaW5lYXJDbGFtcGlu
ZyhmbG9hdCk7CisgICAgc3RhdGljIGZsb2F0IGZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCk7
CisgICAgc3RhdGljIGZsb2F0IHRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQpOworfTsKKworc3Ry
dWN0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb24geworICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFy
Q2xhbXBpbmcoZmxvYXQpOworICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhckNsYW1waW5nKGZsb2F0
KTsKKyAgICBzdGF0aWMgZmxvYXQgZnJvbUxpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKKyAgICBz
dGF0aWMgZmxvYXQgdG9MaW5lYXJOb25DbGFtcGluZyhmbG9hdCk7Cit9OwogCiAvLyBBbGwgY29s
b3IgdHlwZXMgbXVzdCBhdCBsZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9u
cyB0byBhbmQgZnJvbSB0aGUgWFlaQSBjb2xvciBzcGFjZToKIC8vICAgIFhZWkE8ZmxvYXQ+IHRv
WFlaQShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CkBAIC05OCw2ICsxMDgsMTggQEAgV0VCQ09S
RV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IAogLy8gQWRkaXRpb25zCiBXRUJDT1JF
X0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYpOwogCisvLyBB
OThSR0IKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBBOThSR0I8Zmxv
YXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKK1dFQkNPUkVfRVhQT1JUIExpbmVhckE5OFJHQjxmbG9h
dD4gdG9MaW5lYXJBOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYpOworCisvLyBMaW5lYXJBOThS
R0IKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJBOThSR0I8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJBOThSR0I8ZmxvYXQ+IHRvTGluZWFyQTk4
UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKK1dFQkNPUkVfRVhQT1JUIEE5
OFJHQjxmbG9hdD4gdG9BOThSR0IoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpOwor
CiAKIC8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMp
LgogCkBAIC0xMTEsNiArMTMzLDcgQEAgY29uc3RleHByIExhYjxmbG9hdD4gdG9MYWIoY29uc3Qg
TGFiPGZsbwogY29uc3RleHByIExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCBMQ0hBPGZsb2F0PiYg
Y29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgSFNMQTxmbG9hdD4gdG9IU0xBKGNv
bnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBYWVpB
PGZsb2F0PiB0b1hZWkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsg
fQorY29uc3RleHByIEE5OFJHQjxmbG9hdD4gdG9BOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYg
Y29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiAKIAogLy8gRmFsbGJhY2sgY29udmVyc2lvbnMuCkBA
IC0xNjMsNCArMTg2LDM0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEhTTEE8ZmxvYXQ+IHRvSFNM
QSgKICAgICByZXR1cm4gdG9IU0xBKHRvWFlaQShjb2xvcikpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJl
dHVybiB0b0E5OFJHQih0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
TGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBUJiBjb2xvcikKK3sKKyAg
ICByZXR1cm4gdG9MaW5lYXJBOThSR0IodG9YWVpBKGNvbG9yKSk7Cit9CisKKwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNh
bGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKK3sKKyAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBz
dGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9u
ZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFy
UkdCOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1
bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+KGNvbXBvbmVudHMpKTsK
KyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52
b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERp
c3BsYXlQMzxUPj4oY29tcG9uZW50cykpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgor
ICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3Ip
LCBtYWtlRnJvbUNvbXBvbmVudHM8QTk4UkdCPFQ+Pihjb21wb25lbnRzKSk7CisgICAgY2FzZSBD
b2xvclNwYWNlOjpMYWI6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8
RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxMYWI8VD4+KGNvbXBvbmVudHMp
KTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjpp
bnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8
U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNl
cmlhbGl6YXRpb24uY3BwCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5Niw4IEBAIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2VyaWFsaXphdGlvbihDb2xvclMKICAg
ICAgICAgcmV0dXJuICJsaW5lYXItc3JnYiJfczsKICAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKICAgICAgICAgcmV0dXJuICJkaXNwbGF5LXAzIl9zOworICAgIGNhc2UgQ29sb3JTcGFj
ZTo6QTk4UkdCOgorICAgICAgICByZXR1cm4gImE5OC1yZ2IiX3M7CiAgICAgY2FzZSBDb2xvclNw
YWNlOjpMYWI6CiAgICAgICAgIHJldHVybiAibGFiIl9zOwogICAgIH0KQEAgLTE2Myw2ICsxNjUs
MjMgQEAgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KAogICAgIHJldHVy
biBzZXJpYWxpemF0aW9uKGNvbG9yKTsKIH0KIAorLy8gQTk4UkdCPGZsb2F0PiBvdmVybG9hZHMK
KworU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3Ip
Cit7CisgICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOworfQorCitTdHJpbmcgc2VyaWFs
aXphdGlvbkZvckhUTUwoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJu
IHNlcmlhbGl6YXRpb24oY29sb3IpOworfQorCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRl
clRyZWVBc1RleHQoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHNl
cmlhbGl6YXRpb24oY29sb3IpOworfQorCiAvLyBMYWI8ZmxvYXQ+IG92ZXJsb2FkcwogCiBTdHJp
bmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBMYWI8ZmxvYXQ+JiBjb2xvcikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXph
dGlvbi5oCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNlcmlhbGl6YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwogCit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IEE5OFJHQjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGlzcGxheVAzOwog
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IExpbmVhclNSR0JBOwpAQCAtNTYsNiArNTcsMTAgQEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNl
cmlhbGl6YXRpb25Gb3JDUwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JI
VE1MKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJp
YWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAK
K1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IEE5OFJHQjxm
bG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25z
dCBBOThSR0I8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZv
clJlbmRlclRyZWVBc1RleHQoY29uc3QgQTk4UkdCPGZsb2F0PiYpOworCiBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBMYWI8ZmxvYXQ+Jik7CiBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgTGFiPGZsb2F0PiYpOwog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNv
bnN0IExhYjxmbG9hdD4mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuY3BwCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0
Miw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBjYXNl
IENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKICAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgorICAgICAgICB0cyA8PCAi
YTk4LXJnYiI7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAg
ICAgICB0cyA8PCAiTCphKmIiOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3MTkxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNSw2ICszNSw3IEBAIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewogICAg
IFNSR0IsCiAgICAgTGluZWFyUkdCLAogICAgIERpc3BsYXlQMywKKyAgICBBOThSR0IsCiAgICAg
TGFiCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JUeXBlcy5oCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDE5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsK
K3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQTsKK3RlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgTGluZWFyU1JHQkE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVh
ckV4dGVuZGVkU1JHQkE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERpc3BsYXlQMzsKK3Rl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyRGlzcGxheVAzOwordGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBBOThSR0I7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckE5OFJH
QjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBMQ0hBOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIU0xBOwordGVtcGxhdGU8dHlw
ZW5hbWU+IHN0cnVjdCBYWVo7CisKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQWxwaGFUcmFp
dHM7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPHVpbnQ4X3Q+IHsKQEAgLTExOCw2
ICsxMzEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBYWVpNb2RlbDxmbG9hdD4gewogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKIH07CiAKKwogdGVtcGxhdGU8
dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JUeXBlIG1ha2VG
cm9tQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGMpCiB7CiAgICAgcmV0dXJu
IENvbG9yVHlwZSB7IGNbMF0sIGNbMV0sIGNbMl0sIGNbM10gfTsKQEAgLTI2OSw5MiArMjgzLDI3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFBhcmVudD4gc3RydWN0IENvbG9yV2kKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JHQkEgOiBDb2xvcldpdGhBbHBoYUhlbHBl
cjxTUkdCQTxUPj4gewotICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwotICAgIHVzaW5nIE1v
ZGVsID0gUkdCTW9kZWw8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2Ug
eyBDb2xvclNwYWNlOjpTUkdCIH07Ci0gICAgCi0gICAgY29uc3RleHByIFNSR0JBKFQgcmVkLCBU
IGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQotICAgICAg
ICA6IHJlZCB7IHJlZCB9Ci0gICAgICAgICwgZ3JlZW4geyBncmVlbiB9Ci0gICAgICAgICwgYmx1
ZSB7IGJsdWUgfQotICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQotICAgIHsKLSAgICAgICAgYXNz
ZXJ0SW5SYW5nZSgqdGhpcyk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIFNSR0JBKCkKLSAgICAg
ICAgOiBTUkdCQSB7IDAsIDAsIDAsIDAgfQotICAgIHsKLSAgICB9Ci0KLSAgICBUIHJlZDsKLSAg
ICBUIGdyZWVuOwotICAgIFQgYmx1ZTsKLSAgICBUIGFscGhhOwotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhj
b25zdCBTUkdCQTxUPiYgYykKLXsKLSAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVl
LCBjLmFscGhhIH07Ci19CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU1JHQkE8VD4mIGEsIGNvbnN0IFNSR0JBPFQ+JiBiKQordGVtcGxhdGU8
dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29udmVydGli
bGVUb0NvbG9yQ29tcG9uZW50czxDb2xvclR5cGU+PiogPSBudWxscHRyPgorY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDb2xvclR5cGUmIGEsIGNvbnN0IENvbG9yVHlwZSYgYikKIHsK
ICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBvbmVudHMoYik7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgU1JHQkE8VD4mIGEsIGNvbnN0IFNSR0JBPFQ+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29udmVydGlibGVUb0NvbG9yQ29t
cG9uZW50czxDb2xvclR5cGU+PiogPSBudWxscHRyPgorY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBDb2xvclR5cGUmIGEsIGNvbnN0IENvbG9yVHlwZSYgYikKIHsKICAgICByZXR1cm4g
IShhID09IGIpOwogfQogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBFeHRlbmRlZFNS
R0JBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8RXh0ZW5kZWRTUkdCQTxUPj4gewotICAgIHVzaW5n
IENvbXBvbmVudFR5cGUgPSBUOwotICAgIHVzaW5nIE1vZGVsID0gRXh0ZW5kZWRSR0JNb2RlbDxU
PjsKLQotICAgIGNvbnN0ZXhwciBFeHRlbmRlZFNSR0JBKFQgcmVkLCBUIGdyZWVuLCBUIGJsdWUs
IFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQotICAgICAgICA6IHJlZCB7IHJlZCB9
Ci0gICAgICAgICwgZ3JlZW4geyBncmVlbiB9Ci0gICAgICAgICwgYmx1ZSB7IGJsdWUgfQotICAg
ICAgICAsIGFscGhhIHsgYWxwaGEgfQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgRXh0
ZW5kZWRTUkdCQSgpCi0gICAgICAgIDogRXh0ZW5kZWRTUkdCQSB7IDAsIDAsIDAsIDAgfQotICAg
IHsKLSAgICB9Ci0KLSAgICBUIHJlZDsKLSAgICBUIGdyZWVuOwotICAgIFQgYmx1ZTsKLSAgICBU
IGFscGhhOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9u
ZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBjKQotewot
ICAgIHJldHVybiB7IGMucmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMuYWxwaGEgfTsKLX0KKy8vIE1B
Uks6IC0gUkdCIENvbG9yIFR5cGVzLgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGEsIGNvbnN0IEV4dGVuZGVk
U1JHQkE8VD4mIGIpCi17Ci0gICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGEpID09IGFzQ29s
b3JDb21wb25lbnRzKGIpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGEsIGNvbnN0IEV4dGVuZGVkU1JH
QkE8VD4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgTGluZWFyU1JHQkEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMaW5lYXJT
UkdCQTxUPj4gewordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEMsIHR5cGVuYW1l
IFQsIHR5cGVuYW1lIE0+IHN0cnVjdCBSR0JBVHlwZSA6IENvbG9yV2l0aEFscGhhSGVscGVyPEM8
VD4+IHsKICAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKLSAgICB1c2luZyBNb2RlbCA9IFJH
Qk1vZGVsPFQ+OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JT
cGFjZTo6TGluZWFyUkdCOwotCi0gICAgY29uc3RleHByIExpbmVhclNSR0JBKFQgcmVkLCBUIGdy
ZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQorICAgIHVzaW5n
IE1vZGVsID0gTTsKKyAgICAKKyAgICBjb25zdGV4cHIgUkdCQVR5cGUoVCByZWQsIFQgZ3JlZW4s
IFQgYmx1ZSwgVCBhbHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCiAgICAgICAgIDogcmVk
IHsgcmVkIH0KICAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KICAgICAgICAgLCBibHVlIHsgYmx1
ZSB9CkBAIC0zNjMsOCArMzEyLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVh
clNSR0JBIAogICAgICAgICBhc3NlcnRJblJhbmdlKCp0aGlzKTsKICAgICB9CiAKLSAgICBjb25z
dGV4cHIgTGluZWFyU1JHQkEoKQotICAgICAgICA6IExpbmVhclNSR0JBIHsgMCwgMCwgMCwgMCB9
CisgICAgY29uc3RleHByIFJHQkFUeXBlKCkKKyAgICAgICAgOiBSR0JBVHlwZSB7IDAsIDAsIDAs
IDAgfQogICAgIHsKICAgICB9CiAKQEAgLTM3NCwxNDEgKzMyMyw2OCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgTGluZWFyU1JHQkEgCiAgICAgVCBhbHBoYTsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVu
dHMoY29uc3QgTGluZWFyU1JHQkE8VD4mIGMpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4g
Y2xhc3MgQ29sb3JUeXBlLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBNPiBjb25zdGV4cHIgQ29sb3JD
b21wb25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IFJHQkFUeXBlPENvbG9yVHlwZSwg
VCwgTT4mIGMpCiB7CiAgICAgcmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBo
YSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExpbmVhclNSR0JBPFQ+JiBhLCBjb25zdCBMaW5lYXJTUkdCQTxUPiYgYikKLXsKLSAg
ICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBvbmVudHMoYik7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TGluZWFyU1JHQkE8VD4mIGEsIGNvbnN0IExpbmVhclNSR0JBPFQ+JiBiKQotewotICAgIHJldHVy
biAhKGEgPT0gYik7Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckV4
dGVuZGVkU1JHQkEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+
PiB7Ci0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7Ci0gICAgdXNpbmcgTW9kZWwgPSBFeHRl
bmRlZFJHQk1vZGVsPFQ+OwotCi0gICAgY29uc3RleHByIExpbmVhckV4dGVuZGVkU1JHQkEoVCBy
ZWQsIFQgZ3JlZW4sIFQgYmx1ZSwgVCBhbHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCi0g
ICAgICAgIDogcmVkIHsgcmVkIH0KLSAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KLSAgICAgICAg
LCBibHVlIHsgYmx1ZSB9Ci0gICAgICAgICwgYWxwaGEgeyBhbHBoYSB9Ci0gICAgewotICAgIH0K
LQotICAgIGNvbnN0ZXhwciBMaW5lYXJFeHRlbmRlZFNSR0JBKCkKLSAgICAgICAgOiBMaW5lYXJF
eHRlbmRlZFNSR0JBIHsgMCwgMCwgMCwgMCB9Ci0gICAgewotICAgIH0KK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBTUkdCQSA6IFJHQkFUeXBlPFNSR0JBLCBULCBSR0JNb2RlbDxUPj4gewor
ICAgIHVzaW5nIFJHQkFUeXBlPFNSR0JBLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAg
IHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyU1JHQkE8VD47CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpTUkdCIH07Cit9OwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4gU1JHQkE8VD47CiAKLSAgICBUIHJl
ZDsKLSAgICBUIGdyZWVuOwotICAgIFQgYmx1ZTsKLSAgICBUIGFscGhhOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IExpbmVhclNSR0JBIDogUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJH
Qk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVs
PFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBTUkdC
QTxUPjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6
OkxpbmVhclJHQjsKIH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJTUkdCQShULCBULCBU
LCBUKSAtPiBMaW5lYXJTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHBy
IENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBMaW5lYXJFeHRlbmRl
ZFNSR0JBPFQ+JiBjKQotewotICAgIHJldHVybiB7IGMucmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMu
YWxwaGEgfTsKLX0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+JiBhLCBjb25zdCBMaW5lYXJFeHRlbmRl
ZFNSR0JBPFQ+JiBiKQotewotICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0Nv
bG9yQ29tcG9uZW50cyhiKTsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBFeHRlbmRl
ZFNSR0JBIDogUkdCQVR5cGU8RXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj4g
eworICAgIHVzaW5nIFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8
VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhckV4dGVu
ZGVkU1JHQkE8VD47Cit9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gRXh0ZW5kZWRTUkdCQShULCBU
LCBULCBUKSAtPiBFeHRlbmRlZFNSR0JBPFQ+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8VD4mIGEsIGNv
bnN0IExpbmVhckV4dGVuZGVkU1JHQkE8VD4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsK
LX0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNSR0JBIDogUkdC
QVR5cGU8TGluZWFyRXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj4geworICAg
IHVzaW5nIFJHQkFUeXBlPExpbmVhckV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8
VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBHYW1tYUVuY29kZWRDb3VudGVycGFydCA9IEV4dGVu
ZGVkU1JHQkE8VD47Cit9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRXh0ZW5kZWRTUkdC
QShULCBULCBULCBUKSAtPiBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+OwogCiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxEaXNwbGF5
UDM8VD4+IHsKLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKLSAgICB1c2luZyBNb2RlbCA9
IFJHQk1vZGVsPFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6IFJH
QkFUeXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKKyAgICB1c2luZyBSR0JBVHlwZTxE
aXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgTGluZWFyQ291
bnRlcnBhcnQgPSBMaW5lYXJEaXNwbGF5UDM8VD47CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpEaXNwbGF5UDM7Ci0KLSAgICBjb25zdGV4cHIgRGlz
cGxheVAzKFQgcmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6
b3BhcXVlKQotICAgICAgICA6IHJlZCB7IHJlZCB9Ci0gICAgICAgICwgZ3JlZW4geyBncmVlbiB9
Ci0gICAgICAgICwgYmx1ZSB7IGJsdWUgfQotICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQotICAg
IHsKLSAgICAgICAgYXNzZXJ0SW5SYW5nZSgqdGhpcyk7Ci0gICAgfQotCi0gICAgY29uc3RleHBy
IERpc3BsYXlQMygpCi0gICAgICAgIDogRGlzcGxheVAzIHsgMCwgMCwgMCwgMCB9Ci0gICAgewot
ICAgIH0KLQotICAgIFQgcmVkOwotICAgIFQgZ3JlZW47Ci0gICAgVCBibHVlOwotICAgIFQgYWxw
aGE7CiB9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gRGlzcGxheVAzKFQsIFQsIFQsIFQpIC0+IERp
c3BsYXlQMzxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9u
ZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBEaXNwbGF5UDM8VD4mIGMpCi17Ci0gICAg
cmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERpc3BsYXlQMzxU
PiYgYSwgY29uc3QgRGlzcGxheVAzPFQ+JiBiKQotewotICAgIHJldHVybiBhc0NvbG9yQ29tcG9u
ZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEaXNwbGF5UDM8VD4mIGEsIGNvbnN0
IERpc3BsYXlQMzxUPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDMgOiBDb2xvcldpdGhBbHBoYUhl
bHBlcjxMaW5lYXJEaXNwbGF5UDM8VD4+IHsKLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsK
LSAgICB1c2luZyBNb2RlbCA9IFJHQk1vZGVsPFQ+OwotCi0gICAgY29uc3RleHByIExpbmVhckRp
c3BsYXlQMyhUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBUIGFscGhhID0gQWxwaGFUcmFpdHM8VD46
Om9wYXF1ZSkKLSAgICAgICAgOiByZWQgeyByZWQgfQotICAgICAgICAsIGdyZWVuIHsgZ3JlZW4g
fQotICAgICAgICAsIGJsdWUgeyBibHVlIH0KLSAgICAgICAgLCBhbHBoYSB7IGFscGhhIH0KLSAg
ICB7Ci0gICAgICAgIGFzc2VydEluUmFuZ2UoKnRoaXMpOwotICAgIH0KK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDMgOiBSR0JBVHlwZTxMaW5lYXJEaXNwbGF5UDMs
IFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyRGlzcGxheVAzLCBU
LCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50ZXJw
YXJ0ID0gRGlzcGxheVAzPFQ+OworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckRpc3Bs
YXlQMyhULCBULCBULCBUKSAtPiBMaW5lYXJEaXNwbGF5UDM8VD47CiAKLSAgICBjb25zdGV4cHIg
TGluZWFyRGlzcGxheVAzKCkKLSAgICAgICAgOiBMaW5lYXJEaXNwbGF5UDMgeyAwLCAwLCAwLCAw
IH0KLSAgICB7Ci0gICAgfQogCi0gICAgVCByZWQ7Ci0gICAgVCBncmVlbjsKLSAgICBUIGJsdWU7
Ci0gICAgVCBhbHBoYTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBOThSR0IgOiBSR0JB
VHlwZTxBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8QTk4UkdC
LCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0
ID0gTGluZWFyQTk4UkdCPFQ+OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNl
ID0gQ29sb3JTcGFjZTo6QTk4UkdCOwogfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IEE5OFJHQihU
LCBULCBULCBUKSAtPiBBOThSR0I8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhw
ciBDb2xvckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgTGluZWFyRGlzcGxh
eVAzPFQ+JiBjKQotewotICAgIHJldHVybiB7IGMucmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMuYWxw
aGEgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBMaW5lYXJEaXNwbGF5UDM8VD4mIGEsIGNvbnN0IExpbmVhckRpc3BsYXlQMzxUPiYg
YikKLXsKLSAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBvbmVu
dHMoYik7Ci19Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyQTk4UkdCIDogUkdC
QVR5cGU8TGluZWFyQTk4UkdCLCBULCBSR0JNb2RlbDxUPj4geworICAgIHVzaW5nIFJHQkFUeXBl
PExpbmVhckE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBHYW1t
YUVuY29kZWRDb3VudGVycGFydCA9IEE5OFJHQjxUPjsKK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBMaW5lYXJBOThSR0IoVCwgVCwgVCwgVCkgLT4gTGluZWFyQTk4UkdCPFQ+OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExpbmVhckRpc3Bs
YXlQMzxUPiYgYSwgY29uc3QgTGluZWFyRGlzcGxheVAzPFQ+JiBiKQotewotICAgIHJldHVybiAh
KGEgPT0gYik7Ci19CiAKKy8vIE1BUks6IC0gTGFiIENvbG9yIFR5cGUuCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBMYWIgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMYWI8VD4+IHsKICAg
ICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKQEAgLTU0MCwxNiArNDE2LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcAogICAgIHJldHVybiB7IGMubGlnaHRuZXNz
LCBjLmEsIGMuYiwgYy5hbHBoYSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExhYjxUPiYgYSwgY29uc3QgTGFiPFQ+JiBiKQotewot
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBMYWI8VD4mIGEsIGNvbnN0IExhYjxUPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwot
fQotCisvLyBNQVJLOiAtIExDSEEgQ29sb3IgVHlwZS4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IExDSEEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMQ0hBPFQ+PiB7CiAgICAgdXNpbmcg
Q29tcG9uZW50VHlwZSA9IFQ7CkBAIC01ODAsMTYgKzQ0Nyw4IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNvbnN0ZXhwciBDb2xvckNvbXAKICAgICByZXR1cm4geyBjLmxpZ2h0bmVzcywgYy5jaHJv
bWEsIGMuaHVlLCBjLmFscGhhIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgTENIQTxUPiYgYSwgY29uc3QgTENIQTxUPiYgYikKLXsK
LSAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBvbmVudHMoYik7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgTENIQTxUPiYgYSwgY29uc3QgTENIQTxUPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIp
OwotfQogCisvLyBNQVJLOiAtIEhTTEEgQ29sb3IgVHlwZS4KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhTTEEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxIU0xBPFQ+PiB7CiAgICAgdXNp
bmcgQ29tcG9uZW50VHlwZSA9IFQ7CkBAIC02MTUsMjMgKzQ3NCwxMiBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSFNMQSA6IENvbG9yCiAgICAgVCBhbHBoYTsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IEhTTEEoVCwgVCwgVCwgVCkgLT4gSFNMQTxUPjsKLQogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhj
b25zdCBIU0xBPFQ+JiBjKQogewogICAgIHJldHVybiB7IGMuaHVlLCBjLnNhdHVyYXRpb24sIGMu
bGlnaHRuZXNzLCBjLmFscGhhIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgSFNMQTxUPiYgYSwgY29uc3QgSFNMQTxUPiYgYikKLXsK
LSAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBvbmVudHMoYik7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgSFNMQTxUPiYgYSwgY29uc3QgSFNMQTxUPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIp
OwotfQotCisvLyBNQVJLOiAtIFhZWiBDb2xvciBUeXBlLgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgWFlaQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPFhZWkE8VD4+IHsKICAgICB1c2lu
ZyBDb21wb25lbnRUeXBlID0gVDsKQEAgLTY2MiwzMyArNTEwLDYgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY29uc3RleHByIENvbG9yQ29tcAogICAgIHJldHVybiB7IGMueCwgYy55LCBjLnosIGMu
YWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBYWVpBPFQ+JiBhLCBjb25zdCBYWVpBPFQ+JiBiKQotewotICAgIHJldHVybiBh
c0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBYWVpBPFQ+JiBh
LCBjb25zdCBYWVpBPFQ+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0eXBlKGF1
dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50
cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBzd2l0
Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0
b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+KGNvbXBvbmVu
dHMpKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25l
bnRzPERpc3BsYXlQMzxUPj4oY29tcG9uZW50cykpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFi
OgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0
b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGFiPFQ+Pihjb21wb25lbnRzKSk7Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9y
d2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21w
b25lbnRzKSk7Ci19CiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MTkxOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2
PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykg
ewogICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1NS4wZjsKLSAgICAgICAgICAg
ICAgICBjb2xvciA9IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvcik7Cisg
ICAgICAgICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJDbGFt
cGluZyhjb2xvcik7CiAgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50
OF90Pihyb3VuZChjb2xvciAqIDI1NSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIGFycmF5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJh
eTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAg
ICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1NS4wZjsKLSAgICAgICAgICAgICAgICBj
b2xvciA9IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvcik7CisgICAgICAg
ICAgICAgICAgY29sb3IgPSBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5n
KGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
YXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5jcHAJKHJldmlzaW9uIDI3MTkxOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDYgKzgyLDIwIEBAIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkK
ICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKIH0KIAorQ0dDb2xvclNwYWNlUmVmIGE5
OFJHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgYTk4UkdC
Q29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAg
YTk4UkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VBZG9iZVJHQjE5OTgpOworI2Vsc2UKKyAgICAgICAgYTk4UkdCQ29sb3JTcGFjZSA9IHNSR0JD
b2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gYTk4UkdCQ29sb3JT
cGFjZTsKK30KKwogQ0dDb2xvclNwYWNlUmVmIGxhYkNvbG9yU3BhY2VSZWYoKQogewogICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29udmVyc2lvbiB0byBMYWIgb24gc3VwcG9ydGVkIHBs
YXRmb3Jtcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
U3BhY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5oCShyZXZpc2lvbiAyNzE5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQCBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yCiBXRUJD
T1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwogV0VC
Q09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKIFdF
QkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgYTk4UkdCQ29sb3JTcGFjZVJlZigpOwogV0VCQ09SRV9F
WFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKIAogc3Rh
dGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKQEAgLTQ2LDYgKzQ3LDggQEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VS
ZWYgY2FjaGVkQ0dDbwogICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwog
ICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgogICAgICAgICByZXR1cm4gZGlzcGxheVAz
Q29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgorICAgICAgICBy
ZXR1cm4gYTk4UkdCQ29sb3JTcGFjZVJlZigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgog
ICAgICAgICByZXR1cm4gbGFiQ29sb3JTcGFjZVJlZigpOwogICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI3MTkxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDIxLTAxLTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IoYTk4LXJnYiAuLi4pIGFzIHBhcnQgb2Yg
Q1NTIENvbG9yIDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgVW4tZmFpbCBzb21lIG5vdyBwYXNzaW5n
IHRlc3RzLgorCiAyMDIxLTAxLTI2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTGF5b3V0VGVzdHNdIFBhc3MgYXV0aGVudGljYXRpb24gdG8gQ0dJIHNj
cmlwdHMKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjcxOTE4KQorKysgTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNDYwNCw4ICs0NjA0LDYg
QEAgd2Via2l0Lm9yZy9iLzIyMDMyNSBodHRwL3dwdC9jc3MvY3NzLWhpZwogIyBVbnN1cHBvcnRl
ZCBjc3MgY29sb3IoKSB2YXJpYW50cwogd2Via2l0Lm9yZy9iLzIyMDkyOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvcHJlZGVmaW5lZC0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXSAjIEludmFsaWQgdGVzdCwgbm8gY29sb3JzcGFjZSBzcGVjaWZpZWQK
IHdlYmtpdC5vcmcvYi8yMjA5MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWNvbG9yL3ByZWRlZmluZWQtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0gIyBJbnZh
bGlkIHRlc3QsIG5vIGNvbG9yc3BhY2Ugc3BlY2lmaWVkCi13ZWJraXQub3JnL2IvMjIwOTI4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9wcmVkZWZpbmVkLTAw
Ny5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdICMgUmVxdWlyZXMgYTk4LXJnYiBzdXBwb3J0Ci13
ZWJraXQub3JnL2IvMjIwOTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9wcmVkZWZpbmVkLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdICMgUmVxdWly
ZXMgYTk4LXJnYiBzdXBwb3J0CiB3ZWJraXQub3JnL2IvMjIwOTI4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9wcmVkZWZpbmVkLTAwOS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdICMgUmVxdWlyZXMgcHJvcGhvdG8tcmdiIHN1cHBvcnQKIHdlYmtpdC5vcmcv
Yi8yMjA5MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL3By
ZWRlZmluZWQtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0gIyBSZXF1aXJlcyBwcm9waG90
by1yZ2Igc3VwcG9ydAogd2Via2l0Lm9yZy9iLzIyMDkyOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvcHJlZGVmaW5lZC0wMTEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXSAjIFJlcXVpcmVzIHJlYzIwMjAgc3VwcG9ydAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418564</attachid>
            <date>2021-01-27 11:10:38 -0800</date>
            <delta_ts>2021-01-27 17:22:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221018-20210127111037.patch</filename>
            <type>text/plain</type>
            <size>59693</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAyMS0wMS0yNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbG9y
KGE5OC1yZ2IgLi4uKSBhcyBwYXJ0IG9mIENTUyBDb2xvciA0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgor
ICAgICAgICBBZGQga2V5d29yZCBmb3IgYTk4LXJnYiBhbmQgYSBjb21tZW50IGluZGljYXRpbmcg
dGhhdCBsYWIsIHdoaWNoIGFscmVhZHkgZXhpc3RzIGFzIGEgdmFsdWUsCisgICAgICAgIGlzIGFs
c28gYSB2YWxpZCBpZGVudGlmaWVyIGZvciB0aGUgY29sb3IgZnVuY3Rpb24uCisgCisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JU
eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNl
Q29sb3JGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yRnVuY3Rpb25Gb3JTUkdCT3JEaXNwbGF5UDNQYXJhbWV0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgR2VuZXJhbGl6ZSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JT
UkdCT3JEaXNwbGF5UDNQYXJhbWV0ZXJzIHRvIHdvcmsgZm9yIGFsbCBSR0IgdHlwZXMsIHdoaWNo
IG5vdyBpbmNsdWRlCisgICAgICAgIEE5OFJHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUkdCVHJhbnNmZXJG
dW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JU
cmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5v
bkNsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRv
TGluZWFyTm9uQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJDbGFtcGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpmcm9tTGluZWFyQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9MaW5lYXJOb25DbGFtcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpmcm9tTGluZWFyTm9u
Q2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJTUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0xpbmVhckV4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6dG9TUkdC
QSk6CisgICAgICAgIChXZWJDb3JlOjp0b0V4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9MaW5lYXJEaXNwbGF5UDMpOgorICAgICAgICAoV2ViQ29yZTo6dG9EaXNwbGF5UDMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJBOThSR0IpOgorICAgICAgICAoV2ViQ29yZTo6dG9B
OThSR0IpOgorICAgICAgICAoV2ViQ29yZTo6dG9YWVpBKToKKyAgICAgICAgKFdlYkNvcmU6Omxp
bmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnJnYlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0E5OFJHQik6CisgICAgICAgIChXZWJDb3JlOjp0b0xp
bmVhckE5OFJHQik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsV2l0aENvbG9yVHlwZSk6CisgICAg
ICAgIEFkZCBjb252ZXJzaW9uIHN1cHBvcnQgZm9yIEE5OFJHQiBhbmQgTGluZWFyQTk4UkdCLiBN
b3ZlIGdhbW1hIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGludG8gc3RydWN0cyBuYW1l
ZCBmb3IgdGhlIHR5cGUgb2YgdHJhbnNmZXIgZnVuY3Rpb24uIFdoaWxlIG5vdCB1c2VkIGN1cnJl
bnRseSwgdGhpcworICAgICAgICB3aWxsIGFsbG93IGZ1dHVyZSB0ZW1wbGF0aXppbmcgb2YgY29u
dmVyc2lvbiB0byBhdm9pZCBzbyBtdWNoIGJvaWxlciBwbGF0ZSBpbiB0aGUKKyAgICAgICAgZnV0
dXJlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZv
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1Rl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5oOgor
ICAgICAgICBBZGQgc2VyaWFsaXphdGlvbiBzdXBwb3J0IGZvciBjb2xvcihhOTgtcmdiIC4uLiku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIEFkZCBBOThSR0IgYXMg
YSBDb2xvclNwYWNlLCB3aGljaCByZWFsbHkganVzdCBtZWFucyBpdCBpcyBzb21ldGhpbmcKKyAg
ICAgICAgRXh0ZW5kZWRDb2xvciBjYW4gaG9sZC4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgYSBDR0Nv
bG9yU3BhY2UgZm9yIEE5OFJHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpSR0JBVHlwZTo6UkdCQVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1JHQkE6OlNSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkU1JHQkE6
OkV4dGVuZGVkU1JHQkEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyU1JHQkE6
OkxpbmVhclNSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckV4dGVuZGVk
U1JHQkE6OkxpbmVhckV4dGVuZGVkU1JHQkEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheVAzOjpEaXNwbGF5UDMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZWFy
RGlzcGxheVAzOjpMaW5lYXJEaXNwbGF5UDMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFdpdGhDb2xvclR5cGUpOiBEZWxldGVkLgorICAgICAgICBTaW1wbGlmeSBhZGRpbmcgbmV3
IFJHQiBjb2xvciB0eXBlcyBieSBhZGRpbmcgYSBzaGFyZWQgYmFzZSBjbGFzcywgUkdCQVR5cGUK
KyAgICAgICAgYW5kIGFuZCBhIHNoYXJlZCBhc0NvbG9yQ29tcG9uZW50cyBmdW5jaXRvbi4gQWxz
byBzaW1wbGlmeSBhbGwgY29sb3IgdHlwZXMgCisgICAgICAgIGJ5IHJlbW92aW5nIHRoZSBuZWVk
IHRvIGRlZmluZSB5b3VyIG93biBvcGVyYXRvcj09LyE9IGZvciBlYWNoIHR5cGUgYnkgaGF2aW5n
CisgICAgICAgIGEgc2luZ2xlIG9uZSB0aGF0IG9wZXJhdGVzIG9uIGFueSB0eXBlIHRoYXQgY2Fu
IGhhdmUgYXNDb2xvckNvbXBvbmVudHMoKSBjYWxsZWQKKyAgICAgICAgb24gaXQuCisgICAgICAg
IAorICAgICAgICBUbyBjcmVhdGUgYSBuZXcgUkdCIGNvbG9yIChvbmUgd2l0aCByZWQsIGdyZWVu
IGFuZCBibHVlIG5hbWVkIGNvbXBvbmVudHMpIG9uZQorICAgICAgICBub3cgb25seSBuZWVkcyB0
byBkbzoKKyAgICAgICAgCisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Rm9vIDogUkdCQVR5cGU8Rm9vLCBULCBSR0JNb2RlbDxUPj4geworICAgICAgICAgICAgICAgIHVz
aW5nIFJHQkFUeXBlPEZvbywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBGb28oVCwgVCwgVCwgVCkgLT4g
Rm9vPFQ+OworCisgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIHR5cGUgaGFzIGdhbW1hIGVu
Y29kZWQgYW5kIGxpbmVhciB2ZXJzaW9ucywgaXQgc2hvdWxkIGhhdmUKKyAgICAgICAgZWl0aGVy
IGEgYHVzaW5nIEdhbW1hRW5jb2RlZCA9IC4uLmAgb3IgYHVzaW5nIExpbmVhciA9IC4uLmAgZGVj
YWxhcmluZyBpdHMgCisgICAgICAgIGNvdW50ZXJwYXJ0IGFuZCBzaG91bGQgYWRkIGEgY29sb3JT
cGFjZSBtZW1iZXIgaWYgdGhlIHR5cGUgaXMgdXNlZCBieSBFeHRlbmRlZENvbG9yLgorCisgICAg
ICAgIE5vdGUsIHRoZSBkZWR1Y3Rpb24gZ3VpZGUgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgdGhpbmdz
IGxpa2UgdGhlIGZvbGxvd2luZyB3b3JraW5nOgorICAgICAgICAgICAgCisgICAgICAgICAgICBh
dXRvIGNvbG9yID0gU1JHQiB7IGZsb2F0MSwgZmxvYXQyLCAuLi4gfTsKKyAgICAgICAgICAgIAor
ICAgICAgICBVbmZvcnR1bmF0ZWx5LCBkZWR1Y3Rpb24gZG9lcyBub3QgY29tZSBhbG9uZyB3aGVu
IHlvdSBleHBsaXRpbHkgaW5oZXJpdCBjb25zdHJ1Y3RvcnMKKyAgICAgICAgbGlrZSBpcyBiZWlu
ZyBkb25lIGZvciB0aGVzZS4gU2VlIHRoZSAiRGVkdWNpbmcgZnJvbSBpbmhlcml0ZWQgY29uc3Ry
dWN0b3JzIiBzZWN0aW9uCisgICAgICAgIGluIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEv
c2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMTkvcDEwMjFyNC5odG1sLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2Up
OgorICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyBuYW1lIGZvciBnYW1tYSBjb252ZXJzaW9uIGZ1
bmN0aW9ucy4KKwogMjAyMS0wMS0yNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgog
CiAgICAgICAgIFVzZSBTRlRyYW5zY3JpcHRpb24gaW5zdGVhZCBvZiBTRlRyYW5zY3JpcHRpb25T
ZWdtZW50IGZvciBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMjcxOTY0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0MDcsNiAr
MTQwNyw4IEBAIHJlYzIwMjAKIC8vIGNvbG9yKCkgZnVuY3Rpb24KIHNSR0IKIGRpc3BsYXktcDMK
K2E5OC1yZ2IKKy8vIGxhYgogCiAvLyBwcmVmZXJzLWRlZmF1bHQtYXBwZWFyYW5jZQogcHJlZmVy
cwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjcxOTY0KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NzUsOSArODc1LDkgQEAgc3RhdGljIENvbG9yIHBhcnNlTENIUGFyYW1ldGVycyhDU1NQYXJz
ZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+Ci1zdGF0aWMgQ29sb3IgcGFyc2VD
b2xvckZ1bmN0aW9uRm9yU1JHQk9yRGlzcGxheVAzUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzKQorc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cGVzKENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MpCiB7Ci0gICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVTUkdCIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVEaXNwbGF5UDMp
OworICAgIEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlU1JHQiB8fCBhcmdzLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlRGlzcGxheVAzIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVBOThSZ2IpOwogICAgIGNvbnN1bWVJZGVudFJhdyhhcmdzKTsKIAogICAgIGRvdWJsZSBj
aGFubmVsc1szXSA9IHsgMCwgMCwgMCB9OwpAQCAtOTM2LDEwICs5MzYsMTMgQEAgc3RhdGljIENv
bG9yIHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcgogICAgIENvbG9yIGNvbG9yOwogICAgIHN3
aXRjaCAoYXJncy5wZWVrKCkuaWQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVTUkdCOgotICAgICAg
ICBjb2xvciA9IHBhcnNlQ29sb3JGdW5jdGlvbkZvclNSR0JPckRpc3BsYXlQM1BhcmFtZXRlcnM8
U1JHQkE8ZmxvYXQ+PihhcmdzKTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25G
b3JSR0JUeXBlczxTUkdCQTxmbG9hdD4+KGFyZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU1ZhbHVlRGlzcGxheVAzOgotICAgICAgICBjb2xvciA9IHBhcnNlQ29sb3JGdW5jdGlvbkZv
clNSR0JPckRpc3BsYXlQM1BhcmFtZXRlcnM8RGlzcGxheVAzPGZsb2F0Pj4oYXJncyk7CisgICAg
ICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXM8RGlzcGxheVAzPGZsb2F0
Pj4oYXJncyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVBOThSZ2I6CisgICAg
ICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXM8QTk4UkdCPGZsb2F0Pj4o
YXJncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVMYWI6CiAgICAgICAgIGNv
bG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yTGFiUGFyYW1ldGVycyhhcmdzKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
LmNwcAkocmV2aXNpb24gMjcxOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMjAgQEAg
c3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYQogICAgIDAuMGYsICAgICAg
ICAgICAgICAgIDAuMDQ1MTEzMzgxODU4OTAyNmYsIDEuMDQzOTQ0MzY4OTAwOTc2ZgogfTsKIAor
Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1j
b2RlCitzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyQTk4UkdC
TWF0cml4IHsKKyAgICAgMi40OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3OTE5MTIzOWYs
IC0wLjQwMjcxMDc4NDQ1MDcxNjhmLAorICAgIC0wLjgyOTQ4ODk2OTU2MTU3NDdmLCAgMS43NjI2
NjQwNjAzMTgzNDYzZiwgIDAuMDIzNjI0Njg1ODQxOTQzNmYsCisgICAgIDAuMDM1ODQ1ODMwMjQz
Nzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0MThmLCAgMC45NTY4ODQ1MjQwMDc2ODcyZgorfTsKKwor
Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1j
b2RlCitzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckE5OFJHQlRvWFla
TWF0cml4IHsKKyAgICAwLjU3NjY2OTA0MjkxMDEzMDVmLCAgIDAuMTg1NTU4MjM3OTA2NTQ2M2Ys
ICAgMC4xODgyMjg2NDYyMzQ5OTQ3ZiwKKyAgICAwLjI5NzM0NDk3NTI1MDUzNjA1ZiwgIDAuNjI3
MzYzNTY2MjU1NDY2MWYsICAgMC4wNzUyOTE0NTg0OTM5OTc4OGYsCisgICAgMC4wMjcwMzEzNjEz
ODY0MTIzNGYsICAwLjA3MDY4ODg1MjUzNTgyNzIzZiwgIDAuOTkxMzM3NTM2ODM3NjM4OGYKK307
CisKIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX0Nocm9t
QWRhcHQuaHRtbAogc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBENTBUb0Q2NU1h
dHJpeCB7CiAgICAgIDAuOTU1NTc2NmYsIC0wLjAyMzAzOTNmLCAwLjA2MzE2MzZmLApAQCAtNzgs
NyArOTIsNyBAQCBzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IEQ2NVRvCiAKIC8v
IEdhbW1hIGNvbnZlcnNpb25zLgogCi1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Q2xh
bXBpbmcoZmxvYXQgYykKK2Zsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xh
bXBpbmcoZmxvYXQgYykKIHsKICAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCiAgICAgICAgIHJldHVy
biBzdGQ6Om1heDxmbG9hdD4oMTIuOTJmICogYywgMCk7CkBAIC04Niw3ICsxMDAsNyBAQCBmbG9h
dCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoCiAgICAgcmV0dXJuIGNsYW1wVG88
ZmxvYXQ+KDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAuMDU1ZiwgMCwgMSk7
CiB9CiAKLWZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhmbG9hdCBjKQor
ZmxvYXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKIHsK
ICAgICBpZiAoYyA8PSAwLjA0MDQ1ZikKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0Pihj
IC8gMTIuOTJmLCAwKTsKQEAgLTk0LDkgKzEwOCw5IEBAIGZsb2F0IHJnYlRvTGluZWFyQ29sb3JD
b21wb25lbnRDbGFtcGluZygKICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RkOjpwb3coKGMg
KyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRmKSwgMCwgMSk7CiB9CiAKLWZsb2F0IGxpbmVhclRvUkdC
Q29sb3JDb21wb25lbnROb25DbGFtcGluZyhmbG9hdCBjKQorZmxvYXQgU1JHQlRyYW5zZmVyRnVu
Y3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQogewotICAgIGZsb2F0IHNpZ24g
PSBjID4gMCA/IDEuMGYgOiAtMS4wZjsKKyAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMp
ID8gLTEuMGYgOiAxLjBmOwogICAgIGMgPSBzdGQ6OmFicyhjKTsKIAogICAgIGlmIChjIDwgMC4w
MDMxMzA4ZikKQEAgLTEwNSw5ICsxMTksOSBAQCBmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9u
ZW50Tm9uQ2xhbXBpCiAgICAgcmV0dXJuICgxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40
ZikgLSAwLjA1NWYpICogc2lnbjsKIH0KIAotZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVu
dE5vbkNsYW1waW5nKGZsb2F0IGMpCitmbG9hdCBTUkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5l
YXJOb25DbGFtcGluZyhmbG9hdCBjKQogewotICAgIGZsb2F0IHNpZ24gPSBjID4gMCA/IDEuMGYg
OiAtMS4wZjsKKyAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMpID8gLTEuMGYgOiAxLjBm
OwogICAgIGMgPSBzdGQ6OmFicyhjKTsKIAogICAgIGlmIChjIDw9IDAuMDQwNDVmKQpAQCAtMTE2
LDY3ICsxMzAsOTUgQEAgZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudE5vbkNsYW1waQog
ICAgIHJldHVybiBzdGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsK
IH0KIAorZmxvYXQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGZs
b2F0IGMpCit7CisgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KGZyb21MaW5lYXJOb25DbGFtcGlu
ZyhjKSwgMCwgMSk7Cit9CisKK2Zsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFy
Q2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4odG9MaW5lYXJO
b25DbGFtcGluZyhjKSwgMCwgMSk7Cit9CisKK2Zsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246
OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQoreworICAgIGZsb2F0IHNpZ24gPSBzdGQ6
OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7CisgICAgcmV0dXJuIHN0ZDo6cG93KHN0ZDo6YWJz
KGMpLCAyNTYuMGYgLyA1NjMuMGYpICogc2lnbjsKK30KKworZmxvYXQgQTk4UkdCVHJhbnNmZXJG
dW5jdGlvbjo6dG9MaW5lYXJOb25DbGFtcGluZyhmbG9hdCBjKQoreworICAgIGZsb2F0IHNpZ24g
PSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7CisgICAgcmV0dXJuIHN0ZDo6cG93KHN0
ZDo6YWJzKGMpLCA1NjMuMGYgLyAyNTYuMGYpICogc2lnbjsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9MaW5lYXJDbGFt
cGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUgVDo6TGluZWFyQ291bnRlcnBhcnQKK3sK
KyAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsKKyAgICByZXR1cm4geyBUcmFu
c2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9M
aW5lYXJDbGFtcGluZyhjMiksIFRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoYzMp
LCBhbHBoYSB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0aW9uLCB0eXBl
bmFtZSBUPiBzdGF0aWMgYXV0byBmcm9tTGluZWFyQ2xhbXBpbmcoY29uc3QgVCYgY29sb3IpIC0+
IHR5cGVuYW1lIFQ6OkdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0Cit7CisgICAgYXV0byBbYzEsIGMy
LCBjMywgYWxwaGFdID0gY29sb3I7CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6ZnJv
bUxpbmVhckNsYW1waW5nKGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5n
KGMyKSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGMzKSwgYWxwaGEgfTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlvbiwgdHlwZW5hbWUgVD4gc3Rh
dGljIGF1dG8gdG9MaW5lYXJOb25DbGFtcGluZyhjb25zdCBUJiBjb2xvcikgLT4gdHlwZW5hbWUg
VDo6TGluZWFyQ291bnRlcnBhcnQKK3sKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBj
b2xvcjsKKyAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhck5vbkNsYW1waW5n
KGMxKSwgVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJOb25DbGFtcGluZyhjMiksIFRyYW5zZmVy
RnVuY3Rpb246OnRvTGluZWFyTm9uQ2xhbXBpbmcoYzMpLCBhbHBoYSB9OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0aW9uLCB0eXBlbmFtZSBUPiBzdGF0aWMgYXV0byBmcm9t
TGluZWFyTm9uQ2xhbXBpbmcoY29uc3QgVCYgY29sb3IpIC0+IHR5cGVuYW1lIFQ6OkdhbW1hRW5j
b2RlZENvdW50ZXJwYXJ0Cit7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7
CisgICAgcmV0dXJuIHsgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMx
KSwgVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMyKSwgVHJhbnNmZXJG
dW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGMzKSwgYWxwaGEgfTsKK30KKwogTGluZWFy
U1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsK
LSAgICByZXR1cm4gewotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmco
Y29sb3IucmVkKSwKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5nKGNv
bG9yLmdyZWVuKSwKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5nKGNv
bG9yLmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQotICAgIH07CisgICAgcmV0dXJuIHRvTGlu
ZWFyQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKIH0KIAogTGluZWFyRXh0
ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IEV4dGVuZGVkU1JH
QkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gewotICAgICAgICByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IucmVkKSwKLSAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLmdyZWVuKSwKLSAgICAgICAgcmdiVG9MaW5l
YXJDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5h
bHBoYQotICAgIH07CisgICAgcmV0dXJuIHRvTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVy
RnVuY3Rpb24+KGNvbG9yKTsKIH0KIAogU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgTGluZWFy
U1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gewotICAgICAgICBsaW5lYXJUb1JH
QkNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IucmVkKSwKLSAgICAgICAgbGluZWFyVG9SR0JD
b2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLmdyZWVuKSwKLSAgICAgICAgbGluZWFyVG9SR0JD
b2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQot
ICAgIH07CisgICAgcmV0dXJuIGZyb21MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlv
bj4oY29sb3IpOwogfQogCiBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29u
c3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiB7Ci0g
ICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5yZWQpLAot
ICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IuZ3JlZW4p
LAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IuYmx1
ZSksCi0gICAgICAgIGNvbG9yLmFscGhhCi0gICAgfTsKKyAgICByZXR1cm4gZnJvbUxpbmVhck5v
bkNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CiB9CiAKIExpbmVhckRpc3Bs
YXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudENs
YW1waW5nKGNvbG9yLnJlZCksCi0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFt
cGluZyhjb2xvci5ncmVlbiksCi0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFt
cGluZyhjb2xvci5ibHVlKSwKLSAgICAgICAgY29sb3IuYWxwaGEKLSAgICB9OworICAgIHJldHVy
biB0b0xpbmVhckNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CiB9CiAKIERp
c3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYg
Y29sb3IpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVu
dENsYW1waW5nKGNvbG9yLnJlZCksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRD
bGFtcGluZyhjb2xvci5ncmVlbiksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRD
bGFtcGluZyhjb2xvci5ibHVlKSwKLSAgICAgICAgY29sb3IuYWxwaGEKLSAgICB9OworICAgIHJl
dHVybiBmcm9tTGluZWFyQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKIH0K
IAotLy8gTWF0cml4IGNvbnZlcnNpb25zLgorTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5
OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJD
bGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cit9CisKK0E5OFJHQjxmbG9h
dD4gdG9BOThSR0IoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0
dXJuIGZyb21MaW5lYXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cit9
CisKKy8vIE1hdHJpeCBjb252ZXJzaW9ucyAodG8gYW5kIGZyb20gWFlaIGZvciBhbGwgbGluZWFy
IGNvbG9yIHR5cGVzKS4KKworLy8gLSBMaW5lYXJTUkdCQSBtYXRyaXggY29udmVyc2lvbnMuCiAK
IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xv
cikKIHsKQEAgLTE4OCw2ICsyMzAsOCBAQCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFy
U1JHQkE8ZmxvCiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxw
aGE8WFlaQTxmbG9hdD4+KGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAorLy8gLSBMaW5lYXJFeHRl
bmRlZFNSR0JBIG1hdHJpeCBjb252ZXJzaW9ucy4KKwogTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9h
dD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAg
ICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJFeHRl
bmRlZFNSR0JBPGZsb2F0Pj4oeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwpAQCAtMTk4LDYgKzI0Miw4IEBA
IFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJFeHRlbmRlZFMKICAgICByZXR1cm4gbWFr
ZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JH
QlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKSkpOwogfQogCisvLyAtIExpbmVhckRpc3BsYXlQMyBtYXRyaXggY29udmVyc2lvbnMu
CisKIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxm
bG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4
Y2VwdEFscGhhPExpbmVhckRpc3BsYXlQMzxmbG9hdD4+KHh5elRvTGluZWFyRGlzcGxheVAzTWF0
cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkp
OwpAQCAtMjA4LDYgKzI1NCwxOCBAQCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRGlz
cGxheVAzCiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8
WFlaQTxmbG9hdD4+KGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCisvLyAtIExpbmVhckE5
OFJHQiBtYXRyaXggY29udmVyc2lvbnMuCisKK0xpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJB
OThSR0IoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiBtYWtlRnJvbUNv
bXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhckE5OFJHQjxmbG9hdD4+KHh5elRvTGlu
ZWFyQTk4UkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25l
bnRzKGNvbG9yKSkpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyQTk4UkdC
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5n
RXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+KGxpbmVhckE5OFJHQlRvWFlaTWF0cml4LnRyYW5zZm9y
bWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworfQorCiAvLyBD
aHJvbWF0aWMgQWRhcHRhdGlvbiBjb252ZXJzaW9ucy4KIAogc3RhdGljIFhZWkE8ZmxvYXQ+IGNv
bnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludChjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCkBAIC00MDYsNiArNDY0LDggQEAgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgSFNM
QTxmbG9hdD4mIAogCiAvLyBDb21iaW5hdGlvbiBjb252ZXJzaW9ucyAoY29uc3RydWN0ZWQgZnJv
bSBtb3JlIGJhc2ljIGNvbnZlcnNpb25zIGFib3ZlKS4KIAorLy8gLSBTUkdCIGNvbWJpbmF0aW9u
IGZ1bmN0aW9ucy4KKwogWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhclNSR0JBKGNvbG9yKSk7CkBAIC00MTYs
NiArNDc2LDggQEAgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIAogICAg
IHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKIH0KIAorLy8gLSBFeHRlbmRl
ZFNSR0IgY29tYmluYXRpb24gZnVuY3Rpb25zLgorCiBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
RXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB0b1hZWkEodG9MaW5l
YXJFeHRlbmRlZFNSR0JBKGNvbG9yKSk7CkBAIC00MjYsNiArNDg4LDggQEAgRXh0ZW5kZWRTUkdC
QTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbgogICAgIHJldHVybiB0b0V4dGVuZGVkU1JHQkEo
dG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbG9yKSk7CiB9CiAKKy8vIC0gRGlzcGxheVAzIGNvbWJp
bmF0aW9uIGZ1bmN0aW9ucy4KKwogWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29s
b3IpKTsKQEAgLTQzNiw2ICs1MDAsMjAgQEAgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhj
b25zdCBYWVpBPAogICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b0xpbmVhckRpc3BsYXlQMyhjb2xv
cikpOwogfQogCisvLyAtIEE5OFJHQiBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCisKK1hZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9Y
WVpBKHRvTGluZWFyQTk4UkdCKGNvbG9yKSk7Cit9CisKK0E5OFJHQjxmbG9hdD4gdG9BOThSR0Io
Y29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b0E5OFJHQih0b0xpbmVh
ckE5OFJHQihjb2xvcikpOworfQorCisvLyAtIExDSEEgY29tYmluYXRpb24gZnVuY3Rpb25zLgor
CiBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTENIQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJl
dHVybiB0b1hZWkEodG9MYWIoY29sb3IpKTsKQEAgLTQ0Niw2ICs1MjQsOCBAQCBMQ0hBPGZsb2F0
PiB0b0xDSEEoY29uc3QgWFlaQTxmbG9hdD4mIGNvCiAgICAgcmV0dXJuIHRvTENIQSh0b0xhYihj
b2xvcikpOwogfQogCisvLyAtIEhTTEEgY29tYmluYXRpb24gZnVuY3Rpb25zLgorCiBYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB0b1hZ
WkEodG9TUkdCQShjb2xvcikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MTk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxMSArMjksMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBUaGVz
ZSBhcmUgdGhlIHN0YW5kYXJkIHNSR0IgPC0+IExpbmVhclJHQiAvIERpc3BsYXlQMyA8LT4gTGlu
ZWFyRGlzcGxheVAzIGNvbnZlcnNpb24gZnVuY3Rpb25zIChodHRwczovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9TUkdCKS4KLWZsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhm
bG9hdCk7Ci1mbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoZmxvYXQpOwot
ZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGZsb2F0KTsKLWZsb2F0
IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhmbG9hdCk7CisvLyBUcmFuc2Zl
ciBmdW5jdGlvbnMgZm9yIGNvbG9ycyB0aGF0IGNhbiBiZSBnYW1tYSBlbmNvZGVkLgorCitzdHJ1
Y3QgU1JHQlRyYW5zZmVyRnVuY3Rpb24geworICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyQ2xh
bXBpbmcoZmxvYXQpOworICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhckNsYW1waW5nKGZsb2F0KTsK
KyAgICBzdGF0aWMgZmxvYXQgZnJvbUxpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKKyAgICBzdGF0
aWMgZmxvYXQgdG9MaW5lYXJOb25DbGFtcGluZyhmbG9hdCk7Cit9OworCitzdHJ1Y3QgQTk4UkdC
VHJhbnNmZXJGdW5jdGlvbiB7CisgICAgc3RhdGljIGZsb2F0IGZyb21MaW5lYXJDbGFtcGluZyhm
bG9hdCk7CisgICAgc3RhdGljIGZsb2F0IHRvTGluZWFyQ2xhbXBpbmcoZmxvYXQpOworICAgIHN0
YXRpYyBmbG9hdCBmcm9tTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQpOworICAgIHN0YXRpYyBmbG9h
dCB0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKK307CiAKIC8vIEFsbCBjb2xvciB0eXBlcyBt
dXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIHRvIGFuZCBm
cm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgogLy8gICAgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0
IENvbG9yVHlwZTxmbG9hdD4mKTsKQEAgLTk4LDYgKzEwOCwxOCBAQCBXRUJDT1JFX0VYUE9SVCBI
U0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgCiAvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKKy8vIEE5OFJHQgorV0VC
Q09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKK1dF
QkNPUkVfRVhQT1JUIEE5OFJHQjxmbG9hdD4gdG9BOThSR0IoY29uc3QgWFlaQTxmbG9hdD4mKTsK
Ky8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVh
ckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+Jik7CisKKy8vIExpbmVhckE5OFJHQgorV0VCQ09S
RV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckE5OFJHQjxmbG9hdD4mKTsK
K1dFQkNPUkVfRVhQT1JUIExpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJBOThSR0IoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgQTk4UkdCPGZsb2F0
PiB0b0E5OFJHQihjb25zdCBMaW5lYXJBOThSR0I8ZmxvYXQ+JiBjb2xvcik7CisKIAogLy8gSWRl
bnRpdHkgY29udmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykuCiAKQEAgLTEx
MSw2ICsxMzMsNyBAQCBjb25zdGV4cHIgTGFiPGZsb2F0PiB0b0xhYihjb25zdCBMYWI8ZmxvCiBj
b25zdGV4cHIgTENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IExDSEE8ZmxvYXQ+JiBjb2xvcikgeyBy
ZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxm
bG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIFhZWkE8ZmxvYXQ+IHRv
WFlaQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4
cHIgQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikgeyBy
ZXR1cm4gY29sb3I7IH0KIAogCiAvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KQEAgLTE2Myw0ICsx
ODYsMzQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gSFNMQTxmbG9hdD4gdG9IU0xBKAogICAgIHJl
dHVybiB0b0hTTEEodG9YWVpBKGNvbG9yKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IEE5
OFJHQjxmbG9hdD4gdG9BOThSR0IoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQTk4
UkdCKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJBOThS
R0I8ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0
b0xpbmVhckE5OFJHQih0b1hZWkEoY29sb3IpKTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBGdW5jdG9yPiBjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgY2FsbFdpdGhDb2xv
clR5cGUoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21wb25lbnRzLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkg
eworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JB
PFQ+Pihjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAg
ICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1h
a2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOworICAgIGNhc2Ug
Q29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpm
b3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8RGlzcGxheVAzPFQ+
Pihjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpBOThSR0I6CisgICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxBOThSR0I8VD4+KGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6
OkxhYjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihm
dW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPExhYjxUPj4oY29tcG9uZW50cykpOworICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6
OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTxUPj4o
Y29tcG9uZW50cykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlv
bi5jcHAJKHJldmlzaW9uIDI3MTk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU2VyaWFsaXphdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDgg
QEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZXJpYWxpemF0aW9uKENvbG9yUwogICAgICAgICByZXR1
cm4gImxpbmVhci1zcmdiIl9zOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgogICAg
ICAgICByZXR1cm4gImRpc3BsYXktcDMiX3M7CisgICAgY2FzZSBDb2xvclNwYWNlOjpBOThSR0I6
CisgICAgICAgIHJldHVybiAiYTk4LXJnYiJfczsKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoK
ICAgICAgICAgcmV0dXJuICJsYWIiX3M7CiAgICAgfQpAQCAtMTYzLDYgKzE2NSwyMyBAQCBTdHJp
bmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoCiAgICAgcmV0dXJuIHNlcmlhbGl6
YXRpb24oY29sb3IpOwogfQogCisvLyBBOThSR0I8ZmxvYXQ+IG92ZXJsb2FkcworCitTdHJpbmcg
c2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBy
ZXR1cm4gc2VyaWFsaXphdGlvbihjb2xvcik7Cit9CisKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9y
SFRNTChjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gc2VyaWFsaXph
dGlvbihjb2xvcik7Cit9CisKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4
dChjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gc2VyaWFsaXphdGlv
bihjb2xvcik7Cit9CisKIC8vIExhYjxmbG9hdD4gb3ZlcmxvYWRzCiAKIFN0cmluZyBzZXJpYWxp
emF0aW9uRm9yQ1NTKGNvbnN0IExhYjxmbG9hdD4mIGNvbG9yKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmgJKHJl
dmlzaW9uIDI3MTk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
U2VyaWFsaXphdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg
QTk4UkdCOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5UDM7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IExhYjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyU1JH
QkE7CkBAIC01Niw2ICs1NywxMCBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlv
bkZvckNTCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3Qg
RGlzcGxheVAzPGZsb2F0PiYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKIAorV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgQTk4UkdCPGZsb2F0PiYpOwor
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IEE5OFJHQjxm
bG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJl
ZUFzVGV4dChjb25zdCBBOThSR0I8ZmxvYXQ+Jik7CisKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBz
ZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IExhYjxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBMYWI8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgTGFiPGZs
b2F0PiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3MTk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQyLDkgQEAgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQwogICAgIGNhc2UgQ29sb3JTcGFj
ZTo6RGlzcGxheVAzOgogICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDb2xvclNwYWNlOjpBOThSR0I6CisgICAgICAgIHRzIDw8ICJhOTgtcmdiIjsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpMYWI6CiAgICAgICAgIHRzIDw8
ICJMKmEqYiI7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkocmV2aXNpb24gMjcxOTY0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYg
KzM1LDcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgU1JHQiwKICAg
ICBMaW5lYXJSR0IsCiAgICAgRGlzcGxheVAzLAorICAgIEE5OFJHQiwKICAgICBMYWIKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJ
KHJldmlzaW9uIDI3MTk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwordGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBFeHRlbmRlZFNSR0JBOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBMaW5lYXJTUkdCQTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRT
UkdCQTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGlzcGxheVAzOwordGVtcGxhdGU8dHlw
ZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IEE5OFJHQjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyQTk4UkdCOwordGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBMYWI7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSEE7
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTEE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IFhZWjsKKwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBbHBoYVRyYWl0czsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8dWludDhfdD4gewpAQCAtMTE4LDYgKzEzMSw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IFhZWk1vZGVsPGZsb2F0PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwogfTsKIAorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2xvclR5cGUsIHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvclR5cGUgbWFrZUZyb21Db21wb25l
bnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYykKIHsKICAgICByZXR1cm4gQ29sb3JUeXBl
IHsgY1swXSwgY1sxXSwgY1syXSwgY1szXSB9OwpAQCAtMjY5LDkyICsyODMsMjcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgUGFyZW50PiBzdHJ1Y3QgQ29sb3JXaQogICAgIH0KIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBTUkdCQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPFNSR0JBPFQ+
PiB7Ci0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7Ci0gICAgdXNpbmcgTW9kZWwgPSBSR0JN
b2RlbDxUPjsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3Bh
Y2U6OlNSR0IgfTsKLSAgICAKLSAgICBjb25zdGV4cHIgU1JHQkEoVCByZWQsIFQgZ3JlZW4sIFQg
Ymx1ZSwgVCBhbHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCi0gICAgICAgIDogcmVkIHsg
cmVkIH0KLSAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KLSAgICAgICAgLCBibHVlIHsgYmx1ZSB9
Ci0gICAgICAgICwgYWxwaGEgeyBhbHBoYSB9Ci0gICAgewotICAgICAgICBhc3NlcnRJblJhbmdl
KCp0aGlzKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgU1JHQkEoKQotICAgICAgICA6IFNSR0JB
IHsgMCwgMCwgMCwgMCB9Ci0gICAgewotICAgIH0KLQotICAgIFQgcmVkOwotICAgIFQgZ3JlZW47
Ci0gICAgVCBibHVlOwotICAgIFQgYWxwaGE7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
b25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IFNSR0JB
PFQ+JiBjKQotewotICAgIHJldHVybiB7IGMucmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMuYWxwaGEg
fTsKLX0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTUkdCQTxUPiYgYSwgY29uc3QgU1JHQkE8VD4mIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb252ZXJ0aWJsZVRvQ29sb3JD
b21wb25lbnRzPENvbG9yVHlwZT4+KiA9IG51bGxwdHI+Citjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvbG9yVHlwZSYgYSwgY29uc3QgQ29sb3JUeXBlJiBiKQogewogICAgIHJldHVy
biBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTUkdCQTxU
PiYgYSwgY29uc3QgU1JHQkE8VD4mIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb252ZXJ0aWJsZVRvQ29sb3JDb21wb25lbnRzPENv
bG9yVHlwZT4+KiA9IG51bGxwdHI+Citjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENv
bG9yVHlwZSYgYSwgY29uc3QgQ29sb3JUeXBlJiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4dGVuZGVkU1JHQkEgOiBDb2xv
cldpdGhBbHBoYUhlbHBlcjxFeHRlbmRlZFNSR0JBPFQ+PiB7Ci0gICAgdXNpbmcgQ29tcG9uZW50
VHlwZSA9IFQ7Ci0gICAgdXNpbmcgTW9kZWwgPSBFeHRlbmRlZFJHQk1vZGVsPFQ+OwotCi0gICAg
Y29uc3RleHByIEV4dGVuZGVkU1JHQkEoVCByZWQsIFQgZ3JlZW4sIFQgYmx1ZSwgVCBhbHBoYSA9
IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCi0gICAgICAgIDogcmVkIHsgcmVkIH0KLSAgICAgICAg
LCBncmVlbiB7IGdyZWVuIH0KLSAgICAgICAgLCBibHVlIHsgYmx1ZSB9Ci0gICAgICAgICwgYWxw
aGEgeyBhbHBoYSB9Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBFeHRlbmRlZFNSR0JB
KCkKLSAgICAgICAgOiBFeHRlbmRlZFNSR0JBIHsgMCwgMCwgMCwgMCB9Ci0gICAgewotICAgIH0K
LQotICAgIFQgcmVkOwotICAgIFQgZ3JlZW47Ci0gICAgVCBibHVlOwotICAgIFQgYWxwaGE7Ci19
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFz
Q29sb3JDb21wb25lbnRzKGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGMpCi17Ci0gICAgcmV0dXJu
IHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OwotfQorLy8gTUFSSzogLSBSR0Ig
Q29sb3IgVHlwZXMuCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oY29uc3QgRXh0ZW5kZWRTUkdCQTxUPiYgYSwgY29uc3QgRXh0ZW5kZWRTUkdCQTxUPiYg
YikKLXsKLSAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXNDb2xvckNvbXBvbmVu
dHMoYik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgRXh0ZW5kZWRTUkdCQTxUPiYgYSwgY29uc3QgRXh0ZW5kZWRTUkdCQTxUPiYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBMaW5lYXJTUkdCQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPExpbmVhclNSR0JBPFQ+PiB7
Cit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQywgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgTT4gc3RydWN0IFJHQkFUeXBlIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8QzxUPj4gewogICAg
IHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwotICAgIHVzaW5nIE1vZGVsID0gUkdCTW9kZWw8VD47
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpMaW5l
YXJSR0I7Ci0KLSAgICBjb25zdGV4cHIgTGluZWFyU1JHQkEoVCByZWQsIFQgZ3JlZW4sIFQgYmx1
ZSwgVCBhbHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCisgICAgdXNpbmcgTW9kZWwgPSBN
OworICAgIAorICAgIGNvbnN0ZXhwciBSR0JBVHlwZShUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBU
IGFscGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkKICAgICAgICAgOiByZWQgeyByZWQgfQog
ICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQogICAgICAgICAsIGJsdWUgeyBibHVlIH0KQEAgLTM2
Myw4ICszMTIsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyU1JHQkEgCiAg
ICAgICAgIGFzc2VydEluUmFuZ2UoKnRoaXMpOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBMaW5l
YXJTUkdCQSgpCi0gICAgICAgIDogTGluZWFyU1JHQkEgeyAwLCAwLCAwLCAwIH0KKyAgICBjb25z
dGV4cHIgUkdCQVR5cGUoKQorICAgICAgICA6IFJHQkFUeXBlIHsgMCwgMCwgMCwgMCB9CiAgICAg
ewogICAgIH0KIApAQCAtMzc0LDE0MSArMzIzLDY4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBMaW5lYXJTUkdCQSAKICAgICBUIGFscGhhOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBM
aW5lYXJTUkdCQTxUPiYgYykKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBDb2xv
clR5cGUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIE0+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8
VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgUkdCQVR5cGU8Q29sb3JUeXBlLCBULCBNPiYgYykK
IHsKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgTGlu
ZWFyU1JHQkE8VD4mIGEsIGNvbnN0IExpbmVhclNSR0JBPFQ+JiBiKQotewotICAgIHJldHVybiBh
c0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMaW5lYXJTUkdC
QTxUPiYgYSwgY29uc3QgTGluZWFyU1JHQkE8VD4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBi
KTsKLX0KLQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdC
QSA6IENvbG9yV2l0aEFscGhhSGVscGVyPExpbmVhckV4dGVuZGVkU1JHQkE8VD4+IHsKLSAgICB1
c2luZyBDb21wb25lbnRUeXBlID0gVDsKLSAgICB1c2luZyBNb2RlbCA9IEV4dGVuZGVkUkdCTW9k
ZWw8VD47Ci0KLSAgICBjb25zdGV4cHIgTGluZWFyRXh0ZW5kZWRTUkdCQShUIHJlZCwgVCBncmVl
biwgVCBibHVlLCBUIGFscGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkKLSAgICAgICAgOiBy
ZWQgeyByZWQgfQotICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQotICAgICAgICAsIGJsdWUgeyBi
bHVlIH0KLSAgICAgICAgLCBhbHBoYSB7IGFscGhhIH0KLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3RleHByIExpbmVhckV4dGVuZGVkU1JHQkEoKQotICAgICAgICA6IExpbmVhckV4dGVuZGVkU1JH
QkEgeyAwLCAwLCAwLCAwIH0KLSAgICB7Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IFNSR0JBIDogUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcg
UkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgTGlu
ZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJTUkdCQTxUPjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsKK307Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsKIAotICAgIFQgcmVkOwotICAgIFQg
Z3JlZW47Ci0gICAgVCBibHVlOwotICAgIFQgYWxwaGE7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgTGluZWFyU1JHQkEgOiBSR0JBVHlwZTxMaW5lYXJTUkdCQSwgVCwgUkdCTW9kZWw8VD4+
IHsKKyAgICB1c2luZyBSR0JBVHlwZTxMaW5lYXJTUkdCQSwgVCwgUkdCTW9kZWw8VD4+OjpSR0JB
VHlwZTsKKyAgICB1c2luZyBHYW1tYUVuY29kZWRDb3VudGVycGFydCA9IFNSR0JBPFQ+OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6TGluZWFyUkdC
OwogfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBKFQsIFQsIFQsIFQpIC0+IExp
bmVhclNSR0JBPFQ+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21w
b25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8VD4m
IGMpCi17Ci0gICAgcmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9Owot
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IExpbmVhckV4dGVuZGVkU1JHQkE8VD4mIGEsIGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8VD4m
IGIpCi17Ci0gICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGEpID09IGFzQ29sb3JDb21wb25l
bnRzKGIpOwotfQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4dGVuZGVkU1JHQkEgOiBS
R0JBVHlwZTxFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+PiB7CisgICAgdXNp
bmcgUkdCQVR5cGU8RXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFU
eXBlOworICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRXh0ZW5kZWRTUkdCQTxU
PjsKK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRlZFNSR0JBKFQsIFQsIFQsIFQpIC0+
IEV4dGVuZGVkU1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxUPiYgYSwgY29uc3QgTGluZWFy
RXh0ZW5kZWRTUkdCQTxUPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkEgOiBSR0JBVHlwZTxMaW5l
YXJFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdC
QVR5cGU8TGluZWFyRXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFU
eXBlOworICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gRXh0ZW5kZWRTUkdCQTxU
PjsKK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJFeHRlbmRlZFNSR0JBKFQsIFQsIFQs
IFQpIC0+IExpbmVhckV4dGVuZGVkU1JHQkE8VD47CiAKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IERpc3BsYXlQMyA6IENvbG9yV2l0aEFscGhhSGVscGVyPERpc3BsYXlQMzxUPj4gewot
ICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwotICAgIHVzaW5nIE1vZGVsID0gUkdCTW9kZWw8
VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGlzcGxheVAzIDogUkdCQVR5cGU8RGlz
cGxheVAzLCBULCBSR0JNb2RlbDxUPj4geworICAgIHVzaW5nIFJHQkFUeXBlPERpc3BsYXlQMywg
VCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1c2luZyBMaW5lYXJDb3VudGVycGFydCA9
IExpbmVhckRpc3BsYXlQMzxUPjsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFj
ZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKLQotICAgIGNvbnN0ZXhwciBEaXNwbGF5UDMoVCBy
ZWQsIFQgZ3JlZW4sIFQgYmx1ZSwgVCBhbHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCi0g
ICAgICAgIDogcmVkIHsgcmVkIH0KLSAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KLSAgICAgICAg
LCBibHVlIHsgYmx1ZSB9Ci0gICAgICAgICwgYWxwaGEgeyBhbHBoYSB9Ci0gICAgewotICAgICAg
ICBhc3NlcnRJblJhbmdlKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgRGlzcGxheVAz
KCkKLSAgICAgICAgOiBEaXNwbGF5UDMgeyAwLCAwLCAwLCAwIH0KLSAgICB7Ci0gICAgfQotCi0g
ICAgVCByZWQ7Ci0gICAgVCBncmVlbjsKLSAgICBUIGJsdWU7Ci0gICAgVCBhbHBoYTsKIH07Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlzcGxheVAzPFQ+
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFz
Q29sb3JDb21wb25lbnRzKGNvbnN0IERpc3BsYXlQMzxUPiYgYykKLXsKLSAgICByZXR1cm4geyBj
LnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRGlzcGxheVAzPFQ+JiBhLCBjb25z
dCBEaXNwbGF5UDM8VD4mIGIpCi17Ci0gICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGEpID09
IGFzQ29sb3JDb21wb25lbnRzKGIpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERpc3BsYXlQMzxUPiYgYSwgY29uc3QgRGlzcGxheVAz
PFQ+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IExpbmVhckRpc3BsYXlQMyA6IENvbG9yV2l0aEFscGhhSGVscGVyPExpbmVh
ckRpc3BsYXlQMzxUPj4gewotICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwotICAgIHVzaW5n
IE1vZGVsID0gUkdCTW9kZWw8VD47Ci0KLSAgICBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzKFQg
cmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQot
ICAgICAgICA6IHJlZCB7IHJlZCB9Ci0gICAgICAgICwgZ3JlZW4geyBncmVlbiB9Ci0gICAgICAg
ICwgYmx1ZSB7IGJsdWUgfQotICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQotICAgIHsKLSAgICAg
ICAgYXNzZXJ0SW5SYW5nZSgqdGhpcyk7Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IExpbmVhckRpc3BsYXlQMyA6IFJHQkFUeXBlPExpbmVhckRpc3BsYXlQMywgVCwgUkdCTW9k
ZWw8VD4+IHsKKyAgICB1c2luZyBSR0JBVHlwZTxMaW5lYXJEaXNwbGF5UDMsIFQsIFJHQk1vZGVs
PFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBEaXNw
bGF5UDM8VD47Cit9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRGlzcGxheVAzKFQsIFQs
IFQsIFQpIC0+IExpbmVhckRpc3BsYXlQMzxUPjsKIAotICAgIGNvbnN0ZXhwciBMaW5lYXJEaXNw
bGF5UDMoKQotICAgICAgICA6IExpbmVhckRpc3BsYXlQMyB7IDAsIDAsIDAsIDAgfQotICAgIHsK
LSAgICB9CiAKLSAgICBUIHJlZDsKLSAgICBUIGdyZWVuOwotICAgIFQgYmx1ZTsKLSAgICBUIGFs
cGhhOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEE5OFJHQiA6IFJHQkFUeXBlPEE5OFJH
QiwgVCwgUkdCTW9kZWw8VD4+IHsKKyAgICB1c2luZyBSR0JBVHlwZTxBOThSR0IsIFQsIFJHQk1v
ZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJB
OThSR0I8VD47CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgPSBDb2xvclNw
YWNlOjpBOThSR0I7CiB9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCKFQsIFQsIFQsIFQp
IC0+IEE5OFJHQjxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29t
cG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8VD4mIGMp
Ci17Ci0gICAgcmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExp
bmVhckRpc3BsYXlQMzxUPiYgYSwgY29uc3QgTGluZWFyRGlzcGxheVAzPFQ+JiBiKQotewotICAg
IHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0K
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJBOThSR0IgOiBSR0JBVHlwZTxMaW5l
YXJBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyQTk4
UkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5nIEdhbW1hRW5jb2RlZENv
dW50ZXJwYXJ0ID0gQTk4UkdCPFQ+OworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckE5
OFJHQihULCBULCBULCBUKSAtPiBMaW5lYXJBOThSR0I8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgTGluZWFyRGlzcGxheVAzPFQ+JiBh
LCBjb25zdCBMaW5lYXJEaXNwbGF5UDM8VD4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsK
LX0KIAorLy8gTUFSSzogLSBMYWIgQ29sb3IgVHlwZS4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IExhYiA6IENvbG9yV2l0aEFscGhhSGVscGVyPExhYjxUPj4gewogICAgIHVzaW5nIENv
bXBvbmVudFR5cGUgPSBUOwpAQCAtNTQwLDE2ICs0MTYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjb25zdGV4cHIgQ29sb3JDb21wCiAgICAgcmV0dXJuIHsgYy5saWdodG5lc3MsIGMuYSwgYy5i
LCBjLmFscGhhIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTGFiPFQ+JiBhLCBjb25zdCBMYWI8VD4mIGIpCi17Ci0gICAgcmV0dXJu
IGFzQ29sb3JDb21wb25lbnRzKGEpID09IGFzQ29sb3JDb21wb25lbnRzKGIpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExhYjxUPiYg
YSwgY29uc3QgTGFiPFQ+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KKy8vIE1B
Uks6IC0gTENIQSBDb2xvciBUeXBlLgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTENI
QSA6IENvbG9yV2l0aEFscGhhSGVscGVyPExDSEE8VD4+IHsKICAgICB1c2luZyBDb21wb25lbnRU
eXBlID0gVDsKQEAgLTU4MCwxNiArNDQ3LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Rl
eHByIENvbG9yQ29tcAogICAgIHJldHVybiB7IGMubGlnaHRuZXNzLCBjLmNocm9tYSwgYy5odWUs
IGMuYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMQ0hBPFQ+JiBhLCBjb25zdCBMQ0hBPFQ+JiBiKQotewotICAgIHJldHVy
biBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMQ0hBPFQ+
JiBhLCBjb25zdCBMQ0hBPFQ+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19CiAKKy8v
IE1BUks6IC0gSFNMQSBDb2xvciBUeXBlLgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SFNMQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPEhTTEE8VD4+IHsKICAgICB1c2luZyBDb21wb25l
bnRUeXBlID0gVDsKQEAgLTYxNSwyMyArNDc0LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIU0xBIDogQ29sb3IKICAgICBUIGFscGhhOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gSFNMQShULCBULCBULCBUKSAtPiBIU0xBPFQ+OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
b25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IEhTTEE8
VD4mIGMpCiB7CiAgICAgcmV0dXJuIHsgYy5odWUsIGMuc2F0dXJhdGlvbiwgYy5saWdodG5lc3Ms
IGMuYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBIU0xBPFQ+JiBhLCBjb25zdCBIU0xBPFQ+JiBiKQotewotICAgIHJldHVy
biBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIU0xBPFQ+
JiBhLCBjb25zdCBIU0xBPFQ+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KKy8v
IE1BUks6IC0gWFlaIENvbG9yIFR5cGUuCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBY
WVpBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8WFlaQTxUPj4gewogICAgIHVzaW5nIENvbXBvbmVu
dFR5cGUgPSBUOwpAQCAtNjYyLDMzICs1MTAsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgQ29sb3JDb21wCiAgICAgcmV0dXJuIHsgYy54LCBjLnksIGMueiwgYy5hbHBoYSB9Owog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFhZWkE8VD4mIGEsIGNvbnN0IFhZWkE8VD4mIGIpCi17Ci0gICAgcmV0dXJuIGFzQ29sb3JDb21w
b25lbnRzKGEpID09IGFzQ29sb3JDb21wb25lbnRzKGIpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFhZWkE8VD4mIGEsIGNvbnN0IFhZ
WkE8VD4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgY2FsbFdp
dGhDb2xvclR5cGUoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21wb25lbnRzLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQotewotICAgIHN3aXRjaCAoY29sb3JT
cGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRz
PFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6
Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rv
ciksIG1ha2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwotICAg
IGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8RGlzcGxh
eVAzPFQ+Pihjb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMYWI6Ci0gICAgICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VG
cm9tQ29tcG9uZW50czxMYWI8VD4+KGNvbXBvbmVudHMpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0
b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsK
LX0KIAogLy8gUGFja2VkIENvbG9yIEZvcm1hdHMKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24gMjcxOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
dHJhbnNmb3JtQwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5Owog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAgICAgIGNvbG9y
ID0gcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yKTsKKyAgICAgICAgICAg
ICAgICBjb2xvciA9IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGNvbG9y
KTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5k
KGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7
CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNm
b3JtQwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAgICAgIGNvbG9yID0gbGlu
ZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBj
b2xvciA9IFNSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyQ2xhbXBpbmcoY29sb3IpOwog
ICAgICAgICAgICAgICAgIGFycmF5W2ldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4ocm91bmQoY29s
b3IgKiAyNTUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhcnJheTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmNwcAkocmV2aXNpb24gMjcxOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIs
MjAgQEAgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQogICAgIHJldHVy
biBkaXNwbGF5UDNDb2xvclNwYWNlOwogfQogCitDR0NvbG9yU3BhY2VSZWYgYTk4UkdCQ29sb3JT
cGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBhOThSR0JDb2xvclNwYWNl
OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBhOThSR0JDb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUFkb2JlUkdC
MTk5OCk7CisjZWxzZQorICAgICAgICBhOThSR0JDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKKyNlbmRpZgorICAgIH0pOworICAgIHJldHVybiBhOThSR0JDb2xvclNwYWNlOworfQor
CiBDR0NvbG9yU3BhY2VSZWYgbGFiQ29sb3JTcGFjZVJlZigpCiB7CiAgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBjb252ZXJzaW9uIHRvIExhYiBvbiBzdXBwb3J0ZWQgcGxhdGZvcm1zLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmgJKHJldmlzaW9uIDI3MTk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
IFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3IKIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9S
VCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwogV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGxhYkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENH
Q29sb3JTcGFjZVJlZiBhOThSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9SVCBDR0Nv
bG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwogCiBzdGF0aWMgaW5saW5l
IENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQpAQCAtNDYsNiArNDcsOCBAQCBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRD
R0NvCiAgICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CiAgICAgY2FzZSBD
b2xvclNwYWNlOjpEaXNwbGF5UDM6CiAgICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNl
UmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpBOThSR0I6CisgICAgICAgIHJldHVybiBhOThS
R0JDb2xvclNwYWNlUmVmKCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpMYWI6CiAgICAgICAgIHJl
dHVybiBsYWJDb2xvclNwYWNlUmVmKCk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjcxOTY0
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMjEtMDEtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBjb2xvcihhOTgtcmdiIC4uLikgYXMgcGFydCBvZiBDU1MgQ29sb3Ig
NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICBVbi1mYWlsIHNvbWUgbm93IHBhc3NpbmcgdGVzdHMuCisK
KyAgICAgICAgKiBmYXN0L2Nzcy9wYXJzaW5nLWE5OHJnYi1jb2xvcnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wYXJzaW5nLWE5OHJnYi1jb2xvcnMuaHRtbDogQWRk
ZWQuCisgICAgICAgIEFkZCBuZXcgdGVzdHMgZm9yIHBhcnNpbmcgY29sb3IoYTk4LXJnYiApIGNv
bG9ycy4KKwogMjAyMS0wMS0yNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzE5NDAuCkluZGV4OiBMYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMJKHJldmlzaW9uIDI3MTk2NCkKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQ1OTcsOCArNDU5Nyw2IEBAIHdlYmtpdC5vcmcvYi8y
MjAzMjUgaHR0cC93cHQvY3NzL2Nzcy1oaWcKICMgVW5zdXBwb3J0ZWQgY3NzIGNvbG9yKCkgdmFy
aWFudHMKIHdlYmtpdC5vcmcvYi8yMjA5MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvbG9yL3ByZWRlZmluZWQtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0g
IyBJbnZhbGlkIHRlc3QsIG5vIGNvbG9yc3BhY2Ugc3BlY2lmaWVkCiB3ZWJraXQub3JnL2IvMjIw
OTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9wcmVkZWZp
bmVkLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdICMgSW52YWxpZCB0ZXN0LCBubyBjb2xv
cnNwYWNlIHNwZWNpZmllZAotd2Via2l0Lm9yZy9iLzIyMDkyOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvcHJlZGVmaW5lZC0wMDcuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXSAjIFJlcXVpcmVzIGE5OC1yZ2Igc3VwcG9ydAotd2Via2l0Lm9yZy9iLzIyMDky
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvcHJlZGVmaW5l
ZC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXSAjIFJlcXVpcmVzIGE5OC1yZ2Igc3VwcG9y
dAogd2Via2l0Lm9yZy9iLzIyMDkyOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtY29sb3IvcHJlZGVmaW5lZC0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXSAjIFJl
cXVpcmVzIHByb3Bob3RvLXJnYiBzdXBwb3J0CiB3ZWJraXQub3JnL2IvMjIwOTI4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9wcmVkZWZpbmVkLTAxMC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdICMgUmVxdWlyZXMgcHJvcGhvdG8tcmdiIHN1cHBvcnQKIHdl
YmtpdC5vcmcvYi8yMjA5MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvbG9yL3ByZWRlZmluZWQtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0gIyBSZXF1aXJl
cyByZWMyMDIwIHN1cHBvcnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctYTk4
cmdiLWNvbG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcGFyc2luZy1hOThyZ2ItY29sb3JzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWE5OHJnYi1jb2xvcnMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgbGFiLCBs
Y2ggYW5kIGdyYXkgY29sb3JzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgMCUgMCUg
MCUpIikgaXMgImNvbG9yKGE5OC1yZ2IgMCAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgMTAlIDEwJSAxMCUpIikgaXMgImNvbG9yKGE5
OC1yZ2IgMC4xIDAuMSAwLjEpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImNvbG9yKGE5OC1yZ2IgLjIgLjIgMjUlKSIpIGlzICJjb2xvcihhOTgtcmdiIDAuMiAwLjIg
MC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4
LXJnYiAwIDAgMCAvIDEpIikgaXMgImNvbG9yKGE5OC1yZ2IgMCAwIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgMCUgMCAwIC8gMC41KSIp
IGlzICJjb2xvcihhOTgtcmdiIDAgMCAwIC8gMC41KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJjb2xvcihhOTgtcmdiIDIwJSAwIDEwLzAuNSkiKSBpcyAiY29sb3Io
YTk4LXJnYiAwLjIgMCAxIC8gMC41KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJjb2xvcihhOTgtcmdiIDIwJSAwIDEwLzUwJSkiKSBpcyAiY29sb3IoYTk4LXJnYiAw
LjIgMCAxIC8gMC41KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJj
b2xvcihhOTgtcmdiIDQwMCUgMCAxMC81MCUpIikgaXMgImNvbG9yKGE5OC1yZ2IgMSAwIDEgLyAw
LjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1y
Z2IgNTAlIC0xNjAgMTYwKSIpIGlzICJjb2xvcihhOTgtcmdiIDAuNSAwIDEpIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgNTAlIC0yMDAgMjAw
KSIpIGlzICJjb2xvcihhOTgtcmdiIDAuNSAwIDEpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgMCAwIDAgLyAtMTAlKSIpIGlzICJjb2xvcihh
OTgtcmdiIDAgMCAwIC8gMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiY29sb3IoYTk4LXJnYiAwIDAgMCAvIDExMCUpIikgaXMgImNvbG9yKGE5OC1yZ2IgMCAwIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2Ig
MCAwIDAgLyAzMDAlKSIpIGlzICJjb2xvcihhOTgtcmdiIDAgMCAwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJjb2xvcihhOTgtcmdiIDUwJSAtMjAwKSIpIGlzICJj
b2xvcihhOTgtcmdiIDAuNSAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImNvbG9yKGE5OC1yZ2IgNTAlKSIpIGlzICJjb2xvcihhOTgtcmdiIDAuNSAwIDApIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IpIikg
aXMgImNvbG9yKGE5OC1yZ2IgMCAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgNTAlIC0yMDAgLyAwLjUpIikgaXMgImNvbG9yKGE5OC1y
Z2IgMC41IDAgMCAvIDAuNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiY29sb3IoYTk4LXJnYiA1MCUgLyAwLjUpIikgaXMgImNvbG9yKGE5OC1yZ2IgMC41IDAgMCAv
IDAuNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4
LXJnYiAvIDAuNSkiKSBpcyAiY29sb3IoYTk4LXJnYiAwIDAgMCAvIDAuNSkiCisKK1Rlc3QgaW52
YWxpZCB2YWx1ZXMKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJjb2xv
cihhOTgtcmdiIDAgMCAwIDApIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4LXJnYiAwZGVnIDAlIDApIikgaXMg
InJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiY29sb3IoYTk4LXJnYiAwJSAwIDAgMSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJjb2xvcihhOTgtcmdiIDAlIDAgMCAx
MCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAiY29sb3IoYTk4LXJnYiAwJSAwIDBkZWcpIikgaXMgInJnYmEoMCwgMCwgMCwg
MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4LXJn
YiAwJSAwJSAwZGVnKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgNDAlIDAgMGRlZykiKSBpcyAicmdi
YSgwLCAwLCAwLCAwKSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWE5OHJnYi1jb2xv
cnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWE5OHJn
Yi1jb2xvcnMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJz
aW5nLWE5OHJnYi1jb2xvcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACis8
aHRtbD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVz
dCB0aGUgcGFyc2luZyBvZiBsYWIsIGxjaCBhbmQgZ3JheSBjb2xvcnMuIik7CisKKyAgICBmdW5j
dGlvbiBjb21wdXRlZFN0eWxlKHByb3BlcnR5LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkaXYpOworICAgICAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVy
dHksIHZhbHVlKTsKKyAgICAgICAgdmFyIGNvbXB1dGVkVmFsdWUgPSBnZXRDb21wdXRlZFN0eWxl
KGRpdikuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZGl2KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWU7CisgICAgfQor
CisgICAgZnVuY3Rpb24gaW5uZXJTdHlsZShwcm9wZXJ0eSwgdmFsdWUpCisgICAgeworICAgICAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdi5z
dHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICByZXR1cm4gZGl2LnN0
eWxlLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRl
c3RDb21wdXRlZChwcm9wZXJ0eSwgdmFsdWUsIGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdjb21wdXRlZFN0eWxlKCInICsgcHJvcGVydHkgKyAnIiwgIicg
KyB2YWx1ZSArICciKScsIGV4cGVjdGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0SW5u
ZXIocHJvcGVydHksIHZhbHVlLCBleHBlY3RlZCkKKyAgICB7CisgICAgICAgIGlmIChleHBlY3Rl
ZCA9PT0gbnVsbCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gIiI7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnaW5uZXJTdHlsZSgiJyArIHByb3BlcnR5ICsgJyIsICInICsgdmFsdWUg
KyAnIiknLCBleHBlY3RlZCk7CisgICAgfQorCisgICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgMCUgMCUgMCUpIiwgImNvbG9yKGE5OC1yZ2IgMCAwIDAp
Iik7CisgICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2Ig
MTAlIDEwJSAxMCUpIiwgImNvbG9yKGE5OC1yZ2IgMC4xIDAuMSAwLjEpIik7CisgICAgdGVzdENv
bXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgLjIgLjIgMjUlKSIsICJj
b2xvcihhOTgtcmdiIDAuMiAwLjIgMC4yNSkiKTsKKyAgICB0ZXN0Q29tcHV0ZWQoImJhY2tncm91
bmQtY29sb3IiLCAiY29sb3IoYTk4LXJnYiAwIDAgMCAvIDEpIiwgImNvbG9yKGE5OC1yZ2IgMCAw
IDApIik7CisgICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1y
Z2IgMCUgMCAwIC8gMC41KSIsICJjb2xvcihhOTgtcmdiIDAgMCAwIC8gMC41KSIpOworICAgIHRl
c3RDb21wdXRlZCgiYmFja2dyb3VuZC1jb2xvciIsICJjb2xvcihhOTgtcmdiIDIwJSAwIDEwLzAu
NSkiLCAiY29sb3IoYTk4LXJnYiAwLjIgMCAxIC8gMC41KSIpOworICAgIHRlc3RDb21wdXRlZCgi
YmFja2dyb3VuZC1jb2xvciIsICJjb2xvcihhOTgtcmdiIDIwJSAwIDEwLzUwJSkiLCAiY29sb3Io
YTk4LXJnYiAwLjIgMCAxIC8gMC41KSIpOworICAgIHRlc3RDb21wdXRlZCgiYmFja2dyb3VuZC1j
b2xvciIsICJjb2xvcihhOTgtcmdiIDQwMCUgMCAxMC81MCUpIiwgImNvbG9yKGE5OC1yZ2IgMSAw
IDEgLyAwLjUpIik7CisgICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9y
KGE5OC1yZ2IgNTAlIC0xNjAgMTYwKSIsICJjb2xvcihhOTgtcmdiIDAuNSAwIDEpIik7CisgICAg
dGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgNTAlIC0yMDAg
MjAwKSIsICJjb2xvcihhOTgtcmdiIDAuNSAwIDEpIik7CisgICAgdGVzdENvbXB1dGVkKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgMCAwIDAgLyAtMTAlKSIsICJjb2xvcihhOTgt
cmdiIDAgMCAwIC8gMCkiKTsKKyAgICB0ZXN0Q29tcHV0ZWQoImJhY2tncm91bmQtY29sb3IiLCAi
Y29sb3IoYTk4LXJnYiAwIDAgMCAvIDExMCUpIiwgImNvbG9yKGE5OC1yZ2IgMCAwIDApIik7Cisg
ICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IgMCAwIDAg
LyAzMDAlKSIsICJjb2xvcihhOTgtcmdiIDAgMCAwKSIpOworICAgIHRlc3RDb21wdXRlZCgiYmFj
a2dyb3VuZC1jb2xvciIsICJjb2xvcihhOTgtcmdiIDUwJSAtMjAwKSIsICJjb2xvcihhOTgtcmdi
IDAuNSAwIDApIik7CisgICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9y
KGE5OC1yZ2IgNTAlKSIsICJjb2xvcihhOTgtcmdiIDAuNSAwIDApIik7CisgICAgdGVzdENvbXB1
dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5OC1yZ2IpIiwgImNvbG9yKGE5OC1yZ2Ig
MCAwIDApIik7CisgICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImNvbG9yKGE5
OC1yZ2IgNTAlIC0yMDAgLyAwLjUpIiwgImNvbG9yKGE5OC1yZ2IgMC41IDAgMCAvIDAuNSkiKTsK
KyAgICB0ZXN0Q29tcHV0ZWQoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4LXJnYiA1MCUg
LyAwLjUpIiwgImNvbG9yKGE5OC1yZ2IgMC41IDAgMCAvIDAuNSkiKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4LXJnYiAvIDAuNSkiLCAiY29sb3IoYTk4
LXJnYiAwIDAgMCAvIDAuNSkiKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnVGVzdCBp
bnZhbGlkIHZhbHVlcycpOworICAgIHRlc3RDb21wdXRlZCgiYmFja2dyb3VuZC1jb2xvciIsICJj
b2xvcihhOTgtcmdiIDAgMCAwIDApIiwgInJnYmEoMCwgMCwgMCwgMCkiKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4LXJnYiAwZGVnIDAlIDApIiwgInJn
YmEoMCwgMCwgMCwgMCkiKTsKKyAgICB0ZXN0Q29tcHV0ZWQoImJhY2tncm91bmQtY29sb3IiLCAi
Y29sb3IoYTk4LXJnYiAwJSAwIDAgMSkiLCAicmdiYSgwLCAwLCAwLCAwKSIpOworICAgIHRlc3RD
b21wdXRlZCgiYmFja2dyb3VuZC1jb2xvciIsICJjb2xvcihhOTgtcmdiIDAlIDAgMCAxMCUpIiwg
InJnYmEoMCwgMCwgMCwgMCkiKTsKKyAgICB0ZXN0Q29tcHV0ZWQoImJhY2tncm91bmQtY29sb3Ii
LCAiY29sb3IoYTk4LXJnYiAwJSAwIDBkZWcpIiwgInJnYmEoMCwgMCwgMCwgMCkiKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoImJhY2tncm91bmQtY29sb3IiLCAiY29sb3IoYTk4LXJnYiAwJSAwJSAwZGVn
KSIsICJyZ2JhKDAsIDAsIDAsIDApIik7CisgICAgdGVzdENvbXB1dGVkKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImNvbG9yKGE5OC1yZ2IgNDAlIDAgMGRlZykiLCAicmdiYSgwLCAwLCAwLCAwKSIpOwor
Cis8L3NjcmlwdD4KKyAgICAKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjcxOTY2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAxLTI3
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgY29sb3IoYTk4LXJnYiAuLi4pIGFzIHBhcnQgb2YgQ1NTIENvbG9yIDQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTAxOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzb21lIG5ldyBXUFQgdGVz
dHMgZm9yIGNvbG9yKGE5OC1yZ2IgKSB0aGF0IHdpbGwgYmUgdXBzdHJlYW1lZCBzaG9ydGx5Lgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwMS1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9hOThyZ2ItMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9hOThyZ2It
MDAzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWNvbG9yL2E5OHJnYi0wMDMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwNC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9hOThyZ2ItMDA0Lmh0
bWw6IEFkZGVkLgorCiAyMDIxLTAxLTI3ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIHRvIFdQVCBTaGFkb3cgRE9NIHRlc3RzIHJl
bGF0ZWQgdG8gOmZvY3VzIHBzZXVkby1jbGFzcwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDEtZXhwZWN0ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwMS1leHBlY3RlZC5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9hOThyZ2ItMDAxLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
R3JlZW4gc3F1YXJlIHJlZmVyZW5jZTwvdGl0bGU+Cis8c3R5bGU+CisgICAgLnRlc3QgeyBiYWNr
Z3JvdW5kLWNvbG9yOiAjMDA4MDAwOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtO30KKzwvc3R5
bGU+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1YXJl
LCBhbmQgbm8gcmVkLjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48L2Rpdj4KKzwvYm9keT4K
SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9hOThyZ2ItMDAxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDEuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PkNTUyBDb2xvciA0OiBhOTgtcmdiPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0i
U2FtIFdlaW5pZyIgaHJlZj0ibWFpbHRvOndlaW5pZ0BhcHBsZS5jb20iPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTQvI3ZhbGRlZi1j
b2xvci1hOTgtcmdiIj4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVuc3F1YXJlLXJlZi5o
dG1sIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iYTk4LXJnYiB3aXRoIG5vIGFscGhh
Ij4KKzxzdHlsZT4KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEy
ZW07IGhlaWdodDogMTJlbTsgfQorICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogY29sb3Io
YTk4LXJnYiAwLjI4MTM2MyAwLjQ5ODAxMiAwLjExNjc0Nik7IH0gLyogZ3JlZW4gKHNSR0IgIzAw
ODAwMCkgY29udmVydGVkIHRvIGE5OC1yZ2IgKi8KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8cD5U
ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1YXJlLCBhbmQgbm8gcmVkLjwvcD4KKyAg
ICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48L2Rpdj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9hOThyZ2ItMDAyLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDItZXhwZWN0ZWQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwMi1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPkJsYWNrIHNxdWFyZSByZWZlcmVuY2U8L3RpdGxlPgorPHN0eWxlPgorICAgIC50ZXN0
IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsg
fQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBibGFj
ayBzcXVhcmUsIGFuZCBubyByZWQuPC9wPgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2Pgor
PC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAw
Mi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9hOThyZ2ItMDAyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+Q1NTIENvbG9yIDQ6IGE5OC1yZ2I8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3Ii
IHRpdGxlPSJTYW0gV2VpbmlnIiBocmVmPSJtYWlsdG86d2VpbmlnQGFwcGxlLmNvbSI+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8j
dmFsZGVmLWNvbG9yLWE5OC1yZ2IiPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmxhY2tzcXVh
cmUtcmVmLmh0bWwiPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJhOTgtcmdiIHdpdGgg
bm8gYWxwaGEiPgorPHN0eWxlPgorICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB3
aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtOyB9CisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9y
OiBjb2xvcihhOTgtcmdiIDAgMCAwKTsgfSAvKiBibGFjayAoc1JHQiAjMDAwMDAwKSBjb252ZXJ0
ZWQgdG8gYTk4LXJnYiAqLworPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlm
IHlvdSBzZWUgYSBibGFjayBzcXVhcmUsIGFuZCBubyByZWQuPC9wPgorICAgIDxkaXYgY2xhc3M9
InRlc3QiPjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDMtZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwMy1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xv
ci9hOThyZ2ItMDAzLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIENv
bG9yIDQ6IENTUyBDb2xvciA0OiBhOTgtcmdiPC90aXRsZT4KKzxzdHlsZT4KKyAgICBib2R5IHsg
YmFja2dyb3VuZC1jb2xvcjogZ3JleTsgfQorICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDk5Ljk5MyUgMTAwJSAxMDAlKTsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsgfSAvKiBj
b2xvcihhOTgtcmdiIDEgMSAxKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLworPC9zdHlsZT4KKzxib2R5
PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90
IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xvcnMuPC9wPgorICAgIDxkaXYgY2xhc3M9
InRlc3QiPjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y29sb3IvYTk4cmdiLTAwMy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9hOThyZ2ItMDAzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIENvbG9yIDQ6IGE5OC1yZ2I8L3RpdGxlPgorPGxp
bmsgcmVsPSJhdXRob3IiIHRpdGxlPSJTYW0gV2VpbmlnIiBocmVmPSJtYWlsdG86d2VpbmlnQGFw
cGxlLmNvbSI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtY29sb3ItNC8jdmFsZGVmLWNvbG9yLWE5OC1yZ2IiPgorPGxpbmsgcmVsPSJtYXRjaCIg
aHJlZj0iYTk4cmdiLTAwMy1yZWYuaHRtbCI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9
ImE5OC1yZ2Igd2l0aCBubyBhbHBoYSI+Cis8c3R5bGU+CisgICAgYm9keSB7IGJhY2tncm91bmQt
Y29sb3I6IGdyZXk7IH0KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6
IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tdG9wOiAwOyB9CisgICAgLnJlZiB7IGJhY2tncm91
bmQtY29sb3I6IHJnYig5OS45OTMlIDEwMCUgMTAwJSk7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZl
bTsgbWFyZ2luLWJvdHRvbTogMDsgfSAvKiBjb2xvcihhOTgtcmdiIDEgMSAxKSBjb252ZXJ0ZWQg
dG8gc1JHQiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoYTk4LXJnYiAx
IDEgMSk7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2Vl
IGEgc2luZ2xlIHNxdWFyZSwgYW5kIG5vdCB0d28gcmVjdGFuZ2xlcyBvZiBkaWZmZXJlbnQgY29s
b3JzLjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJyZWYiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRl
c3QiPjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2E5OHJnYi0wMDQtZXhwZWN0ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtY29sb3IvYTk4cmdiLTAwNC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9h
OThyZ2ItMDA0LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIENvbG9y
IDQ6IENTUyBDb2xvciA0OiBhOTgtcmdiPC90aXRsZT4KKzxzdHlsZT4KKyAgICAudGVzdCB7IGJh
Y2tncm91bmQtY29sb3I6IGxhYig4My4yMTQxJSAtMTI5LjEwNzIgODcuMTcxOCk7IHdpZHRoOiAx
MmVtOyBoZWlnaHQ6IDEyZW07IH0gLyogY29sb3IoYTk4LXJnYiAwIDEgMCkgY29udmVydGVkIHRv
IExhYiAqLworPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUg
YSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xv
cnMuPC9wPgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2E5
OHJnYi0wMDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvYTk4cmdiLTAwNC5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9hOThyZ2ItMDA0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIENvbG9y
IDQ6IGE5OC1yZ2I8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJTYW0gV2Vpbmln
IiBocmVmPSJtYWlsdG86d2VpbmlnQGFwcGxlLmNvbSI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jdmFsZGVmLWNvbG9yLWE5OC1y
Z2IiPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYTk4cmdiLTAwNC1yZWYuaHRtbCI+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9ImE5OC1yZ2Igd2l0aCBubyBhbHBoYSI+Cis8c3R5bGU+
CisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6
IDZlbTsgbWFyZ2luLXRvcDogMDsgfQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsYWIo
ODMuMjE0MSUgLTEyOS4xMDcyIDg3LjE3MTgpOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiA2ZW07IG1h
cmdpbi1ib3R0b206IDA7IH0gLyogY29sb3IoYTk4LXJnYiAwIDEgMCkgY29udmVydGVkIHRvIExh
YiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoYTk4LXJnYiAwIDEgMCk7
IH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2lu
Z2xlIHNxdWFyZSwgYW5kIG5vdCB0d28gcmVjdGFuZ2xlcyBvZiBkaWZmZXJlbnQgY29sb3JzLjwv
cD4KKyAgICA8ZGl2IGNsYXNzPSJyZWYiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwv
ZGl2PgorPC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>