<?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>221073</bug_id>
          
          <creation_ts>2021-01-27 18:30:41 -0800</creation_ts>
          <short_desc>Sort colors alphabetically</short_desc>
          <delta_ts>2021-01-28 12:51:17 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1723248</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-27 18:30:41 -0800</bug_when>
    <thetext>Sort colors in ColorTypes.h alphabetically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723249</commentid>
    <comment_count>1</comment_count>
      <attachid>418605</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-27 18:31:59 -0800</bug_when>
    <thetext>Created attachment 418605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723431</commentid>
    <comment_count>2</comment_count>
      <attachid>418658</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 11:46:07 -0800</bug_when>
    <thetext>Created attachment 418658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723433</commentid>
    <comment_count>3</comment_count>
      <attachid>418659</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 11:49:52 -0800</bug_when>
    <thetext>Created attachment 418659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723435</commentid>
    <comment_count>4</comment_count>
      <attachid>418659</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-28 11:56:09 -0800</bug_when>
    <thetext>Comment on attachment 418659
Patch

I endorse the alphabetical order regime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723437</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-28 11:56:46 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 418659 [details]
&gt; Patch
&gt; 
&gt; I endorse the alphabetical order regime

:).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723461</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-28 12:50:15 -0800</bug_when>
    <thetext>Committed r272033: &lt;https://trac.webkit.org/changeset/272033&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418659.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723462</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-28 12:51:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/73720515&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418605</attachid>
            <date>2021-01-27 18:31:59 -0800</date>
            <delta_ts>2021-01-28 11:46:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pa.diff</filename>
            <type>text/plain</type>
            <size>15555</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAxLTI3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTb3J0IGNvbG9ycyBpbiBDb2xvclR5
cGVzLmggYWxwaGFiZXRpY2FsbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oOgorICAgICAgICBT
b3J0IHRoaW5ncyBhIGJpdCBtb3JlIGFscGhhYmV0aWNhbGx5LgorCiAyMDIxLTAxLTI3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBsaW5rIElPU3VyZmFj
ZUFjY2VsZXJhdG9yIG9uIHNpbXVsYXRvciBidWlsZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI3MTk5NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTA2ICszMSwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRl
PHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVu
ZGVkU1JHQkE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwotdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNSR0JBOwotdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBEaXNwbGF5UDM7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckRp
c3BsYXlQMzsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQTk4UkdCOwotdGVtcGxhdGU8dHlw
ZW5hbWU+IHN0cnVjdCBMaW5lYXJBOThSR0I7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExh
YjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTENIQTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgSFNMQTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaOwotCiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IEFscGhhVHJhaXRzOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRy
YWl0czx1aW50OF90PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHRyYW5zcGFyZW50
ID0gMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qgb3BhcXVlID0gMjU1OwotfTsKLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGZsb2F0IHRyYW5zcGFyZW50ID0gMC4wZjsKLSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0
IG9wYXF1ZSA9IDEuMGY7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JD
b21wb25lbnRSYW5nZSB7Ci0gICAgVCBtaW47Ci0gICAgVCBtYXg7Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IFJHQk1vZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xv
ckNvbXBvbmVudFJhbmdlOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5UDM7CiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw7Ci10ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IExhYk1vZGVsOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMQ0hNb2Rl
bDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQTsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgSFNMQTsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSFNMTW9kZWw7
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSEE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IExDSE1vZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWI7Cit0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IExhYk1vZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5l
YXJBOThSR0I7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckRpc3BsYXlQMzsKK3Rl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdCQTsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgTGluZWFyU1JHQkE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFJH
Qk1vZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsKK3RlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgWFlaOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBYWVpNb2RlbDsKIAot
dGVtcGxhdGU8PiBzdHJ1Y3QgUkdCTW9kZWw8dWludDhfdD4gewotICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPHVpbnQ4X3Q+LCAzPiByYW5nZXMgeyB7
Ci0gICAgICAgIHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwg
MjU1IH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9
IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDxmbG9hdD4gewotICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4g
cmFuZ2VzIHsgewotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAgeyAwLCAxIH0sCi0gICAgICAg
IHsgMCwgMSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGli
bGUgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDxmbG9h
dD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkg
fSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IExhYk1vZGVsPGZs
b2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFu
Z2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgp
IH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRl
PD4gc3RydWN0IExDSE1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFy
cmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsg
MCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAw
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IDAs
IDM2MCB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUg
PSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhTTE1vZGVsPGZsb2F0PiB7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAz
PiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMzYwIH0sCi0gICAgICAgIHsgMCwgMTAwIH0sCi0g
ICAgICAgIHsgMCwgMTAwIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBYWVpNb2RlbDxmbG9h
dD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdl
PGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkg
fSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0ludmVydGlibGUgPSBmYWxzZTsKLX07CiAKKy8vIE1BUks6IE1ha2UgZnVuY3Rpb25zLgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvclR5
cGUgbWFrZUZyb21Db21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYykKIHsKQEAg
LTE3MywyMiArOTYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29tcG9uZW50
VAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBD
b2xvckNvbXBvbmVudHM8VD4gY2xhbXBlZENvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRz
PFQ+JiBjb21wb25lbnRzKQogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNsYW1wZWRDb21wb25l
bnQ8Q29sb3JUeXBlLCAwPihjb21wb25lbnRzKSwKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxD
b2xvclR5cGUsIDE+KGNvbXBvbmVudHMpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9y
VHlwZSwgMj4oY29tcG9uZW50cyksCi0gICAgICAgIGNsYW1wZWRBbHBoYShjb21wb25lbnRzWzNd
KQotICAgIH07CisgICAgcmV0dXJuIHsgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDA+KGNv
bXBvbmVudHMpLCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oY29tcG9uZW50cyksIGNs
YW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAyPihjb21wb25lbnRzKSwgY2xhbXBlZEFscGhhKGNv
bXBvbmVudHNbM10pIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5h
bWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBjbGFtcGVkQ29tcG9uZW50c0V4Y2Vw
dEFscGhhKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cykKIHsKLSAgICByZXR1
cm4gewotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMD4oY29tcG9uZW50cyks
Ci0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihjb21wb25lbnRzKSwKLSAg
ICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGNvbXBvbmVudHMpLAotICAgICAg
ICBjb21wb25lbnRzWzNdCi0gICAgfTsKKyAgICByZXR1cm4geyBjbGFtcGVkQ29tcG9uZW50PENv
bG9yVHlwZSwgMD4oY29tcG9uZW50cyksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihj
b21wb25lbnRzKSwgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGNvbXBvbmVudHMpLCBj
b21wb25lbnRzWzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5h
bWUgVD4gY29uc3RleHByIENvbG9yVHlwZSBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZyhjb25z
dCBDb2xvckNvbXBvbmVudHM8VD4mIGNvbXBvbmVudHMpCkBAIC0xOTgsMjIgKzExMSwxMiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQ+CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yVHlwZSBtYWtlRnJvbUNv
bXBvbmVudHNDbGFtcGluZyhUIGMxLCBUIGMyLCBUIGMzKQogewotICAgIHJldHVybiBtYWtlRnJv
bUNvbXBvbmVudHM8Q29sb3JUeXBlPihDb2xvckNvbXBvbmVudHMgewotICAgICAgICBjbGFtcGVk
Q29tcG9uZW50PENvbG9yVHlwZSwgMD4oYzEpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENv
bG9yVHlwZSwgMT4oYzIpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMj4o
YzMpLAotICAgICAgICBBbHBoYVRyYWl0czx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5
cGU+OjpvcGFxdWUKLSAgICB9KTsKKyAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzPENvbG9y
VHlwZT4oQ29sb3JDb21wb25lbnRzIHsgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDA+KGMx
KSwgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDE+KGMyKSwgY2xhbXBlZENvbXBvbmVudDxD
b2xvclR5cGUsIDI+KGMzKSwgQWxwaGFUcmFpdHM8dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25l
bnRUeXBlPjo6b3BhcXVlIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5
cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvclR5cGUgbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmco
VCBjMSwgVCBjMiwgVCBjMywgVCBhbHBoYSkKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25l
bnRzPENvbG9yVHlwZT4oQ29sb3JDb21wb25lbnRzIHsKLSAgICAgICAgY2xhbXBlZENvbXBvbmVu
dDxDb2xvclR5cGUsIDA+KGMxKSwKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUs
IDE+KGMyKSwKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGMzKSwKLSAg
ICAgICAgY2xhbXBlZEFscGhhPFQsIHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4o
YWxwaGEpCi0gICAgfSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxDb2xvclR5cGU+
KENvbG9yQ29tcG9uZW50cyB7IGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAwPihjMSksIGNs
YW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihjMiksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JU
eXBlLCAyPihjMyksIGNsYW1wZWRBbHBoYTxULCB0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVu
dFR5cGU+KGFscGhhKSB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBl
bmFtZSBUPiBjb25zdGV4cHIgQ29sb3JUeXBlIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhj
ZXB0QWxwaGEoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21wb25lbnRzKQpAQCAtMjIzLDE0
ICsxMjYsODkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBUPgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFscGhhPiBj
b25zdGV4cHIgQ29sb3JUeXBlIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGEo
VCBjMSwgVCBjMiwgVCBjMywgQWxwaGEgYWxwaGEpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29t
cG9uZW50czxDb2xvclR5cGU+KENvbG9yQ29tcG9uZW50cyB7Ci0gICAgICAgIGNsYW1wZWRDb21w
b25lbnQ8Q29sb3JUeXBlLCAwPihjMSksCi0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JU
eXBlLCAxPihjMiksCi0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAyPihjMyks
Ci0gICAgICAgIGFscGhhCi0gICAgfSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxD
b2xvclR5cGU+KENvbG9yQ29tcG9uZW50cyB7IGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAw
PihjMSksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihjMiksIGNsYW1wZWRDb21wb25l
bnQ8Q29sb3JUeXBlLCAyPihjMyksIGFscGhhIH0pOwogfQogCisvLyBNQVJLOiAtIE1vZGVscwor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czxmbG9hdD4geworICAgIHN0YXRpYyBjb25z
dGV4cHIgZmxvYXQgdHJhbnNwYXJlbnQgPSAwLjBmOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxv
YXQgb3BhcXVlID0gMS4wZjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPHVp
bnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdHJhbnNwYXJlbnQgPSAwOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBvcGFxdWUgPSAyNTU7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRSYW5nZSB7CisgICAgVCBtaW47Cisg
ICAgVCBtYXg7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFeHRlbmRlZFJHQk1vZGVsPGZsb2F0
PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8
ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9
LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSFNMTW9kZWw8Zmxv
YXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5n
ZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAzNjAgfSwKKyAgICAgICAgeyAw
LCAxMDAgfSwKKyAgICAgICAgeyAwLCAxMDAgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IExh
Yk1vZGVsPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29t
cG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgMCwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9CisgICAgfSB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IExDSE1vZGVsPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Cisg
ICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAg
ICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAg
ICAgICB7IDAsIDM2MCB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lu
dmVydGlibGUgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPGZsb2F0
PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8
ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgMCwgMSB9LAorICAgICAgICB7IDAsIDEg
fSwKKyAgICAgICAgeyAwLCAxIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW52ZXJ0aWJsZSA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDx1
aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50
UmFuZ2U8dWludDhfdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAyNTUgfSwKKyAgICAg
ICAgeyAwLCAyNTUgfSwKKyAgICAgICAgeyAwLCAyNTUgfQorICAgIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IFhZWk1vZGVsPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENv
bG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgLXN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwK
KyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwogI2lmIEFTU0VSVF9F
TkFCTEVECiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciB2b2lkIGFzc2VydEluUmFu
Z2UoVCBjb2xvcikKQEAgLTMyOCwyMCArMzA2LDEzIEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBDb2xvclQKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBj
LmFscGhhIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTUkdCQSA6IFJHQkFU
eXBlPFNSR0JBLCBULCBSR0JNb2RlbDxUPj4gewotICAgIHVzaW5nIFJHQkFUeXBlPFNSR0JBLCBU
LCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0g
TGluZWFyU1JHQkE8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBD
b2xvclNwYWNlOjpTUkdCIH07Ci19OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwg
VCwgVCkgLT4gU1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJT
UkdCQSA6IFJHQkFUeXBlPExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj4gewotICAgIHVzaW5n
IFJHQkFUeXBlPExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVz
aW5nIEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gU1JHQkE8VD47Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpMaW5lYXJSR0I7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQTk4UkdCIDogUkdCQVR5cGU8QTk4UkdCLCBULCBSR0JNb2RlbDxU
Pj4geworICAgIHVzaW5nIFJHQkFUeXBlPEE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlw
ZTsKKyAgICB1c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhckE5OFJHQjxUPjsKKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkE5OFJHQjsKIH07
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJTUkdCQShULCBULCBULCBUKSAtPiBMaW5lYXJT
UkdCQTxUPjsKLQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCKFQsIFQsIFQsIFQpIC0+IEE5
OFJHQjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4dGVuZGVkU1JHQkEgOiBS
R0JBVHlwZTxFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+PiB7CiAgICAgdXNp
bmcgUkdCQVR5cGU8RXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFU
eXBlOwpAQCAtMzQ5LDE5ICszMjAsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4
dGVuZGVkU1JHQgogfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEV4dGVuZGVkU1JHQkEoVCwgVCwg
VCwgVCkgLT4gRXh0ZW5kZWRTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IExpbmVhckV4dGVuZGVkU1JHQkEgOiBSR0JBVHlwZTxMaW5lYXJFeHRlbmRlZFNSR0JBLCBULCBF
eHRlbmRlZFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyRXh0ZW5kZWRT
UkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIEdhbW1h
RW5jb2RlZENvdW50ZXJwYXJ0ID0gRXh0ZW5kZWRTUkdCQTxUPjsKLX07Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBMaW5lYXJFeHRlbmRlZFNSR0JBKFQsIFQsIFQsIFQpIC0+IExpbmVhckV4dGVuZGVk
U1JHQkE8VD47Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6IFJH
QkFUeXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKLSAgICB1c2luZyBSR0JBVHlwZTxE
aXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0gICAgdXNpbmcgTGluZWFyQ291
bnRlcnBhcnQgPSBMaW5lYXJEaXNwbGF5UDM8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpEaXNwbGF5UDM7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgTGluZWFyQTk4UkdCIDogUkdCQVR5cGU8TGluZWFyQTk4UkdCLCBULCBSR0JNb2Rl
bDxUPj4geworICAgIHVzaW5nIFJHQkFUeXBlPExpbmVhckE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+
OjpSR0JBVHlwZTsKKyAgICB1c2luZyBHYW1tYUVuY29kZWRDb3VudGVycGFydCA9IEE5OFJHQjxU
PjsKIH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlz
cGxheVAzPFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyQTk4UkdCKFQsIFQsIFQsIFQp
IC0+IExpbmVhckE5OFJHQjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVh
ckRpc3BsYXlQMyA6IFJHQkFUeXBlPExpbmVhckRpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsK
ICAgICB1c2luZyBSR0JBVHlwZTxMaW5lYXJEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdC
QVR5cGU7CkBAIC0zNjksMjAgKzMzMiwzMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
TGluZWFyRGlzcGxhCiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRGlzcGxheVAzKFQs
IFQsIFQsIFQpIC0+IExpbmVhckRpc3BsYXlQMzxUPjsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkEgOiBSR0JBVHlwZTxMaW5lYXJFeHRlbmRlZFNSR0JB
LCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyRXh0
ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5n
IEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gRXh0ZW5kZWRTUkdCQTxUPjsKK307Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBMaW5lYXJFeHRlbmRlZFNSR0JBKFQsIFQsIFQsIFQpIC0+IExpbmVhckV4
dGVuZGVkU1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBOThSR0IgOiBS
R0JBVHlwZTxBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8QTk4
UkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50ZXJw
YXJ0ID0gTGluZWFyQTk4UkdCPFQ+OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNw
YWNlID0gQ29sb3JTcGFjZTo6QTk4UkdCOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExp
bmVhclNSR0JBIDogUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAg
dXNpbmcgUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Cisg
ICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBTUkdCQTxUPjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkxpbmVhclJHQjsKIH07Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThSR0IoVCwgVCwgVCwgVCkgLT4gQTk4UkdCPFQ+OwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyU1JHQkEoVCwgVCwgVCwgVCkgLT4gTGluZWFyU1JHQkE8
VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJBOThSR0IgOiBSR0JBVHlw
ZTxMaW5lYXJBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8TGlu
ZWFyQTk4UkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIEdhbW1hRW5j
b2RlZENvdW50ZXJwYXJ0ID0gQTk4UkdCPFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IFNSR0JBIDogUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdC
QVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgTGluZWFy
Q291bnRlcnBhcnQgPSBMaW5lYXJTUkdCQTxUPjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Y29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsKIH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBMaW5lYXJBOThSR0IoVCwgVCwgVCwgVCkgLT4gTGluZWFyQTk4UkdCPFQ+OwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4gU1JHQkE8VD47CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JBVHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1v
ZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj46
OlJHQkFUeXBlOworICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRGlzcGxheVAz
PFQ+OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6
RGlzcGxheVAzOworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBU
KSAtPiBEaXNwbGF5UDM8VD47CiAKIC8vIE1BUks6IC0gTGFiIENvbG9yIFR5cGUuCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418658</attachid>
            <date>2021-01-28 11:46:07 -0800</date>
            <delta_ts>2021-01-28 11:49:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pa.diff</filename>
            <type>text/plain</type>
            <size>68399</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAxLTI3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTb3J0IGNvbG9ycyBhbHBoYWJldGlj
YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBj
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clR5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAg
ICAgU29ydCB0aGluZ3MgYSBiaXQgbW9yZSBhbHBoYWJldGljYWxseS4KKwogMjAyMS0wMS0yOCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBj
bG9zZXN0U25hcE9mZnNldCBhIG1ldGhvZCBvbiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lvbiAyNzE5OTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTQwMywxMiArMTQwMywxMyBAQCBsYXN0CiAvLyBjb2xvci1nYW11dAogcDMKIHJlYzIwMjAK
K3NSR0IKIAogLy8gY29sb3IoKSBmdW5jdGlvbgotc1JHQgotZGlzcGxheS1wMwogYTk4LXJnYgor
ZGlzcGxheS1wMwogLy8gbGFiCisvLyBzUkdCCiAKIC8vIHByZWZlcnMtZGVmYXVsdC1hcHBlYXJh
bmNlCiBwcmVmZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VySGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNzE5OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3Nyw3ICs4NzcsNyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VMQ0hQYXJhbWV0
ZXJzKENTU1BhcnNlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+CiBzdGF0aWMgQ29sb3Ig
cGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykK
IHsKLSAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVNSR0IgfHwgYXJncy5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZURpc3BsYXlQMyB8fCBhcmdzLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlQTk4UmdiKTsKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUE5
OFJnYiB8fCBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRGlzcGxheVAzIHx8IGFyZ3MucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVTUkdCKTsKICAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CiAK
ICAgICBkb3VibGUgY2hhbm5lbHNbM10gPSB7IDAsIDAsIDAgfTsKQEAgLTkzNSwxOCArOTM1LDE4
IEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0ZXIKIAogICAgIENvbG9y
IGNvbG9yOwogICAgIHN3aXRjaCAoYXJncy5wZWVrKCkuaWQoKSkgewotICAgIGNhc2UgQ1NTVmFs
dWVTUkdCOgotICAgICAgICBjb2xvciA9IHBhcnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cGVzPFNS
R0JBPGZsb2F0Pj4oYXJncyk7CisgICAgY2FzZSBDU1NWYWx1ZUE5OFJnYjoKKyAgICAgICAgY29s
b3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JUeXBlczxBOThSR0I8ZmxvYXQ+PihhcmdzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZURpc3BsYXlQMzoKICAgICAgICAgY29s
b3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JUeXBlczxEaXNwbGF5UDM8ZmxvYXQ+Pihhcmdz
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUE5OFJnYjoKLSAgICAgICAgY29s
b3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JUeXBlczxBOThSR0I8ZmxvYXQ+PihhcmdzKTsK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUxhYjoKICAgICAgICAgY29sb3IgPSBw
YXJzZUNvbG9yRnVuY3Rpb25Gb3JMYWJQYXJhbWV0ZXJzKGFyZ3MpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1ZhbHVlU1JHQjoKKyAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rp
b25Gb3JSR0JUeXBlczxTUkdCQTxmbG9hdD4+KGFyZ3MpOworICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkocmV2aXNp
b24gMjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252
ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjIgKzMyLDI0IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgotLy8g
aHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRy
aXguaHRtbAotc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhclNS
R0JNYXRyaXggewotICAgICAzLjI0MDQ1NDJmLCAtMS41MzcxMzg1ZiwgLTAuNDk4NTMxNGYsCi0g
ICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwKLSAgICAgMC4wNTU2NDM0
ZiwgLTAuMjA0MDI1OWYsICAxLjA1NzIyNTJmCisvLyBBOThSR0IgTWF0cmljZXMuCisKKy8vIGh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQor
c3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhckE5OFJHQk1hdHJp
eCB7CisgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYxNzkxOTEyMzlmLCAtMC40
MDI3MTA3ODQ0NTA3MTY4ZiwKKyAgICAtMC44Mjk0ODg5Njk1NjE1NzQ3ZiwgIDEuNzYyNjY0MDYw
MzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0MzZmLAorICAgICAwLjAzNTg0NTgzMDI0Mzc4NDVm
LCAtMC4wNzYxNzIzODkyNjgwNDE4ZiwgIDAuOTU2ODg0NTI0MDA3Njg3MmYKIH07CiAKLS8vIGh0
dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKLS8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5k
Ymxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKLXN0YXRpYyBjb25z
dGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyU1JHQlRvWFlaTWF0cml4IHsKLSAgICAwLjQx
MjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsCi0gICAgMC4yMTI2NzI5ZiwgIDAuNzE1
MTUyMmYsICAwLjA3MjE3NTBmLAotICAgIDAuMDE5MzMzOWYsICAwLjExOTE5MjBmLCAgMC45NTAz
MDQxZgorLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVy
c2lvbi1jb2RlCitzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckE5OFJH
QlRvWFlaTWF0cml4IHsKKyAgICAwLjU3NjY2OTA0MjkxMDEzMDVmLCAgIDAuMTg1NTU4MjM3OTA2
NTQ2M2YsICAgMC4xODgyMjg2NDYyMzQ5OTQ3ZiwKKyAgICAwLjI5NzM0NDk3NTI1MDUzNjA1Ziwg
IDAuNjI3MzYzNTY2MjU1NDY2MWYsICAgMC4wNzUyOTE0NTg0OTM5OTc4OGYsCisgICAgMC4wMjcw
MzEzNjEzODY0MTIzNGYsICAwLjA3MDY4ODg1MjUzNTgyNzIzZiwgIDAuOTkxMzM3NTM2ODM3NjM4
OGYKIH07CiAKKy8vIERpc3BsYXlQMyBNYXRyaWNlcy4KKwogLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiBzdGF0aWMgY29uc3RleHBy
IENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKICAgICAgMi40
OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3OTE5MTIzOWYsIC0wLjQwMjcxMDc4NDQ1MDcx
NjhmLApAQCAtNjIsMjAgKzY0LDI2IEBAIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8Mywg
Mz4gbGluZWEKICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAx
LjA0Mzk0NDM2ODkwMDk3NmYKIH07CiAKLS8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
Y29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJp
eDwzLCAzPiB4eXpUb0xpbmVhckE5OFJHQk1hdHJpeCB7Ci0gICAgIDIuNDkzNDk2OTExOTQxNDI1
ZiwgIC0wLjkzMTM4MzYxNzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKLSAgICAtMC44
Mjk0ODg5Njk1NjE1NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0
MzZmLAotICAgICAwLjAzNTg0NTgzMDI0Mzc4NDVmLCAtMC4wNzYxNzIzODkyNjgwNDE4ZiwgIDAu
OTU2ODg0NTI0MDA3Njg3MmYKKy8vIHNSR0IgTWF0cmljZXMuCisKKy8vIGh0dHBzOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL1NSR0IKKy8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2lu
ZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKK3N0YXRpYyBjb25zdGV4cHIgQ29sb3JN
YXRyaXg8MywgMz4geHl6VG9MaW5lYXJTUkdCTWF0cml4IHsKKyAgICAgMy4yNDA0NTQyZiwgLTEu
NTM3MTM4NWYsIC0wLjQ5ODUzMTRmLAorICAgIC0wLjk2OTI2NjBmLCAgMS44NzYwMTA4ZiwgIDAu
MDQxNTU2MGYsCisgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZgogfTsK
IAotLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lv
bi1jb2RlCi1zdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckE5OFJHQlRv
WFlaTWF0cml4IHsKLSAgICAwLjU3NjY2OTA0MjkxMDEzMDVmLCAgIDAuMTg1NTU4MjM3OTA2NTQ2
M2YsICAgMC4xODgyMjg2NDYyMzQ5OTQ3ZiwKLSAgICAwLjI5NzM0NDk3NTI1MDUzNjA1ZiwgIDAu
NjI3MzYzNTY2MjU1NDY2MWYsICAgMC4wNzUyOTE0NTg0OTM5OTc4OGYsCi0gICAgMC4wMjcwMzEz
NjEzODY0MTIzNGYsICAwLjA3MDY4ODg1MjUzNTgyNzIzZiwgIDAuOTkxMzM3NTM2ODM3NjM4OGYK
Ky8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKKy8vIGh0dHA6Ly93d3cuYnJ1
Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKK3N0YXRp
YyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyU1JHQlRvWFlaTWF0cml4IHsKKyAg
ICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsCisgICAgMC4yMTI2NzI5Ziwg
IDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLAorICAgIDAuMDE5MzMzOWYsICAwLjExOTE5MjBmLCAg
MC45NTAzMDQxZgogfTsKIAorLy8gQ2hyb21hdGljIEFkYXB0YXRpb24gTWF0cmljZXMuCisKIC8v
IGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX0Nocm9tQWRhcHQu
aHRtbAogc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBENTBUb0Q2NU1hdHJpeCB7
CiAgICAgIDAuOTU1NTc2NmYsIC0wLjAyMzAzOTNmLCAwLjA2MzE2MzZmLApAQCAtOTAsNyArOTgs
MjkgQEAgc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBENjVUbwogICAgIC0wLjAw
OTIzNDVmLCAwLjAxNTA0MzZmLCAgMC43NTIxMzE2ZgogfTsKIAotLy8gR2FtbWEgY29udmVyc2lv
bnMuCisvLyBNQVJLOiBHYW1tYSBjb252ZXJzaW9ucy4KKworZmxvYXQgQTk4UkdCVHJhbnNmZXJG
dW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGZsb2F0IGMpCit7CisgICAgcmV0dXJuIGNsYW1w
VG88ZmxvYXQ+KGZyb21MaW5lYXJOb25DbGFtcGluZyhjKSwgMCwgMSk7Cit9CisKK2Zsb2F0IEE5
OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBy
ZXR1cm4gY2xhbXBUbzxmbG9hdD4odG9MaW5lYXJOb25DbGFtcGluZyhjKSwgMCwgMSk7Cit9CisK
K2Zsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9h
dCBjKQoreworICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6IDEuMGY7
CisgICAgcmV0dXJuIHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMuMGYpICogc2ln
bjsKK30KKworZmxvYXQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJOb25DbGFtcGlu
ZyhmbG9hdCBjKQoreworICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4wZiA6
IDEuMGY7CisgICAgcmV0dXJuIHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCA1NjMuMGYgLyAyNTYuMGYp
ICogc2lnbjsKK30KIAogZmxvYXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJDbGFt
cGluZyhmbG9hdCBjKQogewpAQCAtMTMwLDI4ICsxNjAsNiBAQCBmbG9hdCBTUkdCVHJhbnNmZXJG
dW5jdGlvbjo6dG9MaW5lYXJOb25DCiAgICAgcmV0dXJuIHN0ZDo6cG93KChjICsgMC4wNTVmKSAv
IDEuMDU1ZiwgMi40ZikgKiBzaWduOwogfQogCi1mbG9hdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9u
Ojpmcm9tTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKLXsKLSAgICByZXR1cm4gY2xhbXBUbzxmbG9h
dD4oZnJvbUxpbmVhck5vbkNsYW1waW5nKGMpLCAwLCAxKTsKLX0KLQotZmxvYXQgQTk4UkdCVHJh
bnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJDbGFtcGluZyhmbG9hdCBjKQotewotICAgIHJldHVybiBj
bGFtcFRvPGZsb2F0Pih0b0xpbmVhck5vbkNsYW1waW5nKGMpLCAwLCAxKTsKLX0KLQotZmxvYXQg
QTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhck5vbkNsYW1waW5nKGZsb2F0IGMpCi17
Ci0gICAgZmxvYXQgc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsKLSAgICBy
ZXR1cm4gc3RkOjpwb3coc3RkOjphYnMoYyksIDI1Ni4wZiAvIDU2My4wZikgKiBzaWduOwotfQot
Ci1mbG9hdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhck5vbkNsYW1waW5nKGZsb2F0
IGMpCi17Ci0gICAgZmxvYXQgc2lnbiA9IHN0ZDo6c2lnbmJpdChjKSA/IC0xLjBmIDogMS4wZjsK
LSAgICByZXR1cm4gc3RkOjpwb3coc3RkOjphYnMoYyksIDU2My4wZiAvIDI1Ni4wZikgKiBzaWdu
OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2ZlckZ1bmN0aW9uLCB0eXBlbmFtZSBUPiBz
dGF0aWMgYXV0byB0b0xpbmVhckNsYW1waW5nKGNvbnN0IFQmIGNvbG9yKSAtPiB0eXBlbmFtZSBU
OjpMaW5lYXJDb3VudGVycGFydAogewogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNv
bG9yOwpAQCAtMTc2LDE5ICsxODQsMjMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5j
dGlvbiwgdHlwZQogICAgIHJldHVybiB7IFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25D
bGFtcGluZyhjMSksIFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhjMiks
IFRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25DbGFtcGluZyhjMyksIGFscGhhIH07CiB9
CiAKLUxpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYg
Y29sb3IpCisvLyBBOThSR0IgPC0+IExpbmVhckE5OFJHQiBjb252ZXJzaW9ucy4KKworTGluZWFy
QTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikK
IHsKLSAgICByZXR1cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29s
b3IpOworICAgIHJldHVybiB0b0xpbmVhckNsYW1waW5nPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb24+
KGNvbG9yKTsKIH0KIAotTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRl
ZFNSR0JBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK0E5OFJHQjxmbG9hdD4g
dG9BOThSR0IoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJu
IHRvTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICBy
ZXR1cm4gZnJvbUxpbmVhckNsYW1waW5nPEE5OFJHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsK
IH0KIAotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xv
cikKKy8vIEE5OFJHQiA8LT4gTGluZWFyQTk4UkdCIGNvbnZlcnNpb25zLgorCitMaW5lYXJFeHRl
bmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdC
QTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBpbmc8U1JHQlRy
YW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXJOb25DbGFtcGluZzxT
UkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOwogfQogCiBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0
b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQpA
QCAtMTk2LDYgKzIwOCwxOCBAQCBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEo
Y29uCiAgICAgcmV0dXJuIGZyb21MaW5lYXJOb25DbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlv
bj4oY29sb3IpOwogfQogCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBT
UkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b0xpbmVhckNsYW1waW5nPFNSR0JU
cmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cit9CisKKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29u
c3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gZnJvbUxpbmVhckNs
YW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7Cit9CisKKwogTGluZWFyRGlzcGxh
eVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xv
cikKIHsKICAgICByZXR1cm4gdG9MaW5lYXJDbGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4o
Y29sb3IpOwpAQCAtMjA2LDI4ICsyMzAsMzAgQEAgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYQogICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBpbmc8U1JHQlRyYW5zZmVy
RnVuY3Rpb24+KGNvbG9yKTsKIH0KIAotTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJH
Qihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKKy8vIE1BUks6IE1hdHJpeCBjb252ZXJzaW9u
cyAodG8gYW5kIGZyb20gWFlaIGZvciBhbGwgbGluZWFyIGNvbG9yIHR5cGVzKS4KKworLy8gLSBM
aW5lYXJBOThSR0IgbWF0cml4IGNvbnZlcnNpb25zLgorCitMaW5lYXJBOThSR0I8ZmxvYXQ+IHRv
TGluZWFyQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9M
aW5lYXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyQTk4UkdCPGZsb2F0
Pj4oeHl6VG9MaW5lYXJBOThSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXND
b2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLUE5OFJHQjxmbG9hdD4gdG9BOThSR0IoY29u
c3QgTGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
TGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGZyb21MaW5lYXJDbGFt
cGluZzxBOThSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CisgICAgcmV0dXJuIG1ha2VGcm9t
Q29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+KGxpbmVhckE5OFJHQlRv
WFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNv
bG9yKSkpOwogfQogCi0vLyBNYXRyaXggY29udmVyc2lvbnMgKHRvIGFuZCBmcm9tIFhZWiBmb3Ig
YWxsIGxpbmVhciBjb2xvciB0eXBlcykuCi0KLS8vIC0gTGluZWFyU1JHQkEgbWF0cml4IGNvbnZl
cnNpb25zLgorLy8gLSBMaW5lYXJEaXNwbGF5UDMgbWF0cml4IGNvbnZlcnNpb25zLgogCi1MaW5l
YXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+
JiBjb2xvcikKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRB
bHBoYTxMaW5lYXJTUkdCQTxmbG9hdD4+KHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1l
ZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKKyAgICByZXR1cm4g
bWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJEaXNwbGF5UDM8Zmxv
YXQ+Pih4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
TGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29t
cG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+KGxpbmVhclNSR0JUb1hZWk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikp
KTsKKyAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpB
PGZsb2F0Pj4obGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBv
bmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKIC8vIC0gTGluZWFyRXh0ZW5k
ZWRTUkdCQSBtYXRyaXggY29udmVyc2lvbnMuCkBAIC0yNDIsNDMgKzI2OCwxMTggQEAgWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckV4dGVuZGVkUwogICAgIHJldHVybiBtYWtlRnJvbUNv
bXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihsaW5lYXJTUkdCVG9YWVpN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7CiB9CiAKLS8vIC0gTGluZWFyRGlzcGxheVAzIG1hdHJpeCBjb252ZXJzaW9ucy4KKy8vIC0g
TGluZWFyU1JHQkEgbWF0cml4IGNvbnZlcnNpb25zLgogCi1MaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+
IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhclNSR0JB
PGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICBy
ZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJEaXNwbGF5
UDM8ZmxvYXQ+Pih4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKKyAgICByZXR1cm4gbWFrZUZyb21D
b21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJTUkdCQTxmbG9hdD4+KHh5elRvTGlu
ZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50
cyhjb2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4mIGNvbG9yKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZs
b2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhj
ZXB0QWxwaGE8WFlaQTxmbG9hdD4+KGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4LnRyYW5zZm9y
bWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVy
biBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihsaW5l
YXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBv
bmVudHMoY29sb3IpKSk7CiB9CiAKLS8vIC0gTGluZWFyQTk4UkdCIG1hdHJpeCBjb252ZXJzaW9u
cy4KKy8vIE1BUks6IENocm9tYXRpYyBBZGFwdGF0aW9uIGNvbnZlcnNpb25zLgogCi1MaW5lYXJB
OThSR0I8ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3N0
YXRpYyBYWVpBPGZsb2F0PiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9pbnRUb0Q2NVdoaXRlUG9pbnQo
Y29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVu
dHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhckE5OFJHQjxmbG9hdD4+KHh5elRvTGluZWFyQTk4
UkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNv
bG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhh
PFhZWkE8ZmxvYXQ+PihENTBUb0Q2NU1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhh
c0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0
IExpbmVhckE5OFJHQjxmbG9hdD4mIGNvbG9yKQorc3RhdGljIFhZWkE8ZmxvYXQ+IGNvbnZlcnRG
cm9tRDY1V2hpdGVQb2ludFRvRDUwV2hpdGVQb2ludChjb25zdCBYWVpBPGZsb2F0PiYgY29sb3Ip
CiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFla
QTxmbG9hdD4+KGxpbmVhckE5OFJHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBv
bmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihENjVUb0Q1ME1hdHJpeC50cmFu
c2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAot
Ly8gQ2hyb21hdGljIEFkYXB0YXRpb24gY29udmVyc2lvbnMuCisvLyBNQVJLOiBIU0wgY29udmVy
c2lvbnMuCiAKLXN0YXRpYyBYWVpBPGZsb2F0PiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9pbnRUb0Q2
NVdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorSFNMQTxmbG9hdD4gdG9IU0xB
KGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9u
ZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+KEQ1MFRvRDY1TWF0cml4LnRyYW5z
Zm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworICAgIC8v
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgorICAgIGF1dG8g
W3IsIGcsIGIsIGFscGhhXSA9IGNvbG9yOworCisgICAgYXV0byBbbWluLCBtYXhdID0gc3RkOjpt
aW5tYXgoeyByLCBnLCBiIH0pOworICAgIGZsb2F0IGNocm9tYSA9IG1heCAtIG1pbjsKKworICAg
IGZsb2F0IGh1ZTsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgaHVlID0gMDsKKyAgICBlbHNl
IGlmIChtYXggPT0gcikKKyAgICAgICAgaHVlID0gKDYwLjBmICogKChnIC0gYikgLyBjaHJvbWEp
KSArIDM2MC4wZjsKKyAgICBlbHNlIGlmIChtYXggPT0gZykKKyAgICAgICAgaHVlID0gKDYwLjBm
ICogKChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4wZjsKKyAgICBlbHNlCisgICAgICAgIGh1ZSA9
ICg2MC4wZiAqICgociAtIGcpIC8gY2hyb21hKSkgKyAyNDAuMGY7CisKKyAgICBpZiAoaHVlID49
IDM2MC4wZikKKyAgICAgICAgaHVlIC09IDM2MC4wZjsKKworICAgIGh1ZSAvPSAzNjAuMGY7CisK
KyAgICBmbG9hdCBsaWdodG5lc3MgPSAwLjVmICogKG1heCArIG1pbik7CisgICAgZmxvYXQgc2F0
dXJhdGlvbjsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgc2F0dXJhdGlvbiA9IDA7CisgICAg
ZWxzZSBpZiAobGlnaHRuZXNzIDw9IDAuNWYpCisgICAgICAgIHNhdHVyYXRpb24gPSAoY2hyb21h
IC8gKG1heCArIG1pbikpOworICAgIGVsc2UKKyAgICAgICAgc2F0dXJhdGlvbiA9IChjaHJvbWEg
LyAoMi4wZiAtIChtYXggKyBtaW4pKSk7CisKKyAgICByZXR1cm4geworICAgICAgICBodWUsCisg
ICAgICAgIHNhdHVyYXRpb24sCisgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAgYWxwaGEKKyAg
ICB9OwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9E
NTBXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKKy8vIEh1ZSBpcyBpbiB0aGUg
cmFuZ2UgMC02LCBvdGhlciBhcmdzIGluIDAtMS4KK3N0YXRpYyBmbG9hdCBjYWxjSHVlKGZsb2F0
IHRlbXAxLCBmbG9hdCB0ZW1wMiwgZmxvYXQgaHVlVmFsKQogewotICAgIHJldHVybiBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihENjVUb0Q1ME1hdHJp
eC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsK
KyAgICBpZiAoaHVlVmFsIDwgMC4wZikKKyAgICAgICAgaHVlVmFsICs9IDYuMGY7CisgICAgZWxz
ZSBpZiAoaHVlVmFsID49IDYuMGYpCisgICAgICAgIGh1ZVZhbCAtPSA2LjBmOworICAgIGlmICho
dWVWYWwgPCAxLjBmKQorICAgICAgICByZXR1cm4gdGVtcDEgKyAodGVtcDIgLSB0ZW1wMSkgKiBo
dWVWYWw7CisgICAgaWYgKGh1ZVZhbCA8IDMuMGYpCisgICAgICAgIHJldHVybiB0ZW1wMjsKKyAg
ICBpZiAoaHVlVmFsIDwgNC4wZikKKyAgICAgICAgcmV0dXJuIHRlbXAxICsgKHRlbXAyIC0gdGVt
cDEpICogKDQuMGYgLSBodWVWYWwpOworICAgIHJldHVybiB0ZW1wMTsKK30KKworLy8gRXhwbGFu
YXRpb24gb2YgdGhpcyBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBDU1MgQ29sb3IgNCBN
b2R1bGUKKy8vIHNwZWNpZmljYXRpb24gYXQgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1j
b2xvci00LyNoc2wtdG8tcmdiIHdpdGgKKy8vIGZ1cnRoZXIgZXhwbGFuYXRpb24gYXZhaWxhYmxl
IGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlCitTUkdCQTxm
bG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgYXV0byBbaHVl
LCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IGNvbG9yOworCisgICAgLy8gQ29udmVy
dCBiYWNrIHRvIFJHQi4KKyAgICBpZiAoIXNhdHVyYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAg
ICAgIGxpZ2h0bmVzcywKKyAgICAgICAgICAgIGFscGhhCisgICAgICAgIH07CisgICAgfQorICAg
IAorICAgIGZsb2F0IHRlbXAyID0gbGlnaHRuZXNzIDw9IDAuNWYgPyBsaWdodG5lc3MgKiAoMS4w
ZiArIHNhdHVyYXRpb24pIDogbGlnaHRuZXNzICsgc2F0dXJhdGlvbiAtIGxpZ2h0bmVzcyAqIHNh
dHVyYXRpb247CisgICAgZmxvYXQgdGVtcDEgPSAyLjBmICogbGlnaHRuZXNzIC0gdGVtcDI7Cisg
ICAgCisgICAgaHVlICo9IDYuMGY7IC8vIGNhbGNIdWUoKSB3YW50cyBodWUgaW4gdGhlIDAtNiBy
YW5nZS4KKyAgICByZXR1cm4geworICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlICsg
Mi4wZiksCisgICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAyLCBodWUpLAorICAgICAgICBjYWxj
SHVlKHRlbXAxLCB0ZW1wMiwgaHVlIC0gMi4wZiksCisgICAgICAgIGFscGhhCisgICAgfTsKIH0K
IAotLy8gTGFiIGNvbnZlcnNpb25zLgorLy8gTUFSSzogTGFiIGNvbnZlcnNpb25zLgogCiBzdGF0
aWMgY29uc3RleHByIGZsb2F0IExBQmUgPSAyMTYuMGYgLyAyNDM4OS4wZjsKIHN0YXRpYyBjb25z
dGV4cHIgZmxvYXQgTEFCayA9IDI0Mzg5LjBmIC8gMjcuMGY7CkBAIC0zNDYsNyArNDQ3LDcgQEAg
TGFiPGZsb2F0PiB0b0xhYihjb25zdCBYWVpBPGZsb2F0PiYgY29sbwogfQogCiAKLS8vIExDSCBj
b252ZXJzaW9ucy4KKy8vIE1BUks6IExDSCBjb252ZXJzaW9ucy4KIAogTENIQTxmbG9hdD4gdG9M
Q0hBKGNvbnN0IExhYjxmbG9hdD4mIGNvbG9yKQogewpAQCAtMzc0LDEwNiArNDc1LDMwIEBAIExh
YjxmbG9hdD4gdG9MYWIoY29uc3QgTENIQTxmbG9hdD4mIGNvbG8KICAgICB9OwogfQogCi0vLyBI
U0wgY29udmVyc2lvbnMuCi0KLUhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4m
IGNvbG9yKQotewotICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9y
X3NwYWNlLgotICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGNvbG9yOwotCi0gICAgYXV0byBb
bWluLCBtYXhdID0gc3RkOjptaW5tYXgoeyByLCBnLCBiIH0pOwotICAgIGZsb2F0IGNocm9tYSA9
IG1heCAtIG1pbjsKLQotICAgIGZsb2F0IGh1ZTsKLSAgICBpZiAoIWNocm9tYSkKLSAgICAgICAg
aHVlID0gMDsKLSAgICBlbHNlIGlmIChtYXggPT0gcikKLSAgICAgICAgaHVlID0gKDYwLjBmICog
KChnIC0gYikgLyBjaHJvbWEpKSArIDM2MC4wZjsKLSAgICBlbHNlIGlmIChtYXggPT0gZykKLSAg
ICAgICAgaHVlID0gKDYwLjBmICogKChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4wZjsKLSAgICBl
bHNlCi0gICAgICAgIGh1ZSA9ICg2MC4wZiAqICgociAtIGcpIC8gY2hyb21hKSkgKyAyNDAuMGY7
Ci0KLSAgICBpZiAoaHVlID49IDM2MC4wZikKLSAgICAgICAgaHVlIC09IDM2MC4wZjsKLQotICAg
IGh1ZSAvPSAzNjAuMGY7CisvLyBNQVJLOiBDb21iaW5hdGlvbiBjb252ZXJzaW9ucyAoY29uc3Ry
dWN0ZWQgZnJvbSBtb3JlIGJhc2ljIGNvbnZlcnNpb25zIGFib3ZlKS4KIAotICAgIGZsb2F0IGxp
Z2h0bmVzcyA9IDAuNWYgKiAobWF4ICsgbWluKTsKLSAgICBmbG9hdCBzYXR1cmF0aW9uOwotICAg
IGlmICghY2hyb21hKQotICAgICAgICBzYXR1cmF0aW9uID0gMDsKLSAgICBlbHNlIGlmIChsaWdo
dG5lc3MgPD0gMC41ZikKLSAgICAgICAgc2F0dXJhdGlvbiA9IChjaHJvbWEgLyAobWF4ICsgbWlu
KSk7Ci0gICAgZWxzZQotICAgICAgICBzYXR1cmF0aW9uID0gKGNocm9tYSAvICgyLjBmIC0gKG1h
eCArIG1pbikpKTsKLQotICAgIHJldHVybiB7Ci0gICAgICAgIGh1ZSwKLSAgICAgICAgc2F0dXJh
dGlvbiwKLSAgICAgICAgbGlnaHRuZXNzLAotICAgICAgICBhbHBoYQotICAgIH07Ci19CisvLyAt
IEE5OFJHQiBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLS8vIEh1ZSBpcyBpbiB0aGUgcmFuZ2Ug
MC02LCBvdGhlciBhcmdzIGluIDAtMS4KLXN0YXRpYyBmbG9hdCBjYWxjSHVlKGZsb2F0IHRlbXAx
LCBmbG9hdCB0ZW1wMiwgZmxvYXQgaHVlVmFsKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEE5
OFJHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIGlmIChodWVWYWwgPCAwLjBmKQotICAgICAgICBo
dWVWYWwgKz0gNi4wZjsKLSAgICBlbHNlIGlmIChodWVWYWwgPj0gNi4wZikKLSAgICAgICAgaHVl
VmFsIC09IDYuMGY7Ci0gICAgaWYgKGh1ZVZhbCA8IDEuMGYpCi0gICAgICAgIHJldHVybiB0ZW1w
MSArICh0ZW1wMiAtIHRlbXAxKSAqIGh1ZVZhbDsKLSAgICBpZiAoaHVlVmFsIDwgMy4wZikKLSAg
ICAgICAgcmV0dXJuIHRlbXAyOwotICAgIGlmIChodWVWYWwgPCA0LjBmKQotICAgICAgICByZXR1
cm4gdGVtcDEgKyAodGVtcDIgLSB0ZW1wMSkgKiAoNC4wZiAtIGh1ZVZhbCk7Ci0gICAgcmV0dXJu
IHRlbXAxOworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJBOThSR0IoY29sb3IpKTsKIH0KIAot
Ly8gRXhwbGFuYXRpb24gb2YgdGhpcyBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBDU1Mg
Q29sb3IgNCBNb2R1bGUKLS8vIHNwZWNpZmljYXRpb24gYXQgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1jb2xvci00LyNoc2wtdG8tcmdiIHdpdGgKLS8vIGZ1cnRoZXIgZXhwbGFuYXRpb24g
YXZhaWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNl
Ci1TUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCitBOThSR0I8
ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICBhdXRvIFto
dWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGFdID0gY29sb3I7Ci0KLSAgICAvLyBDb252
ZXJ0IGJhY2sgdG8gUkdCLgotICAgIGlmICghc2F0dXJhdGlvbikgewotICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgbGlnaHRuZXNzLAotICAgICAgICAgICAgbGlnaHRuZXNzLAotICAgICAg
ICAgICAgbGlnaHRuZXNzLAotICAgICAgICAgICAgYWxwaGEKLSAgICAgICAgfTsKLSAgICB9Ci0g
ICAgCi0gICAgZmxvYXQgdGVtcDIgPSBsaWdodG5lc3MgPD0gMC41ZiA/IGxpZ2h0bmVzcyAqICgx
LjBmICsgc2F0dXJhdGlvbikgOiBsaWdodG5lc3MgKyBzYXR1cmF0aW9uIC0gbGlnaHRuZXNzICog
c2F0dXJhdGlvbjsKLSAgICBmbG9hdCB0ZW1wMSA9IDIuMGYgKiBsaWdodG5lc3MgLSB0ZW1wMjsK
LSAgICAKLSAgICBodWUgKj0gNi4wZjsgLy8gY2FsY0h1ZSgpIHdhbnRzIGh1ZSBpbiB0aGUgMC02
IHJhbmdlLgotICAgIHJldHVybiB7Ci0gICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAyLCBodWUg
KyAyLjBmKSwKLSAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSksCi0gICAgICAgIGNh
bGNIdWUodGVtcDEsIHRlbXAyLCBodWUgLSAyLjBmKSwKLSAgICAgICAgYWxwaGEKLSAgICB9Owor
ICAgIHJldHVybiB0b0E5OFJHQih0b0xpbmVhckE5OFJHQihjb2xvcikpOwogfQogCisvLyAtIERp
c3BsYXlQMyBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLS8vIENvbWJpbmF0aW9uIGNvbnZlcnNp
b25zIChjb25zdHJ1Y3RlZCBmcm9tIG1vcmUgYmFzaWMgY29udmVyc2lvbnMgYWJvdmUpLgotCi0v
LyAtIFNSR0IgY29tYmluYXRpb24gZnVuY3Rpb25zLgotCi1YWVpBPGZsb2F0PiB0b1hZWkEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5
UDM8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29s
b3IpKTsKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7CiB9CiAK
LVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0Rpc3BsYXlQ
MzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9EaXNwbGF5
UDModG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKIH0KIAogLy8gLSBFeHRlbmRlZFNSR0IgY29t
YmluYXRpb24gZnVuY3Rpb25zLgpAQCAtNDg4LDI4ICs1MTMsMTYgQEAgRXh0ZW5kZWRTUkdCQTxm
bG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbgogICAgIHJldHVybiB0b0V4dGVuZGVkU1JHQkEodG9M
aW5lYXJFeHRlbmRlZFNSR0JBKGNvbG9yKSk7CiB9CiAKLS8vIC0gRGlzcGxheVAzIGNvbWJpbmF0
aW9uIGZ1bmN0aW9ucy4KLQotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9h
dD4mIGNvbG9yKQotewotICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KTsKLX0KLQotRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9y
KSk7Ci19Ci0KLS8vIC0gQTk4UkdCIGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4KKy8vIC0gSFNMQSBj
b21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBBOThSR0I8
ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29s
b3IpCiB7Ci0gICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhckE5OFJHQihjb2xvcikpOworICAgIHJl
dHVybiB0b1hZWkEodG9TUkdCQShjb2xvcikpOwogfQogCi1BOThSR0I8ZmxvYXQ+IHRvQTk4UkdC
KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvQTk4UkdCKHRvTGluZWFyQTk4UkdCKGNv
bG9yKSk7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7CiB9CiAKIC8vIC0gTENI
QSBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCkBAIC01MjQsMTYgKzUzNywxNiBAQCBMQ0hBPGZsb2F0
PiB0b0xDSEEoY29uc3QgWFlaQTxmbG9hdD4mIGNvCiAgICAgcmV0dXJuIHRvTENIQSh0b0xhYihj
b2xvcikpOwogfQogCi0vLyAtIEhTTEEgY29tYmluYXRpb24gZnVuY3Rpb25zLgorLy8gLSBTUkdC
IGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8
ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxmbG9hdD4mIGNv
bG9yKQogewotICAgIHJldHVybiB0b1hZWkEodG9TUkdCQShjb2xvcikpOworICAgIHJldHVybiB0
b1hZWkEodG9MaW5lYXJTUkdCQShjb2xvcikpOwogfQogCi1IU0xBPGZsb2F0PiB0b0hTTEEoY29u
c3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxm
bG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiB0b0hTTEEodG9TUkdCQShjb2xvcikpOworICAg
IHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MTk5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSwxNCArMzEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUcmFuc2ZlciBmdW5jdGlv
bnMgZm9yIGNvbG9ycyB0aGF0IGNhbiBiZSBnYW1tYSBlbmNvZGVkLgogCi1zdHJ1Y3QgU1JHQlRy
YW5zZmVyRnVuY3Rpb24geworc3RydWN0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb24gewogICAgIHN0
YXRpYyBmbG9hdCBmcm9tTGluZWFyQ2xhbXBpbmcoZmxvYXQpOwogICAgIHN0YXRpYyBmbG9hdCB0
b0xpbmVhckNsYW1waW5nKGZsb2F0KTsKICAgICBzdGF0aWMgZmxvYXQgZnJvbUxpbmVhck5vbkNs
YW1waW5nKGZsb2F0KTsKICAgICBzdGF0aWMgZmxvYXQgdG9MaW5lYXJOb25DbGFtcGluZyhmbG9h
dCk7CiB9OwogCi1zdHJ1Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7CitzdHJ1Y3QgU1JHQlRy
YW5zZmVyRnVuY3Rpb24gewogICAgIHN0YXRpYyBmbG9hdCBmcm9tTGluZWFyQ2xhbXBpbmcoZmxv
YXQpOwogICAgIHN0YXRpYyBmbG9hdCB0b0xpbmVhckNsYW1waW5nKGZsb2F0KTsKICAgICBzdGF0
aWMgZmxvYXQgZnJvbUxpbmVhck5vbkNsYW1waW5nKGZsb2F0KTsKQEAgLTUzLDMwICs1MywxMSBA
QCBzdHJ1Y3QgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbiB7CiAvLyBzb21lIG1heSBiZSBpbnRlZ3Jh
bCB0byB0aGUgYmFzZSBjb252ZXJzaW9uLgogCiAKLS8vIFNSR0JBCi1XRUJDT1JFX0VYUE9SVCBY
WVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBT
UkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOwotLy8gQWRkaXRpb25zCi1X
RUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKLQotLy8gRXh0ZW5kZWRTUkdCQQotV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBF
eHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mKTsK
LS8vIEFkZGl0aW9ucwotV0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4g
dG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7Ci0KLS8v
IExpbmVhclNSR0JBCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGlu
ZWFyU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9M
aW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOwotLy8gQWRkaXRpb25zCi1XRUJDT1JFX0VY
UE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKLQot
Ly8gTGluZWFyRXh0ZW5kZWRTUkdCQQotV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpB
KGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBMaW5l
YXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgWFlaQTxm
bG9hdD4mKTsKKy8vIEE5OFJHQgorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IEE5OFJHQjxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEE5OFJHQjxmbG9hdD4gdG9BOThS
R0IoY29uc3QgWFlaQTxmbG9hdD4mKTsKIC8vIEFkZGl0aW9ucwotV0VCQ09SRV9FWFBPUlQgRXh0
ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JH
QkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJBOThSR0I8ZmxvYXQ+IHRvTGluZWFy
QTk4UkdCKGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKIAogLy8gRGlzcGxheVAzCiBXRUJDT1JFX0VY
UE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwpAQCAtODQs
MTcgKzY1LDE3IEBAIFdFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGEKIC8v
IEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLS8vIExpbmVhckRpc3BsYXlQ
MwotV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5l
YXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEV4dGVuZGVkU1JHQkEKK1dFQkNP
UkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYp
OworV0VCQ09SRV9FWFBPUlQgRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CiAvLyBBZGRpdGlvbnMKLVdFQkNPUkVfRVhQT1JUIERpc3BsYXlQ
MzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOworV0VC
Q09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRlZFNS
R0JBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7CiAKLS8vIExhYgotV0VCQ09SRV9FWFBP
UlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExhYjxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IExhYjxmbG9hdD4gdG9MYWIoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEhTTEEKK1dFQkNPUkVf
RVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CiAvLyBBZGRpdGlv
bnMKLVdFQkNPUkVfRVhQT1JUIExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCBMYWI8ZmxvYXQ+Jik7
CitXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYp
OwogCiAvLyBMQ0hBCiBXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTENI
QTxmbG9hdD4mKTsKQEAgLTEwMiwxNyArODMsMTEgQEAgV0VCQ09SRV9FWFBPUlQgTENIQTxmbG9h
dD4gdG9MQ0hBKGNvbnN0IAogLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBMYWI8ZmxvYXQ+
IHRvTGFiKGNvbnN0IExDSEE8ZmxvYXQ+Jik7CiAKLS8vIEhTTEEKLVdFQkNPUkVfRVhQT1JUIFhZ
WkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgSFNM
QTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7Ci0vLyBBZGRpdGlvbnMKLVdFQkNP
UkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7Ci0KLS8v
IEE5OFJHQgotV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEE5OFJHQjxm
bG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIEE5OFJHQjxmbG9hdD4gdG9BOThSR0IoY29uc3QgWFla
QTxmbG9hdD4mKTsKKy8vIExhYgorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IExhYjxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExhYjxmbG9hdD4gdG9MYWIoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKIC8vIEFkZGl0aW9ucwotV0VCQ09SRV9FWFBPUlQgTGluZWFyQTk4UkdC
PGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+Jik7CitXRUJDT1JFX0VY
UE9SVCBMQ0hBPGZsb2F0PiB0b0xDSEEoY29uc3QgTGFiPGZsb2F0PiYpOwogCiAvLyBMaW5lYXJB
OThSR0IKIFdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJBOThS
R0I8ZmxvYXQ+Jik7CkBAIC0xMjAsMjAgKzk1LDQ2IEBAIFdFQkNPUkVfRVhQT1JUIExpbmVhckE5
OFJHQjxmbG9hdD4gdG9MaW4KIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgQTk4UkdCPGZs
b2F0PiB0b0E5OFJHQihjb25zdCBMaW5lYXJBOThSR0I8ZmxvYXQ+JiBjb2xvcik7CiAKKy8vIExp
bmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExp
bmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxm
bG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9u
cworV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5l
YXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CisKKy8vIExpbmVhckV4dGVuZGVkU1JHQkEKK1dFQkNPUkVf
RVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJF
eHRlbmRlZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKK1dFQkNPUkVf
RVhQT1JUIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBMaW5lYXJF
eHRlbmRlZFNSR0JBPGZsb2F0PiYpOworCisvLyBMaW5lYXJTUkdCQQorV0VCQ09SRV9FWFBPUlQg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4m
KTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29u
c3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIFNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpB
PGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJD
T1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxm
bG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxm
bG9hdD4mKTsKKwogCiAvLyBJZGVudGl0eSBjb252ZXJzaW9ucyAodXNlZnVsIGZvciBnZW5lcmlj
IGNvbnRleHRzKS4KIAotY29uc3RleHByIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFNSR0JB
PGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Ci1jb25zdGV4cHIgRXh0ZW5kZWRTUkdC
QTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xv
cikgeyByZXR1cm4gY29sb3I7IH0KLWNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5l
YXJTUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsg
fQotY29uc3RleHByIExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRT
UkdCQShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNv
bG9yOyB9Citjb25zdGV4cHIgQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBBOThSR0I8Zmxv
YXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBEaXNwbGF5UDM8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xv
cjsgfQotY29uc3RleHByIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Ci1j
b25zdGV4cHIgTGFiPGZsb2F0PiB0b0xhYihjb25zdCBMYWI8ZmxvYXQ+JiBjb2xvcikgeyByZXR1
cm4gY29sb3I7IH0KLWNvbnN0ZXhwciBMQ0hBPGZsb2F0PiB0b0xDSEEoY29uc3QgTENIQTxmbG9h
dD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIEV4dGVuZGVkU1JHQkE8Zmxv
YXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IEhTTEE8
ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBMQ0hBPGZsb2F0PiB0
b0xDSEEoY29uc3QgTENIQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3Rl
eHByIExhYjxmbG9hdD4gdG9MYWIoY29uc3QgTGFiPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNv
bG9yOyB9Citjb25zdGV4cHIgTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25z
dCBMaW5lYXJBOThSR0I8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhw
ciBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IExpbmVhckRp
c3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIExpbmVh
ckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBMaW5lYXJF
eHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIg
TGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+
JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBTUkdCQTxmbG9hdD4gdG9TUkdC
QShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHBy
IFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNv
bG9yOyB9Ci1jb25zdGV4cHIgQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBBOThSR0I8Zmxv
YXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIAogCiAvLyBGYWxsYmFjayBjb252ZXJzaW9u
cy4KQEAgLTE0MSw3NSArMTQyLDc1IEBAIGNvbnN0ZXhwciBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdC
KGNvbnN0IEEKIC8vIEFsbCB0eXBlcyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhIGNvbnZlcnNpb24g
dG8gWFlaQSwgc28gdGhlc2UgYXJlIGd1YXJhbnRlZWQgdG8gd29yayBpZgogLy8gYW5vdGhlciBv
dmVybG9hZCBpcyBub3QgYWxyZWFkeSBwcm92aWRlZC4KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
U1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgVCYgY29sb3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0
b1NSR0JBKHRvWFlaQShjb2xvcikpOworICAgIHJldHVybiB0b0E5OFJHQih0b1hZWkEoY29sb3Ip
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRl
bmRlZFNSR0JBKGNvbnN0IFQmIGNvbG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gRGlzcGxheVAz
PGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9FeHRl
bmRlZFNSR0JBKHRvWFlaQShjb2xvcikpOworICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b1hZWkEo
Y29sb3IpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgVCYgY29sb3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRl
ZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0
dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7CisgICAgcmV0dXJuIHRvRXh0ZW5kZWRT
UkdCQSh0b1hZWkEoY29sb3IpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRXh0
ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IFQmIGNvbG9yKQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFQmIGNvbG9yKQog
ewotICAgIHJldHVybiB0b0xpbmVhckV4dGVuZGVkU1JHQkEodG9YWVpBKGNvbG9yKSk7CisgICAg
cmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
RGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1
cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7CisgICAgcmV0dXJuIHRvTENIQSh0b1hZWkEo
Y29sb3IpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRGlzcGxheVAzPGZsb2F0
PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IExhYjxmbG9hdD4gdG9MYWIoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFy
RGlzcGxheVAzKHRvWFlaQShjb2xvcikpOworICAgIHJldHVybiB0b0xhYih0b1hZWkEoY29sb3Ip
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGFiPGZsb2F0PiB0b0xhYihjb25zdCBUJiBj
b2xvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJB
OThSR0IoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGFiKHRvWFlaQShjb2xvcikp
OworICAgIHJldHVybiB0b0xpbmVhckE5OFJHQih0b1hZWkEoY29sb3IpKTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gTENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IFQmIGNvbG9yKQordGVtcGxh
dGU8dHlwZW5hbWUgVD4gTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRl
ZFNSR0JBKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xDSEEodG9YWVpBKGNvbG9y
KSk7CisgICAgcmV0dXJuIHRvTGluZWFyRXh0ZW5kZWRTUkdCQSh0b1hZWkEoY29sb3IpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFQmIGNvbG9y
KQordGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRp
c3BsYXlQMyhjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9IU0xBKHRvWFlaQShjb2xv
cikpOworICAgIHJldHVybiB0b0xpbmVhckRpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBUJiBjb2xv
cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JB
KGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0E5OFJHQih0b1hZWkEoY29sb3IpKTsK
KyAgICByZXR1cm4gdG9MaW5lYXJTUkdCQSh0b1hZWkEoY29sb3IpKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBUJiBj
b2xvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFQm
IGNvbG9yKQogewotICAgIHJldHVybiB0b0xpbmVhckE5OFJHQih0b1hZWkEoY29sb3IpKTsKKyAg
ICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKIH0KIAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgY2FsbFdpdGhD
b2xvclR5cGUoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21wb25lbnRzLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52
b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNS
R0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IG1ha2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwotICAgIGNh
c2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3Rk
Ojpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8RGlzcGxheVAz
PFQ+Pihjb21wb25lbnRzKSk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpBOThSR0I6CiAgICAgICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VG
cm9tQ29tcG9uZW50czxBOThSR0I8VD4+KGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3Bh
Y2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxG
dW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQMzxUPj4oY29tcG9u
ZW50cykpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1cm4gc3RkOjpp
bnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8
TGFiPFQ+Pihjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Cisg
ICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IG1ha2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOworICAgIGNh
c2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9y
d2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21w
b25lbnRzKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXph
dGlvbi5jcHAJKHJldmlzaW9uIDI3MTk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcwICsz
Niw0MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFNSR0JBPHVpbnQ4X3Q+IG92ZXJs
b2FkcwotCi1zdGF0aWMgY2hhciBkZWNpbWFsRGlnaXQodW5zaWduZWQgbnVtYmVyKQotewotICAg
IEFTU0VSVChudW1iZXIgPCAxMCk7Ci0gICAgcmV0dXJuICcwJyArIG51bWJlcjsKLX0KLQotc3Rh
dGljIHN0ZDo6YXJyYXk8Y2hhciwgND4gZnJhY3Rpb25EaWdpdHNGb3JGcmFjdGlvbmFsQWxwaGFW
YWx1ZSh1aW50OF90IGFscGhhKQotewotICAgIEFTU0VSVChhbHBoYSA+IDApOwotICAgIEFTU0VS
VChhbHBoYSA8IDB4RkYpOwotICAgIGlmICgoKGFscGhhICogMTAwICsgMHg3RikgLyAweEZGICog
MHhGRiArIDUwKSAvIDEwMCAhPSBhbHBoYSkKLSAgICAgICAgcmV0dXJuIHsgeyBkZWNpbWFsRGln
aXQoYWxwaGEgKiAxMCAvIDB4RkYgJSAxMCksIGRlY2ltYWxEaWdpdChhbHBoYSAqIDEwMCAvIDB4
RkYgJSAxMCksIGRlY2ltYWxEaWdpdCgoYWxwaGEgKiAxMDAwICsgMHg3RikgLyAweEZGICUgMTAp
LCAnXDAnIH0gfTsKLSAgICBpZiAoaW50IHRoaXJkRGlnaXQgPSAoYWxwaGEgKiAxMDAgKyAweDdG
KSAvIDB4RkYgJSAxMCkKLSAgICAgICAgcmV0dXJuIHsgeyBkZWNpbWFsRGlnaXQoYWxwaGEgKiAx
MCAvIDB4RkYpLCBkZWNpbWFsRGlnaXQodGhpcmREaWdpdCksICdcMCcsICdcMCcgfSB9OwotICAg
IHJldHVybiB7IHsgZGVjaW1hbERpZ2l0KChhbHBoYSAqIDEwICsgMHg3RikgLyAweEZGKSwgJ1ww
JywgJ1wwJywgJ1wwJyB9IH07Ci19Ci0KLVN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKFNSR0JB
PHVpbnQ4X3Q+IGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgQ29sb3Im
IGNvbG9yKQogewotICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yOwot
ICAgIHN3aXRjaCAoYWxwaGEpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBtYWtlU3Ry
aW5nKCJyZ2JhKCIsIHJlZCwgIiwgIiwgZ3JlZW4sICIsICIsIGJsdWUsICIsIDApIik7Ci0gICAg
Y2FzZSAweEZGOgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdiKCIsIHJlZCwgIiwgIiwg
Z3JlZW4sICIsICIsIGJsdWUsICcpJyk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInJnYmEoIiwgcmVkLCAiLCAiLCBncmVlbiwgIiwgIiwgYmx1ZSwgIiwgMC4iLCBm
cmFjdGlvbkRpZ2l0c0ZvckZyYWN0aW9uYWxBbHBoYVZhbHVlKGFscGhhKS5kYXRhKCksICcpJyk7
Ci0gICAgfQorICAgIHJldHVybiBjb2xvci5jYWxsT25VbmRlcmx5aW5nVHlwZShbXSAoYXV0byB1
bmRlcmx5aW5nQ29sb3IpIHsKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1ModW5k
ZXJseWluZ0NvbG9yKTsKKyAgICB9KTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1M
KFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0
IENvbG9yJiBjb2xvcikKIHsKLSAgICBhdXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0gPSBj
b2xvcjsKLSAgICBpZiAoYWxwaGEgPT0gMHhGRikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
JyMnLCBoZXgocmVkLCAyLCBMb3dlcmNhc2UpLCBoZXgoZ3JlZW4sIDIsIExvd2VyY2FzZSksIGhl
eChibHVlLCAyLCBMb3dlcmNhc2UpKTsKLSAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUyhj
b2xvcik7CisgICAgcmV0dXJuIGNvbG9yLmNhbGxPblVuZGVybHlpbmdUeXBlKFtdIChhdXRvIHVu
ZGVybHlpbmdDb2xvcikgeworICAgICAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckhUTUwodW5k
ZXJseWluZ0NvbG9yKTsKKyAgICB9KTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhdXRvIFtyZWQs
IGdyZWVuLCBibHVlLCBhbHBoYV0gPSBjb2xvcjsKLSAgICBpZiAoYWxwaGEgPCAweEZGKQotICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWQsIDIpLCBoZXgoZ3JlZW4sIDIpLCBo
ZXgoYmx1ZSwgMiksIGhleChhbHBoYSwgMikpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywg
aGV4KHJlZCwgMiksIGhleChncmVlbiwgMiksIGhleChibHVlLCAyKSk7CisgICAgcmV0dXJuIGNv
bG9yLmNhbGxPblVuZGVybHlpbmdUeXBlKFtdIChhdXRvIHVuZGVybHlpbmdDb2xvcikgeworICAg
ICAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQodW5kZXJseWluZ0Nv
bG9yKTsKKyAgICB9KTsKIH0KIAotCi0vLyBFeHRlbmRlZENvbG9yIG92ZXJsb2FkcwotCiBzdGF0
aWMgQVNDSUlMaXRlcmFsIHNlcmlhbGl6YXRpb24oQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewog
ICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAg
ICAgICAgcmV0dXJuICJzcmdiIl9zOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgot
ICAgICAgICByZXR1cm4gImxpbmVhci1zcmdiIl9zOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlz
cGxheVAzOgotICAgICAgICByZXR1cm4gImRpc3BsYXktcDMiX3M7CiAgICAgY2FzZSBDb2xvclNw
YWNlOjpBOThSR0I6CiAgICAgICAgIHJldHVybiAiYTk4LXJnYiJfczsKKyAgICBjYXNlIENvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuICJkaXNwbGF5LXAzIl9zOwogICAgIGNh
c2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1cm4gImxhYiJfczsKKyAgICBjYXNlIENv
bG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuICJsaW5lYXItc3JnYiJfczsKKyAg
ICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiAic3JnYiJfczsKICAgICB9
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExNCwxMTcgKzg0LDE0MiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IHN0YXRpYyBTdHJpCiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoImNvbG9yKCIsIHNlcmlhbGl6YXRpb24oY29sb3IuY29sb3JTcGFjZSksICcgJywgYzEsICcg
JywgYzIsICcgJywgYzMsICIgLyAiLCBhbHBoYSwgJyknKTsKIH0KIAotLy8gU1JHQkE8ZmxvYXQ+
IG92ZXJsb2FkcworLy8gTUFSSzogQTk4UkdCPGZsb2F0PiBvdmVybG9hZHMKIAotU3RyaW5nIHNl
cmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1N0cmluZyBzZXJp
YWxpemF0aW9uRm9yQ1NTKGNvbnN0IEE5OFJHQjxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVy
biBzZXJpYWxpemF0aW9uKGNvbG9yKTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1M
KGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwo
Y29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb24o
Y29sb3IpOwogfQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJl
ZUFzVGV4dChjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gc2VyaWFs
aXphdGlvbihjb2xvcik7CiB9CiAKLS8vIExpbmVhclNSR0JBPGZsb2F0PiBvdmVybG9hZHMKKy8v
IE1BUks6IERpc3BsYXlQMzxmbG9hdD4gb3ZlcmxvYWRzCiAKLVN0cmluZyBzZXJpYWxpemF0aW9u
Rm9yQ1NTKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXph
dGlvbkZvckNTUyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4g
c2VyaWFsaXphdGlvbihjb2xvcik7CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChj
b25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JI
VE1MKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiBzZXJpYWxp
emF0aW9uKGNvbG9yKTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNU
ZXh0KGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlv
bkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAg
ICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOwogfQogCi0vLyBEaXNwbGF5UDM8ZmxvYXQ+
IG92ZXJsb2FkcworLy8gTUFSSzogTGFiPGZsb2F0PiBvdmVybG9hZHMKIAotU3RyaW5nIHNlcmlh
bGl6YXRpb25Gb3JDU1MoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2Vy
aWFsaXphdGlvbkZvckNTUyhjb25zdCBMYWI8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4g
c2VyaWFsaXphdGlvbihjb2xvcik7CisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1j
b2xvci00LyNzZXJpYWxpemluZy1sYWItbGNoCisKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBo
YV0gPSBjb2xvcjsKKyAgICBpZiAoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFscGhhLCAxLjBm
KSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImxhYigiLCBjMSwgIiUgIiwgYzIsICcgJywg
YzMsICcpJyk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImxhYigiLCBjMSwgIiUgIiwgYzIsICcg
JywgYzMsICIgLyAiLCBhbHBoYSwgJyknKTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JI
VE1MKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25G
b3JIVE1MKGNvbnN0IExhYjxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBzZXJpYWxpemF0
aW9uKGNvbG9yKTsKKyAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUyhjb2xvcik7CiB9CiAK
LVN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+JiBjb2xvcikKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChj
b25zdCBMYWI8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gc2VyaWFsaXphdGlvbihjb2xv
cik7CisgICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IpOwogfQogCi0vLyBBOThS
R0I8ZmxvYXQ+IG92ZXJsb2FkcworLy8gTUFSSzogTGluZWFyU1JHQkE8ZmxvYXQ+IG92ZXJsb2Fk
cwogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xv
cikKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOwogfQogCi1TdHJpbmcg
c2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCitTdHJpbmcg
c2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsK
ICAgICByZXR1cm4gc2VyaWFsaXphdGlvbihjb2xvcik7CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0
aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK1N0cmlu
ZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQogewogICAgIHJldHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKIH0KIAotLy8g
TGFiPGZsb2F0PiBvdmVybG9hZHMKKy8vIE1BUks6IFNSR0JBPGZsb2F0PiBvdmVybG9hZHMKIAot
U3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgTGFiPGZsb2F0PiYgY29sb3IpCitTdHJp
bmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtY29sb3ItNC8jc2VyaWFsaXppbmctbGFiLWxj
aAorICAgIHJldHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKK30KIAotICAgIGF1dG8gW2MxLCBj
MiwgYzMsIGFscGhhXSA9IGNvbG9yOwotICAgIGlmIChXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwo
YWxwaGEsIDEuMGYpKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygibGFiKCIsIGMxLCAiJSAi
LCBjMiwgJyAnLCBjMywgJyknKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZygibGFiKCIsIGMxLCAi
JSAiLCBjMiwgJyAnLCBjMywgIiAvICIsIGFscGhhLCAnKScpOworU3RyaW5nIHNlcmlhbGl6YXRp
b25Gb3JIVE1MKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHNlcmlh
bGl6YXRpb24oY29sb3IpOwogfQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3Qg
TGFiPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1Rl
eHQoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gc2VyaWFsaXphdGlv
bkZvckNTUyhjb2xvcik7CisgICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOwogfQogCi1T
dHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgTGFiPGZsb2F0PiYg
Y29sb3IpCisvLyBNQVJLOiBTUkdCQTx1aW50OF90PiBvdmVybG9hZHMKKworc3RhdGljIGNoYXIg
ZGVjaW1hbERpZ2l0KHVuc2lnbmVkIG51bWJlcikKIHsKLSAgICByZXR1cm4gc2VyaWFsaXphdGlv
bkZvckNTUyhjb2xvcik7CisgICAgQVNTRVJUKG51bWJlciA8IDEwKTsKKyAgICByZXR1cm4gJzAn
ICsgbnVtYmVyOwogfQogCi0vLyBDb2xvciBvdmVybG9hZHMKK3N0YXRpYyBzdGQ6OmFycmF5PGNo
YXIsIDQ+IGZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDhfdCBhbHBo
YSkKK3sKKyAgICBBU1NFUlQoYWxwaGEgPiAwKTsKKyAgICBBU1NFUlQoYWxwaGEgPCAweEZGKTsK
KyAgICBpZiAoKChhbHBoYSAqIDEwMCArIDB4N0YpIC8gMHhGRiAqIDB4RkYgKyA1MCkgLyAxMDAg
IT0gYWxwaGEpCisgICAgICAgIHJldHVybiB7IHsgZGVjaW1hbERpZ2l0KGFscGhhICogMTAgLyAw
eEZGICUgMTApLCBkZWNpbWFsRGlnaXQoYWxwaGEgKiAxMDAgLyAweEZGICUgMTApLCBkZWNpbWFs
RGlnaXQoKGFscGhhICogMTAwMCArIDB4N0YpIC8gMHhGRiAlIDEwKSwgJ1wwJyB9IH07CisgICAg
aWYgKGludCB0aGlyZERpZ2l0ID0gKGFscGhhICogMTAwICsgMHg3RikgLyAweEZGICUgMTApCisg
ICAgICAgIHJldHVybiB7IHsgZGVjaW1hbERpZ2l0KGFscGhhICogMTAgLyAweEZGKSwgZGVjaW1h
bERpZ2l0KHRoaXJkRGlnaXQpLCAnXDAnLCAnXDAnIH0gfTsKKyAgICByZXR1cm4geyB7IGRlY2lt
YWxEaWdpdCgoYWxwaGEgKiAxMCArIDB4N0YpIC8gMHhGRiksICdcMCcsICdcMCcsICdcMCcgfSB9
OworfQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBDb2xvciYgY29sb3IpCitT
dHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhTUkdCQTx1aW50OF90PiBjb2xvcikKIHsKLSAgICBy
ZXR1cm4gY29sb3IuY2FsbE9uVW5kZXJseWluZ1R5cGUoW10gKGF1dG8gdW5kZXJseWluZ0NvbG9y
KSB7Ci0gICAgICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9yQ1NTKHVuZGVybHlpbmdDb2xvcik7
Ci0gICAgfSk7CisgICAgYXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdID0gY29sb3I7Cisg
ICAgc3dpdGNoIChhbHBoYSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoInJnYmEoIiwgcmVkLCAiLCAiLCBncmVlbiwgIiwgIiwgYmx1ZSwgIiwgMCkiKTsKKyAgICBj
YXNlIDB4RkY6CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2IoIiwgcmVkLCAiLCAiLCBn
cmVlbiwgIiwgIiwgYmx1ZSwgJyknKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygicmdiYSgiLCByZWQsICIsICIsIGdyZWVuLCAiLCAiLCBibHVlLCAiLCAwLiIsIGZy
YWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUoYWxwaGEpLmRhdGEoKSwgJyknKTsK
KyAgICB9CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBDb2xvciYgY29s
b3IpCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoU1JHQkE8dWludDhfdD4gY29sb3IpCiB7
Ci0gICAgcmV0dXJuIGNvbG9yLmNhbGxPblVuZGVybHlpbmdUeXBlKFtdIChhdXRvIHVuZGVybHlp
bmdDb2xvcikgewotICAgICAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckhUTUwodW5kZXJseWlu
Z0NvbG9yKTsKLSAgICB9KTsKKyAgICBhdXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0gPSBj
b2xvcjsKKyAgICBpZiAoYWxwaGEgPT0gMHhGRikKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
JyMnLCBoZXgocmVkLCAyLCBMb3dlcmNhc2UpLCBoZXgoZ3JlZW4sIDIsIExvd2VyY2FzZSksIGhl
eChibHVlLCAyLCBMb3dlcmNhc2UpKTsKKyAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUyhj
b2xvcik7CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25z
dCBDb2xvciYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQo
U1JHQkE8dWludDhfdD4gY29sb3IpCiB7Ci0gICAgcmV0dXJuIGNvbG9yLmNhbGxPblVuZGVybHlp
bmdUeXBlKFtdIChhdXRvIHVuZGVybHlpbmdDb2xvcikgewotICAgICAgICByZXR1cm4gc2VyaWFs
aXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQodW5kZXJseWluZ0NvbG9yKTsKLSAgICB9KTsKKyAg
ICBhdXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0gPSBjb2xvcjsKKyAgICBpZiAoYWxwaGEg
PCAweEZGKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWQsIDIpLCBoZXgo
Z3JlZW4sIDIpLCBoZXgoYmx1ZSwgMiksIGhleChhbHBoYSwgMikpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKCcjJywgaGV4KHJlZCwgMiksIGhleChncmVlbiwgMiksIGhleChibHVlLCAyKSk7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFs
aXphdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU2VyaWFsaXphdGlvbi5oCShyZXZpc2lvbiAyNzE5OTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMzIgKzQxLDM0IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7CiAvLyBz
ZXJpYWxpemF0aW9uRm9yQ1NTIHJldHVybnMgdGhlIGNvbG9yIHNlcmlhbGl6ZWQgYWNjb3JkaW5n
IHRvIENTUwogLy8gc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQgcmV0dXJucyB0aGUg
Y29sb3Igc2VyaWFsaXplZCBmb3IgRHVtcFJlbmRlclRyZWUsICNSUkdHQkIsICNSUkdHQkJBQSBv
ciB0aGUgQ1NTIHNlcmlhbGl6YXRpb24KIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6
YXRpb25Gb3JDU1MoU1JHQkE8dWludDhfdD4pOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlh
bGl6YXRpb25Gb3JIVE1MKFNSR0JBPHVpbnQ4X3Q+KTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBz
ZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChTUkdCQTx1aW50OF90Pik7CitXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBDb2xvciYpOworV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IENvbG9yJik7CitXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3Qg
Q29sb3ImKTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZv
ckhUTUwoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFs
aXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisvLyBQZXIt
Q29sb3JUeXBlIHNwZWNpYWxpemF0aW9ucy4KIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlh
bGl6YXRpb25Gb3JDU1MoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7
Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQo
Y29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFs
aXphdGlvbkZvckNTUyhjb25zdCBBOThSR0I8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgQTk4UkdCPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IEE5OFJH
QjxmbG9hdD4mKTsKIAogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1Mo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6
YXRpb25Gb3JIVE1MKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBEaXNwbGF5UDM8Zmxv
YXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0
IEE5OFJHQjxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9y
SFRNTChjb25zdCBBOThSR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFs
aXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgQTk4UkdCPGZsb2F0PiYpOwotCiBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBMYWI8ZmxvYXQ+Jik7
CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgTGFiPGZs
b2F0PiYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVl
QXNUZXh0KGNvbnN0IExhYjxmbG9hdD4mKTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlh
bGl6YXRpb25Gb3JDU1MoY29uc3QgQ29sb3ImKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJp
YWxpemF0aW9uRm9ySFRNTChjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNl
cmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IENvbG9yJik7CitXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4m
KTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9y
UmVuZGVyVHJlZUFzVGV4dChjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKKworV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgU1JHQkE8Zmxv
YXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVB
c1RleHQoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJp
YWxpemF0aW9uRm9yQ1NTKFNSR0JBPHVpbnQ4X3Q+KTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBz
ZXJpYWxpemF0aW9uRm9ySFRNTChTUkdCQTx1aW50OF90Pik7CitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoU1JHQkE8dWludDhfdD4pOwogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmNwcAkocmV2aXNpb24gMjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDIxICszMywyMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICB0cyA8PCAiTGlu
ZWFyUkdCIjsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkE5OFJHQjoKKyAgICAgICAgdHMgPDwgImE5
OC1yZ2IiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoK
ICAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29s
b3JTcGFjZTo6QTk4UkdCOgotICAgICAgICB0cyA8PCAiYTk4LXJnYiI7Ci0gICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICB0cyA8PCAiTCphKmIiOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgdHMg
PDwgIkxpbmVhclJHQiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JH
QjoKKyAgICAgICAgdHMgPDwgInNSR0IiOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0
dXJuIHRzOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuaAkocmV2aXNpb24gMjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTEgQEAg
Y2xhc3MgVGV4dFN0cmVhbTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBDb2xv
clNwYWNlIDogdWludDhfdCB7Ci0gICAgU1JHQiwKLSAgICBMaW5lYXJSR0IsCi0gICAgRGlzcGxh
eVAzLAogICAgIEE5OFJHQiwKLSAgICBMYWIKKyAgICBEaXNwbGF5UDMsCisgICAgTGFiLAorICAg
IExpbmVhclJHQiwKKyAgICBTUkdCLAogfTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24g
MjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMDYgKzMxLDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsKLXRlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFy
U1JHQkE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkE7Ci10
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERpc3BsYXlQMzsKLXRlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgTGluZWFyRGlzcGxheVAzOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBBOThSR0I7
Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckE5OFJHQjsKLXRlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgTGFiOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMQ0hBOwotdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBIU0xBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBYWVo7
Ci0KIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQWxwaGFUcmFpdHM7Ci0KLXRlbXBsYXRlPD4g
c3RydWN0IEFscGhhVHJhaXRzPHVpbnQ4X3Q+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4
X3QgdHJhbnNwYXJlbnQgPSAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBvcGFxdWUg
PSAyNTU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czxmbG9hdD4gewotICAg
IHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgdHJhbnNwYXJlbnQgPSAwLjBmOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgZmxvYXQgb3BhcXVlID0gMS4wZjsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlIHsKLSAgICBUIG1pbjsKLSAgICBUIG1heDsKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgUkdCTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IENvbG9yQ29tcG9uZW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IERpc3BsYXlQMzsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDsK
LXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiTW9kZWw7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IExDSE1vZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBFeHRlbmRlZFNSR0JB
OwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIU0xBOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBIU0xNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTENIQTsKK3RlbXBsYXRl
PHR5cGVuYW1lPiBzdHJ1Y3QgTENITW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExh
YjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IExpbmVhckE5OFJHQjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFy
RGlzcGxheVAzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNSR0JB
OwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJTUkdCQTsKK3RlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgUkdCTW9kZWw7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBYWVo7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IFhZWk1vZGVsOwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDx1aW50OF90PiB7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8dWludDhfdD4s
IDM+IHJhbmdlcyB7IHsKLSAgICAgICAgeyAwLCAyNTUgfSwKLSAgICAgICAgeyAwLCAyNTUgfSwK
LSAgICAgICAgeyAwLCAyNTUgfQotICAgIH0gfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPGZs
b2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFu
Z2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMSB9LAotICAgICAgICB7IDAs
IDEgfSwKLSAgICAgICAgeyAwLCAxIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFeHRlbmRl
ZFJHQk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9y
Q29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAg
ICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1
Y3QgTGFiTW9kZWw8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29s
b3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKLSAgICAgICAgeyAwLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KLSAg
ICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwot
fTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgTENITW9kZWw8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7
IHsKLSAgICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9
LAotICAgICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0s
Ci0gICAgICAgIHsgMCwgMzYwIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSFNMTW9kZWw8
ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRS
YW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKLSAgICAgICAgeyAwLCAzNjAgfSwKLSAgICAgICAg
eyAwLCAxMDAgfSwKLSAgICAgICAgeyAwLCAxMDAgfQotICAgIH0gfTsKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IFhZWk1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9y
Q29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAg
ICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwotfTsKIAorLy8gTUFSSzogTWFrZSBm
dW5jdGlvbnMuCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVD4gY29u
c3RleHByIENvbG9yVHlwZSBtYWtlRnJvbUNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRz
PFQ+JiBjKQogewpAQCAtMTczLDIyICs5NiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBDb21wb25lbnRUCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUg
VD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBjbGFtcGVkQ29tcG9uZW50cyhjb25zdCBD
b2xvckNvbXBvbmVudHM8VD4mIGNvbXBvbmVudHMpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAg
Y2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDA+KGNvbXBvbmVudHMpLAotICAgICAgICBjbGFt
cGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oY29tcG9uZW50cyksCi0gICAgICAgIGNsYW1wZWRD
b21wb25lbnQ8Q29sb3JUeXBlLCAyPihjb21wb25lbnRzKSwKLSAgICAgICAgY2xhbXBlZEFscGhh
KGNvbXBvbmVudHNbM10pCi0gICAgfTsKKyAgICByZXR1cm4geyBjbGFtcGVkQ29tcG9uZW50PENv
bG9yVHlwZSwgMD4oY29tcG9uZW50cyksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihj
b21wb25lbnRzKSwgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGNvbXBvbmVudHMpLCBj
bGFtcGVkQWxwaGEoY29tcG9uZW50c1szXSkgfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlLCB0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGNsYW1wZWRD
b21wb25lbnRzRXhjZXB0QWxwaGEoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21wb25lbnRz
KQogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAw
Pihjb21wb25lbnRzKSwKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDE+KGNv
bXBvbmVudHMpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMj4oY29tcG9u
ZW50cyksCi0gICAgICAgIGNvbXBvbmVudHNbM10KLSAgICB9OworICAgIHJldHVybiB7IGNsYW1w
ZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAwPihjb21wb25lbnRzKSwgY2xhbXBlZENvbXBvbmVudDxD
b2xvclR5cGUsIDE+KGNvbXBvbmVudHMpLCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMj4o
Y29tcG9uZW50cyksIGNvbXBvbmVudHNbM10gfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlLCB0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JUeXBlIG1ha2VGcm9tQ29tcG9uZW50
c0NsYW1waW5nKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cykKQEAgLTE5OCwy
MiArMTExLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVD4KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JU
eXBlIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nKFQgYzEsIFQgYzIsIFQgYzMpCiB7Ci0gICAg
cmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxDb2xvclR5cGU+KENvbG9yQ29tcG9uZW50cyB7Ci0g
ICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAwPihjMSksCi0gICAgICAgIGNsYW1w
ZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihjMiksCi0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8
Q29sb3JUeXBlLCAyPihjMyksCi0gICAgICAgIEFscGhhVHJhaXRzPHR5cGVuYW1lIENvbG9yVHlw
ZTo6Q29tcG9uZW50VHlwZT46Om9wYXF1ZQotICAgIH0pOworICAgIHJldHVybiBtYWtlRnJvbUNv
bXBvbmVudHM8Q29sb3JUeXBlPihDb2xvckNvbXBvbmVudHMgeyBjbGFtcGVkQ29tcG9uZW50PENv
bG9yVHlwZSwgMD4oYzEpLCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oYzIpLCBjbGFt
cGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMj4oYzMpLCBBbHBoYVRyYWl0czx0eXBlbmFtZSBDb2xv
clR5cGU6OkNvbXBvbmVudFR5cGU+OjpvcGFxdWUgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbG9yVHlwZSwgdHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yVHlwZSBtYWtlRnJvbUNvbXBv
bmVudHNDbGFtcGluZyhUIGMxLCBUIGMyLCBUIGMzLCBUIGFscGhhKQogewotICAgIHJldHVybiBt
YWtlRnJvbUNvbXBvbmVudHM8Q29sb3JUeXBlPihDb2xvckNvbXBvbmVudHMgewotICAgICAgICBj
bGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMD4oYzEpLAotICAgICAgICBjbGFtcGVkQ29tcG9u
ZW50PENvbG9yVHlwZSwgMT4oYzIpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlw
ZSwgMj4oYzMpLAotICAgICAgICBjbGFtcGVkQWxwaGE8VCwgdHlwZW5hbWUgQ29sb3JUeXBlOjpD
b21wb25lbnRUeXBlPihhbHBoYSkKLSAgICB9KTsKKyAgICByZXR1cm4gbWFrZUZyb21Db21wb25l
bnRzPENvbG9yVHlwZT4oQ29sb3JDb21wb25lbnRzIHsgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5
cGUsIDA+KGMxKSwgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDE+KGMyKSwgY2xhbXBlZENv
bXBvbmVudDxDb2xvclR5cGUsIDI+KGMzKSwgY2xhbXBlZEFscGhhPFQsIHR5cGVuYW1lIENvbG9y
VHlwZTo6Q29tcG9uZW50VHlwZT4oYWxwaGEpIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2xvclR5cGUsIHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvclR5cGUgbWFrZUZyb21Db21wb25l
bnRzQ2xhbXBpbmdFeGNlcHRBbHBoYShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGNvbXBvbmVu
dHMpCkBAIC0yMjMsMTQgKzEyNiw4OSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5
cGVuYW1lIFQ+CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQWxwaGE+IGNvbnN0ZXhwciBDb2xvclR5cGUgbWFrZUZyb21Db21wb25lbnRzQ2xhbXBp
bmdFeGNlcHRBbHBoYShUIGMxLCBUIGMyLCBUIGMzLCBBbHBoYSBhbHBoYSkKIHsKLSAgICByZXR1
cm4gbWFrZUZyb21Db21wb25lbnRzPENvbG9yVHlwZT4oQ29sb3JDb21wb25lbnRzIHsKLSAgICAg
ICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDA+KGMxKSwKLSAgICAgICAgY2xhbXBlZENv
bXBvbmVudDxDb2xvclR5cGUsIDE+KGMyKSwKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xv
clR5cGUsIDI+KGMzKSwKLSAgICAgICAgYWxwaGEKLSAgICB9KTsKKyAgICByZXR1cm4gbWFrZUZy
b21Db21wb25lbnRzPENvbG9yVHlwZT4oQ29sb3JDb21wb25lbnRzIHsgY2xhbXBlZENvbXBvbmVu
dDxDb2xvclR5cGUsIDA+KGMxKSwgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDE+KGMyKSwg
Y2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGMzKSwgYWxwaGEgfSk7CiB9CiAKKy8vIE1B
Uks6IC0gTW9kZWxzCisKK3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPGZsb2F0PiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCB0cmFuc3BhcmVudCA9IDAuMGY7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBmbG9hdCBvcGFxdWUgPSAxLjBmOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
QWxwaGFUcmFpdHM8dWludDhfdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cmFu
c3BhcmVudCA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG9wYXF1ZSA9IDI1NTsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVudFJhbmdlIHsK
KyAgICBUIG1pbjsKKyAgICBUIG1heDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEV4dGVuZGVk
UkdCTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JD
b21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAtc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAg
ICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBIU0xNb2RlbDxmbG9hdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xv
ckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAsIDM2MCB9
LAorICAgICAgICB7IDAsIDEwMCB9LAorICAgICAgICB7IDAsIDEwMCB9CisgICAgfSB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgTGFiTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAg
eyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7
IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0
eSgpIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9
IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTENITW9kZWw8ZmxvYXQ+IHsKKyAgICBz
dGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+
IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSB9LAorICAgICAgICB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpIH0sCisgICAgICAgIHsgMCwgMzYwIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
UkdCTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JD
b21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAxIH0sCisg
ICAgICAgIHsgMCwgMSB9LAorICAgICAgICB7IDAsIDEgfQorICAgIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IFJHQk1vZGVsPHVpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8
Q29sb3JDb21wb25lbnRSYW5nZTx1aW50OF90PiwgMz4gcmFuZ2VzIHsgeworICAgICAgICB7IDAs
IDI1NSB9LAorICAgICAgICB7IDAsIDI1NSB9LAorICAgICAgICB7IDAsIDI1NSB9CisgICAgfSB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgWFlaTW9kZWw8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJhbmdlcyB7IHsKKyAg
ICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfQorICAgIH0g
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZlcnRpYmxlID0gZmFsc2U7Cit9Owor
CiAjaWYgQVNTRVJUX0VOQUJMRUQKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIHZv
aWQgYXNzZXJ0SW5SYW5nZShUIGNvbG9yKQpAQCAtMzI4LDIwICszMDYsMTMgQEAgdGVtcGxhdGU8
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIENvbG9yVAogICAgIHJldHVybiB7IGMucmVkLCBjLmdy
ZWVuLCBjLmJsdWUsIGMuYWxwaGEgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IFNSR0JBIDogUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdC
QVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0gICAgdXNpbmcgTGluZWFy
Q291bnRlcnBhcnQgPSBMaW5lYXJTUkdCQTxUPjsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Y29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsKLX07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IExpbmVhclNSR0JBIDogUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVsPFQ+
PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdC
QVR5cGU7Ci0gICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBTUkdCQTxUPjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkxpbmVhclJH
QjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBOThSR0IgOiBSR0JBVHlwZTxBOThSR0Is
IFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8QTk4UkdCLCBULCBSR0JNb2Rl
bDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyQTk4
UkdCPFQ+OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFj
ZTo6QTk4UkdCOwogfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBKFQsIFQsIFQs
IFQpIC0+IExpbmVhclNSR0JBPFQ+OwotCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThSR0IoVCwg
VCwgVCwgVCkgLT4gQTk4UkdCPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0
ZW5kZWRTUkdCQSA6IFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8
VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1v
ZGVsPFQ+Pjo6UkdCQVR5cGU7CkBAIC0zNDksMTkgKzMyMCwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCCiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gRXh0ZW5k
ZWRTUkdCQShULCBULCBULCBUKSAtPiBFeHRlbmRlZFNSR0JBPFQ+OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdCQSA6IFJHQkFUeXBlPExpbmVhckV4dGVu
ZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKLSAgICB1c2luZyBSR0JBVHlwZTxM
aW5lYXJFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0g
ICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBFeHRlbmRlZFNSR0JBPFQ+OwotfTsK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckV4dGVuZGVkU1JHQkEoVCwgVCwgVCwgVCkgLT4g
TGluZWFyRXh0ZW5kZWRTUkdCQTxUPjsKLQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGlzcGxheVAzIDogUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4gewotICAgIHVz
aW5nIFJHQkFUeXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKLSAgICB1
c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhckRpc3BsYXlQMzxUPjsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJBOThSR0IgOiBSR0JBVHlwZTxMaW5lYXJBOThS
R0IsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyQTk4UkdCLCBU
LCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50ZXJw
YXJ0ID0gQTk4UkdCPFQ+OwogfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBU
LCBULCBUKSAtPiBEaXNwbGF5UDM8VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJBOThS
R0IoVCwgVCwgVCwgVCkgLT4gTGluZWFyQTk4UkdCPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgTGluZWFyRGlzcGxheVAzIDogUkdCQVR5cGU8TGluZWFyRGlzcGxheVAzLCBULCBS
R0JNb2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFUeXBlPExpbmVhckRpc3BsYXlQMywgVCwgUkdC
TW9kZWw8VD4+OjpSR0JBVHlwZTsKQEAgLTM2OSwyMCArMzMyLDMyIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBMaW5lYXJEaXNwbGEKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5l
YXJEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gTGluZWFyRGlzcGxheVAzPFQ+OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdCQSA6IFJHQkFUeXBlPExpbmVh
ckV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKKyAgICB1c2luZyBSR0JB
VHlwZTxMaW5lYXJFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdCQVR5
cGU7CisgICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBFeHRlbmRlZFNSR0JBPFQ+
OworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckV4dGVuZGVkU1JHQkEoVCwgVCwgVCwg
VCkgLT4gTGluZWFyRXh0ZW5kZWRTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEE5OFJHQiA6IFJHQkFUeXBlPEE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+IHsKLSAgICB1c2lu
ZyBSR0JBVHlwZTxBOThSR0IsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0gICAgdXNpbmcg
TGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJBOThSR0I8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpBOThSR0I7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgTGluZWFyU1JHQkEgOiBSR0JBVHlwZTxMaW5lYXJTUkdCQSwgVCwgUkdCTW9k
ZWw8VD4+IHsKKyAgICB1c2luZyBSR0JBVHlwZTxMaW5lYXJTUkdCQSwgVCwgUkdCTW9kZWw8VD4+
OjpSR0JBVHlwZTsKKyAgICB1c2luZyBHYW1tYUVuY29kZWRDb3VudGVycGFydCA9IFNSR0JBPFQ+
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6TGlu
ZWFyUkdCOwogfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEE5OFJHQihULCBULCBULCBUKSAtPiBB
OThSR0I8VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJTUkdCQShULCBULCBULCBUKSAt
PiBMaW5lYXJTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckE5
OFJHQiA6IFJHQkFUeXBlPExpbmVhckE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+IHsKLSAgICB1c2lu
ZyBSR0JBVHlwZTxMaW5lYXJBOThSR0IsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0gICAg
dXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBBOThSR0I8VD47Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgU1JHQkEgOiBSR0JBVHlwZTxTUkdCQSwgVCwgUkdCTW9kZWw8VD4+IHsK
KyAgICB1c2luZyBSR0JBVHlwZTxTUkdCQSwgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAg
ICB1c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhclNSR0JBPFQ+OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjb2xvclNwYWNlIHsgQ29sb3JTcGFjZTo6U1JHQiB9OwogfTsKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IExpbmVhckE5OFJHQihULCBULCBULCBUKSAtPiBMaW5lYXJBOThSR0I8
VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsK
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6IFJHQkFUeXBlPERpc3Bs
YXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKKyAgICB1c2luZyBSR0JBVHlwZTxEaXNwbGF5UDMsIFQs
IFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBM
aW5lYXJEaXNwbGF5UDM8VD47CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2Ug
PSBDb2xvclNwYWNlOjpEaXNwbGF5UDM7Cit9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gRGlzcGxh
eVAzKFQsIFQsIFQsIFQpIC0+IERpc3BsYXlQMzxUPjsKIAogLy8gTUFSSzogLSBMYWIgQ29sb3Ig
VHlwZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvclNwYWNlQ0cuY3BwCShyZXZpc2lvbiAyNzE5OTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywzOSArMzMsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DR0NvbG9yU3BhY2VS
ZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JH
QkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAv
LyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3Bh
Y2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcwotICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5k
ZXIgdGhvc2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2lu
ZG93cwotICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAg
ICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEz
NTE1IHdhcyBmaXhlZC4KLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3Bh
Y2UpCi0gICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmlj
ZVJHQigpOwotI2Vsc2UKLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQot
ICAgIH0pOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVm
IGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQorQ0dDb2xvclNwYWNlUmVmIGE5OFJHQkNvbG9yU3Bh
Y2VSZWYoKQogewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFj
ZTsKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGE5OFJHQkNvbG9yU3BhY2U7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91
bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJhY2tlZCBieSBodHRwOi8v
d2Via2l0Lm9yZy9iLzgwMDAwLgotICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgYTk4UkdCQ29sb3JT
cGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VBZG9iZVJHQjE5
OTgpOwogI2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsKKyAgICAgICAgYTk4UkdCQ29s
b3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CiAjZW5kaWYKICAgICB9KTsKLSAgICByZXR1
cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKKyAgICByZXR1cm4gYTk4UkdCQ29sb3JTcGFjZTsKIH0K
IAogQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQpAQCAtODIsMTggKzYx
LDIyIEBAIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKICAgICByZXR1
cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIGE5OFJHQkNvbG9y
U3BhY2VSZWYoKQorQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQog
ewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgYTk4UkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0
aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gbnVsbHB0cjsKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgYTk4UkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VBZG9iZVJHQjE5OTgpOwotI2Vsc2UKLSAgICAgICAgYTk4
UkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgICAgIGNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsK
ICNlbmRpZgorICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBleHRlbmRlZCBz
UkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KKyAgICAgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAg
ICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAgICAgICAgZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGE5OFJH
QkNvbG9yU3BhY2U7CisgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7CiB9CiAKIENH
Q29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCkKQEAgLTEwMiwyMiArODUsMzkgQEAgQ0dD
b2xvclNwYWNlUmVmIGxhYkNvbG9yU3BhY2VSZWYoKQogICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigp
CitDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCiB7Ci0gICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBDR0Nv
bG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBudWxscHRyOwotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZUV4dGVuZGVkU1JHQik7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhN
RTogV2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJh
Y2tlZCBieSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgorICAgICAgICBsaW5lYXJSR0JDb2xv
clNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAgIGxpbmVhclJHQkNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFy
U1JHQik7CiAjZW5kaWYKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0
ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0IuCi0gICAgICAgIGlmICghY29sb3JTcGFjZSkK
LSAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIH0pOwor
ICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOworfQogCi0gICAgICAgIGV4dGVuZGVkU1JH
QkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOworQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNl
UmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cg
aW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dp
YyBhdm9pZHMKKyAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlv
bnMuIFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKKyAgICAgICAgLy8g
aXMgc1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KKyAgICAgICAgLy8gRklYTUU6IElz
IHRoaXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCisg
ICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZVNSR0IpOworICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQorICAgICAgICAgICAg
c1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyNlbHNlCisg
ICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZVNSR0IpOworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICAgICB9KTsKLSAgICByZXR1
cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2U7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3Bh
Y2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oCShyZXZpc2lvbiAyNzE5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjYg
KzMxLDI3IEBAIHR5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWMKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNv
bG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JD
b2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAz
Q29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxhYkNvbG9y
U3BhY2VSZWYoKTsKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBhOThSR0JDb2xvclNw
YWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JT
cGFjZVJlZigpOwogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNw
YWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JT
cGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHJlYzIwMjBDb2xvclNw
YWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKIAogc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNl
KENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAg
ICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJl
ZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gbGlu
ZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgot
ICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwogICAgIGNhc2UgQ29sb3JT
cGFjZTo6QTk4UkdCOgogICAgICAgICByZXR1cm4gYTk4UkdCQ29sb3JTcGFjZVJlZigpOworICAg
IGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29s
b3JTcGFjZVJlZigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1cm4g
bGFiQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAg
ICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFj
ZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418659</attachid>
            <date>2021-01-28 11:49:52 -0800</date>
            <delta_ts>2021-01-28 12:50:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pa.diff</filename>
            <type>text/plain</type>
            <size>68547</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAxLTI3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTb3J0IGNvbG9ycyBpbiBDb2xvclR5
cGVzLmggYWxwaGFiZXRpY2FsbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JDb252ZXJzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmg6CisgICAgICAgIFNvcnQgdGhpbmdzIGEgYml0IG1vcmUgYWxwaGFiZXRpY2FsbHku
CisKIDIwMjEtMDEtMjggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBPZmZzZXQgYSBtZXRob2Qgb24gU2Nyb2xsU25hcE9m
ZnNldHNJbmZvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2
aXNpb24gMjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTE0MDMsMTIgKzE0MDMsMTMgQEAgbGFzdAogLy8gY29sb3ItZ2Ft
dXQKIHAzCiByZWMyMDIwCitzUkdCCiAKIC8vIGNvbG9yKCkgZnVuY3Rpb24KLXNSR0IKLWRpc3Bs
YXktcDMKIGE5OC1yZ2IKK2Rpc3BsYXktcDMKIC8vIGxhYgorLy8gc1JHQgogCiAvLyBwcmVmZXJz
LWRlZmF1bHQtYXBwZWFyYW5jZQogcHJlZmVycwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24g
MjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzcsNyArODc3LDcgQEAgc3RhdGljIENvbG9y
IHBhcnNlTENIUGFyYW1ldGVycyhDU1NQYXJzZQogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
Pgogc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cGVzKENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MpCiB7Ci0gICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVTUkdCIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVEaXNwbGF5UDMgfHwgYXJncy5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUE5OFJnYik7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVBOThSZ2IgfHwgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZURpc3Bs
YXlQMyB8fCBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlU1JHQik7CiAgICAgY29uc3VtZUlk
ZW50UmF3KGFyZ3MpOwogCiAgICAgZG91YmxlIGNoYW5uZWxzWzNdID0geyAwLCAwLCAwIH07CkBA
IC05MzUsMTggKzkzNSwxOCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1l
dGVyCiAKICAgICBDb2xvciBjb2xvcjsKICAgICBzd2l0Y2ggKGFyZ3MucGVlaygpLmlkKCkpIHsK
LSAgICBjYXNlIENTU1ZhbHVlU1JHQjoKLSAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rp
b25Gb3JSR0JUeXBlczxTUkdCQTxmbG9hdD4+KGFyZ3MpOworICAgIGNhc2UgQ1NTVmFsdWVBOThS
Z2I6CisgICAgICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXM8QTk4UkdC
PGZsb2F0Pj4oYXJncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVEaXNwbGF5
UDM6CiAgICAgICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXM8RGlzcGxh
eVAzPGZsb2F0Pj4oYXJncyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVBOThS
Z2I6Ci0gICAgICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXM8QTk4UkdC
PGZsb2F0Pj4oYXJncyk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVMYWI6CiAg
ICAgICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1bmN0aW9uRm9yTGFiUGFyYW1ldGVycyhhcmdzKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVNSR0I6CisgICAgICAgIGNvbG9yID0g
cGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXM8U1JHQkE8ZmxvYXQ+PihhcmdzKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVy
c2lvbi5jcHAJKHJldmlzaW9uIDI3MTk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIyICszMiwy
NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1NSR0IKLS8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/
RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKLXN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8Mywg
Mz4geHl6VG9MaW5lYXJTUkdCTWF0cml4IHsKLSAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYs
IC0wLjQ5ODUzMTRmLAotICAgIC0wLjk2OTI2NjBmLCAgMS44NzYwMTA4ZiwgIDAuMDQxNTU2MGYs
Ci0gICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZgorLy8gQTk4UkdCIE1h
dHJpY2VzLgorCisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1j
b252ZXJzaW9uLWNvZGUKK3N0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9M
aW5lYXJBOThSR0JNYXRyaXggeworICAgICAyLjQ5MzQ5NjkxMTk0MTQyNWYsICAtMC45MzEzODM2
MTc5MTkxMjM5ZiwgLTAuNDAyNzEwNzg0NDUwNzE2OGYsCisgICAgLTAuODI5NDg4OTY5NTYxNTc0
N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2ZiwKKyAgICAgMC4w
MzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcyMzg5MjY4MDQxOGYsICAwLjk1Njg4NDUyNDAwNzY4
NzJmCiB9OwogCi0vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCi0vLyBodHRw
Oi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5o
dG1sCi1zdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclNSR0JUb1hZWk1h
dHJpeCB7Ci0gICAgMC40MTI0NTY0ZiwgIDAuMzU3NTc2MWYsICAwLjE4MDQzNzVmLAotICAgIDAu
MjEyNjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwKLSAgICAwLjAxOTMzMzlmLCAgMC4x
MTkxOTIwZiwgIDAuOTUwMzA0MWYKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29s
b3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQorc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwz
LCAzPiBsaW5lYXJBOThSR0JUb1hZWk1hdHJpeCB7CisgICAgMC41NzY2NjkwNDI5MTAxMzA1Ziwg
ICAwLjE4NTU1ODIzNzkwNjU0NjNmLCAgIDAuMTg4MjI4NjQ2MjM0OTk0N2YsCisgICAgMC4yOTcz
NDQ5NzUyNTA1MzYwNWYsICAwLjYyNzM2MzU2NjI1NTQ2NjFmLCAgIDAuMDc1MjkxNDU4NDkzOTk3
ODhmLAorICAgIDAuMDI3MDMxMzYxMzg2NDEyMzRmLCAgMC4wNzA2ODg4NTI1MzU4MjcyM2YsICAw
Ljk5MTMzNzUzNjgzNzYzODhmCiB9OwogCisvLyBEaXNwbGF5UDMgTWF0cmljZXMuCisKIC8vIGh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQog
c3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhckRpc3BsYXlQM01h
dHJpeCB7CiAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYxNzkxOTEyMzlmLCAt
MC40MDI3MTA3ODQ0NTA3MTY4ZiwKQEAgLTYyLDIwICs2NCwyNiBAQCBzdGF0aWMgY29uc3RleHBy
IENvbG9yTWF0cml4PDMsIDM+IGxpbmVhCiAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wNDUx
MTMzODE4NTg5MDI2ZiwgMS4wNDM5NDQzNjg5MDA5NzZmCiB9OwogCi0vLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKLXN0YXRpYyBjb25z
dGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5lYXJBOThSR0JNYXRyaXggewotICAgICAy
LjQ5MzQ5NjkxMTk0MTQyNWYsICAtMC45MzEzODM2MTc5MTkxMjM5ZiwgLTAuNDAyNzEwNzg0NDUw
NzE2OGYsCi0gICAgLTAuODI5NDg4OTY5NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAg
MC4wMjM2MjQ2ODU4NDE5NDM2ZiwKLSAgICAgMC4wMzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcy
Mzg5MjY4MDQxOGYsICAwLjk1Njg4NDUyNDAwNzY4NzJmCisvLyBzUkdCIE1hdHJpY2VzLgorCisv
LyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisvLyBodHRwOi8vd3d3LmJydWNl
bGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCitzdGF0aWMg
Y29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyU1JHQk1hdHJpeCB7CisgICAg
IDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwKKyAgICAtMC45NjkyNjYwZiwg
IDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLAorICAgICAwLjA1NTY0MzRmLCAtMC4yMDQwMjU5Ziwg
IDEuMDU3MjI1MmYKIH07CiAKLS8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3Iv
I2NvbG9yLWNvbnZlcnNpb24tY29kZQotc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAz
PiBsaW5lYXJBOThSR0JUb1hZWk1hdHJpeCB7Ci0gICAgMC41NzY2NjkwNDI5MTAxMzA1ZiwgICAw
LjE4NTU1ODIzNzkwNjU0NjNmLCAgIDAuMTg4MjI4NjQ2MjM0OTk0N2YsCi0gICAgMC4yOTczNDQ5
NzUyNTA1MzYwNWYsICAwLjYyNzM2MzU2NjI1NTQ2NjFmLCAgIDAuMDc1MjkxNDU4NDkzOTk3ODhm
LAotICAgIDAuMDI3MDMxMzYxMzg2NDEyMzRmLCAgMC4wNzA2ODg4NTI1MzU4MjcyM2YsICAwLjk5
MTMzNzUzNjgzNzYzODhmCisvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisv
LyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01h
dHJpeC5odG1sCitzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclNSR0JU
b1hZWk1hdHJpeCB7CisgICAgMC40MTI0NTY0ZiwgIDAuMzU3NTc2MWYsICAwLjE4MDQzNzVmLAor
ICAgIDAuMjEyNjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwKKyAgICAwLjAxOTMzMzlm
LCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYKIH07CiAKKy8vIENocm9tYXRpYyBBZGFwdGF0aW9u
IE1hdHJpY2VzLgorCiAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1s
P0Vxbl9DaHJvbUFkYXB0Lmh0bWwKIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4g
RDUwVG9ENjVNYXRyaXggewogICAgICAwLjk1NTU3NjZmLCAtMC4wMjMwMzkzZiwgMC4wNjMxNjM2
ZiwKQEAgLTkwLDcgKzk4LDI5IEBAIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4g
RDY1VG8KICAgICAtMC4wMDkyMzQ1ZiwgMC4wMTUwNDM2ZiwgIDAuNzUyMTMxNmYKIH07CiAKLS8v
IEdhbW1hIGNvbnZlcnNpb25zLgorLy8gTUFSSzogR2FtbWEgY29udmVyc2lvbnMuCisKK2Zsb2F0
IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJDbGFtcGluZyhmbG9hdCBjKQorewor
ICAgIHJldHVybiBjbGFtcFRvPGZsb2F0Pihmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYyksIDAsIDEp
OworfQorCitmbG9hdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uOjp0b0xpbmVhckNsYW1waW5nKGZs
b2F0IGMpCit7CisgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHRvTGluZWFyTm9uQ2xhbXBpbmco
YyksIDAsIDEpOworfQorCitmbG9hdCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFy
Tm9uQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBmbG9hdCBzaWduID0gc3RkOjpzaWduYml0KGMp
ID8gLTEuMGYgOiAxLjBmOworICAgIHJldHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwgMjU2LjBm
IC8gNTYzLjBmKSAqIHNpZ247Cit9CisKK2Zsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRv
TGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBmbG9hdCBzaWduID0gc3RkOjpzaWdu
Yml0KGMpID8gLTEuMGYgOiAxLjBmOworICAgIHJldHVybiBzdGQ6OnBvdyhzdGQ6OmFicyhjKSwg
NTYzLjBmIC8gMjU2LjBmKSAqIHNpZ247Cit9CiAKIGZsb2F0IFNSR0JUcmFuc2ZlckZ1bmN0aW9u
Ojpmcm9tTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykKIHsKQEAgLTEzMCwyOCArMTYwLDYgQEAgZmxv
YXQgU1JHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyTm9uQwogICAgIHJldHVybiBzdGQ6OnBv
dygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpICogc2lnbjsKIH0KIAotZmxvYXQgQTk4UkdC
VHJhbnNmZXJGdW5jdGlvbjo6ZnJvbUxpbmVhckNsYW1waW5nKGZsb2F0IGMpCi17Ci0gICAgcmV0
dXJuIGNsYW1wVG88ZmxvYXQ+KGZyb21MaW5lYXJOb25DbGFtcGluZyhjKSwgMCwgMSk7Ci19Ci0K
LWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OnRvTGluZWFyQ2xhbXBpbmcoZmxvYXQgYykK
LXsKLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4odG9MaW5lYXJOb25DbGFtcGluZyhjKSwgMCwg
MSk7Ci19Ci0KLWZsb2F0IEE5OFJHQlRyYW5zZmVyRnVuY3Rpb246OmZyb21MaW5lYXJOb25DbGFt
cGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykgPyAtMS4w
ZiA6IDEuMGY7Ci0gICAgcmV0dXJuIHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCAyNTYuMGYgLyA1NjMu
MGYpICogc2lnbjsKLX0KLQotZmxvYXQgQTk4UkdCVHJhbnNmZXJGdW5jdGlvbjo6dG9MaW5lYXJO
b25DbGFtcGluZyhmbG9hdCBjKQotewotICAgIGZsb2F0IHNpZ24gPSBzdGQ6OnNpZ25iaXQoYykg
PyAtMS4wZiA6IDEuMGY7Ci0gICAgcmV0dXJuIHN0ZDo6cG93KHN0ZDo6YWJzKGMpLCA1NjMuMGYg
LyAyNTYuMGYpICogc2lnbjsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmZXJGdW5jdGlv
biwgdHlwZW5hbWUgVD4gc3RhdGljIGF1dG8gdG9MaW5lYXJDbGFtcGluZyhjb25zdCBUJiBjb2xv
cikgLT4gdHlwZW5hbWUgVDo6TGluZWFyQ291bnRlcnBhcnQKIHsKICAgICBhdXRvIFtjMSwgYzIs
IGMzLCBhbHBoYV0gPSBjb2xvcjsKQEAgLTE3Niw1OCArMTg0LDc4IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFRyYW5zZmVyRnVuY3Rpb24sIHR5cGUKICAgICByZXR1cm4geyBUcmFuc2ZlckZ1bmN0aW9u
Ojpmcm9tTGluZWFyTm9uQ2xhbXBpbmcoYzEpLCBUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFy
Tm9uQ2xhbXBpbmcoYzIpLCBUcmFuc2ZlckZ1bmN0aW9uOjpmcm9tTGluZWFyTm9uQ2xhbXBpbmco
YzMpLCBhbHBoYSB9OwogfQogCi1MaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25z
dCBTUkdCQTxmbG9hdD4mIGNvbG9yKQorLy8gQTk4UkdCIDwtPiBMaW5lYXJBOThSR0IgY29udmVy
c2lvbnMuCisKK0xpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJBOThSR0IoY29uc3QgQTk4UkdC
PGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyQ2xhbXBpbmc8U1JHQlRyYW5z
ZmVyRnVuY3Rpb24+KGNvbG9yKTsKKyAgICByZXR1cm4gdG9MaW5lYXJDbGFtcGluZzxBOThSR0JU
cmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CiB9CiAKLUxpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+
IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3Ip
CitBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExpbmVhckE5OFJHQjxmbG9hdD4mIGNvbG9y
KQogewotICAgIHJldHVybiB0b0xpbmVhck5vbkNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9u
Pihjb2xvcik7CisgICAgcmV0dXJuIGZyb21MaW5lYXJDbGFtcGluZzxBOThSR0JUcmFuc2ZlckZ1
bmN0aW9uPihjb2xvcik7CiB9CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNS
R0JBPGZsb2F0PiYgY29sb3IpCisvLyBEaXNwbGF5UDMgPC0+IExpbmVhckRpc3BsYXlQMyBjb252
ZXJzaW9ucy4KKworTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25z
dCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJDbGFtcGlu
ZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworfQorCitEaXNwbGF5UDM8ZmxvYXQ+IHRv
RGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewogICAgIHJl
dHVybiBmcm9tTGluZWFyQ2xhbXBpbmc8U1JHQlRyYW5zZmVyRnVuY3Rpb24+KGNvbG9yKTsKIH0K
IAorLy8gRXh0ZW5kZWRTUkdCQSA8LT4gTGluZWFyRXh0ZW5kZWRTUkdCQSBjb252ZXJzaW9ucy4K
KworTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0
IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJOb25D
bGFtcGluZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOworfQorCiBFeHRlbmRlZFNSR0JB
PGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4m
IGNvbG9yKQogewogICAgIHJldHVybiBmcm9tTGluZWFyTm9uQ2xhbXBpbmc8U1JHQlRyYW5zZmVy
RnVuY3Rpb24+KGNvbG9yKTsKIH0KIAotTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRp
c3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKKy8vIFNSR0JBIDwtPiBMaW5l
YXJTUkdCQSBjb252ZXJzaW9ucy4KKworTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEo
Y29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9MaW5lYXJDbGFtcGlu
ZzxTUkdCVHJhbnNmZXJGdW5jdGlvbj4oY29sb3IpOwogfQogCi1EaXNwbGF5UDM8ZmxvYXQ+IHRv
RGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQorU1JHQkE8Zmxv
YXQ+IHRvU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1
cm4gZnJvbUxpbmVhckNsYW1waW5nPFNSR0JUcmFuc2ZlckZ1bmN0aW9uPihjb2xvcik7CiB9CiAK
LUxpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJBOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYg
Y29sb3IpCisvLyBNQVJLOiBNYXRyaXggY29udmVyc2lvbnMgKHRvIGFuZCBmcm9tIFhZWiBmb3Ig
YWxsIGxpbmVhciBjb2xvciB0eXBlcykuCisKKy8vIC0gTGluZWFyQTk4UkdCIG1hdHJpeCBjb252
ZXJzaW9ucy4KKworTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyQ2xhbXBpbmc8QTk4UkdCVHJh
bnNmZXJGdW5jdGlvbj4oY29sb3IpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFt
cGluZ0V4Y2VwdEFscGhhPExpbmVhckE5OFJHQjxmbG9hdD4+KHh5elRvTGluZWFyQTk4UkdCTWF0
cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkp
OwogfQogCi1BOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IExpbmVhckE5OFJHQjxmbG9hdD4m
IGNvbG9yKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckE5OFJHQjxmbG9hdD4mIGNv
bG9yKQogewotICAgIHJldHVybiBmcm9tTGluZWFyQ2xhbXBpbmc8QTk4UkdCVHJhbnNmZXJGdW5j
dGlvbj4oY29sb3IpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2Vw
dEFscGhhPFhZWkE8ZmxvYXQ+PihsaW5lYXJBOThSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENv
bG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotLy8gTWF0cml4
IGNvbnZlcnNpb25zICh0byBhbmQgZnJvbSBYWVogZm9yIGFsbCBsaW5lYXIgY29sb3IgdHlwZXMp
LgotCi0vLyAtIExpbmVhclNSR0JBIG1hdHJpeCBjb252ZXJzaW9ucy4KKy8vIC0gTGluZWFyRGlz
cGxheVAzIG1hdHJpeCBjb252ZXJzaW9ucy4KIAotTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFy
U1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0
b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyU1JHQkE8ZmxvYXQ+
Pih4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xv
ckNvbXBvbmVudHMoY29sb3IpKSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1w
aW5nRXhjZXB0QWxwaGE8TGluZWFyRGlzcGxheVAzPGZsb2F0Pj4oeHl6VG9MaW5lYXJEaXNwbGF5
UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29s
b3IpKSk7CiB9CiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4m
IGNvbG9yKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4m
IGNvbG9yKQogewotICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFs
cGhhPFhZWkE8ZmxvYXQ+PihsaW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNv
bXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CisgICAgcmV0dXJuIG1ha2VGcm9t
Q29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+KGxpbmVhckRpc3BsYXlQ
M1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKSkpOwogfQogCiAvLyAtIExpbmVhckV4dGVuZGVkU1JHQkEgbWF0cml4IGNvbnZlcnNp
b25zLgpAQCAtMjQyLDQzICsyNzAsMTE4IEBAIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5l
YXJFeHRlbmRlZFMKICAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRB
bHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi0vLyAtIExpbmVhckRp
c3BsYXlQMyBtYXRyaXggY29udmVyc2lvbnMuCisvLyAtIExpbmVhclNSR0JBIG1hdHJpeCBjb252
ZXJzaW9ucy4KIAotTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25z
dCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShj
b25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50
c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyRGlzcGxheVAzPGZsb2F0Pj4oeHl6VG9MaW5lYXJE
aXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IpKSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0
QWxwaGE8TGluZWFyU1JHQkE8ZmxvYXQ+Pih4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJl
dHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+Pihs
aW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcikpKTsKKyAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xh
bXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5z
Zm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi0v
LyAtIExpbmVhckE5OFJHQiBtYXRyaXggY29udmVyc2lvbnMuCisvLyBNQVJLOiBDaHJvbWF0aWMg
QWRhcHRhdGlvbiBjb252ZXJzaW9ucy4KIAotTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5
OFJHQihjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitzdGF0aWMgWFlaQTxmbG9hdD4gY29udmVy
dEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xv
cikKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxM
aW5lYXJBOThSR0I8ZmxvYXQ+Pih4eXpUb0xpbmVhckE5OFJHQk1hdHJpeC50cmFuc2Zvcm1lZENv
bG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKKyAgICByZXR1cm4gbWFr
ZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4oRDUwVG9ENjVN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7CiB9CiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJBOThSR0I8ZmxvYXQ+JiBj
b2xvcikKK3N0YXRpYyBYWVpBPGZsb2F0PiBjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdo
aXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihsaW5lYXJBOThSR0JU
b1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhj
b2xvcikpKTsKKyAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBo
YTxYWVpBPGZsb2F0Pj4oRDY1VG9ENTBNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMo
YXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLS8vIENocm9tYXRpYyBBZGFwdGF0aW9u
IGNvbnZlcnNpb25zLgorLy8gTUFSSzogSFNMIGNvbnZlcnNpb25zLgogCi1zdGF0aWMgWFlaQTxm
bG9hdD4gY29udmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8
ZmxvYXQ+JiBjb2xvcikKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mIGNv
bG9yKQogewotICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhh
PFhZWkE8ZmxvYXQ+PihENTBUb0Q2NU1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhh
c0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKKyAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KKyAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjb2xv
cjsKKworICAgIGF1dG8gW21pbiwgbWF4XSA9IHN0ZDo6bWlubWF4KHsgciwgZywgYiB9KTsKKyAg
ICBmbG9hdCBjaHJvbWEgPSBtYXggLSBtaW47CisKKyAgICBmbG9hdCBodWU7CisgICAgaWYgKCFj
aHJvbWEpCisgICAgICAgIGh1ZSA9IDA7CisgICAgZWxzZSBpZiAobWF4ID09IHIpCisgICAgICAg
IGh1ZSA9ICg2MC4wZiAqICgoZyAtIGIpIC8gY2hyb21hKSkgKyAzNjAuMGY7CisgICAgZWxzZSBp
ZiAobWF4ID09IGcpCisgICAgICAgIGh1ZSA9ICg2MC4wZiAqICgoYiAtIHIpIC8gY2hyb21hKSkg
KyAxMjAuMGY7CisgICAgZWxzZQorICAgICAgICBodWUgPSAoNjAuMGYgKiAoKHIgLSBnKSAvIGNo
cm9tYSkpICsgMjQwLjBmOworCisgICAgaWYgKGh1ZSA+PSAzNjAuMGYpCisgICAgICAgIGh1ZSAt
PSAzNjAuMGY7CisKKyAgICBodWUgLz0gMzYwLjBmOworCisgICAgZmxvYXQgbGlnaHRuZXNzID0g
MC41ZiAqIChtYXggKyBtaW4pOworICAgIGZsb2F0IHNhdHVyYXRpb247CisgICAgaWYgKCFjaHJv
bWEpCisgICAgICAgIHNhdHVyYXRpb24gPSAwOworICAgIGVsc2UgaWYgKGxpZ2h0bmVzcyA8PSAw
LjVmKQorICAgICAgICBzYXR1cmF0aW9uID0gKGNocm9tYSAvIChtYXggKyBtaW4pKTsKKyAgICBl
bHNlCisgICAgICAgIHNhdHVyYXRpb24gPSAoY2hyb21hIC8gKDIuMGYgLSAobWF4ICsgbWluKSkp
OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgaHVlLAorICAgICAgICBzYXR1cmF0aW9uLAorICAg
ICAgICBsaWdodG5lc3MsCisgICAgICAgIGFscGhhCisgICAgfTsKIH0KIAotc3RhdGljIFhZWkE8
ZmxvYXQ+IGNvbnZlcnRGcm9tRDY1V2hpdGVQb2ludFRvRDUwV2hpdGVQb2ludChjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCisvLyBIdWUgaXMgaW4gdGhlIHJhbmdlIDAtNiwgb3RoZXIgYXJncyBp
biAwLTEuCitzdGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9hdCB0ZW1wMSwgZmxvYXQgdGVtcDIsIGZs
b2F0IGh1ZVZhbCkKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNl
cHRBbHBoYTxYWVpBPGZsb2F0Pj4oRDY1VG9ENTBNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBv
bmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CisgICAgaWYgKGh1ZVZhbCA8IDAuMGYp
CisgICAgICAgIGh1ZVZhbCArPSA2LjBmOworICAgIGVsc2UgaWYgKGh1ZVZhbCA+PSA2LjBmKQor
ICAgICAgICBodWVWYWwgLT0gNi4wZjsKKyAgICBpZiAoaHVlVmFsIDwgMS4wZikKKyAgICAgICAg
cmV0dXJuIHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogaHVlVmFsOworICAgIGlmIChodWVWYWwg
PCAzLjBmKQorICAgICAgICByZXR1cm4gdGVtcDI7CisgICAgaWYgKGh1ZVZhbCA8IDQuMGYpCisg
ICAgICAgIHJldHVybiB0ZW1wMSArICh0ZW1wMiAtIHRlbXAxKSAqICg0LjBmIC0gaHVlVmFsKTsK
KyAgICByZXR1cm4gdGVtcDE7CiB9CiAKLS8vIExhYiBjb252ZXJzaW9ucy4KKy8vIEV4cGxhbmF0
aW9uIG9mIHRoaXMgYWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ1NTIENvbG9yIDQgTW9k
dWxlCisvLyBzcGVjaWZpY2F0aW9uIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29s
b3ItNC8jaHNsLXRvLXJnYiB3aXRoCisvLyBmdXJ0aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBh
dCBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZQorU1JHQkE8Zmxv
YXQ+IHRvU1JHQkEoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKQoreworICAgIGF1dG8gW2h1ZSwg
c2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBjb2xvcjsKKworICAgIC8vIENvbnZlcnQg
YmFjayB0byBSR0IuCisgICAgaWYgKCFzYXR1cmF0aW9uKSB7CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICBsaWdodG5lc3MsCisgICAgICAgICAgICBsaWdodG5lc3MsCisgICAgICAgICAg
ICBsaWdodG5lc3MsCisgICAgICAgICAgICBhbHBoYQorICAgICAgICB9OworICAgIH0KKyAgICAK
KyAgICBmbG9hdCB0ZW1wMiA9IGxpZ2h0bmVzcyA8PSAwLjVmID8gbGlnaHRuZXNzICogKDEuMGYg
KyBzYXR1cmF0aW9uKSA6IGxpZ2h0bmVzcyArIHNhdHVyYXRpb24gLSBsaWdodG5lc3MgKiBzYXR1
cmF0aW9uOworICAgIGZsb2F0IHRlbXAxID0gMi4wZiAqIGxpZ2h0bmVzcyAtIHRlbXAyOworICAg
IAorICAgIGh1ZSAqPSA2LjBmOyAvLyBjYWxjSHVlKCkgd2FudHMgaHVlIGluIHRoZSAwLTYgcmFu
Z2UuCisgICAgcmV0dXJuIHsKKyAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSArIDIu
MGYpLAorICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlKSwKKyAgICAgICAgY2FsY0h1
ZSh0ZW1wMSwgdGVtcDIsIGh1ZSAtIDIuMGYpLAorICAgICAgICBhbHBoYQorICAgIH07Cit9CisK
Ky8vIE1BUks6IExhYiBjb252ZXJzaW9ucy4KIAogc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBMQUJl
ID0gMjE2LjBmIC8gMjQzODkuMGY7CiBzdGF0aWMgY29uc3RleHByIGZsb2F0IExBQmsgPSAyNDM4
OS4wZiAvIDI3LjBmOwpAQCAtMzQ2LDcgKzQ0OSw3IEBAIExhYjxmbG9hdD4gdG9MYWIoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG8KIH0KIAogCi0vLyBMQ0ggY29udmVyc2lvbnMuCisvLyBNQVJLOiBM
Q0ggY29udmVyc2lvbnMuCiAKIExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCBMYWI8ZmxvYXQ+JiBj
b2xvcikKIHsKQEAgLTM3NCwxMDYgKzQ3NywzMCBAQCBMYWI8ZmxvYXQ+IHRvTGFiKGNvbnN0IExD
SEE8ZmxvYXQ+JiBjb2xvCiAgICAgfTsKIH0KIAotLy8gSFNMIGNvbnZlcnNpb25zLgotCi1IU0xB
PGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICAvLyBodHRw
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KLSAgICBhdXRvIFtyLCBn
LCBiLCBhbHBoYV0gPSBjb2xvcjsKLQotICAgIGF1dG8gW21pbiwgbWF4XSA9IHN0ZDo6bWlubWF4
KHsgciwgZywgYiB9KTsKLSAgICBmbG9hdCBjaHJvbWEgPSBtYXggLSBtaW47Ci0KLSAgICBmbG9h
dCBodWU7Ci0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAgIGh1ZSA9IDA7Ci0gICAgZWxzZSBpZiAo
bWF4ID09IHIpCi0gICAgICAgIGh1ZSA9ICg2MC4wZiAqICgoZyAtIGIpIC8gY2hyb21hKSkgKyAz
NjAuMGY7Ci0gICAgZWxzZSBpZiAobWF4ID09IGcpCi0gICAgICAgIGh1ZSA9ICg2MC4wZiAqICgo
YiAtIHIpIC8gY2hyb21hKSkgKyAxMjAuMGY7Ci0gICAgZWxzZQotICAgICAgICBodWUgPSAoNjAu
MGYgKiAoKHIgLSBnKSAvIGNocm9tYSkpICsgMjQwLjBmOwotCi0gICAgaWYgKGh1ZSA+PSAzNjAu
MGYpCi0gICAgICAgIGh1ZSAtPSAzNjAuMGY7Ci0KLSAgICBodWUgLz0gMzYwLjBmOworLy8gTUFS
SzogQ29tYmluYXRpb24gY29udmVyc2lvbnMgKGNvbnN0cnVjdGVkIGZyb20gbW9yZSBiYXNpYyBj
b252ZXJzaW9ucyBhYm92ZSkuCiAKLSAgICBmbG9hdCBsaWdodG5lc3MgPSAwLjVmICogKG1heCAr
IG1pbik7Ci0gICAgZmxvYXQgc2F0dXJhdGlvbjsKLSAgICBpZiAoIWNocm9tYSkKLSAgICAgICAg
c2F0dXJhdGlvbiA9IDA7Ci0gICAgZWxzZSBpZiAobGlnaHRuZXNzIDw9IDAuNWYpCi0gICAgICAg
IHNhdHVyYXRpb24gPSAoY2hyb21hIC8gKG1heCArIG1pbikpOwotICAgIGVsc2UKLSAgICAgICAg
c2F0dXJhdGlvbiA9IChjaHJvbWEgLyAoMi4wZiAtIChtYXggKyBtaW4pKSk7Ci0KLSAgICByZXR1
cm4gewotICAgICAgICBodWUsCi0gICAgICAgIHNhdHVyYXRpb24sCi0gICAgICAgIGxpZ2h0bmVz
cywKLSAgICAgICAgYWxwaGEKLSAgICB9OwotfQorLy8gLSBBOThSR0IgY29tYmluYXRpb24gZnVu
Y3Rpb25zLgogCi0vLyBIdWUgaXMgaW4gdGhlIHJhbmdlIDAtNiwgb3RoZXIgYXJncyBpbiAwLTEu
Ci1zdGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9hdCB0ZW1wMSwgZmxvYXQgdGVtcDIsIGZsb2F0IGh1
ZVZhbCkKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsK
LSAgICBpZiAoaHVlVmFsIDwgMC4wZikKLSAgICAgICAgaHVlVmFsICs9IDYuMGY7Ci0gICAgZWxz
ZSBpZiAoaHVlVmFsID49IDYuMGYpCi0gICAgICAgIGh1ZVZhbCAtPSA2LjBmOwotICAgIGlmICho
dWVWYWwgPCAxLjBmKQotICAgICAgICByZXR1cm4gdGVtcDEgKyAodGVtcDIgLSB0ZW1wMSkgKiBo
dWVWYWw7Ci0gICAgaWYgKGh1ZVZhbCA8IDMuMGYpCi0gICAgICAgIHJldHVybiB0ZW1wMjsKLSAg
ICBpZiAoaHVlVmFsIDwgNC4wZikKLSAgICAgICAgcmV0dXJuIHRlbXAxICsgKHRlbXAyIC0gdGVt
cDEpICogKDQuMGYgLSBodWVWYWwpOwotICAgIHJldHVybiB0ZW1wMTsKKyAgICByZXR1cm4gdG9Y
WVpBKHRvTGluZWFyQTk4UkdCKGNvbG9yKSk7CiB9CiAKLS8vIEV4cGxhbmF0aW9uIG9mIHRoaXMg
YWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ1NTIENvbG9yIDQgTW9kdWxlCi0vLyBzcGVj
aWZpY2F0aW9uIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jaHNsLXRv
LXJnYiB3aXRoCi0vLyBmdXJ0aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZQotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEo
Y29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKQorQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBY
WVpBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5l
c3MsIGFscGhhXSA9IGNvbG9yOwotCi0gICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4KLSAgICBp
ZiAoIXNhdHVyYXRpb24pIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGxpZ2h0bmVz
cywKLSAgICAgICAgICAgIGxpZ2h0bmVzcywKLSAgICAgICAgICAgIGxpZ2h0bmVzcywKLSAgICAg
ICAgICAgIGFscGhhCi0gICAgICAgIH07Ci0gICAgfQotICAgIAotICAgIGZsb2F0IHRlbXAyID0g
bGlnaHRuZXNzIDw9IDAuNWYgPyBsaWdodG5lc3MgKiAoMS4wZiArIHNhdHVyYXRpb24pIDogbGln
aHRuZXNzICsgc2F0dXJhdGlvbiAtIGxpZ2h0bmVzcyAqIHNhdHVyYXRpb247Ci0gICAgZmxvYXQg
dGVtcDEgPSAyLjBmICogbGlnaHRuZXNzIC0gdGVtcDI7Ci0gICAgCi0gICAgaHVlICo9IDYuMGY7
IC8vIGNhbGNIdWUoKSB3YW50cyBodWUgaW4gdGhlIDAtNiByYW5nZS4KLSAgICByZXR1cm4gewot
ICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlICsgMi4wZiksCi0gICAgICAgIGNhbGNI
dWUodGVtcDEsIHRlbXAyLCBodWUpLAotICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVl
IC0gMi4wZiksCi0gICAgICAgIGFscGhhCi0gICAgfTsKKyAgICByZXR1cm4gdG9BOThSR0IodG9M
aW5lYXJBOThSR0IoY29sb3IpKTsKIH0KIAorLy8gLSBEaXNwbGF5UDMgY29tYmluYXRpb24gZnVu
Y3Rpb25zLgogCi0vLyBDb21iaW5hdGlvbiBjb252ZXJzaW9ucyAoY29uc3RydWN0ZWQgZnJvbSBt
b3JlIGJhc2ljIGNvbnZlcnNpb25zIGFib3ZlKS4KLQotLy8gLSBTUkdCIGNvbWJpbmF0aW9uIGZ1
bmN0aW9ucy4KLQotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3Ip
CitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0g
ICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhclNSR0JBKGNvbG9yKSk7CisgICAgcmV0dXJuIHRvWFla
QSh0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpOwogfQogCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShj
b25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9TUkdCQSh0b0xpbmVhclNS
R0JBKGNvbG9yKSk7CisgICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNv
bG9yKSk7CiB9CiAKIC8vIC0gRXh0ZW5kZWRTUkdCIGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4KQEAg
LTQ4OCwyOCArNTE1LDE2IEBAIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShj
b24KICAgICByZXR1cm4gdG9FeHRlbmRlZFNSR0JBKHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb2xv
cikpOwogfQogCi0vLyAtIERpc3BsYXlQMyBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCi0KLVhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1
cm4gdG9YWVpBKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Ci19Ci0KLURpc3BsYXlQMzxmbG9h
dD4gdG9EaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHJldHVybiB0
b0Rpc3BsYXlQMyh0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpOwotfQotCi0vLyAtIEE5OFJHQiBj
b21iaW5hdGlvbiBmdW5jdGlvbnMuCisvLyAtIEhTTEEgY29tYmluYXRpb24gZnVuY3Rpb25zLgog
Ci1YWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCitYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHJldHVybiB0b1hZ
WkEodG9MaW5lYXJBOThSR0IoY29sb3IpKTsKKyAgICByZXR1cm4gdG9YWVpBKHRvU1JHQkEoY29s
b3IpKTsKIH0KIAotQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCitIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewotICAg
IHJldHVybiB0b0E5OFJHQih0b0xpbmVhckE5OFJHQihjb2xvcikpOworICAgIHJldHVybiB0b0hT
TEEodG9TUkdCQShjb2xvcikpOwogfQogCiAvLyAtIExDSEEgY29tYmluYXRpb24gZnVuY3Rpb25z
LgpAQCAtNTI0LDE2ICs1MzksMTYgQEAgTENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IFhZWkE8Zmxv
YXQ+JiBjbwogICAgIHJldHVybiB0b0xDSEEodG9MYWIoY29sb3IpKTsKIH0KIAotLy8gLSBIU0xB
IGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4KKy8vIC0gU1JHQiBjb21iaW5hdGlvbiBmdW5jdGlvbnMu
CiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9Y
WVpBKHRvU1JHQkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29s
b3IpKTsKIH0KIAotSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikK
K1NSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICBy
ZXR1cm4gdG9IU0xBKHRvU1JHQkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9TUkdCQSh0b0xpbmVh
clNSR0JBKGNvbG9yKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShy
ZXZpc2lvbiAyNzE5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gVHJhbnNmZXIgZnVuY3Rpb25zIGZvciBjb2xvcnMgdGhhdCBjYW4g
YmUgZ2FtbWEgZW5jb2RlZC4KIAotc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uIHsKK3N0cnVj
dCBBOThSR0JUcmFuc2ZlckZ1bmN0aW9uIHsKICAgICBzdGF0aWMgZmxvYXQgZnJvbUxpbmVhckNs
YW1waW5nKGZsb2F0KTsKICAgICBzdGF0aWMgZmxvYXQgdG9MaW5lYXJDbGFtcGluZyhmbG9hdCk7
CiAgICAgc3RhdGljIGZsb2F0IGZyb21MaW5lYXJOb25DbGFtcGluZyhmbG9hdCk7CiAgICAgc3Rh
dGljIGZsb2F0IHRvTGluZWFyTm9uQ2xhbXBpbmcoZmxvYXQpOwogfTsKIAotc3RydWN0IEE5OFJH
QlRyYW5zZmVyRnVuY3Rpb24geworc3RydWN0IFNSR0JUcmFuc2ZlckZ1bmN0aW9uIHsKICAgICBz
dGF0aWMgZmxvYXQgZnJvbUxpbmVhckNsYW1waW5nKGZsb2F0KTsKICAgICBzdGF0aWMgZmxvYXQg
dG9MaW5lYXJDbGFtcGluZyhmbG9hdCk7CiAgICAgc3RhdGljIGZsb2F0IGZyb21MaW5lYXJOb25D
bGFtcGluZyhmbG9hdCk7CkBAIC01MywzMCArNTMsMTEgQEAgc3RydWN0IEE5OFJHQlRyYW5zZmVy
RnVuY3Rpb24gewogLy8gc29tZSBtYXkgYmUgaW50ZWdyYWwgdG8gdGhlIGJhc2UgY29udmVyc2lv
bi4KIAogCi0vLyBTUkdCQQotV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0
IFNSR0JBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29u
c3QgWFlaQTxmbG9hdD4mKTsKLS8vIEFkZGl0aW9ucwotV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JH
QkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VY
UE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci0KLS8vIEV4dGVu
ZGVkU1JHQkEKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBFeHRlbmRl
ZFNSR0JBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9F
eHRlbmRlZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7Ci0vLyBBZGRpdGlvbnMKLVdFQkNPUkVf
RVhQT1JUIExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShj
b25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYpOwotCi0vLyBMaW5lYXJTUkdCQQotV0VCQ09SRV9F
WFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotV0VC
Q09SRV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxm
bG9hdD4mKTsKLS8vIEFkZGl0aW9ucwotV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JH
QkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0KLS8vIExpbmVhckV4dGVuZGVkU1JHQkEK
LVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJFeHRlbmRlZFNS
R0JBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4g
dG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBOThSR0IKK1dF
QkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBBOThSR0I8ZmxvYXQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7
CiAvLyBBZGRpdGlvbnMKLVdFQkNPUkVfRVhQT1JUIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0
ZW5kZWRTUkdCQShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBBOThSR0I8Zmxv
YXQ+Jik7CiAKIC8vIERpc3BsYXlQMwogV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpB
KGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKQEAgLTg0LDE3ICs2NSwxNyBAQCBXRUJDT1JFX0VY
UE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxhCiAvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQ
T1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxh
eVAzPGZsb2F0PiYpOwogCi0vLyBMaW5lYXJEaXNwbGF5UDMKLVdFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VY
UE9SVCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLyBFeHRlbmRlZFNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEV4dGVu
ZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOwogLy8g
QWRkaXRpb25zCi1XRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhckV4dGVu
ZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBFeHRlbmRlZFNSR0JB
PGZsb2F0PiYpOwogCi0vLyBMYWIKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShj
b25zdCBMYWI8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBMYWI8ZmxvYXQ+IHRvTGFiKGNvbnN0
IFhZWkE8ZmxvYXQ+Jik7CisvLyBIU0xBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZ
WkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNM
QShjb25zdCBYWVpBPGZsb2F0PiYpOwogLy8gQWRkaXRpb25zCi1XRUJDT1JFX0VYUE9SVCBMQ0hB
PGZsb2F0PiB0b0xDSEEoY29uc3QgTGFiPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKIAogLy8gTENIQQogV0VCQ09SRV9F
WFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExDSEE8ZmxvYXQ+Jik7CkBAIC0xMDIsMTcg
KzgzLDExIEBAIFdFQkNPUkVfRVhQT1JUIExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCAKIC8vIEFk
ZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGFiPGZsb2F0PiB0b0xhYihjb25zdCBMQ0hBPGZsb2F0
PiYpOwogCi0vLyBIU0xBCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
SFNMQTxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBY
WVpBPGZsb2F0PiYpOwotLy8gQWRkaXRpb25zCi1XRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4g
dG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYpOwotCi0vLyBBOThSR0IKLVdFQkNPUkVfRVhQT1JU
IFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBBOThSR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9S
VCBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBMYWIKK1dF
QkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMYWI8ZmxvYXQ+Jik7CitXRUJD
T1JFX0VYUE9SVCBMYWI8ZmxvYXQ+IHRvTGFiKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CiAvLyBBZGRp
dGlvbnMKLVdFQkNPUkVfRVhQT1JUIExpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJBOThSR0Io
Y29uc3QgQTk4UkdCPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTENIQTxmbG9hdD4gdG9MQ0hB
KGNvbnN0IExhYjxmbG9hdD4mKTsKIAogLy8gTGluZWFyQTk4UkdCCiBXRUJDT1JFX0VYUE9SVCBY
WVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYpOwpAQCAtMTIwLDIw
ICs5NSw0NiBAQCBXRUJDT1JFX0VYUE9SVCBMaW5lYXJBOThSR0I8ZmxvYXQ+IHRvTGluCiAvLyBB
ZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIEE5OFJHQjxmbG9hdD4gdG9BOThSR0IoY29uc3QgTGlu
ZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpOwogCisvLyBMaW5lYXJEaXNwbGF5UDMKK1dFQkNPUkVf
RVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7
CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAz
KGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKK1dFQkNPUkVfRVhQT1JUIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOwor
CisvLyBMaW5lYXJFeHRlbmRlZFNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZ
WkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExp
bmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBYWVpB
PGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJDT1JFX0VYUE9SVCBFeHRlbmRlZFNSR0JBPGZs
b2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mKTsK
KworLy8gTGluZWFyU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25z
dCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZsb2F0
PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKK1dFQkNP
UkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYp
OworCisvLyBTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNS
R0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8
ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKIAogLy8gSWRlbnRp
dHkgY29udmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykuCiAKLWNvbnN0ZXhw
ciBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVy
biBjb2xvcjsgfQotY29uc3RleHByIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdC
QShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Ci1j
b25zdGV4cHIgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgTGluZWFyU1JH
QkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KLWNvbnN0ZXhwciBMaW5lYXJFeHRl
bmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5k
ZWRTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIEE5OFJH
QjxmbG9hdD4gdG9BOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNv
bG9yOyB9CiBjb25zdGV4cHIgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBEaXNw
bGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KLWNvbnN0ZXhwciBMaW5lYXJE
aXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxm
bG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQotY29uc3RleHByIExhYjxmbG9hdD4gdG9M
YWIoY29uc3QgTGFiPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Ci1jb25zdGV4cHIg
TENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IExDSEE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KK2NvbnN0ZXhwciBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29u
c3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3Rl
eHByIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJu
IGNvbG9yOyB9Citjb25zdGV4cHIgTENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IExDSEE8ZmxvYXQ+
JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBMYWI8ZmxvYXQ+IHRvTGFiKGNv
bnN0IExhYjxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIExpbmVh
ckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJBOThSR0IoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYg
Y29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0
PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikg
eyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0
b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNv
bG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIExpbmVhclNSR0JBPGZsb2F0PiB0b0xp
bmVhclNSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9y
OyB9Citjb25zdGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBj
b2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBYWVpBPGZsb2F0PiB0b1hZWkEoY29u
c3QgWFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQotY29uc3RleHByIEE5OFJH
QjxmbG9hdD4gdG9BOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNv
bG9yOyB9CiAKIAogLy8gRmFsbGJhY2sgY29udmVyc2lvbnMuCkBAIC0xNDEsNzUgKzE0Miw3NSBA
QCBjb25zdGV4cHIgQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBBCiAvLyBBbGwgdHlwZXMg
YXJlIHJlcXVpcmVkIHRvIGhhdmUgYSBjb252ZXJzaW9uIHRvIFhZWkEsIHNvIHRoZXNlIGFyZSBn
dWFyYW50ZWVkIHRvIHdvcmsgaWYKIC8vIGFub3RoZXIgb3ZlcmxvYWQgaXMgbm90IGFscmVhZHkg
cHJvdmlkZWQuCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IFQmIGNvbG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCPGZsb2F0PiB0b0E5OFJH
Qihjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsK
KyAgICByZXR1cm4gdG9BOThSR0IodG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBUJiBjb2xv
cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29u
c3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvRXh0ZW5kZWRTUkdCQSh0b1hZWkEoY29sb3Ip
KTsKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFQmIGNv
bG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRl
ZFNSR0JBKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xpbmVhclNSR0JBKHRvWFla
QShjb2xvcikpOworICAgIHJldHVybiB0b0V4dGVuZGVkU1JHQkEodG9YWVpBKGNvbG9yKSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBUJiBjb2xvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IEhT
TEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9MaW5lYXJF
eHRlbmRlZFNSR0JBKHRvWFlaQShjb2xvcikpOworICAgIHJldHVybiB0b0hTTEEodG9YWVpBKGNv
bG9yKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNw
bGF5UDMoY29uc3QgVCYgY29sb3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMQ0hBPGZsb2F0PiB0
b0xDSEEoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvWFlaQShj
b2xvcikpOworICAgIHJldHVybiB0b0xDSEEodG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29u
c3QgVCYgY29sb3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMYWI8ZmxvYXQ+IHRvTGFiKGNvbnN0
IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xpbmVhckRpc3BsYXlQMyh0b1hZWkEoY29sb3Ip
KTsKKyAgICByZXR1cm4gdG9MYWIodG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IExhYjxmbG9hdD4gdG9MYWIoY29uc3QgVCYgY29sb3IpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBMaW5lYXJBOThSR0I8ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQog
ewotICAgIHJldHVybiB0b0xhYih0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5lYXJB
OThSR0IodG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IExDSEE8Zmxv
YXQ+IHRvTENIQShjb25zdCBUJiBjb2xvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckV4
dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBUJiBjb2xvcikK
IHsKLSAgICByZXR1cm4gdG9MQ0hBKHRvWFlaQShjb2xvcikpOworICAgIHJldHVybiB0b0xpbmVh
ckV4dGVuZGVkU1JHQkEodG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBUJiBjb2xvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgVCYgY29sb3Ip
CiB7Ci0gICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5l
YXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEE5
OFJHQjxmbG9hdD4gdG9BOThSR0IoY29uc3QgVCYgY29sb3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBUJiBjb2xvcikKIHsKLSAg
ICByZXR1cm4gdG9BOThSR0IodG9YWVpBKGNvbG9yKSk7CisgICAgcmV0dXJuIHRvTGluZWFyU1JH
QkEodG9YWVpBKGNvbG9yKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhckE5OFJH
QjxmbG9hdD4gdG9MaW5lYXJBOThSR0IoY29uc3QgVCYgY29sb3IpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4g
dG9MaW5lYXJBOThSR0IodG9YWVpBKGNvbG9yKSk7CisgICAgcmV0dXJuIHRvU1JHQkEodG9YWVpB
KGNvbG9yKSk7CiB9CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4g
Y29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29t
cG9uZW50czxUPiYgY29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYg
ZnVuY3RvcikKIHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3Bh
Y2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rv
cj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOwot
ICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZv
a2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGlu
ZWFyU1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQ
MzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQMzxUPj4oY29tcG9uZW50cykpOwogICAg
IGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgogICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3Rk
Ojpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8QTk4UkdCPFQ+
Pihjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VG
cm9tQ29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMpKTsKICAgICBjYXNlIENvbG9y
U3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5j
dG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPExhYjxUPj4oY29tcG9uZW50cykpOwor
ICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gc3RkOjppbnZv
a2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGlu
ZWFyU1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Cisg
ICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCShyZXZpc2lvbiAyNzE5
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3MCArMzYsNDAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBTUkdCQTx1aW50OF90PiBvdmVybG9hZHMKLQotc3RhdGljIGNoYXIgZGVj
aW1hbERpZ2l0KHVuc2lnbmVkIG51bWJlcikKLXsKLSAgICBBU1NFUlQobnVtYmVyIDwgMTApOwot
ICAgIHJldHVybiAnMCcgKyBudW1iZXI7Ci19Ci0KLXN0YXRpYyBzdGQ6OmFycmF5PGNoYXIsIDQ+
IGZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDhfdCBhbHBoYSkKLXsK
LSAgICBBU1NFUlQoYWxwaGEgPiAwKTsKLSAgICBBU1NFUlQoYWxwaGEgPCAweEZGKTsKLSAgICBp
ZiAoKChhbHBoYSAqIDEwMCArIDB4N0YpIC8gMHhGRiAqIDB4RkYgKyA1MCkgLyAxMDAgIT0gYWxw
aGEpCi0gICAgICAgIHJldHVybiB7IHsgZGVjaW1hbERpZ2l0KGFscGhhICogMTAgLyAweEZGICUg
MTApLCBkZWNpbWFsRGlnaXQoYWxwaGEgKiAxMDAgLyAweEZGICUgMTApLCBkZWNpbWFsRGlnaXQo
KGFscGhhICogMTAwMCArIDB4N0YpIC8gMHhGRiAlIDEwKSwgJ1wwJyB9IH07Ci0gICAgaWYgKGlu
dCB0aGlyZERpZ2l0ID0gKGFscGhhICogMTAwICsgMHg3RikgLyAweEZGICUgMTApCi0gICAgICAg
IHJldHVybiB7IHsgZGVjaW1hbERpZ2l0KGFscGhhICogMTAgLyAweEZGKSwgZGVjaW1hbERpZ2l0
KHRoaXJkRGlnaXQpLCAnXDAnLCAnXDAnIH0gfTsKLSAgICByZXR1cm4geyB7IGRlY2ltYWxEaWdp
dCgoYWxwaGEgKiAxMCArIDB4N0YpIC8gMHhGRiksICdcMCcsICdcMCcsICdcMCcgfSB9OwotfQot
Ci1TdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhTUkdCQTx1aW50OF90PiBjb2xvcikKK1N0cmlu
ZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhdXRvIFty
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0gPSBjb2xvcjsKLSAgICBzd2l0Y2ggKGFscGhhKSB7Ci0g
ICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdiYSgiLCByZWQsICIsICIs
IGdyZWVuLCAiLCAiLCBibHVlLCAiLCAwKSIpOwotICAgIGNhc2UgMHhGRjoKLSAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoInJnYigiLCByZWQsICIsICIsIGdyZWVuLCAiLCAiLCBibHVlLCAnKScp
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2JhKCIsIHJlZCwg
IiwgIiwgZ3JlZW4sICIsICIsIGJsdWUsICIsIDAuIiwgZnJhY3Rpb25EaWdpdHNGb3JGcmFjdGlv
bmFsQWxwaGFWYWx1ZShhbHBoYSkuZGF0YSgpLCAnKScpOwotICAgIH0KKyAgICByZXR1cm4gY29s
b3IuY2FsbE9uVW5kZXJseWluZ1R5cGUoW10gKGF1dG8gdW5kZXJseWluZ0NvbG9yKSB7CisgICAg
ICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9yQ1NTKHVuZGVybHlpbmdDb2xvcik7CisgICAgfSk7
CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChTUkdCQTx1aW50OF90PiBjb2xvcikK
K1N0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAg
YXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdID0gY29sb3I7Ci0gICAgaWYgKGFscGhhID09
IDB4RkYpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZCwgMiwgTG93ZXJj
YXNlKSwgaGV4KGdyZWVuLCAyLCBMb3dlcmNhc2UpLCBoZXgoYmx1ZSwgMiwgTG93ZXJjYXNlKSk7
Ci0gICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IpOworICAgIHJldHVybiBjb2xv
ci5jYWxsT25VbmRlcmx5aW5nVHlwZShbXSAoYXV0byB1bmRlcmx5aW5nQ29sb3IpIHsKKyAgICAg
ICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JIVE1MKHVuZGVybHlpbmdDb2xvcik7CisgICAgfSk7
CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChTUkdCQTx1aW50
OF90PiBjb2xvcikKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdID0g
Y29sb3I7Ci0gICAgaWYgKGFscGhhIDwgMHhGRikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
JyMnLCBoZXgocmVkLCAyKSwgaGV4KGdyZWVuLCAyKSwgaGV4KGJsdWUsIDIpLCBoZXgoYWxwaGEs
IDIpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWQsIDIpLCBoZXgoZ3JlZW4s
IDIpLCBoZXgoYmx1ZSwgMikpOworICAgIHJldHVybiBjb2xvci5jYWxsT25VbmRlcmx5aW5nVHlw
ZShbXSAoYXV0byB1bmRlcmx5aW5nQ29sb3IpIHsKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6YXRp
b25Gb3JSZW5kZXJUcmVlQXNUZXh0KHVuZGVybHlpbmdDb2xvcik7CisgICAgfSk7CiB9CiAKLQot
Ly8gRXh0ZW5kZWRDb2xvciBvdmVybG9hZHMKLQogc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZXJpYWxp
emF0aW9uKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2Up
IHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiAic3JnYiJfczsK
LSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuICJsaW5lYXIt
c3JnYiJfczsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJu
ICJkaXNwbGF5LXAzIl9zOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgogICAgICAgICBy
ZXR1cm4gImE5OC1yZ2IiX3M7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAg
ICAgIHJldHVybiAiZGlzcGxheS1wMyJfczsKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAg
ICAgICAgcmV0dXJuICJsYWIiX3M7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Cisg
ICAgICAgIHJldHVybiAibGluZWFyLXNyZ2IiX3M7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdC
OgorICAgICAgICByZXR1cm4gInNyZ2IiX3M7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xMTQsMTE3ICs4NCwxNDIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
PiBzdGF0aWMgU3RyaQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJjb2xvcigiLCBzZXJpYWxpemF0
aW9uKGNvbG9yLmNvbG9yU3BhY2UpLCAnICcsIGMxLCAnICcsIGMyLCAnICcsIGMzLCAiIC8gIiwg
YWxwaGEsICcpJyk7CiB9CiAKLS8vIFNSR0JBPGZsb2F0PiBvdmVybG9hZHMKKy8vIE1BUks6IEE5
OFJHQjxmbG9hdD4gb3ZlcmxvYWRzCiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0
IFNSR0JBPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBB
OThSR0I8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gc2VyaWFsaXphdGlvbihjb2xvcik7
CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBTUkdCQTxmbG9hdD4mIGNv
bG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IEE5OFJHQjxmbG9hdD4mIGNv
bG9yKQogewogICAgIHJldHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKIH0KIAotU3RyaW5nIHNl
cmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3Ip
CitTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgQTk4UkdCPGZs
b2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOwogfQogCi0v
LyBMaW5lYXJTUkdCQTxmbG9hdD4gb3ZlcmxvYWRzCisvLyBNQVJLOiBEaXNwbGF5UDM8ZmxvYXQ+
IG92ZXJsb2FkcwogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgRGlzcGxh
eVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOwog
fQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+
JiBjb2xvcikKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBEaXNwbGF5UDM8Zmxv
YXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gc2VyaWFsaXphdGlvbihjb2xvcik7CiB9CiAKLVN0
cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBMaW5lYXJTUkdCQTxm
bG9hdD4mIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNv
bnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiBzZXJpYWxpemF0aW9u
KGNvbG9yKTsKIH0KIAotLy8gRGlzcGxheVAzPGZsb2F0PiBvdmVybG9hZHMKKy8vIE1BUks6IExh
YjxmbG9hdD4gb3ZlcmxvYWRzCiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IERp
c3BsYXlQMzxmbG9hdD4mIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3Qg
TGFiPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOwor
ICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtY29sb3ItNC8jc2VyaWFsaXppbmctbGFi
LWxjaAorCisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29sb3I7CisgICAgaWYgKFdU
Rjo6YXJlRXNzZW50aWFsbHlFcXVhbChhbHBoYSwgMS4wZikpCisgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKCJsYWIoIiwgYzEsICIlICIsIGMyLCAnICcsIGMzLCAnKScpOworICAgIHJldHVybiBt
YWtlU3RyaW5nKCJsYWIoIiwgYzEsICIlICIsIGMyLCAnICcsIGMzLCAiIC8gIiwgYWxwaGEsICcp
Jyk7CiB9CiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBEaXNwbGF5UDM8Zmxv
YXQ+JiBjb2xvcikKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBMYWI8ZmxvYXQ+
JiBjb2xvcikKIHsKLSAgICByZXR1cm4gc2VyaWFsaXphdGlvbihjb2xvcik7CisgICAgcmV0dXJu
IHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IpOwogfQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZv
clJlbmRlclRyZWVBc1RleHQoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitTdHJpbmcg
c2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgTGFiPGZsb2F0PiYgY29sb3Ip
CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6YXRpb24oY29sb3IpOworICAgIHJldHVybiBzZXJpYWxp
emF0aW9uRm9yQ1NTKGNvbG9yKTsKIH0KIAotLy8gQTk4UkdCPGZsb2F0PiBvdmVybG9hZHMKKy8v
IE1BUks6IExpbmVhclNSR0JBPGZsb2F0PiBvdmVybG9hZHMKIAotU3RyaW5nIHNlcmlhbGl6YXRp
b25Gb3JDU1MoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlv
bkZvckNTUyhjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiBz
ZXJpYWxpemF0aW9uKGNvbG9yKTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNv
bnN0IEE5OFJHQjxmbG9hdD4mIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNv
bnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHNlcmlhbGl6YXRp
b24oY29sb3IpOwogfQogCi1TdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQo
Y29uc3QgQTk4UkdCPGZsb2F0PiYgY29sb3IpCitTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRl
clRyZWVBc1RleHQoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1
cm4gc2VyaWFsaXphdGlvbihjb2xvcik7CiB9CiAKLS8vIExhYjxmbG9hdD4gb3ZlcmxvYWRzCisv
LyBNQVJLOiBTUkdCQTxmbG9hdD4gb3ZlcmxvYWRzCiAKLVN0cmluZyBzZXJpYWxpemF0aW9uRm9y
Q1NTKGNvbnN0IExhYjxmbG9hdD4mIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1Mo
Y29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICAvLyBodHRwczovL3d3dy53My5vcmcv
VFIvY3NzLWNvbG9yLTQvI3NlcmlhbGl6aW5nLWxhYi1sY2gKKyAgICByZXR1cm4gc2VyaWFsaXph
dGlvbihjb2xvcik7Cit9CiAKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb2xvcjsK
LSAgICBpZiAoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFscGhhLCAxLjBmKSkKLSAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoImxhYigiLCBjMSwgIiUgIiwgYzIsICcgJywgYzMsICcpJyk7Ci0g
ICAgcmV0dXJuIG1ha2VTdHJpbmcoImxhYigiLCBjMSwgIiUgIiwgYzIsICcgJywgYzMsICIgLyAi
LCBhbHBoYSwgJyknKTsKK1N0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBTUkdCQTxm
bG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKIH0KIAot
U3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IExhYjxmbG9hdD4mIGNvbG9yKQorU3Ry
aW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IFNSR0JBPGZsb2F0PiYg
Y29sb3IpCiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IpOworICAgIHJl
dHVybiBzZXJpYWxpemF0aW9uKGNvbG9yKTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JS
ZW5kZXJUcmVlQXNUZXh0KGNvbnN0IExhYjxmbG9hdD4mIGNvbG9yKQorLy8gTUFSSzogU1JHQkE8
dWludDhfdD4gb3ZlcmxvYWRzCisKK3N0YXRpYyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25lZCBu
dW1iZXIpCiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IpOworICAgIEFT
U0VSVChudW1iZXIgPCAxMCk7CisgICAgcmV0dXJuICcwJyArIG51bWJlcjsKIH0KIAotLy8gQ29s
b3Igb3ZlcmxvYWRzCitzdGF0aWMgc3RkOjphcnJheTxjaGFyLCA0PiBmcmFjdGlvbkRpZ2l0c0Zv
ckZyYWN0aW9uYWxBbHBoYVZhbHVlKHVpbnQ4X3QgYWxwaGEpCit7CisgICAgQVNTRVJUKGFscGhh
ID4gMCk7CisgICAgQVNTRVJUKGFscGhhIDwgMHhGRik7CisgICAgaWYgKCgoYWxwaGEgKiAxMDAg
KyAweDdGKSAvIDB4RkYgKiAweEZGICsgNTApIC8gMTAwICE9IGFscGhhKQorICAgICAgICByZXR1
cm4geyB7IGRlY2ltYWxEaWdpdChhbHBoYSAqIDEwIC8gMHhGRiAlIDEwKSwgZGVjaW1hbERpZ2l0
KGFscGhhICogMTAwIC8gMHhGRiAlIDEwKSwgZGVjaW1hbERpZ2l0KChhbHBoYSAqIDEwMDAgKyAw
eDdGKSAvIDB4RkYgJSAxMCksICdcMCcgfSB9OworICAgIGlmIChpbnQgdGhpcmREaWdpdCA9IChh
bHBoYSAqIDEwMCArIDB4N0YpIC8gMHhGRiAlIDEwKQorICAgICAgICByZXR1cm4geyB7IGRlY2lt
YWxEaWdpdChhbHBoYSAqIDEwIC8gMHhGRiksIGRlY2ltYWxEaWdpdCh0aGlyZERpZ2l0KSwgJ1ww
JywgJ1wwJyB9IH07CisgICAgcmV0dXJuIHsgeyBkZWNpbWFsRGlnaXQoKGFscGhhICogMTAgKyAw
eDdGKSAvIDB4RkYpLCAnXDAnLCAnXDAnLCAnXDAnIH0gfTsKK30KIAotU3RyaW5nIHNlcmlhbGl6
YXRpb25Gb3JDU1MoY29uc3QgQ29sb3ImIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JD
U1MoU1JHQkE8dWludDhfdD4gY29sb3IpCiB7Ci0gICAgcmV0dXJuIGNvbG9yLmNhbGxPblVuZGVy
bHlpbmdUeXBlKFtdIChhdXRvIHVuZGVybHlpbmdDb2xvcikgewotICAgICAgICByZXR1cm4gc2Vy
aWFsaXphdGlvbkZvckNTUyh1bmRlcmx5aW5nQ29sb3IpOwotICAgIH0pOworICAgIGF1dG8gW3Jl
ZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yOworICAgIHN3aXRjaCAoYWxwaGEpIHsKKyAg
ICBjYXNlIDA6CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2JhKCIsIHJlZCwgIiwgIiwg
Z3JlZW4sICIsICIsIGJsdWUsICIsIDApIik7CisgICAgY2FzZSAweEZGOgorICAgICAgICByZXR1
cm4gbWFrZVN0cmluZygicmdiKCIsIHJlZCwgIiwgIiwgZ3JlZW4sICIsICIsIGJsdWUsICcpJyk7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkLCAi
LCAiLCBncmVlbiwgIiwgIiwgYmx1ZSwgIiwgMC4iLCBmcmFjdGlvbkRpZ2l0c0ZvckZyYWN0aW9u
YWxBbHBoYVZhbHVlKGFscGhhKS5kYXRhKCksICcpJyk7CisgICAgfQogfQogCi1TdHJpbmcgc2Vy
aWFsaXphdGlvbkZvckhUTUwoY29uc3QgQ29sb3ImIGNvbG9yKQorU3RyaW5nIHNlcmlhbGl6YXRp
b25Gb3JIVE1MKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQogewotICAgIHJldHVybiBjb2xvci5jYWxs
T25VbmRlcmx5aW5nVHlwZShbXSAoYXV0byB1bmRlcmx5aW5nQ29sb3IpIHsKLSAgICAgICAgcmV0
dXJuIHNlcmlhbGl6YXRpb25Gb3JIVE1MKHVuZGVybHlpbmdDb2xvcik7Ci0gICAgfSk7CisgICAg
YXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdID0gY29sb3I7CisgICAgaWYgKGFscGhhID09
IDB4RkYpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZCwgMiwgTG93ZXJj
YXNlKSwgaGV4KGdyZWVuLCAyLCBMb3dlcmNhc2UpLCBoZXgoYmx1ZSwgMiwgTG93ZXJjYXNlKSk7
CisgICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IpOwogfQogCi1TdHJpbmcgc2Vy
aWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3QgQ29sb3ImIGNvbG9yKQorU3RyaW5n
IHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KFNSR0JBPHVpbnQ4X3Q+IGNvbG9yKQog
ewotICAgIHJldHVybiBjb2xvci5jYWxsT25VbmRlcmx5aW5nVHlwZShbXSAoYXV0byB1bmRlcmx5
aW5nQ29sb3IpIHsKLSAgICAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNU
ZXh0KHVuZGVybHlpbmdDb2xvcik7Ci0gICAgfSk7CisgICAgYXV0byBbcmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGFdID0gY29sb3I7CisgICAgaWYgKGFscGhhIDwgMHhGRikKKyAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkLCAyKSwgaGV4KGdyZWVuLCAyKSwgaGV4KGJsdWUsIDIp
LCBoZXgoYWxwaGEsIDIpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWQsIDIp
LCBoZXgoZ3JlZW4sIDIpLCBoZXgoYmx1ZSwgMikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uaAko
cmV2aXNpb24gMjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JTZXJpYWxpemF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMyICs0MSwzNCBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwogLy8gc2VyaWFsaXphdGlvbkZvckNTUyByZXR1
cm5zIHRoZSBjb2xvciBzZXJpYWxpemVkIGFjY29yZGluZyB0byBDU1MKIC8vIHNlcmlhbGl6YXRp
b25Gb3JSZW5kZXJUcmVlQXNUZXh0IHJldHVybnMgdGhlIGNvbG9yIHNlcmlhbGl6ZWQgZm9yIER1
bXBSZW5kZXJUcmVlLCAjUlJHR0JCLCAjUlJHR0JCQUEgb3IgdGhlIENTUyBzZXJpYWxpemF0aW9u
CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKFNSR0JBPHVpbnQ4
X3Q+KTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChTUkdCQTx1
aW50OF90Pik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQoU1JHQkE8dWludDhfdD4pOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6
YXRpb25Gb3JDU1MoY29uc3QgQ29sb3ImKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxp
emF0aW9uRm9ySFRNTChjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlh
bGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IENvbG9yJik7CiAKLVdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IFNSR0JBPGZsb2F0
PiYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNU
ZXh0KGNvbnN0IFNSR0JBPGZsb2F0PiYpOworLy8gUGVyLUNvbG9yVHlwZSBzcGVjaWFsaXphdGlv
bnMuCiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IExp
bmVhclNSR0JBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25G
b3JIVE1MKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgQTk4
UkdCPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JIVE1M
KGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0
aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBBOThSR0I8ZmxvYXQ+Jik7CiAKIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4m
KTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTChjb25zdCBEaXNw
bGF5UDM8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJl
bmRlclRyZWVBc1RleHQoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwogCi1XRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBBOThSR0I8ZmxvYXQ+Jik7Ci1XRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgQTk4UkdCPGZsb2F0
PiYpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNU
ZXh0KGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKLQogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlh
bGl6YXRpb25Gb3JDU1MoY29uc3QgTGFiPGZsb2F0PiYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IExhYjxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dChjb25zdCBMYWI8ZmxvYXQ+
Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbnN0IENv
bG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3Qg
Q29sb3ImKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJl
ZUFzVGV4dChjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRp
b25Gb3JDU1MoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc2VyaWFsaXphdGlvbkZvckhUTUwoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CitXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoY29uc3Qg
TGluZWFyU1JHQkE8ZmxvYXQ+Jik7CisKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemF0
aW9uRm9yQ1NTKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNl
cmlhbGl6YXRpb25Gb3JIVE1MKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KGNvbnN0IFNSR0JBPGZsb2F0
PiYpOworCitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhTUkdCQTx1
aW50OF90Pik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoU1JH
QkE8dWludDhfdD4pOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KFNSR0JBPHVpbnQ4X3Q+KTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3MTk5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywyMSArMzMsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQog
ewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoK
LSAgICAgICAgdHMgPDwgInNSR0IiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3Bh
Y2U6OkxpbmVhclJHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclJHQiI7CisgICAgY2FzZSBDb2xv
clNwYWNlOjpBOThSR0I6CisgICAgICAgIHRzIDw8ICJhOTgtcmdiIjsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CiAgICAgICAgIHRzIDw8ICJEaXNwbGF5
UDMiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkE5OFJHQjoKLSAgICAg
ICAgdHMgPDwgImE5OC1yZ2IiOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENvbG9yU3BhY2U6
OkxhYjoKICAgICAgICAgdHMgPDwgIkwqYSpiIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJzUkdC
IjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0czsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3
MTk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDExIEBAIGNsYXNzIFRleHRTdHJlYW07CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewotICAg
IFNSR0IsCi0gICAgTGluZWFyUkdCLAotICAgIERpc3BsYXlQMywKICAgICBBOThSR0IsCi0gICAg
TGFiCisgICAgRGlzcGxheVAzLAorICAgIExhYiwKKyAgICBMaW5lYXJSR0IsCisgICAgU1JHQiwK
IH07CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI3MTk5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTA2ICszMSwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgU1JHQkE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkU1JHQkE7
Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwotdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNSR0JBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBEaXNwbGF5UDM7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckRpc3BsYXlQMzsK
IHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQTk4UkdCOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBMaW5lYXJBOThSR0I7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExhYjsKLXRlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTENIQTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSFNM
QTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgWFlaOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IEFscGhhVHJhaXRzOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czx1aW50
OF90PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHRyYW5zcGFyZW50ID0gMDsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qgb3BhcXVlID0gMjU1OwotfTsKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgQWxwaGFUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0
IHRyYW5zcGFyZW50ID0gMC4wZjsKLSAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0IG9wYXF1ZSA9
IDEuMGY7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRS
YW5nZSB7Ci0gICAgVCBtaW47Ci0gICAgVCBtYXg7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IFJHQk1vZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVu
dFJhbmdlOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5UDM7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IEV4dGVuZGVkUkdCTW9kZWw7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IExhYk1vZGVsOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMQ0hNb2RlbDsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgSFNMQTsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSFNMTW9kZWw7Cit0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IExDSEE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExDSE1v
ZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMYWI7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IExhYk1vZGVsOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJBOThSR0I7
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhckRpc3BsYXlQMzsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdCQTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgTGluZWFyU1JHQkE7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFJHQk1vZGVsOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgWFlaOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBYWVpNb2RlbDsKIAotdGVtcGxhdGU8
PiBzdHJ1Y3QgUkdCTW9kZWw8dWludDhfdD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjph
cnJheTxDb2xvckNvbXBvbmVudFJhbmdlPHVpbnQ4X3Q+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAg
IHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1IH0sCi0gICAgICAgIHsgMCwgMjU1IH0KLSAg
ICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7Ci19
OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDxmbG9hdD4gewotICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsg
ewotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAgeyAwLCAxIH0sCi0gICAgICAgIHsgMCwgMSB9
Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSB0cnVl
OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRXh0ZW5kZWRSR0JNb2RlbDxmbG9hdD4gewotICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0Piwg
Mz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAg
ICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGli
bGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IExhYk1vZGVsPGZsb2F0PiB7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+
LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAg
ICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IExDSE1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9y
Q29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAgICAgeyAwLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAotICAgICAgICB7IDAsIDM2MCB9Ci0g
ICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsK
LX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhTTE1vZGVsPGZsb2F0PiB7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMg
eyB7Ci0gICAgICAgIHsgMCwgMzYwIH0sCi0gICAgICAgIHsgMCwgMTAwIH0sCi0gICAgICAgIHsg
MCwgMTAwIH0KLSAgICB9IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJs
ZSA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBYWVpNb2RlbDxmbG9hdD4gewotICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBvbmVudFJhbmdlPGZsb2F0Piwg
Mz4gcmFuZ2VzIHsgewotICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKLSAgICAg
ICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0sCi0gICAgICAgIHsgLXN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSB9Ci0gICAgfSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGli
bGUgPSBmYWxzZTsKLX07CiAKKy8vIE1BUks6IE1ha2UgZnVuY3Rpb25zLgogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvclR5cGUgbWFrZUZy
b21Db21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYykKIHsKQEAgLTE3MywyMiAr
OTYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29tcG9uZW50VAogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHM8VD4gY2xhbXBlZENvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21w
b25lbnRzKQogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JU
eXBlLCAwPihjb21wb25lbnRzKSwKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUs
IDE+KGNvbXBvbmVudHMpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMj4o
Y29tcG9uZW50cyksCi0gICAgICAgIGNsYW1wZWRBbHBoYShjb21wb25lbnRzWzNdKQotICAgIH07
CisgICAgcmV0dXJuIHsgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDA+KGNvbXBvbmVudHMp
LCBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMT4oY29tcG9uZW50cyksIGNsYW1wZWRDb21w
b25lbnQ8Q29sb3JUeXBlLCAyPihjb21wb25lbnRzKSwgY2xhbXBlZEFscGhhKGNvbXBvbmVudHNb
M10pIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVD4gY29u
c3RleHByIENvbG9yQ29tcG9uZW50czxUPiBjbGFtcGVkQ29tcG9uZW50c0V4Y2VwdEFscGhhKGNv
bnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cykKIHsKLSAgICByZXR1cm4gewotICAg
ICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMD4oY29tcG9uZW50cyksCi0gICAgICAg
IGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihjb21wb25lbnRzKSwKLSAgICAgICAgY2xh
bXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGNvbXBvbmVudHMpLAotICAgICAgICBjb21wb25l
bnRzWzNdCi0gICAgfTsKKyAgICByZXR1cm4geyBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwg
MD4oY29tcG9uZW50cyksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihjb21wb25lbnRz
KSwgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGNvbXBvbmVudHMpLCBjb21wb25lbnRz
WzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVD4gY29u
c3RleHByIENvbG9yVHlwZSBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZyhjb25zdCBDb2xvckNv
bXBvbmVudHM8VD4mIGNvbXBvbmVudHMpCkBAIC0xOTgsMjIgKzExMSwxMiBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQ+CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9y
VHlwZSwgdHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yVHlwZSBtYWtlRnJvbUNvbXBvbmVudHND
bGFtcGluZyhUIGMxLCBUIGMyLCBUIGMzKQogewotICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVu
dHM8Q29sb3JUeXBlPihDb2xvckNvbXBvbmVudHMgewotICAgICAgICBjbGFtcGVkQ29tcG9uZW50
PENvbG9yVHlwZSwgMD4oYzEpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwg
MT4oYzIpLAotICAgICAgICBjbGFtcGVkQ29tcG9uZW50PENvbG9yVHlwZSwgMj4oYzMpLAotICAg
ICAgICBBbHBoYVRyYWl0czx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+OjpvcGFx
dWUKLSAgICB9KTsKKyAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzPENvbG9yVHlwZT4oQ29s
b3JDb21wb25lbnRzIHsgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDA+KGMxKSwgY2xhbXBl
ZENvbXBvbmVudDxDb2xvclR5cGUsIDE+KGMyKSwgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUs
IDI+KGMzKSwgQWxwaGFUcmFpdHM8dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlPjo6
b3BhcXVlIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQ+
IGNvbnN0ZXhwciBDb2xvclR5cGUgbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmcoVCBjMSwgVCBj
MiwgVCBjMywgVCBhbHBoYSkKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzPENvbG9y
VHlwZT4oQ29sb3JDb21wb25lbnRzIHsKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5
cGUsIDA+KGMxKSwKLSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDE+KGMyKSwK
LSAgICAgICAgY2xhbXBlZENvbXBvbmVudDxDb2xvclR5cGUsIDI+KGMzKSwKLSAgICAgICAgY2xh
bXBlZEFscGhhPFQsIHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4oYWxwaGEpCi0g
ICAgfSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxDb2xvclR5cGU+KENvbG9yQ29t
cG9uZW50cyB7IGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAwPihjMSksIGNsYW1wZWRDb21w
b25lbnQ8Q29sb3JUeXBlLCAxPihjMiksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAyPihj
MyksIGNsYW1wZWRBbHBoYTxULCB0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+KGFs
cGhhKSB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBUPiBj
b25zdGV4cHIgQ29sb3JUeXBlIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGEo
Y29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21wb25lbnRzKQpAQCAtMjIzLDE0ICsxMjYsODkg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBUPgogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFscGhhPiBjb25zdGV4cHIg
Q29sb3JUeXBlIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGEoVCBjMSwgVCBj
MiwgVCBjMywgQWxwaGEgYWxwaGEpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxD
b2xvclR5cGU+KENvbG9yQ29tcG9uZW50cyB7Ci0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29s
b3JUeXBlLCAwPihjMSksCi0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihj
MiksCi0gICAgICAgIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAyPihjMyksCi0gICAgICAg
IGFscGhhCi0gICAgfSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxDb2xvclR5cGU+
KENvbG9yQ29tcG9uZW50cyB7IGNsYW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAwPihjMSksIGNs
YW1wZWRDb21wb25lbnQ8Q29sb3JUeXBlLCAxPihjMiksIGNsYW1wZWRDb21wb25lbnQ8Q29sb3JU
eXBlLCAyPihjMyksIGFscGhhIH0pOwogfQogCisvLyBNQVJLOiAtIE1vZGVscworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBbHBoYVRyYWl0czxmbG9hdD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxv
YXQgdHJhbnNwYXJlbnQgPSAwLjBmOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgb3BhcXVl
ID0gMS4wZjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFscGhhVHJhaXRzPHVpbnQ4X3Q+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdHJhbnNwYXJlbnQgPSAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDhfdCBvcGFxdWUgPSAyNTU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRSYW5nZSB7CisgICAgVCBtaW47CisgICAgVCBtYXg7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFeHRlbmRlZFJHQk1vZGVsPGZsb2F0PiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAz
PiByYW5nZXMgeyB7CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAg
ICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJs
ZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSFNMTW9kZWw8ZmxvYXQ+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4s
IDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAzNjAgfSwKKyAgICAgICAgeyAwLCAxMDAgfSwK
KyAgICAgICAgeyAwLCAxMDAgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IExhYk1vZGVsPGZs
b2F0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFu
Z2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgp
IH0sCisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9CisgICAgfSB9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUgPSBmYWxzZTsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IExDSE1vZGVsPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFy
cmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsg
MCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAw
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IDAs
IDM2MCB9CisgICAgfSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0ludmVydGlibGUg
PSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPGZsb2F0PiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAz
PiByYW5nZXMgeyB7CisgICAgICAgIHsgMCwgMSB9LAorICAgICAgICB7IDAsIDEgfSwKKyAgICAg
ICAgeyAwLCAxIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0
aWJsZSA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBSR0JNb2RlbDx1aW50OF90PiB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8dWlu
dDhfdD4sIDM+IHJhbmdlcyB7IHsKKyAgICAgICAgeyAwLCAyNTUgfSwKKyAgICAgICAgeyAwLCAy
NTUgfSwKKyAgICAgICAgeyAwLCAyNTUgfQorICAgIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNJbnZlcnRpYmxlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFhZWk1v
ZGVsPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9u
ZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5nZXMgeyB7CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSB9LAorICAgICAgICB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAg
eyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpIH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOworfTsKKwogI2lmIEFTU0VSVF9FTkFCTEVECiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciB2b2lkIGFzc2VydEluUmFuZ2UoVCBjb2xv
cikKQEAgLTMyOCwyMCArMzA2LDEzIEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBDb2xvclQKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTUkdCQSA6IFJHQkFUeXBlPFNSR0JB
LCBULCBSR0JNb2RlbDxUPj4gewotICAgIHVzaW5nIFJHQkFUeXBlPFNSR0JBLCBULCBSR0JNb2Rl
bDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyU1JH
QkE8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNl
OjpTUkdCIH07Ci19OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4g
U1JHQkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJTUkdCQSA6IFJH
QkFUeXBlPExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj4gewotICAgIHVzaW5nIFJHQkFUeXBl
PExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIEdhbW1h
RW5jb2RlZENvdW50ZXJwYXJ0ID0gU1JHQkE8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpMaW5lYXJSR0I7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQTk4UkdCIDogUkdCQVR5cGU8QTk4UkdCLCBULCBSR0JNb2RlbDxUPj4geworICAg
IHVzaW5nIFJHQkFUeXBlPEE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKKyAgICB1
c2luZyBMaW5lYXJDb3VudGVycGFydCA9IExpbmVhckE5OFJHQjxUPjsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkE5OFJHQjsKIH07Ci10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBMaW5lYXJTUkdCQShULCBULCBULCBUKSAtPiBMaW5lYXJTUkdCQTxUPjsK
LQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCKFQsIFQsIFQsIFQpIC0+IEE5OFJHQjxUPjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4dGVuZGVkU1JHQkEgOiBSR0JBVHlwZTxF
eHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+PiB7CiAgICAgdXNpbmcgUkdCQVR5
cGU8RXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwpAQCAt
MzQ5LDE5ICszMjAsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4dGVuZGVkU1JH
QgogfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEV4dGVuZGVkU1JHQkEoVCwgVCwgVCwgVCkgLT4g
RXh0ZW5kZWRTUkdCQTxUPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckV4
dGVuZGVkU1JHQkEgOiBSR0JBVHlwZTxMaW5lYXJFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJH
Qk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyRXh0ZW5kZWRTUkdCQSwgVCwg
RXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIEdhbW1hRW5jb2RlZENv
dW50ZXJwYXJ0ID0gRXh0ZW5kZWRTUkdCQTxUPjsKLX07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBM
aW5lYXJFeHRlbmRlZFNSR0JBKFQsIFQsIFQsIFQpIC0+IExpbmVhckV4dGVuZGVkU1JHQkE8VD47
Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6IFJHQkFUeXBlPERp
c3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKLSAgICB1c2luZyBSR0JBVHlwZTxEaXNwbGF5UDMs
IFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7Ci0gICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQg
PSBMaW5lYXJEaXNwbGF5UDM8VD47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3Bh
Y2UgPSBDb2xvclNwYWNlOjpEaXNwbGF5UDM7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
TGluZWFyQTk4UkdCIDogUkdCQVR5cGU8TGluZWFyQTk4UkdCLCBULCBSR0JNb2RlbDxUPj4gewor
ICAgIHVzaW5nIFJHQkFUeXBlPExpbmVhckE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlw
ZTsKKyAgICB1c2luZyBHYW1tYUVuY29kZWRDb3VudGVycGFydCA9IEE5OFJHQjxUPjsKIH07Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlzcGxheVAzPFQ+
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyQTk4UkdCKFQsIFQsIFQsIFQpIC0+IExpbmVh
ckE5OFJHQjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckRpc3BsYXlQ
MyA6IFJHQkFUeXBlPExpbmVhckRpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+IHsKICAgICB1c2lu
ZyBSR0JBVHlwZTxMaW5lYXJEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CkBA
IC0zNjksMjAgKzMzMiwzMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRGlz
cGxhCiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRGlzcGxheVAzKFQsIFQsIFQsIFQp
IC0+IExpbmVhckRpc3BsYXlQMzxUPjsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExp
bmVhckV4dGVuZGVkU1JHQkEgOiBSR0JBVHlwZTxMaW5lYXJFeHRlbmRlZFNSR0JBLCBULCBFeHRl
bmRlZFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyRXh0ZW5kZWRTUkdC
QSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFUeXBlOworICAgIHVzaW5nIEdhbW1hRW5j
b2RlZENvdW50ZXJwYXJ0ID0gRXh0ZW5kZWRTUkdCQTxUPjsKK307Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBMaW5lYXJFeHRlbmRlZFNSR0JBKFQsIFQsIFQsIFQpIC0+IExpbmVhckV4dGVuZGVkU1JH
QkE8VD47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBOThSR0IgOiBSR0JBVHlwZTxB
OThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8QTk4UkdCLCBULCBS
R0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGlu
ZWFyQTk4UkdCPFQ+OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29s
b3JTcGFjZTo6QTk4UkdCOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhclNSR0JB
IDogUkdCQVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdC
QVR5cGU8TGluZWFyU1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcg
R2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBTUkdCQTxUPjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkxpbmVhclJHQjsKIH07Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBBOThSR0IoVCwgVCwgVCwgVCkgLT4gQTk4UkdCPFQ+OwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gTGluZWFyU1JHQkEoVCwgVCwgVCwgVCkgLT4gTGluZWFyU1JHQkE8VD47CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJBOThSR0IgOiBSR0JBVHlwZTxMaW5lYXJB
OThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7Ci0gICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyQTk4UkdC
LCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwotICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50
ZXJwYXJ0ID0gQTk4UkdCPFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIDog
UkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CisgICAgdXNpbmcgUkdCQVR5cGU8U1JH
QkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CisgICAgdXNpbmcgTGluZWFyQ291bnRlcnBh
cnQgPSBMaW5lYXJTUkdCQTxUPjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFj
ZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsKIH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJB
OThSR0IoVCwgVCwgVCwgVCkgLT4gTGluZWFyQTk4UkdCPFQ+OwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4gU1JHQkE8VD47CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBEaXNwbGF5UDMgOiBSR0JBVHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+PiB7
CisgICAgdXNpbmcgUkdCQVR5cGU8RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBl
OworICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGluZWFyRGlzcGxheVAzPFQ+OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6RGlzcGxheVAz
OworfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBUKSAtPiBEaXNw
bGF5UDM8VD47CiAKIC8vIE1BUks6IC0gTGFiIENvbG9yIFR5cGUuCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAko
cmV2aXNpb24gMjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JTcGFjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMzkgKzMzLDE4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCkK
LXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFs
bGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9p
ZHMKLSAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuIFNp
bmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKLSAgICAgICAgLy8gaXMgc1JH
QiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KLSAgICAgICAgLy8gRklYTUU6IElzIHRoaXMg
c3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCi0gICAgICAg
IHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpOwotICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQotICAgICAgICAgICAgc1JHQkNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSNlbHNlCi0gICAgICAg
IHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpOwotI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKLSAgICB9KTsKLSAgICByZXR1cm4gc1JH
QkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVm
KCkKK0NHQ29sb3JTcGFjZVJlZiBhOThSR0JDb2xvclNwYWNlUmVmKCkKIHsKLSAgICBzdGF0aWMg
Q0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2U7CisgICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiBhOThSR0JDb2xvclNwYWNlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJ
TikKLSAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVh
ciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAg
ICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgICAgIGE5OFJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlQWRvYmVSR0IxOTk4KTsKICNlbHNlCi0gICAgICAgIGxp
bmVhclJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlTGluZWFyU1JHQik7CisgICAgICAgIGE5OFJHQkNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFj
ZVJlZigpOwogI2VuZGlmCiAgICAgfSk7Ci0gICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7
CisgICAgcmV0dXJuIGE5OFJHQkNvbG9yU3BhY2U7CiB9CiAKIENHQ29sb3JTcGFjZVJlZiBkaXNw
bGF5UDNDb2xvclNwYWNlUmVmKCkKQEAgLTgyLDE4ICs2MSwyMiBAQCBDR0NvbG9yU3BhY2VSZWYg
ZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpCiAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7
CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBhOThSR0JDb2xvclNwYWNlUmVmKCkKK0NHQ29sb3JTcGFj
ZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIGE5OFJHQkNvbG9yU3BhY2U7CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBleHRl
bmRlZFNSR0JDb2xvclNwYWNlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSA9IG51bGxwdHI7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGE5
OFJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNl
QWRvYmVSR0IxOTk4KTsKLSNlbHNlCi0gICAgICAgIGE5OFJHQkNvbG9yU3BhY2UgPSBzUkdCQ29s
b3JTcGFjZVJlZigpOworICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVkU1JHQik7CiAjZW5kaWYKKyAgICAgICAgLy8gSWYg
dGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0Iu
CisgICAgICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdC
Q29sb3JTcGFjZVJlZigpOworCisgICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xv
clNwYWNlOwogICAgIH0pOwotICAgIHJldHVybiBhOThSR0JDb2xvclNwYWNlOworICAgIHJldHVy
biBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwogfQogCiBDR0NvbG9yU3BhY2VSZWYgbGFiQ29sb3JT
cGFjZVJlZigpCkBAIC0xMDIsMjIgKzg1LDM5IEBAIENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNw
YWNlUmVmKCkKICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKIH0KIAotQ0dDb2xvclNw
YWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQorQ0dDb2xvclNwYWNlUmVmIGxpbmVh
clJHQkNvbG9yU3BhY2VSZWYoKQogewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNv
bG9yU3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlID0gbnVsbHB0cjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgY29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFi
bGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5v
cmcvYi84MDAwMC4KKyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNl
UmVmKCk7CisjZWxzZQorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOwogI2VuZGlmCi0gICAgICAg
IC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0
byBzUkdCLgotICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgICAgICBjb2xvclNwYWNl
ID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gbGluZWFyUkdCQ29s
b3JTcGFjZTsKK30KIAotICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFj
ZTsKK0NHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENH
Q29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9S
TShXSU4pCisgICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3Qg
aG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCisgICAgICAgIC8vIGNh
dXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBj
b2xvciBzcGFjZSBpbiBXaW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtz
IG91dCBuaWNlbHkuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRh
cjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAg
aWYgKCFzUkdCQ29sb3JTcGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xv
clNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyNlbmRpZiAv
LyBQTEFURk9STShXSU4pCiAgICAgfSk7Ci0gICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3Bh
Y2U7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNp
b24gMjcxOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDI2ICszMSwyNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV0VC
Q09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09S
RV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLVdFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yU3BhY2VSZWYgYTk4UkdCQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKIFdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGFiQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiByZWMyMDIwQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7CiAKIHN0YXRpYyBpbmxpbmUg
Q0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2Up
CiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdC
OgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBjYXNlIENvbG9yU3Bh
Y2U6OkxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsK
LSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlQ
M0NvbG9yU3BhY2VSZWYoKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkE5OFJHQjoKICAgICAgICAg
cmV0dXJuIGE5OFJHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKICAgICBjYXNl
IENvbG9yU3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuIGxhYkNvbG9yU3BhY2VSZWYoKTsKKyAg
ICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVy
biBzUkdCQ29sb3JTcGFjZVJlZigpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>