<?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>192625</bug_id>
          
          <creation_ts>2018-12-12 07:49:15 -0800</creation_ts>
          <short_desc>[LFC][BFC][MarginCollapsing] Add support for peculiar cases.</short_desc>
          <delta_ts>2019-01-09 08:09:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487194</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-12-12 07:49:15 -0800</bug_when>
    <thetext>name a couple:
If the top and bottom margins of an element with clearance are adjoining, its margins collapse with the adjoining margins of following siblings but that resulting margin does not collapse with the bottom margin of the parent block.

If the top margin of a box with non-zero computed &apos;min-height&apos; and &apos;auto&apos; computed &apos;height&apos; collapses with the bottom margin of its last in-flow child, then the child&apos;s bottom margin does not collapse with the parent&apos;s bottom margin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487197</commentid>
    <comment_count>1</comment_count>
      <attachid>357130</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-12 08:00:20 -0800</bug_when>
    <thetext>Created attachment 357130
Patch

WIP. Need to split this into smaller patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488384</commentid>
    <comment_count>2</comment_count>
      <attachid>357423</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-16 18:00:43 -0800</bug_when>
    <thetext>Created attachment 357423
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490997</commentid>
    <comment_count>3</comment_count>
      <attachid>358137</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-29 08:46:24 -0800</bug_when>
    <thetext>Created attachment 358137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490998</commentid>
    <comment_count>4</comment_count>
      <attachid>358138</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-29 09:13:08 -0800</bug_when>
    <thetext>Created attachment 358138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491014</commentid>
    <comment_count>5</comment_count>
      <attachid>358142</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-29 18:12:49 -0800</bug_when>
    <thetext>Created attachment 358142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491015</commentid>
    <comment_count>6</comment_count>
      <attachid>358143</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-29 18:23:12 -0800</bug_when>
    <thetext>Created attachment 358143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491017</commentid>
    <comment_count>7</comment_count>
      <attachid>358144</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-29 20:06:06 -0800</bug_when>
    <thetext>Created attachment 358144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492127</commentid>
    <comment_count>8</comment_count>
      <attachid>358455</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-05 21:21:52 -0800</bug_when>
    <thetext>Created attachment 358455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492199</commentid>
    <comment_count>9</comment_count>
      <attachid>358479</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-06 21:48:00 -0800</bug_when>
    <thetext>Created attachment 358479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492595</commentid>
    <comment_count>10</comment_count>
      <attachid>358589</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-08 07:47:25 -0800</bug_when>
    <thetext>Created attachment 358589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492863</commentid>
    <comment_count>11</comment_count>
      <attachid>358670</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-08 21:32:59 -0800</bug_when>
    <thetext>Created attachment 358670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492947</commentid>
    <comment_count>12</comment_count>
      <attachid>358670</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-01-09 07:33:05 -0800</bug_when>
    <thetext>Comment on attachment 358670
Patch

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

&gt; Source/WebCore/layout/MarginTypes.h:79
&gt; +struct EstimatedMarginBefore {
&gt; +    LayoutUnit usedValue;
&gt; +};

I suppose this will have more stuff later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492955</commentid>
    <comment_count>13</comment_count>
      <attachid>358670</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-09 08:08:13 -0800</bug_when>
    <thetext>Comment on attachment 358670
Patch

Clearing flags on attachment: 358670

Committed r239773: &lt;https://trac.webkit.org/changeset/239773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492956</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-09 08:08:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492957</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-09 08:09:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/47146753&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357130</attachid>
            <date>2018-12-12 08:00:20 -0800</date>
            <delta_ts>2018-12-16 18:00:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>81382</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZTY3N2UwMTc0ZjBlZDU4YzE2MmZiNmI3
MTNkZTA5NmIxMWYwZmQzMC4uNDBlN2IyMWM1MzJhNWQ4YzkxMWE4ZmViMzI0YjkyNTBlNjRkYjhk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg5LDggKzg5LDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcmdpblRvcChjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2lu
Qm90dG9tKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgICAgIHN0
YXRpYyBib29sIGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChjb25zdCBCb3gmKTsK
LSAgICAgICAgICAgIHN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudE1h
cmdpbkJvdHRvbShjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJv
dHRvbUNvbGxhcHNlc1dpdGhQYXJlbnQoY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMg
Ym9vbCBtYXJnaW5Ub3BDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQm90dG9tKGNvbnN0IEJveCYp
OwogCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xs
YXBzZWRNYXJnaW5Cb3R0b21Gcm9tTGFzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7CkBAIC0xMDIsNyArMTAyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzdGF0aWMg
TGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29s
bGFwc2VkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAg
ICAgICAgIHN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudChjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2lu
VG9wQ29sbGFwc2VzV2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwor
ICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luVG9wQ29sbGFwc2VzV2l0aFNpYmxpbmcoY29u
c3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5Cb3R0b21Db2xsYXBzZXNX
aXRoU2libGluZyhjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbnND
b2xsYXBzZVRocm91Z2goY29uc3QgQm94Jik7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RhdGlj
IEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhl
aWdodCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKaW5kZXggM2IwOWYzMGNmMWI2OWM4MzdhZGJlM2I4MTgzODAyZWNhODY0MDhjNC4uODE1ZjMz
MjU4YWVmY2U4MjJiNWExOTgyYTRkZTZjZWQ5MWY2MDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtODQsMTQgKzg0LDE0IEBAIEhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnCiAgICAgICAgIC8vIDIuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgYm90
dG9tIChwb3NzaWJseSBjb2xsYXBzZWQpIG1hcmdpbiBvZiBpdHMgbGFzdCBpbi1mbG93IGNoaWxk
LCBpZiB0aGUgY2hpbGQncyBib3R0b20gbWFyZ2luLi4uCiAgICAgICAgIGF1dG8qIGxhc3RJbkZs
b3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQo
KTsKICAgICAgICAgQVNTRVJUKGxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgICAgIGlmICghTWFyZ2lu
Q29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudCgqbGFzdEluRmxvd0No
aWxkKSkgeworICAgICAgICBpZiAoIU1hcmdpbkNvbGxhcHNlOjptYXJnaW5Cb3R0b21Db2xsYXBz
ZXNXaXRoUGFyZW50KCpsYXN0SW5GbG93Q2hpbGQpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXN0
SW5GbG93RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxh
c3RJbkZsb3dDaGlsZCk7CiAgICAgICAgICAgICByZXR1cm4geyBsYXN0SW5GbG93RGlzcGxheUJv
eC5ib3R0b20oKSArIGxhc3RJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpIC0gYm9yZGVy
QW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIDMuIHRoZSBib3R0b20gYm9yZGVyIGVkZ2Ugb2YgdGhlIGxh
c3QgaW4tZmxvdyBjaGlsZCB3aG9zZSB0b3AgbWFyZ2luIGRvZXNuJ3QgY29sbGFwc2Ugd2l0aCB0
aGUgZWxlbWVudCdzIGJvdHRvbSBtYXJnaW4KICAgICAgICAgYXV0byogaW5GbG93Q2hpbGQgPSBs
YXN0SW5GbG93Q2hpbGQ7Ci0gICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBNYXJnaW5Db2xs
YXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKCppbkZsb3dD
aGlsZCkpCisgICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBNYXJnaW5Db2xsYXBzZTo6bWFy
Z2luVG9wQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJvdHRvbSgqaW5GbG93Q2hpbGQpKQogICAg
ICAgICAgICAgaW5GbG93Q2hpbGQgPSBpbkZsb3dDaGlsZC0+cHJldmlvdXNJbkZsb3dTaWJsaW5n
KCk7CiAgICAgICAgIGlmIChpbkZsb3dDaGlsZCkgewogICAgICAgICAgICAgYXV0byYgaW5GbG93
RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmluRmxvd0No
aWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IGJmMWEwOGNjYjY1OWU1NzM1OTM3
Yzc2ZTgyMmU4N2RiYTg4OWU0ODYuLjZmODAyMGJjZThlYzgzZjU0ZjZkMzMxYjcxYTkxNzhjYzUz
MWNkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtNzgsNTMgKzc4LDczIEBAIHN0
YXRpYyBib29sIGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGxh
eW91dEJveCkKICAgICByZXR1cm4gbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5n
Q29udGV4dCgpOwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5WYWx1ZShMYXlvdXRVbml0
IGN1cnJlbnRNYXJnaW5WYWx1ZSwgTGF5b3V0VW5pdCBjYW5kaWRhdGVNYXJnaW5WYWx1ZSkKK3N0
YXRpYyBib29sIGhhc0NsZWFyYW5jZShjb25zdCBCb3gmKQogewotICAgIGlmICghY2FuZGlkYXRl
TWFyZ2luVmFsdWUpCi0gICAgICAgIHJldHVybiBjdXJyZW50TWFyZ2luVmFsdWU7Ci0gICAgaWYg
KCFjdXJyZW50TWFyZ2luVmFsdWUpCi0gICAgICAgIHJldHVybiBjYW5kaWRhdGVNYXJnaW5WYWx1
ZTsKLSAgICAvLyBCb3RoIG1hcmdpbnMgYXJlIHBvc2l0aXZlLgotICAgIGlmIChjYW5kaWRhdGVN
YXJnaW5WYWx1ZSA+IDAgJiYgY3VycmVudE1hcmdpblZhbHVlID4gMCkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KGNhbmRpZGF0ZU1hcmdpblZhbHVlLCBjdXJyZW50TWFyZ2luVmFsdWUpOwotICAg
IC8vIEJvdGggbWFyZ2lucyBhcmUgbmVnYXRpdmUuCi0gICAgaWYgKGNhbmRpZGF0ZU1hcmdpblZh
bHVlIDwgMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPCAwKQotICAgICAgICByZXR1cm4gMCAtIHN0
ZDo6bWF4KHN0ZDo6YWJzKGNhbmRpZGF0ZU1hcmdpblZhbHVlLnRvRmxvYXQoKSksIHN0ZDo6YWJz
KGN1cnJlbnRNYXJnaW5WYWx1ZS50b0Zsb2F0KCkpKTsKLSAgICAvLyBPbmUgb2YgdGhlIG1hcmdp
bnMgaXMgbmVnYXRpdmUuCi0gICAgcmV0dXJuIGN1cnJlbnRNYXJnaW5WYWx1ZSArIGNhbmRpZGF0
ZU1hcmdpblZhbHVlOworICAgIC8vIEZJWE1FOiBVc2UgY29tcHV0ZWQgY2xlYXJhbmNlIGZvciBm
bG9hdCBhdm9pZGluZyBibG9jayBib3hlcy4KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRp
YyBib29sIGlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRC
b3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBz
ZTo6bWFyZ2luVG9wQ29sbGFwc2VzV2l0aFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7
CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICBpZiAobGF5
b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgaWYgKCFsYXlvdXRCb3gucHJldmlv
dXNJbkZsb3dTaWJsaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbGF5
b3V0Qm94LmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0g
KmxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKIAotICAgIC8vIE91dCBvZiBmbG93
IHBvc2l0aW9uZWQuCi0gICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSk7Ci0gICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLnRvcCgpLmlzQXV0bygpOworICAgIC8v
IE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBj
b2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgcHJl
dmlvdXNJbkZsb3dTaWJsaW5nLmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVz
IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSAmJiAhbGF5b3V0Qm94LnN0eWxlKCkudG9wKCkuaXNBdXRvKCkpIAorICAgICAgICB8fCAo
cHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFwcmV2aW91
c0luRmxvd1NpYmxpbmcuc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBj
b2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSB8fCBwcmV2aW91
c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVs
ZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mCisgICAgLy8gaXRz
IG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhh
cyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5jZShsYXlvdXRCb3gpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNNYXJn
aW5Cb3R0b21Db2xsYXBzZWRXaXRoU2libGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKK2Jvb2wg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5C
b3R0b21Db2xsYXBzZXNXaXRoU2libGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBB
U1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAotICAgIGlmIChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICBpZiAoIWxheW91dEJveC5uZXh0SW5GbG93U2li
bGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWxheW91dEJveC5pc1Bv
c2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOworICAgIGF1dG8mIG5leHRJbkZsb3dTaWJsaW5nID0gKmxheW91dEJveC5uZXh0
SW5GbG93U2libGluZygpOworCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3gg
YW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBuZXh0SW5GbG93U2libGluZy5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGFic29s
dXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKChsYXlvdXRC
b3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5zdHlsZSgpLmJvdHRvbSgp
LmlzQXV0bygpKQorICAgICAgICB8fCAobmV4dEluRmxvd1NpYmxpbmcuaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgJiYgIW5leHRJbkZsb3dTaWJsaW5nLnN0eWxlKCkudG9wKCkuaXNBdXRvKCkpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBi
b3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94
KCkgfHwgbmV4dEluRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBPdXQgb2YgZmxvdyBwb3NpdGlvbmVkLgotICAgIEFTU0VSVChs
YXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgIHJldHVybiBsYXlvdXRCb3gu
c3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKTsKKyAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBh
biBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0
b3AgbWFyZ2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5n
LCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5j
ZShuZXh0SW5GbG93U2libGluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJn
aW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUGFyZW50KGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9wQ29sbGFwc2Vz
V2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQogewogICAgIC8vIFRoZSBmaXJzdCBpbmZsb3cgY2hpbGQgY291bGQgcHJvcGFnYXRl
IGl0cyB0b3AgbWFyZ2luIHRvIHBhcmVudC4KICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
Q1NTMjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJnaW5zCkBAIC0xMzMsNyArMTUzLDE2IEBAIGJv
b2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjppc01h
cmdpblRvcENvbGxhcHNlZFdpdGhQCiAKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZl
bEJveCgpKTsKIAotICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRp
b25lZCgpKQorICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3Ro
ZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3Np
dGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJz
b2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0
Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAg
aWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIE9ubHkgdGhlIGZpcnN0IGlubGZsb3cgY2hpbGQgY29sbGFwc2VzIHdpdGggcGFy
ZW50LgpAQCAtMTQxLDQ2ICsxNzAsMTI2IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNlZFdpdGhQCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50
KCk7Ci0gICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sg
Zm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNo
aWxkcmVuCisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxv
Y2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93
IGNoaWxkcmVuLgogICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFy
ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gVGhlIHRvcCBtYXJnaW4gb2Yg
YW4gaW4tZmxvdyBibG9jayBlbGVtZW50IGNvbGxhcHNlcyB3aXRoIGl0cyBmaXJzdCBpbi1mbG93
IGJsb2NrLWxldmVsCisgICAgLy8gY2hpbGQncyB0b3AgbWFyZ2luIGlmIHRoZSBlbGVtZW50IGhh
cyBubyB0b3AgYm9yZGVyLi4uCiAgICAgaWYgKGhhc0JvcmRlckJlZm9yZShwYXJlbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyAuLi5ubyB0b3AgcGFkZGluZwogICAgIGlmICho
YXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8v
IC4uLmFuZCB0aGUgY2hpbGQgaGFzIG5vIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFzQ2xlYXJhbmNl
KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpblRvcChsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkVGhyb3VnaChjb25zdCBCb3gm
IGxheW91dEJveCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5Cb3R0b21Db2xsYXBzZXNXaXRoUGFyZW50KGNvbnN0IEJveCYgbGF5
b3V0Qm94KQogeworICAgIC8vIGxhc3QgaW5mbG93IGJveCB0byBwYXJlbnQuCisgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucworICAg
IGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICAvLyBJZiB0aGUg
dG9wIGFuZCBib3R0b20gbWFyZ2lucyBvZiBhIGJveCBhcmUgYWRqb2luaW5nLCB0aGVuIGl0IGlz
IHBvc3NpYmxlIGZvciBtYXJnaW5zIHRvIGNvbGxhcHNlIHRocm91Z2ggaXQuCisgICAgLy8gTWFy
Z2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxh
cHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Ym94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5s
aW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzSW5s
aW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gT25seSB0aGUg
bGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KKyAgICBpZiAobGF5b3V0
Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7CisgICAgLy8gTWFyZ2lucyBvZiBlbGVt
ZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3Qg
Y29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAgIGlmIChlc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBh
ICdoZWlnaHQnIG9mICdhdXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2Nr
LWxldmVsIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiwgaWY6CisgICAgaWYgKCFwYXJlbnQuc3R5bGUo
KS5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhl
IGJveCBoYXMgbm8gYm90dG9tIHBhZGRpbmcsIGFuZAorICAgIGlmIChoYXNQYWRkaW5nQmVmb3Jl
KHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5v
IGJvdHRvbSBib3JkZXIsIGFuZAorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUocGFyZW50KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gMS4gSWYgdGhlIHRvcCBhbmQgYm90dG9tIG1h
cmdpbnMgb2YgYW4gZWxlbWVudCB3aXRoIGNsZWFyYW5jZSBhcmUgYWRqb2luaW5nLCBpdHMgbWFy
Z2lucyBjb2xsYXBzZSB3aXRoIHRoZSBhZGpvaW5pbmcgbWFyZ2lucworICAgIC8vIG9mIGZvbGxv
d2luZyBzaWJsaW5ncyBidXQgdGhhdCByZXN1bHRpbmcgbWFyZ2luIGRvZXMgbm90IGNvbGxhcHNl
IHdpdGggdGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhcmVudCBibG9jay4KKworICAgIC8vIDIu
IElmIHRoZSB0b3AgbWFyZ2luIG9mIGEgYm94IHdpdGggbm9uLXplcm8gY29tcHV0ZWQgJ21pbi1o
ZWlnaHQnIGFuZCAnYXV0bycgY29tcHV0ZWQgJ2hlaWdodCcgY29sbGFwc2VzIHdpdGggdGhlIGJv
dHRvbQorICAgIC8vIG1hcmdpbiBvZiBpdHMgbGFzdCBpbi1mbG93IGNoaWxkLCB0aGVuIHRoZSBj
aGlsZCdzIGJvdHRvbSBtYXJnaW4gZG9lcyBub3QgY29sbGFwc2Ugd2l0aCB0aGUgcGFyZW50J3Mg
Ym90dG9tIG1hcmdpbgorCisgICAgLy8gRklYTUU6IF5eCisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgQVNT
RVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAgICAvLyBBIGJveCdzIG93biBt
YXJnaW5zIGNvbGxhcHNlIGlmIHRoZSAnbWluLWhlaWdodCcgcHJvcGVydHkgaXMgemVybywgYW5k
IGl0IGhhcyBuZWl0aGVyIHRvcCBvciBib3R0b20gYm9yZGVycyBub3IgdG9wIG9yIGJvdHRvbSBw
YWRkaW5nLAorICAgIC8vIGFuZCBpdCBoYXMgYSAnaGVpZ2h0JyBvZiBlaXRoZXIgMCBvciAnYXV0
bycsIGFuZCBpdCBkb2VzIG5vdCBjb250YWluIGEgbGluZSBib3gsIGFuZCBhbGwgb2YgaXRzIGlu
LWZsb3cgY2hpbGRyZW4ncyBtYXJnaW5zIChpZiBhbnkpIGNvbGxhcHNlLgogICAgIGlmIChoYXNC
b3JkZXJCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNCb3JkZXJBZnRlcihsYXlvdXRCb3gpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gp
IHx8IGhhc1BhZGRpbmdBZnRlcihsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIGNvbXB1dGVkIDAgaGVpZ2h0LgogICAgIGlmICghbGF5
b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkgfHwgIWxheW91dEJveC5zdHlsZSgpLm1p
bkhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWlz
PENvbnRhaW5lcj4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICAvLyBG
SVhNRTogQ2hlY2sgaWYgdGhlIGluZmxvdyBibG9jayBjaGlsZHJlbiBoYXZlIGNvbGxhcHNlZCBt
YXJnaW5zCiAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRC
b3gpOwogICAgIGlmIChjb250YWluZXIuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIG5vIGxp
bmUgYm94IChpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0KS4KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorc3RhdGljIExheW91dFVuaXQgbWFyZ2luVmFsdWUoTGF5b3V0VW5pdCBjdXJyZW50TWFyZ2lu
VmFsdWUsIExheW91dFVuaXQgY2FuZGlkYXRlTWFyZ2luVmFsdWUpCit7CisgICAgaWYgKCFjYW5k
aWRhdGVNYXJnaW5WYWx1ZSkKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJnaW5WYWx1ZTsKKyAg
ICBpZiAoIWN1cnJlbnRNYXJnaW5WYWx1ZSkKKyAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZU1hcmdp
blZhbHVlOworICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgcG9zaXRpdmUuCisgICAgaWYgKGNhbmRp
ZGF0ZU1hcmdpblZhbHVlID4gMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPiAwKQorICAgICAgICBy
ZXR1cm4gc3RkOjptYXgoY2FuZGlkYXRlTWFyZ2luVmFsdWUsIGN1cnJlbnRNYXJnaW5WYWx1ZSk7
CisgICAgLy8gQm90aCBtYXJnaW5zIGFyZSBuZWdhdGl2ZS4KKyAgICBpZiAoY2FuZGlkYXRlTWFy
Z2luVmFsdWUgPCAwICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA8IDApCisgICAgICAgIHJldHVybiAw
IC0gc3RkOjptYXgoc3RkOjphYnMoY2FuZGlkYXRlTWFyZ2luVmFsdWUudG9GbG9hdCgpKSwgc3Rk
OjphYnMoY3VycmVudE1hcmdpblZhbHVlLnRvRmxvYXQoKSkpOworICAgIC8vIE9uZSBvZiB0aGUg
bWFyZ2lucyBpcyBuZWdhdGl2ZS4KKyAgICByZXR1cm4gY3VycmVudE1hcmdpblZhbHVlICsgY2Fu
ZGlkYXRlTWFyZ2luVmFsdWU7Cit9CisKIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RD
aGlsZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwpAQCAtMTk1LDcg
KzMwNCw3IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1h
cmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRNYXJnaW5Ub3BGCiAKICAgICAvLyBGSVhNRTogVGFrZSBj
b2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4gaW50byBhY2NvdW50LgogICAgIGF1dG8mIGZpcnN0SW5G
bG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hp
bGQoKTsKLSAgICBpZiAoIWlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudChsYXlvdXRTdGF0
ZSwgZmlyc3RJbkZsb3dDaGlsZCkpCisgICAgaWYgKCFtYXJnaW5Ub3BDb2xsYXBzZXNXaXRoUGFy
ZW50KGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2luIHRvcCByZWN1cnNpdmVseS4KICAgICByZXR1
cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUs
IGZpcnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChsYXlv
dXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpOwpAQCAtMjA5LDIwICszMTgsNiBAQCBMYXlvdXRV
bml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bm9u
Q29sbGFwc2VkTWFyZ2luVAogICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxh
cHNlZE1hcmdpblRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luVG9w
RnJvbUZpcnN0Q2hpbGQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwogfQogCi0vKnN0YXRpYyBi
b29sIGhhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJvdHRvbShjb25zdCBCb3gmKQotewotICAgIC8v
IFR3byBtYXJnaW5zIGFyZSBhZGpvaW5pbmcgaWYgYW5kIG9ubHkgaWY6Ci0gICAgLy8gMS4gYm90
aCBiZWxvbmcgdG8gaW4tZmxvdyBibG9jay1sZXZlbCBib3hlcyB0aGF0IHBhcnRpY2lwYXRlIGlu
IHRoZSBzYW1lIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dAotICAgIC8vIDIuIG5vIGxpbmUgYm94
ZXMsIG5vIGNsZWFyYW5jZSwgbm8gcGFkZGluZyBhbmQgbm8gYm9yZGVyIHNlcGFyYXRlIHRoZW0g
KE5vdGUgdGhhdCBjZXJ0YWluIHplcm8taGVpZ2h0IGxpbmUgYm94ZXMgKHNlZSA5LjQuMikgYXJl
IGlnbm9yZWQgZm9yIHRoaXMgcHVycG9zZS4pCi0gICAgLy8gMy4gYm90aCBiZWxvbmcgdG8gdmVy
dGljYWxseS1hZGphY2VudCBib3ggZWRnZXMsIGkuZS4gZm9ybSBvbmUgb2YgdGhlIGZvbGxvd2lu
ZyBwYWlyczoKLSAgICAvLyAgICAgICAgdG9wIG1hcmdpbiBvZiBhIGJveCBhbmQgdG9wIG1hcmdp
biBvZiBpdHMgZmlyc3QgaW4tZmxvdyBjaGlsZAotICAgIC8vICAgICAgICBib3R0b20gbWFyZ2lu
IG9mIGJveCBhbmQgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1mbG93IGZvbGxvd2luZyBzaWJs
aW5nCi0gICAgLy8gICAgICAgIGJvdHRvbSBtYXJnaW4gb2YgYSBsYXN0IGluLWZsb3cgY2hpbGQg
YW5kIGJvdHRvbSBtYXJnaW4gb2YgaXRzIHBhcmVudCBpZiB0aGUgcGFyZW50IGhhcyAnYXV0bycg
Y29tcHV0ZWQgaGVpZ2h0Ci0gICAgLy8gICAgICAgIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb2Yg
YSBib3ggdGhhdCBkb2VzIG5vdCBlc3RhYmxpc2ggYSBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250
ZXh0IGFuZCB0aGF0IGhhcyB6ZXJvIGNvbXB1dGVkICdtaW4taGVpZ2h0JywKLSAgICAvLyAgICAg
ICAgemVybyBvciAnYXV0bycgY29tcHV0ZWQgJ2hlaWdodCcsIGFuZCBubyBpbi1mbG93IGNoaWxk
cmVuCi0gICAgLy8gQSBjb2xsYXBzZWQgbWFyZ2luIGlzIGNvbnNpZGVyZWQgYWRqb2luaW5nIHRv
IGFub3RoZXIgbWFyZ2luIGlmIGFueSBvZiBpdHMgY29tcG9uZW50IG1hcmdpbnMgaXMgYWRqb2lu
aW5nIHRvIHRoYXQgbWFyZ2luLgotICAgIHJldHVybiBmYWxzZTsKLX0qLwogTGF5b3V0VW5pdCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVk
Tm9uQ29sbGFwc2VkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxC
b3goKSk7CkBAIC0yNDUsMTUgKzM0MCwxNSBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9wKGNvbnN0IExheQogICAg
IEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCiAgICAgLy8gVE9ETzogdGFr
ZSBfaGFzQWRqb2luaW5nTWFyZ2luVG9wQW5kQm90dG9tKCkgaW50byBhY2NvdW50LgotICAgIGlm
IChpc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgaWYgKG1hcmdpblRvcENvbGxhcHNlc1dpdGhQYXJlbnQobGF5b3V0U3RhdGUsIGxheW91
dEJveCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gRklYTUU6IEZpbmQgb3V0IHRoZSBs
b2dpYyBiZWhpbmQgdGhpcy4KICAgICBpZiAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtz
OjpzaG91bGRJZ25vcmVNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgaWYgKCFpc01hcmdpblRvcENvbGxhcHNlZFdpdGhTaWJsaW5nKGxh
eW91dEJveCkpIHsKLSAgICAgICAgaWYgKCFpc01hcmdpbkJvdHRvbUNvbGxhcHNlZFRocm91Z2go
bGF5b3V0Qm94KSkKKyAgICBpZiAoIW1hcmdpblRvcENvbGxhcHNlc1dpdGhTaWJsaW5nKGxheW91
dEJveCkpIHsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dEJveCkp
CiAgICAgICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpOwogICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2xsYXBzZWQgdGhyb3VnaCB2YWx1
ZS4KICAgICAgICAgYXV0byBtYXJnaW5Ub3AgPSBub25Db2xsYXBzZWRNYXJnaW5Ub3AobGF5b3V0
U3RhdGUsIGxheW91dEJveCk7CkBAIC0yODAsMTQgKzM3NSwxNCBAQCBMYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQm90dG9t
KGNvbnN0CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKICAgICAv
LyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5Ub3BBbmRCb3R0b20oKSBpbnRvIGFjY291
bnQuCi0gICAgaWYgKGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChsYXlvdXRCb3gp
KQorICAgIGlmIChtYXJnaW5Cb3R0b21Db2xsYXBzZXNXaXRoUGFyZW50KGxheW91dEJveCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkVGhyb3Vn
aChsYXlvdXRCb3gpKQorICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dEJveCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gRmxvYXRzIGFuZCBvdXQgb2YgZmxvdyBwb3Np
dGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZSB0aGVpciBtYXJnaW5zLgotICAgIGlmICghaXNN
YXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoU2libGluZyhsYXlvdXRCb3gpKQorICAgIGlmICghbWFy
Z2luQm90dG9tQ29sbGFwc2VzV2l0aFNpYmxpbmcobGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJu
IG5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKIAogICAg
IC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBh
bHdheXMgY29sbGFwc2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YgaXRzIG5leHQgaW4tZmxvdyBi
bG9jay1sZXZlbCBzaWJsaW5nLApAQCAtMjk3LDQzICszOTIsNyBAQCBMYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQm90dG9t
KGNvbnN0CiAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChjb25zdCBC
b3gmIGxheW91dEJveCkKLXsKLSAgICAvLyBsYXN0IGluZmxvdyBib3ggdG8gcGFyZW50LgotICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbCNjb2xsYXBzaW5nLW1hcmdp
bnMKLSAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmIChpc01hcmdpbkJvdHRvbUNvbGxhcHNlZFRocm91Z2gobGF5
b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT25seSB0aGUgbGFzdCBp
bmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KLSAgICBpZiAobGF5b3V0Qm94Lm5l
eHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHBh
cmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7Ci0gICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0
aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFw
c2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuCi0gICAgaWYgKGVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmICghcGFyZW50LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRo
UGFyZW50TWFyZ2luQm90dG9tKGNvbnN0IEJveCYpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9wQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkJvdHRvbShjb25zdCBCb3gmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTM1
Miw3ICs0MTEsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQm90dAogCiAgICAgLy8gRklYTUU6IENo
ZWNrIGZvciBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4uCiAgICAgYXV0byYgbGFzdEluRmxvd0No
aWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsK
LSAgICBpZiAoIWlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChsYXN0SW5GbG93Q2hp
bGQpKQorICAgIGlmICghbWFyZ2luQm90dG9tQ29sbGFwc2VzV2l0aFBhcmVudChsYXN0SW5GbG93
Q2hpbGQpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIENvbGxlY3QgY29sbGFwc2VkIG1h
cmdpbiBib3R0b20gcmVjdXJzaXZlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU3ZWI2NTllNjMuLjNmNTQw
YTUzOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTgtMTItMTIgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtCRkNdW01hcmdpbkNvbGxh
cHNpbmddIEFkZCBzdXBwb3J0IGZvciBwZWN1bGlhciBjYXNlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjYyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFw
c2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRI
ZWlnaHQpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRVbml0cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpIZWlnaHRBbmRNYXJnaW46OnVzZWRNYXJnaW5WYWx1ZXMgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4g
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5Ub3Ap
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQm90dG9tKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1
aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5Ub3Ap
OiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3Rh
dGU6OnNldFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6OnBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5zIGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNDbGVhcmFuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFy
Z2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01h
cmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVy
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFy
Z2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1h
cmdpbnNDb2xsYXBzZVRocm91Z2gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb21wdXRl
ZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpt
YXJnaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWROb25Db2xsYXBzZWRNYXJn
aW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpNYXJnaW5Db2xsYXBzZTo6dmVydGljYWxNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoU2libGluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFNpYmxpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmlzTWFyZ2luQm90dG9tQ29s
bGFwc2VkVGhyb3VnaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFy
Z2luVG9wRnJvbUZpcnN0Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om5vbkNv
bGxhcHNlZE1hcmdpblRvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWRO
b25Db2xsYXBzZWRNYXJnaW5Ub3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1
dGVkTm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
OjptYXJnaW5Ub3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJvdHRvbSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRo
UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNl
ZFdpdGhQYXJlbnRNYXJnaW5Cb3R0b20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNv
bGxhcHNlZE1hcmdpbkJvdHRvbUZyb21MYXN0Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29s
bGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpzZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6OnNldEhhc0NsZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6Omhhc0NsZWFyYW5jZSBjb25zdCk6CisKIDIwMTgtMTItMTAgIFRydWl0dCBTYXZlbGwgIDx0
c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM4
OTY1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
ZDMzZDM3ZTVjZDcuLjdlOTczYTljYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTExNiw5ICsxMTYsMTAgQEAgdm9pZCBGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRC
b3gpIGMKIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0
aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlCi0gICAgQVNTRVJUKCF2ZXJ0aWNhbEdlb21ldHJ5
LmhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJnaW4pOworICAgIEFTU0VSVCghdmVydGljYWxH
ZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uY29sbGFwc2VkTWFyZ2luLmJlZm9yZSAmJiAhdmVydGlj
YWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uY29sbGFwc2VkTWFyZ2luLmFmdGVyKTsKICAgICBh
dXRvIG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2lucyA9IHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0
QW5kTWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKTsKLSAgICBkaXNwbGF5Qm94LnNldFRvcCh2ZXJ0
aWNhbEdlb21ldHJ5LnRvcCArIG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2lucy50b3ApOworICAg
IEFTU0VSVChub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbnMuYmVmb3JlKTsKKyAgICBkaXNwbGF5
Qm94LnNldFRvcCh2ZXJ0aWNhbEdlb21ldHJ5LnRvcCArICpub25Db2xsYXBzZWRWZXJ0aWNhbE1h
cmdpbnMuYmVmb3JlKTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQodmVydGlj
YWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKICAgICBkaXNwbGF5Qm94LnNldFZl
cnRpY2FsTWFyZ2luKG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2lucyk7CiAgICAgZGlzcGxheUJv
eC5zZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbihub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
bnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA0ZjY1
ZTU2ZTkxOC4uNzcyOWY0NDMxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RWRnZXM+IGNvbXB1dGVkUGFkZGluZyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBIb3Jpem9udGFsRWRnZXMgY29tcHV0ZWROb25D
b2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKLSAgICAgICAgc3RhdGljIFZlcnRpY2FsRWRnZXMgY29tcHV0ZWROb25Db2xsYXBzZWRW
ZXJ0aWNhbE1hcmdpblZhbHVlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAg
ICAgIHN0YXRpYyBNYXJnaW5WYWx1ZXMgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
blZhbHVlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhjb25zdCBM
ZW5ndGgmIGdlb21ldHJ5UHJvcGVydHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgp
OwogICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXhlZFZhbHVlKGNv
bnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggYzk5MDcxZWJiODUuLjJm
OGYxZTc0NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCkBAIC04MzcsNyArODM3LDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4o
Y29uc3QKIAogICAgIEFTU0VSVChoZWlnaHQpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1h
dHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93
IHJlcGxhY2VkIC0+IGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBtYXJn
aW4udG9wIDw8ICJweCwgIiA8PCBtYXJnaW4uYm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIg
PDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNl
ZCAtPiBoZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpbi5iZWZv
cmUgPDwgInB4LCAiIDw8ICptYXJnaW4uYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAm
bGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgKmhlaWdodCwgbWFyZ2luLCB7IH0gfTsK
IH0KIApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgSG9yaXpvbnRhbEVkZ2VzIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2kKICAgICBy
ZXR1cm4geyBtYXJnaW5MZWZ0LCBtYXJnaW5SaWdodCB9OwogfQogCi1WZXJ0aWNhbEVkZ2VzIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1h
cmdpblZhbHVlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCitNYXJnaW5WYWx1ZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRl
ZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91
dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNv
bnRlbnRCb3hXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHAKaW5kZXggYTNjNWI2ZTg5NzUuLjE4YmMyM2IwZTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAg
LTU0LDcgKzU0LDggQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWln
aHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXgKICAgICAgICAgICAgIGF1dG8g
dmVydGljYWxNYXJnaW5zID0gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5v
bkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsICpjb250YWluaW5nQmxv
Y2spOwogICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbFBhZGRpbmdzID0gZGlzcGxheUJveC5wYWRk
aW5nVG9wKCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9v
cigwKTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxCb3JkZXJzID0gZGlzcGxheUJveC5ib3Jk
ZXJUb3AoKSArIGRpc3BsYXlCb3guYm9yZGVyQm90dG9tKCk7Ci0gICAgICAgICAgICBib2R5QW5k
RG9jdW1lbnRWZXJ0aWNhbE1hcmdpbnNQYWRkaW5nc0FuZEJvcmRlcnMgKz0gdmVydGljYWxNYXJn
aW5zLnRvcCArIHZlcnRpY2FsTWFyZ2lucy5ib3R0b20gKyB2ZXJ0aWNhbFBhZGRpbmdzICsgdmVy
dGljYWxCb3JkZXJzOworICAgICAgICAgICAgQVNTRVJUKHZlcnRpY2FsTWFyZ2lucy5iZWZvcmUg
JiYgdmVydGljYWxNYXJnaW5zLmFmdGVyKTsKKyAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZl
cnRpY2FsTWFyZ2luc1BhZGRpbmdzQW5kQm9yZGVycyArPSAqdmVydGljYWxNYXJnaW5zLmJlZm9y
ZSArICp2ZXJ0aWNhbE1hcmdpbnMuYWZ0ZXIgKyB2ZXJ0aWNhbFBhZGRpbmdzICsgdmVydGljYWxC
b3JkZXJzOwogICAgICAgICB9CiAKICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0gY29udGFpbmlu
Z0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgK
aW5kZXggM2UxZDg0NDZmNzUuLmVlYTNlMDhmMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
VW5pdHMuaApAQCAtOTUsNiArOTUsMTEgQEAgc3RydWN0IFZlcnRpY2FsRWRnZXMgewogICAgIExh
eW91dFVuaXQgYm90dG9tOwogfTsKIAorc3RydWN0IE1hcmdpblZhbHVlcyB7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBiZWZvcmU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBhZnRlcjsKK307CisKIHN0cnVjdCBFZGdlcyB7CiAgICAgSG9yaXpvbnRhbEVkZ2VzIGhvcml6
b250YWw7CiAgICAgVmVydGljYWxFZGdlcyB2ZXJ0aWNhbDsKQEAgLTEwNywxMSArMTEyLDExIEBA
IHN0cnVjdCBXaWR0aEFuZE1hcmdpbiB7CiB9OwogCiBzdHJ1Y3QgSGVpZ2h0QW5kTWFyZ2luIHsK
LSAgICBWZXJ0aWNhbEVkZ2VzIHVzZWRNYXJnaW5WYWx1ZXMoKSBjb25zdCB7IHJldHVybiBjb2xs
YXBzZWRNYXJnaW4udmFsdWVfb3Iobm9uQ29sbGFwc2VkTWFyZ2luKTsgfQorICAgIE1hcmdpblZh
bHVlcyB1c2VkTWFyZ2luVmFsdWVzKCkgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGhlaWdodDsK
LSAgICBWZXJ0aWNhbEVkZ2VzIG5vbkNvbGxhcHNlZE1hcmdpbjsKLSAgICBzdGQ6Om9wdGlvbmFs
PFZlcnRpY2FsRWRnZXM+IGNvbGxhcHNlZE1hcmdpbjsKKyAgICBNYXJnaW5WYWx1ZXMgbm9uQ29s
bGFwc2VkTWFyZ2luOworICAgIE1hcmdpblZhbHVlcyBjb2xsYXBzZWRNYXJnaW47CiB9OwogCiBz
dHJ1Y3QgSG9yaXpvbnRhbEdlb21ldHJ5IHsKQEAgLTEyNiw2ICsxMzEsMTIgQEAgc3RydWN0IFZl
cnRpY2FsR2VvbWV0cnkgewogICAgIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW47CiB9
OwogCitpbmxpbmUgTWFyZ2luVmFsdWVzIEhlaWdodEFuZE1hcmdpbjo6dXNlZE1hcmdpblZhbHVl
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgY29sbGFwc2VkTWFyZ2luLmJlZm9yZSA/IGNvbGxh
cHNlZE1hcmdpbi5iZWZvcmUgOiBub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlLAorICAgICAgICBj
b2xsYXBzZWRNYXJnaW4uYWZ0ZXIgPyBjb2xsYXBzZWRNYXJnaW4uYWZ0ZXIgOiBub25Db2xsYXBz
ZWRNYXJnaW4uYWZ0ZXIgfTsKK30KKwogfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcAppbmRleCBhMTJkMTBmNjVjOC4uOWVkMjZjZGI3ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjk0LDcgKzI5NCw5IEBAIHZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZs
b2F0aW5nCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMobGF5
b3V0Qm94KTsKICAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpOwogCi0gICAgaWYgKGF1dG8gdmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFu
Y2UgPSBmbG9hdGluZ0NvbnRleHQudmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UobGF5b3V0
Qm94KSkKKyAgICBhdXRvIHZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlID0gZmxvYXRpbmdD
b250ZXh0LnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGxheW91dEJveCk7CisgICAgbGF5
b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNldEhhc0NsZWFyYW5j
ZSh2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZS5oYXNfdmFsdWUoKSk7CisgICAgaWYgKHZl
cnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKQogICAgICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENs
ZWFyYW5jZSk7CiB9CiAKQEAgLTM3Nyw4ICszNzksMTAgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAogICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLnVzZWRN
YXJnaW5WYWx1ZXMoKSk7CiAKICAgICAvLyBJZiB0aGlzIGJveCBoYXMgYWxyZWFkeSBiZWVuIG1v
dmVkIGJ5IHRoZSBlc3RpbWF0ZWQgdmVydGljYWwgbWFyZ2luLCBubyBuZWVkIHRvIG1vdmUgaXQg
YWdhaW4uCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8ICFkaXNw
bGF5Qm94LmVzdGltYXRlZE1hcmdpblRvcCgpKQotICAgICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0
aWNhbGx5KGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVzKCkudG9wKTsKKyAgICBpZiAo
bGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgIWRpc3BsYXlCb3guZXN0aW1hdGVk
TWFyZ2luVG9wKCkpIHsKKyAgICAgICAgQVNTRVJUKGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2lu
VmFsdWVzKCkuYmVmb3JlKTsKKyAgICAgICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxseSgqaGVp
Z2h0QW5kTWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKS5iZWZvcmUpOworICAgIH0KIH0KIAogRm9y
bWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmgKaW5kZXggZTY3N2UwMTc0ZjAuLjQ0N2NkMjNhMzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuaApAQCAtODYsMjMgKzg2LDI1IEBAIHByaXZhdGU6CiAgICAgICAg
IC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBtYXJnaW4gY29sbGFwc2luZyBmb3IgYmxvY2sgZm9y
bWF0dGluZyBjb250ZXh0LgogICAgICAgICBjbGFzcyBNYXJnaW5Db2xsYXBzZSB7CiAgICAgICAg
IHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcmdpblRvcChjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQg
bWFyZ2luQm90dG9tKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0KLSAgICAgICAg
ICAgIHN0YXRpYyBib29sIGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChjb25zdCBC
b3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBh
cmVudE1hcmdpbkJvdHRvbShjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0cnVjdCBWZXJ0aWNh
bFZhbHVlcyB7CisgICAgICAgICAgICAgICAgTWFyZ2luVmFsdWVzIGNvbXB1dGVkOworICAgICAg
ICAgICAgICAgIE1hcmdpblZhbHVlcyBjb2xsYXBzZWQ7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgc3RhdGljIFZlcnRpY2FsVmFsdWVzIHZlcnRpY2FsTWFyZ2lucyhjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIHZvaWQgdXBkYXRlQ29sbGFw
c2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKworICAgICAg
ICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
Zyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIGJv
b2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxk
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgYm9v
bCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0
aExhc3RJbkZsb3dDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAg
ICAgICAgc3RhdGljIGJvb2wgbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBCb3gmKTsKIAog
ICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29sbGFwc2Vk
TWFyZ2luQm90dG9tRnJvbUxhc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYp
OwotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9t
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0KLSAgICAgICAgICAgIHN0YXRpYyBM
YXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlZE5v
bkNvbGxhcHNlZE1hcmdpbkJvdHRvbShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwot
Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmly
c3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3Rh
dGljIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7Ci0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFw
c2VkV2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAg
ICAgc3RhdGljIE1hcmdpblZhbHVlcyBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbnMoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKICAgICAgICAgfTsKIAogICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFy
Z2luIGluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0ID0geyB9KTsK
QEAgLTExNiw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgYm9vbCBuZWVkc1N0
cmV0Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGlj
IEhlaWdodEFuZE1hcmdpbiBzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmLCBIZWlnaHRBbmRNYXJnaW4pOwogCi0gICAgICAgIHN0YXRpYyBib29sIHNob3VsZEln
bm9yZU1hcmdpblRvcChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKICAgICB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDNiMDlmMzBjZjFiLi40ODkxOGJhZWRhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNTYsNTUgKzU2LDU2
IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnCiAgICAgICAgIC8vIDQuIHplcm8sIG90aGVyd2lz
ZQogICAgICAgICAvLyBPbmx5IGNoaWxkcmVuIGluIHRoZSBub3JtYWwgZmxvdyBhcmUgdGFrZW4g
aW50byBhY2NvdW50IChpLmUuLCBmbG9hdGluZyBib3hlcyBhbmQgYWJzb2x1dGVseSBwb3NpdGlv
bmVkIGJveGVzIGFyZSBpZ25vcmVkLAogICAgICAgICAvLyBhbmQgcmVsYXRpdmVseSBwb3NpdGlv
bmVkIGJveGVzIGFyZSBjb25zaWRlcmVkIHdpdGhvdXQgdGhlaXIgb2Zmc2V0KS4gTm90ZSB0aGF0
IHRoZSBjaGlsZCBib3ggbWF5IGJlIGFuIGFub255bW91cyBibG9jayBib3guCi0KLSAgICAgICAg
YXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICAgICAgYXV0byBjb250YWluaW5n
QmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJv
eC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CiAgICAgICAgIGF1dG8mIGRp
c3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7
CiAKLSAgICAgICAgVmVydGljYWxFZGdlcyBub25Db2xsYXBzZWRNYXJnaW4gPSB7IGNvbXB1dGVk
VmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52
YWx1ZV9vcigwKSwKLSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFy
Z2luQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKSB9OyAKLSAgICAg
ICAgVmVydGljYWxFZGdlcyBjb2xsYXBzZWRNYXJnaW4gPSB7IE1hcmdpbkNvbGxhcHNlOjptYXJn
aW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCksIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5Cb3R0
b20obGF5b3V0U3RhdGUsIGxheW91dEJveCkgfTsKKyAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdp
bnMgPSBNYXJnaW5Db2xsYXBzZTo6dmVydGljYWxNYXJnaW5zKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpOworICAgICAgICBNYXJnaW5WYWx1ZXMgbm9uQ29sbGFwc2VkTWFyZ2lucyA9IHsgdmVydGlj
YWxNYXJnaW5zLmNvbXB1dGVkLmJlZm9yZS52YWx1ZV9vcigwKSwgdmVydGljYWxNYXJnaW5zLmNv
bXB1dGVkLmFmdGVyLnZhbHVlX29yKDApIH07CisgICAgICAgIE1hcmdpblZhbHVlcyBjb2xsYXBz
ZWRNYXJnaW5zID0geyB2ZXJ0aWNhbE1hcmdpbnMuY29sbGFwc2VkLmJlZm9yZSwgdmVydGljYWxN
YXJnaW5zLmNvbGxhcHNlZC5hZnRlciB9OwogICAgICAgICBhdXRvIGJvcmRlckFuZFBhZGRpbmdU
b3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZGlzcGxheUJveC5wYWRkaW5nVG9wKCkudmFs
dWVfb3IoMCk7CiAgICAgICAgIAogICAgICAgICBhdXRvIGhlaWdodCA9IHVzZWRIZWlnaHQgPyB1
c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CiAgICAgICAgIGlmIChoZWlnaHQpCi0gICAgICAg
ICAgICByZXR1cm4geyBoZWlnaHQudmFsdWUoKSwgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBz
ZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGhlaWdodC52YWx1ZSgpLCBub25Db2xs
YXBzZWRNYXJnaW5zLCBjb2xsYXBzZWRNYXJnaW5zIH07CiAKICAgICAgICAgaWYgKCFpczxDb250
YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJ
bkZsb3dDaGlsZCgpKQotICAgICAgICAgICAgcmV0dXJuIHsgMCwgbm9uQ29sbGFwc2VkTWFyZ2lu
LCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IDAsIG5vbkNvbGxhcHNl
ZE1hcmdpbnMsIGNvbGxhcHNlZE1hcmdpbnMgfTsKIAogICAgICAgICAvLyAxLiB0aGUgYm90dG9t
IGVkZ2Ugb2YgdGhlIGxhc3QgbGluZSBib3gsIGlmIHRoZSBib3ggZXN0YWJsaXNoZXMgYSBpbmxp
bmUgZm9ybWF0dGluZyBjb250ZXh0IHdpdGggb25lIG9yIG1vcmUgbGluZXMKICAgICAgICAgaWYg
KGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGVtcCBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY29ycmVj
dCBkaXNwbGF5IGJveCBvbmNlIGlubGluZSBydW5zIG1vdmUgb3ZlciB0byB0aGUgZGlzcGxheSB0
cmVlLgogICAgICAgICAgICAgYXV0byYgaW5saW5lUnVucyA9IGRvd25jYXN0PElubGluZUZvcm1h
dHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0
Qm94KSkuaW5saW5lUnVucygpOwogICAgICAgICAgICAgYXV0byBib3R0b21FZGdlID0gaW5saW5l
UnVucy5pc0VtcHR5KCkgPyBMYXlvdXRVbml0KCkgOiBpbmxpbmVSdW5zLmxhc3QoKS5sb2dpY2Fs
Qm90dG9tKCk7Ci0gICAgICAgICAgICByZXR1cm4geyBib3R0b21FZGdlLCBub25Db2xsYXBzZWRN
YXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9OworICAgICAgICAgICAgcmV0dXJuIHsgYm90dG9tRWRn
ZSwgbm9uQ29sbGFwc2VkTWFyZ2lucywgY29sbGFwc2VkTWFyZ2lucyB9OwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0b20gKHBvc3NpYmx5IGNv
bGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdz
IGJvdHRvbSBtYXJnaW4uLi4KICAgICAgICAgYXV0byogbGFzdEluRmxvd0NoaWxkID0gZG93bmNh
c3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgpOwogICAgICAgICBBU1NF
UlQobGFzdEluRmxvd0NoaWxkKTsKLSAgICAgICAgaWYgKCFNYXJnaW5Db2xsYXBzZTo6aXNNYXJn
aW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KCpsYXN0SW5GbG93Q2hpbGQpKSB7CisgICAgICAg
IGlmICghTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudChsYXlv
dXRTdGF0ZSwgKmxhc3RJbkZsb3dDaGlsZCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxhc3RJbkZs
b3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGFzdElu
Rmxvd0NoaWxkKTsKLSAgICAgICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5Qm94LmJv
dHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gubWFyZ2luQm90dG9tKCkgLSBib3JkZXJBbmRQ
YWRkaW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9OworICAgICAg
ICAgICAgcmV0dXJuIHsgbGFzdEluRmxvd0Rpc3BsYXlCb3guYm90dG9tKCkgKyBsYXN0SW5GbG93
RGlzcGxheUJveC5tYXJnaW5Cb3R0b20oKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxh
cHNlZE1hcmdpbnMsIGNvbGxhcHNlZE1hcmdpbnMgfTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IDMuIHRoZSBib3R0b20gYm9yZGVyIGVkZ2Ugb2YgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCB3aG9z
ZSB0b3AgbWFyZ2luIGRvZXNuJ3QgY29sbGFwc2Ugd2l0aCB0aGUgZWxlbWVudCdzIGJvdHRvbSBt
YXJnaW4KICAgICAgICAgYXV0byogaW5GbG93Q2hpbGQgPSBsYXN0SW5GbG93Q2hpbGQ7Ci0gICAg
ICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xs
YXBzZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKCppbkZsb3dDaGlsZCkpCisgICAgICAgIHdoaWxl
IChpbkZsb3dDaGlsZCAmJiBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0
aFBhcmVudChsYXlvdXRTdGF0ZSwgKmluRmxvd0NoaWxkKSkKICAgICAgICAgICAgIGluRmxvd0No
aWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGluZygpOwogICAgICAgICBpZiAo
aW5GbG93Q2hpbGQpIHsKICAgICAgICAgICAgIGF1dG8mIGluRmxvd0Rpc3BsYXlCb3ggPSBsYXlv
dXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dDaGlsZCk7Ci0gICAgICAgICAg
ICByZXR1cm4geyBpbkZsb3dEaXNwbGF5Qm94LnRvcCgpICsgaW5GbG93RGlzcGxheUJveC5ib3Jk
ZXJCb3goKS5oZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdp
biwgY29sbGFwc2VkTWFyZ2luIH07CisgICAgICAgICAgICByZXR1cm4geyBpbkZsb3dEaXNwbGF5
Qm94LnRvcCgpICsgaW5GbG93RGlzcGxheUJveC5ib3JkZXJCb3goKS5oZWlnaHQoKSAtIGJvcmRl
ckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbnMsIGNvbGxhcHNlZE1hcmdpbnMgfTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIDQuIHplcm8sIG90aGVyd2lzZQotICAgICAgICByZXR1
cm4geyAwLCBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9OworICAgICAgICBy
ZXR1cm4geyAwLCBub25Db2xsYXBzZWRNYXJnaW5zLCBjb2xsYXBzZWRNYXJnaW5zIH07CiAgICAg
fTsKIAogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZSgpOwogCi0gICAgTE9HX1dJ
VEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01h
cmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRNYXJn
aW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW5W
YWx1ZXMoKS50b3AgPDwgInB4LCAiIDw8IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVz
KCkuYm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwor
ICAgIC8vIEFkanVzdCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0b20gKGFuZCBj
aGVjayBmb3IgY29sbGFwc2luZyB0aHJvdWdoIG1hcmdpbnMgYXMgd2VsbC4KKyAgICBpZiAoTWFy
Z2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcobGF5
b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIE1hcmdpbkNvbGxhcHNlOjp1cGRhdGVDb2xs
YXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91dEJveC5wcmV2aW91c0luRmxvd1Np
YmxpbmcoKSk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IGhl
aWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAqaGVp
Z2h0QW5kTWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKS5iZWZvcmUgPDwgInB4LCAiIDw8ICpoZWln
aHRBbmRNYXJnaW4udXNlZE1hcmdpblZhbHVlcygpLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94
KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWlnaHRBbmRNYXJnaW47CiB9
CiAKQEAgLTI2Myw3ICsyNjQsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBMYQogCiAgICAgaGVp
Z2h0QW5kTWFyZ2luID0gUXVpcmtzOjpzdHJldGNoZWRIZWlnaHQobGF5b3V0U3RhdGUsIGxheW91
dEJveCwgaGVpZ2h0QW5kTWFyZ2luKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24t
cmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0QW5k
TWFyZ2luLmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi51c2VkTWFy
Z2luVmFsdWVzKCkudG9wIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpblZh
bHVlcygpLmJvdHRvbSA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIiki
KTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8
PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRv
IHZpZXdwb3J0IC0+IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBt
YXJnaW4oIiA8PCAqaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKS5iZWZvcmUgPDwg
InB4LCAiIDw8ICpoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpblZhbHVlcygpLmFmdGVyIDw8ICJw
eCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWln
aHRBbmRNYXJnaW47CiB9CiAKQEAgLTMyMiw3ICszMjMsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6
SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OgogICAgIHJldHVybiB7IG1pbmltdW1JbnRyaW5zaWNXaWR0aCwgbWF4aW11bUludHJpbnNp
Y1dpZHRoIH07CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmVzdGltYXRlZE1hcmdpblRvcChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
CiAgICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cg
Ym94ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgpA
QCAtMzMxLDEwICszMzIsMTAgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXQKICAgICBBU1NFUlQo
IWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAKICAgICAv
LyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFsIHBhdGggZm9yIG5vdy4KLSAgICByZXR1cm4gTWFy
Z2luQ29sbGFwc2U6Om1hcmdpblRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICByZXR1
cm4geyB9OyAvL01hcmdpbkNvbGxhcHNlOjptYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJv
eCk7CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVz
dGltYXRlZE1hcmdpbkJvdHRvbShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQm90dG9tKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
CiAgICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cg
Ym94ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgpA
QCAtMzQzLDcgKzM0NCw3IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmVzdGltYXRlZE1hcmdpbkJvdHRvbShjb25zdCBMYXlvdXRTCiAgICAgQVNTRVJUKCFs
YXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogCiAgICAgLy8g
TGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0gICAgcmV0dXJuIE1hcmdp
bkNvbGxhcHNlOjptYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgcmV0
dXJuIHsgfTsgLy9NYXJnaW5Db2xsYXBzZTo6bWFyZ2luQm90dG9tKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cAppbmRleCBiOGYwMThhYzFkMi4uYmZlMGFlNTZmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtODIsOCArODIsOSBAQCBIZWlnaHRBbmRNYXJnaW4g
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5
b3V0U3RhdAogICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKSB7CiAgICAgICAgIGF1
dG8gdmVydGljYWxNYXJnaW5zID0gaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKTsK
ICAgICAgICAgLy8gRG9jdW1lbnQgYm94J3MgbWFyZ2lucyBkbyBub3QgY29sbGFwc2UuCi0gICAg
ICAgIEFTU0VSVCghaGVpZ2h0QW5kTWFyZ2luLmNvbGxhcHNlZE1hcmdpbik7Ci0gICAgICAgIHRv
dGFsVmVydGljYWxNYXJnaW5zID0gdmVydGljYWxNYXJnaW5zLnRvcCArIHZlcnRpY2FsTWFyZ2lu
cy5ib3R0b207CisgICAgICAgIEFTU0VSVCghaGVpZ2h0QW5kTWFyZ2luLmNvbGxhcHNlZE1hcmdp
bi5iZWZvcmUgJiYgIWhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJnaW4uYWZ0ZXIpOworICAg
ICAgICBBU1NFUlQodmVydGljYWxNYXJnaW5zLmJlZm9yZSAmJiB2ZXJ0aWNhbE1hcmdpbnMuYWZ0
ZXIpOworICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2lucyA9ICp2ZXJ0aWNhbE1hcmdpbnMuYmVm
b3JlICsgKnZlcnRpY2FsTWFyZ2lucy5hZnRlcjsKICAgICB9IGVsc2UgaWYgKGxheW91dEJveC5p
c0JvZHlCb3goKSkgewogICAgICAgICAvLyBIZXJlIGlzIHRoZSBxdWlya3kgcGFydCBmb3IgYm9k
eSBib3g6CiAgICAgICAgIC8vIFN0cmV0Y2ggdGhlIGJvZHkgdXNpbmcgdGhlIGluaXRpYWwgY29u
dGFpbmluZyBibG9jaydzIGhlaWdodCBhbmQgc2hyaW5rIGl0IHdpdGggZG9jdW1lbnQgYm94J3Mg
bWFyZ2luL2JvcmRlci9wYWRkaW5nLgpAQCAtOTQsNyArOTUsOCBAQCBIZWlnaHRBbmRNYXJnaW4g
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5
b3V0U3RhdAogICAgICAgICAvLyBUaGlzIHF1aXJrIGhhcHBlbnMgd2hlbiB0aGUgYm9keSBoZWln
aHQgaXMgMCB3aGljaCBtZWFucyBpdHMgdmVydGljYWwgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdo
ICh0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIGFyZSBhZGpvaW5pbmcpLgogICAgICAgICAvLyBIb3dl
dmVyIG5vdyB0aGF0IHdlIHN0cmV0Y2ggdGhlIGJvZHkgdGhleSBkb24ndCBjb2xsYXBzZSB0aHJv
dWdoIGFueW1vcmUsIHNvIHdlIG5lZWQgdG8gdXNlIHRoZSBub24tY29sbGFwc2VkIHZhbHVlcyBp
bnN0ZWFkLgogICAgICAgICBhdXRvIGJvZHlCb3hWZXJ0aWNhbE1hcmdpbnMgPSBoZWlnaHRBbmRN
YXJnaW4uaGVpZ2h0ID8gaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKSA6IGhlaWdo
dEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW47Ci0gICAgICAgIHRvdGFsVmVydGljYWxNYXJn
aW5zID0gYm9keUJveFZlcnRpY2FsTWFyZ2lucy50b3AgKyBib2R5Qm94VmVydGljYWxNYXJnaW5z
LmJvdHRvbTsKKyAgICAgICAgQVNTRVJUKGJvZHlCb3hWZXJ0aWNhbE1hcmdpbnMuYmVmb3JlICYm
IGJvZHlCb3hWZXJ0aWNhbE1hcmdpbnMuYWZ0ZXIpOworICAgICAgICB0b3RhbFZlcnRpY2FsTWFy
Z2lucyA9ICpib2R5Qm94VmVydGljYWxNYXJnaW5zLmJlZm9yZSArICpib2R5Qm94VmVydGljYWxN
YXJnaW5zLmFmdGVyOwogICAgIH0KIAogICAgIC8vIFN0cmV0Y2ggYnV0IG5ldmVyIG92ZXJzdHJl
dGNoIHdpdGggdGhlIG1hcmdpbnMuCkBAIC0xMDQsNyArMTA2LDcgQEAgSGVpZ2h0QW5kTWFyZ2lu
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExh
eW91dFN0YXQKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogfQogCi1ib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luVG9wKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgaWYg
KCFsYXlvdXRCb3gucGFyZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nU3RhdGUuaAppbmRleCBiYjk2NjkzOTBmZi4uMjZhOGQ5OGZlNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ1N0YXRlLmgKQEAgLTQxLDcgKzQxLDIxIEBAIHB1YmxpYzoKICAgICBCbG9ja0Zvcm1hdHRp
bmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiwgTGF5b3V0U3RhdGUmKTsKICAgICB2aXJ0dWFs
IH5CbG9ja0Zvcm1hdHRpbmdTdGF0ZSgpOwogCisJc3RydWN0IFBvc2l0aXZlQW5kTmVnYXRpdmVN
YXJnaW5zIHsKKwkJc3RydWN0IFZhbHVlcyB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHBvc2l0aXZlOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBuZWdhdGl2ZTsKKwkJfTsKKwkJVmFsdWVzIGJlZm9yZTsKKwkJVmFsdWVzIGFmdGVyOworCX07
CisgICAgdm9pZCBzZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2lucyhjb25zdCBCb3gmIGxheW91
dEJveCwgUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbnMgbWFyZ2luVmFsdWVzKSB7IG1fcG9zaXRp
dmVBbmROZWdhdGl2ZU1hcmdpbnMuc2V0KCZsYXlvdXRCb3gsIG1hcmdpblZhbHVlcyk7IH0KKyAg
ICBQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2lucyBwb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2lucyhj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGl2ZUFuZE5lZ2F0aXZl
TWFyZ2lucy5nZXQoJmxheW91dEJveCk7IH0KKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0
aW5nQ29udGV4dD4gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QpIG92ZXJyaWRlOworCitwcml2YXRlOgorCUhhc2hNYXA8Y29uc3QgQm94Kiwg
UG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbnM+IG1fcG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbnM7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBiZjFhMDhjY2I2NS4uYTIw
ZGU5MTI5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtNzgsNTMgKzc4LDc0IEBA
IHN0YXRpYyBib29sIGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gm
IGxheW91dEJveCkKICAgICByZXR1cm4gbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpOwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5WYWx1ZShMYXlvdXRV
bml0IGN1cnJlbnRNYXJnaW5WYWx1ZSwgTGF5b3V0VW5pdCBjYW5kaWRhdGVNYXJnaW5WYWx1ZSkK
K3N0YXRpYyBib29sIGhhc0NsZWFyYW5jZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIGlmICghY2FuZGlkYXRlTWFyZ2luVmFsdWUp
Ci0gICAgICAgIHJldHVybiBjdXJyZW50TWFyZ2luVmFsdWU7Ci0gICAgaWYgKCFjdXJyZW50TWFy
Z2luVmFsdWUpCi0gICAgICAgIHJldHVybiBjYW5kaWRhdGVNYXJnaW5WYWx1ZTsKLSAgICAvLyBC
b3RoIG1hcmdpbnMgYXJlIHBvc2l0aXZlLgotICAgIGlmIChjYW5kaWRhdGVNYXJnaW5WYWx1ZSA+
IDAgJiYgY3VycmVudE1hcmdpblZhbHVlID4gMCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNh
bmRpZGF0ZU1hcmdpblZhbHVlLCBjdXJyZW50TWFyZ2luVmFsdWUpOwotICAgIC8vIEJvdGggbWFy
Z2lucyBhcmUgbmVnYXRpdmUuCi0gICAgaWYgKGNhbmRpZGF0ZU1hcmdpblZhbHVlIDwgMCAmJiBj
dXJyZW50TWFyZ2luVmFsdWUgPCAwKQotICAgICAgICByZXR1cm4gMCAtIHN0ZDo6bWF4KHN0ZDo6
YWJzKGNhbmRpZGF0ZU1hcmdpblZhbHVlLnRvRmxvYXQoKSksIHN0ZDo6YWJzKGN1cnJlbnRNYXJn
aW5WYWx1ZS50b0Zsb2F0KCkpKTsKLSAgICAvLyBPbmUgb2YgdGhlIG1hcmdpbnMgaXMgbmVnYXRp
dmUuCi0gICAgcmV0dXJuIGN1cnJlbnRNYXJnaW5WYWx1ZSArIGNhbmRpZGF0ZU1hcmdpblZhbHVl
OworICAgIGlmICghbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91
dEJveCkuaGFzQ2xlYXJhbmNlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFw
c2VkV2l0aFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2Vz
V2l0aFByZXZpb3VzU2libGluZyhjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94
KCkpOwogCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgIGlm
ICghbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIWxheW91dEJveC5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJ
bkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8mIHByZXZp
b3VzSW5GbG93U2libGluZyA9ICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisK
KyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBk
byBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgp
IHx8IHByZXZpb3VzSW5GbG93U2libGluZy5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25l
ZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5zdHlsZSgpLnRvcCgpLmlzQXV0bygpKQorICAgICAg
ICB8fCAocHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFw
cmV2aW91c0luRmxvd1NpYmxpbmcuc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRv
IG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSB8fCBw
cmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAvLyBPdXQgb2YgZmxvdyBwb3NpdGlvbmVkLgotICAgIEFTU0VSVChsYXlv
dXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgIHJldHVybiBsYXlvdXRCb3guc3R5
bGUoKS50b3AoKS5pc0F1dG8oKTsKKyAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1m
bG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFy
Z2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1bmxl
c3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5jZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFNpYmxp
bmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxp
bmcoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkK
IHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAotICAgIGlmIChs
YXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICBpZiAoIWxheW91dEJveC5uZXh0
SW5GbG93U2libGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWxheW91
dEJveC5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3dQb3NpdGlvbmVkKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8mIG5leHRJbkZsb3dTaWJsaW5nID0gKmxheW91
dEJveC5uZXh0SW5GbG93U2libGluZygpOworCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxv
YXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBuZXh0SW5GbG93U2libGluZy5pc0Zsb2F0
aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5z
IG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYg
KChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5zdHlsZSgp
LmJvdHRvbSgpLmlzQXV0bygpKQorICAgICAgICB8fCAobmV4dEluRmxvd1NpYmxpbmcuaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgIW5leHRJbkZsb3dTaWJsaW5nLnN0eWxlKCkudG9wKCkuaXNB
dXRvKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGlu
ZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0lubGlu
ZUJsb2NrQm94KCkgfHwgbmV4dEluRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1m
bG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFy
Z2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1bmxl
c3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5jZShsYXlv
dXRTdGF0ZSwgbmV4dEluRmxvd1NpYmxpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAvLyBPdXQgb2YgZmxvdyBwb3NpdGlvbmVkLgotICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5ib3R0b20o
KS5pc0F1dG8oKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0
aFBhcmVudChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFw
c2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnQoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICAvLyBUaGUgZmlyc3QgaW5m
bG93IGNoaWxkIGNvdWxkIHByb3BhZ2F0ZSBpdHMgdG9wIG1hcmdpbiB0byBwYXJlbnQuCiAgICAg
Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1sI2NvbGxhcHNpbmctbWFyZ2lu
cwpAQCAtMTMzLDcgKzE1NCwxNiBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUAogCiAgICAgQVNT
RVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICBpZiAobGF5b3V0Qm94Lmlz
RmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4g
YSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3Qg
Y29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94
ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBPbmx5IHRoZSBmaXJzdCBpbmxmbG93
IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KQEAgLTE0MSwyMzAgKzE3MSwzMDEgQEAgYm9v
bCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFy
Z2luVG9wQ29sbGFwc2VkV2l0aFAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYg
cGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKLSAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRz
IHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xs
YXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4KKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1l
bnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBj
b2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCiAgICAgaWYgKGVzdGFibGlzaGVz
QmxvY2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAvLyBUaGUgdG9wIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrIGVsZW1lbnQgY29sbGFw
c2VzIHdpdGggaXRzIGZpcnN0IGluLWZsb3cgYmxvY2stbGV2ZWwKKyAgICAvLyBjaGlsZCdzIHRv
cCBtYXJnaW4gaWYgdGhlIGVsZW1lbnQgaGFzIG5vIHRvcCBib3JkZXIuLi4KICAgICBpZiAoaGFz
Qm9yZGVyQmVmb3JlKHBhcmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIC4u
Lm5vIHRvcCBwYWRkaW5nCiAgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUocGFyZW50KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJr
czo6c2hvdWxkSWdub3JlTWFyZ2luVG9wKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgaXNN
YXJnaW5Cb3R0b21Db2xsYXBzZWRUaHJvdWdoKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAg
IEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gSWYgdGhlIHRv
cCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYSBib3ggYXJlIGFkam9pbmluZywgdGhlbiBpdCBpcyBw
b3NzaWJsZSBmb3IgbWFyZ2lucyB0byBjb2xsYXBzZSB0aHJvdWdoIGl0LgotICAgIGlmIChoYXNC
b3JkZXJCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNCb3JkZXJBZnRlcihsYXlvdXRCb3gpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gp
IHx8IGhhc1BhZGRpbmdBZnRlcihsYXlvdXRCb3gpKQorICAgIC8vIC4uLmFuZCB0aGUgY2hpbGQg
aGFzIG5vIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWxheW91dEJveC5zdHls
ZSgpLmhlaWdodCgpLmlzQXV0bygpIHx8ICFsYXlvdXRCb3guc3R5bGUoKS5taW5IZWlnaHQoKS5p
c0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFpczxDb250YWluZXI+
KGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgYXV0byYgY29udGFpbmVy
ID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwotICAgIGlmIChjb250YWluZXIuaGFz
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCisgICAgaWYgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTGF5b3V0
VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNv
bGxhcHNlZE1hcmdpblRvcEZyb21GaXJzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0
SW5GbG93Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQot
ICAgIC8vIENoZWNrIGlmIHRoZSBmaXJzdCBjaGlsZCBjb2xsYXBzZXMgaXRzIG1hcmdpbiB0b3Au
CiAgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYg
KGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5l
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVGFrZSBjb2xsYXBzZWQg
dGhyb3VnaCBtYXJnaW4gaW50byBhY2NvdW50LgogICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQg
PSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hpbGQoKTsKLSAg
ICBpZiAoIWlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudChsYXlvdXRTdGF0ZSwgZmlyc3RJ
bkZsb3dDaGlsZCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIC8vIENvbGxlY3QgY29sbGFwc2Vk
IG1hcmdpbiB0b3AgcmVjdXJzaXZlbHkuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVk
Tm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSwgY29s
bGFwc2VkTWFyZ2luVG9wRnJvbUZpcnN0Q2hpbGQobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hp
bGQpKTsKKyAgICByZXR1cm4gbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudChsYXlvdXRT
dGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCk7CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5Ub3Ao
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK2Jv
b2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJn
aW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZShjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAg
IEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTm9uIGNvbGxh
cHNlZCBtYXJnaW4gdG9wIGluY2x1ZGVzIGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgZmly
c3QgY2hpbGQuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFy
Z2luVG9wKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBjb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmly
c3RDaGlsZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7Ci19CisgICAgLy8gSWYgdGhlIHRvcCBh
bmQgYm90dG9tIG1hcmdpbnMgb2YgYW4gZWxlbWVudCB3aXRoIGNsZWFyYW5jZSBhcmUgYWRqb2lu
aW5nLCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB3aXRoIHRoZSBhZGpvaW5pbmcgbWFyZ2lucworICAg
IC8vIG9mIGZvbGxvd2luZyBzaWJsaW5ncyBidXQgdGhhdCByZXN1bHRpbmcgbWFyZ2luIGRvZXMg
bm90IGNvbGxhcHNlIHdpdGggdGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhcmVudCBibG9jay4K
KyAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0vKnN0YXRpYyBib29sIGhhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJvdHRv
bShjb25zdCBCb3gmKQotewotICAgIC8vIFR3byBtYXJnaW5zIGFyZSBhZGpvaW5pbmcgaWYgYW5k
IG9ubHkgaWY6Ci0gICAgLy8gMS4gYm90aCBiZWxvbmcgdG8gaW4tZmxvdyBibG9jay1sZXZlbCBi
b3hlcyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoZSBzYW1lIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4
dAotICAgIC8vIDIuIG5vIGxpbmUgYm94ZXMsIG5vIGNsZWFyYW5jZSwgbm8gcGFkZGluZyBhbmQg
bm8gYm9yZGVyIHNlcGFyYXRlIHRoZW0gKE5vdGUgdGhhdCBjZXJ0YWluIHplcm8taGVpZ2h0IGxp
bmUgYm94ZXMgKHNlZSA5LjQuMikgYXJlIGlnbm9yZWQgZm9yIHRoaXMgcHVycG9zZS4pCi0gICAg
Ly8gMy4gYm90aCBiZWxvbmcgdG8gdmVydGljYWxseS1hZGphY2VudCBib3ggZWRnZXMsIGkuZS4g
Zm9ybSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwYWlyczoKLSAgICAvLyAgICAgICAgdG9wIG1hcmdp
biBvZiBhIGJveCBhbmQgdG9wIG1hcmdpbiBvZiBpdHMgZmlyc3QgaW4tZmxvdyBjaGlsZAotICAg
IC8vICAgICAgICBib3R0b20gbWFyZ2luIG9mIGJveCBhbmQgdG9wIG1hcmdpbiBvZiBpdHMgbmV4
dCBpbi1mbG93IGZvbGxvd2luZyBzaWJsaW5nCi0gICAgLy8gICAgICAgIGJvdHRvbSBtYXJnaW4g
b2YgYSBsYXN0IGluLWZsb3cgY2hpbGQgYW5kIGJvdHRvbSBtYXJnaW4gb2YgaXRzIHBhcmVudCBp
ZiB0aGUgcGFyZW50IGhhcyAnYXV0bycgY29tcHV0ZWQgaGVpZ2h0Ci0gICAgLy8gICAgICAgIHRv
cCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYSBib3ggdGhhdCBkb2VzIG5vdCBlc3RhYmxpc2ggYSBu
ZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFuZCB0aGF0IGhhcyB6ZXJvIGNvbXB1dGVkICdt
aW4taGVpZ2h0JywKLSAgICAvLyAgICAgICAgemVybyBvciAnYXV0bycgY29tcHV0ZWQgJ2hlaWdo
dCcsIGFuZCBubyBpbi1mbG93IGNoaWxkcmVuCi0gICAgLy8gQSBjb2xsYXBzZWQgbWFyZ2luIGlz
IGNvbnNpZGVyZWQgYWRqb2luaW5nIHRvIGFub3RoZXIgbWFyZ2luIGlmIGFueSBvZiBpdHMgY29t
cG9uZW50IG1hcmdpbnMgaXMgYWRqb2luaW5nIHRvIHRoYXQgbWFyZ2luLgorICAgIGZvciAoYXV0
byogcHJldmlvdXNTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOyBw
cmV2aW91c1NpYmxpbmc7IHByZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGluZy0+cHJldmlv
dXNJbkZsb3dTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdo
KCpwcmV2aW91c1NpYmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCAqcHJldmlvdXNTaWJsaW5nKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7Ci19Ki8KLUxheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21w
dXRlZE5vbkNvbGxhcHNlZE1hcmdpblRvcChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xl
dmVsQm94KCkpOwotCi0gICAgcmV0dXJuIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJn
aW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS50b3A7CiB9CiAKLUxheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21wdXRlZE5v
bkNvbGxhcHNlZE1hcmdpbkJvdHRvbShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJl
Zm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQogewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAgIC8vIElm
IHRoZSB0b3AgbWFyZ2luIG9mIGEgYm94IHdpdGggbm9uLXplcm8gY29tcHV0ZWQgJ21pbi1oZWln
aHQnIGFuZCAnYXV0bycgY29tcHV0ZWQgJ2hlaWdodCcgY29sbGFwc2VzIHdpdGggdGhlIGJvdHRv
bSBtYXJnaW4KKyAgICAvLyBvZiBpdHMgbGFzdCBpbi1mbG93IGNoaWxkLCB0aGVuIHRoZSBjaGls
ZCdzIGJvdHRvbSBtYXJnaW4gZG9lcyBub3QgY29sbGFwc2Ugd2l0aCB0aGUgcGFyZW50J3MgYm90
dG9tIG1hcmdpbi4KKyAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0Qm94KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5w
YXJlbnQoKTsKKyAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKnBhcmVudC5maXJzdEluRmxv
d0NoaWxkKCk7CisgICAgaWYgKCZmaXJzdEluRmxvd0NoaWxkID09ICZsYXlvdXRCb3gpCisgICAg
ICAgIHJldHVybiBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50KGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpOworCisgICAgYXV0byogcHJldmlvdXNTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZp
b3VzSW5GbG93U2libGluZygpOworICAgIHdoaWxlICgmZmlyc3RJbkZsb3dDaGlsZCAhPSBwcmV2
aW91c1NpYmxpbmcpIHsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKCpwcmV2
aW91c1NpYmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwcmV2aW91
c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmctPnByZXZpb3VzSW5GbG93U2libGluZygpOworICAg
IH0KIAotICAgIHJldHVybiBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkuYm90dG9tOworICAgIHJldHVybiBtYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50KGxheW91dFN0YXRlLCAqcHJldmlvdXNTaWJsaW5nKTsKIH0KIAot
TGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFw
c2U6Om1hcmdpblRvcChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogeworICAgIC8vIGxhc3QgaW5m
bG93IGJveCB0byBwYXJlbnQuCisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2Jv
eC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucwogICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCi0gICAgLy8gVE9ETzogdGFrZSBfaGFz
QWRqb2luaW5nTWFyZ2luVG9wQW5kQm90dG9tKCkgaW50byBhY2NvdW50LgotICAgIGlmIChpc01h
cmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IEZpbmQgb3V0IHRoZSBsb2dpYyBiZWhpbmQg
dGhpcy4KLSAgICBpZiAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25v
cmVNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgaWYgKCFpc01hcmdpblRvcENvbGxhcHNlZFdpdGhTaWJsaW5nKGxheW91dEJveCkpIHsK
LSAgICAgICAgaWYgKCFpc01hcmdpbkJvdHRvbUNvbGxhcHNlZFRocm91Z2gobGF5b3V0Qm94KSkK
LSAgICAgICAgICAgIHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxh
eW91dEJveCk7Ci0gICAgICAgIC8vIENvbXB1dGUgdGhlIGNvbGxhcHNlZCB0aHJvdWdoIHZhbHVl
LgotICAgICAgICBhdXRvIG1hcmdpblRvcCA9IG5vbkNvbGxhcHNlZE1hcmdpblRvcChsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgYXV0byBtYXJnaW5Cb3R0b20gPSBub25Db2xsYXBz
ZWRNYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsIGxheW91dEJveCk7IAotICAgICAgICByZXR1cm4g
bWFyZ2luVmFsdWUobWFyZ2luVG9wLCBtYXJnaW5Cb3R0b20pOwotICAgIH0KKyAgICAvLyBNYXJn
aW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFw
c2UuCisgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJs
b2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9m
IGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywKLSAgICAvLyB1bmxlc3MgdGhh
dCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5n
ID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlmICghcHJldmlvdXNJ
bkZsb3dTaWJsaW5nKQotICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlv
bmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHByZXZpb3Vz
U2libGluZ01hcmdpbkJvdHRvbSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRTdGF0
ZSwgKnByZXZpb3VzSW5GbG93U2libGluZyk7Ci0gICAgYXV0byBtYXJnaW5Ub3AgPSBub25Db2xs
YXBzZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgcmV0dXJuIG1hcmdp
blZhbHVlKG1hcmdpblRvcCwgcHJldmlvdXNTaWJsaW5nTWFyZ2luQm90dG9tKTsKLX0KKyAgICAv
LyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYg
KGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
TGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFw
c2U6Om1hcmdpbkJvdHRvbShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQotewotICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgLy8gT25seSB0aGUgbGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNl
cyB3aXRoIHBhcmVudC4KKyAgICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpOworICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7CisgICAgLy8g
TWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAg
IGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFyZW50KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2luaW5nTWFyZ2luVG9w
QW5kQm90dG9tKCkgaW50byBhY2NvdW50LgotICAgIGlmIChpc01hcmdpbkJvdHRvbUNvbGxhcHNl
ZFdpdGhQYXJlbnQobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgLy8gVGhlIGJv
dHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9mICdh
dXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxkJ3Mg
Ym90dG9tIG1hcmdpbiwgaWY6CisgICAgaWYgKHBhcmVudC5zdHlsZSgpLmhlaWdodCgpLmlzQXV0
bygpKSB7CisgICAgICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBwYWRkaW5nLCBhbmQKKyAg
ICAgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUocGFyZW50KSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmIChpc01hcmdpbkJvdHRvbUNvbGxhcHNlZFRocm91Z2gobGF5b3V0Qm94
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBi
b3JkZXIsIGFuZAorICAgICAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGbG9hdHMgYW5kIG91dCBvZiBmbG93IHBvc2l0
aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlIHRoZWlyIG1hcmdpbnMuCi0gICAgaWYgKCFpc01h
cmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhTaWJsaW5nKGxheW91dEJveCkpCi0gICAgICAgIHJldHVy
biBub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAg
ICAgIC8vIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4gbmVpdGhlciBjb2xsYXBzZXMgd2l0aCBh
IHRvcCBtYXJnaW4gdGhhdCBoYXMgY2xlYXJhbmNlLi4uCisgICAgICAgIGlmIChtYXJnaW5BZnRl
ckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIFRoZSBi
b3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29s
bGFwc2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YgaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZl
bCBzaWJsaW5nLAotICAgIC8vIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5jZS4KLSAg
ICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsIGxheW91dEJv
eCk7CisgICAgICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXplcm8p
IHdpdGggdGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgICAgIGF1dG8gY29tcHV0ZWRNaW5IZWln
aHQgPSBwYXJlbnQuc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCk7CisgICAgICAgIGlmICghY29t
cHV0ZWRNaW5IZWlnaHQuaXNBdXRvKCkgJiYgY29tcHV0ZWRNaW5IZWlnaHQudmFsdWUoKSAmJiBt
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5D
b2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KGNvbnN0IEJveCYgbGF5
b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29s
bGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZChjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIC8vIGxh
c3QgaW5mbG93IGJveCB0byBwYXJlbnQuCi0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NT
UzIxL2JveC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucwotICAgIGlmIChsYXlvdXRCb3guaXNBbm9u
eW1vdXMoKSkKKyAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8
Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAg
aWYgKGxheW91dEJveC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhdXRvJiBsYXN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29u
dGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgpOworICAgIHJldHVybiBtYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhQYXJlbnQobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCk7Cit9
CiAKLSAgICBpZiAoaXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRUaHJvdWdoKGxheW91dEJveCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEJveCYgbGF5
b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCi0g
ICAgLy8gT25seSB0aGUgbGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4K
LSAgICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisgICAgLy8gQSBib3gncyBv
d24gbWFyZ2lucyBjb2xsYXBzZSBpZiB0aGUgJ21pbi1oZWlnaHQnIHByb3BlcnR5IGlzIHplcm8s
IGFuZCBpdCBoYXMgbmVpdGhlciB0b3Agb3IgYm90dG9tIGJvcmRlcnMgbm9yIHRvcCBvciBib3R0
b20gcGFkZGluZywKKyAgICAvLyBhbmQgaXQgaGFzIGEgJ2hlaWdodCcgb2YgZWl0aGVyIDAgb3Ig
J2F1dG8nLCBhbmQgaXQgZG9lcyBub3QgY29udGFpbiBhIGxpbmUgYm94LCBhbmQgYWxsIG9mIGl0
cyBpbi1mbG93IGNoaWxkcmVuJ3MgbWFyZ2lucyAoaWYgYW55KSBjb2xsYXBzZS4KKyAgICBpZiAo
aGFzQm9yZGVyQmVmb3JlKGxheW91dEJveCkgfHwgaGFzQm9yZGVyQWZ0ZXIobGF5b3V0Qm94KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5w
YXJlbnQoKTsKLSAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBi
bG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZs
b3cgY2hpbGRyZW4KLSAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KHBh
cmVudCkpCisgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNQYWRkaW5n
QWZ0ZXIobGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGhhc0Jv
cmRlckJlZm9yZShwYXJlbnQpKQorICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgY29tcHV0ZWQgMCBo
ZWlnaHQuCisgICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSB8fCAh
bGF5b3V0Qm94LnN0eWxlKCkubWluSGVpZ2h0KCkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoIXBhcmVudC5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygpKQor
ICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGUgaW5mbG93IGJsb2NrIGNoaWxkcmVuIGhhdmUgY29s
bGFwc2VkIG1hcmdpbnMKKyAgICBhdXRvJiBjb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+
KGxheW91dEJveCk7CisgICAgaWYgKGNvbnRhaW5lci5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IENoZWNrIGlmIHRoZXJl
J3Mgbm8gbGluZSBib3ggKGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQpLiBUaG91Z2ggaXQgY2Fu
J3QgaGF2ZSBhIGxpbmVib3ggdW5sZXNzIGl0IGhhcyBhIGNoaWxkLgogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xs
YXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKGNvbnN0IEJv
eCYpCitzdGF0aWMgQmxvY2tGb3JtYXR0aW5nU3RhdGU6OlBvc2l0aXZlQW5kTmVnYXRpdmVNYXJn
aW5zOjpWYWx1ZXMgY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKEJsb2NrRm9ybWF0
dGluZ1N0YXRlOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luczo6VmFsdWVzIGEsIEJsb2NrRm9y
bWF0dGluZ1N0YXRlOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luczo6VmFsdWVzIGIpCiB7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlOjpQb3NpdGl2ZUFuZE5l
Z2F0aXZlTWFyZ2luczo6VmFsdWVzIGNvbXB1dGVkVmFsdWVzOworICAgIGlmIChhLnBvc2l0aXZl
ICYmIGIucG9zaXRpdmUpCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLnBvc2l0aXZlID0gc3RkOjpt
YXgoKmEucG9zaXRpdmUsICpiLnBvc2l0aXZlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1dGVk
VmFsdWVzLnBvc2l0aXZlID0gYS5wb3NpdGl2ZSA/IGEucG9zaXRpdmUgOiBiLnBvc2l0aXZlOwor
CisgICAgaWYgKGEubmVnYXRpdmUgJiYgYi5uZWdhdGl2ZSkKKyAgICAgICAgY29tcHV0ZWRWYWx1
ZXMubmVnYXRpdmUgPSBzdGQ6Om1heCgqYS5uZWdhdGl2ZSwgKmIubmVnYXRpdmUpOworICAgIGVs
c2UKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubmVnYXRpdmUgPSBhLm5lZ2F0aXZlID8gYS5uZWdh
dGl2ZSA6IGIubmVnYXRpdmU7CisKKyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAKLUxh
eW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
Ojpjb2xsYXBzZWRNYXJnaW5Cb3R0b21Gcm9tTGFzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgQmxvY2tGb3JtYXR0aW5n
U3RhdGU6OlBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5zOjpWYWx1ZXMgY29tcHV0ZWRQb3NpdGl2
ZUFuZE5lZ2F0aXZlTWFyZ2luKEJsb2NrRm9ybWF0dGluZ1N0YXRlOjpQb3NpdGl2ZUFuZE5lZ2F0
aXZlTWFyZ2luczo6VmFsdWVzIGEsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWFyZ2luVmFs
dWUpCiB7Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgaWYg
KCFtYXJnaW5WYWx1ZSkKKyAgICAgICAgcmV0dXJuIGE7CisgICAgaWYgKCptYXJnaW5WYWx1ZSA+
IDApCisgICAgICAgIHJldHVybiBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oYSwg
eyBtYXJnaW5WYWx1ZSwgeyB9IH0pOworICAgIGVsc2UgaWYgKCptYXJnaW5WYWx1ZSA8IDApCisg
ICAgICAgIHJldHVybiBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oYSwgeyB7IH0s
IG1hcmdpblZhbHVlIH0pOworICAgIHJldHVybiB7IH07Cit9CiAKLSAgICAvLyBDaGVjayBpZiB0
aGUgbGFzdCBjaGlsZCBwcm9wYWdhdGVzIGl0cyBtYXJnaW4gYm90dG9tLgotICAgIGlmICghaXM8
Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCku
aGFzSW5GbG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7CitzdGF0aWMgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBtYXJnaW5WYWx1ZShCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6UG9zaXRpdmVB
bmROZWdhdGl2ZU1hcmdpbnM6OlZhbHVlcyBtYXJnaW5WYWx1ZXMpCit7CisgICAgLy8gV2hlbiB0
d28gb3IgbW9yZSBtYXJnaW5zIGNvbGxhcHNlLCB0aGUgcmVzdWx0aW5nIG1hcmdpbiB3aWR0aCBp
cyB0aGUgbWF4aW11bSBvZiB0aGUgY29sbGFwc2luZyBtYXJnaW5zJyB3aWR0aHMuCisgICAgLy8g
SW4gdGhlIGNhc2Ugb2YgbmVnYXRpdmUgbWFyZ2lucywgdGhlIG1heGltdW0gb2YgdGhlIGFic29s
dXRlIHZhbHVlcyBvZiB0aGUgbmVnYXRpdmUgYWRqb2luaW5nIG1hcmdpbnMgaXMgZGVkdWN0ZWQg
ZnJvbSB0aGUgbWF4aW11bQorICAgIC8vIG9mIHRoZSBwb3NpdGl2ZSBhZGpvaW5pbmcgbWFyZ2lu
cy4gSWYgdGhlcmUgYXJlIG5vIHBvc2l0aXZlIG1hcmdpbnMsIHRoZSBtYXhpbXVtIG9mIHRoZSBh
YnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIGFkam9pbmluZyBtYXJnaW5zIGlzIGRlZHVjdGVkIGZyb20g
emVyby4KKyAgICBpZiAoIW1hcmdpblZhbHVlcy5uZWdhdGl2ZSkKKyAgICAgICAgcmV0dXJuIG1h
cmdpblZhbHVlcy5wb3NpdGl2ZTsKIAotICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0
aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZv
b2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRp
bmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghbWFyZ2luVmFsdWVzLnBvc2l0
aXZlKQorICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWVzLm5lZ2F0aXZlOwogCi0gICAgLy8gRklY
TUU6IENoZWNrIGZvciBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4uCi0gICAgYXV0byYgbGFzdElu
Rmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hp
bGQoKTsKLSAgICBpZiAoIWlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChsYXN0SW5G
bG93Q2hpbGQpKQotICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gKm1hcmdpblZhbHVlcy5w
b3NpdGl2ZSArICptYXJnaW5WYWx1ZXMubmVnYXRpdmU7Cit9CiAKLSAgICAvLyBDb2xsZWN0IGNv
bGxhcHNlZCBtYXJnaW4gYm90dG9tIHJlY3Vyc2l2ZWx5LgotICAgIHJldHVybiBtYXJnaW5WYWx1
ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRTdGF0ZSwgbGFzdEluRmxv
d0NoaWxkKSwgY29sbGFwc2VkTWFyZ2luQm90dG9tRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwg
bGFzdEluRmxvd0NoaWxkKSk7CitNYXJnaW5WYWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbnMoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hXaWR0aCA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJv
eFdpZHRoKCk7CisgICAgcmV0dXJuIHsgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3gu
c3R5bGUoKS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFdpZHRoKSwK
KyAgICAgICAgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5tYXJnaW5B
ZnRlcigpLCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94V2lkdGgpIH07Cit9CisKK3ZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjp1cGRhdGVDb2xs
YXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQoreworICAgIC8vIDEuIEdldCB0aGUgbWFyZ2luIGJlZm9yZSB2YWx1ZSBm
cm9tIHRoZSBuZXh0IGluLWZsb3cgc2libGluZy4gVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGlzIGJv
eCdzIG1hcmdpbiBhZnRlciB2YWx1ZSBub3cgc2luY2UgdGhleSBhcmUgY29sbGFwc2VkLgorICAg
IC8vIDIuIFVwZGF0ZSB0aGUgY29sbHBhc2VkIG1hcmdpbiBhZnRlciB2YWx1ZSBhcyB3ZWxsIGFz
IHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyAzLiBDaGVjayBpZiB0aGUgYm94
J3MgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoLgorICAgIC8vIDQuIElmIHNvLCB1cGRhdGUgdGhl
IGNvbGxwYXNlZCBtYXJnaW4gYmVmb3JlIHZhbHVlIGFzIHdlbGwgYXMgdGhlIHBvc2l0aXZlL25l
Z2F0aXZlIGNhY2hlLgorICAgIC8vIDUuIEluIGNhc2Ugb2YgY29sbGFwc2VkIHRocm91Z2ggbWFy
Z2lucyBjaGVjayBpZiB0aGUgYmVmb3JlIG1hcmdpbiBjb2xsYXBlcyB3aXRoIHRoZSBwcmV2aW91
cyBpbmZsb3cgc2libGluZydzIGFmdGVyIG1hcmdpbi4KKyAgICAvLyA2LiBJZiBzbywganVtcCB0
byAjMi4KKyAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1hcmdpbnND
b2xsYXBzZVRocm91Z2ggPSBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChs
YXlvdXRCb3gpOworICAgIGF1dG8mIG5leHRJbkZsb3dTaWJsaW5nID0gKmxheW91dEJveC5uZXh0
SW5GbG93U2libGluZygpOworICAgIGF1dG8gbmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUgPSBsYXlv
dXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KG5leHRJbkZsb3dTaWJsaW5nKS5tYXJnaW5U
b3AoKTsKKworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7
IG1hcmdpbnNDb2xsYXBzZVRocm91Z2ggPyBuZXh0U2libGluZ01hcmdpbkJlZm9yZSA6IGRpc3Bs
YXlCb3gubWFyZ2luVG9wKCksIG5leHRTaWJsaW5nTWFyZ2luQmVmb3JlIH0pOworCisgICAgYXV0
byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4o
bGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkpOworICAgIGF1dG8g
cG9zaXRpdmVBbmROZWdhdGl2ZVZhbHVlcyA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZl
QW5kTmVnYXRpdmVNYXJnaW5zKGxheW91dEJveCk7CisgICAgYXV0byBuZXh0U2libGluZ1Bvc2l0
aXZlQW5kTmVnYXRpdmVWYWx1ZXMgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5l
Z2F0aXZlTWFyZ2lucyhuZXh0SW5GbG93U2libGluZyk7CisKKyAgICBwb3NpdGl2ZUFuZE5lZ2F0
aXZlVmFsdWVzLmFmdGVyID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKG5leHRT
aWJsaW5nUG9zaXRpdmVBbmROZWdhdGl2ZVZhbHVlcy5iZWZvcmUsIHBvc2l0aXZlQW5kTmVnYXRp
dmVWYWx1ZXMuYWZ0ZXIpOworICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKQorICAgICAg
ICBwb3NpdGl2ZUFuZE5lZ2F0aXZlVmFsdWVzLmJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmRO
ZWdhdGl2ZU1hcmdpbihwb3NpdGl2ZUFuZE5lZ2F0aXZlVmFsdWVzLmJlZm9yZSwgcG9zaXRpdmVB
bmROZWdhdGl2ZVZhbHVlcy5iZWZvcmUpOworICAgIGJsb2NrRm9ybWF0dGluZ1N0YXRlLnNldFBv
c2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5zKGxheW91dEJveCwgcG9zaXRpdmVBbmROZWdhdGl2ZVZh
bHVlcyk7CisKKyAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxp
bmcobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0
ZUNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqbGF5b3V0Qm94LnByZXZpb3VzSW5G
bG93U2libGluZygpKTsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpWZXJ0aWNhbFZhbHVlcyBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OnZlcnRpY2Fs
TWFyZ2lucyhjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogeworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAgIC8v
IDEuIEdldCBtaW4vbWF4IG1hcmdpbiB0b3AgdmFsdWVzIGZyb20gdGhlIGZpcnN0IGluLWZsb3cg
Y2hpbGQgaWYgd2UgYXJlIGNvbGxhcHNpbmcgbWFyZ2luIHRvcCB3aXRoIGl0LgorICAgIC8vIDIu
IEdldCBtaW4vbWF4IG1hcmdpbiB0b3AgdmFsdWVzIGZyb20gdGhlIHByZXZpb3VzIGluLWZsb3cg
c2libGluZywgaWYgd2UgYXJlIGNvbGxhcHNpbmcgbWFyZ2luIHRvcCB3aXRoIGl0LgorICAgIC8v
IDMuIEdldCB0aGlzIGxheW91dCBib3gncyBjb21wdXRlZCBtYXJnaW4gdG9wIHZhbHVlLgorICAg
IC8vIDQuIFVwZGF0ZSB0aGUgbWluL21heCB2YWx1ZSBhbmQgY29tcHV0ZSB0aGUgZmluYWwgbWFy
Z2luLgorICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3Jt
YXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gp
KTsKKworICAgIC8vIE1hcmdpbiBiZWZvcmUKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6UG9z
aXRpdmVBbmROZWdhdGl2ZU1hcmdpbnM6OlZhbHVlcyBmaXN0Q2hpbGRNaW5NYXhNYXJnaW5CZWZv
cmU7CisgICAgaWYgKG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpKSB7CisgICAgICAgIC8vIEJ5IG5vdyB0aGUgZmlyc3QgY2hp
bGQgaGFzIHRvIGhhdmUgc29tZSBtaW4vbWF4IHZhbHVlIChldmVuIGlmIHRoZXkgYXJlIGp1c3Qg
MCBjb21wdXRlZCB2YWx1ZXMuKQorICAgICAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRv
d25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgICAg
IEFTU0VSVCgmYmxvY2tGb3JtYXR0aW5nU3RhdGUgPT0gJmRvd25jYXN0PEJsb2NrRm9ybWF0dGlu
Z1N0YXRlPihsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3goZmlyc3RJbkZsb3dDaGls
ZCkpKTsKKyAgICAgICAgZmlzdENoaWxkTWluTWF4TWFyZ2luQmVmb3JlID0gYmxvY2tGb3JtYXR0
aW5nU3RhdGUucG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbnMoZmlyc3RJbkZsb3dDaGlsZCkuYmVm
b3JlOworICAgIH0KKworICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlOjpQb3NpdGl2ZUFuZE5lZ2F0
aXZlTWFyZ2luczo6VmFsdWVzIHByZXZpb3VzU2libGluZ01pbk1heE1hcmdpbkFmdGVyOworICAg
IGlmIChtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpKSB7CisgICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGluZyA9ICps
YXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIEFTU0VSVCgmYmxvY2tG
b3JtYXR0aW5nU3RhdGUgPT0gJmRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gocHJldmlvdXNJbkZsb3dTaWJsaW5nKSkpOworICAg
ICAgICBwcmV2aW91c1NpYmxpbmdNaW5NYXhNYXJnaW5BZnRlciA9IGJsb2NrRm9ybWF0dGluZ1N0
YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5zKHByZXZpb3VzSW5GbG93U2libGluZykuYWZ0
ZXI7CisgICAgfQorCisgICAgLy8gTWFyZ2luIGFmdGVyCisgICAgQmxvY2tGb3JtYXR0aW5nU3Rh
dGU6OlBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5zOjpWYWx1ZXMgbGFzdENoaWxkTWluTWF4TWFy
Z2luQWZ0ZXI7CisgICAgaWYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGls
ZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkgeworICAgICAgICAvLyBCeSBub3cgdGhlIGxhc3Qg
Y2hpbGQgaGFzIHRvIGhhdmUgc29tZSBtaW4vbWF4IHZhbHVlIChldmVuIGlmIHRoZXkgYXJlIGp1
c3QgMCBjb21wdXRlZCB2YWx1ZXMuKQorICAgICAgICBhdXRvJiBsYXN0SW5GbG93Q2hpbGQgPSAq
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgpOworICAgICAg
ICBBU1NFUlQoJmJsb2NrRm9ybWF0dGluZ1N0YXRlID09ICZkb3duY2FzdDxCbG9ja0Zvcm1hdHRp
bmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxhc3RJbkZsb3dDaGls
ZCkpKTsKKyAgICAgICAgbGFzdENoaWxkTWluTWF4TWFyZ2luQWZ0ZXIgPSBibG9ja0Zvcm1hdHRp
bmdTdGF0ZS5wb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2lucyhsYXN0SW5GbG93Q2hpbGQpLmFmdGVy
OworCisgICAgICAgIC8vIFdlIGRvbid0IGtub3cgeWV0IHRoZSBtYXJnaW4gYmVmb3JlIHZhbHVl
IG9mIHRoZSBuZXh0IHNpYmxpbmcuIExldCdzIGp1c3QgcHJldGVuZCBpdCBkb2VzIG5vdCBoYXZl
IG9uZSBhbmQKKyAgICAgICAgLy8gdXBkYXRlIGl0IHdoZW4gd2UgY29tcHV0ZSB0aGUgbmV4dCBz
aWJsaW5nJ3MgbWFyZ2luIGJlZm9yZS4KKyAgICB9CisKKyAgICBhdXRvIG1pbk1heE1hcmdpbkJl
Zm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihmaXN0Q2hpbGRNaW5NYXhN
YXJnaW5CZWZvcmUsIHByZXZpb3VzU2libGluZ01pbk1heE1hcmdpbkFmdGVyKTsKKyAgICBhdXRv
IG5vbkNvbGxhcHNlZE1hcmdpbnMgPSBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbnMobGF5b3V0
U3RhdGUsIGxheW91dEJveCk7CisKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6UG9zaXRpdmVB
bmROZWdhdGl2ZU1hcmdpbnMgbWluTWF4TWFyZ2luVmFsdWVzIHsKKyAgICAgICAgY29tcHV0ZWRQ
b3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKG1pbk1heE1hcmdpbkJlZm9yZSwgbm9uQ29sbGFwc2Vk
TWFyZ2lucy5iZWZvcmUpLAorICAgICAgICBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJn
aW4obGFzdENoaWxkTWluTWF4TWFyZ2luQWZ0ZXIsIG5vbkNvbGxhcHNlZE1hcmdpbnMuYWZ0ZXIp
fTsKKworICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dEJveCkpIHsKKyAgICAg
ICAgLy8gQmVmb3JlIGFuZCBhZnRlciBtYXJnaW5zIGNvbGxhcHNlLgorICAgICAgICBtaW5NYXhN
YXJnaW5WYWx1ZXMuYmVmb3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKG1p
bk1heE1hcmdpblZhbHVlcy5iZWZvcmUsIG1pbk1heE1hcmdpblZhbHVlcy5hZnRlcik7CisgICAg
ICAgIG1pbk1heE1hcmdpblZhbHVlcy5hZnRlciA9IG1pbk1heE1hcmdpblZhbHVlcy5iZWZvcmU7
CisgICAgfQogCi0gICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJnaW4gYm90dG9tIGluY2x1ZGVzIGNv
bGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgbGFzdCBjaGlsZC4KLSAgICByZXR1cm4gbWFyZ2lu
VmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsIGxheW91
dEJveCksIGNvbGxhcHNlZE1hcmdpbkJvdHRvbUZyb21MYXN0Q2hpbGQobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpOworICAgIGJsb2NrRm9ybWF0dGluZ1N0YXRlLnNldFBvc2l0aXZlQW5kTmVnYXRp
dmVNYXJnaW5zKGxheW91dEJveCwgbWluTWF4TWFyZ2luVmFsdWVzKTsKKyAgICByZXR1cm4geyB7
IG5vbkNvbGxhcHNlZE1hcmdpbnMuYmVmb3JlLCBtYXJnaW5WYWx1ZShtaW5NYXhNYXJnaW5WYWx1
ZXMuYmVmb3JlKSB9LCB7IG5vbkNvbGxhcHNlZE1hcmdpbnMuYWZ0ZXIsIG1hcmdpblZhbHVlKG1p
bk1heE1hcmdpblZhbHVlcy5hZnRlcikgfSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAppbmRleCA2MmEzOTkyY2FkYS4uYTkzOWFm
MTJlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlC
b3guaApAQCAtMTc0LDYgKzE3NCw5IEBAIHB1YmxpYzoKICAgICBSZWN0IHBhZGRpbmdCb3goKSBj
b25zdDsKICAgICBSZWN0IGNvbnRlbnRCb3goKSBjb25zdDsKIAorICAgIHZvaWQgc2V0SGFzQ2xl
YXJhbmNlKGJvb2wgY2xlYXJhbmNlKTsKKyAgICBib29sIGhhc0NsZWFyYW5jZSgpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIHN0cnVjdCBTdHlsZSB7CiAgICAgICAgIFN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJik7CkBAIC0xOTEsOCArMTk0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENvbnRl
bnRCb3hXaWR0aChMYXlvdXRVbml0KTsKIAogICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihM
YXlvdXQ6Okhvcml6b250YWxFZGdlcyk7Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbE1hcmdpbihMYXlv
dXQ6OlZlcnRpY2FsRWRnZXMpOwotICAgIHZvaWQgc2V0VmVydGljYWxOb25Db2xsYXBzZWRNYXJn
aW4oTGF5b3V0OjpWZXJ0aWNhbEVkZ2VzKTsKKyAgICB2b2lkIHNldFZlcnRpY2FsTWFyZ2luKExh
eW91dDo6TWFyZ2luVmFsdWVzKTsKKyAgICB2b2lkIHNldFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFy
Z2luKExheW91dDo6TWFyZ2luVmFsdWVzKTsKICAgICB2b2lkIHNldEhvcml6b250YWxOb25Db21w
dXRlZE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxFZGdlcyk7CiAgICAgdm9pZCBzZXRFc3RpbWF0
ZWRNYXJnaW5Ub3AoTGF5b3V0VW5pdCBtYXJnaW5Ub3ApIHsgbV9lc3RpbWF0ZWRNYXJnaW5Ub3Ag
PSBtYXJnaW5Ub3A7IH0KIApAQCAtMjMyLDYgKzIzNSw5IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0
OjpFZGdlcyBtX2JvcmRlcjsKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dDo6RWRnZXM+IG1fcGFk
ZGluZzsKIAorICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IG5lZWQgdG8gZ28gdG8gdGhlIHN0YXRl
IGluc3RlYWQuCisgICAgYm9vbCBtX2hhc0NsZWFyYW5jZSB7IGZhbHNlIH07CisKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgYm9vbCBtX2hhc1ZhbGlkVG9wIHsgZmFsc2UgfTsKICAgICBib29s
IG1faGFzVmFsaWRMZWZ0IHsgZmFsc2UgfTsKQEAgLTI0Myw2ICsyNDksNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxp
ZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRXaWR0
aCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ZhbGlkQ2xlYXJhbmNlIHsgZmFsc2UgfTsKICNl
bmRpZgogfTsKIApAQCAtNTE1LDIxICs1MjIsMjEgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jp
em9udGFsTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbEVkZ2VzIG1hcmdpbikKICAgICBtX21hcmdp
bi5ob3Jpem9udGFsID0gbWFyZ2luOwogfQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRpY2Fs
TWFyZ2luKExheW91dDo6VmVydGljYWxFZGdlcyBtYXJnaW4pCitpbmxpbmUgdm9pZCBCb3g6OnNl
dFZlcnRpY2FsTWFyZ2luKExheW91dDo6TWFyZ2luVmFsdWVzIG1hcmdpbikKIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNhbE1hcmdpbigpOwogI2VuZGlmCi0g
ICAgQVNTRVJUKCFtX2VzdGltYXRlZE1hcmdpblRvcCB8fCAqbV9lc3RpbWF0ZWRNYXJnaW5Ub3Ag
PT0gbWFyZ2luLnRvcCk7Ci0gICAgbV9tYXJnaW4udmVydGljYWwgPSBtYXJnaW47CisgICAgQVNT
RVJUKCFtX2VzdGltYXRlZE1hcmdpblRvcCB8fCAqbV9lc3RpbWF0ZWRNYXJnaW5Ub3AgPT0gbWFy
Z2luLmJlZm9yZSk7CisgICAgbV9tYXJnaW4udmVydGljYWwgPSB7ICptYXJnaW4uYmVmb3JlLCAq
bWFyZ2luLmFmdGVyIH07CiB9CiAKLWlubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxOb25Db2xs
YXBzZWRNYXJnaW4oTGF5b3V0OjpWZXJ0aWNhbEVkZ2VzIG1hcmdpbikKK2lubGluZSB2b2lkIEJv
eDo6c2V0VmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4oTGF5b3V0OjpNYXJnaW5WYWx1ZXMgbWFy
Z2luKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTm9u
Q29sbGFwc2VkTWFyZ2luKCk7CiAjZW5kaWYKLSAgICBtX3ZlcnRpY2FsTm9uQ29sbGFwc2VkTWFy
Z2luID0gbWFyZ2luOworICAgIG1fdmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4gPSB7ICptYXJn
aW4uYmVmb3JlLCAqbWFyZ2luLmFmdGVyIH07CiB9CiAKIGlubGluZSB2b2lkIEJveDo6c2V0SG9y
aXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbEVkZ2VzIG1hcmdpbikK
QEAgLTY2MCw2ICs2NjcsMjAgQEAgaW5saW5lIExheW91dFVuaXQgQm94Ojpib3JkZXJSaWdodCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fYm9yZGVyLmhvcml6b250YWwucmlnaHQ7CiB9CiAKK2lubGlu
ZSB2b2lkIEJveDo6c2V0SGFzQ2xlYXJhbmNlKGJvb2wgY2xlYXJhbmNlKQoreworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBtX2hhc1ZhbGlkQ2xlYXJhbmNlID0gdHJ1ZTsKKyNlbmRpZgorICAg
IG1faGFzQ2xlYXJhbmNlID0gY2xlYXJhbmNlOworfQorCitpbmxpbmUgYm9vbCBCb3g6Omhhc0Ns
ZWFyYW5jZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRDbGVhcmFuY2UpOworICAg
IHJldHVybiBtX2hhc0NsZWFyYW5jZTsKK30KKwogfQogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357423</attachid>
            <date>2018-12-16 18:00:43 -0800</date>
            <delta_ts>2018-12-29 08:46:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>68607</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29s
bGFwc2Utd2l0aC1jbGVhcmFuY2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svYmxvY2st
b25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1jbGVhcmFuY2UuaHRtbAppbmRleCBiYWY2NGNiYWRl
Ny4uNzBkZjMwNTg0YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svYmxvY2st
b25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1jbGVhcmFuY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtY2xlYXJhbmNlLmh0
bWwKQEAgLTEzLDM1ICsxMyw1IEBAIGRpdiB7CiAJPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdp
ZHRoOiA1MHB4OyBoZWlnaHQ6IDIwcHg7Ij48L2Rpdj4KIAk8ZGl2IHN0eWxlPSJjbGVhcjogbGVm
dDsgd2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsgbWFyZ2luLXRvcDogMzBweCI+PC9kaXY+CiA8
L2Rpdj4KLTxkaXYgc3R5bGU9IndpZHRoOiA1MDBweDsgaGVpZ2h0OiA2MHB4OyI+Ci0JPGRpdiBz
dHlsZT0id2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsgbWFyZ2luLWJvdHRvbTogMTBweCI+PC9k
aXY+Ci0JPGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogNTBweDsgaGVpZ2h0OiAyMHB4
OyI+PC9kaXY+Ci0JPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyB3aWR0aDogMTBweDsgaGVpZ2h0
OiAxMHB4OyBtYXJnaW4tdG9wOiAzMHB4Ij48L2Rpdj4KLTwvZGl2PgotPGRpdiBzdHlsZT0id2lk
dGg6IDUwMHB4OyBoZWlnaHQ6IDYwcHg7Ij4KLQk8ZGl2IHN0eWxlPSJ3aWR0aDogMTBweDsgaGVp
Z2h0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4Ij48L2Rpdj4KLQk8ZGl2IHN0eWxlPSJjbGVh
cjogYm90aDsgd2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsgbWFyZ2luLXRvcDogMzBweCI+PC9k
aXY+Ci08L2Rpdj4KLTxkaXYgc3R5bGU9IndpZHRoOiA1MDBweDsgaGVpZ2h0OiA2MHB4OyI+Ci0J
PGRpdiBzdHlsZT0id2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsgbWFyZ2luLWJvdHRvbTogMTBw
eCI+PC9kaXY+Ci0JPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6
IDIwcHg7Ij48L2Rpdj4KLQk8ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7IHdpZHRoOiA1MHB4OyBo
ZWlnaHQ6IDIwcHg7Ij48L2Rpdj4KLQk8ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsgd2lkdGg6IDEw
cHg7IGhlaWdodDogMTBweDsgbWFyZ2luLXRvcDogMzBweCI+PC9kaXY+Ci08L2Rpdj4KLTxkaXYg
c3R5bGU9IndpZHRoOiA1MDBweDsgaGVpZ2h0OiA2MHB4OyI+Ci0JPGRpdiBzdHlsZT0id2lkdGg6
IDEwcHg7IGhlaWdodDogMTBweDsgbWFyZ2luLWJvdHRvbTogMTBweCI+PC9kaXY+Ci0JPGRpdiBz
dHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDIwcHg7Ij48L2Rpdj4KLQk8
ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsgd2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsgbWFyZ2lu
LXRvcDogMzBweCI+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgc3R5bGU9IndpZHRoOiA1MDBweDsgaGVp
Z2h0OiA2MHB4OyI+Ci0JPGRpdiBzdHlsZT0id2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsgbWFy
Z2luLWJvdHRvbTogMTBweCI+PC9kaXY+Ci0JPGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0
aDogNTBweDsgaGVpZ2h0OiAyMHB4OyI+PC9kaXY+Ci0JPGRpdiBzdHlsZT0iY2xlYXI6IGJvdGg7
IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7IG1hcmdpbi10b3A6IDMwcHgiPjwvZGl2PgotPC9k
aXY+Ci08ZGl2IHN0eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogNjBweDsiPgotCTxkaXYgc3R5
bGU9IndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7IG1hcmdpbi1ib3R0b206IDEwcHgiPjwvZGl2
PgotCTxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0OyB3aWR0aDogNTBweDsgaGVpZ2h0OiA1cHg7Ij48
L2Rpdj4KLQk8ZGl2IHN0eWxlPSJjbGVhcjogbGVmdDsgd2lkdGg6IDEwcHg7IGhlaWdodDogMTBw
eDsgbWFyZ2luLXRvcDogMTBweCI+PC9kaXY+Ci08L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5oCmluZGV4IDMyMTYzMDJlYzlkLi44OWRlODQzNmVhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTk2LDggKzk2LDggQEAgcHJvdGVjdGVk
OgogICAgICAgICBzdGF0aWMgRWRnZXMgY29tcHV0ZWRCb3JkZXIoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWRnZXM+IGNvbXB1
dGVkUGFkZGluZyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0
YXRpYyBIb3Jpem9udGFsTWFyZ2luIGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdp
blZhbHVlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBW
ZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNh
bE1hcmdpblZhbHVlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0
YXRpYyBIb3Jpem9udGFsTWFyZ2luIGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdp
bihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgVmVydGlj
YWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJn
aW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAogICAgICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKGNvbnN0IExlbmd0
aCYgZ2VvbWV0cnlQcm9wZXJ0eSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAg
ICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpeGVkVmFsdWUoY29uc3Qg
TGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAxNGJiYTFlYjM0MC4uNmU3MjIz
ZjE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKQEAgLTcyNiw3ICs3MjYsNyBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihM
YQogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jaykuY29udGVudEJveFdpZHRoKCk7CiAKICAgICAv
LyAjMQotICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFy
Z2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0byBtYXJnaW4gPSBjb21w
dXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7
CiAgICAgLy8gIzIKICAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2Vk
V2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IGxheW91dEJveC5z
dHlsZSgpLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgaWYgKCF3
aWR0aCkKQEAgLTc1NCw3ICs3NTQsNyBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdAogICAgIC8v
CiAgICAgLy8gMS4gSWYgJ21hcmdpbi1sZWZ0JyBvciAnbWFyZ2luLXJpZ2h0JyBhcmUgY29tcHV0
ZWQgYXMgJ2F1dG8nLCB0aGVpciB1c2VkIHZhbHVlIGlzICcwJy4KICAgICAvLyAyLiBUaGUgdXNl
ZCB2YWx1ZSBvZiAnd2lkdGgnIGlzIGRldGVybWluZWQgYXMgZm9yIGlubGluZSByZXBsYWNlZCBl
bGVtZW50cy4KLSAgICBhdXRvIG1hcmdpbiA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRh
bE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8gbWFyZ2luID0g
Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3Rl
ZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsKICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgsIG1hcmdpbi5zdGFydCwg
bWFyZ2luLmVuZCk7CkBAIC04MTEsNyArODExLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QK
ICAgICAvLyAgICB0aGUgaGVpZ2h0IG9mIHRoZSBsYXJnZXN0IHJlY3RhbmdsZSB0aGF0IGhhcyBh
IDI6MSByYXRpbywgaGFzIGEgaGVpZ2h0IG5vdCBncmVhdGVyIHRoYW4gMTUwcHgsIGFuZCBoYXMg
YSB3aWR0aCBub3QgZ3JlYXRlciB0aGFuIHRoZSBkZXZpY2Ugd2lkdGguCiAKICAgICAvLyAjMQot
ICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25D
b2xsYXBzZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKIAogICAgIGF1
dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byByZXBsYWNlZCA9IGxheW91
dEJveC5yZXBsYWNlZCgpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgc3RkOjpvcHRpb25hbDxFZGdl
cz4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoY29uc3QgTGF5
b3V0U3QKICAgICB9OwogfQogCi1Ib3Jpem9udGFsTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0hvcml6b250
YWxNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNl
ZEhvcml6b250YWxNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwog
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgp
OwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgSG9yaXpvbnRhbE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmcKICAgICByZXR1
cm4geyBtYXJnaW5TdGFydCwgbWFyZ2luRW5kIH07CiB9CiAKLVZlcnRpY2FsTWFyZ2luOjpDb21w
dXRlZFZhbHVlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFw
c2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQorVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
bihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91
dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCBkMTBhYmUy
NzY1NS4uNTQzMDFjZDZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBMYXlvdXRVbml0IEZvcm1h
dHRpbmdDb250ZXh0OjpRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2Nr
V2l0aEZpeAogICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5pc0JvZHlCb3goKSB8fCBjb250
YWluaW5nQmxvY2stPmlzRG9jdW1lbnRCb3goKSkgewogICAgICAgICAgICAgYXV0byYgZGlzcGxh
eUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9j
ayk7CiAKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlv
dXRTdGF0ZSwgKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFy
Z2luID0gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZl
cnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCAqY29udGFpbmluZ0Jsb2NrKTsKICAgICAgICAgICAg
IGF1dG8gdmVydGljYWxQYWRkaW5nID0gZGlzcGxheUJveC5wYWRkaW5nVG9wKCkudmFsdWVfb3Io
MCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKICAgICAgICAgICAg
IGF1dG8gdmVydGljYWxCb3JkZXIgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZGlzcGxheUJv
eC5ib3JkZXJCb3R0b20oKTsKICAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFy
Z2luUGFkZGluZ0FuZEJvcmRlciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyB2ZXJ0aWNhbE1h
cmdpbi5hZnRlciArIHZlcnRpY2FsUGFkZGluZyArIHZlcnRpY2FsQm9yZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCA4ZWIwNTQ3NDNhZi4uNDUyYmIyYjkxYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC0zMzksNyArMzM5LDcg
QEAgdm9pZCBMYXlvdXRTdGF0ZTo6dmVyaWZ5QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlvdXRUcmVl
KGNvbnN0IFJlbmRlclZpZXcmIHJlbmRlclYKICAgICBzaG93TGF5b3V0VHJlZShpbml0aWFsQ29u
dGFpbmluZ0Jsb2NrKCksIHRoaXMpOwogI2VuZGlmCiAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0
cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisvLyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggNmFmYWQ0MjEwMmMuLmNhZDc3Zjc1Mzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1hcmdp
bkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBhdXRvJiBsYXlvdXRT
dGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0gICAgYXV0byBlc3RpbWF0ZWRNYXJnaW5CZWZv
cmUgPSBHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpOworICAgIGF1dG8gZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gR2VvbWV0cnk6Ok1hcmdpbjo6
dmVydGljYWwobGF5b3V0U3RhdGUsIGxheW91dEJveCkudXNlZFZhbHVlcygpLmJlZm9yZTsKIAog
ICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KGxheW91dEJveCk7CiAgICAgZGlzcGxheUJveC5zZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoZXN0
aW1hdGVkTWFyZ2luQmVmb3JlKTsKQEAgLTI4NSwxNiArMjg1LDIxIEBAIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGlu
Z0NvbnRleHQmCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVWZXJ0aWNhbFBv
c2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4
dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5o
YXNGbG9hdENsZWFyKCkpOwotICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgp
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0
aGlzLT5sYXlvdXRTdGF0ZSgpOworICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0
ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGxheW91dEJveCkuc2V0SGFzQ2xlYXJhbmNlKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIC8vIEZvciBmb3JtYXR0aW5nIHJvb3RzLCB3ZSBhbHJlYWR5IHByZWNvbXB1
dGVkIGZpbmFsIHBvc2l0aW9uLgogICAgIGlmICghbGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0
dGluZ0NvbnRleHQoKSkKICAgICAgICAgY29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFu
Y2VzdG9ycyhsYXlvdXRCb3gpOwogICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9y
ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7CiAKLSAgICBpZiAoYXV0byB2ZXJ0aWNhbFBvc2l0
aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0aW9uV2l0aENs
ZWFyYW5jZShsYXlvdXRCb3gpKQorICAgIGF1dG8gdmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFu
Y2UgPSBmbG9hdGluZ0NvbnRleHQudmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UobGF5b3V0
Qm94KTsKKyAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCku
c2V0SGFzQ2xlYXJhbmNlKHZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlLmhhc192YWx1ZSgp
KTsKKyAgICBpZiAodmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UpCiAgICAgICAgIGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRUb3AoKnZlcnRpY2Fs
UG9zaXRpb25XaXRoQ2xlYXJhbmNlKTsKIH0KIApAQCAtMzc1LDkgKzM4MCwyNCBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGhlaWdo
dEFuZE1hcmdpbi5oZWlnaHQpOwogICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oaGVp
Z2h0QW5kTWFyZ2luLm1hcmdpbik7CiAKLSAgICAvLyBJZiB0aGlzIGJveCBoYXMgYWxyZWFkeSBi
ZWVuIG1vdmVkIGJ5IHRoZSBlc3RpbWF0ZWQgdmVydGljYWwgbWFyZ2luLCBubyBuZWVkIHRvIG1v
dmUgaXQgYWdhaW4uCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8
ICFkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQotICAgICAgICBkaXNwbGF5Qm94
Lm1vdmVWZXJ0aWNhbGx5KGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJlZm9y
ZSk7CisgICAgYXV0byBhZGp1c3RlZFZlcnRpY2FsUG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNp
bmcgPSBbJl0geworICAgICAgICBpZiAoYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5
b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CisgICAgICAgICAgICBhdXRvJiBwcmV2
aW91c0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2
aW91c0luRmxvd1NpYmxpbmcpOyAKKworICAgICAgICAgICAgaWYgKEdlb21ldHJ5OjpNYXJnaW46
Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNEaXNw
bGF5Qm94LmJvdHRvbSgpICsgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVm
b3JlOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzRGlzcGxheUJveC5ib3R0b20oKSArIHBy
ZXZpb3VzRGlzcGxheUJveC5tYXJnaW5BZnRlcigpICsgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51
c2VkVmFsdWVzKCkuYmVmb3JlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBjb250YWluaW5n
QmxvY2tDb250ZW50Qm94VG9wID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94VG9wKCk7CisgICAgICAgIC8v
IENsZWFyYW5jZSBtYXJnaW4gaXMgYWRqdXN0ZWQgbGF0ZXIgd2hlbiB3ZSBwb3NpdGlvbiB0aGUg
Ym94IHRvIGF2b2lkIGZsb2F0cy4gCisgICAgICAgIGlmIChHZW9tZXRyeTo6TWFyZ2luOjptYXJn
aW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpCisgICAgICAgICAgICB8fCBHZW9tZXRyeTo6TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xs
YXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAg
ICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcDsKKworICAgICAgICBy
ZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCArIGhlaWdodEFuZE1hcmdpbi5tYXJn
aW4udXNlZFZhbHVlcygpLmJlZm9yZTsKKyAgICB9OworICAgIGRpc3BsYXlCb3guc2V0VG9wKGFk
anVzdGVkVmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZygpKTsKIH0KIAogRm9y
bWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmgKaW5kZXggZjQ0ZTAyMTU3ZjIuLjFkMmNlMzUxNDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjgsNiArNjgsMTQgQEAgcHJpdmF0ZToKIAogICAgIElu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKKyAgICBjbGFzcyBRdWlya3MgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIGJvb2wgbmVlZHNTdHJldGNoaW5nKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
Jik7CisgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gc3RyZXRjaGVkSGVpZ2h0KGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgSGVpZ2h0QW5kTWFyZ2luKTsKKworICAgICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKKyAgICB9OworCiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0
aW9uaW5nIGFuZCBzaXppbmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuCiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5IHsKICAgICBwdWJsaWM6CkBAIC03OSw0NSArODcsMzUgQEAgcHJpdmF0
ZToKICAgICAgICAgc3RhdGljIGJvb2wgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHNOZWVkQ2hp
bGRyZW5XaWR0aChjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIEluc3RyaW5zaWNXaWR0aENv
bnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7CiAKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZXN0aW1hdGVkTWFyZ2lu
QmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBM
YXlvdXRVbml0IGVzdGltYXRlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMg
bWFyZ2luIGNvbGxhcHNpbmcgZm9yIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KLSAgICAgICAg
Y2xhc3MgTWFyZ2luQ29sbGFwc2UgeworICAgICAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRz
IG1hcmdpbiBjb2xsYXBzaW5nIGZvciBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuCisgICAgICAg
IGNsYXNzIE1hcmdpbiB7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBMYXlv
dXRVbml0IG1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAg
ICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKLQotICAgICAgICAgICAgc3RhdGljIGJvb2wgaXNNYXJnaW5BZnRlckNv
bGxhcHNlZFdpdGhQYXJlbnQoY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBp
c01hcmdpbkJlZm9yZUNvbGxhcHNlZFdpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmKTsK
KyAgICAgICAgICAgIHN0YXRpYyBWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbChjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIEhvcml6b250YWxNYXJnaW4g
aG9yaXpvbnRhbChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHBy
aXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRl
ckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAg
ICAgIHN0YXRpYyBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgdm9pZCB1cGRhdGVDb2xs
YXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIFZlcnRpY2Fs
TWFyZ2luIG5leHRTaWJsaW5nVmVydGljYWxNYXJnaW4pOwogCi0gICAgICAgICAgICBzdGF0aWMg
TGF5b3V0VW5pdCBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29tcHV0
ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYp
OworICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZ01hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Cisg
ICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgICAgICBz
dGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1h
cmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJn
aW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExh
c3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7
CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEJv
eCYpOwogCi0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZv
cmVGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAg
ICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGlzTWFy
Z2luQmVmb3JlQ29sbGFwc2VkV2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYpOworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgc3RhdGljIFZlcnRpY2FsTWFyZ2lu
OjpDb21wdXRlZFZhbHVlcyBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJn
aW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFw
c2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7CiAgICAgICAgIH07CiAKKyAgICBwcml2YXRlOgogICAgICAgICBzdGF0
aWMgSGVpZ2h0QW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2Vk
SGVpZ2h0ID0geyB9KTsKICAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7CiAgICAgICAgIHN0YXRpYyBX
aWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGggPSB7
IH0pOwogICAgICAgICBzdGF0aWMgUG9pbnQgc3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3Np
dGlvbmVkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAgICAgfTsKLQotICAgIGNs
YXNzIFF1aXJrcyB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgYm9vbCBuZWVkc1N0cmV0
Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIEhl
aWdodEFuZE1hcmdpbiBzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmLCBIZWlnaHRBbmRNYXJnaW4pOwotCi0gICAgICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9y
ZU1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5k
ZXggMzlmOTQwYjg3ZWEuLjU5YWI5ZDg3Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC01Nyw1MyArNTcsNTIgQEAgSGVpZ2h0QW5kTWFyZ2lu
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdo
dEFuZE1hcmcKICAgICAgICAgLy8gT25seSBjaGlsZHJlbiBpbiB0aGUgbm9ybWFsIGZsb3cgYXJl
IHRha2VuIGludG8gYWNjb3VudCAoaS5lLiwgZmxvYXRpbmcgYm94ZXMgYW5kIGFic29sdXRlbHkg
cG9zaXRpb25lZCBib3hlcyBhcmUgaWdub3JlZCwKICAgICAgICAgLy8gYW5kIHJlbGF0aXZlbHkg
cG9zaXRpb25lZCBib3hlcyBhcmUgY29uc2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5v
dGUgdGhhdCB0aGUgY2hpbGQgYm94IG1heSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgogCi0g
ICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgICAgIGF1dG8gY29u
dGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCps
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogICAgICAgICBh
dXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlv
dXRCb3gpOwotCi0gICAgICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVmVydGljYWxNYXJn
aW46OkNvbXB1dGVkVmFsdWVzIHsgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5C
ZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDApLAotICAgICAgICAgICAg
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCkudmFsdWVfb3IoMCkgfTsgCi0gICAgICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0g
VmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyB7IE1hcmdpbkNvbGxhcHNlOjptYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCksIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRl
cihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSB9OworICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2lu
ID0gTWFyZ2luOjp2ZXJ0aWNhbChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAgICAgICAgYXV0
byBib3JkZXJBbmRQYWRkaW5nVG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlC
b3gucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApOwogCiAgICAgICAgIGF1dG8gaGVpZ2h0ID0gdXNl
ZEhlaWdodCA/IHVzZWRIZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0
U3RhdGUsIGxheW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKICAgICAgICAgaWYgKGhlaWdo
dCkKLSAgICAgICAgICAgIHJldHVybiB7IGhlaWdodC52YWx1ZSgpLCB7IG5vbkNvbGxhcHNlZE1h
cmdpbiwgY29sbGFwc2VkTWFyZ2luIH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGhlaWdodC52
YWx1ZSgpLCB2ZXJ0aWNhbE1hcmdpbiB9OwogCiAgICAgICAgIGlmICghaXM8Q29udGFpbmVyPihs
YXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hp
bGQoKSkKLSAgICAgICAgICAgIHJldHVybiB7IDAsIHsgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xs
YXBzZWRNYXJnaW4gfSB9OworICAgICAgICAgICAgcmV0dXJuIHsgMCwgdmVydGljYWxNYXJnaW4g
fTsKIAogICAgICAgICAvLyAxLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxhc3QgbGluZSBib3gs
IGlmIHRoZSBib3ggZXN0YWJsaXNoZXMgYSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHdpdGgg
b25lIG9yIG1vcmUgbGluZXMKICAgICAgICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGVtcCBhbmQg
d2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY29ycmVjdCBkaXNwbGF5IGJveCBvbmNlIGlubGluZSBy
dW5zIG1vdmUgb3ZlciB0byB0aGUgZGlzcGxheSB0cmVlLgogICAgICAgICAgICAgYXV0byYgaW5s
aW5lUnVucyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0
YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSkuaW5saW5lUnVucygpOwogICAgICAg
ICAgICAgYXV0byBib3R0b21FZGdlID0gaW5saW5lUnVucy5pc0VtcHR5KCkgPyBMYXlvdXRVbml0
KCkgOiBpbmxpbmVSdW5zLmxhc3QoKS5sb2dpY2FsQm90dG9tKCk7Ci0gICAgICAgICAgICByZXR1
cm4geyBib3R0b21FZGdlLCB7IG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH0g
fTsKKyAgICAgICAgICAgIHJldHVybiB7IGJvdHRvbUVkZ2UsIHZlcnRpY2FsTWFyZ2luIH07CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJvdHRvbSAo
cG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGlsZCwgaWYg
dGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgogICAgICAgICBhdXRvKiBsYXN0SW5GbG93Q2hp
bGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7CiAg
ICAgICAgIEFTU0VSVChsYXN0SW5GbG93Q2hpbGQpOwotICAgICAgICBpZiAoIU1hcmdpbkNvbGxh
cHNlOjppc01hcmdpbkFmdGVyQ29sbGFwc2VkV2l0aFBhcmVudCgqbGFzdEluRmxvd0NoaWxkKSkg
eworICAgICAgICBpZiAoIU1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKSB7CiAgICAgICAgICAgICBh
dXRvJiBsYXN0SW5GbG93RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goKmxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgICAgICAgICByZXR1cm4geyBsYXN0SW5GbG93
RGlzcGxheUJveC5ib3R0b20oKSArIGxhc3RJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkFmdGVyKCkg
LSBib3JkZXJBbmRQYWRkaW5nVG9wLCB7IG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFy
Z2luIH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5Qm94LmJvdHRv
bSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSAtIGJvcmRlckFuZFBhZGRp
bmdUb3AsIHZlcnRpY2FsTWFyZ2luIH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyAzLiB0aGUg
Ym90dG9tIGJvcmRlciBlZGdlIG9mIHRoZSBsYXN0IGluLWZsb3cgY2hpbGQgd2hvc2UgdG9wIG1h
cmdpbiBkb2Vzbid0IGNvbGxhcHNlIHdpdGggdGhlIGVsZW1lbnQncyBib3R0b20gbWFyZ2luCiAg
ICAgICAgIGF1dG8qIGluRmxvd0NoaWxkID0gbGFzdEluRmxvd0NoaWxkOwotICAgICAgICB3aGls
ZSAoaW5GbG93Q2hpbGQgJiYgTWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQmVmb3JlQ29sbGFwc2Vk
V2l0aFBhcmVudE1hcmdpbkFmdGVyKCppbkZsb3dDaGlsZCkpCisgICAgICAgIHdoaWxlIChpbkZs
b3dDaGlsZCAmJiBNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5B
ZnRlcihsYXlvdXRTdGF0ZSwgKmluRmxvd0NoaWxkKSkKICAgICAgICAgICAgIGluRmxvd0NoaWxk
ID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGluZygpOwogICAgICAgICBpZiAoaW5G
bG93Q2hpbGQpIHsKICAgICAgICAgICAgIGF1dG8mIGluRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dDaGlsZCk7Ci0gICAgICAgICAgICBy
ZXR1cm4geyBpbkZsb3dEaXNwbGF5Qm94LnRvcCgpICsgaW5GbG93RGlzcGxheUJveC5ib3JkZXJC
b3goKS5oZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIHsgbm9uQ29sbGFwc2VkTWFyZ2lu
LCBjb2xsYXBzZWRNYXJnaW4gfSB9OworICAgICAgICAgICAgcmV0dXJuIHsgaW5GbG93RGlzcGxh
eUJveC50b3AoKSArIGluRmxvd0Rpc3BsYXlCb3guYm9yZGVyQm94KCkuaGVpZ2h0KCkgLSBib3Jk
ZXJBbmRQYWRkaW5nVG9wLCB2ZXJ0aWNhbE1hcmdpbiB9OwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gNC4gemVybywgb3RoZXJ3aXNlCi0gICAgICAgIHJldHVybiB7IDAsIHsgbm9uQ29sbGFwc2Vk
TWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfSB9OworICAgICAgICByZXR1cm4geyAwLCB2ZXJ0aWNh
bE1hcmdpbiB9OwogICAgIH07CiAKICAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUo
KTsKIAorICAgIC8vIEFkanVzdCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0b20g
KGFuZCBjaGVjayBmb3IgY29sbGFwc2luZyB0aHJvdWdoIG1hcmdpbnMgYXMgd2VsbC4KKyAgICBp
ZiAoTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2lu
QWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIE1hcmdpbjo6dXBkYXRlQ29s
bGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dT
aWJsaW5nKCksIGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOworCiAgICAgTE9HX1dJVEhfU1RSRUFN
KEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4g
aW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0
IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCku
YmVmb3JlIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5h
ZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICBy
ZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogfQpAQCAtMzIyLDE5ICszMjEsNyBAQCBGb3JtYXR0aW5n
Q29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OgogICAgIHJldHVybiB7IG1pbmltdW1JbnRyaW5zaWNXaWR0aCwgbWF4aW11
bUludHJpbnNpY1dpZHRoIH07CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNCbG9ja0xldmVsQm94KCkpOwotICAgIC8vIENhbid0IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdp
bnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gaXQg
Zm9yIGZsb2F0IGJveGVzKS4KLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwotICAg
IC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBib3VuZGFyeS4KLSAgICBB
U1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0K
LSAgICAvLyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFsIHBhdGggZm9yIG5vdy4KLSAgICByZXR1
cm4gTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsK
LX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1h
dGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gm
IGxheW91dEJveCkKKy8qVmVydGljYWxNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmVzdGltYXRlZFZlcnRpY2FsTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Js
b2NrTGV2ZWxCb3goKSk7CiAgICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBm
b3Igb3V0IG9mIGZsb3cgYm94ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3Ig
ZmxvYXQgYm94ZXMpLgpAQCAtMzQzLDggKzMzMCw4IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
CiAgICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCkpOwogCiAgICAgLy8gTGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0g
ICAgcmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KTsKLX0KKyAgICByZXR1cm4gTWFyZ2luOjp2ZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKK30qLwogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcAppbmRleCBmYjcxYjdjMDgwZi4uZTNmMjBiMmVhNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtODgsOCArODgsOCBAQCBIZWlnaHRB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQo
Y29uc3QgTGF5b3V0U3RhdAogICAgICAgICAvLyBIZXJlIGlzIHRoZSBxdWlya3kgcGFydCBmb3Ig
Ym9keSBib3g6CiAgICAgICAgIC8vIFN0cmV0Y2ggdGhlIGJvZHkgdXNpbmcgdGhlIGluaXRpYWwg
Y29udGFpbmluZyBibG9jaydzIGhlaWdodCBhbmQgc2hyaW5rIGl0IHdpdGggZG9jdW1lbnQgYm94
J3MgbWFyZ2luL2JvcmRlci9wYWRkaW5nLgogICAgICAgICAvLyBUaGlzIGxvb2tzIGV4dHJlbWVs
eSBvZGQgd2hlbiBodG1sIGhhcyBub24tYXV0byBoZWlnaHQuCi0gICAgICAgIGF1dG8gdmVydGlj
YWxNYXJnaW4gPSBHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBk
b2N1bWVudEJveCkgKyBHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
IGRvY3VtZW50Qm94KTsKLSAgICAgICAgc3RyZWNoZWRIZWlnaHQgLT0gdmVydGljYWxNYXJnaW47
CisgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6TWFyZ2luOjp2ZXJ0aWNh
bChsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpLnVzZWRWYWx1ZXMoKTsKKyAgICAgICAgc3RyZWNo
ZWRIZWlnaHQgLT0gdmVydGljYWxNYXJnaW4uYmVmb3JlICsgdmVydGljYWxNYXJnaW4uYWZ0ZXI7
CiAKICAgICAgICAgLy8gVGhpcyBxdWlyayBoYXBwZW5zIHdoZW4gdGhlIGJvZHkgaGVpZ2h0IGlz
IDAgd2hpY2ggbWVhbnMgaXRzIHZlcnRpY2FsIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaCAodG9w
IGFuZCBib3R0b20gbWFyZ2lucyBhcmUgYWRqb2luaW5nKS4KICAgICAgICAgLy8gSG93ZXZlciBu
b3cgdGhhdCB3ZSBzdHJldGNoIHRoZSBib2R5IHRoZXkgZG9uJ3QgY29sbGFwc2UgdGhyb3VnaCBh
bnltb3JlLCBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgbm9uLWNvbGxhcHNlZCB2YWx1ZXMgaW5zdGVh
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBiYjk2NjkzOTBmZi4uZmQwNzg0MTE4Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5o
IgorI2luY2x1ZGUgIk1hcmdpblR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgQmxv
Y2tGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYsIExheW91dFN0YXRlJik7CiAg
ICAgdmlydHVhbCB+QmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKIAorICAgIHZvaWQgc2V0UG9zaXRp
dmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBQb3NpdGl2
ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gbWFyZ2luVmFsdWVzKSB7IG1fcG9zaXRpdmVBbmRO
ZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLnNldCgmbGF5b3V0Qm94LCBtYXJnaW5WYWx1ZXMpOyB9Cisg
ICAgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHBvc2l0aXZlQW5kTmVnYXRpdmVW
ZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4uZ2V0KCZsYXlvdXRCb3gpOyB9CisKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IGNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0
KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBvdmVycmlkZTsKKworcHJpdmF0ZToK
KwlIYXNoTWFwPGNvbnN0IEJveCosIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbj4g
bV9wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW47CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdp
bkNvbGxhcHNlLmNwcAppbmRleCA3ZTA4MDg5ODcxNC4uNjcxNzE0MmQ5ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01h
cmdpbkNvbGxhcHNlLmNwcApAQCAtNzgsNTMgKzc4LDY0IEBAIHN0YXRpYyBib29sIGVzdGFibGlz
aGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGxheW91dEJveCkKICAgICByZXR1
cm4gbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOwogfQogCi1z
dGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5WYWx1ZShMYXlvdXRVbml0IGN1cnJlbnRNYXJnaW5WYWx1
ZSwgTGF5b3V0VW5pdCBjYW5kaWRhdGVNYXJnaW5WYWx1ZSkKK3N0YXRpYyBib29sIGhhc0NsZWFy
YW5jZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQogewotICAgIGlmICghY2FuZGlkYXRlTWFyZ2luVmFsdWUpCi0gICAgICAgIHJldHVybiBjdXJy
ZW50TWFyZ2luVmFsdWU7Ci0gICAgaWYgKCFjdXJyZW50TWFyZ2luVmFsdWUpCi0gICAgICAgIHJl
dHVybiBjYW5kaWRhdGVNYXJnaW5WYWx1ZTsKLSAgICAvLyBCb3RoIG1hcmdpbnMgYXJlIHBvc2l0
aXZlLgotICAgIGlmIChjYW5kaWRhdGVNYXJnaW5WYWx1ZSA+IDAgJiYgY3VycmVudE1hcmdpblZh
bHVlID4gMCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNhbmRpZGF0ZU1hcmdpblZhbHVlLCBj
dXJyZW50TWFyZ2luVmFsdWUpOwotICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgbmVnYXRpdmUuCi0g
ICAgaWYgKGNhbmRpZGF0ZU1hcmdpblZhbHVlIDwgMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPCAw
KQotICAgICAgICByZXR1cm4gMCAtIHN0ZDo6bWF4KHN0ZDo6YWJzKGNhbmRpZGF0ZU1hcmdpblZh
bHVlLnRvRmxvYXQoKSksIHN0ZDo6YWJzKGN1cnJlbnRNYXJnaW5WYWx1ZS50b0Zsb2F0KCkpKTsK
LSAgICAvLyBPbmUgb2YgdGhlIG1hcmdpbnMgaXMgbmVnYXRpdmUuCi0gICAgcmV0dXJuIGN1cnJl
bnRNYXJnaW5WYWx1ZSArIGNhbmRpZGF0ZU1hcmdpblZhbHVlOworICAgIGlmICghbGF5b3V0Qm94
Lmhhc0Zsb2F0Q2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBsYXlv
dXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuaGFzQ2xlYXJhbmNlKCk7
CiB9CiAKLXN0YXRpYyBib29sIGlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0aFNpYmxpbmcoY29u
c3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5B
ZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFT
U0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCi0gICAgaWYgKGxheW91dEJveC5p
c0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgIGlmICghbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93
U2libGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWxheW91dEJveC5p
c1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOworICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGluZyA9ICpsYXlvdXRC
b3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBm
bG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxh
eW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5p
c0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBP
dXQgb2YgZmxvdyBwb3NpdGlvbmVkLgotICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpOwotICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS50b3AoKS5pc0F1dG8o
KTsKKyAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3Qg
Y29sbGFwc2UuCisgICAgaWYgKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYg
IWxheW91dEJveC5zdHlsZSgpLnRvcCgpLmlzQXV0bygpKQorICAgICAgICB8fCAocHJldmlvdXNJ
bkZsb3dTaWJsaW5nLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFwcmV2aW91c0luRmxvd1Np
Ymxpbmcuc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4K
KyAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1Np
YmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNNYXJnaW5BZnRlckNvbGxhcHNlZFdpdGhT
aWJsaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01h
cmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewog
ICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCi0gICAgaWYgKGxheW91
dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgIGlmICghbGF5b3V0Qm94Lm5leHRJbkZs
b3dTaWJsaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbGF5b3V0Qm94
LmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgYXV0byYgbmV4dEluRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94
Lm5leHRJbkZsb3dTaWJsaW5nKCk7CiAKLSAgICAvLyBPdXQgb2YgZmxvdyBwb3NpdGlvbmVkLgot
ICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgIHJldHVy
biBsYXlvdXRCb3guc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKTsKKyAgICAvLyBNYXJnaW5zIGJl
dHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCisg
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IG5leHRJbkZsb3dTaWJs
aW5nLmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBz
ZS4KKyAgICBpZiAoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0
Qm94LnN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkpCisgICAgICAgIHx8IChuZXh0SW5GbG93U2li
bGluZy5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbmV4dEluRmxvd1NpYmxpbmcuc3R5bGUo
KS50b3AoKS5pc0F1dG8oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdp
bnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0
Qm94LmlzSW5saW5lQmxvY2tCb3goKSB8fCBuZXh0SW5GbG93U2libGluZy5pc0lubGluZUJsb2Nr
Qm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNN
YXJnaW5CZWZvcmVDb2xsYXBzZWRXaXRoUGFyZW50KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5C
ZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKIHsKICAgICAvLyBUaGUgZmlyc3QgaW5mbG93IGNoaWxkIGNvdWxkIHByb3BhZ2F0ZSBpdHMg
dG9wIG1hcmdpbiB0byBwYXJlbnQuCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIx
L2JveC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucwpAQCAtMTMzLDcgKzE0NCwxNiBAQCBib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5C
ZWZvcmVDb2xsYXBzZWRXaQogCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3go
KSk7CiAKLSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJv
eCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25l
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRl
bHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
TWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChs
YXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBPbmx5IHRoZSBmaXJzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4K
QEAgLTE0MSwxMyArMTYxLDE2IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpbkJlZm9yZUNvbGxhcHNlZFdpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7Ci0g
ICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0
dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVu
CisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9y
bWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxk
cmVuLgogICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFyZW50KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gVGhlIHRvcCBtYXJnaW4gb2YgYW4gaW4t
ZmxvdyBibG9jayBlbGVtZW50IGNvbGxhcHNlcyB3aXRoIGl0cyBmaXJzdCBpbi1mbG93IGJsb2Nr
LWxldmVsCisgICAgLy8gY2hpbGQncyB0b3AgbWFyZ2luIGlmIHRoZSBlbGVtZW50IGhhcyBubyB0
b3AgYm9yZGVyLi4uCiAgICAgaWYgKGhhc0JvcmRlckJlZm9yZShwYXJlbnQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICAvLyAuLi5ubyB0b3AgcGFkZGluZwogICAgIGlmIChoYXNQYWRk
aW5nQmVmb3JlKHBhcmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTU3LDIxNCAr
MTgwLDM5NyBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5D
b2xsYXBzZTo6aXNNYXJnaW5CZWZvcmVDb2xsYXBzZWRXaQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgYm9vbCBpc01hcmdpbkFmdGVyQ29sbGFwc2VkVGhyb3VnaChjb25zdCBCb3gmIGxh
eW91dEJveCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbjo6
bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAg
ICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKyAgICBpZiAobGF5b3V0Qm94
LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIElmIHRoZSB0
b3AgYW5kIGJvdHRvbSBtYXJnaW5zIG9mIGEgYm94IGFyZSBhZGpvaW5pbmcsIHRoZW4gaXQgaXMg
cG9zc2libGUgZm9yIG1hcmdpbnMgdG8gY29sbGFwc2UgdGhyb3VnaCBpdC4KLSAgICBpZiAoaGFz
Qm9yZGVyQmVmb3JlKGxheW91dEJveCkgfHwgaGFzQm9yZGVyQWZ0ZXIobGF5b3V0Qm94KSkKKyAg
ICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKyAgICAvLyBNYXJnaW5zIG9m
IGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRv
IG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGxheW91
dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNQYWRk
aW5nQWZ0ZXIobGF5b3V0Qm94KSkKKyAgICAvLyBUaGUgdG9wIG1hcmdpbiBvZiBhbiBpbi1mbG93
IGJsb2NrIGVsZW1lbnQgY29sbGFwc2VzIHdpdGggaXRzIGZpcnN0IGluLWZsb3cgYmxvY2stbGV2
ZWwKKyAgICAvLyBjaGlsZCdzIHRvcCBtYXJnaW4gaWYgdGhlIGVsZW1lbnQgaGFzIG5vIHRvcCBi
b3JkZXIuLi4KKyAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKGxheW91dEJveCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmICghbGF5b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRv
KCkgfHwgIWxheW91dEJveC5zdHlsZSgpLm1pbkhlaWdodCgpLmlzQXV0bygpKQorICAgIC8vIC4u
Lm5vIHRvcCBwYWRkaW5nCisgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUobGF5b3V0Qm94KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gp
IHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29u
dGFpbmVyPihsYXlvdXRCb3gpOwotICAgIGlmIChjb250YWluZXIuaGFzSW5GbG93T3JGbG9hdGlu
Z0NoaWxkKCkpCisgICAgYXV0byYgZmlyc3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWlu
ZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOworICAgIC8vIC4uLmFuZCB0aGUgY2hp
bGQgaGFzIG5vIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBm
aXJzdEluRmxvd0NoaWxkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHRy
dWU7Ci19CisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhl
ciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotTGF5b3V0VW5pdCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZE1h
cmdpbkJlZm9yZUZyb21GaXJzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2
ZWxCb3goKSk7CisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMg
ZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBDaGVjayBpZiB0aGUg
Zmlyc3QgY2hpbGQgY29sbGFwc2VzIGl0cyBtYXJnaW4gdG9wLgotICAgIGlmICghaXM8Q29udGFp
bmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5G
bG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUt
YmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlz
SW5saW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRG8gbm90
IGNvbGxhcHNlIG1hcmdpbiB3aXRoIGEgYm94IGZyb20gYSBub24tYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0IDxkaXY+PHNwYW4+Zm9vYmFyPC9zcGFuPjwvZGl2Pi4KLSAgICBpZiAobGF5b3V0Qm94
LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAhbGF5b3V0Qm94LmVzdGFibGlzaGVz
QmxvY2tGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3Jl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyBGSVhNRTogVGFrZSBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4gaW50byBhY2NvdW50LgotICAg
IGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gp
LmZpcnN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAoIWlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0
aFBhcmVudChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIC8vIENvbGxlY3QgY29sbGFwc2VkIG1hcmdpbiB0b3AgcmVjdXJzaXZlbHkuCi0gICAg
cmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91
dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSwgY29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0
Q2hpbGQobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFy
Z2luQmVmb3JlV2l0aENsZWFyYW5jZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpOwotCi0gICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJnaW4gdG9wIGluY2x1ZGVzIGNvbGxh
cHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgZmlyc3QgY2hpbGQuCi0gICAgcmV0dXJuIG1hcmdpblZh
bHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpLCBjb2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KSk7Ci19CisgICAgLy8gSWYgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYW4g
ZWxlbWVudCB3aXRoIGNsZWFyYW5jZSBhcmUgYWRqb2luaW5nLCBpdHMgbWFyZ2lucyBjb2xsYXBz
ZSB3aXRoIHRoZSBhZGpvaW5pbmcgbWFyZ2lucworICAgIC8vIG9mIGZvbGxvd2luZyBzaWJsaW5n
cyBidXQgdGhhdCByZXN1bHRpbmcgbWFyZ2luIGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGJv
dHRvbSBtYXJnaW4gb2YgdGhlIHBhcmVudCBibG9jay4KKyAgICBpZiAoIW1hcmdpbnNDb2xsYXBz
ZVRocm91Z2gobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0vKnN0YXRpYyBi
b29sIGhhc0Fkam9pbmluZ01hcmdpbkJlZm9yZUFuZEFmdGVyKGNvbnN0IEJveCYpCi17Ci0gICAg
Ly8gVHdvIG1hcmdpbnMgYXJlIGFkam9pbmluZyBpZiBhbmQgb25seSBpZjoKLSAgICAvLyAxLiBi
b3RoIGJlbG9uZyB0byBpbi1mbG93IGJsb2NrLWxldmVsIGJveGVzIHRoYXQgcGFydGljaXBhdGUg
aW4gdGhlIHNhbWUgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0Ci0gICAgLy8gMi4gbm8gbGluZSBi
b3hlcywgbm8gY2xlYXJhbmNlLCBubyBwYWRkaW5nIGFuZCBubyBib3JkZXIgc2VwYXJhdGUgdGhl
bSAoTm90ZSB0aGF0IGNlcnRhaW4gemVyby1oZWlnaHQgbGluZSBib3hlcyAoc2VlIDkuNC4yKSBh
cmUgaWdub3JlZCBmb3IgdGhpcyBwdXJwb3NlLikKLSAgICAvLyAzLiBib3RoIGJlbG9uZyB0byB2
ZXJ0aWNhbGx5LWFkamFjZW50IGJveCBlZGdlcywgaS5lLiBmb3JtIG9uZSBvZiB0aGUgZm9sbG93
aW5nIHBhaXJzOgotICAgIC8vICAgICAgICB0b3AgbWFyZ2luIG9mIGEgYm94IGFuZCB0b3AgbWFy
Z2luIG9mIGl0cyBmaXJzdCBpbi1mbG93IGNoaWxkCi0gICAgLy8gICAgICAgIGJvdHRvbSBtYXJn
aW4gb2YgYm94IGFuZCB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0IGluLWZsb3cgZm9sbG93aW5nIHNp
YmxpbmcKLSAgICAvLyAgICAgICAgYm90dG9tIG1hcmdpbiBvZiBhIGxhc3QgaW4tZmxvdyBjaGls
ZCBhbmQgYm90dG9tIG1hcmdpbiBvZiBpdHMgcGFyZW50IGlmIHRoZSBwYXJlbnQgaGFzICdhdXRv
JyBjb21wdXRlZCBoZWlnaHQKLSAgICAvLyAgICAgICAgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBv
ZiBhIGJveCB0aGF0IGRvZXMgbm90IGVzdGFibGlzaCBhIG5ldyBibG9jayBmb3JtYXR0aW5nIGNv
bnRleHQgYW5kIHRoYXQgaGFzIHplcm8gY29tcHV0ZWQgJ21pbi1oZWlnaHQnLAotICAgIC8vICAg
ICAgICB6ZXJvIG9yICdhdXRvJyBjb21wdXRlZCAnaGVpZ2h0JywgYW5kIG5vIGluLWZsb3cgY2hp
bGRyZW4KLSAgICAvLyBBIGNvbGxhcHNlZCBtYXJnaW4gaXMgY29uc2lkZXJlZCBhZGpvaW5pbmcg
dG8gYW5vdGhlciBtYXJnaW4gaWYgYW55IG9mIGl0cyBjb21wb25lbnQgbWFyZ2lucyBpcyBhZGpv
aW5pbmcgdG8gdGhhdCBtYXJnaW4uCisgICAgZm9yIChhdXRvKiBwcmV2aW91c1NpYmxpbmcgPSBs
YXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7IHByZXZpb3VzU2libGluZzsgcHJldmlv
dXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewor
ICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2goKnByZXZpb3VzU2libGluZykpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0
U3RhdGUsICpwcmV2aW91c1NpYmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQogICAgIHJldHVybiBmYWxzZTsKLX0qLwotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2lu
QmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICBy
ZXR1cm4gY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpLmJlZm9yZTsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2lu
QWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbjo6bWFyZ2lu
QWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0gICAgQVNTRVJUKGxheW91dEJv
eC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWROb25Db2xsYXBzZWRW
ZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmFmdGVyOworICAgIC8v
IDEuIFRoaXMgaXMgdGhlIGZpcnN0IGluLWZsb3cgY2hpbGQgYW5kIGl0cyBtYXJnaW5zIGNvbGxh
cHNlIHRocm91Z2ggYW5kIHRoZSBtYXJnaW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdz
IG1hcmdpbiBiZWZvcmUgb3IKKyAgICAvLyAyLiBUaGlzIGJveCdzIG1hcmdpbiBiZWZvcmUgY29s
bGFwc2VzIHdpdGggdGhlIHByZXZpb3VzIHNpYmxpbmcncyBtYXJnaW4gYWZ0ZXIgYW5kIHRoYXQg
c2libGluZyBjb2xsYXBzZXMgdGhyb3VnaCBhbmQKKyAgICAvLyB3ZSBjYW4gZ2V0IHRvIHRoZSBm
aXJzdCBpbi1mbG93IGNoaWxkIGxpa2UgdGhhdC4KKyAgICBhdXRvKiBmaXJzdEluRmxvd0NoaWxk
ID0gbGF5b3V0Qm94LnBhcmVudCgpLT5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgZm9yIChhdXRv
KiBjdXJyZW50Qm94ID0gJmxheW91dEJveDsgY3VycmVudEJveDsgY3VycmVudEJveCA9IGN1cnJl
bnRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CisgICAgICAgIGlmICghbWFyZ2luc0Nv
bGxhcHNlVGhyb3VnaCgqY3VycmVudEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChjdXJyZW50Qm94ID09IGZpcnN0SW5GbG93Q2hpbGQpCisgICAgICAgICAgICBy
ZXR1cm4gbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRT
dGF0ZSwgKmN1cnJlbnRCb3gpOyAKKyAgICAgICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNX
aXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0
aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCiB7CisgICAgLy8gbGFzdCBpbmZsb3cgYm94IHRvIHBhcmVudC4KKyAg
ICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJn
aW5zCiAgICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2
ZWxCb3goKSk7CiAKLSAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVB
bmRBZnRlcigpIGludG8gYWNjb3VudC4KLSAgICBpZiAoaXNNYXJnaW5CZWZvcmVDb2xsYXBzZWRX
aXRoUGFyZW50KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIC8vIEZJWE1FOiBGaW5kIG91dCB0aGUgbG9naWMgYmVoaW5kIHRoaXMuCi0gICAgaWYgKEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghaXNN
YXJnaW5CZWZvcmVDb2xsYXBzZWRXaXRoU2libGluZyhsYXlvdXRCb3gpKSB7Ci0gICAgICAgIGlm
ICghaXNNYXJnaW5BZnRlckNvbGxhcHNlZFRocm91Z2gobGF5b3V0Qm94KSkKLSAgICAgICAgICAg
IHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7
Ci0gICAgICAgIC8vIENvbXB1dGUgdGhlIGNvbGxhcHNlZCB0aHJvdWdoIHZhbHVlLgotICAgICAg
ICBhdXRvIG1hcmdpbkJlZm9yZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgYXV0byBtYXJnaW5BZnRlciA9IG5vbkNvbGxhcHNlZE1h
cmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOyAKLSAgICAgICAgcmV0dXJuIG1hcmdp
blZhbHVlKG1hcmdpbkJlZm9yZSwgbWFyZ2luQWZ0ZXIpOwotICAgIH0KKyAgICAvLyBNYXJnaW5z
IGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2Uu
CisgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2Nr
LWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mIGl0
cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywKLSAgICAvLyB1bmxlc3MgdGhhdCBz
aWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0g
bGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlmICghcHJldmlvdXNJbkZs
b3dTaWJsaW5nKQotICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlv
bmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHByZXZpb3Vz
U2libGluZ01hcmdpbkFmdGVyID0gbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
ICpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwotICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gbm9uQ29s
bGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgIHJldHVybiBt
YXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIHByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKTsKLX0K
KyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisg
ICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAvLyBPbmx5IHRoZSBsYXN0IGlubGZsb3cgY2hpbGQgY29s
bGFwc2VzIHdpdGggcGFyZW50LgorICAgIGlmIChsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmco
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2Nr
TGV2ZWxCb3goKSk7CisgICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKKyAg
ICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0
aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4u
CisgICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJn
aW5CZWZvcmVBbmRCb3R0b20oKSBpbnRvIGFjY291bnQuCi0gICAgaWYgKGlzTWFyZ2luQWZ0ZXJD
b2xsYXBzZWRXaXRoUGFyZW50KGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOworICAgIC8v
IFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2sgYm94IHdpdGggYSAnaGVpZ2h0
JyBvZiAnYXV0bycgY29sbGFwc2VzIHdpdGggaXRzIGxhc3QgaW4tZmxvdyBibG9jay1sZXZlbCBj
aGlsZCdzIGJvdHRvbSBtYXJnaW4sIGlmOgorICAgIGlmIChwYXJlbnQuc3R5bGUoKS5oZWlnaHQo
KS5pc0F1dG8oKSkgeworICAgICAgICAvLyB0aGUgYm94IGhhcyBubyBib3R0b20gcGFkZGluZywg
YW5kCisgICAgICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNNYXJnaW5BZnRlckNvbGxhcHNlZFRocm91Z2gobGF5
b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIC8vIHRoZSBib3ggaGFzIG5vIGJv
dHRvbSBib3JkZXIsIGFuZAorICAgICAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGbG9hdHMgYW5kIG91dCBvZiBmbG93
IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlIHRoZWlyIG1hcmdpbnMuCi0gICAgaWYg
KCFpc01hcmdpbkFmdGVyQ29sbGFwc2VkV2l0aFNpYmxpbmcobGF5b3V0Qm94KSkKLSAgICAgICAg
cmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwor
ICAgICAgICAvLyB0aGUgY2hpbGQncyBib3R0b20gbWFyZ2luIG5laXRoZXIgY29sbGFwc2VzIHdp
dGggYSB0b3AgbWFyZ2luIHRoYXQgaGFzIGNsZWFyYW5jZS4uLgorICAgICAgICBpZiAobWFyZ2lu
QWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UobGF5b3V0
U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBU
aGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlz
IGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0IGluLWZsb3cgYmxvY2st
bGV2ZWwgc2libGluZywKLSAgICAvLyB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2Uu
Ci0gICAgaWYgKGxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91
dEJveCk7CisgICAgICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXpl
cm8pIHdpdGggdGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgICAgIGF1dG8gY29tcHV0ZWRNaW5I
ZWlnaHQgPSBwYXJlbnQuc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCk7CisgICAgICAgIGlmICgh
Y29tcHV0ZWRNaW5IZWlnaHQuaXNBdXRvKCkgJiYgY29tcHV0ZWRNaW5IZWlnaHQudmFsdWUoKSAm
JiBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJn
aW5Db2xsYXBzZTo6aXNNYXJnaW5BZnRlckNvbGxhcHNlZFdpdGhQYXJlbnQoY29uc3QgQm94JiBs
YXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW46
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0gICAg
Ly8gbGFzdCBpbmZsb3cgYm94IHRvIHBhcmVudC4KLSAgICAvLyBodHRwczovL3d3dy53My5vcmcv
VFIvQ1NTMjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJnaW5zCiAgICAgaWYgKGxheW91dEJveC5p
c0Fub255bW91cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAotICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBl
c3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdp
dGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4KKyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0KGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChpc01hcmdpbkFmdGVyQ29sbGFwc2VkVGhyb3VnaChsYXlvdXRCb3gpKQorICAgIGlmICghaXM8
Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCku
aGFzSW5GbG93Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gT25seSB0
aGUgbGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KLSAgICBpZiAobGF5
b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0g
KmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICAv
LyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrIGJveCB3aXRoIGEgJ2hlaWdo
dCcgb2YgJ2F1dG8nIGNvbGxhcHNlcyB3aXRoIGl0cyBsYXN0IGluLWZsb3cgYmxvY2stbGV2ZWwg
Y2hpbGQncyBib3R0b20gbWFyZ2luLCBpZjoKKyAgICBpZiAobGF5b3V0Qm94LnN0eWxlKCkuaGVp
Z2h0KCkuaXNBdXRvKCkpIHsKKyAgICAgICAgLy8gdGhlIGJveCBoYXMgbm8gYm90dG9tIHBhZGRp
bmcsIGFuZAorICAgICAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBi
b3JkZXIsIGFuZAorICAgICAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKGxheW91dEJveCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gdGhlIGNoaWxkJ3MgYm90dG9tIG1h
cmdpbiBuZWl0aGVyIGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1hcmdpbiB0aGF0IGhhcyBjbGVhcmFu
Y2UuLi4KKyAgICAgICAgaWYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5C
ZWZvcmVXaXRoQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1o
ZWlnaHQgaXMgbm9uLXplcm8pIHdpdGggdGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgICAgIGF1
dG8gY29tcHV0ZWRNaW5IZWlnaHQgPSBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0
KCk7CisgICAgICAgIGlmICghY29tcHV0ZWRNaW5IZWlnaHQuaXNBdXRvKCkgJiYgY29tcHV0ZWRN
aW5IZWlnaHQudmFsdWUoKQorICAgICAgICAgICAgJiYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0
aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxkKSB8fCBoYXND
bGVhcmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94
IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGFzdEluRmxvd0No
aWxkLmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7Ci0gICAgLy8gTWFyZ2lucyBvZiBl
bGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBu
b3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuCi0gICAgaWYgKGVzdGFibGlz
aGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQorICAgIC8vIE1hcmdpbnMgb2YgYWJz
b2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGFzdElu
Rmxvd0NoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCisgICAgLy8gTWFyZ2lucyBvZiBp
bmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXN0SW5GbG93Q2hp
bGQuaXNJbmxpbmVCbG9ja0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
aGFzUGFkZGluZ0JlZm9yZShwYXJlbnQpKQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIC8vIDEuIFRoaXMgaXMgdGhlIGxhc3QgaW4t
ZmxvdyBjaGlsZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaCBhbmQgdGhlIG1hcmdp
biBhZnRlciBjb2xsYXBzZXMgd2l0aCBwYXJlbnQncyBtYXJnaW4gYWZ0ZXIgb3IKKyAgICAvLyAy
LiBUaGlzIGJveCdzIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMgd2l0aCB0aGUgbmV4dCBzaWJsaW5n
J3MgbWFyZ2luIGJlZm9yZSBhbmQgdGhhdCBzaWJsaW5nIGNvbGxhcHNlcyB0aHJvdWdoIGFuZAor
ICAgIC8vIHdlIGNhbiBnZXQgdG8gdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCBsaWtlIHRoYXQuCisg
ICAgYXV0byogbGFzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94LnBhcmVudCgpLT5sYXN0SW5GbG93
Q2hpbGQoKTsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSAmbGF5b3V0Qm94OyBjdXJyZW50
Qm94OyBjdXJyZW50Qm94ID0gY3VycmVudEJveC0+bmV4dEluRmxvd1NpYmxpbmcoKSkgeworICAg
ICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2goKmN1cnJlbnRCb3gpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3VycmVudEJveCA9PSBsYXN0SW5GbG93Q2hp
bGQpCisgICAgICAgICAgICByZXR1cm4gbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KTsgCisgICAgICAgIGlmICghbWFyZ2lu
QWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpj
dXJyZW50Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29u
c3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxC
b3goKSk7CisKKyAgICAvLyBBIGJveCdzIG93biBtYXJnaW5zIGNvbGxhcHNlIGlmIHRoZSAnbWlu
LWhlaWdodCcgcHJvcGVydHkgaXMgemVybywgYW5kIGl0IGhhcyBuZWl0aGVyIHRvcCBvciBib3R0
b20gYm9yZGVycyBub3IgdG9wIG9yIGJvdHRvbSBwYWRkaW5nLAorICAgIC8vIGFuZCBpdCBoYXMg
YSAnaGVpZ2h0JyBvZiBlaXRoZXIgMCBvciAnYXV0bycsIGFuZCBpdCBkb2VzIG5vdCBjb250YWlu
IGEgbGluZSBib3gsIGFuZCBhbGwgb2YgaXRzIGluLWZsb3cgY2hpbGRyZW4ncyBtYXJnaW5zIChp
ZiBhbnkpIGNvbGxhcHNlLgorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSB8fCBo
YXNCb3JkZXJBZnRlcihsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gpIHx8IGhhc1BhZGRpbmdBZnRlcihsYXlvdXRC
b3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIGNv
bXB1dGVkIDAgaGVpZ2h0LgorICAgIGlmICghbGF5b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNB
dXRvKCkgfHwgIWxheW91dEJveC5zdHlsZSgpLm1pbkhlaWdodCgpLmlzQXV0bygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXBhcmVudC5zdHlsZSgpLmhlaWdodCgpLmlzQXV0
bygpKQorICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGUgaW5mbG93IGJsb2NrIGNoaWxkcmVu
IGhhdmUgY29sbGFwc2VkIG1hcmdpbnMKKyAgICBhdXRvJiBjb250YWluZXIgPSBkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCk7CisgICAgaWYgKGNvbnRhaW5lci5oYXNJbkZsb3dPckZsb2F0
aW5nQ2hpbGQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IENoZWNr
IGlmIHRoZXJlJ3Mgbm8gbGluZSBib3ggKGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQpLiBUaG91
Z2ggaXQgY2FuJ3QgaGF2ZSBhIGxpbmVib3ggdW5sZXNzIGl0IGhhcyBhIGNoaWxkLgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpN
YXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5CZWZvcmVDb2xsYXBzZWRXaXRoUGFyZW50TWFyZ2luQWZ0
ZXIoY29uc3QgQm94JikKK3N0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46
OlZhbHVlcyBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oUG9zaXRpdmVBbmROZWdh
dGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgYSwgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luOjpWYWx1ZXMgYikKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgUG9zaXRpdmVBbmRO
ZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CisgICAgaWYgKGEu
cG9zaXRpdmUgJiYgYi5wb3NpdGl2ZSkKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMucG9zaXRpdmUg
PSBzdGQ6Om1heCgqYS5wb3NpdGl2ZSwgKmIucG9zaXRpdmUpOworICAgIGVsc2UKKyAgICAgICAg
Y29tcHV0ZWRWYWx1ZXMucG9zaXRpdmUgPSBhLnBvc2l0aXZlID8gYS5wb3NpdGl2ZSA6IGIucG9z
aXRpdmU7CisKKyAgICBpZiAoYS5uZWdhdGl2ZSAmJiBiLm5lZ2F0aXZlKQorICAgICAgICBjb21w
dXRlZFZhbHVlcy5uZWdhdGl2ZSA9IHN0ZDo6bWF4KCphLm5lZ2F0aXZlLCAqYi5uZWdhdGl2ZSk7
CisgICAgZWxzZQorICAgICAgICBjb21wdXRlZFZhbHVlcy5uZWdhdGl2ZSA9IGEubmVnYXRpdmUg
PyBhLm5lZ2F0aXZlIDogYi5uZWdhdGl2ZTsKKworICAgIHJldHVybiBjb21wdXRlZFZhbHVlczsK
IH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6OmNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIFBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGNvbXB1dGVkUG9zaXRpdmVBbmROZWdh
dGl2ZU1hcmdpbihQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBhLCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblZhbHVlKQogewotICAgIEFTU0VSVChsYXlv
dXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAgIGlmICghbWFyZ2luVmFsdWUpCisgICAgICAg
IHJldHVybiBhOworICAgIGlmICgqbWFyZ2luVmFsdWUgPiAwKQorICAgICAgICByZXR1cm4gY29t
cHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgbWFyZ2luVmFsdWUsIHsgfSB9KTsK
KyAgICBlbHNlIGlmICgqbWFyZ2luVmFsdWUgPCAwKQorICAgICAgICByZXR1cm4gY29tcHV0ZWRQ
b3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgeyB9LCBtYXJnaW5WYWx1ZSB9KTsKKyAgICBy
ZXR1cm4geyB9OworfQogCi0gICAgLy8gQ2hlY2sgaWYgdGhlIGxhc3QgY2hpbGQgcHJvcGFnYXRl
cyBpdHMgbWFyZ2luIGJvdHRvbS4KLSAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8
fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCi0gICAg
ICAgIHJldHVybiAwOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29sbGFwc2Vk
VmFsdWUoUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgbWFyZ2luVmFs
dWVzKQoreworICAgIC8vIFdoZW4gdHdvIG9yIG1vcmUgbWFyZ2lucyBjb2xsYXBzZSwgdGhlIHJl
c3VsdGluZyBtYXJnaW4gd2lkdGggaXMgdGhlIG1heGltdW0gb2YgdGhlIGNvbGxhcHNpbmcgbWFy
Z2lucycgd2lkdGhzLgorICAgIC8vIEluIHRoZSBjYXNlIG9mIG5lZ2F0aXZlIG1hcmdpbnMsIHRo
ZSBtYXhpbXVtIG9mIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG5lZ2F0aXZlIGFkam9pbmlu
ZyBtYXJnaW5zIGlzIGRlZHVjdGVkIGZyb20gdGhlIG1heGltdW0KKyAgICAvLyBvZiB0aGUgcG9z
aXRpdmUgYWRqb2luaW5nIG1hcmdpbnMuIElmIHRoZXJlIGFyZSBubyBwb3NpdGl2ZSBtYXJnaW5z
LCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBhZGpvaW5pbmcgbWFy
Z2lucyBpcyBkZWR1Y3RlZCBmcm9tIHplcm8uCisgICAgaWYgKCFtYXJnaW5WYWx1ZXMubmVnYXRp
dmUpCisgICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZXMucG9zaXRpdmU7CiAKLSAgICAvLyBEbyBu
b3QgY29sbGFwc2UgbWFyZ2luIHdpdGggYSBib3ggZnJvbSBhIG5vbi1ibG9jayBmb3JtYXR0aW5n
IGNvbnRleHQgPGRpdj48c3Bhbj5mb29iYXI8L3NwYW4+PC9kaXY+LgotICAgIGlmIChsYXlvdXRC
b3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpICYmICFsYXlvdXRCb3guZXN0YWJsaXNo
ZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBp
ZiAoIW1hcmdpblZhbHVlcy5wb3NpdGl2ZSkKKyAgICAgICAgcmV0dXJuIG1hcmdpblZhbHVlcy5u
ZWdhdGl2ZTsKIAotICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgY29sbGFwc2VkIHRocm91Z2ggbWFy
Z2luLgotICAgIGF1dG8mIGxhc3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFpc01hcmdpbkFmdGVyQ29sbGFw
c2VkV2l0aFBhcmVudChsYXN0SW5GbG93Q2hpbGQpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gKm1hcmdpblZhbHVlcy5wb3NpdGl2ZSArICptYXJnaW5WYWx1ZXMubmVnYXRpdmU7Cit9
CiAKLSAgICAvLyBDb2xsZWN0IGNvbGxhcHNlZCBtYXJnaW4gYm90dG9tIHJlY3Vyc2l2ZWx5Lgot
ICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxh
eW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0
Q2hpbGQobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpOworVmVydGljYWxNYXJnaW46OkNv
bXB1dGVkVmFsdWVzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW46OmNv
bXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRCb3hXaWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CisgICAgcmV0dXJu
IHsgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5tYXJnaW5CZWZvcmUo
KSwgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFdpZHRoKS52YWx1ZV9vcigwKSwKKyAgICAgICAg
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5tYXJnaW5BZnRlcigpLCBj
b250YWluaW5nQmxvY2tDb250ZW50Qm94V2lkdGgpLnZhbHVlX29yKDApIH07CiB9CiAKLUxheW91
dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpu
b25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6TWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbiBuZXh0U2li
bGluZ1ZlcnRpY2FsTWFyZ2luKQogeworICAgIC8vIDEuIEdldCB0aGUgbWFyZ2luIGJlZm9yZSB2
YWx1ZSBmcm9tIHRoZSBuZXh0IGluLWZsb3cgc2libGluZy4gVGhpcyBpcyB0aGUgc2FtZSBhcyB0
aGlzIGJveCdzIG1hcmdpbiBhZnRlciB2YWx1ZSBub3cgc2luY2UgdGhleSBhcmUgY29sbGFwc2Vk
LgorICAgIC8vIDIuIFVwZGF0ZSB0aGUgY29sbHBhc2VkIG1hcmdpbiBhZnRlciB2YWx1ZSBhcyB3
ZWxsIGFzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyAzLiBDaGVjayBpZiB0
aGUgYm94J3MgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoLgorICAgIC8vIDQuIElmIHNvLCB1cGRh
dGUgdGhlIGNvbGxwYXNlZCBtYXJnaW4gYmVmb3JlIHZhbHVlIGFzIHdlbGwgYXMgdGhlIHBvc2l0
aXZlL25lZ2F0aXZlIGNhY2hlLgorICAgIC8vIDUuIEluIGNhc2Ugb2YgY29sbGFwc2VkIHRocm91
Z2ggbWFyZ2lucyBjaGVjayBpZiB0aGUgYmVmb3JlIG1hcmdpbiBjb2xsYXBlcyB3aXRoIHRoZSBw
cmV2aW91cyBpbmZsb3cgc2libGluZydzIGFmdGVyIG1hcmdpbi4KKyAgICAvLyA2LiBJZiBzbywg
anVtcCB0byAjMi4KKyAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5n
TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIG1hcmdpbnNDb2xsYXBzZVRocm91Z2ggPSBNYXJnaW46Om1hcmdpbnNDb2xsYXBz
ZVRocm91Z2gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8gdmVydGljYWxNYXJn
aW4gPSBkaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7CisKKyAgICBhdXRvIHZlcnRpY2FsTWFy
Z2luQWZ0ZXIgPSBuZXh0U2libGluZ1ZlcnRpY2FsTWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmU7
CisgICAgVmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyBjb2xsYXBzZWRWZXJ0aWNhbE1h
cmdpbjsgCisgICAgaWYgKG1hcmdpbnNDb2xsYXBzZVRocm91Z2gpCisgICAgICAgIGNvbGxhcHNl
ZFZlcnRpY2FsTWFyZ2luID0geyB2ZXJ0aWNhbE1hcmdpbkFmdGVyLCB2ZXJ0aWNhbE1hcmdpbkFm
dGVyIH07CisgICAgZWxzZQorICAgICAgICBjb2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgdmVy
dGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgPyB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRW
YWx1ZXMoKS0+YmVmb3JlIDogc3RkOjpudWxsb3B0LCB2ZXJ0aWNhbE1hcmdpbkFmdGVyIH07CisK
KyAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoY29sbGFwc2VkVmVydGljYWxN
YXJnaW4pOworICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4p
OworCisgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1h
dHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkp
OworICAgIGF1dG8gcG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbiA9IGJsb2NrRm9ybWF0dGluZ1N0
YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpOworICAgIGF1
dG8gbmV4dFNpYmxpbmdQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luID0gYmxvY2tGb3JtYXR0aW5n
U3RhdGUucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKCpsYXlvdXRCb3gubmV4dElu
Rmxvd1NpYmxpbmcoKSk7CisKKyAgICBwb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luLmFmdGVyID0g
Y29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKG5leHRTaWJsaW5nUG9zaXRpdmVBbmRO
ZWdhdGl2ZU1hcmdpbi5iZWZvcmUsIHBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4uYWZ0ZXIpOwor
ICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKQorICAgICAgICBwb3NpdGl2ZUFuZE5lZ2F0
aXZlTWFyZ2luLmJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihwb3Np
dGl2ZUFuZE5lZ2F0aXZlTWFyZ2luLmJlZm9yZSwgcG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbi5h
ZnRlcik7CisgICAgYmxvY2tGb3JtYXR0aW5nU3RhdGUuc2V0UG9zaXRpdmVBbmROZWdhdGl2ZVZl
cnRpY2FsTWFyZ2luKGxheW91dEJveCwgcG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbik7CisKKyAg
ICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRl
cihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRl
Q29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXlvdXRCb3gucHJldmlvdXNJbkZs
b3dTaWJsaW5nKCksIHZlcnRpY2FsTWFyZ2luKTsKK30KKworVmVydGljYWxNYXJnaW4gQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbjo6dmVydGljYWwoY29uc3QgTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAobGF5
b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKyAgICAvLyAxLiBHZXQgbWluL21heCBtYXJn
aW4gdG9wIHZhbHVlcyBmcm9tIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGlmIHdlIGFyZSBjb2xs
YXBzaW5nIG1hcmdpbiB0b3Agd2l0aCBpdC4KKyAgICAvLyAyLiBHZXQgbWluL21heCBtYXJnaW4g
dG9wIHZhbHVlcyBmcm9tIHRoZSBwcmV2aW91cyBpbi1mbG93IHNpYmxpbmcsIGlmIHdlIGFyZSBj
b2xsYXBzaW5nIG1hcmdpbiB0b3Agd2l0aCBpdC4KKyAgICAvLyAzLiBHZXQgdGhpcyBsYXlvdXQg
Ym94J3MgY29tcHV0ZWQgbWFyZ2luIHRvcCB2YWx1ZS4KKyAgICAvLyA0LiBVcGRhdGUgdGhlIG1p
bi9tYXggdmFsdWUgYW5kIGNvbXB1dGUgdGhlIGZpbmFsIG1hcmdpbi4KKyAgICBhdXRvJiBibG9j
a0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisKKyAgICAvLyBNYXJnaW4g
YmVmb3JlCisgICAgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgZmly
c3RDaGlsZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmU7CisgICAgYXV0byBtYXJnaW5CZWZv
cmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZCA9IG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOyAK
KyAgICBpZiAobWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGQpIHsKKyAg
ICAgICAgLy8gQnkgbm93IHRoZSBmaXJzdCBjaGlsZCBoYXMgdG8gaGF2ZSBzb21lIG1pbi9tYXgg
dmFsdWUgKGV2ZW4gaWYgdGhleSBhcmUganVzdCAwIGNvbXB1dGVkIHZhbHVlcy4pCisgICAgICAg
IGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gp
LmZpcnN0SW5GbG93Q2hpbGQoKTsKKyAgICAgICAgQVNTRVJUKCZibG9ja0Zvcm1hdHRpbmdTdGF0
ZSA9PSAmZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1hdHRp
bmdTdGF0ZUZvckJveChmaXJzdEluRmxvd0NoaWxkKSkpOworICAgICAgICBmaXJzdENoaWxkUG9z
aXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihmaXJzdEluRmxvd0NoaWxkKS5iZWZvcmU7CisgICAg
fQorCisgICAgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgcHJldmlv
dXNTaWJsaW5nUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyOworICAgIGF1dG8gbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZyA9IG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsgCisg
ICAgaWYgKG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcpIHsKKyAgICAg
ICAgYXV0byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gKmxheW91dEJveC5wcmV2aW91c0luRmxv
d1NpYmxpbmcoKTsKKyAgICAgICAgQVNTRVJUKCZibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9PSAmZG93
bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZv
ckJveChwcmV2aW91c0luRmxvd1NpYmxpbmcpKSk7CisgICAgICAgIHByZXZpb3VzU2libGluZ1Bv
c2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihwcmV2aW91c0luRmxvd1NpYmxpbmcpLmFmdGVyOwor
ICAgIH0KKworICAgIC8vIE1hcmdpbiBhZnRlcgorICAgIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0
aWNhbE1hcmdpbjo6VmFsdWVzIGxhc3RDaGlsZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcjsK
KyAgICBhdXRvIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZCA9IG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOworICAgIGlmIChtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93
Q2hpbGQpIHsKKyAgICAgICAgLy8gQnkgbm93IHRoZSBsYXN0IGNoaWxkIGhhcyB0byBoYXZlIHNv
bWUgbWluL21heCB2YWx1ZSAoZXZlbiBpZiB0aGV5IGFyZSBqdXN0IDAgY29tcHV0ZWQgdmFsdWVz
LikKKyAgICAgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICAgICAgQVNTRVJUKCZibG9ja0Zvcm1h
dHRpbmdTdGF0ZSA9PSAmZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRl
LmZvcm1hdHRpbmdTdGF0ZUZvckJveChsYXN0SW5GbG93Q2hpbGQpKSk7CisgICAgICAgIGxhc3RD
aGlsZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBv
c2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXN0SW5GbG93Q2hpbGQpLmFmdGVyOwor
ICAgICAgICAvLyBXZSBkb24ndCBrbm93IHlldCB0aGUgbWFyZ2luIGJlZm9yZSB2YWx1ZSBvZiB0
aGUgbmV4dCBzaWJsaW5nLiBMZXQncyBqdXN0IHByZXRlbmQgaXQgZG9lcyBub3QgaGF2ZSBvbmUg
YW5kIAorICAgICAgICAvLyB1cGRhdGUgaXQgbGF0ZXIgd2hlbiB3ZSBjb21wdXRlIHRoZSBuZXh0
IHNpYmxpbmcncyBtYXJnaW4gYmVmb3JlLgorICAgIH0KIAotICAgIC8vIE5vbiBjb2xsYXBzZWQg
bWFyZ2luIGJvdHRvbSBpbmNsdWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93IGxhc3Qg
Y2hpbGQuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2lu
QWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCksIGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxh
c3RDaGlsZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7CisgICAgYXV0byBwb3NpdGl2ZU5lZ2F0
aXZlTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGZpcnN0
Q2hpbGRQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlLCBwcmV2aW91c1NpYmxpbmdQb3NpdGl2
ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIpOworICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9
IGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJv
eCk7CisKKyAgICBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gcG9zaXRpdmVOZWdh
dGl2ZVZlcnRpY2FsTWFyZ2luIHsKKyAgICAgICAgY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZl
TWFyZ2luKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUsIGNvbXB1dGVkVmVydGljYWxNYXJn
aW4uYmVmb3JlKSwKKyAgICAgICAgY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGxh
c3RDaGlsZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bi5hZnRlcikgfTsKKworICAgIGF1dG8gbWFyZ2luc0NvbGxhcHNlVGhyb3VnaCA9IE1hcmdpbjo6
bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRCb3gpOworICAgIGlmIChtYXJnaW5zQ29sbGFw
c2VUaHJvdWdoKSB7CisgICAgICAgIC8vIEJlZm9yZSBhbmQgYWZ0ZXIgbWFyZ2lucyBjb2xsYXBz
ZS4KKyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmJlZm9yZSA9IGNvbXB1
dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihwb3NpdGl2ZU5lZ2F0aXZlVmVydGljYWxNYXJn
aW4uYmVmb3JlLCBwb3NpdGl2ZU5lZ2F0aXZlVmVydGljYWxNYXJnaW4uYWZ0ZXIpOworICAgICAg
ICBwb3NpdGl2ZU5lZ2F0aXZlVmVydGljYWxNYXJnaW4uYWZ0ZXIgPSBwb3NpdGl2ZU5lZ2F0aXZl
VmVydGljYWxNYXJnaW4uYmVmb3JlOworICAgIH0KKyAgICBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5z
ZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBwb3NpdGl2ZU5l
Z2F0aXZlVmVydGljYWxNYXJnaW4pOworCisgICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgdmFsdWVz
CisgICAgYXV0byBtYXJnaW5CZWZvcmVJc0NvbGxhcHNlZCA9IG1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhGaXJzdEluRmxvd0NoaWxkIHx8IG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91
c1NpYmxpbmcgfHwgbWFyZ2luc0NvbGxhcHNlVGhyb3VnaDsKKyAgICBhdXRvIG1hcmdpbkFmdGVy
SXNDb2xsYXBzZWQgPSBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGQgfHwg
bWFyZ2luc0NvbGxhcHNlVGhyb3VnaDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlcnRpY2FsTWFyZ2lu
OjpDb2xsYXBzZWRWYWx1ZXM+IGNvbGxhcHNlZFZhbHVlczsKKworICAgIGlmIChtYXJnaW5CZWZv
cmVJc0NvbGxhcHNlZCAmJiBtYXJnaW5BZnRlcklzQ29sbGFwc2VkKQorICAgICAgICBjb2xsYXBz
ZWRWYWx1ZXMgPSBWZXJ0aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgY29sbGFwc2VkVmFs
dWUocG9zaXRpdmVOZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmJlZm9yZSksIGNvbGxhcHNlZFZhbHVl
KHBvc2l0aXZlTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5hZnRlcikgfTsKKyAgICBlbHNlIGlmICht
YXJnaW5CZWZvcmVJc0NvbGxhcHNlZCkKKyAgICAgICAgY29sbGFwc2VkVmFsdWVzID0gVmVydGlj
YWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyB7IGNvbGxhcHNlZFZhbHVlKHBvc2l0aXZlTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbi5iZWZvcmUpLCB7IH0gfTsKKyAgICBlbHNlIGlmIChtYXJnaW5BZnRl
cklzQ29sbGFwc2VkKQorICAgICAgICBjb2xsYXBzZWRWYWx1ZXMgPSBWZXJ0aWNhbE1hcmdpbjo6
Q29sbGFwc2VkVmFsdWVzIHsgeyB9LCBjb2xsYXBzZWRWYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlVmVy
dGljYWxNYXJnaW4uYWZ0ZXIpIH07CisKKyAgICByZXR1cm4geyBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLCBjb2xsYXBzZWRWYWx1ZXMgfTsKK30KKworSG9yaXpvbnRhbE1hcmdpbiBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luOjpob3Jpem9udGFsKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94JikKK3sKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAppbmRleCA5ZjU1OTBmZjM3
NC4uMWJiYzA5ZGQwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlCb3guaApAQCAtMTc1LDYgKzE3NSw5IEBAIHB1YmxpYzoKICAgICBSZWN0IHBhZGRp
bmdCb3goKSBjb25zdDsKICAgICBSZWN0IGNvbnRlbnRCb3goKSBjb25zdDsKIAorICAgIHZvaWQg
c2V0SGFzQ2xlYXJhbmNlKGJvb2wgY2xlYXJhbmNlKTsKKyAgICBib29sIGhhc0NsZWFyYW5jZSgp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBTdHlsZSB7CiAgICAgICAgIFN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJik7CkBAIC0yMzEsNiArMjM0LDggQEAgcHJpdmF0ZToKIAogICAgIExh
eW91dDo6RWRnZXMgbV9ib3JkZXI7CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBt
X3BhZGRpbmc7CisgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgbmVlZCB0byBnbyB0byB0aGUgc3Rh
dGUgaW5zdGVhZC4KKyAgICBib29sIG1faGFzQ2xlYXJhbmNlIHsgZmFsc2UgfTsKIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICBib29sIG1faGFzVmFsaWRUb3AgeyBmYWxzZSB9OwpAQCAtMjQz
LDYgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1ZhbGlkUGFkZGluZyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkQ29udGVudEhlaWdodCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2hhc1ZhbGlkQ29udGVudFdpZHRoIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmFsaWRD
bGVhcmFuY2UgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwogCkBAIC02NTksNiArNjY1LDIwIEBAIGlu
bGluZSBMYXlvdXRVbml0IEJveDo6Ym9yZGVyUmlnaHQoKSBjb25zdAogICAgIHJldHVybiBtX2Jv
cmRlci5ob3Jpem9udGFsLnJpZ2h0OwogfQogCitpbmxpbmUgdm9pZCBCb3g6OnNldEhhc0NsZWFy
YW5jZShib29sIGNsZWFyYW5jZSkKK3sKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgbV9oYXNW
YWxpZENsZWFyYW5jZSA9IHRydWU7CisjZW5kaWYKKyAgICBtX2hhc0NsZWFyYW5jZSA9IGNsZWFy
YW5jZTsKK30KKworaW5saW5lIGJvb2wgQm94OjpoYXNDbGVhcmFuY2UoKSBjb25zdAoreworICAg
IEFTU0VSVChtX2hhc1ZhbGlkQ2xlYXJhbmNlKTsKKyAgICByZXR1cm4gbV9oYXNDbGVhcmFuY2U7
Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IDEzMTRhMTc4YzhlLi4xODE0MjJhNWI0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAt
MTc3LDQxICsxNzcsMTcgQEAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbj4gRmxvYXRpbmdDb250ZXh0
Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShjb25zdCBCb3gKICAgICAgICAgLy8gMi4g
VGhlIGFtb3VudCBuZWNlc3NhcnkgdG8gcGxhY2UgdGhlIHRvcCBib3JkZXIgZWRnZSBvZiB0aGUg
YmxvY2sgYXQgaXRzIGh5cG90aGV0aWNhbCBwb3NpdGlvbi4KIAogICAgICAgICBhdXRvJiBsYXlv
dXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgICAg
IGF1dG8gcm9vdFJlbGF0aXZlVG9wID0gRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFRvcExlZnRUb0Fu
Y2VzdG9yKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIGRvd25jYXN0PENvbnRhaW5lcj4obV9mbG9h
dGluZ1N0YXRlLnJvb3QoKSkpLnk7CiAgICAgICAgIGF1dG8gY2xlYXJhbmNlID0gKmZsb2F0Qm90
dG9tIC0gcm9vdFJlbGF0aXZlVG9wOwogICAgICAgICBpZiAoY2xlYXJhbmNlIDw9IDApCiAgICAg
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIC8vIENsZWFyYW5jZSBpbmhpYml0cyBtYXJn
aW4gY29sbGFwc2luZy4gTGV0J3MgcmVzZXQgdGhlIHJlbGV2YW50IGFkam9pbmluZyBtYXJnaW5z
LgotICAgICAgICBpZiAoYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnBy
ZXZpb3VzSW5GbG93U2libGluZygpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxv
d0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91
c0luRmxvd1NpYmxpbmcpOwotCi0gICAgICAgICAgICAvLyBTaW5jZSB0aGUgcHJldmlvdXMgaW5m
bG93IHNpYmxpbmcgaGFzIGFscmVhZHkgYmVlbiBsYWlkIG91dCwgaXRzIG1hcmdpbiBpcyBjb2xs
YXBzZWQgYnkgbm93LgotICAgICAgICAgICAgQVNTRVJUKCFwcmV2aW91c0luRmxvd0Rpc3BsYXlC
b3gubWFyZ2luQWZ0ZXIoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IGRp
c3BsYXlCb3gubWFyZ2luQmVmb3JlKCk7Ci0KLSAgICAgICAgICAgIC8vIFJlc2V0IHByZXZpb3Vz
IGJvdHRvbSBhbmQgY3VycmVudCB0b3AgbWFyZ2lucyB0byBub24tY29sbGFwc2luZy4KLSAgICAg
ICAgICAgIGF1dG8gcHJldmlvdXNWZXJ0aWNhbE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxh
eUJveC52ZXJ0aWNhbE1hcmdpbigpOwotICAgICAgICAgICAgaWYgKHByZXZpb3VzVmVydGljYWxN
YXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBz
ZWRWYWx1ZXMoKS0+YWZ0ZXIpIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c1ZlcnRpY2FsTWFy
Z2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2Vk
VmFsdWVzKCktPmJlZm9yZSwgeyB9IH0pOwotICAgICAgICAgICAgICAgIHByZXZpb3VzSW5GbG93
RGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihwcmV2aW91c1ZlcnRpY2FsTWFyZ2luKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiBjb2xsYXBzaW5nIHRo
cm91Z2ggaGFzIGFueXRoaW5nIHRvIGRvIHdpdGggdGhpcy4KLSAgICAgICAgICAgIGF1dG8gdmVy
dGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBp
ZiAodmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJnaW4uY29s
bGFwc2VkVmFsdWVzKCktPmJlZm9yZSkgewotICAgICAgICAgICAgICAgIHZlcnRpY2FsTWFyZ2lu
LnNldENvbGxhcHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVz
KCktPmFmdGVyIH0pOwotICAgICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJn
aW4odmVydGljYWxNYXJnaW4pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIG5v
bkNvbGxhcHNlZE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigp
ICsgZGlzcGxheUJveC5tYXJnaW5CZWZvcmUoKTsKLSAgICAgICAgICAgIGF1dG8gbWFyZ2luT2Zm
c2V0ID0gbm9uQ29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOwotICAgICAgICAgICAg
Ly8gTW92ZSB0aGUgYm94IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5v
bi1jb2xsYXBzZWQgbWFyZ2lucy4KLSAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJn
aW5PZmZzZXQ7Ci0KLSAgICAgICAgICAgIC8vIEhhdmluZyBuZWdhdGl2ZSBjbGVhcmFuY2UgaXMg
YWxzbyBub3JtYWwuIEl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgYm94IHdpdGggdGhlIG5vbi1jb2xs
YXBzZWQgbWFyZ2lucyBpcyBub3cgbG93ZXIgdGhhbiBpdCBuZWVkcyB0byBiZS4KLSAgICAgICAg
ICAgIGNsZWFyYW5jZSAtPSBtYXJnaW5PZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgLy9pZiAo
R2VvbWV0cnk6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
Z01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKSB7CisgICAgICAgIC8vfQorCisg
ICAgICAgIC8vaWYgKEdlb21ldHJ5OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQ
YXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpIHsKKyAgICAgICAgLy99
CisKICAgICAgICAgLy8gTm93IGFkanVzdCB0aGUgYm94J3MgcG9zaXRpb24gd2l0aCB0aGUgY2xl
YXJhbmNlLgogICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gY2xlYXJhbmNlOwogICAgICAgICBB
U1NFUlQoKmZsb2F0Qm90dG9tID09IHJvb3RSZWxhdGl2ZVRvcCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZmI1NTRmZjE1ZDcuLjY4ZWViODE4NjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNv
bnN0IEJveCYgcm9vdCwgSW4KICAgICAgICAgY3JlYXRlQW5kQXBwZW5kSW5saW5lSXRlbSgpOwog
ICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSAqaW5saW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZUNv
bnRlbnQoKS5sYXN0KCk7CiAKLSAgICAgICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gR2VvbWV0
cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGxheW91dFN0YXRl
KCksIHJvb3QpOworICAgICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlKCksIHJvb3QpOwog
ICAgICAgICBpbmxpbmVSdW4uYWRkRGV0YWNoaW5nUnVsZSh7IElubGluZUl0ZW06OkRldGFjaGlu
Z1J1bGU6OkJyZWFrQXRTdGFydCwgSW5saW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdEVu
ZCB9KTsKICAgICAgICAgaW5saW5lUnVuLmFkZE5vbkJyZWFrYWJsZVN0YXJ0KGhvcml6b250YWxN
YXJnaW4uc3RhcnQpOwogICAgICAgICBpbmxpbmVSdW4uYWRkTm9uQnJlYWthYmxlRW5kKGhvcml6
b250YWxNYXJnaW4uZW5kKTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudEZvclN1YnRyZWUoY29uc3QgQm94JiByb290
LCBJbgogICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMgd2hlbiB3ZSBmaWd1cmVkIG91dCBob3cg
aW5saW5lIGJveGVzIGZpdCB0aGUgZGlzcGxheSB0cmVlLgogICAgIGF1dG8gcGFkZGluZyA9IEdl
b21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcobGF5b3V0U3RhdGUoKSwgcm9vdCk7CiAgICAgYXV0byBi
b3JkZXIgPSBHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIobGF5b3V0U3RhdGUoKSwgcm9vdCk7Ci0g
ICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2Vk
SG9yaXpvbnRhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlKCksIHJvb3QpOworICAgIGF1dG8gaG9y
aXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxN
YXJnaW4obGF5b3V0U3RhdGUoKSwgcm9vdCk7CiAgICAgLy8gU2V0dXAgYnJlYWtpbmcgYm91bmRh
cmllcyBmb3IgdGhpcyBzdWJ0cmVlLgogICAgIGF1dG8qIGxhc3REZXNjZW5kYW50SW5saW5lQm94
ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxhc3RJbmxpbmVJdGVtKCk7CiAgICAgLy8gRW1wdHkg
Y29udGFpbmVyPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAppbmRleCBiNjVjODlmYzU1Zi4uNzFkYTkxOTBhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFdpZHRo
QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lQmxvY2tX
aWR0aEFuZE1hcmdpbihMYXlvCiAgICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlv
dXRTdGF0ZSwgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKIAogICAgIC8vICMyCi0gICAgYXV0byBt
YXJnaW4gPSBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShsYXlvdXRT
dGF0ZSwgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKKyAgICBhdXRvIG1hcmdpbiA9IGNvbXB1dGVk
Tm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRTdGF0ZSwgZm9ybWF0dGluZ0NvbnRl
eHRSb290KTsKIAogICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgbWFyZ2luLCBt
YXJnaW4gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5
b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRl
eHQuY3BwCmluZGV4IDQyZWY2NGIxMTlkLi4yMWQ0MjIyZjk5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCkBAIC01Niw4ICs1Niw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
IHN0YXRpYyB2b2lkIGxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgUmVuZGVyVmll
dyYgcmVuZGVyVmlldykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAvL2lmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQoKSkKKyAgICAvLyAgICByZXR1cm47CiAg
ICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrID0gTGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3Jl
YXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKICAgICBhdXRvIGxheW91dFN0YXRlID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jaywg
cmVuZGVyVmlldy5zaXplKCkpOwogICAgIGxheW91dFN0YXRlLT5zZXRJblF1aXJrc01vZGUocmVu
ZGVyVmlldy5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358137</attachid>
            <date>2018-12-29 08:46:24 -0800</date>
            <delta_ts>2018-12-29 09:13:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20181229084619.patch</filename>
            <type>text/plain</type>
            <size>127110</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVjZmVlMWQyYzlmNjE5
N2RmNzU4MjA5NjQwMTM1Yzg0MjM4MjhmMi4uN2VlOTY0ZTZjOGU2ZGI2MTk5ZGUxMmYyODcyNzZi
YzVmMjI5NjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxOC0xMi0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAg
ICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTWluSGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9u
Q29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1h
cmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJl
c3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9MYXlv
dXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6aGFzRm9y
bWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTWFyZ2luVHlwZXMuaDoKKyAg
ICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpmb3Jt
YXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGlt
YXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JG
bG9hdENsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVkVmVydGljYWxQb3Np
dGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2lu
QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpz
aG91bGRJZ25vcmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRQb3NpdGl2
ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6
OnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6
Y2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc0JvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Omhhc1BhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3Jk
ZXJCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3JkZXJBZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmdCZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpoYXNQYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojplc3RhYmxpc2hlc0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVh
cmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVy
Q29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luc0NvbGxhcHNlVGhy
b3VnaCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkUG9zaXRpdmVBbmROZWdh
dGl2ZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1hcmdpblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjp1
cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6
cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFm
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnZlcnRpY2FsKToKKyAgICAgICAgKiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpoYXNDbGVhcmFu
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRFc3RpbWF0ZWRN
YXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojplc3RpbWF0ZWRN
YXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRI
YXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjppbnZhbGlkYXRl
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpyZWN0
V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRp
Y2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3Bs
aXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVGaW5hbFJ1bnMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cG9zdFByb2Nlc3NJbmxp
bmVSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hp
bGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6aW5saW5lRm9ybWF0dGluZ1N0YXRlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKToKKwogMjAx
OC0xMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0hhcmZCdXp6XSBXaWR0aCBub3QgY29ycmVjdGx5IHJlcG9ydGVkIGFzIDAgZm9yIHpl
cm8gZm9udCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGU3ZDkzNGFkMjdmMWJmYTkxMjMxZTFkODZk
ZjBiNzQxOWQ4MzhiOTAuLmU2ZmIyODRjYWY3N2UxZWJmZmZhNzVkMGJjODU4ZDgzY2IxY2Q3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBsYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCi1sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFy
Z2luQ29sbGFwc2UuY3BwCitsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luLmNwcAog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlvbi5jcHAKIGxheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5Qm94LmNwcAogbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZGU0NTJjMDYyYTZiYTI2ZjQ3MzI3MDc3ZmMxZjk5YWNmY2ZkOGNlYi4uYmQzZjc3MDg3Yjg5
YWIyOTdkZWRjNmI5NmY4MzkyMGY5MjRhYmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg4Miw3ICs1ODgyLDcgQEAKIAkJ
MTE1Q0ZBODEyMDhCOEVEQTAwMUU2OTkxIC8qIEZsb2F0aW5nU3RhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmxvYXRpbmdTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTExNUNGQTg0MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmxvYXRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEx
NUNGQTg1MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmxvYXRpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMTE1Q0ZBODkyMDhCOTIxQTAwMUU2OTkxIC8qIEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBCbG9ja01hcmdpbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9ja01hcmdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTExNUNGQTk1MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGF5b3V0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEx
NUNGQTk2MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGF5b3V0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTE1Rjc4MDUy
MDlDQkNCRDAwNzM5QzEzIC8qIEludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnZhbGlk
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjEwLDcgKzE2MjEwLDcg
QEAKIAkJCQkxMTVDRkE3ODIwOEI4RDlEMDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0aW5nU3RhdGUu
aCAqLywKIAkJCQkxMTIzQUZEQTIwOUFCQjIwMDA3MzZBQ0MgLyogQmxvY2tJbnZhbGlkYXRpb24u
Y3BwICovLAogCQkJCTExMjNBRkQ5MjA5QUJCMjAwMDczNkFDQyAvKiBCbG9ja0ludmFsaWRhdGlv
bi5oICovLAotCQkJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBCbG9ja01hcmdpbkNvbGxh
cHNlLmNwcCAqLywKKwkJCQkxMTVDRkE4OTIwOEI5MjFBMDAxRTY5OTEgLyogQmxvY2tNYXJnaW4u
Y3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBibG9ja2Zvcm1hdHRpbmc7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggMTFlZmM0NjE4YjkxYWE4ZjYxZmYwMzI1Y2E3NjQ4MGU0OGM5NTkyNi4uODgzNzM2
ZDBiNWE5ZDA4NDk1NWI5ZTBjMjhhZTJhOWRkMWY1OTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00NCw4ICs0NCw4IEBAIG5hbWVzcGFjZSBM
YXlvdXQgewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEZvcm1hdHRpbmdDb250ZXh0KTsK
IAogRm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0
dGluZ0NvbnRleHRSb290LCBGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKLSAgICA6
IG1fcm9vdChtYWtlV2Vha1B0cihmb3JtYXR0aW5nQ29udGV4dFJvb3QpKQotICAgICwgbV9mb3Jt
YXR0aW5nU3RhdGUoZm9ybWF0dGluZ1N0YXRlKQorICAgIDogbV9mb3JtYXR0aW5nU3RhdGUoZm9y
bWF0dGluZ1N0YXRlKQorICAgICwgbV9yb290KG1ha2VXZWFrUHRyKGZvcm1hdHRpbmdDb250ZXh0
Um9vdCkpCiB7CiB9CiAKQEAgLTUzLDExICs1Myw2IEBAIEZvcm1hdHRpbmdDb250ZXh0Ojp+Rm9y
bWF0dGluZ0NvbnRleHQoKQogewogfQogCi1Gb3JtYXR0aW5nU3RhdGUmIEZvcm1hdHRpbmdDb250
ZXh0Ojpmb3JtYXR0aW5nU3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2Zvcm1hdHRpbmdT
dGF0ZTsKLX0KLQogTGF5b3V0U3RhdGUmIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRTdGF0ZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlLmxheW91dFN0YXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDdmNzQzY2IyYzYy
MDQxZTU2NjllYTg4YjcyMjgxMWUxMTBkMmFkN2EuLjI4ZDdhNGM2YjM1M2I3MWFlNzQ4ZTE1ZTA1
N2RiODkzYzNjNDIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5oCkBAIC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB1c2luZyBMYXlv
dXRRdWV1ZSA9IFZlY3Rvcjxjb25zdCBCb3gqPjsKIAotICAgIEZvcm1hdHRpbmdTdGF0ZSYgZm9y
bWF0dGluZ1N0YXRlKCkgY29uc3Q7CiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29u
c3Q7CiAgICAgY29uc3QgQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdDsgfQogCkBA
IC05Niw4ICs5NSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIEVkZ2VzIGNvbXB1dGVk
Qm9yZGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBP
cHRpb25hbDxFZGdlcz4gY29tcHV0ZWRQYWRkaW5nKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7CiAKLSAgICAgICAgc3RhdGljIEhvcml6b250YWxNYXJnaW4gY29tcHV0ZWROb25Db2xs
YXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKLSAgICAgICAgc3RhdGljIFZlcnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyBjb21wdXRl
ZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhvcml6b250YWxNYXJnaW4gY29tcHV0ZWROb25Db2xs
YXBzZWRIb3Jpem9udGFsTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Cisg
ICAgICAgIHN0YXRpYyBWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWROb25D
b2xsYXBzZWRWZXJ0aWNhbE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwog
CiAgICAgICAgIHN0YXRpYyBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwgTGF5b3V0VW5pdCBjb250YWluaW5n
QmxvY2tXaWR0aCk7CiAgICAgICAgIHN0YXRpYyBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXhlZFZh
bHVlKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSk7CkBAIC0xMjcsMTIgKzEyNiwxMyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGhlaWdodFZhbHVlT2ZOZWFy
ZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXRlJiwgY29u
c3QgQm94Jik7CiAgICAgfTsKIAorICAgIEZvcm1hdHRpbmdTdGF0ZSYgbV9mb3JtYXR0aW5nU3Rh
dGU7CisKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRy
eShjb25zdCBCb3gmKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFs
R2VvbWV0cnkoY29uc3QgQm94JikgY29uc3Q7CiAKICAgICBXZWFrUHRyPGNvbnN0IEJveD4gbV9y
b290OwotICAgIEZvcm1hdHRpbmdTdGF0ZSYgbV9mb3JtYXR0aW5nU3RhdGU7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKaW5kZXggYzMzOWY5NzgwZmM0MGVmZjYwOGY5MjU3OWNjNDcwMGQ5MTFlNGUzZS4uYjRkODc2
ZTg1NzIwNzVkNWZiNDU0ZDQ3YjQyNDI4Mjk2ZmZiYzZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTY4LDcgKzE2
OCw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcHV0ZWRNaW5IZWlnaHQoY29uc3QgTGF5b3V0CiAgICAgaWYgKGF1dG8gbWluSGVpZ2h0VmFs
dWUgPSBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5
cGU6Ok1pbikpCiAgICAgICAgIHJldHVybiBtaW5IZWlnaHRWYWx1ZTsKIAotICAgIHJldHVybiB7
IDAgfTsKKyAgICByZXR1cm4geyB9OwogfQogCiBzdGF0aWMgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtNzI2LDcgKzcyNiw3IEBAIFdpZHRo
QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKExhCiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS5jb250ZW50Qm94
V2lkdGgoKTsKIAogICAgIC8vICMxCi0gICAgYXV0byBtYXJnaW4gPSBjb21wdXRlZE5vbkNvbGxh
cHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBh
dXRvIG1hcmdpbiA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KTsKICAgICAvLyAjMgogICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZh
bHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0aCB7IHVzZWRXaWR0aC52YWx1ZSgpLCBGaXhl
ZCB9IDogbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKTsKICAgICBpZiAoIXdpZHRoKQpAQCAtNzU0LDcgKzc1NCw3IEBAIFdpZHRoQW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKGNvbnN0CiAgICAgLy8KICAgICAvLyAxLiBJZiAnbWFyZ2luLWxlZnQnIG9yICdtYXJnaW4t
cmlnaHQnIGFyZSBjb21wdXRlZCBhcyAnYXV0bycsIHRoZWlyIHVzZWQgdmFsdWUgaXMgJzAnLgog
ICAgIC8vIDIuIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3Ig
aW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLgotICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25D
b2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Cisg
ICAgYXV0byBtYXJnaW4gPSBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW4obGF5
b3V0U3RhdGUsIGxheW91dEJveCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0Nv
bnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyByZXBs
YWNlZCAtPiByZWRpcmVjdGVkIHRvIGlubGluZSByZXBsYWNlZCIpOwogICAgIHJldHVybiBpbmxp
bmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRXaWR0
aCwgbWFyZ2luLnN0YXJ0LCBtYXJnaW4uZW5kKTsKQEAgLTgxMSw3ICs4MTEsNyBAQCBIZWlnaHRB
bmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdo
dEFuZE1hcmdpbihjb25zdAogICAgIC8vICAgIHRoZSBoZWlnaHQgb2YgdGhlIGxhcmdlc3QgcmVj
dGFuZ2xlIHRoYXQgaGFzIGEgMjoxIHJhdGlvLCBoYXMgYSBoZWlnaHQgbm90IGdyZWF0ZXIgdGhh
biAxNTBweCwgYW5kIGhhcyBhIHdpZHRoIG5vdCBncmVhdGVyIHRoYW4gdGhlIGRldmljZSB3aWR0
aC4KIAogICAgIC8vICMxCi0gICAgYXV0byBtYXJnaW4gPSBjb21wdXRlZE5vbkNvbGxhcHNlZFZl
cnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0byBtYXJn
aW4gPSBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpOwogCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRv
IHJlcGxhY2VkID0gbGF5b3V0Qm94LnJlcGxhY2VkKCk7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCBP
cHRpb25hbDxFZGdlcz4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRp
bmcoY29uc3QgTGF5b3V0U3RhdGUmCiAgICAgfTsKIH0KIAotSG9yaXpvbnRhbE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1h
cmdpblZhbHVlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCitIb3Jpem9udGFsTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlv
dXRCb3guc3R5bGUoKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3Rh
dGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5j
b250ZW50Qm94V2lkdGgoKTsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIEhvcml6b250YWxNYXJnaW4g
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250
YWxNYXJnCiAgICAgcmV0dXJuIHsgbWFyZ2luU3RhcnQsIG1hcmdpbkVuZCB9OwogfQogCi1WZXJ0
aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpj
b21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK1ZlcnRpY2FsTWFyZ2luOjpDb21w
dXRlZFZhbHVlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFw
c2VkVmVydGljYWxNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwog
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5j
cHAKaW5kZXggYjRmNDRhODI1ZWYzYWE1OGFkMmIzNmEwZTJhZDIxNDc1ZjJlODdkNS4uMTlhYzgw
MTg2N2JhMzQyNDE2MzJkMWY2MTU4ZDc2ZGJjZWFhOGY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJl
c3RDb250YWluaW5nQmxvY2tXaXRoRml4CiAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2stPmlz
Qm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNEb2N1bWVudEJveCgpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJv
eCgqY29udGFpbmluZ0Jsb2NrKTsKIAotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNh
bE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAg
IGF1dG8gdmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0
aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICBh
dXRvIHZlcnRpY2FsUGFkZGluZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkg
KyBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOwogICAgICAgICAgICAgYXV0
byB2ZXJ0aWNhbEJvcmRlciA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LmJv
cmRlckJvdHRvbSgpOwogICAgICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5Q
YWRkaW5nQW5kQm9yZGVyICs9IHZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIHZlcnRpY2FsTWFyZ2lu
LmFmdGVyICsgdmVydGljYWxQYWRkaW5nICsgdmVydGljYWxCb3JkZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRTdGF0ZS5oCmluZGV4IDA0Nzc1YWIyYmI2NjhmYzIyNmEzZmMxMzI0MDQyZGJjZjEy
ZmIzM2YuLjI4NDQ2Y2Y5YWRkM2U3OTg2OTg2MWM5Y2M3OWM2OTg1YmNkOWY3YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCkBAIC03NSw2ICs3NSw3IEBAIHB1YmxpYzoKIAogICAg
IEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlRm9yQm94KGNvbnN0IEJveCYpIGNvbnN0
OwogICAgIEZvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoY29uc3Qg
Qm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3Q7CisgICAgYm9vbCBoYXNGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3Rh
dGVzLmNvbnRhaW5zKCZmb3JtYXR0aW5nUm9vdCk7IH0KICAgICBGb3JtYXR0aW5nU3RhdGUmIGNy
ZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3QgQm94JiBm
b3JtYXR0aW5nUm9vdCk7CiAKICAgICBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L01hcmdpblR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlw
ZXMuaAppbmRleCA4NWZmZWQ2NTk2ODY3ODkzZjdkNmU3ZGY1ODY1MjRkNjg3YzMxNDk3Li44NjBl
ZmVjOWE4ODUyMDMyNWYyNzdkY2UwOGU5NGJlZWZhNzUyMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TWFyZ2luVHlwZXMuaApAQCAtMzksMTAgKzM5LDExIEBAIHN0cnVjdCBWZXJ0aWNhbE1hcmdpbiB7
CiAgICAgfTsKICAgICBDb21wdXRlZFZhbHVlcyB1c2VkVmFsdWVzKCkgY29uc3Q7CiAgICAgQ29t
cHV0ZWRWYWx1ZXMgbm9uQ29sbGFwc2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9ub25Db2xs
YXBzZWQ7IH0KLSAgICAKKwogICAgIHN0cnVjdCBDb2xsYXBzZWRWYWx1ZXMgewogICAgICAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBiZWZvcmU7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGFmdGVyOworICAgICAgICBib29sIGlzQ29sbGFwc2VkVGhyb3VnaCB7IGZhbHNlIH07CiAgICAg
fTsKICAgICBPcHRpb25hbDxDb2xsYXBzZWRWYWx1ZXM+IGNvbGxhcHNlZFZhbHVlcygpIGNvbnN0
IHsgcmV0dXJuIG1fY29sbGFwc2VkOyB9CiAgICAgdm9pZCBzZXRDb2xsYXBzZWRWYWx1ZXMoQ29s
bGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcykgeyBtX2NvbGxhcHNlZCA9IGNvbGxhcHNlZFZh
bHVlczsgfQpAQCAtNTEsNiArNTIsNyBAQCBzdHJ1Y3QgVmVydGljYWxNYXJnaW4gewogCiAgICAg
VmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CiAgICAgflZlcnRpY2FsTWFyZ2luKCkgPSBkZWZh
dWx0OworCiBwcml2YXRlOgogICAgIENvbXB1dGVkVmFsdWVzIG1fbm9uQ29sbGFwc2VkOwogICAg
IE9wdGlvbmFsPENvbGxhcHNlZFZhbHVlcz4gbV9jb2xsYXBzZWQ7CkBAIC03MCw2ICs3MiwxMCBA
QCBzdHJ1Y3QgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHsKICAgICBWYWx1ZXMg
YWZ0ZXI7CiB9OwogCitzdHJ1Y3QgRXN0aW1hdGVkTWFyZ2luQmVmb3JlIHsKKyAgICBMYXlvdXRV
bml0IHVzZWRWYWx1ZTsKK307CisKIGlubGluZSBWZXJ0aWNhbE1hcmdpbjo6VmVydGljYWxNYXJn
aW4oVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIG5vbkNvbGxhcHNlZCwgT3B0aW9uYWw8
VmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcz4gY29sbGFwc2VkKQogICAgIDogbV9ub25D
b2xsYXBzZWQobm9uQ29sbGFwc2VkKQogICAgICwgbV9jb2xsYXBzZWQoY29sbGFwc2VkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNDI5YzBhOTgxMWE0OGRiZjQ1NTFhNGJl
OTIxMzBmMjUwMTQzYTM4Yi4uNzFiMTA2YzQ5NzdlMzNhZWI5OTFkNGQ1NzliZjExZjdlYmRhMjY3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00OSw2ICs0OSwxMSBAQCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYg
Zm9ybWF0dGluZ0NvbnRleHRSb290LAogewogfQogCitCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KG1fZm9ybWF0dGluZ1N0YXRlKTsKK30K
Kwogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAogewogICAgIC8v
IDkuNC4xIEJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMKQEAgLTE4NiwxMiArMTkxLDE0IEBAIHZv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJv
eCYgbGF5b3V0Qm94KSBjb25zdAogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7Ci0g
ICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAgIGF1dG8gZXN0
aW1hdGVkTWFyZ2luQmVmb3JlID0gR2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9IE1h
cmdpbjo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlKCksIGxheW91dEJveCk7Cisg
ICAgZm9ybWF0dGluZ1N0YXRlKCkuc2V0SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJv
eCk7CiAKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZSgp
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgZGlzcGxheUJveC5zZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoZXN0aW1hdGVkTWFyZ2lu
QmVmb3JlKTsKLSAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGVzdGltYXRlZE1hcmdpbkJl
Zm9yZSk7CisjZW5kaWYKKyAgICBkaXNwbGF5Qm94LnNldFRvcChhZGp1c3RlZFZlcnRpY2FsUG9z
aXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmcobGF5b3V0Qm94LCBlc3RpbWF0ZWRNYXJnaW5CZWZv
cmUudXNlZFZhbHVlKSk7CiB9CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyhjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKQEAgLTIwOCwxMiArMjE1LDExIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyhjb25zdCBCb3gmCiAgICAg
Ly8gU28gd2hlbiB3ZSBnZXQgdG8gdGhlIHBvaW50IHdoZXJlIHdlIGludGVyc2VjdCB0aGUgYm94
IHdpdGggdGhlIGZsb2F0IHRvIGRlY2lkZSBpZiB0aGUgYm94IG5lZWRzIHRvIG1vdmUsIHdlIGRv
bid0IHlldCBoYXZlIHRoZSBmaW5hbCB2ZXJ0aWNhbCBwb3NpdGlvbi4KICAgICAvLwogICAgIC8v
IFRoZSBpZGVhIGhlcmUgaXMgdGhhdCBhcyBsb25nIGFzIHdlIGRvbid0IGNyb3NzIHRoZSBibG9j
ayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnksIHdlIHNob3VsZCBiZSBhYmxlIHRvIHByZS1j
b21wdXRlIHRoZSBmaW5hbCB0b3AgbWFyZ2luLgotICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhp
cy0+bGF5b3V0U3RhdGUoKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKIAogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29u
dGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygp
KSB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KCphbmNlc3Rvcik7CiAgICAgICAgIC8vIEZJWE1FOiB3aXRoIGluY3JlbWVudGFs
IGxheW91dCwgd2UgbWlnaHQgYWN0dWFsbHkgaGF2ZSBhIHZhbGlkIChub24tZXN0aW1hdGVkKSBt
YXJnaW4gdG9wIGFzIHdlbGwuCi0gICAgICAgIGlmIChkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdp
bkJlZm9yZSgpKQorICAgICAgICBpZiAoZm9ybWF0dGluZ1N0YXRlLmhhc0VzdGltYXRlZE1hcmdp
bkJlZm9yZSgqYW5jZXN0b3IpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbXB1
dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yKTsKQEAgLTIzOCwxMCArMjQ0LDEwIEBA
IHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25G
b3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkCiB9CiAKICNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgYm9v
bCBoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJn
aW5CZWZvcmUoY29uc3QgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGxheW91dEJv
eC5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Js
b2NrKCkpIHsKLSAgICAgICAgaWYgKGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmFuY2VzdG9yKS5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkKKyAgICAgICAgaWYgKGZvcm1hdHRp
bmdTdGF0ZS5oYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjUzLDcgKzI1OSw3
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24o
Y29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hCiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0
aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUo
Zm9ybWF0dGluZ1N0YXRlKCksIGxheW91dEJveCkpOwogCiAgICAgYXV0byYgZGlzcGxheUJveCA9
IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICAvLyA4
LjMuMSBDb2xsYXBzaW5nIG1hcmdpbnMKQEAgLTI3Myw3ICsyNzksNyBAQCB2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgRmxvYXRp
bmdDb250ZXh0JgogICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0KCkpOwogICAgIEFTU0VSVCghbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVk
KCkpOwogICAgIEFTU0VSVCghbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSk7Ci0gICAgQVNTRVJU
KGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAg
ICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoZm9ybWF0dGluZ1N0YXRlKCksIGxh
eW91dEJveCkpOwogCiAgICAgaWYgKGZsb2F0aW5nQ29udGV4dC5mbG9hdGluZ1N0YXRlKCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yOTIsNyArMjk4LDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoY29u
c3QgRmxvYXRpbmcKICAgICAvLyBGb3IgZm9ybWF0dGluZyByb290cywgd2UgYWxyZWFkeSBwcmVj
b21wdXRlZCBmaW5hbCBwb3NpdGlvbi4KICAgICBpZiAoIWxheW91dEJveC5lc3RhYmxpc2hlc0Zv
cm1hdHRpbmdDb250ZXh0KCkpCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmVG
b3JBbmNlc3RvcnMobGF5b3V0Qm94KTsKLSAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VSVChoYXNQcmVjb21wdXRl
ZE1hcmdpbkJlZm9yZShmb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBpZiAo
YXV0byB2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0
aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBvc2l0
aW9uV2l0aENsZWFyYW5jZSk7CkBAIC0zNzIsMTIgKzM3OCwxNSBAQCB2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gp
IGNvbnN0CiAgICAgfQogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUg
PSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBpZiAoZm9ybWF0dGluZ1N0YXRlLmhhc0Vz
dGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKSB7CisgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5jbGVhckhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpOworICAgICAgICBBU1NF
UlQobGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmVzdGltYXRl
ZE1hcmdpbkJlZm9yZSgpLT51c2VkVmFsdWUgPT0gaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2Vk
VmFsdWVzKCkuYmVmb3JlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlzcGxheUJveC5zZXRUb3Ao
YWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGxheW91dEJveCwg
aGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKSk7CisKICAgICBkaXNw
bGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7CiAgICAg
ZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRNYXJnaW4ubWFyZ2luKTsKLQot
ICAgIC8vIElmIHRoaXMgYm94IGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgYnkgdGhlIGVzdGltYXRl
ZCB2ZXJ0aWNhbCBtYXJnaW4sIG5vIG5lZWQgdG8gbW92ZSBpdCBhZ2Fpbi4KLSAgICBpZiAobGF5
b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgIWRpc3BsYXlCb3guZXN0aW1hdGVkTWFy
Z2luQmVmb3JlKCkpCi0gICAgICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkoaGVpZ2h0QW5k
TWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKTsKIH0KIAogRm9ybWF0dGluZ0NvbnRl
eHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Omlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKQEAgLTQ0NCw2ICs0NTMsMzUgQEAgRm9y
bWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Omluc3RyaW5zaWMKICAgICByZXR1cm4gaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHM7CiB9CiAKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6YWRqdXN0ZWRWZXJ0
aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBM
YXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgY29uc3QKK3sKKyAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9
IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byogY3VycmVudExheW91dEJveCA9ICZsYXlv
dXRCb3g7CisgICAgd2hpbGUgKGN1cnJlbnRMYXlvdXRCb3gpIHsKKyAgICAgICAgaWYgKCFjdXJy
ZW50TGF5b3V0Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAqY3VycmVudExheW91dEJv
eC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICghTWFyZ2luOjptYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
ICpjdXJyZW50TGF5b3V0Qm94KSkgeworICAgICAgICAgICAgYXV0byYgcHJldmlvdXNEaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChwcmV2aW91c0luRmxvd1Np
YmxpbmcpOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzRGlzcGxheUJveC5yZWN0V2l0aE1h
cmdpbigpLmJvdHRvbSgpICsgbWFyZ2luQmVmb3JlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIHByZXZpb3VzSW5G
bG93U2libGluZykpIHsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3VzRGlzcGxheUJveCA9IGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJbkZsb3dTaWJsaW5nKTsK
KyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3BsYXlCb3guYm90dG9tKCkgKyBtYXJnaW5C
ZWZvcmU7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudExheW91dEJveCA9ICZwcmV2aW91c0lu
Rmxvd1NpYmxpbmc7CisgICAgfQorCisgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94
VG9wID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpKS5jb250ZW50Qm94VG9wKCk7CisgICAgLy8gQ2xlYXJhbmNlIG1hcmdpbiBp
cyBhZGp1c3RlZCBsYXRlciB3aGVuIHdlIHBvc2l0aW9uIHRoZSBib3ggdG8gYXZvaWQgZmxvYXRz
LiAKKyAgICBpZiAoTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2lu
QmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpCisgICAgICAgIHx8IE1hcmdpbjo6bWFyZ2lu
QmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKQorICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcDsKKworICAg
IHJldHVybiBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wICsgbWFyZ2luQmVmb3JlOworfQor
CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNjgwNDFkNDkwODU2N2Zi
ODg5MzQwZDZiNTNiN2UzZjIwODJlYzE4MC4uMWE2ZGE2MjE1YjJmYmY1N2NkOTEyMThiNjA2NDI5
YmNiYTJiOGM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTUwLDYgKzUwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgbGF5b3V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CisgICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0OworCiAg
ICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRpbmdDb250ZXh0JiwgY29u
c3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihj
b25zdCBDb250YWluZXImKSBjb25zdDsKIApAQCAtNjcsNiArNjksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVk
KGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW5z
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGFkanVzdGVkVmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyhjb25zdCBCb3gm
LCBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgY29uc3Q7CiAKICAgICAvLyBUaGlzIGNsYXNzIGlt
cGxlbWVudHMgcG9zaXRpb25pbmcgYW5kIHNpemluZyBmb3IgYm94ZXMgcGFydGljaXBhdGluZyBp
biBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICBjbGFzcyBHZW9tZXRyeSA6IHB1Ymxp
YyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkgewpAQCAtNzksNDkgKzgyLDQ3IEBAIHByaXZh
dGU6CiAgICAgICAgIHN0YXRpYyBib29sIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzTmVlZENo
aWxkcmVuV2lkdGgoY29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBJbnN0cmluc2ljV2lkdGhD
b25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGVzdGltYXRlZE1hcmdp
bkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMg
TGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYpOwotCiAgICAgcHJpdmF0ZToKLSAgICAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRz
IG1hcmdpbiBjb2xsYXBzaW5nIGZvciBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuCi0gICAgICAg
IGNsYXNzIE1hcmdpbkNvbGxhcHNlIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3Rh
dGljIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
Jik7Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcihjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIGlu
Rmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCA9IHsgfSk7CisgICAgICAgIHN0
YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRo
ID0geyB9KTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd1JlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlv
dXRVbml0PiB1c2VkV2lkdGggPSB7IH0pOworICAgICAgICBzdGF0aWMgUG9pbnQgc3RhdGljUG9z
aXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
Jik7CisgICAgfTsKIAotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFw
c2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7
Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgIGNsYXNzIE1h
cmdpbiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVmVydGljYWxNYXJnaW4gdmVydGlj
YWwoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBwcml2YXRlOgot
ICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFz
dENoaWxkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0
aWMgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGVzdGlt
YXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAg
ICBzdGF0aWMgdm9pZCB1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYsIGNvbnN0IFZlcnRpY2FsTWFyZ2luJiBuZXh0U2libGluZ1ZlcnRpY2Fs
TWFyZ2luKTsKIAotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZWROb25Db2xs
YXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAg
ICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFy
Z2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRo
UGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01h
cmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgICAg
IHN0YXRpYyBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJlZm9yZUZyb21GaXJzdENoaWxkKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0
VW5pdCBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50
TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTGFzdEluRmxvd0NoaWxkTWFyZ2luQWZ0
ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFw
c2VzV2l0aE5leHRTaWJsaW5nTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxp
bmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
Jik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQ
YXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAg
ICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxp
bmcoY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxh
cHNlc1dpdGhOZXh0U2libGluZyhjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29s
IG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNl
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9v
bCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0
U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbnNDb2xs
YXBzZVRocm91Z2goY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgfTsK
KyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gaW5G
bG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0ID0geyB9KTsKLSAgICAgICAgc3Rh
dGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgg
PSB7IH0pOwotICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93UmVwbGFjZWRXaWR0
aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91
dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7Ci0gICAgICAgIHN0YXRpYyBQb2ludCBzdGF0aWNQb3Np
dGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKKyAgICBwcml2YXRlOgorICAgICAgICBlbnVtIGNsYXNzIE1hcmdpblR5cGUgeyBCZWZvcmUs
IEFmdGVyIH07CisgICAgICAgIHN0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJn
aW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzKGNvbnN0IExheW91dFN0YXRlJiwgY29u
c3QgQm94JiwgTWFyZ2luVHlwZSk7CisgICAgICAgIHN0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBQb3NpdGl2ZUFuZE5l
Z2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIo
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKICAgICB9OwogCiAgICAgY2xhc3MgUXVp
cmtzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBib29sIG5lZWRzU3RyZXRjaGluZyhj
b25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgSGVpZ2h0QW5k
TWFyZ2luIHN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIEhl
aWdodEFuZE1hcmdpbik7CisgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gc3RyZXRjaGVk
SW5GbG93SGVpZ2h0KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgSGVpZ2h0QW5kTWFy
Z2luKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxk
SWdub3JlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKICAgICB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmlu
ZGV4IGVlNDM4NzJlYWI2ZTUwMGJlOGFjNzJiMTVhZjkwMTBiZWViZjgxMDYuLjQ0MGY3MDZjN2Vm
ODMzYWI4ZmVlODhmNGFiYzEwNTYwNmVlZGVhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTU3LDEzICs1Nyw5IEBAIEhlaWdodEFuZE1hcmdp
biBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWln
aHRBbmRNYXJnCiAgICAgICAgIC8vIE9ubHkgY2hpbGRyZW4gaW4gdGhlIG5vcm1hbCBmbG93IGFy
ZSB0YWtlbiBpbnRvIGFjY291bnQgKGkuZS4sIGZsb2F0aW5nIGJveGVzIGFuZCBhYnNvbHV0ZWx5
IHBvc2l0aW9uZWQgYm94ZXMgYXJlIGlnbm9yZWQsCiAgICAgICAgIC8vIGFuZCByZWxhdGl2ZWx5
IHBvc2l0aW9uZWQgYm94ZXMgYXJlIGNvbnNpZGVyZWQgd2l0aG91dCB0aGVpciBvZmZzZXQpLiBO
b3RlIHRoYXQgdGhlIGNoaWxkIGJveCBtYXkgYmUgYW4gYW5vbnltb3VzIGJsb2NrIGJveC4KIAot
ICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgICAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKICAgICAgICAg
YXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5
b3V0Qm94KTsKLQotICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZlcnRpY2FsTWFy
Z2luOjpDb21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
QmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApLAotICAgICAgICAgICAg
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCkudmFsdWVPcigwKSB9OyAKLSAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBW
ZXJ0aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJl
Zm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVy
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpIH07CisgICAgICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFy
Z2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KTsKKyAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBNYXJnaW46OnZlcnRpY2Fs
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmNvbGxhcHNlZFZhbHVlcygpOwogICAgICAgICBhdXRv
IGJvcmRlckFuZFBhZGRpbmdUb3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZGlzcGxheUJv
eC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKIAogICAgICAgICBhdXRvIGhlaWdodCA9IHVzZWRI
ZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CkBAIC04NCwxNCArODAsMTQgQEAg
SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9m
IHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZs
b3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KICAgICAgICAgYXV0byog
bGFzdEluRmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZs
b3dDaGlsZCgpOwogICAgICAgICBBU1NFUlQobGFzdEluRmxvd0NoaWxkKTsKLSAgICAgICAgaWYg
KCFNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKSB7CisgICAgICAgIGlmICghTWFyZ2lu
OjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwg
Kmxhc3RJbkZsb3dDaGlsZCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxhc3RJbkZsb3dEaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGFzdEluRmxvd0NoaWxk
KTsKICAgICAgICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsg
bGFzdEluRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3As
IHsgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfSB9OwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93
IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50
J3MgYm90dG9tIG1hcmdpbgogICAgICAgICBhdXRvKiBpbkZsb3dDaGlsZCA9IGxhc3RJbkZsb3dD
aGlsZDsKLSAgICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1hcmdpbkNvbGxhcHNlOjptYXJn
aW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICppbkZs
b3dDaGlsZCkpCisgICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBNYXJnaW46Om1hcmdpbkJl
Zm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmluRmxvd0No
aWxkKSkKICAgICAgICAgICAgIGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5G
bG93U2libGluZygpOwogICAgICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKICAgICAgICAgICAgIGF1
dG8mIGluRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCppbkZsb3dDaGlsZCk7CkBAIC0xMDMsNiArOTksOSBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFy
ZwogICAgIH07CiAKICAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUoKTsKKyAgICAv
LyBBZGp1c3QgdGhlIHByZXZpb3VzIHNpYmxpbmcncyBtYXJnaW4gYm90dG9tIChhbmQgY2hlY2sg
Zm9yIGNvbGxhcHNpbmcgdGhyb3VnaCBtYXJnaW5zIGFzIHdlbGwuCisgICAgaWYgKE1hcmdpbjo6
bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICBNYXJnaW46OnVwZGF0ZUNvbGxhcHNlZE1hcmdp
bkFmdGVyKGxheW91dFN0YXRlLCAqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpLCBo
ZWlnaHRBbmRNYXJnaW4ubWFyZ2luKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24t
cmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1h
cmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZSA8PCAi
cHgsICIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYWZ0ZXIgPDwgInB4
KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIGhlaWdo
dEFuZE1hcmdpbjsKQEAgLTI2MSw3ICsyNjAsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBMYQog
ICAgIGlmICghUXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CiAgICAgICAgIHJldHVybiBoZWlnaHRBbmRNYXJnaW47CiAKLSAgICBoZWlnaHRBbmRNYXJnaW4g
PSBRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBoZWlnaHRB
bmRNYXJnaW4pOworICAgIGhlaWdodEFuZE1hcmdpbiA9IFF1aXJrczo6c3RyZXRjaGVkSW5GbG93
SGVpZ2h0KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIGhlaWdodEFuZE1hcmdpbik7CiAKICAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdo
dF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0
IC0+IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8
PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmUgPDwgInB4LCAiIDw8
IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmFmdGVyIDw8ICJweCkgLT4gbGF5
b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWlnaHRBbmRNYXJn
aW47CkBAIC0zMjIsMzAgKzMyMSw2IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lk
dGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6CiAgICAgcmV0
dXJuIHsgbWluaW11bUludHJpbnNpY1dpZHRoLCBtYXhpbXVtSW50cmluc2ljV2lkdGggfTsKIH0K
IAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVk
TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0g
ICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cgYm94
ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgotICAg
IEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7Ci0gICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sg
Zm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJ5LgotICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKLQotICAgIC8vIExldCdzIGp1c3QgdXNl
IHRoZSBub3JtYWwgcGF0aCBmb3Igbm93LgotICAgIHJldHVybiBNYXJnaW5Db2xsYXBzZTo6bWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotfQotCi1MYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5BZnRlcihjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFT
U0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotICAgIC8vIENhbid0IGVzdGltYXRl
IHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ugc2hvdWxkbid0
IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KLSAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
SW5GbG93KCkpOwotICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBi
b3VuZGFyeS4KLSAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKSk7Ci0KLSAgICAvLyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFsIHBhdGggZm9y
IG5vdy4KLSAgICByZXR1cm4gTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOwotfQotCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwCmluZGV4IDQ2MDZmOWRjNjYyOGVlMDNmMzBjN2E5NWY0MzlmYjEzZTc0MDcw
OWQuLjI3NDc0NDdiZDVlZjU1ZjUwZWIzMzI5NzhmNjZhY2ZhMjVjZjVmMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtNjYsOCArNjYsOSBAQCBib29s
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bmVlZHNTdHJldGNoaW5nKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdAogICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2Fs
SGVpZ2h0KCkuaXNBdXRvKCk7CiB9CiAKLUhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBIZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFy
Z2luKQorSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3Ry
ZXRjaGVkSW5GbG93SGVpZ2h0KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW4pCiB7CisgICAg
QVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRG9j
dW1lbnRCb3goKSB8fCBsYXlvdXRCb3guaXNCb2R5Qm94KCkpOwogCiAgICAgYXV0byYgZG9jdW1l
bnRCb3ggPSBsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpID8gbGF5b3V0Qm94IDogKmxheW91dEJv
eC5wYXJlbnQoKTsKQEAgLTg4LDEyICs4OSwxMCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdAog
ICAgICAgICAvLyBIZXJlIGlzIHRoZSBxdWlya3kgcGFydCBmb3IgYm9keSBib3g6CiAgICAgICAg
IC8vIFN0cmV0Y2ggdGhlIGJvZHkgdXNpbmcgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jaydz
IGhlaWdodCBhbmQgc2hyaW5rIGl0IHdpdGggZG9jdW1lbnQgYm94J3MgbWFyZ2luL2JvcmRlci9w
YWRkaW5nLgogICAgICAgICAvLyBUaGlzIGxvb2tzIGV4dHJlbWVseSBvZGQgd2hlbiBodG1sIGhh
cyBub24tYXV0byBoZWlnaHQuCi0gICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBHZW9tZXRy
eTo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCkgKyBHZW9t
ZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGRvY3VtZW50Qm94KTsKLSAg
ICAgICAgc3RyZWNoZWRIZWlnaHQgLT0gdmVydGljYWxNYXJnaW47CisgICAgICAgIGF1dG8gZG9j
dW1lbnRCb3hWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZl
cnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7CisgICAgICAgIHN0cmVjaGVk
SGVpZ2h0IC09IChkb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGRvY3VtZW50Qm94
VmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogCi0gICAgICAgIC8vIFRoaXMgcXVpcmsgaGFwcGVucyB3
aGVuIHRoZSBib2R5IGhlaWdodCBpcyAwIHdoaWNoIG1lYW5zIGl0cyB2ZXJ0aWNhbCBtYXJnaW5z
IGNvbGxhcHNlIHRocm91Z2ggKHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYXJlIGFkam9pbmluZyku
Ci0gICAgICAgIC8vIEhvd2V2ZXIgbm93IHRoYXQgd2Ugc3RyZXRjaCB0aGUgYm9keSB0aGV5IGRv
bid0IGNvbGxhcHNlIHRocm91Z2ggYW55bW9yZSwgc28gd2UgbmVlZCB0byB1c2UgdGhlIG5vbi1j
b2xsYXBzZWQgdmFsdWVzIGluc3RlYWQuCi0gICAgICAgIGF1dG8gYm9keUJveFZlcnRpY2FsTWFy
Z2luID0gaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA/IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNl
ZFZhbHVlcygpIDogaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKTsK
KyAgICAgICAgYXV0byBib2R5Qm94VmVydGljYWxNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4ubWFy
Z2luLnVzZWRWYWx1ZXMoKTsgCiAgICAgICAgIHRvdGFsVmVydGljYWxNYXJnaW4gPSBib2R5Qm94
VmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9keUJveFZlcnRpY2FsTWFyZ2luLmFmdGVyOwogICAg
IH0KIApAQCAtMTEyLDYgKzExMSwyMCBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1
aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJgogICAgIHJl
dHVybiBsYXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKCpsYXlv
dXRCb3gucGFyZW50KCkpICYmIGhhc01hcmdpbkJlZm9yZVF1aXJrVmFsdWUobGF5b3V0Qm94KTsK
IH0KIAorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1h
cmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCit7CisgICAgLy8gRklYTUU6IGFkZCBleHBsYW5hdGlvbgorICAgIGlmICghc2hvdWxk
SWdub3JlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBBU1NFUlQobGF5b3V0Qm94LnBhcmVudCgpKTsKKyAgICBhdXRvJiBw
YXJlbnQgPSAqbGF5b3V0Qm94LnBhcmVudCgpOworICAgIGlmIChwYXJlbnQuZmlyc3RJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKSAhPSAmbGF5b3V0Qm94IHx8IHBhcmVudC5maXJzdEluRmxvd09yRmxv
YXRpbmdDaGlsZCgpICE9IHBhcmVudC5sYXN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRo
cm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdTdGF0ZS5oCmluZGV4IGJiOTY2OTM5MGZmOWEyODc2ZmU3MTRkYzg1NDRiMDFkZjZkZWFhODQu
LmJiNDU2YjU5MjdmZWZlNDVjNjM3ODMxZDViMjRmNzE3MDkyYmFkMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ1N0YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIk1h
cmdpblR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00Miw2ICs0MywxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QmxvY2tGb3Jt
YXR0aW5nU3RhdGUoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4g
Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
IG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
biB2ZXJ0aWNhbE1hcmdpbikgeyBtX3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5z
ZXQoJmxheW91dEJveCwgdmVydGljYWxNYXJnaW4pOyB9CisgICAgYm9vbCBoYXNQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmNvbnRhaW5zKCZsYXlvdXRC
b3gpOyB9CisgICAgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHBvc2l0aXZlQW5k
TmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4uZ2V0KCZsYXlvdXRCb3gpOyB9
CisKKyAgICB2b2lkIHNldEhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91
dEJveCkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QuYWRkKCZsYXlvdXRCb3gpOyB9Cisg
ICAgdm9pZCBjbGVhckhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJv
eCkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QucmVtb3ZlKCZsYXlvdXRCb3gpOyB9Cisg
ICAgYm9vbCBoYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNv
bnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlTGlzdC5jb250YWlucygmbGF5b3V0
Qm94KTsgfQorCitwcml2YXRlOgorICAgIEhhc2hNYXA8Y29uc3QgQm94KiwgUG9zaXRpdmVBbmRO
ZWdhdGl2ZVZlcnRpY2FsTWFyZ2luPiBtX3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bjsKKyAgICBIYXNoU2V0PGNvbnN0IEJveCo+IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlTGlzdDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tNYXJnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja01hcmdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYyYzU4ZDljNzIyMWI2ZTI1NDRjZDJmOTYx
ZGUwN2RkMWYyZWUxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW4uY3BwCkBAIC0wLDAgKzEsNjE3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVk
ZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgorI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlv
dXQgeworCitzdGF0aWMgYm9vbCBoYXNCb3JkZXIoY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclZh
bHVlKQoreworICAgIGlmIChib3JkZXJWYWx1ZS5zdHlsZSgpID09IEJvcmRlclN0eWxlOjpOb25l
IHx8IGJvcmRlclZhbHVlLnN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6OkhpZGRlbikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhIWJvcmRlclZhbHVlLndpZHRoKCk7Cit9CisKK3N0
YXRpYyBib29sIGhhc1BhZGRpbmcoY29uc3QgTGVuZ3RoJiBwYWRkaW5nVmFsdWUpCit7CisgICAg
Ly8gRklYTUU6IENoZWNrIGlmIHBlcmNlbnQgdmFsdWUgbmVlZHMgdG8gYmUgcmVzb2x2ZWQuCisg
ICAgcmV0dXJuICFwYWRkaW5nVmFsdWUuaXNaZXJvKCk7Cit9CisKK3N0YXRpYyBib29sIGhhc0Jv
cmRlckJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICByZXR1cm4gaGFzQm9yZGVy
KGxheW91dEJveC5zdHlsZSgpLmJvcmRlckJlZm9yZSgpKTsKK30KKworc3RhdGljIGJvb2wgaGFz
Qm9yZGVyQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgcmV0dXJuIGhhc0JvcmRl
cihsYXlvdXRCb3guc3R5bGUoKS5ib3JkZXJBZnRlcigpKTsKK30KKworc3RhdGljIGJvb2wgaGFz
UGFkZGluZ0JlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICByZXR1cm4gaGFzUGFk
ZGluZyhsYXlvdXRCb3guc3R5bGUoKS5wYWRkaW5nQmVmb3JlKCkpOworfQorCitzdGF0aWMgYm9v
bCBoYXNQYWRkaW5nQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgcmV0dXJuIGhh
c1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0FmdGVyKCkpOworfQorCitzdGF0aWMg
Ym9vbCBoYXNDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZv
ckxheW91dEJveChsYXlvdXRCb3gpLmhhc0NsZWFyYW5jZSgpOworfQorCitzdGF0aWMgYm9vbCBl
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCit7
CisgICAgLy8gV2ViS2l0IHRyZWF0cyB0aGUgZG9jdW1lbnQgZWxlbWVudCByZW5kZXJlciBhcyBh
IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCByb290LiBJdCBwcm9iYWJseSBvbmx5IGltcGFjdHMg
bWFyZ2luIGNvbGxhcHNpbmcsIHNvIGxldCdzIG5vdCBkbworICAgIC8vIGEgbGF5b3V0IHdpZGUg
cXVpcmsgb24gdGhpcyBmb3Igbm93LgorICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbGF5b3V0Qm94LmVzdGFibGlzaGVz
QmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNv
bnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7Cisg
ICAgLy8gMS4gVGhpcyBpcyB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBj
b2xsYXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHBhcmVu
dCdzIG1hcmdpbiBhZnRlciBvcgorICAgIC8vIDIuIFRoaXMgYm94J3MgbWFyZ2luIGFmdGVyIGNv
bGxhcHNlcyB3aXRoIHRoZSBuZXh0IHNpYmxpbmcncyBtYXJnaW4gYmVmb3JlIGFuZCB0aGF0IHNp
YmxpbmcgY29sbGFwc2VzIHRocm91Z2ggYW5kCisgICAgLy8gd2UgY2FuIGdldCB0byB0aGUgbGFz
dCBpbi1mbG93IGNoaWxkIGxpa2UgdGhhdC4KKyAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBs
YXlvdXRCb3gucGFyZW50KCktPmxhc3RJbkZsb3dDaGlsZCgpOworICAgIGZvciAoYXV0byogY3Vy
cmVudEJveCA9ICZsYXlvdXRCb3g7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94
LT5uZXh0SW5GbG93U2libGluZygpKSB7CisgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhy
b3VnaChsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoY3VycmVudEJveCA9PSBsYXN0SW5GbG93Q2hpbGQpCisgICAgICAgICAg
ICByZXR1cm4gbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICpjdXJyZW50Qm94KTsgCisgICAgICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIC8v
IFRoZSBmaXJzdCBpbmZsb3cgY2hpbGQgY291bGQgcHJvcGFnYXRlIGl0cyB0b3AgbWFyZ2luIHRv
IHBhcmVudC4KKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwjY29s
bGFwc2luZy1tYXJnaW5zCisgICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgp
KTsKKworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIg
Ym94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlv
bmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1
dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYg
KGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIE9ubHkgdGhlIGZpcnN0IGlubGZsb3cgY2hpbGQgY29sbGFwc2VzIHdpdGggcGFyZW50
LgorICAgIGlmIChsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7Cisg
ICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0
dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVu
CisgICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIC4uLmFuZCB0aGUgY2hpbGQgaGFzIG5v
IGNsZWFyYW5jZS4KKyAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQ
cmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xl
dmVsQm94KCkpOworCisgICAgaWYgKCFsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGlu
ZyA9ICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisKKyAgICAvLyBNYXJnaW5z
IGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2Uu
CisgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5G
bG93U2libGluZy5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3Qg
Y29sbGFwc2UuCisgICAgaWYgKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYg
IWxheW91dEJveC5zdHlsZSgpLnRvcCgpLmlzQXV0bygpKQorICAgICAgICB8fCAocHJldmlvdXNJ
bkZsb3dTaWJsaW5nLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFwcmV2aW91c0luRmxvd1Np
Ymxpbmcuc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4K
KyAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1Np
YmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3
YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4t
ZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFu
Y2UuCisgICAgaWYgKGhhc0NsZWFyYW5jZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZs
b3dDaGlsZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQoreworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxC
b3goKSk7CisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxv
Y2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93
IGNoaWxkcmVuLgorICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5
b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBlbGVt
ZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3Qg
Y29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAgIGlmIChlc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gVGhlIHRvcCBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBlbGVtZW50IGNv
bGxhcHNlcyB3aXRoIGl0cyBmaXJzdCBpbi1mbG93IGJsb2NrLWxldmVsCisgICAgLy8gY2hpbGQn
cyB0b3AgbWFyZ2luIGlmIHRoZSBlbGVtZW50IGhhcyBubyB0b3AgYm9yZGVyLi4uCisgICAgaWYg
KGhhc0JvcmRlckJlZm9yZShsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyAuLi5ubyB0b3AgcGFkZGluZworICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJv
eCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlv
dXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgZmlyc3RJbkZsb3dDaGlsZCA9
ICpkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOworICAg
IGlmICghZmlyc3RJbkZsb3dDaGlsZC5pc0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gLi4uYW5kIHRoZSBjaGlsZCBoYXMgbm8gY2xlYXJhbmNlLgorICAg
IGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBh
bmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGZpcnN0SW5GbG93Q2hp
bGQuaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNl
LgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hl
cyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGZpcnN0SW5GbG93Q2hpbGQuaXNJbmxpbmVCbG9j
a0JveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgLy8gSWYgdGhlIHRvcCBh
bmQgYm90dG9tIG1hcmdpbnMgb2YgYW4gZWxlbWVudCB3aXRoIGNsZWFyYW5jZSBhcmUgYWRqb2lu
aW5nLCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB3aXRoIHRoZSBhZGpvaW5pbmcgbWFyZ2lucworICAg
IC8vIG9mIGZvbGxvd2luZyBzaWJsaW5ncyBidXQgdGhhdCByZXN1bHRpbmcgbWFyZ2luIGRvZXMg
bm90IGNvbGxhcHNlIHdpdGggdGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhcmVudCBibG9jay4K
KyAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byogcHJldmlvdXNTaWJsaW5n
ID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOyBwcmV2aW91c1NpYmxpbmc7IHBy
ZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGluZy0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkp
IHsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqcHJl
dmlvdXNTaWJsaW5nKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGhh
c0NsZWFyYW5jZShsYXlvdXRTdGF0ZSwgKnByZXZpb3VzU2libGluZykpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCit7CisgICAgLy8gMS4gVGhpcyBpcyB0aGUgZmlyc3QgaW4tZmxvdyBjaGlsZCBhbmQg
aXRzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBiZWZvcmUgY29sbGFw
c2VzIHdpdGggcGFyZW50J3MgbWFyZ2luIGJlZm9yZSBvcgorICAgIC8vIDIuIFRoaXMgYm94J3Mg
bWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMgd2l0aCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdp
biBhZnRlciBhbmQgdGhhdCBzaWJsaW5nIGNvbGxhcHNlcyB0aHJvdWdoIGFuZAorICAgIC8vIHdl
IGNhbiBnZXQgdG8gdGhlIGZpcnN0IGluLWZsb3cgY2hpbGQgbGlrZSB0aGF0LgorICAgIGF1dG8q
IGZpcnN0SW5GbG93Q2hpbGQgPSBsYXlvdXRCb3gucGFyZW50KCktPmZpcnN0SW5GbG93Q2hpbGQo
KTsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSAmbGF5b3V0Qm94OyBjdXJyZW50Qm94OyBj
dXJyZW50Qm94ID0gY3VycmVudEJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKKyAgICAg
ICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqY3VycmVudEJveCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChjdXJyZW50Qm94ID09IGZp
cnN0SW5GbG93Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4gbWFyZ2luQmVmb3JlQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAKKyAgICAg
ICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBj
b25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xl
dmVsQm94KCkpOworCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFu
eSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBv
ZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChs
YXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4K
KyAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gT25seSB0aGUgbGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRo
IHBhcmVudC4KKyAgICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7
CisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9y
bWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxk
cmVuLgorICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFyZW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4g
aW4tZmxvdyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9mICdhdXRvJyBjb2xsYXBzZXMgd2l0
aCBpdHMgbGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiwgaWY6
CisgICAgaWYgKCFwYXJlbnQuc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGJveCBoYXMgbm8gYm90dG9tIHBhZGRpbmcsIGFuZAor
ICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBib3JkZXIsIGFuZAorICAgIGlmIChoYXNC
b3JkZXJCZWZvcmUocGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhl
IGNoaWxkJ3MgYm90dG9tIG1hcmdpbiBuZWl0aGVyIGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1hcmdp
biB0aGF0IGhhcyBjbGVhcmFuY2UuLi4KKyAgICBpZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRo
U2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1o
ZWlnaHQgaXMgbm9uLXplcm8pIHdpdGggdGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgYXV0byBj
b21wdXRlZE1pbkhlaWdodCA9IHBhcmVudC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAg
ICBpZiAoIWNvbXB1dGVkTWluSGVpZ2h0LmlzQXV0bygpICYmIGNvbXB1dGVkTWluSGVpZ2h0LnZh
bHVlKCkgJiYgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFm
dGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgQVNTRVJUKGxh
eW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRz
IHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xs
YXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGVzdGFibGlzaGVzQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVy
PihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8mIGxhc3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCkubGFzdEluRmxvd0NoaWxkKCk7CisgICAgaWYgKCFsYXN0SW5GbG93Q2hpbGQuaXNCbG9ja0xl
dmVsQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBib3R0b20gbWFy
Z2luIG9mIGFuIGluLWZsb3cgYmxvY2sgYm94IHdpdGggYSAnaGVpZ2h0JyBvZiAnYXV0bycgY29s
bGFwc2VzIHdpdGggaXRzIGxhc3QgaW4tZmxvdyBibG9jay1sZXZlbCBjaGlsZCdzIGJvdHRvbSBt
YXJnaW4sIGlmOgorICAgIGlmICghbGF5b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBw
YWRkaW5nLCBhbmQKKyAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyB0aGUgYm94IGhhcyBubyBib3R0b20gYm9yZGVyLCBh
bmQKKyAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4gbmVpdGhlciBjb2xsYXBz
ZXMgd2l0aCBhIHRvcCBtYXJnaW4gdGhhdCBoYXMgY2xlYXJhbmNlLi4uCisgICAgaWYgKG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGxheW91
dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBub3IgKGlmIHRoZSBib3gncyBtaW4taGVpZ2h0IGlzIG5vbi16ZXJvKSB3aXRoIHRoZSBib3gn
cyB0b3AgbWFyZ2luLgorICAgIGF1dG8gY29tcHV0ZWRNaW5IZWlnaHQgPSBsYXlvdXRCb3guc3R5
bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCk7CisgICAgaWYgKCFjb21wdXRlZE1pbkhlaWdodC5pc0F1
dG8oKSAmJiBjb21wdXRlZE1pbkhlaWdodC52YWx1ZSgpCisgICAgICAgICYmIChtYXJnaW5BZnRl
ckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dD
aGlsZCkgfHwgaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBi
b3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXN0SW5GbG93
Q2hpbGQuaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxh
cHNlLgorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJv
eGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGFzdEluRmxvd0NoaWxkLmlzSW5saW5lQmxv
Y2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNl
c1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9j
a0xldmVsQm94KCkpOworCisgICAgaWYgKCFsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91dEJveC5u
ZXh0SW5GbG93U2libGluZygpKTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW46Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKKworICAgIC8vIEEgYm94J3Mgb3duIG1hcmdpbnMgY29sbGFwc2UgaWYg
dGhlICdtaW4taGVpZ2h0JyBwcm9wZXJ0eSBpcyB6ZXJvLCBhbmQgaXQgaGFzIG5laXRoZXIgdG9w
IG9yIGJvdHRvbSBib3JkZXJzIG5vciB0b3Agb3IgYm90dG9tIHBhZGRpbmcsCisgICAgLy8gYW5k
IGl0IGhhcyBhICdoZWlnaHQnIG9mIGVpdGhlciAwIG9yICdhdXRvJywgYW5kIGl0IGRvZXMgbm90
IGNvbnRhaW4gYSBsaW5lIGJveCwgYW5kIGFsbCBvZiBpdHMgaW4tZmxvdyBjaGlsZHJlbidzIG1h
cmdpbnMgKGlmIGFueSkgY29sbGFwc2UuCisgICAgaWYgKGhhc0JvcmRlckJlZm9yZShsYXlvdXRC
b3gpIHx8IGhhc0JvcmRlckFmdGVyKGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkgfHwgaGFzUGFkZGluZ0FmdGVy
KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBDaGVj
ayBmb3IgY29tcHV0ZWQgMCBoZWlnaHQuCisgICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWln
aHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IENo
ZWNrIGZvciBjb21wdXRlZCAwIGhlaWdodC4KKyAgICBpZiAoIWxheW91dEJveC5zdHlsZSgpLm1p
bkhlaWdodCgpLmlzQXV0bygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlz
PENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAo
IWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxheW91
dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IEV4cGxhaW4gd2h5IHdlIGRvbid0IGhhdmUgYSBmb3JtYXR0aW5nIHN0YXRlIGR1cmlu
ZyBtYXJnaW4gZXN0aW1hdGlvbi4KKyAgICAgICAgaWYgKCFsYXlvdXRTdGF0ZS5oYXNGb3JtYXR0
aW5nU3RhdGUobGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJs
aXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSkuaW5saW5lUnVucygpLmlzRW1wdHkoKTsK
KyAgICB9CisgICAgCisgICAgZm9yIChhdXRvKiBpbmZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7IGluZmxvd0NoaWxkOyBpbmZsb3dD
aGlsZCA9IGluZmxvd0NoaWxkLT5uZXh0SW5GbG93U2libGluZygpKSB7CisgICAgICAgIGlmIChl
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKmluZmxvd0NoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxh
eW91dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0
aWNhbE1hcmdpbjo6VmFsdWVzIGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihQb3Np
dGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBhLCBQb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBiKQoreworICAgIFBvc2l0aXZlQW5kTmVnYXRpdmVW
ZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGNvbXB1dGVkVmFsdWVzOworICAgIGlmIChhLnBvc2l0aXZl
ICYmIGIucG9zaXRpdmUpCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLnBvc2l0aXZlID0gc3RkOjpt
YXgoKmEucG9zaXRpdmUsICpiLnBvc2l0aXZlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1dGVk
VmFsdWVzLnBvc2l0aXZlID0gYS5wb3NpdGl2ZSA/IGEucG9zaXRpdmUgOiBiLnBvc2l0aXZlOwor
CisgICAgaWYgKGEubmVnYXRpdmUgJiYgYi5uZWdhdGl2ZSkKKyAgICAgICAgY29tcHV0ZWRWYWx1
ZXMubmVnYXRpdmUgPSBzdGQ6Om1pbigqYS5uZWdhdGl2ZSwgKmIubmVnYXRpdmUpOworICAgIGVs
c2UKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubmVnYXRpdmUgPSBhLm5lZ2F0aXZlID8gYS5uZWdh
dGl2ZSA6IGIubmVnYXRpdmU7CisKKyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7Cit9CisKK3N0
YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRlZFBv
c2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
OjpWYWx1ZXMgYSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWFyZ2luVmFsdWUpCit7CisgICAgaWYg
KCFtYXJnaW5WYWx1ZSB8fCAhbWFyZ2luVmFsdWUudmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGE7
CisgICAgaWYgKCptYXJnaW5WYWx1ZSA+IDApCisgICAgICAgIHJldHVybiBjb21wdXRlZFBvc2l0
aXZlQW5kTmVnYXRpdmVNYXJnaW4oYSwgeyBtYXJnaW5WYWx1ZSwgeyB9IH0pOworICAgIGlmICgq
bWFyZ2luVmFsdWUgPCAwKQorICAgICAgICByZXR1cm4gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0
aXZlTWFyZ2luKGEsIHsgeyB9LCBtYXJnaW5WYWx1ZSB9KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitzdGF0aWMgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
bWFyZ2luVmFsdWUoUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgbWFy
Z2luVmFsdWVzKQoreworICAgIC8vIFdoZW4gdHdvIG9yIG1vcmUgbWFyZ2lucyBjb2xsYXBzZSwg
dGhlIHJlc3VsdGluZyBtYXJnaW4gd2lkdGggaXMgdGhlIG1heGltdW0gb2YgdGhlIGNvbGxhcHNp
bmcgbWFyZ2lucycgd2lkdGhzLgorICAgIC8vIEluIHRoZSBjYXNlIG9mIG5lZ2F0aXZlIG1hcmdp
bnMsIHRoZSBtYXhpbXVtIG9mIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG5lZ2F0aXZlIGFk
am9pbmluZyBtYXJnaW5zIGlzIGRlZHVjdGVkIGZyb20gdGhlIG1heGltdW0KKyAgICAvLyBvZiB0
aGUgcG9zaXRpdmUgYWRqb2luaW5nIG1hcmdpbnMuIElmIHRoZXJlIGFyZSBubyBwb3NpdGl2ZSBt
YXJnaW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBhZGpvaW5p
bmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHplcm8uCisgICAgaWYgKCFtYXJnaW5WYWx1ZXMu
bmVnYXRpdmUpCisgICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZXMucG9zaXRpdmU7CisKKyAgICBp
ZiAoIW1hcmdpblZhbHVlcy5wb3NpdGl2ZSkKKyAgICAgICAgcmV0dXJuIG1hcmdpblZhbHVlcy5u
ZWdhdGl2ZTsKKworICAgIHJldHVybiAqbWFyZ2luVmFsdWVzLnBvc2l0aXZlICsgKm1hcmdpblZh
bHVlcy5uZWdhdGl2ZTsKK30KKwordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46
OnVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFZlcnRpY2FsTWFyZ2luJiBuZXh0U2libGlu
Z1ZlcnRpY2FsTWFyZ2luKQoreworICAgIC8vIDEuIEdldCB0aGUgbWFyZ2luIGJlZm9yZSB2YWx1
ZSBmcm9tIHRoZSBuZXh0IGluLWZsb3cgc2libGluZy4gVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGlz
IGJveCdzIG1hcmdpbiBhZnRlciB2YWx1ZSBub3cgc2luY2UgdGhleSBhcmUgY29sbGFwc2VkLgor
ICAgIC8vIDIuIFVwZGF0ZSB0aGUgY29sbGFwc2VkIG1hcmdpbiBhZnRlciB2YWx1ZSBhcyB3ZWxs
IGFzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyAzLiBDaGVjayBpZiB0aGUg
Ym94J3MgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoLgorICAgIC8vIDQuIElmIHNvLCB1cGRhdGUg
dGhlIGNvbGxhcHNlZCBtYXJnaW4gYmVmb3JlIHZhbHVlIGFzIHdlbGwgYXMgdGhlIHBvc2l0aXZl
L25lZ2F0aXZlIGNhY2hlLgorICAgIC8vIDUuIEluIGNhc2Ugb2YgY29sbGFwc2VkIHRocm91Z2gg
bWFyZ2lucyBjaGVjayBpZiB0aGUgYmVmb3JlIG1hcmdpbiBjb2xsYXBlcyB3aXRoIHRoZSBwcmV2
aW91cyBpbmZsb3cgc2libGluZydzIGFmdGVyIG1hcmdpbi4KKyAgICAvLyA2LiBJZiBzbywganVt
cCB0byAjMi4KKyAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nTWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChs
YXlvdXRCb3gpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZlcnRpY2Fs
TWFyZ2luKCk7CisgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbkFmdGVyID0gbmV4dFNpYmxpbmdWZXJ0
aWNhbE1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IHZlcnRpY2FsTWFyZ2luQmVmb3JlOworCisgICAgYXV0byBtYXJnaW5zQ29sbGFwc2VUaHJvdWdo
ID0gTWFyZ2luOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OworICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKQorICAgICAgICB2ZXJ0aWNhbE1hcmdp
bkJlZm9yZSA9IHZlcnRpY2FsTWFyZ2luQWZ0ZXI7IAorICAgIGVsc2UgaWYgKHZlcnRpY2FsTWFy
Z2luLmNvbGxhcHNlZFZhbHVlcygpKQorICAgICAgICB2ZXJ0aWNhbE1hcmdpbkJlZm9yZSA9IHZl
cnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5iZWZvcmU7CisKKyAgICAvLyBVcGRhdGUg
dmVydGljYWwgbWFyZ2luIHZhbHVlcy4KKyAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRW
YWx1ZXMoeyB2ZXJ0aWNhbE1hcmdpbkJlZm9yZSwgdmVydGljYWxNYXJnaW5BZnRlciB9KTsKKyAg
ICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsKKworICAgIC8v
IFVwZGF0ZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICBhdXRvJiBibG9ja0Zvcm1hdHRp
bmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5mb3Jt
YXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgYXV0byBwb3NpdGl2ZU5lZ2F0aXZl
TWFyZ2luID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luKGxheW91dEJveCk7CisgICAgYXV0byBuZXh0U2libGluZ1Bvc2l0aXZlTmVnYXRpdmVN
YXJnaW5CZWZvcmUgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVy
dGljYWxNYXJnaW4oKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKS5iZWZvcmU7CisKKyAg
ICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0
aXZlTWFyZ2luKG5leHRTaWJsaW5nUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSwgcG9zaXRp
dmVOZWdhdGl2ZU1hcmdpbi5hZnRlcik7CisgICAgaWYgKG1hcmdpbnNDb2xsYXBzZVRocm91Z2gp
IHsKKyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmUgPSBjb21wdXRlZFBvc2l0
aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmUsIHBvc2l0
aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIpOworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2lu
LmFmdGVyID0gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmU7IAorICAgIH0KKyAgICBibG9j
a0Zvcm1hdHRpbmdTdGF0ZS5zZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5
b3V0Qm94LCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luKTsKKworICAgIGlmICghbWFyZ2luc0NvbGxh
cHNlVGhyb3VnaCB8fCAhbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01h
cmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91dEJveC5wcmV2
aW91c0luRmxvd1NpYmxpbmcoKSwgdmVydGljYWxNYXJnaW4pOworfQorCitQb3NpdGl2ZUFuZE5l
Z2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW46OnBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
LCBjb25zdCBCb3gmIGxheW91dEJveCwgTWFyZ2luVHlwZSBtYXJnaW5UeXBlKQoreworICAgIGF1
dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+
KGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsKKyAgICBhdXRv
IGhhc1ByZWNvbXB1dGVkVmFsdWUgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5oYXNQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KTsKKyAgICBpZiAobWFyZ2luVHlwZSA9
PSBNYXJnaW5UeXBlOjpCZWZvcmUpCisgICAgICAgIHJldHVybiBoYXNQcmVjb21wdXRlZFZhbHVl
ID8gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
KGxheW91dEJveCkuYmVmb3JlIDogcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4gaGFzUHJlY29tcHV0ZWRWYWx1ZSA/IGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRC
b3gpLmFmdGVyIDogcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpOworfQorCitQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZv
cmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkK
K3sKKyAgICBhdXRvIGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBbJl0oKSAtPiBQ
b3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyB7CisgICAgICAgIGlmICgh
aXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgYXV0byogZmlyc3RJbkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94
KS5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgICAgIGlmICghZmlyc3RJbkZsb3dDaGlsZCkKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2Vz
V2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtzOjpzaG91bGRJZ25v
cmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpmaXJzdEluRmxvd0NoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBwb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzKGxh
eW91dFN0YXRlLCAqZmlyc3RJbkZsb3dDaGlsZCwgTWFyZ2luVHlwZTo6QmVmb3JlKTsKKyAgICB9
OworCisgICAgYXV0byBwcmV2aW91U2libGluZ0NvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkg
LT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBh
dXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJs
aW5nKCk7CisgICAgICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJsaW5nKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlv
dXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRl
cihsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZykpCisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhsYXlvdXRTdGF0
ZSwgKnByZXZpb3VzSW5GbG93U2libGluZywgTWFyZ2luVHlwZTo6QWZ0ZXIpOworICAgIH07CisK
KyAgICAvLyAxLiBHYXRoZXIgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdpbiB2YWx1ZXMgZnJv
bSBmaXJzdCBjaGlsZCBpZiBtYXJnaW5zIGFyZSBhZGpvaW5pbmcuCisgICAgLy8gMi4gR2F0aGVy
IHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdmFsdWVzIGZyb20gcHJldmlvdXMgaW5mbG93
IHNpYmxpbmcgaWYgbWFyZ2lucyBhcmUgYWRqb2luaW5nLgorICAgIC8vIDMuIENvbXB1dGUgbWlu
L21heCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgY29sbGFwc2VkIG1hcmdpbiB2YWx1ZXMgdXNpbmcg
bm9uLWNvbGxwYXNlZCBjb21wdXRlZCBtYXJnaW4gYmVmb3JlLgorICAgIGF1dG8gY29sbGFwc2Vk
TWFyZ2luQmVmb3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGZpcnN0Q2hp
bGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSwgcHJldmlvdVNpYmxpbmdDb2xsYXBzZWRNYXJnaW5B
ZnRlcigpKTsKKyAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSA9IEdlb21ldHJ5Ojpj
b21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
LmJlZm9yZTsKKyAgICByZXR1cm4gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGNv
bGxhcHNlZE1hcmdpbkJlZm9yZSwgbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKTsKK30KKworUG9z
aXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6TWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBhdXRvIGxhc3RD
aGlsZENvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZl
cnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0
Qm94KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGF1dG8qIGxhc3RJbkZsb3dD
aGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsK
KyAgICAgICAgaWYgKCFsYXN0SW5GbG93Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdp
bkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
ICpsYXN0SW5GbG93Q2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0
dXJuIHBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQs
IE1hcmdpblR5cGU6OkFmdGVyKTsKKyAgICB9OworCisgICAgLy8gV2UgZG9uJ3Qga25vdyB5ZXQg
dGhlIG1hcmdpbiBiZWZvcmUgdmFsdWUgb2YgdGhlIG5leHQgc2libGluZy4gTGV0J3MganVzdCBw
cmV0ZW5kIGl0IGRvZXMgbm90IGhhdmUgb25lIGFuZCAKKyAgICAvLyB1cGRhdGUgaXQgbGF0ZXIg
d2hlbiB3ZSBjb21wdXRlIHRoZSBuZXh0IHNpYmxpbmcncyBtYXJnaW4gYmVmb3JlLiBTZWUgdXBk
YXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIuCisgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW5BZnRl
ciA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpLmFmdGVyOworICAgIHJldHVybiBjb21wdXRlZFBvc2l0aXZlQW5kTmVn
YXRpdmVNYXJnaW4obGFzdENoaWxkQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSwgbm9uQ29sbGFwc2Vk
TWFyZ2luQWZ0ZXIpOworfQorCitFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAobGF5b3V0Qm94
LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKyAgICAvLyBDYW4ndCBlc3RpbWF0ZSB2ZXJ0aWNhbCBt
YXJnaW5zIGZvciBvdXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRv
IGl0IGZvciBmbG9hdCBib3hlcykuCisgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsK
KyAgICAvLyBDYW4ndCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnkuCisg
ICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkp
OworCisgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKQorICAgICAgICByZXR1cm4geyBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2lu
QmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKS52YWx1ZU9yKDApIH07CisgICAgCisgICAg
cmV0dXJuIHsgbWFyZ2luVmFsdWUoY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBv
c2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCksIHBvc2l0
aXZlTmVnYXRpdmVNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkpLnZhbHVlT3Io
MCkgfTsKK30KKworVmVydGljYWxNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Ojp2ZXJ0aWNhbChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQoreworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAg
IC8vIDEuIEdldCBtaW4vbWF4IG1hcmdpbiB0b3AgdmFsdWVzIGZyb20gdGhlIGZpcnN0IGluLWZs
b3cgY2hpbGQgaWYgd2UgYXJlIGNvbGxhcHNpbmcgbWFyZ2luIHRvcCB3aXRoIGl0LgorICAgIC8v
IDIuIEdldCBtaW4vbWF4IG1hcmdpbiB0b3AgdmFsdWVzIGZyb20gdGhlIHByZXZpb3VzIGluLWZs
b3cgc2libGluZywgaWYgd2UgYXJlIGNvbGxhcHNpbmcgbWFyZ2luIHRvcCB3aXRoIGl0LgorICAg
IC8vIDMuIEdldCB0aGlzIGxheW91dCBib3gncyBjb21wdXRlZCBtYXJnaW4gdG9wIHZhbHVlLgor
ICAgIC8vIDQuIFVwZGF0ZSB0aGUgbWluL21heCB2YWx1ZSBhbmQgY29tcHV0ZSB0aGUgZmluYWwg
bWFyZ2luLiAKKyAgICBhdXRvIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUgPSBNYXJnaW46
OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Cisg
ICAgYXV0byBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIgPSBNYXJnaW46OnBvc2l0aXZlTmVn
YXRpdmVNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKworICAgIGF1dG8gbWFy
Z2luc0NvbGxhcHNlVGhyb3VnaCA9IE1hcmdpbjo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsgCisgICAgaWYgKG1hcmdpbnNDb2xsYXBzZVRocm91Z2gpIHsK
KyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVB
bmROZWdhdGl2ZU1hcmdpbihwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlLCBwb3NpdGl2ZU5l
Z2F0aXZlTWFyZ2luQWZ0ZXIpOworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIg
PSBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlOyAgICAgICAgIAorICAgIH0KKworICAgIGF1
dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+
KGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsKKyAgICBibG9j
a0Zvcm1hdHRpbmdTdGF0ZS5zZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5
b3V0Qm94LCB7IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUsIHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW5BZnRlciB9KTsKKworICAgIFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRWYWx1ZXMgY29s
bGFwc2VkVmVydGljYWxNYXJnaW4gPSB7IG1hcmdpblZhbHVlKHBvc2l0aXZlTmVnYXRpdmVNYXJn
aW5CZWZvcmUpLCBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIpLCBtYXJn
aW5zQ29sbGFwc2VUaHJvdWdoIH07IAorICAgIHJldHVybiB7IEdlb21ldHJ5Ojpjb21wdXRlZE5v
bkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBjb2xsYXBz
ZWRWZXJ0aWNhbE1hcmdpbiB9OworfQorCit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Njc3MDg3NDUzOTRhNzg1Yjg0
ZDk3YzgyZjVmNDgxMzVhM2Y4ZDUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tN
YXJnaW5Db2xsYXBzZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NjUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmgiCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2lu
Y2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgotI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKLSNpbmNs
dWRlICJSZW5kZXJTdHlsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5
b3V0IHsKLQotc3RhdGljIGJvb2wgaGFzQm9yZGVyKGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJW
YWx1ZSkKLXsKLSAgICBpZiAoYm9yZGVyVmFsdWUuc3R5bGUoKSA9PSBCb3JkZXJTdHlsZTo6Tm9u
ZSB8fCBib3JkZXJWYWx1ZS5zdHlsZSgpID09IEJvcmRlclN0eWxlOjpIaWRkZW4pCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gISFib3JkZXJWYWx1ZS53aWR0aCgpOwotfQotCi1z
dGF0aWMgYm9vbCBoYXNQYWRkaW5nKGNvbnN0IExlbmd0aCYgcGFkZGluZ1ZhbHVlKQotewotICAg
IC8vIEZJWE1FOiBDaGVjayBpZiBwZXJjZW50IHZhbHVlIG5lZWRzIHRvIGJlIHJlc29sdmVkLgot
ICAgIHJldHVybiAhcGFkZGluZ1ZhbHVlLmlzWmVybygpOwotfQotCi1zdGF0aWMgYm9vbCBoYXNC
b3JkZXJCZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgcmV0dXJuIGhhc0JvcmRl
cihsYXlvdXRCb3guc3R5bGUoKS5ib3JkZXJCZWZvcmUoKSk7Ci19Ci0KLXN0YXRpYyBib29sIGhh
c0JvcmRlckFmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIHJldHVybiBoYXNCb3Jk
ZXIobGF5b3V0Qm94LnN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSk7Ci19Ci0KLXN0YXRpYyBib29sIGhh
c1BhZGRpbmdCZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgcmV0dXJuIGhhc1Bh
ZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0JlZm9yZSgpKTsKLX0KLQotc3RhdGljIGJv
b2wgaGFzUGFkZGluZ0FmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIHJldHVybiBo
YXNQYWRkaW5nKGxheW91dEJveC5zdHlsZSgpLnBhZGRpbmdBZnRlcigpKTsKLX0KLQotc3RhdGlj
IGJvb2wgaGFzQ2xlYXJhbmNlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIGlmICghbGF5
b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIEZJ
WE1FCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBlc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgLy8gV2ViS2l0
IHRyZWF0cyB0aGUgZG9jdW1lbnQgZWxlbWVudCByZW5kZXJlciBhcyBhIGJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dCByb290LiBJdCBwcm9iYWJseSBvbmx5IGltcGFjdHMgbWFyZ2luIGNvbGxhcHNp
bmcsIHNvIGxldCdzIG5vdCBkbwotICAgIC8vIGEgbGF5b3V0IHdpZGUgcXVpcmsgb24gdGhpcyBm
b3Igbm93LgotICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICByZXR1cm4gbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5n
Q29udGV4dCgpOwotfQotCi1zdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5WYWx1ZShMYXlvdXRVbml0
IGN1cnJlbnRNYXJnaW5WYWx1ZSwgTGF5b3V0VW5pdCBjYW5kaWRhdGVNYXJnaW5WYWx1ZSkKLXsK
LSAgICBpZiAoIWNhbmRpZGF0ZU1hcmdpblZhbHVlKQotICAgICAgICByZXR1cm4gY3VycmVudE1h
cmdpblZhbHVlOwotICAgIGlmICghY3VycmVudE1hcmdpblZhbHVlKQotICAgICAgICByZXR1cm4g
Y2FuZGlkYXRlTWFyZ2luVmFsdWU7Ci0gICAgLy8gQm90aCBtYXJnaW5zIGFyZSBwb3NpdGl2ZS4K
LSAgICBpZiAoY2FuZGlkYXRlTWFyZ2luVmFsdWUgPiAwICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA+
IDApCi0gICAgICAgIHJldHVybiBzdGQ6Om1heChjYW5kaWRhdGVNYXJnaW5WYWx1ZSwgY3VycmVu
dE1hcmdpblZhbHVlKTsKLSAgICAvLyBCb3RoIG1hcmdpbnMgYXJlIG5lZ2F0aXZlLgotICAgIGlm
IChjYW5kaWRhdGVNYXJnaW5WYWx1ZSA8IDAgJiYgY3VycmVudE1hcmdpblZhbHVlIDwgMCkKLSAg
ICAgICAgcmV0dXJuIDAgLSBzdGQ6Om1heChzdGQ6OmFicyhjYW5kaWRhdGVNYXJnaW5WYWx1ZS50
b0Zsb2F0KCkpLCBzdGQ6OmFicyhjdXJyZW50TWFyZ2luVmFsdWUudG9GbG9hdCgpKSk7Ci0gICAg
Ly8gT25lIG9mIHRoZSBtYXJnaW5zIGlzIG5lZ2F0aXZlLgotICAgIHJldHVybiBjdXJyZW50TWFy
Z2luVmFsdWUgKyBjYW5kaWRhdGVNYXJnaW5WYWx1ZTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29s
bGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3go
KSk7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmJlZm9yZTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29s
bGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgp
KTsKLQotICAgIHJldHVybiBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkuYWZ0ZXI7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJn
aW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAg
IC8vIE5vbiBjb2xsYXBzZWQgbWFyZ2luIHRvcCBpbmNsdWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZy
b20gaW5mbG93IGZpcnN0IGNoaWxkLgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5v
bkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2Vk
TWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwotfQot
Ci1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xs
YXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE5vbiBjb2xsYXBzZWQgbWFyZ2luIGJvdHRvbSBpbmNs
dWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93IGxhc3QgY2hpbGQuCi0gICAgcmV0dXJu
IG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
IGxheW91dEJveCksIGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KSk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RD
aGlsZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8g
Q2hlY2sgaWYgdGhlIGZpcnN0IGNoaWxkIGNvbGxhcHNlcyBpdHMgbWFyZ2luIHRvcC4KLSAgICBp
ZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlv
dXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRG8g
bm90IGNvbGxhcHNlIG1hcmdpbiB3aXRoIGEgYm94IGZyb20gYSBub24tYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0IDxkaXY+PHNwYW4+Zm9vYmFyPC9zcGFuPjwvZGl2Pi4KLSAgICBpZiAobGF5b3V0
Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAhbGF5b3V0Qm94LmVzdGFibGlz
aGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICAvLyBGSVhNRTogVGFrZSBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4gaW50byBhY2NvdW50Lgot
ICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRC
b3gpLmZpcnN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICAvLyBDb2xsZWN0IGNvbGxhcHNlZCBtYXJnaW4gdG9wIHJlY3Vy
c2l2ZWx5LgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdp
bkJlZm9yZShsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCksIGNvbGxhcHNlZE1hcmdpbkJl
Zm9yZUZyb21GaXJzdENoaWxkKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSk7Ci19Ci0K
LUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxh
cHNlOjpjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGNoaWxk
IHByb3BhZ2F0ZXMgaXRzIG1hcmdpbiBib3R0b20uCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxh
eW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGls
ZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4g
d2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFu
PmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1h
dHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IENoZWNrIGZv
ciBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4uCi0gICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0g
KmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKLSAgICBp
ZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRl
LCBsYXN0SW5GbG93Q2hpbGQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIENvbGxlY3Qg
Y29sbGFwc2VkIG1hcmdpbiBib3R0b20gcmVjdXJzaXZlbHkuCi0gICAgcmV0dXJuIG1hcmdpblZh
bHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxhc3RJbkZs
b3dDaGlsZCksIGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwg
bGFzdEluRmxvd0NoaWxkKSk7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKLXsKLSAgICAvLyAxLiBUaGlzIGlzIHRoZSBsYXN0IGluLWZsb3cgY2hpbGQgYW5kIGl0
cyBtYXJnaW5zIGNvbGxhcHNlIHRocm91Z2ggYW5kIHRoZSBtYXJnaW4gYWZ0ZXIgY29sbGFwc2Vz
IHdpdGggcGFyZW50J3MgbWFyZ2luIGFmdGVyIG9yCi0gICAgLy8gMi4gVGhpcyBib3gncyBtYXJn
aW4gYWZ0ZXIgY29sbGFwc2VzIHdpdGggdGhlIG5leHQgc2libGluZydzIG1hcmdpbiBiZWZvcmUg
YW5kIHRoYXQgc2libGluZyBjb2xsYXBzZXMgdGhyb3VnaCBhbmQKLSAgICAvLyB3ZSBjYW4gZ2V0
IHRvIHRoZSBsYXN0IGluLWZsb3cgY2hpbGQgbGlrZSB0aGF0LgotICAgIGF1dG8qIGxhc3RJbkZs
b3dDaGlsZCA9IGxheW91dEJveC5wYXJlbnQoKS0+bGFzdEluRmxvd0NoaWxkKCk7Ci0gICAgZm9y
IChhdXRvKiBjdXJyZW50Qm94ID0gJmxheW91dEJveDsgY3VycmVudEJveDsgY3VycmVudEJveCA9
IGN1cnJlbnRCb3gtPm5leHRJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFtYXJnaW5z
Q29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqY3VycmVudEJveCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChjdXJyZW50Qm94ID09IGxhc3RJbkZsb3dDaGlsZCkK
LSAgICAgICAgICAgIHJldHVybiBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5B
ZnRlcihsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAKLSAgICAgICAgaWYgKCFtYXJnaW5BZnRl
ckNvbGxhcHNlc1dpdGhOZXh0U2libGluZygqY3VycmVudEJveCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAg
ICAvLyBUaGUgZmlyc3QgaW5mbG93IGNoaWxkIGNvdWxkIHByb3BhZ2F0ZSBpdHMgdG9wIG1hcmdp
biB0byBwYXJlbnQuCi0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1s
I2NvbGxhcHNpbmctbWFyZ2lucwotICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxC
b3goKSk7Ci0KLSAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90
aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGFi
c29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxheW91
dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgotICAg
IGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAvLyBPbmx5IHRoZSBmaXJzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBh
cmVudC4KLSAgICBpZiAobGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBwYXJlbnQgPSAqbGF5b3V0Qm94LnBhcmVudCgp
OwotICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIgaW4tZmxvdyBjaGls
ZHJlbgotICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFyZW50KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc0JvcmRlckJlZm9yZShwYXJlbnQp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShwYXJl
bnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyAuLi5hbmQgdGhlIGNoaWxkIGhh
cyBubyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFyYW5jZShsYXlvdXRCb3gpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtz
OjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xs
YXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICAvLyBJZiB0aGUg
dG9wIGFuZCBib3R0b20gbWFyZ2lucyBvZiBhbiBlbGVtZW50IHdpdGggY2xlYXJhbmNlIGFyZSBh
ZGpvaW5pbmcsIGl0cyBtYXJnaW5zIGNvbGxhcHNlIHdpdGggdGhlIGFkam9pbmluZyBtYXJnaW5z
Ci0gICAgLy8gb2YgZm9sbG93aW5nIHNpYmxpbmdzIGJ1dCB0aGF0IHJlc3VsdGluZyBtYXJnaW4g
ZG9lcyBub3QgY29sbGFwc2Ugd2l0aCB0aGUgYm90dG9tIG1hcmdpbiBvZiB0aGUgcGFyZW50IGJs
b2NrLgotICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChhdXRvKiBwcmV2aW91c1Np
YmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7IHByZXZpb3VzU2libGlu
ZzsgcHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nLT5wcmV2aW91c0luRmxvd1NpYmxp
bmcoKSkgewotICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUs
ICpwcmV2aW91c1NpYmxpbmcpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoaGFzQ2xlYXJhbmNlKCpwcmV2aW91c1NpYmxpbmcpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0
aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQotewotICAgIC8vIDEuIFRoaXMgaXMgdGhlIGZpcnN0IGluLWZsb3cg
Y2hpbGQgYW5kIGl0cyBtYXJnaW5zIGNvbGxhcHNlIHRocm91Z2ggYW5kIHRoZSBtYXJnaW4gYmVm
b3JlIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdzIG1hcmdpbiBiZWZvcmUgb3IKLSAgICAvLyAyLiBU
aGlzIGJveCdzIG1hcmdpbiBiZWZvcmUgY29sbGFwc2VzIHdpdGggdGhlIHByZXZpb3VzIHNpYmxp
bmcncyBtYXJnaW4gYWZ0ZXIgYW5kIHRoYXQgc2libGluZyBjb2xsYXBzZXMgdGhyb3VnaCBhbmQK
LSAgICAvLyB3ZSBjYW4gZ2V0IHRvIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGxpa2UgdGhhdC4K
LSAgICBhdXRvKiBmaXJzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94LnBhcmVudCgpLT5maXJzdElu
Rmxvd0NoaWxkKCk7Ci0gICAgZm9yIChhdXRvKiBjdXJyZW50Qm94ID0gJmxheW91dEJveDsgY3Vy
cmVudEJveDsgY3VycmVudEJveCA9IGN1cnJlbnRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygp
KSB7Ci0gICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmN1
cnJlbnRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoY3VycmVu
dEJveCA9PSBmaXJzdEluRmxvd0NoaWxkKQotICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkJlZm9y
ZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94
KTsgCi0gICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
ZygqY3VycmVudEJveCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29s
bGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgaWYgKGxheW91dEJveC5pc0Fub255bW91
cygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFu
ZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE1hcmdp
bnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAgICBp
ZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFw
c2UuCi0gICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIE9ubHkgdGhlIGxhc3QgaW5sZmxvdyBjaGlsZCBjb2xsYXBzZXMg
d2l0aCBwYXJlbnQuCi0gICAgaWYgKGxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBwYXJlbnQgPSAqbGF5b3V0Qm94LnBhcmVu
dCgpOwotICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2ggbmV3IGJsb2Nr
IGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIgaW4tZmxvdyBj
aGlsZHJlbi4KLSAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KHBhcmVu
dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9m
IGFuIGluLWZsb3cgYmxvY2sgYm94IHdpdGggYSAnaGVpZ2h0JyBvZiAnYXV0bycgY29sbGFwc2Vz
IHdpdGggaXRzIGxhc3QgaW4tZmxvdyBibG9jay1sZXZlbCBjaGlsZCdzIGJvdHRvbSBtYXJnaW4s
IGlmOgotICAgIGlmICghcGFyZW50LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBwYWRkaW5nLCBh
bmQKLSAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShwYXJlbnQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyB0aGUgYm94IGhhcyBubyBib3R0b20gYm9yZGVyLCBhbmQKLSAgICBpZiAo
aGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4gbmVpdGhlciBjb2xsYXBzZXMgd2l0aCBhIHRvcCBt
YXJnaW4gdGhhdCBoYXMgY2xlYXJhbmNlLi4uCi0gICAgaWYgKG1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBub3IgKGlmIHRoZSBib3gncyBt
aW4taGVpZ2h0IGlzIG5vbi16ZXJvKSB3aXRoIHRoZSBib3gncyB0b3AgbWFyZ2luLgotICAgIGF1
dG8gY29tcHV0ZWRNaW5IZWlnaHQgPSBwYXJlbnQuc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCk7
Ci0gICAgaWYgKCFjb21wdXRlZE1pbkhlaWdodC5pc0F1dG8oKSAmJiBjb21wdXRlZE1pbkhlaWdo
dC52YWx1ZSgpICYmIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1h
cmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGNv
bnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpOwotCi0gICAgaWYgKCFsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGluZyA9
ICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7Ci0KLSAgICAvLyBNYXJnaW5zIGJl
dHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0g
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93
U2libGluZy5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29s
bGFwc2UuCi0gICAgaWYgKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxh
eW91dEJveC5zdHlsZSgpLnRvcCgpLmlzQXV0bygpKQotICAgICAgICB8fCAocHJldmlvdXNJbkZs
b3dTaWJsaW5nLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFwcmV2aW91c0luRmxvd1NpYmxp
bmcuc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAg
ICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxp
bmcuaXNJbmxpbmVCbG9ja0JveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBU
aGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlz
IGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mCi0gICAgLy8gaXRzIG5leHQgaW4tZmxv
dyBibG9jay1sZXZlbCBzaWJsaW5nLCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2Uu
Ci0gICAgaWYgKGhhc0NsZWFyYW5jZShsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJs
aW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9j
a0xldmVsQm94KCkpOwotCi0gICAgaWYgKCFsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhQcmV2aW91c1NpYmxpbmcoKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKTsKLX0K
LQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBj
b25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZl
bEJveCgpKTsKLQotICAgIC8vIEEgYm94J3Mgb3duIG1hcmdpbnMgY29sbGFwc2UgaWYgdGhlICdt
aW4taGVpZ2h0JyBwcm9wZXJ0eSBpcyB6ZXJvLCBhbmQgaXQgaGFzIG5laXRoZXIgdG9wIG9yIGJv
dHRvbSBib3JkZXJzIG5vciB0b3Agb3IgYm90dG9tIHBhZGRpbmcsCi0gICAgLy8gYW5kIGl0IGhh
cyBhICdoZWlnaHQnIG9mIGVpdGhlciAwIG9yICdhdXRvJywgYW5kIGl0IGRvZXMgbm90IGNvbnRh
aW4gYSBsaW5lIGJveCwgYW5kIGFsbCBvZiBpdHMgaW4tZmxvdyBjaGlsZHJlbidzIG1hcmdpbnMg
KGlmIGFueSkgY29sbGFwc2UuCi0gICAgaWYgKGhhc0JvcmRlckJlZm9yZShsYXlvdXRCb3gpIHx8
IGhhc0JvcmRlckFmdGVyKGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkgfHwgaGFzUGFkZGluZ0FmdGVyKGxheW91
dEJveCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBDaGVjayBmb3Ig
Y29tcHV0ZWQgMCBoZWlnaHQuCi0gICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWlnaHQoKS5p
c0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRklYTUU6IENoZWNrIGZv
ciBjb21wdXRlZCAwIGhlaWdodC4KLSAgICBpZiAoIWxheW91dEJveC5zdHlsZSgpLm1pbkhlaWdo
dCgpLmlzQXV0bygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWlzPENvbnRh
aW5lcj4obGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobGF5b3V0
Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICBpZiAo
ZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZv
cm1hdHRpbmdTdGF0ZShsYXlvdXRCb3gpKS5pbmxpbmVSdW5zKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byogaW5m
bG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGls
ZCgpOyBpbmZsb3dDaGlsZDsgaW5mbG93Q2hpbGQgPSBpbmZsb3dDaGlsZC0+bmV4dEluRmxvd1Np
YmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91
dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmUo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsK
LSAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBUT0RPOiB0
YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVBbmRBZnRlcigpIGludG8gYWNjb3VudC4KLSAg
ICBpZiAobWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhNRTogRmlu
ZCBvdXQgdGhlIGxvZ2ljIGJlaGluZCB0aGlzLgotICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhQcmV2aW91c1NpYmxpbmcobGF5b3V0Qm94KSkgewotICAgICAgICBpZiAoIW1hcmdpbnND
b2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgICAgICByZXR1
cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAg
ICAgICAvLyBDb21wdXRlIHRoZSBjb2xsYXBzZWQgdGhyb3VnaCB2YWx1ZS4KLSAgICAgICAgYXV0
byBtYXJnaW5CZWZvcmUgPSBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBub25Db2xsYXBzZWRNYXJnaW5B
ZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsgCi0gICAgICAgIHJldHVybiBtYXJnaW5WYWx1
ZShtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyKTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgYm90dG9t
IG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNl
cyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2li
bGluZywKLSAgICAvLyB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgYXV0
byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGlu
ZygpOwotICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJsaW5nKQotICAgICAgICByZXR1cm4gbm9u
Q29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotCi0gICAgYXV0
byBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlciA9IG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxh
eW91dFN0YXRlLCAqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKLSAgICBhdXRvIG1hcmdpbkJlZm9y
ZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAg
ICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3JlLCBwcmV2aW91c1NpYmxpbmdNYXJnaW5B
ZnRlcik7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1v
dXMoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tM
ZXZlbEJveCgpKTsKLQotICAgIC8vIFRPRE86IHRha2UgX2hhc0Fkam9pbmluZ01hcmdpbkJlZm9y
ZUFuZEJvdHRvbSgpIGludG8gYWNjb3VudC4KLSAgICBpZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgaWYgKG1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRmxvYXRzIGFuZCBvdXQgb2Yg
ZmxvdyBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZSB0aGVpciBtYXJnaW5zLgotICAg
IGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcobGF5b3V0Qm94KSkKLSAg
ICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpOwotCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZl
bCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4
dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsCi0gICAgLy8gdW5sZXNzIHRoYXQgc2libGlu
ZyBoYXMgY2xlYXJhbmNlLgotICAgIGlmIChsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpOwotfQotCi19Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAppbmRleCAwMjdiNDM0YmJj
NmQ0YzJmNTUxMGFmY2U5YzUwNzgzOWU2NDllMjQ0Li42ZGI3ZGVkYjM3YWM5ZTM4ZmI5NDU2ODI5
NjllODdkNmJlNDNlZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guY3BwCkBAIC02MCw3ICs2MCw3IEBAIEJveDo6Qm94KGNvbnN0IEJveCYg
b3RoZXIpCiAgICAgLCBtX2hvcml6b250YWxNYXJnaW4ob3RoZXIubV9ob3Jpem9udGFsTWFyZ2lu
KQogICAgICwgbV92ZXJ0aWNhbE1hcmdpbihvdGhlci5tX3ZlcnRpY2FsTWFyZ2luKQogICAgICwg
bV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4ob3RoZXIubV9ob3Jpem9udGFsTm9uQ29tcHV0
ZWRNYXJnaW4pCi0gICAgLCBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZShvdGhlci5tX2VzdGltYXRl
ZE1hcmdpbkJlZm9yZSkKKyAgICAsIG1faGFzQ2xlYXJhbmNlKG90aGVyLm1faGFzQ2xlYXJhbmNl
KQogICAgICwgbV9ib3JkZXIob3RoZXIubV9ib3JkZXIpCiAgICAgLCBtX3BhZGRpbmcob3RoZXIu
bV9wYWRkaW5nKQogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTc0LDYgKzc0LDcgQEAgQm94OjpC
b3goY29uc3QgQm94JiBvdGhlcikKICAgICAsIG1faGFzVmFsaWRQYWRkaW5nKG90aGVyLm1faGFz
VmFsaWRQYWRkaW5nKQogICAgICwgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQob3RoZXIubV9oYXNW
YWxpZENvbnRlbnRIZWlnaHQpCiAgICAgLCBtX2hhc1ZhbGlkQ29udGVudFdpZHRoKG90aGVyLm1f
aGFzVmFsaWRDb250ZW50V2lkdGgpCisgICAgLCBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZShvdGhl
ci5tX2VzdGltYXRlZE1hcmdpbkJlZm9yZSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKaW5kZXggNTYzOTJmNDdlZTc5ZTMw
ZDNmMGUyMTg5NGQzZjE0YmI4NzVkN2U4OS4uNWFjYjA4N2ZmYWI0OTIwNGY2Y2I2NzY3ZDE1N2Qz
MzA3MDk5OWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUJveC5oCkBAIC0xMzYsMjEgKzEzNiwyMCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCkudmFsdWVP
cigwKSArIGNvbnRlbnRCb3hXaWR0aCgpICsgcGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKSArIGJv
cmRlclJpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJv
cmRlclRvcCgpICsgcGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94SGVpZ2h0KCkg
KyBwYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKSArIGJvcmRlckJvdHRvbSgpOyB9CiAgICAgUmVj
dCByZWN0KCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSwgbGVmdCgpLCB3aWR0aCgpLCBoZWlnaHQo
KSB9OyB9Ci0gICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHsgdG9wKCkg
LSBtYXJnaW5CZWZvcmUoKSwgbGVmdCgpIC0gbWFyZ2luU3RhcnQoKSwgbWFyZ2luU3RhcnQoKSAr
IHdpZHRoKCkgKyBtYXJnaW5FbmQoKSwgbWFyZ2luQmVmb3JlKCkgKyBoZWlnaHQoKSArIG1hcmdp
bkFmdGVyKCkgfTsgfQorICAgIFJlY3QgcmVjdFdpdGhNYXJnaW4oKSBjb25zdDsKIAogICAgIExh
eW91dDo6VmVydGljYWxNYXJnaW4gdmVydGljYWxNYXJnaW4oKSBjb25zdDsKICAgICBMYXlvdXRV
bml0IG1hcmdpbkJlZm9yZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQoKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5p
dCBtYXJnaW5FbmQoKSBjb25zdDsKKyAgICBib29sIGhhc0NsZWFyYW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ2xlYXJhbmNlOyB9CiAKICAgICBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdp
bkJlZm9yZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdDsK
ICAgICBMYXlvdXRVbml0IG5vbkNvbXB1dGVkTWFyZ2luRW5kKCkgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBt
X2VzdGltYXRlZE1hcmdpbkJlZm9yZTsgfQotCiAgICAgTGF5b3V0VW5pdCBib3JkZXJUb3AoKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IGJvcmRlckxlZnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IGJvcmRlckJvdHRvbSgpIGNvbnN0OwpAQCAtMTc1LDYgKzE3NCwxMSBAQCBwdWJsaWM6CiAgICAg
UmVjdCBwYWRkaW5nQm94KCkgY29uc3Q7CiAgICAgUmVjdCBjb250ZW50Qm94KCkgY29uc3Q7CiAK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdm9pZCBzZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
TGF5b3V0OjpFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgbWFyZ2luQmVmb3JlKSB7IG1fZXN0aW1hdGVk
TWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CisgICAgT3B0aW9uYWw8TGF5b3V0OjpFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmU+IGVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgU3R5bGUgewogICAgICAgICBTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpOwpAQCAtMTk0LDcg
KzE5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsTWFyZ2luKExheW91dDo6
SG9yaXpvbnRhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZl
cnRpY2FsTWFyZ2luKTsKICAgICB2b2lkIHNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihM
YXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwotICAgIHZvaWQgc2V0RXN0aW1hdGVkTWFyZ2luQmVm
b3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSB7IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0g
bWFyZ2luQmVmb3JlOyB9CisgICAgdm9pZCBzZXRIYXNDbGVhcmFuY2UoKSB7IG1faGFzQ2xlYXJh
bmNlID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5b3V0OjpFZGdlcyk7CiAgICAg
dm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+KTsKQEAgLTIwMyw2ICsyMDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZU1hcmdpbigpOwogICAgIHZvaWQgaW52
YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IGZhbHNlOyB9CiAgICAgdm9pZCBp
bnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSBmYWxzZTsgfQorICAgIHZv
aWQgaW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIHsgbV9lc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUgPSB7IH07IH0KIAogICAgIHZvaWQgc2V0SGFzVmFsaWRUb3AoKSB7IG1faGFzVmFsaWRU
b3AgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxpZExlZnQoKSB7IG1faGFzVmFsaWRMZWZ0
ID0gdHJ1ZTsgfQpAQCAtMjI3LDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0OjpIb3Jp
em9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE1hcmdpbjsKICAgICBMYXlvdXQ6OlZlcnRpY2FsTWFy
Z2luIG1fdmVydGljYWxNYXJnaW47CiAgICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9y
aXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1fZXN0
aW1hdGVkTWFyZ2luQmVmb3JlOworICAgIGJvb2wgbV9oYXNDbGVhcmFuY2U7CiAKICAgICBMYXlv
dXQ6OkVkZ2VzIG1fYm9yZGVyOwogICAgIE9wdGlvbmFsPExheW91dDo6RWRnZXM+IG1fcGFkZGlu
ZzsKQEAgLTI0Myw2ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRp
bmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRXaWR0aCB7IGZhbHNlIH07CisgICAgT3B0aW9u
YWw8TGF5b3V0OjpFc3RpbWF0ZWRNYXJnaW5CZWZvcmU+IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3Jl
OwogI2VuZGlmCiB9OwogCkBAIC01MjAsOCArNTI2LDggQEAgaW5saW5lIHZvaWQgQm94OjpzZXRW
ZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1hcmdpbikKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNhbE1hcmdpbigpOwogICAgIHNldEhhc1Zh
bGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4oKTsKKyAgICBpbnZhbGlkYXRlRXN0aW1hdGVk
TWFyZ2luQmVmb3JlKCk7CiAjZW5kaWYKLSAgICBBU1NFUlQoIW1fZXN0aW1hdGVkTWFyZ2luQmVm
b3JlIHx8ICptX2VzdGltYXRlZE1hcmdpbkJlZm9yZSA9PSBtYXJnaW4udXNlZFZhbHVlcygpLmJl
Zm9yZSk7CiAgICAgbV92ZXJ0aWNhbE1hcmdpbiA9IG1hcmdpbjsKIH0KIApAQCAtNTQ5LDYgKzU1
NSwxNCBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdl
cz4gcGFkZGluZykKICAgICBtX3BhZGRpbmcgPSBwYWRkaW5nOwogfQogCitpbmxpbmUgQm94OjpS
ZWN0IEJveDo6cmVjdFdpdGhNYXJnaW4oKSBjb25zdAoreworICAgIGF1dG8gbWFyZ2luQWZ0ZXIg
PSB0aGlzLT5tYXJnaW5BZnRlcigpOworICAgIGlmIChtX3ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNl
ZFZhbHVlcygpICYmIG1fdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmlzQ29sbGFw
c2VkVGhyb3VnaCkKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSAwOworICAgIHJldHVybiB7IHRvcCgp
IC0gbWFyZ2luQmVmb3JlKCksIGxlZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkg
KyB3aWR0aCgpICsgbWFyZ2luRW5kKCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJn
aW5BZnRlciB9OworfQorCiBpbmxpbmUgTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbiBCb3g6OnZlcnRp
Y2FsTWFyZ2luKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2lu
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNw
cAppbmRleCA3MWZjMDYwNjUyMjc4MGRiYWQyM2E5OGY1OTk0YTg1MzhjYTMyZTM5Li5mY2RiNTA3
N2U2Y2Q4ZjUzM2JjYWZiZDExMWE3YzgwMjU0NTc5Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xODMsMzQgKzE4MywzMiBA
QCBPcHRpb25hbDxQb3NpdGlvbj4gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aENsZWFyYW5jZShjb25zdCBCb3gmIGxheQogICAgICAgICBpZiAoY2xlYXJhbmNlIDw9IDApCiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogCisgICAgICAgIGRpc3BsYXlCb3guc2V0SGFzQ2xlYXJh
bmNlKCk7CiAgICAgICAgIC8vIENsZWFyYW5jZSBpbmhpYml0cyBtYXJnaW4gY29sbGFwc2luZy4g
TGV0J3MgcmVzZXQgdGhlIHJlbGV2YW50IGFkam9pbmluZyBtYXJnaW5zLgogICAgICAgICBpZiAo
YXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpKSB7CiAgICAgICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBs
YXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcp
OworICAgICAgICAgICAgLy8gRG9lcyB0aGlzIGJveCB3aXRoIGNsZWFyYW5jZSBhY3R1YWxseSBj
b2xsYXBzZSBpdHMgbWFyZ2luIGJlZm9yZSB3aXRoIHRoZSBwcmV2aW91cyBpbmZsb3cgYm94J3Mg
bWFyZ2luIGFmdGVyPyAKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5
Qm94LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgICAgICAgICBpZiAodmVydGljYWxNYXJnaW4uY29s
bGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmJlZm9y
ZSkgeworICAgICAgICAgICAgICAgIC8vIFJlc2V0IHByZXZpb3VzIGJvdHRvbSBhZnRlciBhbmQg
Y3VycmVudCBtYXJnaW4gYmVmb3JlIHRvIG5vbi1jb2xsYXBzaW5nLgorICAgICAgICAgICAgICAg
IGF1dG8gcHJldmlvdXNWZXJ0aWNhbE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC52
ZXJ0aWNhbE1hcmdpbigpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c1ZlcnRpY2Fs
TWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFw
c2VkVmFsdWVzKCktPmFmdGVyKTsKIAotICAgICAgICAgICAgLy8gU2luY2UgdGhlIHByZXZpb3Vz
IGluZmxvdyBzaWJsaW5nIGhhcyBhbHJlYWR5IGJlZW4gbGFpZCBvdXQsIGl0cyBtYXJnaW4gaXMg
Y29sbGFwc2VkIGJ5IG5vdy4KLSAgICAgICAgICAgIEFTU0VSVCghcHJldmlvdXNJbkZsb3dEaXNw
bGF5Qm94Lm1hcmdpbkFmdGVyKCkpOwotICAgICAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4g
PSBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgpOwotCi0gICAgICAgICAgICAvLyBSZXNldCBwcmV2
aW91cyBib3R0b20gYW5kIGN1cnJlbnQgdG9wIG1hcmdpbnMgdG8gbm9uLWNvbGxhcHNpbmcuCi0g
ICAgICAgICAgICBhdXRvIHByZXZpb3VzVmVydGljYWxNYXJnaW4gPSBwcmV2aW91c0luRmxvd0Rp
c3BsYXlCb3gudmVydGljYWxNYXJnaW4oKTsKLSAgICAgICAgICAgIGlmIChwcmV2aW91c1ZlcnRp
Y2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29s
bGFwc2VkVmFsdWVzKCktPmFmdGVyKSB7CisgICAgICAgICAgICAgICAgYXV0byBjb2xsYXBzZWRN
YXJnaW4gPSAqdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmJlZm9yZTsKICAgICAg
ICAgICAgICAgICBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHBy
ZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmJlZm9yZSwgeyB9IH0pOwog
ICAgICAgICAgICAgICAgIHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdp
bihwcmV2aW91c1ZlcnRpY2FsTWFyZ2luKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBjaGVjayBpZiBjb2xsYXBzaW5nIHRocm91Z2ggaGFzIGFueXRoaW5nIHRvIGRvIHdp
dGggdGhpcy4KLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZl
cnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBpZiAodmVydGljYWxNYXJnaW4uY29sbGFwc2Vk
VmFsdWVzKCkgJiYgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmJlZm9yZSkgewor
CiAgICAgICAgICAgICAgICAgdmVydGljYWxNYXJnaW4uc2V0Q29sbGFwc2VkVmFsdWVzKHsgeyB9
LCB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+YWZ0ZXIgfSk7CiAgICAgICAgICAg
ICAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbE1hcmdpbik7Ci0gICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gcHJldmlv
dXNJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkFmdGVyKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9y
ZSgpOwotICAgICAgICAgICAgYXV0byBtYXJnaW5PZmZzZXQgPSBub25Db2xsYXBzZWRNYXJnaW4g
LSBjb2xsYXBzZWRNYXJnaW47Ci0gICAgICAgICAgICAvLyBNb3ZlIHRoZSBib3ggdG8gdGhlIHBv
c2l0aW9uIHdoZXJlIGl0IHdvdWxkIGJlIHdpdGggbm9uLWNvbGxhcHNlZCBtYXJnaW5zLgotICAg
ICAgICAgICAgcm9vdFJlbGF0aXZlVG9wICs9IG1hcmdpbk9mZnNldDsKKyAgICAgICAgICAgICAg
ICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IHByZXZpb3VzVmVydGljYWxNYXJnaW4udXNlZFZh
bHVlcygpLmFmdGVyICsgdmVydGljYWxNYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZTsKKyAgICAg
ICAgICAgICAgICBhdXRvIG1hcmdpbkRpZmZlcmVuY2UgPSBub25Db2xsYXBzZWRNYXJnaW4gLSBj
b2xsYXBzZWRNYXJnaW47CisgICAgICAgICAgICAgICAgLy8gTW92ZSB0aGUgYm94IHRvIHRoZSBw
b3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5vbi1jb2xsYXBzZWQgbWFyZ2lucy4KKyAg
ICAgICAgICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gbWFyZ2luRGlmZmVyZW5jZTsKIAotICAg
ICAgICAgICAgLy8gSGF2aW5nIG5lZ2F0aXZlIGNsZWFyYW5jZSBpcyBhbHNvIG5vcm1hbC4gSXQg
anVzdCBtZWFucyB0aGF0IHRoZSBib3ggd2l0aCB0aGUgbm9uLWNvbGxhcHNlZCBtYXJnaW5zIGlz
IG5vdyBsb3dlciB0aGFuIGl0IG5lZWRzIHRvIGJlLgotICAgICAgICAgICAgY2xlYXJhbmNlIC09
IG1hcmdpbk9mZnNldDsKKyAgICAgICAgICAgICAgICAvLyBIYXZpbmcgbmVnYXRpdmUgY2xlYXJh
bmNlIGlzIGFsc28gbm9ybWFsLiBJdCBqdXN0IG1lYW5zIHRoYXQgdGhlIGJveCB3aXRoIHRoZSBu
b24tY29sbGFwc2VkIG1hcmdpbnMgaXMgbm93IGxvd2VyIHRoYW4gaXQgbmVlZHMgdG8gYmUuCisg
ICAgICAgICAgICAgICAgY2xlYXJhbmNlIC09IG1hcmdpbkRpZmZlcmVuY2U7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gTm93IGFkanVzdCB0aGUgYm94J3MgcG9zaXRpb24g
d2l0aCB0aGUgY2xlYXJhbmNlLgogICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gY2xlYXJhbmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGUyMWI4NzQwNzI3NTZh
ZGUxNjRiYjhmNzA2MDU3NTk4MDUwNjk3NDMuLmY2YWE1MWMyODE4OTg1ZDU5NmMwMjJmNzA5MDA1
NjI5ZGVmZjgyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUz
LDYgKzUzLDExIEBAIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vCiB7CiB9CiAKK0lubGluZUZvcm1h
dHRpbmdTdGF0ZSYgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obV9mb3Jt
YXR0aW5nU3RhdGUpOworfQorCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQo
KSBjb25zdAogewogICAgIGlmICghaXM8Q29udGFpbmVyPihyb290KCkpKQpAQCAtMTMzLDcgKzEz
OCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNwbGl0SW5saW5lUnVuSWZOZWVk
ZWQoY29uc3QgSW5saW5lUnVuJiBpbmxpbmVSdW4sCiAgICAgLy8gMS4gU3RhcnQgd2l0aCB0aGUg
Zmlyc3QgaW5saW5lIGl0ZW0gKGVsZW1lbnQpIGFuZCB0cmF2ZXJzIHRoZSBsaXN0IHVudGlsCiAg
ICAgLy8gMi4gZWl0aGVyIGZpbmQgYW4gaW5saW5lIGl0ZW0gdGhhdCBuZWVkcyBhIGRlZGljYXRl
ZCBydW4gb3Igd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgcnVuCiAgICAgLy8gMy4gQ3JlYXRlIGRl
ZGljYXRlIGlubGluZSBydW5zLgotICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUoKS5pbmxpbmVDb250ZW50KCk7CisgICAgYXV0byYgaW5saW5lQ29udGVudCA9
IGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUNvbnRlbnQoKTsKICAgICBhdXRvIGNvbnRlbnRTdGFy
dCA9IGlubGluZVJ1bi5sb2dpY2FsTGVmdCgpOwogICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IGlu
bGluZVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpOwogICAgIGF1dG8gcmVtYW5pbmdMZW5ndGgg
PSBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCk7CkBAIC0yMTIsNyArMjE3LDcgQEAg
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZChjb25z
dCBJbmxpbmVSdW4mIGlubGluZVJ1biwKIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y3JlYXRlRmluYWxSdW5zKExpbmUmIGxpbmUpIGNvbnN0CiB7Ci0gICAgYXV0byYgaW5saW5lRm9y
bWF0dGluZ1N0YXRlID0gdGhpcy0+aW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7CisgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgZm9y
IChhdXRvJiBpbmxpbmVSdW4gOiBsaW5lLnJ1bnMoKSkgewogICAgICAgICBpZiAoaW5saW5lUnVu
Lm92ZXJsYXBzTXVsdGlwbGVJbmxpbmVJdGVtcygpKSB7CiAgICAgICAgICAgICBJbmxpbmVSdW5z
IHNwbGl0UnVuczsKQEAgLTI0Myw3ICsyNDgsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpjcmVhdGVGaW5hbFJ1bnMoTGluZSYgbGluZSkgY29uc3QKIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OnBvc3RQcm9jZXNzSW5saW5lUnVucyhMaW5lJiBsaW5lLCBJc0xhc3RMaW5l
IGlzTGFzdExpbmUpIGNvbnN0CiB7CiAgICAgR2VvbWV0cnk6OmFsaWduUnVucyhyb290KCkuc3R5
bGUoKS50ZXh0QWxpZ24oKSwgbGluZSwgaXNMYXN0TGluZSk7Ci0gICAgYXV0byBmaXJzdFJ1bklu
ZGV4ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lUnVucygpLnNpemUoKTsKKyAgICBh
dXRvIGZpcnN0UnVuSW5kZXggPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVSdW5zKCkuc2l6ZSgp
OwogICAgIGNyZWF0ZUZpbmFsUnVucyhsaW5lKTsKIAogICAgIHBsYWNlSW5GbG93UG9zaXRpb25l
ZENoaWxkcmVuKGZpcnN0UnVuSW5kZXgpOwpAQCAtMjcwLDcgKzI3NSw3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVuZENvbnRlbnRUb0xpbmUoTGluZSYgbGluZSwgY29uc3Qg
SW5saW5lUnVuUHJvCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbmxpbmVD
b250ZW50KGNvbnN0IElubGluZVJ1blByb3ZpZGVyJiBpbmxpbmVSdW5Qcm92aWRlcikgY29uc3QK
IHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0gICAgYXV0
byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+aW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7
CisgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRl
KCk7CiAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyBpbmxpbmVG
b3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpIH07CiAKICAgICBMaW5lIGxpbmU7CkBAIC00
MDUsNyArNDEwLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0
UG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGkKIAogdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4odW5zaWduZWQgZmlz
dFJ1bkluZGV4KSBjb25zdAogewotICAgIGF1dG8mIGlubGluZVJ1bnMgPSBpbmxpbmVGb3JtYXR0
aW5nU3RhdGUoKS5pbmxpbmVSdW5zKCk7CisgICAgYXV0byYgaW5saW5lUnVucyA9IGZvcm1hdHRp
bmdTdGF0ZSgpLmlubGluZVJ1bnMoKTsKICAgICBmb3IgKGF1dG8gcnVuSW5kZXggPSBmaXN0UnVu
SW5kZXg7IHJ1bkluZGV4IDwgaW5saW5lUnVucy5zaXplKCk7ICsrcnVuSW5kZXgpIHsKICAgICAg
ICAgYXV0byYgaW5saW5lUnVuID0gaW5saW5lUnVuc1tydW5JbmRleF07CiAKQEAgLTQzMCw3ICs0
MzUsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpwbGFjZUluRmxvd1Bvc2l0aW9u
ZWRDaGlsZHJlbih1bnNpZ25lZCBmaXN0UnVuSW5kZQogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNvbnN0IEJveCYgcm9vdCwgSW5s
aW5lUnVuUHJvdmlkZXImIGlubGluZVJ1blByb3ZpZGVyKSBjb25zdAogewogICAgIC8vIENvbGxl
Y3QgaW5saW5lIGNvbnRlbnQgcmVjdXJzaXZlbHkgYW5kIHNldCBicmVha2luZyBydWxlcyBmb3Ig
dGhlIGlubGluZSBlbGVtZW50cyAoZm9yIHBhZGRpbmdzLCBtYXJnaW5zLCBwb3NpdGlvbmVkIGVs
ZW1lbnQgZXRjKS4KLSAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5pbmxp
bmVGb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSB0
aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIGF1dG8gY3JlYXRlQW5kQXBwZW5kSW5saW5l
SXRlbSA9IFsmXSB7CiAgICAgICAgIGF1dG8gaW5saW5lSXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5saW5lSXRlbT4ocm9vdCk7CkBAIC00NDIsNyArNDQ3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNvbnN0IEJveCYgcm9v
dCwgSW4KICAgICAgICAgY3JlYXRlQW5kQXBwZW5kSW5saW5lSXRlbSgpOwogICAgICAgICBhdXRv
JiBpbmxpbmVSdW4gPSAqaW5saW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZUNvbnRlbnQoKS5sYXN0
KCk7CiAKLSAgICAgICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVk
Tm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlKCksIHJvb3QpOwor
ICAgICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xs
YXBzZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlKCksIHJvb3QpOwogICAgICAgICBpbmxp
bmVSdW4uYWRkRGV0YWNoaW5nUnVsZSh7IElubGluZUl0ZW06OkRldGFjaGluZ1J1bGU6OkJyZWFr
QXRTdGFydCwgSW5saW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdEVuZCB9KTsKICAgICAg
ICAgaW5saW5lUnVuLmFkZE5vbkJyZWFrYWJsZVN0YXJ0KGhvcml6b250YWxNYXJnaW4uc3RhcnQp
OwogICAgICAgICBpbmxpbmVSdW4uYWRkTm9uQnJlYWthYmxlRW5kKGhvcml6b250YWxNYXJnaW4u
ZW5kKTsKQEAgLTQ2NSw3ICs0NzAsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b2xsZWN0SW5saW5lQ29udGVudEZvclN1YnRyZWUoY29uc3QgQm94JiByb290LCBJbgogICAgIC8v
IEZJWE1FOiBSZXZpc2l0IHRoaXMgd2hlbiB3ZSBmaWd1cmVkIG91dCBob3cgaW5saW5lIGJveGVz
IGZpdCB0aGUgZGlzcGxheSB0cmVlLgogICAgIGF1dG8gcGFkZGluZyA9IEdlb21ldHJ5Ojpjb21w
dXRlZFBhZGRpbmcobGF5b3V0U3RhdGUoKSwgcm9vdCk7CiAgICAgYXV0byBib3JkZXIgPSBHZW9t
ZXRyeTo6Y29tcHV0ZWRCb3JkZXIobGF5b3V0U3RhdGUoKSwgcm9vdCk7Ci0gICAgYXV0byBob3Jp
em9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1h
cmdpblZhbHVlKGxheW91dFN0YXRlKCksIHJvb3QpOworICAgIGF1dG8gaG9yaXpvbnRhbE1hcmdp
biA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW4obGF5b3V0
U3RhdGUoKSwgcm9vdCk7CiAgICAgLy8gU2V0dXAgYnJlYWtpbmcgYm91bmRhcmllcyBmb3IgdGhp
cyBzdWJ0cmVlLgogICAgIGF1dG8qIGxhc3REZXNjZW5kYW50SW5saW5lQm94ID0gaW5saW5lRm9y
bWF0dGluZ1N0YXRlLmxhc3RJbmxpbmVJdGVtKCk7CiAgICAgLy8gRW1wdHkgY29udGFpbmVyPwpA
QCAtNTIyLDcgKzUyNyw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5zdHJpbnNpCiAgICAgaWYgKGF1dG8g
aW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBmb3JtYXR0aW5nU3RhdGVGb3JSb290Lmluc3Ry
aW5zaWNXaWR0aENvbnN0cmFpbnRzKHJvb3QoKSkpCiAgICAgICAgIHJldHVybiAqaW5zdHJpbnNp
Y1dpZHRoQ29uc3RyYWludHM7CiAKLSAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSB0
aGlzLT5pbmxpbmVGb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5n
U3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBJbmxpbmVSdW5Qcm92aWRlciBp
bmxpbmVSdW5Qcm92aWRlcjsKICAgICBjb2xsZWN0SW5saW5lQ29udGVudChpbmxpbmVSdW5Qcm92
aWRlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDQwMTBmZmQwNGU2
YTY4NDhkOGQ4ZTdlOTc1ODYyZDhlYzk3NjcyM2MuLmMyZWY4N2ExYmY5NDQ4ZmJkNDViMmE3MDVj
MzhmYmZlZDU1ZjVlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMTIx
LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0SW5saW5lQ29udGVudEZvclN1
YnRyZWUoY29uc3QgQm94JiByb290LCBJbmxpbmVSdW5Qcm92aWRlciYpIGNvbnN0OwogICAgIElu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGlubGluZUZvcm1hdHRp
bmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4o
Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CisgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0
aW5nU3RhdGUoKSBjb25zdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggYjY1Yzg5ZmM1NWYxZmYwOGIwYzUwOGY3ODJkZDNh
NDg4NWE1MzgzMS4uNzFkYTkxOTBhMTc4ODU1ZjI3YjQ1NjZmMGRkZTc1ZmNmYWRlMmY0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgV2lkdGhBbmRNYXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKExheW8KICAgICAgICAgd2lkdGggPSBzaHJp
bmtUb0ZpdFdpZHRoKGxheW91dFN0YXRlLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCiAgICAg
Ly8gIzIKLSAgICBhdXRvIG1hcmdpbiA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1h
cmdpblZhbHVlKGxheW91dFN0YXRlLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAgIGF1dG8g
bWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRl
LCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCiAgICAgcmV0dXJuIFdpZHRoQW5kTWFyZ2luIHsg
KndpZHRoLCBtYXJnaW4sIG1hcmdpbiB9OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhkY2VlMWU1MjcwMGZhZTBhNzM3YzUwMDhkNWE4NWYw
ZjFhOGYwNjAuLmM2ZDM4ZDZiNzM3NTcyMzljM2E1NWY4MWEzNjg2NGU2YmFiM2I4NWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxOC0xMi0yOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtMRkNdW0JGQ11bTWFyZ2luQ29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFy
IGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBMYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dDoKKwogMjAxOC0xMi0y
MiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
V2ViRHJpdmVyOiB3YXJuIGFib3V0IG5vbiBleGlzdGluZyB0ZXN0cyB3aGVuIHBhcnNpbmcgZXhw
ZWN0YXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNz
aW5nLXRlc3RzLnR4dCBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVz
dHMudHh0CmluZGV4IGZmNWViMzgxNTRiNzJlZjhjODgxN2ZiMjk0NWYzNTBlYmI1ZDEwMTIuLjIy
NWI3NDc1ZGE4M2FhNWNhYWUxOTFlYTU5MWFhNjI1MWU2OWNmNjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CisrKyBiL1Rvb2xzL0xh
eW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CkBAIC00LDIzICs0LDY2IEBA
IGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1sZWZ0LWF1dG8uaHRtbAogZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2Fic29sdXRlLWxlZnQtcmlnaHQtdG9wLWJvdHRvbS1hdXRvLmh0bWwKIGZh
c3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1uZXN0ZWQyLmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9hYnNvbHV0ZS1uZXN0ZWQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29s
dXRlLXBvc2l0aW9uLW1pbi1tYXgtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9h
YnNvbHV0ZS1wb3NpdGlvbi1taW4tbWF4LXdpZHRoLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25s
eS9hYnNvbHV0ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90LWluLXRoZS1m
b3JtYXR0aW5nLWNvbnRleHQyLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1w
b3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90LWluLXRoZS1mb3JtYXR0aW5nLWNv
bnRleHQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXNpbXBsZS5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2lkdGgtc2hyaW5rLXRvLWZpdC5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2lkdGgtc3RyZXRjaC5odG1sCiBmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2l0aC1zdGF0aWMtYmxvY2stcG9zaXRpb24tbmVzdGVk
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9hbG1vc3QtaW50cnVkaW5nLWxlZnQtZmxvYXQt
c2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLWF1dG8t
aHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdo
dC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2JvZHktaGVpZ2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKK2Zhc3Qv
YmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0bWwtaGVpZ2h0LXF1
aXJrLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9ib3JkZXItc2ltcGxlLmh0bWwKK2Zhc3Qv
YmxvY2svYmxvY2stb25seS9jb2xsYXBzZWQtbWFyZ2luLXdpdGgtbWluLWhlaWdodC5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZml4ZWQtbmVzdGVkLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdC1hbmQtc2libGluZ3Mtd2l0aC1tYXJnaW5zLmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9mbG9hdC1hdm9pZGVyLW11bHRpcGxlLXJvb3RzLmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1sZWZ0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1yaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvZmxvYXQtYXZvaWRlci13aXRoLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0LWxlZnQtd2hlbi1jb250YWluZXItaGFzLXBhZGRpbmctbWFyZ2luLmh0bWwKK2Zhc3Qv
YmxvY2svYmxvY2stb25seS9mbG9hdC1taW4tbWF4LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXQtbWluLW1heC13aWR0aC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
ZmxvYXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5mbG93LXdpdGgtbWFyZ2luLXdpdGgtbm8tYm9y
ZGVyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91
cy1pbmZsb3ctd2l0aC1tYXJnaW4uaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5n
LWJveC1jbGVhci1ib3RoLXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRp
bmctYm94LWNsZWFyLXJpZ2h0LXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXRpbmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLXdpdGgtdG9wLW9mZnNldC5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxl
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtcmlnaHQtc2ltcGxlLmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1jbGVhci1zaWJsaW5n
cy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtY2xlYXItc2lt
cGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1uZXctZm9y
bWF0dGluZy1jb250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gt
d2l0aC1yZWxhdGl2ZS1wb3NpdGlvbmVkLXNpYmxpbmcuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0aW5nLWxlZnQtYW5kLXJpZ2h0LXdpdGgtY2xlYXJhbmNlLmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0LXJpZ2h0LXNpbXBsZS5odG1sCitmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC13aXRoLWFsbC1tYXJnaW5zLmh0bWwKK2Zh
c3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0cy1hbmQtcmlnaHRzLXNpbXBsZS5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMtaW4tYm9keS5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMtbXVsdGlw
bGUtbGluZXMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxl
ZnRzLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy13aXRoLW5ldy1ibG9jay1m
b3JtYXR0aW5nLWNvbnRleHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4t
bWF4LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1pbi1tYXgtd2lk
dGguaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1ib3R0b20tYm90
dG9tLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtYm90dG9tLW5l
c3RlZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLWZpcnN0LWxh
c3QtYXJlLWZsb2F0aW5nLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFw
c2Utc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtdG9w
LW5lc3RlZC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdoZW4t
Y2hpbGQtaGFzLXBhZGRpbmctYm9yZGVyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9tYXJn
aW4tY29sbGFwc2Utd2l0aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQyLmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRl
eHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aXRoLWNsZWFy
YW5jZS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWxlZnQtcmlnaHQtc2l6aW5n
LW91dC1vZi1mbG93Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tbGVmdC1yaWdo
dC1zaXppbmcuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1wcm9wYWdhdGlvbi1z
aW1wbGUtY29udGVudC1oZWlnaHQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1z
aWJsaW5nLWNvbGxhcHNlLXByb3BhZ2F0ZWQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21h
cmdpbi1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21pbi1tYXgtaGVpZ2h0LXBl
cmNlbnRhZ2UuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L25lZ2F0aXZlLW1hcmdpbi1zaW1w
bGUuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L3BhZGRpbmctbmVzdGVkLmh0bWwKIGZhc3Qv
YmxvY2svYmxvY2stb25seS9wYWRkaW5nLXNpbXBsZS5odG1sCkBAIC0zMSw4MCArNzQsNDkgQEAg
ZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXBvc2l0aW9uLXdoZW4tY29udGFpbmluZy1i
bG9jay1pcy1ub3QtaW4tdGhlLWZvcm0KIGZhc3QvYmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1y
aWdodC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVsYXRpdmUtc2libGluZ3MuaHRtbAog
ZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1p
bi10aGUtZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFy
Z2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Lmh0bWwKLWZhc3QvYmxv
Y2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRl
eHQyLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1sZWZ0LXdoZW4tY29udGFpbmVy
LWhhcy1wYWRkaW5nLW1hcmdpbi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmct
Ym94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLXdpdGgtdG9wLW9mZnNldC5odG1sCi1mYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLmh0bWwK
LWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtcmlnaHQtc2ltcGxlLmh0bWwKLWZh
c3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1uZXctZm9ybWF0dGluZy1jb250
ZXh0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1yZWxhdGl2
ZS1wb3NpdGlvbmVkLXNpYmxpbmcuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5n
LWxlZnQtcmlnaHQtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1s
ZWZ0LXJpZ2h0LXdpdGgtYWxsLW1hcmdpbnMuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0aW5nLWxlZnRzLWFuZC1yaWdodHMtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1pbi1ib2R5Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1tdWx0aXBsZS1saW5lcy5odG1sCi1mYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1hcmdpbi5o
dG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5m
bG93LXdpdGgtbWFyZ2luLXdpdGgtbm8tYm9yZGVyLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdGluZy1sZWZ0LWFuZC1yaWdodC13aXRoLWNsZWFyYW5jZS5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtYW5kLXNpYmxpbmdzLXdpdGgtbWFyZ2lucy5odG1sCi1mYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtY2xlYXJhbmNlLmh0bWwKLWZhc3Qv
YmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1sZWZ0Lmh0bWwKLWZhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1yaWdodC5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1tdWx0aXBsZS1yb290cy5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci13aXRoLW1hcmdpbnMuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L2luZmxvdy1taW4tbWF4LXdpZHRoLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9hYnNvbHV0ZS1wb3NpdGlvbi1taW4tbWF4LXdpZHRoLmh0bWwKLWZhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdC1taW4tbWF4LXdpZHRoLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9pbmZs
b3ctbWluLW1heC1oZWlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBv
c2l0aW9uLW1pbi1tYXgtaGVpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1t
aW4tbWF4LWhlaWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWluLW1heC1oZWlnaHQt
cGVyY2VudGFnZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1u
b24tYXV0by1odG1sLWhlaWdodC1xdWlyay5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9k
eS1oZWlnaHQtd2l0aC1ub24tYXV0by1odG1sLWhlaWdodC1xdWlyazIuaHRtbAotZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1xdWlyay5odG1s
Ci1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1hdXRvLWh0bWwtaGVpZ2h0
LXF1aXJrMi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvY29sbGFwc2VkLW1hcmdpbi13aXRo
LW1pbi1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDIuaHRtbAorZmFzdC9ibG9jay9i
YXNpYy8wMDMuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDYuaHRtbAorZmFzdC9ibG9jay9iYXNp
Yy8wMDcuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDguaHRtbAorZmFzdC9ibG9jay9iYXNpYy8w
MDkuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMTIuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9jaGls
ZC1ibG9jay1sZXZlbC1ib3gtd2l0aC1oZWlnaHQtcGVyY2VudC5odG1sCitmYXN0L2Jsb2NrL2Jh
c2ljL2hlaWdodC1wZXJjZW50YWdlLXNpbXBsZS5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL2lubGlu
ZS1jb250ZW50LXdpdGgtZmxvYXRpbmctaW1hZ2UuaHRtbAogZmFzdC9ibG9jay9iYXNpYy9pbmxp
bmUtY29udGVudC13aXRoLWZsb2F0aW5nLWltYWdlczIuaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxl
LWludHJ1ZGluZy1mbG9hdDEuaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9h
dHMyLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMy5odG1sCi1mYXN0
L2lubGluZS9zaW1wbGUtaW5saW5lLWJsb2NrLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1zaHJp
bmstdG8tZml0LWlubGluZS1ibG9jay5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWlu
Zmxvdy1wb3NpdGlvbmVkLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQt
b2YtZmxvdy1kZXNjZW5kYW50Lmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1v
dXQtb2YtZmxvdy1kZXNjZW5kYW50Mi5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13
aXRoLXBhZGRpbmctbGVmdC1yaWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13
aXRoLWJvcmRlci1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdp
dGgtbWFyZ2luLWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtYW5k
LW5lc3RlZC1mb3JtYXR0aW5nLXJvb3Qtd2l0aC1tYXJnaW4tbGVmdC1yaWdodC5odG1sCi1mYXN0
L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWltYWdlLXNpbXBsZS5odG1sCi1mYXN0L2lubGlu
ZS9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0LWFuZC1tYXJnaW4uaHRtbAotZmFzdC9ibG9jay9i
YXNpYy9oZWlnaHQtcGVyY2VudGFnZS1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9iYXNpYy9jaGls
ZC1ibG9jay1sZXZlbC1ib3gtd2l0aC1oZWlnaHQtcGVyY2VudC5odG1sCitmYXN0L2Jsb2NrL2Jh
c2ljL3BlcmNlbnQtaGVpZ2h0LWluc2lkZS1hbm9ueW1vdXMtYmxvY2suaHRtbAogZmFzdC9ibG9j
ay9iYXNpYy9xdWlyay1tb2RlLXBlcmNlbnQtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMv
cXVpcmstcGVyY2VudC1oZWlnaHQtZ3JhbmRjaGlsZC5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAw
MS5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwNy5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwOC5o
dG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwOS5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAxMy5odG1s
CiBmYXN0L2Jsb2NrL2Zsb2F0LzAxOS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwMi5odG1sCi1m
YXN0L2Jsb2NrL2Jhc2ljLzAwMy5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwNi5odG1sCi1mYXN0
L2Jsb2NrL2Jhc2ljLzAwNy5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwOC5odG1sCi1mYXN0L2Js
b2NrL2Jhc2ljLzAwOS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAxMi5odG1sCitmYXN0L2Jsb2Nr
L2Zsb2F0L25lZ2F0aXZlLW1hcmdpbi1jbGVhci5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L292ZXJo
YW5naW5nLWFmdGVyLWhlaWdodC1kZWNyZWFzZS1vZmZzZXRzLmh0bWwKK2Zhc3QvYmxvY2svZmxv
YXQvb3ZlcmhhbmdpbmctYWZ0ZXItaGVpZ2h0LWRlY3JlYXNlLmh0bWwKK2Zhc3QvYmxvY2svZmxv
YXQvb3ZlcmxhcHBpbmctZmxvYXRzLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWwKK2Zhc3QvYmxv
Y2svZmxvYXQvcHJldmlvdXMtc2libGluZy1hYnNwb3MtMDAyLmh0bWwKK2Zhc3QvYmxvY2svZmxv
YXQvcmVsYXRpdmUtcGFpbnRlZC10d2ljZS5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2F2b2lkYW5j
ZS1ydGwuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9ici13aXRoLWNsZWFyLmh0bWwKK2Zhc3QvYmxv
Y2svZmxvYXQvY2xhbXBlZC1yaWdodC1mbG9hdC5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0
LW9uLXplcm8taGVpZ2h0LWxpbmUuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdC1vdmVyaGFu
Z3Mtcm9vdC5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LXdpdGgtYW5vbnltb3VzLXByZXZp
b3VzLXNpYmxpbmcuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdHMtbm90LWNsZWFyZWQtY3Jh
c2guaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDAyLmh0bWwKIGZhc3QvYmxvY2sv
bWFyZ2luLWNvbGxhcHNlLzAwMy5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wMjYu
aHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI3Lmh0bWwKK2Zhc3QvYmxvY2svbWFy
Z2luLWNvbGxhcHNlLzAyOC5odG1sCitmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wMjkuaHRt
bAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDM1Lmh0bWwKIGZhc3QvYmxvY2svbWFyZ2lu
LWNvbGxhcHNlLzAzOS5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wNDAuaHRtbAor
ZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wMDMuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8w
MDQuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wMDUuaHRtbAogZmFzdC9ibG9jay9wb3Np
dGlvbmluZy8wMDYuaHRtbApAQCAtMTQ1LDggKzE1NywyOSBAQCBmYXN0L2Jsb2NrL3Bvc2l0aW9u
aW5nLzA0Ni5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA0OS5odG1sCiBmYXN0L2Jsb2Nr
L3Bvc2l0aW9uaW5nLzA1Mi5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA1NC5odG1sCitm
YXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA2MC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2Fi
c29sdXRlLXBvc2l0aW9uaW5nLW5vLXNjcm9sbGJhci5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9u
aW5nL2NoYW5nZS1jb250YWluaW5nLWJsb2NrLWZvci1hYnNvbHV0ZS1wb3NpdGlvbmVkLmh0bWwK
K2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY2hhbmdlLWNvbnRhaW5pbmctYmxvY2stZm9yLWZpeGVk
LXBvc2l0aW9uZWQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9jb21wbGV4LXBvc2l0aW9u
ZWQtbW92ZW1lbnQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1wb3NpdGlvbi1k
ZXRhY2hlZC1mcmFtZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2ZpeGVkLXBvc2l0aW9u
LXN0YWNraW5nLWNvbnRleHQyLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9z
aXRpb24tc3RhY2tpbmctY29udGV4dC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpZGlu
Zy1pbnNpZGUtcmVscG9zaXRpb25lZC1pbmxpbmUuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmlu
Zy9pbnNlcnQtcG9zaXRpb25lZC1pbi1hbm9ueW1vdXMtY3Jhc2guaHRtbAorZmFzdC9ibG9jay9w
b3NpdGlvbmluZy9sZWZ0bWFyZ2luLXRvcG1hcmdpbi5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9u
aW5nL25lZ2F0aXZlLXJlbC1wb3NpdGlvbi5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2Fi
cy1pbnNpZGUtaW5saW5lLXJlbC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3ByZWYtd2lk
dGgtY2hhbmdlLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvcmVsYXRpdmUtb3ZlcmZsb3ct
cmVwbGFjZWQtZmxvYXQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9zdGF0aWMtaW5saW5l
LXBvc2l0aW9uLWR5bmFtaWMuaHRtbAogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9iYXNpYy1m
bG9hdC1pbnRydXNpb24uaHRtbAogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9jcmFzaC1vbi1m
aXJzdC1saW5lLWNoYW5nZS5odG1sCitmYXN0L2Jsb2NrL2xpbmVib3hjb250YWluL3JlcGxhY2Vk
Lmh0bWwKK2Zhc3QvYmxvY2svY29sbGFwc2UtYW5vbi1ibG9jay13aXRoLWZsb2F0LXNpYmxpbmdz
LW9ubHkuaHRtbAorZmFzdC9ibG9jay9jcmFzaC13aGVuLWFub255bW91cy1ibG9ja3MtYXJlLW1l
cmdlZC13aXRoLXNpbXBsZS1saW5lLWxheW91dC5odG1sCitmYXN0L2Jsb2NrL2NyYXNoLXdoZW4t
c3VidHJlZS1pcy1zdGlsbC1hdHRhY2hlZC5odG1sCitmYXN0L2Jsb2NrL2dlb21ldHJ5LW1hcC1h
c3NlcnRpb24td2l0aC10YWxsLWNvbnRlbnQuaHRtbAogZmFzdC9ib3JkZXJzLzBweC1ib3JkZXJz
LW5vLWxpbmUtaGVpZ2h0Lmh0bWwKIGZhc3QvYm9yZGVycy8wcHgtYm9yZGVycy5odG1sCiBmYXN0
L2JvcmRlcnMvYmxvY2stbWFzay1vdmVybGF5LWltYWdlLW91dHNldC5odG1sCkBAIC0xNTYsMTEg
KzE4OSw4IEBAIGZhc3QvYm9yZGVycy9ib3JkZXItaW1hZ2Utc2NhbGVkLWdyYWRpZW50Lmh0bWwK
IGZhc3QvYm9yZGVycy9ib3JkZXItaW1hZ2Utc2xpY2Utb21pc3Npb24uaHRtbAogZmFzdC9ib3Jk
ZXJzL2JvcmRlci1sZWZ0LXJpZ2h0LXNhbWUtYm90dG9tLWRpZmZlcmVudC1jb2xvci5odG1sCiBm
YXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRhc2hlZC1hdC1hbGwuaHRtbAotZmFzdC9ib3Jk
ZXJzL2JvcmRlci1wYWludGluZy1kYXNoZWQuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWlu
dGluZy1kb3R0ZWQtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctZG90
dGVkLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctZG91YmxlLWF0LWFsbC5odG1s
Ci1mYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdWJsZS5odG1sCiBmYXN0L2JvcmRlcnMv
Ym9yZGVyLXBhaW50aW5nLWdyb292ZS1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1w
YWludGluZy1pbnNldC1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1p
bnNldC5odG1sCkBAIC0xNjksNCArMTk5LDg2IEBAIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRp
bmctb3V0c2V0Lmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctcmlkZ2UtYXQtYWxs
Lmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctc29saWQtYXQtYWxsLmh0bWwKIGZh
c3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctc29saWQuaHRtbAotZmFzdC9pbmxpbmUtYmxvY2sv
MDA0Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLWluc2V0LW91dHNldC5odG1sCitm
YXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1vbi1odG1sLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3Jk
ZXItcmFkaXVzLW9uLXN1YnBpeGVsLXBvc2l0aW9uLW5vbi1oaWRwaS5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyLXJhZGl1cy1wZXJjZW50Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVz
LXZhbGlkLWJvcmRlci1jbGlwcGluZy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy13
aWRlLWJvcmRlci0wMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy13aXRoLWJveC1z
aGFkb3ctMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtd2l0aC1ib3gtc2hhZG93
Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItc2hhZG93LWxhcmdlLXJhZGl1cy5odG1sCitmYXN0
L2JvcmRlcnMvYm9yZGVyUmFkaXVzQWxsU3R5bGVzQWxsQ29ybmVycy5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyUmFkaXVzQXJjczAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEYXNo
ZWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRGFzaGVkMDIuaHRtbAorZmFzdC9i
b3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRp
dXNEb3R0ZWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG90dGVkMDIuaHRtbAor
ZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3Jk
ZXJSYWRpdXNEb3VibGUwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDIu
aHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTAzLmh0bWwKK2Zhc3QvYm9yZGVy
cy9ib3JkZXJSYWRpdXNHcm9vdmUwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzR3Jv
b3ZlMDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0luc2V0MDEuaHRtbAorZmFzdC9i
b3JkZXJzL2JvcmRlclJhZGl1c0ludmFsaWRDb2xvci5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVy
UmFkaXVzT3V0c2V0MDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1JpZGdlMDEuaHRt
bAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDEuaHRtbAorZmFzdC9ib3JkZXJzL2Jv
cmRlclJhZGl1c1NvbGlkMDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDMu
aHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDQuaHRtbAorZmFzdC9ib3JkZXJz
L2Rhc2hlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3JkZXJzL2Rv
dHRlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3JkZXJzL2RvdWJs
ZS0xcHgtYm9yZGVyLWFzc2VydC5odG1sCitmYXN0L2JvcmRlcnMvZW1wdHktZHJhd3JlY3QtYXNz
ZXJ0LWFmdGVyLXBpeGVsc25hcC5odG1sCitmYXN0L2JvcmRlcnMvZW1wdHktb3V0bGluZS1ib3Jk
ZXItYXNzZXJ0Lmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS0zeC1pbnB1dC1oYWlybGluZS1ib3Jk
ZXIuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRlci1jbGlwcGluZy1yaWdodC1hZnRlci1t
b3ZlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcGFpbnRpbmctZ3Jvb3ZlLmh0bWwK
K2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcGFpbnRpbmctcmlkZ2UuaHRtbAorZmFzdC9ib3Jk
ZXJzL2hpZHBpLWJvcmRlci1yYWRpdXMtb3V0ZXItYm9yZGVyLWdvZXMtcmVjdGFuZ2xlLmh0bWwK
K2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcmFkaXVzLXdpdGgtc3VicGl4ZWwtbWFyZ2luLW5v
dC1yZW5kZXJhYmxlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItd2lkdGgtZmxvb3Jp
bmcuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLW91dGxpbmUtaGFpcmxpbmUtcGFpbnRpbmcuaHRt
bAorZmFzdC9ib3JkZXJzL2hpZHBpLW91dGxpbmUtb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAor
ZmFzdC9ib3JkZXJzL2hpZHBpLXJvdW5kZWQtYm9yZGVyLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0
bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1zaW1wbGUtaGFpcmxpbmUtYm9yZGVyLXBhaW50aW5nLmh0
bWwKK2Zhc3QvYm9yZGVycy9taXhlZC1ib3JkZXItc3R5bGUyLmh0bWwKK2Zhc3QvYm9yZGVycy9u
ZWdhdGl2ZS1ib3JkZXItd2lkdGguaHRtbAorZmFzdC9ib3JkZXJzL291dGxpbmUtb2Zmc2V0LW1p
bi1hc3NlcnQuaHRtbAorZmFzdC9ib3JkZXJzL291dGxpbmUtb2Zmc2V0LW92ZXJmbG93Lmh0bWwK
K2Zhc3QvYm9yZGVycy93ZWJraXQtYm9yZGVyLXJhZGl1cy5odG1sCitmYXN0L2lubGluZS9hYnNv
bHV0ZS1wb3NpdGlvbmVkLWJsb2NrLWluLWNlbnRyZWQtYmxvY2suaHRtbAorZmFzdC9pbmxpbmUv
YWJzb2x1dGUtcG9zaXRpb25lZC1pbmxpbmUtaW4tY2VudHJlZC1ibG9jay5odG1sCitmYXN0L2lu
bGluZS9hbm9ueW1vdXMtYmxvY2std2l0aC1lbXB0eS1pbmxpbmUuaHRtbAorZmFzdC9pbmxpbmUv
aGlkcGktb3V0bGluZS1hdXRvLW5lZ2F0aXZlLW9mZnNldC13aXRoLWJvcmRlci1yYWRpdXMuaHRt
bAorZmFzdC9pbmxpbmUvaGlkcGktb3V0bGluZS1hdXRvLXdpdGgtZnJhY3Rpb25hbC1yYWRpdXMu
aHRtbAorZmFzdC9pbmxpbmUvaGlkcGktb3V0bGluZS1hdXRvLXdpdGgtb25lLWZvY3VzcmluZy1y
ZWN0Lmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXBpeGVsLWdhcC1iZXR3ZWVuLWFkamFjZW50LXNl
bGVjdGlvbi1pbmxpbmVzLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdC1pbmxpbmUtb24t
c3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktc2VsZWN0aW9uLWdhcC1v
bi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2lubGluZS9oaWRwaS1zZWxlY3Rpb24tZ2Fw
LW92ZXJsYXBzLWlubGluZS1zZWxlY3Rpb24uaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWJvZHkt
d2l0aC1zY3JvbGxiYXItY3Jhc2guaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNoaWxkLWhlaWdo
dC13aWR0aC1jYWxjLWNyYXNoLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgt
Ym9yZGVyLWxlZnQtcmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1m
bG9hdC1hbmQtbWFyZ2luLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtaW1h
Z2Utc2ltcGxlLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtbWFyZ2luLWxl
ZnQtcmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1wYWRkaW5nLWxl
ZnQtcmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLW1hcnF1ZWUtY3Jhc2guaHRtbAorZmFz
dC9pbmxpbmUvaW5saW5lLXBhZGRpbmctZGlzYWJsZXMtdGV4dC1xdWlyay5odG1sCitmYXN0L2lu
bGluZS9uZXctZmxvYXQtbmVlZHMtbGF5b3V0LXdoZW4tbGluZS1pcy1kaXJ0eS5odG1sCitmYXN0
L2lubGluZS9wZXJjZW50YWdlLW1hcmdpbnMuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWlubGlu
ZS1ibG9jay5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWluZmxvdy1wb3NpdGlvbmVk
Lmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5k
YW50Mi5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZsb3ctZGVz
Y2VuZGFudC5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0MS5odG1sCitm
YXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czIuaHRtbAorZmFzdC9pbmxpbmUvc2lt
cGxlLWludHJ1ZGluZy1mbG9hdHMzLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1saW5lLWxheW91
dC0xNmJpdC1jb250ZW50Lmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1zaHJpbmstdG8tZml0LWlu
bGluZS1ibG9jay5odG1sCitmYXN0L2lubGluZS9za2lwcGVkLXdoaXRlc3BhY2UtYm91bmRpbmdC
b3guaHRtbAorZmFzdC9pbmxpbmUvc2tpcHBlZC13aGl0ZXNwYWNlLWNsaWVudC1yZWN0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358138</attachid>
            <date>2018-12-29 09:13:08 -0800</date>
            <delta_ts>2018-12-29 18:12:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20181229091303.patch</filename>
            <type>text/plain</type>
            <size>113323</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVjZmVlMWQyYzlmNjE5
N2RmNzU4MjA5NjQwMTM1Yzg0MjM4MjhmMi4uN2VlOTY0ZTZjOGU2ZGI2MTk5ZGUxMmYyODcyNzZi
YzVmMjI5NjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxOC0xMi0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAg
ICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTWluSGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9u
Q29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1h
cmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJl
c3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9MYXlv
dXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6aGFzRm9y
bWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTWFyZ2luVHlwZXMuaDoKKyAg
ICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpmb3Jt
YXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGlt
YXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JG
bG9hdENsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVkVmVydGljYWxQb3Np
dGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2lu
QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpz
aG91bGRJZ25vcmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRQb3NpdGl2
ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6
OnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6
Y2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc0JvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Omhhc1BhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3Jk
ZXJCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3JkZXJBZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmdCZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpoYXNQYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojplc3RhYmxpc2hlc0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVh
cmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVy
Q29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luc0NvbGxhcHNlVGhy
b3VnaCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkUG9zaXRpdmVBbmROZWdh
dGl2ZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1hcmdpblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjp1
cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6
cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFm
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnZlcnRpY2FsKToKKyAgICAgICAgKiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpoYXNDbGVhcmFu
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRFc3RpbWF0ZWRN
YXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojplc3RpbWF0ZWRN
YXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRI
YXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjppbnZhbGlkYXRl
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpyZWN0
V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRp
Y2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3Bs
aXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVGaW5hbFJ1bnMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cG9zdFByb2Nlc3NJbmxp
bmVSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hp
bGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6aW5saW5lRm9ybWF0dGluZ1N0YXRlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKToKKwogMjAx
OC0xMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0hhcmZCdXp6XSBXaWR0aCBub3QgY29ycmVjdGx5IHJlcG9ydGVkIGFzIDAgZm9yIHpl
cm8gZm9udCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGU3ZDkzNGFkMjdmMWJmYTkxMjMxZTFkODZk
ZjBiNzQxOWQ4MzhiOTAuLmU2ZmIyODRjYWY3N2UxZWJmZmZhNzVkMGJjODU4ZDgzY2IxY2Q3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBsYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCi1sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFy
Z2luQ29sbGFwc2UuY3BwCitsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luLmNwcAog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlvbi5jcHAKIGxheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5Qm94LmNwcAogbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZGU0NTJjMDYyYTZiYTI2ZjQ3MzI3MDc3ZmMxZjk5YWNmY2ZkOGNlYi4uYmQzZjc3MDg3Yjg5
YWIyOTdkZWRjNmI5NmY4MzkyMGY5MjRhYmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg4Miw3ICs1ODgyLDcgQEAKIAkJ
MTE1Q0ZBODEyMDhCOEVEQTAwMUU2OTkxIC8qIEZsb2F0aW5nU3RhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmxvYXRpbmdTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTExNUNGQTg0MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmxvYXRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEx
NUNGQTg1MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmxvYXRpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMTE1Q0ZBODkyMDhCOTIxQTAwMUU2OTkxIC8qIEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBCbG9ja01hcmdpbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9ja01hcmdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTExNUNGQTk1MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGF5b3V0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEx
NUNGQTk2MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGF5b3V0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTE1Rjc4MDUy
MDlDQkNCRDAwNzM5QzEzIC8qIEludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnZhbGlk
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjEwLDcgKzE2MjEwLDcg
QEAKIAkJCQkxMTVDRkE3ODIwOEI4RDlEMDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0aW5nU3RhdGUu
aCAqLywKIAkJCQkxMTIzQUZEQTIwOUFCQjIwMDA3MzZBQ0MgLyogQmxvY2tJbnZhbGlkYXRpb24u
Y3BwICovLAogCQkJCTExMjNBRkQ5MjA5QUJCMjAwMDczNkFDQyAvKiBCbG9ja0ludmFsaWRhdGlv
bi5oICovLAotCQkJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBCbG9ja01hcmdpbkNvbGxh
cHNlLmNwcCAqLywKKwkJCQkxMTVDRkE4OTIwOEI5MjFBMDAxRTY5OTEgLyogQmxvY2tNYXJnaW4u
Y3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBibG9ja2Zvcm1hdHRpbmc7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKaW5kZXggYjRmNDRhODI1ZWYzYWE1OGFkMmIzNmEwZTJhZDIxNDc1ZjJl
ODdkNS4uZmExZDBhODBiYzA5MmMxOTA5YTE2MzM2MWE0MjE5NzZiZmNkOTBmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0
VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4CiAgICAgICAgIGlmIChjb250YWlu
aW5nQmxvY2stPmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNEb2N1bWVudEJveCgp
KSB7CiAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJv
eEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKTsKIAotICAgICAgICAgICAgYXV0byB2ZXJ0
aWNhbE1hcmdpbiA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xs
YXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29udGFpbmluZ0Jsb2NrKTsK
KyAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25D
b2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29udGFpbmluZ0Jsb2Nr
KTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxQYWRkaW5nID0gZGlzcGxheUJveC5wYWRkaW5n
VG9wKCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7
CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQm9yZGVyID0gZGlzcGxheUJveC5ib3JkZXJUb3Ao
KSArIGRpc3BsYXlCb3guYm9yZGVyQm90dG9tKCk7CiAgICAgICAgICAgICBib2R5QW5kRG9jdW1l
bnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgKz0gdmVydGljYWxNYXJnaW4uYmVmb3Jl
ICsgdmVydGljYWxNYXJnaW4uYWZ0ZXIgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2ZXJ0aWNhbEJvcmRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggMDQ3NzVhYjJiYjY2OGZjMjI2
YTNmYzEzMjQwNDJkYmNmMTJmYjMzZi4uMjg0NDZjZjlhZGQzZTc5ODY5ODYxYzljYzc5YzY5ODVi
Y2Q5ZjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAgLTc1LDYgKzc1LDcg
QEAgcHVibGljOgogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGVGb3JCb3go
Y29uc3QgQm94JikgY29uc3Q7CiAgICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1h
dHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdDsKKyAgICBib29sIGhh
c0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdCB7IHJldHVy
biBtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290KTsgfQogICAgIEZv
cm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5l
ZWRlZChjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KTsKIAogICAgIERpc3BsYXk6OkJveCYgZGlz
cGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9NYXJnaW5UeXBlcy5oCmluZGV4IDg1ZmZlZDY1OTY4Njc4OTNmN2Q2ZTdkZjU4NjUy
NGQ2ODdjMzE0OTcuLjQ0OWFiNGY2MDE5ZmEyNDkwZDNhYmRmZjQ1NmYxNzM2NTA2MTgyYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBAIC0zOSwxMCArMzksMTEgQEAgc3RydWN0
IFZlcnRpY2FsTWFyZ2luIHsKICAgICB9OwogICAgIENvbXB1dGVkVmFsdWVzIHVzZWRWYWx1ZXMo
KSBjb25zdDsKICAgICBDb21wdXRlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1ZXMoKSBjb25zdCB7
IHJldHVybiBtX25vbkNvbGxhcHNlZDsgfQotICAgIAorCiAgICAgc3RydWN0IENvbGxhcHNlZFZh
bHVlcyB7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsKICAgICAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gYWZ0ZXI7CisgICAgICAgIGJvb2wgaXNDb2xsYXBzZWRUaHJvdWdo
IHsgZmFsc2UgfTsKICAgICB9OwogICAgIE9wdGlvbmFsPENvbGxhcHNlZFZhbHVlcz4gY29sbGFw
c2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWQ7IH0KICAgICB2b2lkIHNldENv
bGxhcHNlZFZhbHVlcyhDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVzKSB7IG1fY29sbGFw
c2VkID0gY29sbGFwc2VkVmFsdWVzOyB9CkBAIC01MSw2ICs1Miw3IEBAIHN0cnVjdCBWZXJ0aWNh
bE1hcmdpbiB7CiAKICAgICBWZXJ0aWNhbE1hcmdpbigpID0gZGVmYXVsdDsKICAgICB+VmVydGlj
YWxNYXJnaW4oKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgQ29tcHV0ZWRWYWx1ZXMgbV9u
b25Db2xsYXBzZWQ7CiAgICAgT3B0aW9uYWw8Q29sbGFwc2VkVmFsdWVzPiBtX2NvbGxhcHNlZDsK
QEAgLTcwLDYgKzcyLDEwIEBAIHN0cnVjdCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJn
aW4gewogICAgIFZhbHVlcyBhZnRlcjsKIH07CiAKK3N0cnVjdCBFc3RpbWF0ZWRNYXJnaW5CZWZv
cmUgeworICAgIExheW91dFVuaXQgY29tcHV0ZWRWYWx1ZTsKK307CisKIGlubGluZSBWZXJ0aWNh
bE1hcmdpbjo6VmVydGljYWxNYXJnaW4oVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIG5v
bkNvbGxhcHNlZCwgT3B0aW9uYWw8VmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcz4gY29s
bGFwc2VkKQogICAgIDogbV9ub25Db2xsYXBzZWQobm9uQ29sbGFwc2VkKQogICAgICwgbV9jb2xs
YXBzZWQoY29sbGFwc2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNDI5
YzBhOTgxMWE0OGRiZjQ1NTFhNGJlOTIxMzBmMjUwMTQzYTM4Yi4uMDZmYjcyMTkyMDVjNTcxMzg5
OTc2MTIyNmExOTFjYjhiNTRlMzNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC0xODYsMTIgKzE4NiwxNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIAogdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJv
eCYgbGF5b3V0Qm94KSBjb25zdAogewotICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5
b3V0U3RhdGUoKTsKLSAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9IEdlb21ldHJ5Ojpl
c3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0byBl
c3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBNYXJnaW46OmVzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSgpLCBsYXlvdXRCb3gpOworICAgIGJsb2NrRm9ybWF0dGluZ1N0YXRlKCkuc2V0SGFz
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCk7CiAKLSAgICBhdXRvJiBkaXNwbGF5Qm94
ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1
dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5
b3V0Qm94KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgZGlzcGxheUJveC5zZXRFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUoZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTsKLSAgICBkaXNwbGF5Qm94Lm1v
dmVWZXJ0aWNhbGx5KGVzdGltYXRlZE1hcmdpbkJlZm9yZSk7CisjZW5kaWYKKyAgICBkaXNwbGF5
Qm94LnNldFRvcChhZGp1c3RlZFZlcnRpY2FsUG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmco
bGF5b3V0Qm94LCBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUuY29tcHV0ZWRWYWx1ZSkpOwogfQogCiB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmVG
b3JBbmNlc3RvcnMoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CkBAIC0yMDgsMTIgKzIxMCwx
MSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5C
ZWZvcmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JgogICAgIC8vIFNvIHdoZW4gd2UgZ2V0IHRvIHRo
ZSBwb2ludCB3aGVyZSB3ZSBpbnRlcnNlY3QgdGhlIGJveCB3aXRoIHRoZSBmbG9hdCB0byBkZWNp
ZGUgaWYgdGhlIGJveCBuZWVkcyB0byBtb3ZlLCB3ZSBkb24ndCB5ZXQgaGF2ZSB0aGUgZmluYWwg
dmVydGljYWwgcG9zaXRpb24uCiAgICAgLy8KICAgICAvLyBUaGUgaWRlYSBoZXJlIGlzIHRoYXQg
YXMgbG9uZyBhcyB3ZSBkb24ndCBjcm9zcyB0aGUgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGJv
dW5kYXJ5LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwcmUtY29tcHV0ZSB0aGUgZmluYWwgdG9wIG1h
cmdpbi4KLSAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAg
YXV0byYgZm9ybWF0dGluZ1N0YXRlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIGZv
ciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9y
ICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2Vz
dG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCphbmNlc3Rvcik7CiAg
ICAgICAgIC8vIEZJWE1FOiB3aXRoIGluY3JlbWVudGFsIGxheW91dCwgd2UgbWlnaHQgYWN0dWFs
bHkgaGF2ZSBhIHZhbGlkIChub24tZXN0aW1hdGVkKSBtYXJnaW4gdG9wIGFzIHdlbGwuCi0gICAg
ICAgIGlmIChkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQorICAgICAgICBpZiAo
Zm9ybWF0dGluZ1N0YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
KmFuY2VzdG9yKTsKQEAgLTIzOCwxMCArMjM5LDEwIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVk
CiB9CiAKICNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgYm9vbCBoYXNQcmVjb21wdXRlZE1hcmdpbkJl
Zm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQorc3RhdGljIGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQmxvY2tGb3Jt
YXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAg
ICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgYW5j
ZXN0b3IgJiYgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsg
YW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgaWYgKGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKS5lc3RpbWF0ZWRNYXJn
aW5CZWZvcmUoKSkKKyAgICAgICAgaWYgKGZvcm1hdHRpbmdTdGF0ZS5oYXNFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUoKmFuY2VzdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMjUzLDcgKzI1NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBm
bG9hCiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAg
IEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7Ci0gICAgQVNTRVJUKGhh
c1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBB
U1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwg
bGF5b3V0Qm94KSk7CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxh
eUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIC8vIDguMy4xIENvbGxhcHNpbmcgbWFy
Z2lucwpAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiAgICAgQVNT
RVJUKGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAg
QVNTRVJUKCFsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAgICAgQVNTRVJUKCFs
YXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKTsKLSAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJn
aW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VSVChoYXNQcmVjb21w
dXRlZE1hcmdpbkJlZm9yZShibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlvdXRCb3gpKTsKIAog
ICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjkyLDcgKzI5Myw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nCiAg
ICAgLy8gRm9yIGZvcm1hdHRpbmcgcm9vdHMsIHdlIGFscmVhZHkgcHJlY29tcHV0ZWQgZmluYWwg
cG9zaXRpb24uCiAgICAgaWYgKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4
dCgpKQogICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzKGxh
eW91dEJveCk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUo
YmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBpZiAoYXV0byB2ZXJ0
aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0
aW9uV2l0aENsZWFyYW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENs
ZWFyYW5jZSk7CkBAIC0zNzIsMTIgKzM3MywxNSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAg
ICAgfQogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5i
bG9ja0Zvcm1hdHRpbmdTdGF0ZSgpOworICAgIGlmIChmb3JtYXR0aW5nU3RhdGUuaGFzRXN0aW1h
dGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCkpIHsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmNs
ZWFySGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCk7CisgICAgICAgIEFTU0VSVChs
YXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuZXN0aW1hdGVkTWFy
Z2luQmVmb3JlKCktPmNvbXB1dGVkVmFsdWUgPT0gaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2Vk
VmFsdWVzKCkuYmVmb3JlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlzcGxheUJveC5zZXRUb3Ao
YWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGxheW91dEJveCwg
aGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKSk7CisKICAgICBkaXNw
bGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7CiAgICAg
ZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRNYXJnaW4ubWFyZ2luKTsKLQot
ICAgIC8vIElmIHRoaXMgYm94IGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgYnkgdGhlIGVzdGltYXRl
ZCB2ZXJ0aWNhbCBtYXJnaW4sIG5vIG5lZWQgdG8gbW92ZSBpdCBhZ2Fpbi4KLSAgICBpZiAobGF5
b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgIWRpc3BsYXlCb3guZXN0aW1hdGVkTWFy
Z2luQmVmb3JlKCkpCi0gICAgICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkoaGVpZ2h0QW5k
TWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKTsKIH0KIAogRm9ybWF0dGluZ0NvbnRl
eHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Omlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKQEAgLTQ0NCw2ICs0NDgsMzUgQEAgRm9y
bWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Omluc3RyaW5zaWMKICAgICByZXR1cm4gaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHM7CiB9CiAKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6YWRqdXN0ZWRWZXJ0
aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBM
YXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgY29uc3QKK3sKKyAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9
IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byogY3VycmVudExheW91dEJveCA9ICZsYXlv
dXRCb3g7CisgICAgd2hpbGUgKGN1cnJlbnRMYXlvdXRCb3gpIHsKKyAgICAgICAgaWYgKCFjdXJy
ZW50TGF5b3V0Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAqY3VycmVudExheW91dEJv
eC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICghTWFyZ2luOjptYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
ICpjdXJyZW50TGF5b3V0Qm94KSkgeworICAgICAgICAgICAgYXV0byYgcHJldmlvdXNEaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChwcmV2aW91c0luRmxvd1Np
YmxpbmcpOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzRGlzcGxheUJveC5yZWN0V2l0aE1h
cmdpbigpLmJvdHRvbSgpICsgbWFyZ2luQmVmb3JlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIHByZXZpb3VzSW5G
bG93U2libGluZykpIHsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3VzRGlzcGxheUJveCA9IGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJbkZsb3dTaWJsaW5nKTsK
KyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3BsYXlCb3guYm90dG9tKCkgKyBtYXJnaW5C
ZWZvcmU7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudExheW91dEJveCA9ICZwcmV2aW91c0lu
Rmxvd1NpYmxpbmc7CisgICAgfQorCisgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94
VG9wID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpKS5jb250ZW50Qm94VG9wKCk7CisgICAgLy8gQ2xlYXJhbmNlIG1hcmdpbiBp
cyBhZGp1c3RlZCBsYXRlciB3aGVuIHdlIHBvc2l0aW9uIHRoZSBib3ggdG8gYXZvaWQgZmxvYXRz
LiAKKyAgICBpZiAoTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2lu
QmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpCisgICAgICAgIHx8IE1hcmdpbjo6bWFyZ2lu
QmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKQorICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcDsKKworICAg
IHJldHVybiBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wICsgbWFyZ2luQmVmb3JlOworfQor
CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNjgwNDFkNDkwODU2N2Zi
ODg5MzQwZDZiNTNiN2UzZjIwODJlYzE4MC4uOWE0MTJhZTQwMjY5NWZjZTFiOTU3MzMyYzM2ODU1
MDhlZGYzNDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTUwLDYgKzUwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgbGF5b3V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CisgICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGJsb2NrRm9ybWF0dGluZ1N0YXRlKCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSgp
KTsgfQorCiAgICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRpbmdDb250
ZXh0JiwgY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRD
aGlsZHJlbihjb25zdCBDb250YWluZXImKSBjb25zdDsKIApAQCAtNjcsNiArNjksNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9v
dElmTmVlZGVkKGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgSW5zdHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
YXlvdXRVbml0IGFkanVzdGVkVmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyhj
b25zdCBCb3gmLCBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgY29uc3Q7CiAKICAgICAvLyBUaGlz
IGNsYXNzIGltcGxlbWVudHMgcG9zaXRpb25pbmcgYW5kIHNpemluZyBmb3IgYm94ZXMgcGFydGlj
aXBhdGluZyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICBjbGFzcyBHZW9tZXRy
eSA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkgewpAQCAtNzksNDkgKzgyLDQ3
IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBib29sIGluc3RyaW5zaWNXaWR0aENvbnN0cmFp
bnRzTmVlZENoaWxkcmVuV2lkdGgoY29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBJbnN0cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGVzdGlt
YXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOwotCiAgICAgcHJpdmF0ZToKLSAgICAgICAgLy8gVGhpcyBjbGFzcyBp
bXBsZW1lbnRzIG1hcmdpbiBjb2xsYXBzaW5nIGZvciBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQu
Ci0gICAgICAgIGNsYXNzIE1hcmdpbkNvbGxhcHNlIHsKLSAgICAgICAgcHVibGljOgotICAgICAg
ICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcihj
b25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5k
TWFyZ2luIGluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCA9IHsgfSk7Cisg
ICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZFdpZHRoID0geyB9KTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd1Jl
cGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRp
b25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGggPSB7IH0pOworICAgICAgICBzdGF0aWMgUG9pbnQg
c3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7CisgICAgfTsKIAotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29u
c3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAg
IGNsYXNzIE1hcmdpbiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVmVydGljYWxNYXJn
aW4gdmVydGljYWwoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBw
cml2YXRlOgotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQWZ0
ZXJGcm9tTGFzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAg
ICAgICBzdGF0aWMgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgRXN0aW1hdGVkTWFyZ2luQmVm
b3JlIGVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYp
OworICAgICAgICBzdGF0aWMgdm9pZCB1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IFZlcnRpY2FsTWFyZ2luJiBuZXh0U2libGlu
Z1ZlcnRpY2FsTWFyZ2luKTsKIAotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29tcHV0
ZWROb25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFy
Z2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZv
cmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xs
YXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3Vz
U2libGluZ01hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAg
ICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJlZm9yZUZyb21GaXJz
dENoaWxkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0
aWMgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTGFzdEluRmxvd0NoaWxk
TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFm
dGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2
aW91c1NpYmxpbmcoY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZyhjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0
YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRo
Q2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBz
dGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1h
cmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAg
ICAgICAgfTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBIZWlnaHRBbmRN
YXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0ID0geyB9KTsKLSAg
ICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1
c2VkV2lkdGggPSB7IH0pOwotICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93UmVw
bGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlv
bmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7Ci0gICAgICAgIHN0YXRpYyBQb2ludCBz
dGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKKyAgICBwcml2YXRlOgorICAgICAgICBlbnVtIGNsYXNzIE1hcmdpblR5cGUg
eyBCZWZvcmUsIEFmdGVyIH07CisgICAgICAgIHN0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVy
dGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94JiwgTWFyZ2luVHlwZSk7CisgICAgICAgIHN0YXRpYyBQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBQb3Np
dGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKICAgICB9OwogCiAgICAg
Y2xhc3MgUXVpcmtzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBib29sIG5lZWRzU3Ry
ZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMg
SGVpZ2h0QW5kTWFyZ2luIHN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYsIEhlaWdodEFuZE1hcmdpbik7CisgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4g
c3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgSGVp
Z2h0QW5kTWFyZ2luKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVNYXJnaW5C
ZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSWdub3JlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKICAgICB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCmluZGV4IGVlNDM4NzJlYWI2ZTUwMGJlOGFjNzJiMTVhZjkwMTBiZWViZjgxMDYuLmMy
NzhiYzRiZDUxNjJjYTQ5NjhmNmRlZTlkYzZmYjNiMzY1MDk1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTU3LDEzICs1Nyw5IEBAIEhlaWdo
dEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVw
bGFjZWRIZWlnaHRBbmRNYXJnCiAgICAgICAgIC8vIE9ubHkgY2hpbGRyZW4gaW4gdGhlIG5vcm1h
bCBmbG93IGFyZSB0YWtlbiBpbnRvIGFjY291bnQgKGkuZS4sIGZsb2F0aW5nIGJveGVzIGFuZCBh
YnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgYXJlIGlnbm9yZWQsCiAgICAgICAgIC8vIGFuZCBy
ZWxhdGl2ZWx5IHBvc2l0aW9uZWQgYm94ZXMgYXJlIGNvbnNpZGVyZWQgd2l0aG91dCB0aGVpciBv
ZmZzZXQpLiBOb3RlIHRoYXQgdGhlIGNoaWxkIGJveCBtYXkgYmUgYW4gYW5vbnltb3VzIGJsb2Nr
IGJveC4KIAotICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsK
ICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3gobGF5b3V0Qm94KTsKLQotICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZl
cnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApLAotICAg
ICAgICAgICAgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250
YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwKSB9OyAKLSAgICAgICAgYXV0byBjb2xsYXBzZWRN
YXJnaW4gPSBWZXJ0aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1h
cmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpIH07CisgICAgICAgIGF1dG8gbm9uQ29s
bGFwc2VkTWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IE1h
cmdpbjo6dmVydGljYWwobGF5b3V0U3RhdGUsIGxheW91dEJveCkuY29sbGFwc2VkVmFsdWVzKCk7
CiAgICAgICAgIGF1dG8gYm9yZGVyQW5kUGFkZGluZ1RvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9w
KCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwogCiAgICAgICAgIGF1dG8g
aGVpZ2h0ID0gdXNlZEhlaWdodCA/IHVzZWRIZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0
VmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKQEAgLTg0
LDE0ICs4MCwxNCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICAvLyAyLiB0aGUg
Ym90dG9tIGVkZ2Ugb2YgdGhlIGJvdHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2Yg
aXRzIGxhc3QgaW4tZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgog
ICAgICAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91
dEJveCkubGFzdEluRmxvd0NoaWxkKCk7CiAgICAgICAgIEFTU0VSVChsYXN0SW5GbG93Q2hpbGQp
OwotICAgICAgICBpZiAoIU1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQ
YXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxhc3RJbkZsb3dDaGlsZCkpIHsKKyAgICAg
ICAgaWYgKCFNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVy
KGxheW91dFN0YXRlLCAqbGFzdEluRmxvd0NoaWxkKSkgewogICAgICAgICAgICAgYXV0byYgbGFz
dEluRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCps
YXN0SW5GbG93Q2hpbGQpOwogICAgICAgICAgICAgcmV0dXJuIHsgbGFzdEluRmxvd0Rpc3BsYXlC
b3guYm90dG9tKCkgKyBsYXN0SW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigpIC0gYm9yZGVy
QW5kUGFkZGluZ1RvcCwgeyBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9IH07
CiAgICAgICAgIH0KIAogICAgICAgICAvLyAzLiB0aGUgYm90dG9tIGJvcmRlciBlZGdlIG9mIHRo
ZSBsYXN0IGluLWZsb3cgY2hpbGQgd2hvc2UgdG9wIG1hcmdpbiBkb2Vzbid0IGNvbGxhcHNlIHdp
dGggdGhlIGVsZW1lbnQncyBib3R0b20gbWFyZ2luCiAgICAgICAgIGF1dG8qIGluRmxvd0NoaWxk
ID0gbGFzdEluRmxvd0NoaWxkOwotICAgICAgICB3aGlsZSAoaW5GbG93Q2hpbGQgJiYgTWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlv
dXRTdGF0ZSwgKmluRmxvd0NoaWxkKSkKKyAgICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1h
cmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0
YXRlLCAqaW5GbG93Q2hpbGQpKQogICAgICAgICAgICAgaW5GbG93Q2hpbGQgPSBpbkZsb3dDaGls
ZC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CiAgICAgICAgIGlmIChpbkZsb3dDaGlsZCkgewog
ICAgICAgICAgICAgYXV0byYgaW5GbG93RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goKmluRmxvd0NoaWxkKTsKQEAgLTEwMyw2ICs5OSw5IEBAIEhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnCiAgICAgfTsKIAogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29t
cHV0ZSgpOworICAgIC8vIEFkanVzdCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0
b20gKGFuZCBjaGVjayBmb3IgY29sbGFwc2luZyB0aHJvdWdoIG1hcmdpbnMgYXMgd2VsbC4KKyAg
ICBpZiAoTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIE1hcmdpbjo6dXBkYXRl
Q29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXlvdXRCb3gucHJldmlvdXNJbkZs
b3dTaWJsaW5nKCksIGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0g
LT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVp
Z2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVz
KCkuYmVmb3JlIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMo
KS5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAg
ICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwpAQCAtMjYxLDcgKzI2MCw3IEBAIEhlaWdodEFuZE1h
cmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFy
Z2luKGNvbnN0IExhCiAgICAgaWYgKCFRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKIAotICAgIGhl
aWdodEFuZE1hcmdpbiA9IFF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGxheW91dFN0YXRlLCBsYXlv
dXRCb3gsIGhlaWdodEFuZE1hcmdpbik7CisgICAgaGVpZ2h0QW5kTWFyZ2luID0gUXVpcmtzOjpz
dHJldGNoZWRJbkZsb3dIZWlnaHQobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVpZ2h0QW5kTWFy
Z2luKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3Ry
ZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3RyZWNo
ZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAi
cHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJlZm9y
ZSA8PCAicHgsICIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYWZ0ZXIg
PDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJu
IGhlaWdodEFuZE1hcmdpbjsKQEAgLTMyMiwzMCArMzIxLDYgQEAgRm9ybWF0dGluZ0NvbnRleHQ6
Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjoKICAgICByZXR1cm4geyBtaW5pbXVtSW50cmluc2ljV2lkdGgsIG1heGltdW1JbnRyaW5z
aWNXaWR0aCB9OwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
LCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tM
ZXZlbEJveCgpKTsKLSAgICAvLyBDYW4ndCBlc3RpbWF0ZSB2ZXJ0aWNhbCBtYXJnaW5zIGZvciBv
dXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIGl0IGZvciBmbG9h
dCBib3hlcykuCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKLSAgICAvLyBDYW4n
dCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnkuCi0gICAgQVNTRVJUKCFs
YXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwotCi0gICAgLy8g
TGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0gICAgcmV0dXJuIE1hcmdp
bkNvbGxhcHNlOjptYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci19Ci0KLUxh
eW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdp
bkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0gICAgLy8g
Q2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cgYm94ZXMgKGFu
ZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgotICAgIEFTU0VS
VChsYXlvdXRCb3guaXNJbkZsb3coKSk7Ci0gICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sgZm9ybWF0
dGluZyBjb250ZXh0IGJvdW5kYXJ5LgotICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFibGlzaGVz
QmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKLQotICAgIC8vIExldCdzIGp1c3QgdXNlIHRoZSBu
b3JtYWwgcGF0aCBmb3Igbm93LgotICAgIHJldHVybiBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggNDYwNmY5ZGM2NjI4ZWUwM2YzMGM3YTk1
ZjQzOWZiMTNlNzQwNzA5ZC4uZGJiM2E4Yjk5ODI0ODZiMjcyMjE0MGUzODYwZjNjOTJkN2YwNWE3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC02Niw4
ICs2Niw5IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpuZWVkc1N0cmV0
Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0CiAgICAgcmV0dXJuIGxheW91dEJveC5z
dHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKTsKIH0KIAotSGVpZ2h0QW5kTWFyZ2luIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIEhlaWdodEFuZE1hcmdp
biBoZWlnaHRBbmRNYXJnaW4pCitIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6UXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1h
cmdpbikKIHsKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwogICAgIEFTU0VSVChs
YXlvdXRCb3guaXNEb2N1bWVudEJveCgpIHx8IGxheW91dEJveC5pc0JvZHlCb3goKSk7CiAKICAg
ICBhdXRvJiBkb2N1bWVudEJveCA9IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkgPyBsYXlvdXRC
b3ggOiAqbGF5b3V0Qm94LnBhcmVudCgpOwpAQCAtODgsMTIgKzg5LDEwIEBAIEhlaWdodEFuZE1h
cmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChjb25z
dCBMYXlvdXRTdGF0CiAgICAgICAgIC8vIEhlcmUgaXMgdGhlIHF1aXJreSBwYXJ0IGZvciBib2R5
IGJveDoKICAgICAgICAgLy8gU3RyZXRjaCB0aGUgYm9keSB1c2luZyB0aGUgaW5pdGlhbCBjb250
YWluaW5nIGJsb2NrJ3MgaGVpZ2h0IGFuZCBzaHJpbmsgaXQgd2l0aCBkb2N1bWVudCBib3gncyBt
YXJnaW4vYm9yZGVyL3BhZGRpbmcuCiAgICAgICAgIC8vIFRoaXMgbG9va3MgZXh0cmVtZWx5IG9k
ZCB3aGVuIGh0bWwgaGFzIG5vbi1hdXRvIGhlaWdodC4KLSAgICAgICAgYXV0byB2ZXJ0aWNhbE1h
cmdpbiA9IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGRvY3Vt
ZW50Qm94KSArIEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgZG9j
dW1lbnRCb3gpOwotICAgICAgICBzdHJlY2hlZEhlaWdodCAtPSB2ZXJ0aWNhbE1hcmdpbjsKKyAg
ICAgICAgYXV0byBkb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVk
Tm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gp
OworICAgICAgICBzdHJlY2hlZEhlaWdodCAtPSAoZG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5i
ZWZvcmUgKyBkb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmFmdGVyKTsKIAotICAgICAgICAvLyBU
aGlzIHF1aXJrIGhhcHBlbnMgd2hlbiB0aGUgYm9keSBoZWlnaHQgaXMgMCB3aGljaCBtZWFucyBp
dHMgdmVydGljYWwgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoICh0b3AgYW5kIGJvdHRvbSBtYXJn
aW5zIGFyZSBhZGpvaW5pbmcpLgotICAgICAgICAvLyBIb3dldmVyIG5vdyB0aGF0IHdlIHN0cmV0
Y2ggdGhlIGJvZHkgdGhleSBkb24ndCBjb2xsYXBzZSB0aHJvdWdoIGFueW1vcmUsIHNvIHdlIG5l
ZWQgdG8gdXNlIHRoZSBub24tY29sbGFwc2VkIHZhbHVlcyBpbnN0ZWFkLgotICAgICAgICBhdXRv
IGJvZHlCb3hWZXJ0aWNhbE1hcmdpbiA9IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPyBoZWlnaHRB
bmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKSA6IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4ubm9u
Q29sbGFwc2VkVmFsdWVzKCk7CisgICAgICAgIGF1dG8gYm9keUJveFZlcnRpY2FsTWFyZ2luID0g
aGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCk7IAogICAgICAgICB0b3RhbFZlcnRp
Y2FsTWFyZ2luID0gYm9keUJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvZHlCb3hWZXJ0aWNh
bE1hcmdpbi5hZnRlcjsKICAgICB9CiAKQEAgLTExMiw2ICsxMTEsMjAgQEAgYm9vbCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShjb25zdCBM
YXlvdXRTdGF0ZSYKICAgICByZXR1cm4gbGF5b3V0U3RhdGUuaW5RdWlya3NNb2RlKCkgJiYgaXNR
dWlya0NvbnRhaW5lcigqbGF5b3V0Qm94LnBhcmVudCgpKSAmJiBoYXNNYXJnaW5CZWZvcmVRdWly
a1ZhbHVlKGxheW91dEJveCk7CiB9CiAKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVp
cmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIC8vIEZJWE1FOiBhZGQgZXhwbGFuYXRp
b24KKyAgICBpZiAoIXNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKGxheW91dEJveC5wYXJl
bnQoKSk7CisgICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKKyAgICBpZiAo
cGFyZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgIT0gJmxheW91dEJveCB8fCBwYXJl
bnQuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSAhPSBwYXJlbnQubGFzdEluRmxvd09yRmxv
YXRpbmdDaGlsZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gTWFyZ2lu
OjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworfQorCiB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBiYjk2NjkzOTBmZjlhMjg3NmZlNzE0
ZGM4NTQ0YjAxZGY2ZGVhYTg0Li5iYjQ1NmI1OTI3ZmVmZTQ1YzYzNzgzMWQ1YjI0ZjcxNzA5MmJh
ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGb3JtYXR0aW5nU3Rh
dGUuaCIKKyNpbmNsdWRlICJNYXJnaW5UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2Mu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDMsMTggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkJsb2NrRm9ybWF0dGluZ1N0YXRlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rm9ybWF0dGluZ0NvbnRleHQ+IGNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9y
bWF0dGluZ0NvbnRleHRSb290KSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0UG9zaXRpdmVBbmRO
ZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBQb3NpdGl2ZUFuZE5l
Z2F0aXZlVmVydGljYWxNYXJnaW4gdmVydGljYWxNYXJnaW4pIHsgbV9wb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW4uc2V0KCZsYXlvdXRCb3gsIHZlcnRpY2FsTWFyZ2luKTsgfQorICAg
IGJvb2wgaGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5
b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bi5jb250YWlucygmbGF5b3V0Qm94KTsgfQorICAgIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNh
bE1hcmdpbiBwb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlv
dXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
LmdldCgmbGF5b3V0Qm94KTsgfQorCisgICAgdm9pZCBzZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZv
cmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmFk
ZCgmbGF5b3V0Qm94KTsgfQorICAgIHZvaWQgY2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LnJlbW92
ZSgmbGF5b3V0Qm94KTsgfQorICAgIGJvb2wgaGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0
IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxp
c3QuY29udGFpbnMoJmxheW91dEJveCk7IH0KKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPGNvbnN0
IEJveCosIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbj4gbV9wb3NpdGl2ZUFuZE5l
Z2F0aXZlVmVydGljYWxNYXJnaW47CisgICAgSGFzaFNldDxjb25zdCBCb3gqPiBtX2VzdGltYXRl
ZE1hcmdpbkJlZm9yZUxpc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhMzU5ZjY5
OTM3ODQ2NDc0NDk4Y2ExNGE2MTEwZTJmMzAzZDljMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luLmNwcApAQCAtMCww
ICsxLDYxNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKworI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUg
IkxheW91dEJveC5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxh
eW91dFVuaXQuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworc3RhdGljIGJvb2wgaGFzQm9yZGVyKGNvbnN0IEJv
cmRlclZhbHVlJiBib3JkZXJWYWx1ZSkKK3sKKyAgICBpZiAoYm9yZGVyVmFsdWUuc3R5bGUoKSA9
PSBCb3JkZXJTdHlsZTo6Tm9uZSB8fCBib3JkZXJWYWx1ZS5zdHlsZSgpID09IEJvcmRlclN0eWxl
OjpIaWRkZW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gISFib3JkZXJWYWx1
ZS53aWR0aCgpOworfQorCitzdGF0aWMgYm9vbCBoYXNQYWRkaW5nKGNvbnN0IExlbmd0aCYgcGFk
ZGluZ1ZhbHVlKQoreworICAgIC8vIEZJWE1FOiBDaGVjayBpZiBwZXJjZW50IHZhbHVlIG5lZWRz
IHRvIGJlIHJlc29sdmVkLgorICAgIHJldHVybiAhcGFkZGluZ1ZhbHVlLmlzWmVybygpOworfQor
CitzdGF0aWMgYm9vbCBoYXNCb3JkZXJCZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpCit7Cisg
ICAgcmV0dXJuIGhhc0JvcmRlcihsYXlvdXRCb3guc3R5bGUoKS5ib3JkZXJCZWZvcmUoKSk7Cit9
CisKK3N0YXRpYyBib29sIGhhc0JvcmRlckFmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KQorewor
ICAgIHJldHVybiBoYXNCb3JkZXIobGF5b3V0Qm94LnN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSk7Cit9
CisKK3N0YXRpYyBib29sIGhhc1BhZGRpbmdCZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpCit7
CisgICAgcmV0dXJuIGhhc1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0JlZm9yZSgp
KTsKK30KKworc3RhdGljIGJvb2wgaGFzUGFkZGluZ0FmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94
KQoreworICAgIHJldHVybiBoYXNQYWRkaW5nKGxheW91dEJveC5zdHlsZSgpLnBhZGRpbmdBZnRl
cigpKTsKK30KKworc3RhdGljIGJvb2wgaGFzQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgaWYgKCFsYXlvdXRCb3gu
aGFzRmxvYXRDbGVhcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5oYXNDbGVhcmFuY2UoKTsK
K30KKworc3RhdGljIGJvb2wgZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IEJveCYgbGF5b3V0Qm94KQoreworICAgIC8vIFdlYktpdCB0cmVhdHMgdGhlIGRvY3VtZW50IGVs
ZW1lbnQgcmVuZGVyZXIgYXMgYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdC4gSXQgcHJv
YmFibHkgb25seSBpbXBhY3RzIG1hcmdpbiBjb2xsYXBzaW5nLCBzbyBsZXQncyBub3QgZG8KKyAg
ICAvLyBhIGxheW91dCB3aWRlIHF1aXJrIG9uIHRoaXMgZm9yIG5vdy4KKyAgICBpZiAobGF5b3V0
Qm94LmlzRG9jdW1lbnRCb3goKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGxh
eW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsKK30KKworYm9vbCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQ
YXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQoreworICAgIC8vIDEuIFRoaXMgaXMgdGhlIGxhc3QgaW4tZmxvdyBjaGls
ZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBhZnRlciBj
b2xsYXBzZXMgd2l0aCBwYXJlbnQncyBtYXJnaW4gYWZ0ZXIgb3IKKyAgICAvLyAyLiBUaGlzIGJv
eCdzIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMgd2l0aCB0aGUgbmV4dCBzaWJsaW5nJ3MgbWFyZ2lu
IGJlZm9yZSBhbmQgdGhhdCBzaWJsaW5nIGNvbGxhcHNlcyB0aHJvdWdoIGFuZAorICAgIC8vIHdl
IGNhbiBnZXQgdG8gdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCBsaWtlIHRoYXQuCisgICAgYXV0byog
bGFzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94LnBhcmVudCgpLT5sYXN0SW5GbG93Q2hpbGQoKTsK
KyAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSAmbGF5b3V0Qm94OyBjdXJyZW50Qm94OyBjdXJy
ZW50Qm94ID0gY3VycmVudEJveC0+bmV4dEluRmxvd1NpYmxpbmcoKSkgeworICAgICAgICBpZiAo
IW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnRCb3ggPT0gbGFzdEluRmxv
d0NoaWxkKQorICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqY3VycmVudEJveCk7IAorICAgICAgICBpZiAoIW1h
cmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nTWFyZ2luQmVmb3JlKGxheW91dFN0YXRl
LCAqY3VycmVudEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCkKK3sKKyAgICAvLyBUaGUgZmlyc3QgaW5mbG93IGNoaWxkIGNvdWxkIHByb3BhZ2F0
ZSBpdHMgdG9wIG1hcmdpbiB0byBwYXJlbnQuCisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RS
L0NTUzIxL2JveC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucworICAgIGlmIChsYXlvdXRCb3guaXNB
bm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKGxheW91dEJv
eC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVk
IGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJv
eC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2Uu
CisgICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90
IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPbmx5IHRoZSBmaXJzdCBpbmxmbG93IGNoaWxkIGNv
bGxhcHNlcyB3aXRoIHBhcmVudC4KKyAgICBpZiAobGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBwYXJlbnQgPSAqbGF5
b3V0Qm94LnBhcmVudCgpOworICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxp
c2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhl
aXIgaW4tZmxvdyBjaGlsZHJlbgorICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQocGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGhhc0JvcmRl
ckJlZm9yZShwYXJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaGFzUGFk
ZGluZ0JlZm9yZShwYXJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAuLi5h
bmQgdGhlIGNoaWxkIGhhcyBubyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5jZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKworICAgIGlmICghbGF5b3V0Qm94LnByZXZp
b3VzSW5GbG93U2libGluZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBw
cmV2aW91c0luRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygp
OworCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBi
b3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0
aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmICgobGF5b3V0Qm94LmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guc3R5bGUoKS50b3AoKS5pc0F1dG8oKSkKKyAg
ICAgICAgfHwgKHByZXZpb3VzSW5GbG93U2libGluZy5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAm
JiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nLnN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hl
cyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkg
fHwgcHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzSW5saW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9j
ay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZgor
ICAgIC8vIGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywgdW5sZXNzIHRoYXQg
c2libGluZyBoYXMgY2xlYXJhbmNlLgorICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29s
bGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAobGF5b3V0Qm94
LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChsYXlv
dXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhh
dCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNl
IHdpdGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4KKyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4K
KyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSB0b3AgbWFyZ2luIG9mIGFuIGluLWZs
b3cgYmxvY2sgZWxlbWVudCBjb2xsYXBzZXMgd2l0aCBpdHMgZmlyc3QgaW4tZmxvdyBibG9jay1s
ZXZlbAorICAgIC8vIGNoaWxkJ3MgdG9wIG1hcmdpbiBpZiB0aGUgZWxlbWVudCBoYXMgbm8gdG9w
IGJvcmRlci4uLgorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gLi4ubm8gdG9wIHBhZGRpbmcKKyAgICBpZiAoaGFzUGFk
ZGluZ0JlZm9yZShsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRC
b3gpLmhhc0luRmxvd0NoaWxkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8m
IGZpcnN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0
SW5GbG93Q2hpbGQoKTsKKyAgICBpZiAoIWZpcnN0SW5GbG93Q2hpbGQuaXNCbG9ja0xldmVsQm94
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIC4uLmFuZCB0aGUgY2hpbGQgaGFz
IG5vIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBmaXJzdElu
Rmxvd0NoaWxkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBiZXR3
ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAg
IGlmIChmaXJzdEluRmxvd0NoaWxkLmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJv
eGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAoZmlyc3RJbkZsb3dDaGlsZC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBv
ZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxv
d0NoaWxkLmlzSW5saW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpt
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZShj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorewor
ICAgIC8vIElmIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIG9mIGFuIGVsZW1lbnQgd2l0aCBj
bGVhcmFuY2UgYXJlIGFkam9pbmluZywgaXRzIG1hcmdpbnMgY29sbGFwc2Ugd2l0aCB0aGUgYWRq
b2luaW5nIG1hcmdpbnMKKyAgICAvLyBvZiBmb2xsb3dpbmcgc2libGluZ3MgYnV0IHRoYXQgcmVz
dWx0aW5nIG1hcmdpbiBkb2VzIG5vdCBjb2xsYXBzZSB3aXRoIHRoZSBib3R0b20gbWFyZ2luIG9m
IHRoZSBwYXJlbnQgYmxvY2suCisgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1
dG8qIHByZXZpb3VzU2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsg
cHJldmlvdXNTaWJsaW5nOyBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmctPnByZXZp
b3VzSW5GbG93U2libGluZygpKSB7CisgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3Vn
aChsYXlvdXRTdGF0ZSwgKnByZXZpb3VzU2libGluZykpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsICpwcmV2aW91c1NpYmxp
bmcpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29s
bGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIC8vIDEuIFRoaXMgaXMgdGhlIGZpcnN0
IGluLWZsb3cgY2hpbGQgYW5kIGl0cyBtYXJnaW5zIGNvbGxhcHNlIHRocm91Z2ggYW5kIHRoZSBt
YXJnaW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdzIG1hcmdpbiBiZWZvcmUgb3IKKyAg
ICAvLyAyLiBUaGlzIGJveCdzIG1hcmdpbiBiZWZvcmUgY29sbGFwc2VzIHdpdGggdGhlIHByZXZp
b3VzIHNpYmxpbmcncyBtYXJnaW4gYWZ0ZXIgYW5kIHRoYXQgc2libGluZyBjb2xsYXBzZXMgdGhy
b3VnaCBhbmQKKyAgICAvLyB3ZSBjYW4gZ2V0IHRvIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGxp
a2UgdGhhdC4KKyAgICBhdXRvKiBmaXJzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94LnBhcmVudCgp
LT5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgZm9yIChhdXRvKiBjdXJyZW50Qm94ID0gJmxheW91
dEJveDsgY3VycmVudEJveDsgY3VycmVudEJveCA9IGN1cnJlbnRCb3gtPnByZXZpb3VzSW5GbG93
U2libGluZygpKSB7CisgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRT
dGF0ZSwgKmN1cnJlbnRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoY3VycmVudEJveCA9PSBmaXJzdEluRmxvd0NoaWxkKQorICAgICAgICAgICAgcmV0dXJuIG1h
cmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpj
dXJyZW50Qm94KTsgCisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqY3VycmVudEJveCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgaWYgKGxheW91
dEJveC5pc0Fub255bW91cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBh
IGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAo
bGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBj
b2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hl
cyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9ubHkgdGhlIGxhc3QgaW5sZmxvdyBj
aGlsZCBjb2xsYXBzZXMgd2l0aCBwYXJlbnQuCisgICAgaWYgKGxheW91dEJveC5uZXh0SW5GbG93
U2libGluZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBwYXJlbnQgPSAq
bGF5b3V0Qm94LnBhcmVudCgpOworICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3Rh
Ymxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGgg
dGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4KKyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0KHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBi
b3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2sgYm94IHdpdGggYSAnaGVpZ2h0JyBvZiAn
YXV0bycgY29sbGFwc2VzIHdpdGggaXRzIGxhc3QgaW4tZmxvdyBibG9jay1sZXZlbCBjaGlsZCdz
IGJvdHRvbSBtYXJnaW4sIGlmOgorICAgIGlmICghcGFyZW50LnN0eWxlKCkuaGVpZ2h0KCkuaXNB
dXRvKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJv
dHRvbSBwYWRkaW5nLCBhbmQKKyAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShwYXJlbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyB0aGUgYm94IGhhcyBubyBib3R0b20gYm9yZGVy
LCBhbmQKKyAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4gbmVpdGhlciBjb2xsYXBz
ZXMgd2l0aCBhIHRvcCBtYXJnaW4gdGhhdCBoYXMgY2xlYXJhbmNlLi4uCisgICAgaWYgKG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBub3Ig
KGlmIHRoZSBib3gncyBtaW4taGVpZ2h0IGlzIG5vbi16ZXJvKSB3aXRoIHRoZSBib3gncyB0b3Ag
bWFyZ2luLgorICAgIGF1dG8gY29tcHV0ZWRNaW5IZWlnaHQgPSBwYXJlbnQuc3R5bGUoKS5sb2dp
Y2FsTWluSGVpZ2h0KCk7CisgICAgaWYgKCFjb21wdXRlZE1pbkhlaWdodC5pc0F1dG8oKSAmJiBj
b21wdXRlZE1pbkhlaWdodC52YWx1ZSgpICYmIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5B
ZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworCisgICAgLy8g
TWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAg
IGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwg
IWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBsYXN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8
Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgpOworICAgIGlmICghbGFzdElu
Rmxvd0NoaWxkLmlzQmxvY2tMZXZlbEJveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrIGJveCB3aXRoIGEgJ2hl
aWdodCcgb2YgJ2F1dG8nIGNvbGxhcHNlcyB3aXRoIGl0cyBsYXN0IGluLWZsb3cgYmxvY2stbGV2
ZWwgY2hpbGQncyBib3R0b20gbWFyZ2luLCBpZjoKKyAgICBpZiAoIWxheW91dEJveC5zdHlsZSgp
LmhlaWdodCgpLmlzQXV0bygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyB0aGUg
Ym94IGhhcyBubyBib3R0b20gcGFkZGluZywgYW5kCisgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUo
bGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGJveCBoYXMg
bm8gYm90dG9tIGJvcmRlciwgYW5kCisgICAgaWYgKGhhc0JvcmRlckJlZm9yZShsYXlvdXRCb3gp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyB0aGUgY2hpbGQncyBib3R0b20gbWFy
Z2luIG5laXRoZXIgY29sbGFwc2VzIHdpdGggYSB0b3AgbWFyZ2luIHRoYXQgaGFzIGNsZWFyYW5j
ZS4uLgorICAgIGlmIChtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3Jl
V2l0aENsZWFyYW5jZShsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxkKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gbm9yIChpZiB0aGUgYm94J3MgbWluLWhlaWdodCBpcyBub24t
emVybykgd2l0aCB0aGUgYm94J3MgdG9wIG1hcmdpbi4KKyAgICBhdXRvIGNvbXB1dGVkTWluSGVp
Z2h0ID0gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpOworICAgIGlmICghY29t
cHV0ZWRNaW5IZWlnaHQuaXNBdXRvKCkgJiYgY29tcHV0ZWRNaW5IZWlnaHQudmFsdWUoKQorICAg
ICAgICAmJiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91
dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpIHx8IGhhc0NsZWFyYW5jZShsYXlvdXRTdGF0ZSwgbGFz
dEluRmxvd0NoaWxkKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMg
YmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4K
KyAgICBpZiAobGFzdEluRmxvd0NoaWxkLmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVk
IGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGFzdEluRmxvd0NoaWxkLmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5z
IG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxhc3RJbkZs
b3dDaGlsZC5pc0lubGluZUJsb2NrQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUoY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBBU1NF
UlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKworICAgIGlmICghbGF5b3V0Qm94Lm5l
eHRJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBt
YXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICpsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSk7Cit9CisKK2Jvb2wgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgQVNT
RVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAgICAvLyBBIGJveCdzIG93biBt
YXJnaW5zIGNvbGxhcHNlIGlmIHRoZSAnbWluLWhlaWdodCcgcHJvcGVydHkgaXMgemVybywgYW5k
IGl0IGhhcyBuZWl0aGVyIHRvcCBvciBib3R0b20gYm9yZGVycyBub3IgdG9wIG9yIGJvdHRvbSBw
YWRkaW5nLAorICAgIC8vIGFuZCBpdCBoYXMgYSAnaGVpZ2h0JyBvZiBlaXRoZXIgMCBvciAnYXV0
bycsIGFuZCBpdCBkb2VzIG5vdCBjb250YWluIGEgbGluZSBib3gsIGFuZCBhbGwgb2YgaXRzIGlu
LWZsb3cgY2hpbGRyZW4ncyBtYXJnaW5zIChpZiBhbnkpIGNvbGxhcHNlLgorICAgIGlmIChoYXNC
b3JkZXJCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNCb3JkZXJBZnRlcihsYXlvdXRCb3gpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gp
IHx8IGhhc1BhZGRpbmdBZnRlcihsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIGNvbXB1dGVkIDAgaGVpZ2h0LgorICAgIGlmICghbGF5
b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgY29tcHV0ZWQgMCBoZWlnaHQuCisgICAgaWYgKCFs
YXlvdXRCb3guc3R5bGUoKS5taW5IZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgaWYgKCFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5G
bG93Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoUXVpcmtzOjpuZWVk
c1N0cmV0Y2hpbmcobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBFeHBsYWluIHdoeSB3ZSBkb24ndCBoYXZlIGEgZm9y
bWF0dGluZyBzdGF0ZSBkdXJpbmcgbWFyZ2luIGVzdGltYXRpb24uCisgICAgICAgIGlmICghbGF5
b3V0U3RhdGUuaGFzRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpLmlubGlu
ZVJ1bnMoKS5pc0VtcHR5KCk7CisgICAgfQorICAgIAorICAgIGZvciAoYXV0byogaW5mbG93Q2hp
bGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOyBp
bmZsb3dDaGlsZDsgaW5mbG93Q2hpbGQgPSBpbmZsb3dDaGlsZC0+bmV4dEluRmxvd1NpYmxpbmco
KSkgeworICAgICAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCppbmZs
b3dDaGlsZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghbWFyZ2lu
c0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBQb3Np
dGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRlZFBvc2l0aXZlQW5k
TmVnYXRpdmVNYXJnaW4oUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMg
YSwgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgYikKK3sKKyAgICBQ
b3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRlZFZhbHVlczsK
KyAgICBpZiAoYS5wb3NpdGl2ZSAmJiBiLnBvc2l0aXZlKQorICAgICAgICBjb21wdXRlZFZhbHVl
cy5wb3NpdGl2ZSA9IHN0ZDo6bWF4KCphLnBvc2l0aXZlLCAqYi5wb3NpdGl2ZSk7CisgICAgZWxz
ZQorICAgICAgICBjb21wdXRlZFZhbHVlcy5wb3NpdGl2ZSA9IGEucG9zaXRpdmUgPyBhLnBvc2l0
aXZlIDogYi5wb3NpdGl2ZTsKKworICAgIGlmIChhLm5lZ2F0aXZlICYmIGIubmVnYXRpdmUpCisg
ICAgICAgIGNvbXB1dGVkVmFsdWVzLm5lZ2F0aXZlID0gc3RkOjptaW4oKmEubmVnYXRpdmUsICpi
Lm5lZ2F0aXZlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm5lZ2F0aXZlID0g
YS5uZWdhdGl2ZSA/IGEubmVnYXRpdmUgOiBiLm5lZ2F0aXZlOworCisgICAgcmV0dXJuIGNvbXB1
dGVkVmFsdWVzOworfQorCitzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
OjpWYWx1ZXMgY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVn
YXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGEsIE9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdp
blZhbHVlKQoreworICAgIGlmICghbWFyZ2luVmFsdWUgfHwgIW1hcmdpblZhbHVlLnZhbHVlKCkp
CisgICAgICAgIHJldHVybiBhOworICAgIGlmICgqbWFyZ2luVmFsdWUgPiAwKQorICAgICAgICBy
ZXR1cm4gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgbWFyZ2luVmFsdWUs
IHsgfSB9KTsKKyAgICBpZiAoKm1hcmdpblZhbHVlIDwgMCkKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihhLCB7IHsgfSwgbWFyZ2luVmFsdWUgfSk7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RhdGljIE9w
dGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblZhbHVlKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNh
bE1hcmdpbjo6VmFsdWVzIG1hcmdpblZhbHVlcykKK3sKKyAgICAvLyBXaGVuIHR3byBvciBtb3Jl
IG1hcmdpbnMgY29sbGFwc2UsIHRoZSByZXN1bHRpbmcgbWFyZ2luIHdpZHRoIGlzIHRoZSBtYXhp
bXVtIG9mIHRoZSBjb2xsYXBzaW5nIG1hcmdpbnMnIHdpZHRocy4KKyAgICAvLyBJbiB0aGUgY2Fz
ZSBvZiBuZWdhdGl2ZSBtYXJnaW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVz
IG9mIHRoZSBuZWdhdGl2ZSBhZGpvaW5pbmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBt
YXhpbXVtCisgICAgLy8gb2YgdGhlIHBvc2l0aXZlIGFkam9pbmluZyBtYXJnaW5zLiBJZiB0aGVy
ZSBhcmUgbm8gcG9zaXRpdmUgbWFyZ2lucywgdGhlIG1heGltdW0gb2YgdGhlIGFic29sdXRlIHZh
bHVlcyBvZiB0aGUgYWRqb2luaW5nIG1hcmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB6ZXJvLgorICAg
IGlmICghbWFyZ2luVmFsdWVzLm5lZ2F0aXZlKQorICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWVz
LnBvc2l0aXZlOworCisgICAgaWYgKCFtYXJnaW5WYWx1ZXMucG9zaXRpdmUpCisgICAgICAgIHJl
dHVybiBtYXJnaW5WYWx1ZXMubmVnYXRpdmU7CisKKyAgICByZXR1cm4gKm1hcmdpblZhbHVlcy5w
b3NpdGl2ZSArICptYXJnaW5WYWx1ZXMubmVnYXRpdmU7Cit9CisKK3ZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBWZXJ0aWNh
bE1hcmdpbiYgbmV4dFNpYmxpbmdWZXJ0aWNhbE1hcmdpbikKK3sKKyAgICAvLyAxLiBHZXQgdGhl
IG1hcmdpbiBiZWZvcmUgdmFsdWUgZnJvbSB0aGUgbmV4dCBpbi1mbG93IHNpYmxpbmcuIFRoaXMg
aXMgdGhlIHNhbWUgYXMgdGhpcyBib3gncyBtYXJnaW4gYWZ0ZXIgdmFsdWUgbm93IHNpbmNlIHRo
ZXkgYXJlIGNvbGxhcHNlZC4KKyAgICAvLyAyLiBVcGRhdGUgdGhlIGNvbGxhcHNlZCBtYXJnaW4g
YWZ0ZXIgdmFsdWUgYXMgd2VsbCBhcyB0aGUgcG9zaXRpdmUvbmVnYXRpdmUgY2FjaGUuCisgICAg
Ly8gMy4gQ2hlY2sgaWYgdGhlIGJveCdzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaC4KKyAgICAv
LyA0LiBJZiBzbywgdXBkYXRlIHRoZSBjb2xsYXBzZWQgbWFyZ2luIGJlZm9yZSB2YWx1ZSBhcyB3
ZWxsIGFzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyA1LiBJbiBjYXNlIG9m
IGNvbGxhcHNlZCB0aHJvdWdoIG1hcmdpbnMgY2hlY2sgaWYgdGhlIGJlZm9yZSBtYXJnaW4gY29s
bGFwZXMgd2l0aCB0aGUgcHJldmlvdXMgaW5mbG93IHNpYmxpbmcncyBhZnRlciBtYXJnaW4uCisg
ICAgLy8gNi4gSWYgc28sIGp1bXAgdG8gIzIuCisgICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNl
c1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0g
ZGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW5BZnRl
ciA9IG5leHRTaWJsaW5nVmVydGljYWxNYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZTsKKyAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiB2ZXJ0aWNhbE1hcmdpbkJlZm9yZTsKKworICAgIGF1dG8gbWFy
Z2luc0NvbGxhcHNlVGhyb3VnaCA9IE1hcmdpbjo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaCkKKyAg
ICAgICAgdmVydGljYWxNYXJnaW5CZWZvcmUgPSB2ZXJ0aWNhbE1hcmdpbkFmdGVyOyAKKyAgICBl
bHNlIGlmICh2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSkKKyAgICAgICAgdmVydGlj
YWxNYXJnaW5CZWZvcmUgPSB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+YmVmb3Jl
OworCisgICAgLy8gVXBkYXRlIHZlcnRpY2FsIG1hcmdpbiB2YWx1ZXMuCisgICAgdmVydGljYWxN
YXJnaW4uc2V0Q29sbGFwc2VkVmFsdWVzKHsgdmVydGljYWxNYXJnaW5CZWZvcmUsIHZlcnRpY2Fs
TWFyZ2luQWZ0ZXIgfSk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNh
bE1hcmdpbik7CisKKyAgICAvLyBVcGRhdGUgcG9zaXRpdmUvbmVnYXRpdmUgY2FjaGUuCisgICAg
YXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0
ZT4obGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkpOworICAgIGF1
dG8gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbiA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpOworICAgIGF1dG8gbmV4dFNpYmxp
bmdQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9z
aXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKCpsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxp
bmcoKSkuYmVmb3JlOworCisgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5hZnRlciA9IGNvbXB1
dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihuZXh0U2libGluZ1Bvc2l0aXZlTmVnYXRpdmVN
YXJnaW5CZWZvcmUsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIpOworICAgIGlmIChtYXJn
aW5zQ29sbGFwc2VUaHJvdWdoKSB7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYmVm
b3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW4uYmVmb3JlLCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyKTsKKyAgICAgICAgcG9z
aXRpdmVOZWdhdGl2ZU1hcmdpbi5hZnRlciA9IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYmVmb3Jl
OyAKKyAgICB9CisgICAgYmxvY2tGb3JtYXR0aW5nU3RhdGUuc2V0UG9zaXRpdmVBbmROZWdhdGl2
ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbik7CisKKyAg
ICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2ggfHwgIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3Rh
dGUsICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCksIHZlcnRpY2FsTWFyZ2luKTsK
K30KKworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6TWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE1hcmdpblR5cGUgbWFy
Z2luVHlwZSkKK3sKKyAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJs
b2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5
b3V0Qm94KSk7CisgICAgYXV0byBoYXNQcmVjb21wdXRlZFZhbHVlID0gYmxvY2tGb3JtYXR0aW5n
U3RhdGUuaGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCk7Cisg
ICAgaWYgKG1hcmdpblR5cGUgPT0gTWFyZ2luVHlwZTo6QmVmb3JlKQorICAgICAgICByZXR1cm4g
aGFzUHJlY29tcHV0ZWRWYWx1ZSA/IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVn
YXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpLmJlZm9yZSA6IHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGhhc1ByZWNv
bXB1dGVkVmFsdWUgPyBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVy
dGljYWxNYXJnaW4obGF5b3V0Qm94KS5hZnRlciA6IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRl
cihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKK30KKworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRp
Y2FsTWFyZ2luOjpWYWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpwb3NpdGl2
ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgYXV0byBmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2lu
QmVmb3JlID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1
ZXMgeworICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIGF1dG8qIGZpcnN0SW5GbG93Q2hpbGQgPSBkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOworICAgICAgICBpZiAoIWZp
cnN0SW5GbG93Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIW1h
cmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYg
KFF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCAqZmlyc3RJbkZs
b3dDaGlsZCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRp
dmVOZWdhdGl2ZVZhbHVlcyhsYXlvdXRTdGF0ZSwgKmZpcnN0SW5GbG93Q2hpbGQsIE1hcmdpblR5
cGU6OkJlZm9yZSk7CisgICAgfTsKKworICAgIGF1dG8gcHJldmlvdVNpYmxpbmdDb2xsYXBzZWRN
YXJnaW5BZnRlciA9IFsmXSgpIC0+IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6
VmFsdWVzIHsKKyAgICAgICAgYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94
LnByZXZpb3VzSW5GbG93U2libGluZygpOworICAgICAgICBpZiAoIXByZXZpb3VzSW5GbG93U2li
bGluZykKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghbWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hv
dWxkSWdub3JlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcp
KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlTmVnYXRp
dmVWYWx1ZXMobGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcsIE1hcmdpblR5cGU6
OkFmdGVyKTsKKyAgICB9OworCisgICAgLy8gMS4gR2F0aGVyIHBvc2l0aXZlIGFuZCBuZWdhdGl2
ZSBtYXJnaW4gdmFsdWVzIGZyb20gZmlyc3QgY2hpbGQgaWYgbWFyZ2lucyBhcmUgYWRqb2luaW5n
LgorICAgIC8vIDIuIEdhdGhlciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlcyBm
cm9tIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nIGlmIG1hcmdpbnMgYXJlIGFkam9pbmluZy4KKyAg
ICAvLyAzLiBDb21wdXRlIG1pbi9tYXggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNvbGxhcHNlZCBt
YXJnaW4gdmFsdWVzIHVzaW5nIG5vbi1jb2xscGFzZWQgY29tcHV0ZWQgbWFyZ2luIGJlZm9yZS4K
KyAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdh
dGl2ZU1hcmdpbihmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCksIHByZXZpb3VTaWJs
aW5nQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSk7CisgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW5C
ZWZvcmUgPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmJlZm9yZTsKKyAgICByZXR1cm4gY29tcHV0ZWRQb3Np
dGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGNvbGxhcHNlZE1hcmdpbkJlZm9yZSwgbm9uQ29sbGFwc2Vk
TWFyZ2luQmVmb3JlKTsKK30KKworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpW
YWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3sKKyAgICBhdXRvIGxhc3RDaGlsZENvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkg
LT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBp
ZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIGF1dG8qIGxhc3RJbkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0
Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICAgICAgaWYgKCFsYXN0SW5GbG93Q2hpbGQpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxkSWdub3Jl
TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMobGF5b3V0
U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQsIE1hcmdpblR5cGU6OkFmdGVyKTsKKyAgICB9OworCisg
ICAgLy8gV2UgZG9uJ3Qga25vdyB5ZXQgdGhlIG1hcmdpbiBiZWZvcmUgdmFsdWUgb2YgdGhlIG5l
eHQgc2libGluZy4gTGV0J3MganVzdCBwcmV0ZW5kIGl0IGRvZXMgbm90IGhhdmUgb25lIGFuZCAK
KyAgICAvLyB1cGRhdGUgaXQgbGF0ZXIgd2hlbiB3ZSBjb21wdXRlIHRoZSBuZXh0IHNpYmxpbmcn
cyBtYXJnaW4gYmVmb3JlLiBTZWUgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIuCisgICAgYXV0
byBub25Db2xsYXBzZWRNYXJnaW5BZnRlciA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNl
ZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCkuYWZ0ZXI7CisgICAg
cmV0dXJuIGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihsYXN0Q2hpbGRDb2xsYXBz
ZWRNYXJnaW5BZnRlcigpLCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcik7Cit9CisKK0VzdGltYXRl
ZE1hcmdpbkJlZm9yZSBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OmVzdGltYXRlZE1h
cmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQoreworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAg
IC8vIENhbid0IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVz
IChhbmQgd2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KKyAgICBB
U1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOworICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dCBib3VuZGFyeS4KKyAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CisKKyAgICBpZiAoIW1hcmdpbnNDb2xsYXBz
ZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiB7IG1hcmdp
blZhbHVlKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJv
eCkpLnZhbHVlT3IoMCkgfTsKKyAgICAKKyAgICByZXR1cm4geyBtYXJnaW5WYWx1ZShjb21wdXRl
ZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKSkudmFsdWVPcigwKSB9OworfQorCitWZXJ0aWNhbE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnZlcnRpY2FsKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgaWYgKGxheW91dEJv
eC5pc0Fub255bW91cygpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQVNTRVJUKGxheW91
dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgLy8gMS4gR2V0IG1pbi9tYXggbWFyZ2luIHRv
cCB2YWx1ZXMgZnJvbSB0aGUgZmlyc3QgaW4tZmxvdyBjaGlsZCBpZiB3ZSBhcmUgY29sbGFwc2lu
ZyBtYXJnaW4gdG9wIHdpdGggaXQuCisgICAgLy8gMi4gR2V0IG1pbi9tYXggbWFyZ2luIHRvcCB2
YWx1ZXMgZnJvbSB0aGUgcHJldmlvdXMgaW4tZmxvdyBzaWJsaW5nLCBpZiB3ZSBhcmUgY29sbGFw
c2luZyBtYXJnaW4gdG9wIHdpdGggaXQuCisgICAgLy8gMy4gR2V0IHRoaXMgbGF5b3V0IGJveCdz
IGNvbXB1dGVkIG1hcmdpbiB0b3AgdmFsdWUuCisgICAgLy8gNC4gVXBkYXRlIHRoZSBtaW4vbWF4
IHZhbHVlIGFuZCBjb21wdXRlIHRoZSBmaW5hbCBtYXJnaW4uIAorICAgIGF1dG8gcG9zaXRpdmVO
ZWdhdGl2ZU1hcmdpbkJlZm9yZSA9IE1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9y
ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIHBvc2l0aXZlTmVnYXRpdmVNYXJn
aW5BZnRlciA9IE1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOworCisgICAgYXV0byBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoID0gTWFyZ2lu
OjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOyAKKyAgICBp
ZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaCkgeworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQmVmb3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBvc2l0aXZlTmVn
YXRpdmVNYXJnaW5CZWZvcmUsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcik7CisgICAgICAg
IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciA9IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZv
cmU7ICAgICAgICAgCisgICAgfQorCisgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBk
b3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRl
Rm9yQm94KGxheW91dEJveCkpOworICAgIGJsb2NrRm9ybWF0dGluZ1N0YXRlLnNldFBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIHsgcG9zaXRpdmVOZWdhdGl2ZU1h
cmdpbkJlZm9yZSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyIH0pOworCisgICAgVmVydGlj
YWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyBjb2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgbWFy
Z2luVmFsdWUocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSksIG1hcmdpblZhbHVlKHBvc2l0
aXZlTmVnYXRpdmVNYXJnaW5BZnRlciksIG1hcmdpbnNDb2xsYXBzZVRocm91Z2ggfTsgCisgICAg
cmV0dXJuIHsgR2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1
ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkVmVydGljYWxNYXJnaW4gfTsKK30K
KworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTY3NzA4NzQ1Mzk0YTc4NWI4NGQ5N2M4MmY1ZjQ4MTM1YTNmOGQ1MC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIgotCi0jaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0KLSNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUuaCIKLSNpbmNsdWRlICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIu
aCIKLSNpbmNsdWRlICJMYXlvdXRVbml0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLXN0YXRpYyBib29sIGhh
c0JvcmRlcihjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyVmFsdWUpCi17Ci0gICAgaWYgKGJvcmRl
clZhbHVlLnN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6Ok5vbmUgfHwgYm9yZGVyVmFsdWUuc3R5bGUo
KSA9PSBCb3JkZXJTdHlsZTo6SGlkZGVuKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuICEhYm9yZGVyVmFsdWUud2lkdGgoKTsKLX0KLQotc3RhdGljIGJvb2wgaGFzUGFkZGluZyhj
b25zdCBMZW5ndGgmIHBhZGRpbmdWYWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgcGVy
Y2VudCB2YWx1ZSBuZWVkcyB0byBiZSByZXNvbHZlZC4KLSAgICByZXR1cm4gIXBhZGRpbmdWYWx1
ZS5pc1plcm8oKTsKLX0KLQotc3RhdGljIGJvb2wgaGFzQm9yZGVyQmVmb3JlKGNvbnN0IEJveCYg
bGF5b3V0Qm94KQotewotICAgIHJldHVybiBoYXNCb3JkZXIobGF5b3V0Qm94LnN0eWxlKCkuYm9y
ZGVyQmVmb3JlKCkpOwotfQotCi1zdGF0aWMgYm9vbCBoYXNCb3JkZXJBZnRlcihjb25zdCBCb3gm
IGxheW91dEJveCkKLXsKLSAgICByZXR1cm4gaGFzQm9yZGVyKGxheW91dEJveC5zdHlsZSgpLmJv
cmRlckFmdGVyKCkpOwotfQotCi1zdGF0aWMgYm9vbCBoYXNQYWRkaW5nQmVmb3JlKGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQotewotICAgIHJldHVybiBoYXNQYWRkaW5nKGxheW91dEJveC5zdHlsZSgp
LnBhZGRpbmdCZWZvcmUoKSk7Ci19Ci0KLXN0YXRpYyBib29sIGhhc1BhZGRpbmdBZnRlcihjb25z
dCBCb3gmIGxheW91dEJveCkKLXsKLSAgICByZXR1cm4gaGFzUGFkZGluZyhsYXlvdXRCb3guc3R5
bGUoKS5wYWRkaW5nQWZ0ZXIoKSk7Ci19Ci0KLXN0YXRpYyBib29sIGhhc0NsZWFyYW5jZShjb25z
dCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBpZiAoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBGSVhNRQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotc3RhdGljIGJvb2wgZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IEJveCYgbGF5b3V0Qm94KQotewotICAgIC8vIFdlYktpdCB0cmVhdHMgdGhlIGRvY3VtZW50IGVs
ZW1lbnQgcmVuZGVyZXIgYXMgYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdC4gSXQgcHJv
YmFibHkgb25seSBpbXBhY3RzIG1hcmdpbiBjb2xsYXBzaW5nLCBzbyBsZXQncyBub3QgZG8KLSAg
ICAvLyBhIGxheW91dCB3aWRlIHF1aXJrIG9uIHRoaXMgZm9yIG5vdy4KLSAgICBpZiAobGF5b3V0
Qm94LmlzRG9jdW1lbnRCb3goKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGxh
eW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsKLX0KLQotc3RhdGlj
IExheW91dFVuaXQgbWFyZ2luVmFsdWUoTGF5b3V0VW5pdCBjdXJyZW50TWFyZ2luVmFsdWUsIExh
eW91dFVuaXQgY2FuZGlkYXRlTWFyZ2luVmFsdWUpCi17Ci0gICAgaWYgKCFjYW5kaWRhdGVNYXJn
aW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJnaW5WYWx1ZTsKLSAgICBpZiAoIWN1
cnJlbnRNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZU1hcmdpblZhbHVlOwot
ICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgcG9zaXRpdmUuCi0gICAgaWYgKGNhbmRpZGF0ZU1hcmdp
blZhbHVlID4gMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPiAwKQotICAgICAgICByZXR1cm4gc3Rk
OjptYXgoY2FuZGlkYXRlTWFyZ2luVmFsdWUsIGN1cnJlbnRNYXJnaW5WYWx1ZSk7Ci0gICAgLy8g
Qm90aCBtYXJnaW5zIGFyZSBuZWdhdGl2ZS4KLSAgICBpZiAoY2FuZGlkYXRlTWFyZ2luVmFsdWUg
PCAwICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA8IDApCi0gICAgICAgIHJldHVybiAwIC0gc3RkOjpt
YXgoc3RkOjphYnMoY2FuZGlkYXRlTWFyZ2luVmFsdWUudG9GbG9hdCgpKSwgc3RkOjphYnMoY3Vy
cmVudE1hcmdpblZhbHVlLnRvRmxvYXQoKSkpOwotICAgIC8vIE9uZSBvZiB0aGUgbWFyZ2lucyBp
cyBuZWdhdGl2ZS4KLSAgICByZXR1cm4gY3VycmVudE1hcmdpblZhbHVlICsgY2FuZGlkYXRlTWFy
Z2luVmFsdWU7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAg
IEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgcmV0dXJuIGNvbXB1
dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KS5iZWZvcmU7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAg
QVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICByZXR1cm4gY29tcHV0
ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
LmFmdGVyOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpNYXJnaW5Db2xsYXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxh
eW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBOb24gY29sbGFwc2VkIG1hcmdp
biB0b3AgaW5jbHVkZXMgY29sbGFwc2VkIG1hcmdpbiBmcm9tIGluZmxvdyBmaXJzdCBjaGlsZC4K
LSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5CZWZvcmUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCksIGNvbGxhcHNlZE1hcmdpbkJlZm9yZUZyb21GaXJzdENo
aWxkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdp
bkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAv
LyBOb24gY29sbGFwc2VkIG1hcmdpbiBib3R0b20gaW5jbHVkZXMgY29sbGFwc2VkIG1hcmdpbiBm
cm9tIGluZmxvdyBsYXN0IGNoaWxkLgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5v
bkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBjb2xsYXBzZWRN
YXJnaW5BZnRlckZyb21MYXN0Q2hpbGQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwotfQotCi1M
YXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBz
ZTo6Y29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBmaXJzdCBjaGls
ZCBjb2xsYXBzZXMgaXRzIG1hcmdpbiB0b3AuCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91
dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgp
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0
aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZv
b2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRp
bmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IFRha2UgY29sbGFw
c2VkIHRocm91Z2ggbWFyZ2luIGludG8gYWNjb3VudC4KLSAgICBhdXRvJiBmaXJzdEluRmxvd0No
aWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7
Ci0gICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxh
eW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgLy8g
Q29sbGVjdCBjb2xsYXBzZWQgbWFyZ2luIHRvcCByZWN1cnNpdmVseS4KLSAgICByZXR1cm4gbWFy
Z2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGZp
cnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChsYXlv
dXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQWZ0
ZXJGcm9tTGFzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgbGFzdCBjaGlsZCBwcm9wYWdhdGVzIGl0cyBtYXJnaW4g
Ym90dG9tLgotICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICAvLyBEbyBub3QgY29sbGFwc2UgbWFyZ2luIHdpdGggYSBib3ggZnJvbSBhIG5vbi1i
bG9jayBmb3JtYXR0aW5nIGNvbnRleHQgPGRpdj48c3Bhbj5mb29iYXI8L3NwYW4+PC9kaXY+Lgot
ICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpICYmICFsYXlv
dXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgY29sbGFwc2VkIHRocm91Z2ggbWFy
Z2luLgotICAgIGF1dG8mIGxhc3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNl
c1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxkKSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBDb2xsZWN0IGNvbGxhcHNlZCBtYXJnaW4gYm90dG9t
IHJlY3Vyc2l2ZWx5LgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNl
ZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJn
aW5BZnRlckZyb21MYXN0Q2hpbGQobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpOwotfQot
Ci1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgLy8gMS4gVGhp
cyBpcyB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB0aHJv
dWdoIGFuZCB0aGUgbWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdzIG1hcmdpbiBh
ZnRlciBvcgotICAgIC8vIDIuIFRoaXMgYm94J3MgbWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRo
IHRoZSBuZXh0IHNpYmxpbmcncyBtYXJnaW4gYmVmb3JlIGFuZCB0aGF0IHNpYmxpbmcgY29sbGFw
c2VzIHRocm91Z2ggYW5kCi0gICAgLy8gd2UgY2FuIGdldCB0byB0aGUgbGFzdCBpbi1mbG93IGNo
aWxkIGxpa2UgdGhhdC4KLSAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBsYXlvdXRCb3gucGFy
ZW50KCktPmxhc3RJbkZsb3dDaGlsZCgpOwotICAgIGZvciAoYXV0byogY3VycmVudEJveCA9ICZs
YXlvdXRCb3g7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5uZXh0SW5GbG93
U2libGluZygpKSB7Ci0gICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRT
dGF0ZSwgKmN1cnJlbnRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoY3VycmVudEJveCA9PSBsYXN0SW5GbG93Q2hpbGQpCi0gICAgICAgICAgICByZXR1cm4gbWFy
Z2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpjdXJy
ZW50Qm94KTsgCi0gICAgICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxp
bmcoKmN1cnJlbnRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgLy8gVGhlIGZpcnN0IGluZmxvdyBj
aGlsZCBjb3VsZCBwcm9wYWdhdGUgaXRzIHRvcCBtYXJnaW4gdG8gcGFyZW50LgotICAgIC8vIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbCNjb2xsYXBzaW5nLW1hcmdpbnMKLSAg
ICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTWFyZ2lu
cyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNl
LgotICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94
ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE1hcmdpbnMgb2YgaW5saW5l
LWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5l
QmxvY2tCb3goKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT25seSB0aGUgZmly
c3QgaW5sZmxvdyBjaGlsZCBjb2xsYXBzZXMgd2l0aCBwYXJlbnQuCi0gICAgaWYgKGxheW91dEJv
eC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
YXV0byYgcGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKLSAgICAvLyBNYXJnaW5zIG9mIGVs
ZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5v
dCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4KLSAgICBpZiAoZXN0YWJsaXNo
ZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChoYXNCb3JkZXJCZWZvcmUocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gLi4uYW5kIHRoZSBjaGlsZCBoYXMgbm8gY2xlYXJhbmNlLgotICAgIGlm
IChoYXNDbGVhcmFuY2UobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVm
b3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5C
ZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCi17Ci0gICAgLy8gSWYgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMg
b2YgYW4gZWxlbWVudCB3aXRoIGNsZWFyYW5jZSBhcmUgYWRqb2luaW5nLCBpdHMgbWFyZ2lucyBj
b2xsYXBzZSB3aXRoIHRoZSBhZGpvaW5pbmcgbWFyZ2lucwotICAgIC8vIG9mIGZvbGxvd2luZyBz
aWJsaW5ncyBidXQgdGhhdCByZXN1bHRpbmcgbWFyZ2luIGRvZXMgbm90IGNvbGxhcHNlIHdpdGgg
dGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhcmVudCBibG9jay4KLSAgICBpZiAoIW1hcmdpbnND
b2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGZvciAoYXV0byogcHJldmlvdXNTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZp
b3VzSW5GbG93U2libGluZygpOyBwcmV2aW91c1NpYmxpbmc7IHByZXZpb3VzU2libGluZyA9IHBy
ZXZpb3VzU2libGluZy0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFt
YXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqcHJldmlvdXNTaWJsaW5nKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGhhc0NsZWFyYW5jZSgqcHJldmlv
dXNTaWJsaW5nKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAg
ICAvLyAxLiBUaGlzIGlzIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBj
b2xsYXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMgd2l0aCBwYXJl
bnQncyBtYXJnaW4gYmVmb3JlIG9yCi0gICAgLy8gMi4gVGhpcyBib3gncyBtYXJnaW4gYmVmb3Jl
IGNvbGxhcHNlcyB3aXRoIHRoZSBwcmV2aW91cyBzaWJsaW5nJ3MgbWFyZ2luIGFmdGVyIGFuZCB0
aGF0IHNpYmxpbmcgY29sbGFwc2VzIHRocm91Z2ggYW5kCi0gICAgLy8gd2UgY2FuIGdldCB0byB0
aGUgZmlyc3QgaW4tZmxvdyBjaGlsZCBsaWtlIHRoYXQuCi0gICAgYXV0byogZmlyc3RJbkZsb3dD
aGlsZCA9IGxheW91dEJveC5wYXJlbnQoKS0+Zmlyc3RJbkZsb3dDaGlsZCgpOwotICAgIGZvciAo
YXV0byogY3VycmVudEJveCA9ICZsYXlvdXRCb3g7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBj
dXJyZW50Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewotICAgICAgICBpZiAoIW1hcmdp
bnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGN1cnJlbnRCb3ggPT0gZmlyc3RJbkZsb3dDaGls
ZCkKLSAgICAgICAgICAgIHJldHVybiBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCAqY3VycmVudEJveCk7IAotICAgICAgICBpZiAoIW1hcmdp
bkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcoKmN1cnJlbnRCb3gpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5B
ZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQotewotICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAv
LyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3Qg
Y29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRp
b25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gTWFyZ2lucyBv
ZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlvdXRCb3gu
aXNJbmxpbmVCbG9ja0JveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBPbmx5
IHRoZSBsYXN0IGlubGZsb3cgY2hpbGQgY29sbGFwc2VzIHdpdGggcGFyZW50LgotICAgIGlmIChs
YXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKLSAgICAvLyBNYXJnaW5zIG9m
IGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRv
IG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCi0gICAgaWYgKGVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrIGJveCB3
aXRoIGEgJ2hlaWdodCcgb2YgJ2F1dG8nIGNvbGxhcHNlcyB3aXRoIGl0cyBsYXN0IGluLWZsb3cg
YmxvY2stbGV2ZWwgY2hpbGQncyBib3R0b20gbWFyZ2luLCBpZjoKLSAgICBpZiAoIXBhcmVudC5z
dHlsZSgpLmhlaWdodCgpLmlzQXV0bygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAv
LyB0aGUgYm94IGhhcyBubyBib3R0b20gcGFkZGluZywgYW5kCi0gICAgaWYgKGhhc1BhZGRpbmdC
ZWZvcmUocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gdGhlIGJveCBo
YXMgbm8gYm90dG9tIGJvcmRlciwgYW5kCi0gICAgaWYgKGhhc0JvcmRlckJlZm9yZShwYXJlbnQp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyB0aGUgY2hpbGQncyBib3R0b20gbWFy
Z2luIG5laXRoZXIgY29sbGFwc2VzIHdpdGggYSB0b3AgbWFyZ2luIHRoYXQgaGFzIGNsZWFyYW5j
ZS4uLgotICAgIGlmIChtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3Jl
V2l0aENsZWFyYW5jZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gbm9yIChpZiB0aGUgYm94J3MgbWluLWhlaWdodCBpcyBub24temVybykg
d2l0aCB0aGUgYm94J3MgdG9wIG1hcmdpbi4KLSAgICBhdXRvIGNvbXB1dGVkTWluSGVpZ2h0ID0g
cGFyZW50LnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpOwotICAgIGlmICghY29tcHV0ZWRNaW5I
ZWlnaHQuaXNBdXRvKCkgJiYgY29tcHV0ZWRNaW5IZWlnaHQudmFsdWUoKSAmJiBtYXJnaW5BZnRl
ckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKLXsK
LSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIGlmICghbGF5
b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3VzSW5G
bG93U2libGluZygpOwotCi0gICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5k
IGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlvdXRCb3guaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gTWFyZ2lucyBvZiBhYnNv
bHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmICgobGF5b3V0
Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guc3R5bGUoKS50b3AoKS5p
c0F1dG8oKSkKLSAgICAgICAgfHwgKHByZXZpb3VzSW5GbG93U2libGluZy5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nLnN0eWxlKCkuYm90dG9tKCkuaXNB
dXRvKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGlubGlu
ZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc0lubGlu
ZUJsb2NrQm94KCkgfHwgcHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzSW5saW5lQmxvY2tCb3goKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4g
aW4tZmxvdyBibG9jay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9w
IG1hcmdpbiBvZgotICAgIC8vIGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywg
dW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgIGlmIChoYXNDbGVhcmFuY2Uo
bGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
OjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZyhjb25zdCBCb3gmIGxheW91dEJv
eCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIGlm
ICghbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKCps
YXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSk7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdo
KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17
Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBBIGJv
eCdzIG93biBtYXJnaW5zIGNvbGxhcHNlIGlmIHRoZSAnbWluLWhlaWdodCcgcHJvcGVydHkgaXMg
emVybywgYW5kIGl0IGhhcyBuZWl0aGVyIHRvcCBvciBib3R0b20gYm9yZGVycyBub3IgdG9wIG9y
IGJvdHRvbSBwYWRkaW5nLAotICAgIC8vIGFuZCBpdCBoYXMgYSAnaGVpZ2h0JyBvZiBlaXRoZXIg
MCBvciAnYXV0bycsIGFuZCBpdCBkb2VzIG5vdCBjb250YWluIGEgbGluZSBib3gsIGFuZCBhbGwg
b2YgaXRzIGluLWZsb3cgY2hpbGRyZW4ncyBtYXJnaW5zIChpZiBhbnkpIGNvbGxhcHNlLgotICAg
IGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNCb3JkZXJBZnRlcihsYXlvdXRC
b3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShs
YXlvdXRCb3gpIHx8IGhhc1BhZGRpbmdBZnRlcihsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIGNvbXB1dGVkIDAgaGVpZ2h0LgotICAg
IGlmICghbGF5b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgY29tcHV0ZWQgMCBoZWlnaHQuCi0g
ICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5taW5IZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZv
cm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgaWYgKGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94
KSkuaW5saW5lUnVucygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBmb3IgKGF1dG8qIGluZmxvd0NoaWxkID0gZG93bmNhc3Q8Q29u
dGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hpbGQoKTsgaW5mbG93Q2hpbGQ7IGluZmxv
d0NoaWxkID0gaW5mbG93Q2hpbGQtPm5leHRJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgICAg
IGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgaWYgKGxheW91dEJveC5pc0Fu
b255bW91cygpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChsYXlvdXRCb3guaXNC
bG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2luaW5nTWFyZ2lu
QmVmb3JlQW5kQWZ0ZXIoKSBpbnRvIGFjY291bnQuCi0gICAgaWYgKG1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IEZpbmQgb3V0IHRoZSBsb2dpYyBiZWhpbmQg
dGhpcy4KLSAgICBpZiAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25v
cmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGxh
eW91dEJveCkpIHsKLSAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJl
Zm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29s
bGFwc2VkIHRocm91Z2ggdmFsdWUuCi0gICAgICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gbm9uQ29s
bGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBhdXRv
IG1hcmdpbkFmdGVyID0gbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91
dEJveCk7IAotICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3JlLCBtYXJnaW5B
ZnRlcik7Ci0gICAgfQotCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBi
bG9jay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBv
ZiBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsCi0gICAgLy8gdW5sZXNzIHRo
YXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgIGF1dG8qIHByZXZpb3VzSW5GbG93U2libGlu
ZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIXByZXZpb3Vz
SW5GbG93U2libGluZykKLSAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLQotICAgIGF1dG8gcHJldmlvdXNTaWJsaW5nTWFyZ2lu
QWZ0ZXIgPSBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5G
bG93U2libGluZyk7Ci0gICAgYXV0byBtYXJnaW5CZWZvcmUgPSBub25Db2xsYXBzZWRNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgcmV0dXJuIG1hcmdpblZhbHVlKG1h
cmdpbkJlZm9yZSwgcHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIpOwotfQotCi1MYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2lu
QWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKLXsKLSAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBU
T0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVBbmRCb3R0b20oKSBpbnRvIGFjY291
bnQuCi0gICAgaWYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChtYXJn
aW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIC8vIEZsb2F0cyBhbmQgb3V0IG9mIGZsb3cgcG9zaXRpb25lZCBib3hlcyBk
byBub3QgY29sbGFwc2UgdGhlaXIgbWFyZ2lucy4KLSAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFw
c2VzV2l0aE5leHRTaWJsaW5nKGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBub25Db2xsYXBz
ZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLQotICAgIC8vIFRoZSBib3R0
b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29sbGFw
c2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YgaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBz
aWJsaW5nLAotICAgIC8vIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5jZS4KLSAgICBp
ZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsK
LX0KLQotfQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUJveC5jcHAKaW5kZXggMDI3YjQzNGJiYzZkNGMyZjU1MTBhZmNlOWM1MDc4Mzll
NjQ5ZTI0NC4uNmRiN2RlZGIzN2FjOWUzOGZiOTQ1NjgyOTY5ZTg3ZDZiZTQzZWVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcApAQCAt
NjAsNyArNjAsNyBAQCBCb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwgbV9ob3Jpem9u
dGFsTWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbE1hcmdpbikKICAgICAsIG1fdmVydGljYWxNYXJn
aW4ob3RoZXIubV92ZXJ0aWNhbE1hcmdpbikKICAgICAsIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVk
TWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKQotICAgICwgbV9lc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUpCisgICAgLCBt
X2hhc0NsZWFyYW5jZShvdGhlci5tX2hhc0NsZWFyYW5jZSkKICAgICAsIG1fYm9yZGVyKG90aGVy
Lm1fYm9yZGVyKQogICAgICwgbV9wYWRkaW5nKG90aGVyLm1fcGFkZGluZykKICNpZiAhQVNTRVJU
X0RJU0FCTEVECkBAIC03NCw2ICs3NCw3IEBAIEJveDo6Qm94KGNvbnN0IEJveCYgb3RoZXIpCiAg
ICAgLCBtX2hhc1ZhbGlkUGFkZGluZyhvdGhlci5tX2hhc1ZhbGlkUGFkZGluZykKICAgICAsIG1f
aGFzVmFsaWRDb250ZW50SGVpZ2h0KG90aGVyLm1faGFzVmFsaWRDb250ZW50SGVpZ2h0KQogICAg
ICwgbV9oYXNWYWxpZENvbnRlbnRXaWR0aChvdGhlci5tX2hhc1ZhbGlkQ29udGVudFdpZHRoKQor
ICAgICwgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5CZWZv
cmUpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5oCmluZGV4IDU2MzkyZjQ3ZWU3OWUzMGQzZjBlMjE4OTRkM2YxNGJiODc1ZDdl
ODkuLjVhY2IwODdmZmFiNDkyMDRmNmNiNjc2N2QxNTdkMzMwNzA5OTlkMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtMTM2LDIxICsx
MzYsMjAgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBi
b3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94V2lkdGgo
KSArIHBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCkgKyBib3JkZXJSaWdodCgpOyB9CiAgICAgTGF5
b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KS52YWx1ZU9yKDApICsgY29udGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpLnZhbHVl
T3IoMCkgKyBib3JkZXJCb3R0b20oKTsgfQogICAgIFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJu
IHsgdG9wKCksIGxlZnQoKSwgd2lkdGgoKSwgaGVpZ2h0KCkgfTsgfQotICAgIFJlY3QgcmVjdFdp
dGhNYXJnaW4oKSBjb25zdCB7IHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIGxlZnQo
KSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2luRW5kKCks
IG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5BZnRlcigpIH07IH0KKyAgICBSZWN0
IHJlY3RXaXRoTWFyZ2luKCkgY29uc3Q7CiAKICAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIHZl
cnRpY2FsTWFyZ2luKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25z
dDsKICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBt
YXJnaW5BZnRlcigpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNDbGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0NsZWFyYW5jZTsgfQog
CiAgICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5p
dCBub25Db21wdXRlZE1hcmdpblN0YXJ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBub25Db21w
dXRlZE1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1h
dGVkTWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7
IH0KLQogICAgIExheW91dFVuaXQgYm9yZGVyVG9wKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBi
b3JkZXJMZWZ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0b20oKSBjb25zdDsK
QEAgLTE3NSw2ICsxNzQsMTEgQEAgcHVibGljOgogICAgIFJlY3QgcGFkZGluZ0JveCgpIGNvbnN0
OwogICAgIFJlY3QgY29udGVudEJveCgpIGNvbnN0OwogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgIHZvaWQgc2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dDo6RXN0aW1hdGVkTWFyZ2lu
QmVmb3JlIG1hcmdpbkJlZm9yZSkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkJl
Zm9yZTsgfQorICAgIE9wdGlvbmFsPExheW91dDo6RXN0aW1hdGVkTWFyZ2luQmVmb3JlPiBlc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9y
ZTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgc3RydWN0IFN0eWxlIHsKICAgICAgICAgU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKQEAgLTE5NCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAg
IHZvaWQgc2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbik7CiAgICAgdm9p
ZCBzZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2lu
KTsKLSAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdpbkJlZm9yZShMYXlvdXRVbml0IG1hcmdpbkJl
Zm9yZSkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZTsgfQorICAgIHZv
aWQgc2V0SGFzQ2xlYXJhbmNlKCkgeyBtX2hhc0NsZWFyYW5jZSA9IHRydWU7IH0KIAogICAgIHZv
aWQgc2V0Qm9yZGVyKExheW91dDo6RWRnZXMpOwogICAgIHZvaWQgc2V0UGFkZGluZyhPcHRpb25h
bDxMYXlvdXQ6OkVkZ2VzPik7CkBAIC0yMDMsNiArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGludmFsaWRhdGVNYXJnaW4oKTsKICAgICB2b2lkIGludmFsaWRhdGVCb3JkZXIoKSB7IG1faGFz
VmFsaWRCb3JkZXIgPSBmYWxzZTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZVBhZGRpbmcoKSB7IG1f
aGFzVmFsaWRQYWRkaW5nID0gZmFsc2U7IH0KKyAgICB2b2lkIGludmFsaWRhdGVFc3RpbWF0ZWRN
YXJnaW5CZWZvcmUoKSB7IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0geyB9OyB9CiAKICAgICB2
b2lkIHNldEhhc1ZhbGlkVG9wKCkgeyBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsgfQogICAgIHZvaWQg
c2V0SGFzVmFsaWRMZWZ0KCkgeyBtX2hhc1ZhbGlkTGVmdCA9IHRydWU7IH0KQEAgLTIyNyw3ICsy
MzIsNyBAQCBwcml2YXRlOgogICAgIExheW91dDo6SG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250
YWxNYXJnaW47CiAgICAgTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbiBtX3ZlcnRpY2FsTWFyZ2luOwog
ICAgIExheW91dDo6SG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdp
bjsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKKyAg
ICBib29sIG1faGFzQ2xlYXJhbmNlOwogCiAgICAgTGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKICAg
ICBPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBtX3BhZGRpbmc7CkBAIC0yNDMsNiArMjQ4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faGFzVmFsaWRQYWRkaW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1faGFzVmFsaWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRD
b250ZW50V2lkdGggeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPExheW91dDo6RXN0aW1hdGVkTWFy
Z2luQmVmb3JlPiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKICNlbmRpZgogfTsKIApAQCAtNTIw
LDggKzUyNiw4IEBAIGlubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpW
ZXJ0aWNhbE1hcmdpbiBtYXJnaW4pCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHNldEhhc1Zh
bGlkVmVydGljYWxNYXJnaW4oKTsKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2Vk
TWFyZ2luKCk7CisgICAgaW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSgpOwogI2VuZGlm
Ci0gICAgQVNTRVJUKCFtX2VzdGltYXRlZE1hcmdpbkJlZm9yZSB8fCAqbV9lc3RpbWF0ZWRNYXJn
aW5CZWZvcmUgPT0gbWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmUpOwogICAgIG1fdmVydGljYWxN
YXJnaW4gPSBtYXJnaW47CiB9CiAKQEAgLTU0OSw2ICs1NTUsMTQgQEAgaW5saW5lIHZvaWQgQm94
OjpzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+IHBhZGRpbmcpCiAgICAgbV9wYWRk
aW5nID0gcGFkZGluZzsKIH0KIAoraW5saW5lIEJveDo6UmVjdCBCb3g6OnJlY3RXaXRoTWFyZ2lu
KCkgY29uc3QKK3sKKyAgICBhdXRvIG1hcmdpbkFmdGVyID0gdGhpcy0+bWFyZ2luQWZ0ZXIoKTsK
KyAgICBpZiAobV92ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSAmJiBtX3ZlcnRpY2Fs
TWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5pc0NvbGxhcHNlZFRocm91Z2gpCisgICAgICAgIG1h
cmdpbkFmdGVyID0gMDsKKyAgICByZXR1cm4geyB0b3AoKSAtIG1hcmdpbkJlZm9yZSgpLCBsZWZ0
KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJnaW5TdGFydCgpICsgd2lkdGgoKSArIG1hcmdpbkVuZCgp
LCBtYXJnaW5CZWZvcmUoKSArIGhlaWdodCgpICsgbWFyZ2luQWZ0ZXIgfTsKK30KKwogaW5saW5l
IExheW91dDo6VmVydGljYWxNYXJnaW4gQm94Ojp2ZXJ0aWNhbE1hcmdpbigpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggNzFmYzA2MDY1MjI3ODBk
YmFkMjNhOThmNTk5NGE4NTM4Y2EzMmUzOS4uZmNkYjUwNzdlNmNkOGY1MzNiY2FmYmQxMTFhN2M4
MDI1NDU3OWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9h
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRp
bmdDb250ZXh0LmNwcApAQCAtMTgzLDM0ICsxODMsMzIgQEAgT3B0aW9uYWw8UG9zaXRpb24+IEZs
b2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQm94JiBs
YXkKICAgICAgICAgaWYgKGNsZWFyYW5jZSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
IAorICAgICAgICBkaXNwbGF5Qm94LnNldEhhc0NsZWFyYW5jZSgpOwogICAgICAgICAvLyBDbGVh
cmFuY2UgaW5oaWJpdHMgbWFyZ2luIGNvbGxhcHNpbmcuIExldCdzIHJlc2V0IHRoZSByZWxldmFu
dCBhZGpvaW5pbmcgbWFyZ2lucy4KICAgICAgICAgaWYgKGF1dG8qIHByZXZpb3VzSW5GbG93U2li
bGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAgICAgICAgICAg
YXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZv
ckxheW91dEJveCgqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIC8vIERvZXMg
dGhpcyBib3ggd2l0aCBjbGVhcmFuY2UgYWN0dWFsbHkgY29sbGFwc2UgaXRzIG1hcmdpbiBiZWZv
cmUgd2l0aCB0aGUgcHJldmlvdXMgaW5mbG93IGJveCdzIG1hcmdpbiBhZnRlcj8gCisgICAgICAg
ICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOwor
ICAgICAgICAgICAgaWYgKHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHZlcnRp
Y2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5iZWZvcmUpIHsKKyAgICAgICAgICAgICAgICAv
LyBSZXNldCBwcmV2aW91cyBib3R0b20gYWZ0ZXIgYW5kIGN1cnJlbnQgbWFyZ2luIGJlZm9yZSB0
byBub24tY29sbGFwc2luZy4KKyAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzVmVydGljYWxN
YXJnaW4gPSBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gudmVydGljYWxNYXJnaW4oKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQocHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMo
KSAmJiBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5hZnRlcik7CiAK
LSAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBwcmV2aW91cyBpbmZsb3cgc2libGluZyBoYXMgYWxy
ZWFkeSBiZWVuIGxhaWQgb3V0LCBpdHMgbWFyZ2luIGlzIGNvbGxhcHNlZCBieSBub3cuCi0gICAg
ICAgICAgICBBU1NFUlQoIXByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigpKTsK
LSAgICAgICAgICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gZGlzcGxheUJveC5tYXJnaW5CZWZv
cmUoKTsKLQotICAgICAgICAgICAgLy8gUmVzZXQgcHJldmlvdXMgYm90dG9tIGFuZCBjdXJyZW50
IHRvcCBtYXJnaW5zIHRvIG5vbi1jb2xsYXBzaW5nLgotICAgICAgICAgICAgYXV0byBwcmV2aW91
c1ZlcnRpY2FsTWFyZ2luID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2lu
KCk7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1
ZXMoKSAmJiBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5hZnRlcikg
eworICAgICAgICAgICAgICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gKnZlcnRpY2FsTWFyZ2lu
LmNvbGxhcHNlZFZhbHVlcygpLT5iZWZvcmU7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNWZXJ0
aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoeyBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNv
bGxhcHNlZFZhbHVlcygpLT5iZWZvcmUsIHsgfSB9KTsKICAgICAgICAgICAgICAgICBwcmV2aW91
c0luRmxvd0Rpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4ocHJldmlvdXNWZXJ0aWNhbE1hcmdp
bik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogY2hlY2sgaWYgY29sbGFw
c2luZyB0aHJvdWdoIGhhcyBhbnl0aGluZyB0byBkbyB3aXRoIHRoaXMuCi0gICAgICAgICAgICBh
dXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOwotICAgICAg
ICAgICAgaWYgKHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHZlcnRpY2FsTWFy
Z2luLmNvbGxhcHNlZFZhbHVlcygpLT5iZWZvcmUpIHsKKwogICAgICAgICAgICAgICAgIHZlcnRp
Y2FsTWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFw
c2VkVmFsdWVzKCktPmFmdGVyIH0pOwogICAgICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVy
dGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJn
aW5BZnRlcigpICsgZGlzcGxheUJveC5tYXJnaW5CZWZvcmUoKTsKLSAgICAgICAgICAgIGF1dG8g
bWFyZ2luT2Zmc2V0ID0gbm9uQ29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOwotICAg
ICAgICAgICAgLy8gTW92ZSB0aGUgYm94IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBi
ZSB3aXRoIG5vbi1jb2xsYXBzZWQgbWFyZ2lucy4KLSAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRv
cCArPSBtYXJnaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJn
aW4gPSBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLnVzZWRWYWx1ZXMoKS5hZnRlciArIHZlcnRpY2Fs
TWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmU7CisgICAgICAgICAgICAgICAgYXV0byBtYXJnaW5E
aWZmZXJlbmNlID0gbm9uQ29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOworICAgICAg
ICAgICAgICAgIC8vIE1vdmUgdGhlIGJveCB0byB0aGUgcG9zaXRpb24gd2hlcmUgaXQgd291bGQg
YmUgd2l0aCBub24tY29sbGFwc2VkIG1hcmdpbnMuCisgICAgICAgICAgICAgICAgcm9vdFJlbGF0
aXZlVG9wICs9IG1hcmdpbkRpZmZlcmVuY2U7CiAKLSAgICAgICAgICAgIC8vIEhhdmluZyBuZWdh
dGl2ZSBjbGVhcmFuY2UgaXMgYWxzbyBub3JtYWwuIEl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgYm94
IHdpdGggdGhlIG5vbi1jb2xsYXBzZWQgbWFyZ2lucyBpcyBub3cgbG93ZXIgdGhhbiBpdCBuZWVk
cyB0byBiZS4KLSAgICAgICAgICAgIGNsZWFyYW5jZSAtPSBtYXJnaW5PZmZzZXQ7CisgICAgICAg
ICAgICAgICAgLy8gSGF2aW5nIG5lZ2F0aXZlIGNsZWFyYW5jZSBpcyBhbHNvIG5vcm1hbC4gSXQg
anVzdCBtZWFucyB0aGF0IHRoZSBib3ggd2l0aCB0aGUgbm9uLWNvbGxhcHNlZCBtYXJnaW5zIGlz
IG5vdyBsb3dlciB0aGFuIGl0IG5lZWRzIHRvIGJlLgorICAgICAgICAgICAgICAgIGNsZWFyYW5j
ZSAtPSBtYXJnaW5EaWZmZXJlbmNlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IC8vIE5vdyBhZGp1c3QgdGhlIGJveCdzIHBvc2l0aW9uIHdpdGggdGhlIGNsZWFyYW5jZS4KICAg
ICAgICAgcm9vdFJlbGF0aXZlVG9wICs9IGNsZWFyYW5jZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZGNlZTFlNTI3MDBmYWUwYTczN2M1MDA4
ZDVhODVmMGYxYThmMDYwLi5jNmQzOGQ2YjczNzU3MjM5YzNhNTVmODFhMzY4NjRlNmJhYjNiODVi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTgtMTItMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbTEZDXVtCRkNdW01hcmdpbkNvbGxhcHNpbmddIEFkZCBzdXBwb3J0IGZvciBw
ZWN1bGlhciBjYXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MjYyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQ6CisKIDIw
MTgtMTItMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFdlYkRyaXZlcjogd2FybiBhYm91dCBub24gZXhpc3RpbmcgdGVzdHMgd2hlbiBwYXJz
aW5nIGV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9M
RkMtcGFzc2luZy10ZXN0cy50eHQgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNz
aW5nLXRlc3RzLnR4dAppbmRleCBmZjVlYjM4MTU0YjcyZWY4Yzg4MTdmYjI5NDVmMzUwZWJiNWQx
MDEyLi4yMjViNzQ3NWRhODNhYTVjYWFlMTkxZWE1OTFhYTYyNTFlNjljZjY4IDEwMDY0NAotLS0g
YS9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dAorKysgYi9U
b29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dApAQCAtNCwyMyAr
NCw2NiBAQCBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtbGVmdC1hdXRvLmh0bWwKIGZh
c3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1sZWZ0LXJpZ2h0LXRvcC1ib3R0b20tYXV0by5o
dG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtbmVzdGVkMi5odG1sCiBmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtbmVzdGVkLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25s
eS9hYnNvbHV0ZS1wb3NpdGlvbi1taW4tbWF4LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWluLW1heC13aWR0aC5odG1sCitmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1p
bi10aGUtZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJz
b2x1dGUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10aGUtZm9ybWF0
dGluZy1jb250ZXh0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1zaW1wbGUu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXdpZHRoLXNocmluay10by1maXQu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXdpZHRoLXN0cmV0Y2guaHRtbAog
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXdpdGgtc3RhdGljLWJsb2NrLXBvc2l0aW9u
LW5lc3RlZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWxtb3N0LWludHJ1ZGluZy1sZWZ0
LWZsb2F0LXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0
aC1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrMi5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9k
eS1oZWlnaHQtd2l0aC1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrLmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9ib2R5LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrMi5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1ub24tYXV0by1odG1sLWhl
aWdodC1xdWlyay5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9yZGVyLXNpbXBsZS5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvY29sbGFwc2VkLW1hcmdpbi13aXRoLW1pbi1oZWlnaHQu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2ZpeGVkLW5lc3RlZC5odG1sCitmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtYW5kLXNpYmxpbmdzLXdpdGgtbWFyZ2lucy5odG1sCitmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1tdWx0aXBsZS1yb290cy5odG1sCitmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtbGVmdC5odG1sCitmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtcmlnaHQuaHRtbAorZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Zsb2F0LWF2b2lkZXItd2l0aC1tYXJnaW5zLmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9mbG9hdC1sZWZ0LXdoZW4tY29udGFpbmVyLWhhcy1wYWRkaW5nLW1hcmdpbi5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbWluLW1heC1oZWlnaHQuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0LW1pbi1tYXgtd2lkdGguaHRtbAorZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1hcmdpbi13aXRo
LW5vLWJvcmRlci5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYW5kLW5leHQt
cHJldmlvdXMtaW5mbG93LXdpdGgtbWFyZ2luLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1ib3gtY2xlYXItYm90aC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0aW5nLWJveC1jbGVhci1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS13aXRoLXRvcC1vZmZzZXQu
aHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1t
dWx0aXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXJpZ2h0LXNp
bXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtY2xlYXIt
c2libGluZ3MuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLWNs
ZWFyLXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgt
bmV3LWZvcm1hdHRpbmctY29udGV4dC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRp
bmctYm94LXdpdGgtcmVsYXRpdmUtcG9zaXRpb25lZC1zaWJsaW5nLmh0bWwKK2Zhc3QvYmxvY2sv
YmxvY2stb25seS9mbG9hdGluZy1sZWZ0LWFuZC1yaWdodC13aXRoLWNsZWFyYW5jZS5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC1zaW1wbGUuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQtcmlnaHQtd2l0aC1hbGwtbWFyZ2lucy5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdHMtYW5kLXJpZ2h0cy1zaW1w
bGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLWlu
LWJvZHkuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRz
LW11bHRpcGxlLWxpbmVzLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1tdWx0
aXBsZS1sZWZ0cy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctd2l0aC1uZXct
YmxvY2stZm9ybWF0dGluZy1jb250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9pbmZs
b3ctbWluLW1heC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4t
bWF4LXdpZHRoLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtYm90
dG9tLWJvdHRvbS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLWJv
dHRvbS1uZXN0ZWQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1m
aXJzdC1sYXN0LWFyZS1mbG9hdGluZy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2lu
LWNvbGxhcHNlLXNpbXBsZS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxh
cHNlLXRvcC1uZXN0ZWQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBz
ZS13aGVuLWNoaWxkLWhhcy1wYWRkaW5nLWJvcmRlci5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGlu
Zy1jb250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0
aC1jbGVhcmFuY2UuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1sZWZ0LXJpZ2h0
LXNpemluZy1vdXQtb2YtZmxvdy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWxl
ZnQtcmlnaHQtc2l6aW5nLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tcHJvcGFn
YXRpb24tc2ltcGxlLWNvbnRlbnQtaGVpZ2h0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9t
YXJnaW4tc2libGluZy1jb2xsYXBzZS1wcm9wYWdhdGVkLmh0bWwKIGZhc3QvYmxvY2svYmxvY2st
b25seS9tYXJnaW4tc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9taW4tbWF4LWhl
aWdodC1wZXJjZW50YWdlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9uZWdhdGl2ZS1tYXJn
aW4tc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9wYWRkaW5nLW5lc3RlZC5odG1s
CiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcGFkZGluZy1zaW1wbGUuaHRtbApAQCAtMzEsODAgKzc0
LDQ5IEBAIGZhc3QvYmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1wb3NpdGlvbi13aGVuLWNvbnRh
aW5pbmctYmxvY2staXMtbm90LWluLXRoZS1mb3JtCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVs
YXRpdmUtcmlnaHQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXNpYmxpbmdz
Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1zaW1wbGUuaHRtbAotZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLXdoZW4tY29udGFpbmluZy1ibG9jay1p
cy1ub3QtaW4tdGhlLWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L21hcmdpbi1jb2xsYXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sCi1m
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGlu
Zy1jb250ZXh0Mi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbGVmdC13aGVuLWNv
bnRhaW5lci1oYXMtcGFkZGluZy1tYXJnaW4uaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS13aXRoLXRvcC1vZmZzZXQuaHRtbAot
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBs
ZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXJpZ2h0LXNpbXBsZS5o
dG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtbmV3LWZvcm1hdHRp
bmctY29udGV4dC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgt
cmVsYXRpdmUtcG9zaXRpb25lZC1zaWJsaW5nLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1sZWZ0LXJpZ2h0LXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXRpbmctbGVmdC1yaWdodC13aXRoLWFsbC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdGluZy1sZWZ0cy1hbmQtcmlnaHRzLXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMtaW4tYm9keS5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMtbXVsdGlwbGUtbGluZXMuaHRtbAot
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLmh0bWwKLWZhc3Qv
YmxvY2svYmxvY2stb25seS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1t
YXJnaW4uaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZp
b3VzLWluZmxvdy13aXRoLW1hcmdpbi13aXRoLW5vLWJvcmRlci5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXRpbmctbGVmdC1hbmQtcmlnaHQtd2l0aC1jbGVhcmFuY2UuaHRtbAotZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWFuZC1zaWJsaW5ncy13aXRoLW1hcmdpbnMuaHRtbAot
ZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aXRoLWNsZWFyYW5jZS5odG1s
Ci1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtbGVmdC5odG1sCi1m
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtcmlnaHQuaHRtbAotZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2b2lkZXItbXVsdGlwbGUtcm9vdHMuaHRtbAotZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2b2lkZXItd2l0aC1tYXJnaW5zLmh0bWwKLWZhc3Qv
YmxvY2svYmxvY2stb25seS9pbmZsb3ctbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvaW5mbG93LW1pbi1tYXgtaGVpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9hYnNv
bHV0ZS1wb3NpdGlvbi1taW4tbWF4LWhlaWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
ZmxvYXQtbWluLW1heC1oZWlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L21pbi1tYXgt
aGVpZ2h0LXBlcmNlbnRhZ2UuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0
LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L2JvZHktaGVpZ2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKLWZh
c3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVp
cmsuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1s
LWhlaWdodC1xdWlyazIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2NvbGxhcHNlZC1tYXJn
aW4td2l0aC1taW4taGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDAyLmh0bWwKK2Zhc3Qv
YmxvY2svYmFzaWMvMDAzLmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA2Lmh0bWwKK2Zhc3QvYmxv
Y2svYmFzaWMvMDA3Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA4Lmh0bWwKK2Zhc3QvYmxvY2sv
YmFzaWMvMDA5Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDEyLmh0bWwKK2Zhc3QvYmxvY2svYmFz
aWMvY2hpbGQtYmxvY2stbGV2ZWwtYm94LXdpdGgtaGVpZ2h0LXBlcmNlbnQuaHRtbAorZmFzdC9i
bG9jay9iYXNpYy9oZWlnaHQtcGVyY2VudGFnZS1zaW1wbGUuaHRtbAogZmFzdC9ibG9jay9iYXNp
Yy9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0aW5nLWltYWdlLmh0bWwKIGZhc3QvYmxvY2svYmFz
aWMvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdGluZy1pbWFnZXMyLmh0bWwKLWZhc3QvaW5saW5l
L3NpbXBsZS1pbnRydWRpbmctZmxvYXQxLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRp
bmctZmxvYXRzMi5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czMuaHRt
bAotZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1ibG9jay5odG1sCi1mYXN0L2lubGluZS9zaW1w
bGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2suaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlu
bGluZS1pbmZsb3ctcG9zaXRpb25lZC5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdp
dGgtb3V0LW9mLWZsb3ctZGVzY2VuZGFudC5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5l
LXdpdGgtb3V0LW9mLWZsb3ctZGVzY2VuZGFudDIuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNv
bnRlbnQtd2l0aC1wYWRkaW5nLWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNv
bnRlbnQtd2l0aC1ib3JkZXItbGVmdC1yaWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29u
dGVudC13aXRoLW1hcmdpbi1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250
ZW50LWFuZC1uZXN0ZWQtZm9ybWF0dGluZy1yb290LXdpdGgtbWFyZ2luLWxlZnQtcmlnaHQuaHRt
bAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1pbWFnZS1zaW1wbGUuaHRtbAotZmFz
dC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdC1hbmQtbWFyZ2luLmh0bWwKLWZhc3Qv
YmxvY2svYmFzaWMvaGVpZ2h0LXBlcmNlbnRhZ2Utc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmFz
aWMvY2hpbGQtYmxvY2stbGV2ZWwtYm94LXdpdGgtaGVpZ2h0LXBlcmNlbnQuaHRtbAorZmFzdC9i
bG9jay9iYXNpYy9wZXJjZW50LWhlaWdodC1pbnNpZGUtYW5vbnltb3VzLWJsb2NrLmh0bWwKIGZh
c3QvYmxvY2svYmFzaWMvcXVpcmstbW9kZS1wZXJjZW50LWhlaWdodC5odG1sCitmYXN0L2Jsb2Nr
L2Jhc2ljL3F1aXJrLXBlcmNlbnQtaGVpZ2h0LWdyYW5kY2hpbGQuaHRtbAogZmFzdC9ibG9jay9m
bG9hdC8wMDEuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMDcuaHRtbAogZmFzdC9ibG9jay9mbG9h
dC8wMDguaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMDkuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8w
MTMuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMTkuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDIu
aHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDMuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDYuaHRt
bAotZmFzdC9ibG9jay9iYXNpYy8wMDcuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDguaHRtbAot
ZmFzdC9ibG9jay9iYXNpYy8wMDkuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMTIuaHRtbAorZmFz
dC9ibG9jay9mbG9hdC9uZWdhdGl2ZS1tYXJnaW4tY2xlYXIuaHRtbAorZmFzdC9ibG9jay9mbG9h
dC9vdmVyaGFuZ2luZy1hZnRlci1oZWlnaHQtZGVjcmVhc2Utb2Zmc2V0cy5odG1sCitmYXN0L2Js
b2NrL2Zsb2F0L292ZXJoYW5naW5nLWFmdGVyLWhlaWdodC1kZWNyZWFzZS5odG1sCitmYXN0L2Js
b2NrL2Zsb2F0L292ZXJsYXBwaW5nLWZsb2F0cy13aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sCitm
YXN0L2Jsb2NrL2Zsb2F0L3ByZXZpb3VzLXNpYmxpbmctYWJzcG9zLTAwMi5odG1sCitmYXN0L2Js
b2NrL2Zsb2F0L3JlbGF0aXZlLXBhaW50ZWQtdHdpY2UuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9h
dm9pZGFuY2UtcnRsLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvYnItd2l0aC1jbGVhci5odG1sCitm
YXN0L2Jsb2NrL2Zsb2F0L2NsYW1wZWQtcmlnaHQtZmxvYXQuaHRtbAorZmFzdC9ibG9jay9mbG9h
dC9mbG9hdC1vbi16ZXJvLWhlaWdodC1saW5lLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXQt
b3ZlcmhhbmdzLXJvb3QuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdC13aXRoLWFub255bW91
cy1wcmV2aW91cy1zaWJsaW5nLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXRzLW5vdC1jbGVh
cmVkLWNyYXNoLmh0bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAwMi5odG1sCiBmYXN0
L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wMDMuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFw
c2UvMDI2Lmh0bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyNy5odG1sCitmYXN0L2Js
b2NrL21hcmdpbi1jb2xsYXBzZS8wMjguaHRtbAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2Uv
MDI5Lmh0bWwKK2Zhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAzNS5odG1sCiBmYXN0L2Jsb2Nr
L21hcmdpbi1jb2xsYXBzZS8wMzkuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDQw
Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvMDAzLmh0bWwKIGZhc3QvYmxvY2svcG9zaXRp
b25pbmcvMDA0Lmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDA1Lmh0bWwKIGZhc3QvYmxv
Y2svcG9zaXRpb25pbmcvMDA2Lmh0bWwKQEAgLTE0NSw4ICsxNTcsMjkgQEAgZmFzdC9ibG9jay9w
b3NpdGlvbmluZy8wNDYuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNDkuaHRtbAogZmFz
dC9ibG9jay9wb3NpdGlvbmluZy8wNTIuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNTQu
aHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNjAuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlv
bmluZy9hYnNvbHV0ZS1wb3NpdGlvbmluZy1uby1zY3JvbGxiYXIuaHRtbAorZmFzdC9ibG9jay9w
b3NpdGlvbmluZy9jaGFuZ2UtY29udGFpbmluZy1ibG9jay1mb3ItYWJzb2x1dGUtcG9zaXRpb25l
ZC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2NoYW5nZS1jb250YWluaW5nLWJsb2NrLWZv
ci1maXhlZC1wb3NpdGlvbmVkLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY29tcGxleC1w
b3NpdGlvbmVkLW1vdmVtZW50Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9z
aXRpb24tZGV0YWNoZWQtZnJhbWUuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1w
b3NpdGlvbi1zdGFja2luZy1jb250ZXh0Mi5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2Zp
eGVkLXBvc2l0aW9uLXN0YWNraW5nLWNvbnRleHQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmlu
Zy9oaWRpbmctaW5zaWRlLXJlbHBvc2l0aW9uZWQtaW5saW5lLmh0bWwKK2Zhc3QvYmxvY2svcG9z
aXRpb25pbmcvaW5zZXJ0LXBvc2l0aW9uZWQtaW4tYW5vbnltb3VzLWNyYXNoLmh0bWwKK2Zhc3Qv
YmxvY2svcG9zaXRpb25pbmcvbGVmdG1hcmdpbi10b3BtYXJnaW4uaHRtbAorZmFzdC9ibG9jay9w
b3NpdGlvbmluZy9uZWdhdGl2ZS1yZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ibG9jay9wb3NpdGlv
bmluZy9hYnMtaW5zaWRlLWlubGluZS1yZWwuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9w
cmVmLXdpZHRoLWNoYW5nZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3JlbGF0aXZlLW92
ZXJmbG93LXJlcGxhY2VkLWZsb2F0Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvc3RhdGlj
LWlubGluZS1wb3NpdGlvbi1keW5hbWljLmh0bWwKIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMv
YmFzaWMtZmxvYXQtaW50cnVzaW9uLmh0bWwKIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvY3Jh
c2gtb24tZmlyc3QtbGluZS1jaGFuZ2UuaHRtbAorZmFzdC9ibG9jay9saW5lYm94Y29udGFpbi9y
ZXBsYWNlZC5odG1sCitmYXN0L2Jsb2NrL2NvbGxhcHNlLWFub24tYmxvY2std2l0aC1mbG9hdC1z
aWJsaW5ncy1vbmx5Lmh0bWwKK2Zhc3QvYmxvY2svY3Jhc2gtd2hlbi1hbm9ueW1vdXMtYmxvY2tz
LWFyZS1tZXJnZWQtd2l0aC1zaW1wbGUtbGluZS1sYXlvdXQuaHRtbAorZmFzdC9ibG9jay9jcmFz
aC13aGVuLXN1YnRyZWUtaXMtc3RpbGwtYXR0YWNoZWQuaHRtbAorZmFzdC9ibG9jay9nZW9tZXRy
eS1tYXAtYXNzZXJ0aW9uLXdpdGgtdGFsbC1jb250ZW50Lmh0bWwKIGZhc3QvYm9yZGVycy8wcHgt
Ym9yZGVycy1uby1saW5lLWhlaWdodC5odG1sCiBmYXN0L2JvcmRlcnMvMHB4LWJvcmRlcnMuaHRt
bAogZmFzdC9ib3JkZXJzL2Jsb2NrLW1hc2stb3ZlcmxheS1pbWFnZS1vdXRzZXQuaHRtbApAQCAt
MTU2LDExICsxODksOCBAQCBmYXN0L2JvcmRlcnMvYm9yZGVyLWltYWdlLXNjYWxlZC1ncmFkaWVu
dC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLWltYWdlLXNsaWNlLW9taXNzaW9uLmh0bWwKIGZh
c3QvYm9yZGVycy9ib3JkZXItbGVmdC1yaWdodC1zYW1lLWJvdHRvbS1kaWZmZXJlbnQtY29sb3Iu
aHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kYXNoZWQtYXQtYWxsLmh0bWwKLWZh
c3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctZGFzaGVkLmh0bWwKIGZhc3QvYm9yZGVycy9ib3Jk
ZXItcGFpbnRpbmctZG90dGVkLWF0LWFsbC5odG1sCi1mYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50
aW5nLWRvdHRlZC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdWJsZS1hdC1h
bGwuaHRtbAotZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kb3VibGUuaHRtbAogZmFzdC9i
b3JkZXJzL2JvcmRlci1wYWludGluZy1ncm9vdmUtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9i
b3JkZXItcGFpbnRpbmctaW5zZXQtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFp
bnRpbmctaW5zZXQuaHRtbApAQCAtMTY5LDQgKzE5OSw4NiBAQCBmYXN0L2JvcmRlcnMvYm9yZGVy
LXBhaW50aW5nLW91dHNldC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLXJpZGdl
LWF0LWFsbC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLXNvbGlkLWF0LWFsbC5o
dG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLXNvbGlkLmh0bWwKLWZhc3QvaW5saW5l
LWJsb2NrLzAwNC5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1pbnNldC1vdXRzZXQu
aHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtb24taHRtbC5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyLXJhZGl1cy1vbi1zdWJwaXhlbC1wb3NpdGlvbi1ub24taGlkcGkuaHRtbAorZmFz
dC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtcGVyY2VudC5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVy
LXJhZGl1cy12YWxpZC1ib3JkZXItY2xpcHBpbmcuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1y
YWRpdXMtd2lkZS1ib3JkZXItMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtd2l0
aC1ib3gtc2hhZG93LTAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpdGgtYm94
LXNoYWRvdy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXNoYWRvdy1sYXJnZS1yYWRpdXMuaHRt
bAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0FsbFN0eWxlc0FsbENvcm5lcnMuaHRtbAorZmFz
dC9ib3JkZXJzL2JvcmRlclJhZGl1c0FyY3MwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzRGFzaGVkMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAyLmh0bWwK
K2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEYXNoZWQwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9y
ZGVyUmFkaXVzRG90dGVkMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAy
Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3R0ZWQwMy5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyUmFkaXVzRG91YmxlMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rv
dWJsZTAyLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwMy5odG1sCitmYXN0
L2JvcmRlcnMvYm9yZGVyUmFkaXVzR3Jvb3ZlMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJh
ZGl1c0dyb292ZTAyLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNJbnNldDAxLmh0bWwK
K2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNJbnZhbGlkQ29sb3IuaHRtbAorZmFzdC9ib3JkZXJz
L2JvcmRlclJhZGl1c091dHNldDAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNSaWRn
ZTAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNTb2xpZDAxLmh0bWwKK2Zhc3QvYm9y
ZGVycy9ib3JkZXJSYWRpdXNTb2xpZDAyLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNT
b2xpZDAzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNTb2xpZDA0Lmh0bWwKK2Zhc3Qv
Ym9yZGVycy9kYXNoZWQtYm9yZGVyLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9y
ZGVycy9kb3R0ZWQtYm9yZGVyLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9yZGVy
cy9kb3VibGUtMXB4LWJvcmRlci1hc3NlcnQuaHRtbAorZmFzdC9ib3JkZXJzL2VtcHR5LWRyYXdy
ZWN0LWFzc2VydC1hZnRlci1waXhlbHNuYXAuaHRtbAorZmFzdC9ib3JkZXJzL2VtcHR5LW91dGxp
bmUtYm9yZGVyLWFzc2VydC5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktM3gtaW5wdXQtaGFpcmxp
bmUtYm9yZGVyLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItY2xpcHBpbmctcmlnaHQt
YWZ0ZXItbW92ZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXBhaW50aW5nLWdyb292
ZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXBhaW50aW5nLXJpZGdlLmh0bWwKK2Zh
c3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcmFkaXVzLW91dGVyLWJvcmRlci1nb2VzLXJlY3Rhbmds
ZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXJhZGl1cy13aXRoLXN1YnBpeGVsLW1h
cmdpbi1ub3QtcmVuZGVyYWJsZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXdpZHRo
LWZsb29yaW5nLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1vdXRsaW5lLWhhaXJsaW5lLXBhaW50
aW5nLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1vdXRsaW5lLW9uLXN1YnBpeGVsLXBvc2l0aW9u
Lmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1yb3VuZGVkLWJvcmRlci1vbi1zdWJwaXhlbC1wb3Np
dGlvbi5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktc2ltcGxlLWhhaXJsaW5lLWJvcmRlci1wYWlu
dGluZy5odG1sCitmYXN0L2JvcmRlcnMvbWl4ZWQtYm9yZGVyLXN0eWxlMi5odG1sCitmYXN0L2Jv
cmRlcnMvbmVnYXRpdmUtYm9yZGVyLXdpZHRoLmh0bWwKK2Zhc3QvYm9yZGVycy9vdXRsaW5lLW9m
ZnNldC1taW4tYXNzZXJ0Lmh0bWwKK2Zhc3QvYm9yZGVycy9vdXRsaW5lLW9mZnNldC1vdmVyZmxv
dy5odG1sCitmYXN0L2JvcmRlcnMvd2Via2l0LWJvcmRlci1yYWRpdXMuaHRtbAorZmFzdC9pbmxp
bmUvYWJzb2x1dGUtcG9zaXRpb25lZC1ibG9jay1pbi1jZW50cmVkLWJsb2NrLmh0bWwKK2Zhc3Qv
aW5saW5lL2Fic29sdXRlLXBvc2l0aW9uZWQtaW5saW5lLWluLWNlbnRyZWQtYmxvY2suaHRtbAor
ZmFzdC9pbmxpbmUvYW5vbnltb3VzLWJsb2NrLXdpdGgtZW1wdHktaW5saW5lLmh0bWwKK2Zhc3Qv
aW5saW5lL2hpZHBpLW91dGxpbmUtYXV0by1uZWdhdGl2ZS1vZmZzZXQtd2l0aC1ib3JkZXItcmFk
aXVzLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLW91dGxpbmUtYXV0by13aXRoLWZyYWN0aW9uYWwt
cmFkaXVzLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLW91dGxpbmUtYXV0by13aXRoLW9uZS1mb2N1
c3JpbmctcmVjdC5odG1sCitmYXN0L2lubGluZS9oaWRwaS1waXhlbC1nYXAtYmV0d2Vlbi1hZGph
Y2VudC1zZWxlY3Rpb24taW5saW5lcy5odG1sCitmYXN0L2lubGluZS9oaWRwaS1zZWxlY3QtaW5s
aW5lLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdGlv
bi1nYXAtb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktc2VsZWN0
aW9uLWdhcC1vdmVybGFwcy1pbmxpbmUtc2VsZWN0aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2lubGlu
ZS1ib2R5LXdpdGgtc2Nyb2xsYmFyLWNyYXNoLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jaGls
ZC1oZWlnaHQtd2lkdGgtY2FsYy1jcmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVu
dC13aXRoLWJvcmRlci1sZWZ0LXJpZ2h0Lmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50
LXdpdGgtZmxvYXQtYW5kLW1hcmdpbi5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13
aXRoLWltYWdlLXNpbXBsZS5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLW1h
cmdpbi1sZWZ0LXJpZ2h0Lmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtcGFk
ZGluZy1sZWZ0LXJpZ2h0Lmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1tYXJxdWVlLWNyYXNoLmh0
bWwKK2Zhc3QvaW5saW5lL2lubGluZS1wYWRkaW5nLWRpc2FibGVzLXRleHQtcXVpcmsuaHRtbAor
ZmFzdC9pbmxpbmUvbmV3LWZsb2F0LW5lZWRzLWxheW91dC13aGVuLWxpbmUtaXMtZGlydHkuaHRt
bAorZmFzdC9pbmxpbmUvcGVyY2VudGFnZS1tYXJnaW5zLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBs
ZS1pbmxpbmUtYmxvY2suaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1pbmZsb3ctcG9z
aXRpb25lZC5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZsb3ct
ZGVzY2VuZGFudDIuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1m
bG93LWRlc2NlbmRhbnQuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdDEu
aHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdHMyLmh0bWwKK2Zhc3QvaW5s
aW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMy5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtbGlu
ZS1sYXlvdXQtMTZiaXQtY29udGVudC5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRv
LWZpdC1pbmxpbmUtYmxvY2suaHRtbAorZmFzdC9pbmxpbmUvc2tpcHBlZC13aGl0ZXNwYWNlLWJv
dW5kaW5nQm94Lmh0bWwKK2Zhc3QvaW5saW5lL3NraXBwZWQtd2hpdGVzcGFjZS1jbGllbnQtcmVj
dC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358142</attachid>
            <date>2018-12-29 18:12:49 -0800</date>
            <delta_ts>2018-12-29 18:23:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20181229181241.patch</filename>
            <type>text/plain</type>
            <size>114559</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVjZmVlMWQyYzlmNjE5
N2RmNzU4MjA5NjQwMTM1Yzg0MjM4MjhmMi4uZjJlZmQ2MDk0NTBkYjRlMmUzMGYxMDVmZGQ4NTNk
ZGU3NzcyNTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxOC0xMi0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNvbWUgb2YgdGhl
IG1vcmUgcGVjdWxpYXIgY2FzZXMgbGlrZSBtYXJnaW4gY29sbHBhc2luZyB0aHJvdWdoIG11bHRp
cGxlIGJveGVzIGV0Yy4KKyAgICAgICAgQWRkIH4xMDAgbmV3IHBhc3NpbmcgY2FzZXMuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRp
bmdTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkTWluSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBz
ZWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0
VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAq
IGxheW91dC9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRT
dGF0ZTo6aGFzRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTWFyZ2lu
VHlwZXMuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5n
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2Fs
UG9zaXRpb25Gb3JGbG9hdENsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVk
VmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdo
dEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0
aW1hdGVkTWFyZ2luQWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRl
OjpzZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZl
cnRpY2FsTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nU3RhdGU6OnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdTdGF0ZTo6Y2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVm
b3JlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc0JvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpoYXNCb3JkZXJCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3Jk
ZXJBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmdCZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNQYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpl
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhQYXJlbnRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
Z01hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGls
ZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJl
Zm9yZVdpdGhDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdp
bkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpt
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2lu
c0NvbGxhcHNlVGhyb3VnaCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkUG9z
aXRpdmVBbmROZWdhdGl2ZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1hcmdp
blZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6TWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2
ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdh
dGl2ZU1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnZlcnRpY2FsKToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKiBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpoYXNDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
ZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpzZXRIYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjppbnZhbGlkYXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpyZWN0V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0Nv
bnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5n
U3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVGaW5hbFJ1bnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cG9z
dFByb2Nlc3NJbmxpbmVSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5saW5lRm9ybWF0dGluZ1N0YXRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKToKKwogMjAxOC0xMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0hhcmZCdXp6XSBXaWR0aCBub3QgY29ycmVjdGx5IHJlcG9ydGVk
IGFzIDAgZm9yIHplcm8gZm9udCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGU3ZDkzNGFkMjdmMWJm
YTkxMjMxZTFkODZkZjBiNzQxOWQ4MzhiOTAuLmU2ZmIyODRjYWY3N2UxZWJmZmZhNzVkMGJjODU4
ZDgzY2IxY2Q3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBsYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCi1sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCitsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlvbi5jcHAK
IGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAogbGF5b3V0L2Zsb2F0cy9GbG9hdEF2
b2lkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZGU0NTJjMDYyYTZiYTI2ZjQ3MzI3MDc3ZmMxZjk5YWNmY2ZkOGNlYi4u
YmQzZjc3MDg3Yjg5YWIyOTdkZWRjNmI5NmY4MzkyMGY5MjRhYmIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg4Miw3ICs1
ODgyLDcgQEAKIAkJMTE1Q0ZBODEyMDhCOEVEQTAwMUU2OTkxIC8qIEZsb2F0aW5nU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRpbmdTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTExNUNGQTg0MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTExNUNGQTg1MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMTE1Q0ZBODkyMDhCOTIxQTAwMUU2OTkxIC8qIEJsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBC
bG9ja01hcmdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9ja01hcmdpbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNGQTk1MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlv
dXRCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTExNUNGQTk2MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGF5b3V0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTE1Rjc4MDUyMDlDQkNCRDAwNzM5QzEzIC8qIEludmFsaWRhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjEw
LDcgKzE2MjEwLDcgQEAKIAkJCQkxMTVDRkE3ODIwOEI4RDlEMDAxRTY5OTEgLyogQmxvY2tGb3Jt
YXR0aW5nU3RhdGUuaCAqLywKIAkJCQkxMTIzQUZEQTIwOUFCQjIwMDA3MzZBQ0MgLyogQmxvY2tJ
bnZhbGlkYXRpb24uY3BwICovLAogCQkJCTExMjNBRkQ5MjA5QUJCMjAwMDczNkFDQyAvKiBCbG9j
a0ludmFsaWRhdGlvbi5oICovLAotCQkJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBCbG9j
a01hcmdpbkNvbGxhcHNlLmNwcCAqLywKKwkJCQkxMTVDRkE4OTIwOEI5MjFBMDAxRTY5OTEgLyog
QmxvY2tNYXJnaW4uY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBibG9ja2Zvcm1hdHRpbmc7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggYjRmNDRhODI1ZWYzYWE1OGFkMmIzNmEw
ZTJhZDIxNDc1ZjJlODdkNS4uZmExZDBhODBiYzA5MmMxOTA5YTE2MzM2MWE0MjE5NzZiZmNkOTBm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCkBAIC01MSw3ICs1MSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6OlF1
aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4CiAgICAgICAg
IGlmIChjb250YWluaW5nQmxvY2stPmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNE
b2N1bWVudEJveCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3Rh
dGUuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKTsKIAotICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29udGFp
bmluZ0Jsb2NrKTsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6
Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29u
dGFpbmluZ0Jsb2NrKTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxQYWRkaW5nID0gZGlzcGxh
eUJveC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgp
LnZhbHVlT3IoMCk7CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQm9yZGVyID0gZGlzcGxheUJv
eC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3guYm9yZGVyQm90dG9tKCk7CiAgICAgICAgICAgICBi
b2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgKz0gdmVydGljYWxN
YXJnaW4uYmVmb3JlICsgdmVydGljYWxNYXJnaW4uYWZ0ZXIgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2
ZXJ0aWNhbEJvcmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggMDQ3NzVh
YjJiYjY2OGZjMjI2YTNmYzEzMjQwNDJkYmNmMTJmYjMzZi4uMjg0NDZjZjlhZGQzZTc5ODY5ODYx
YzljYzc5YzY5ODViY2Q5ZjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAg
LTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5n
U3RhdGVGb3JCb3goY29uc3QgQm94JikgY29uc3Q7CiAgICAgRm9ybWF0dGluZ1N0YXRlJiBlc3Rh
Ymxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdDsK
KyAgICBib29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBj
b25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290
KTsgfQogICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KTsKIAogICAgIERpc3Bs
YXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCmluZGV4IDg1ZmZlZDY1OTY4Njc4OTNm
N2Q2ZTdkZjU4NjUyNGQ2ODdjMzE0OTcuLjQ0OWFiNGY2MDE5ZmEyNDkwZDNhYmRmZjQ1NmYxNzM2
NTA2MTgyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBAIC0zOSwxMCArMzks
MTEgQEAgc3RydWN0IFZlcnRpY2FsTWFyZ2luIHsKICAgICB9OwogICAgIENvbXB1dGVkVmFsdWVz
IHVzZWRWYWx1ZXMoKSBjb25zdDsKICAgICBDb21wdXRlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1
ZXMoKSBjb25zdCB7IHJldHVybiBtX25vbkNvbGxhcHNlZDsgfQotICAgIAorCiAgICAgc3RydWN0
IENvbGxhcHNlZFZhbHVlcyB7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsK
ICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYWZ0ZXI7CisgICAgICAgIGJvb2wgaXNDb2xs
YXBzZWRUaHJvdWdoIHsgZmFsc2UgfTsKICAgICB9OwogICAgIE9wdGlvbmFsPENvbGxhcHNlZFZh
bHVlcz4gY29sbGFwc2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWQ7IH0KICAg
ICB2b2lkIHNldENvbGxhcHNlZFZhbHVlcyhDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVz
KSB7IG1fY29sbGFwc2VkID0gY29sbGFwc2VkVmFsdWVzOyB9CkBAIC01MSw2ICs1Miw3IEBAIHN0
cnVjdCBWZXJ0aWNhbE1hcmdpbiB7CiAKICAgICBWZXJ0aWNhbE1hcmdpbigpID0gZGVmYXVsdDsK
ICAgICB+VmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgQ29tcHV0
ZWRWYWx1ZXMgbV9ub25Db2xsYXBzZWQ7CiAgICAgT3B0aW9uYWw8Q29sbGFwc2VkVmFsdWVzPiBt
X2NvbGxhcHNlZDsKQEAgLTcwLDYgKzcyLDEwIEBAIHN0cnVjdCBQb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW4gewogICAgIFZhbHVlcyBhZnRlcjsKIH07CiAKK3N0cnVjdCBFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUgeworICAgIExheW91dFVuaXQgY29tcHV0ZWRWYWx1ZTsKK307CisKIGlu
bGluZSBWZXJ0aWNhbE1hcmdpbjo6VmVydGljYWxNYXJnaW4oVmVydGljYWxNYXJnaW46OkNvbXB1
dGVkVmFsdWVzIG5vbkNvbGxhcHNlZCwgT3B0aW9uYWw8VmVydGljYWxNYXJnaW46OkNvbGxhcHNl
ZFZhbHVlcz4gY29sbGFwc2VkKQogICAgIDogbV9ub25Db2xsYXBzZWQobm9uQ29sbGFwc2VkKQog
ICAgICwgbV9jb2xsYXBzZWQoY29sbGFwc2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0
aW9uLmNwcAppbmRleCA4ZWIwNTQ3NDNhZmEwZWM1YThmMmI4MzQ2OTRjNGU1ODcxOWZjMmY3Li40
NTJiYjJiOTFhMDllNjk0MWRlNjQ5ZjU1YjM1YTg2YzIxMjQ4ZmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgTGF5b3V0U3Rh
dGU6OnZlcmlmeUFuZE91dHB1dE1pc21hdGNoaW5nTGF5b3V0VHJlZShjb25zdCBSZW5kZXJWaWV3
JiByZW5kZXJWCiAgICAgc2hvd0xheW91dFRyZWUoaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpLCB0
aGlzKTsKICNlbmRpZgogICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBzdHJlYW0ucmVsZWFzZSgpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworLy8gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IDQyOWMwYTk4MTFhNDhkYmY0NTUxYTRiZTkyMTMwZjI1MDE0M2EzOGIuLjkzNGJjNzhiMDBjNGNi
MjU0Nzc1MTBiMmJiZjY3NjcyZTBkYWMzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcApAQCAtMTg2LDEyICsxODYsMTQgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAKIHZvaWQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25z
dCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKLSAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMt
PmxheW91dFN0YXRlKCk7Ci0gICAgYXV0byBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBHZW9tZXRy
eTo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1
dG8gZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gTWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
bGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94KTsKKyAgICBibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLnNl
dEhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpOwogCi0gICAgYXV0byYgZGlzcGxh
eUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAg
ICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KGxheW91dEJveCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGRpc3BsYXlCb3guc2V0RXN0
aW1hdGVkTWFyZ2luQmVmb3JlKGVzdGltYXRlZE1hcmdpbkJlZm9yZSk7Ci0gICAgZGlzcGxheUJv
eC5tb3ZlVmVydGljYWxseShlc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOworI2VuZGlmCisgICAgZGlz
cGxheUJveC5zZXRUb3AoYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBz
aW5nKGxheW91dEJveCwgZXN0aW1hdGVkTWFyZ2luQmVmb3JlLmNvbXB1dGVkVmFsdWUpKTsKIH0K
IAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVm
b3JlRm9yQW5jZXN0b3JzKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdApAQCAtMjA4LDEyICsy
MTAsMTEgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFy
Z2luQmVmb3JlRm9yQW5jZXN0b3JzKGNvbnN0IEJveCYKICAgICAvLyBTbyB3aGVuIHdlIGdldCB0
byB0aGUgcG9pbnQgd2hlcmUgd2UgaW50ZXJzZWN0IHRoZSBib3ggd2l0aCB0aGUgZmxvYXQgdG8g
ZGVjaWRlIGlmIHRoZSBib3ggbmVlZHMgdG8gbW92ZSwgd2UgZG9uJ3QgeWV0IGhhdmUgdGhlIGZp
bmFsIHZlcnRpY2FsIHBvc2l0aW9uLgogICAgIC8vCiAgICAgLy8gVGhlIGlkZWEgaGVyZSBpcyB0
aGF0IGFzIGxvbmcgYXMgd2UgZG9uJ3QgY3Jvc3MgdGhlIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4
dCBib3VuZGFyeSwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJlLWNvbXB1dGUgdGhlIGZpbmFsIHRv
cCBtYXJnaW4uCi0gICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwor
ICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlKCk7CiAKICAg
ICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBhbmNl
c3RvciAmJiAhYW5jZXN0b3ItPmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyBh
bmNlc3RvciA9IGFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgewotICAgICAgICBhdXRvJiBk
aXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqYW5jZXN0b3Ip
OwogICAgICAgICAvLyBGSVhNRTogd2l0aCBpbmNyZW1lbnRhbCBsYXlvdXQsIHdlIG1pZ2h0IGFj
dHVhbGx5IGhhdmUgYSB2YWxpZCAobm9uLWVzdGltYXRlZCkgbWFyZ2luIHRvcCBhcyB3ZWxsLgot
ICAgICAgICBpZiAoZGlzcGxheUJveC5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkKKyAgICAgICAg
aWYgKGZvcm1hdHRpbmdTdGF0ZS5oYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVm
b3JlKCphbmNlc3Rvcik7CkBAIC0yMzgsMTAgKzIzOSwxMCBAQCB2b2lkIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OnByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRm9ybWF0dGluZ1Jvb3RJZk5l
ZWRlZAogfQogCiAjaWZuZGVmIE5ERUJVRwotc3RhdGljIGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJn
aW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3N0YXRpYyBib29sIGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7
IGFuY2VzdG9yICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGlm
IChsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCphbmNlc3RvcikuZXN0aW1hdGVk
TWFyZ2luQmVmb3JlKCkpCisgICAgICAgIGlmIChmb3JtYXR0aW5nU3RhdGUuaGFzRXN0aW1hdGVk
TWFyZ2luQmVmb3JlKCphbmNlc3RvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI1Myw3ICsyNTQsNyBAQCB2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ1Bvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4
dCYgZmxvYQogewogICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsK
ICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpOwotICAgIEFTU0VS
VChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7Cisg
ICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGJsb2NrRm9ybWF0dGluZ1N0YXRl
KCksIGxheW91dEJveCkpOwogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICAvLyA4LjMuMSBDb2xsYXBzaW5n
IG1hcmdpbnMKQEAgLTI3Myw3ICsyNzQsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgRmxvYXRpbmdDb250ZXh0JgogICAg
IEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwog
ICAgIEFTU0VSVCghbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpOwogICAgIEFTU0VS
VCghbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJl
Y29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7
CiAKICAgICBpZiAoZmxvYXRpbmdDb250ZXh0LmZsb2F0aW5nU3RhdGUoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI5Miw3ICsyOTMsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBGbG9hdGlu
ZwogICAgIC8vIEZvciBmb3JtYXR0aW5nIHJvb3RzLCB3ZSBhbHJlYWR5IHByZWNvbXB1dGVkIGZp
bmFsIHBvc2l0aW9uLgogICAgIGlmICghbGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0Nv
bnRleHQoKSkKICAgICAgICAgY29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9y
cyhsYXlvdXRCb3gpOwotICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSk7CisgICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVm
b3JlKGJsb2NrRm9ybWF0dGluZ1N0YXRlKCksIGxheW91dEJveCkpOwogCiAgICAgaWYgKGF1dG8g
dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UgPSBmbG9hdGluZ0NvbnRleHQudmVydGljYWxQ
b3NpdGlvbldpdGhDbGVhcmFuY2UobGF5b3V0Qm94KSkKICAgICAgICAgbGF5b3V0U3RhdGUuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNldFRvcCgqdmVydGljYWxQb3NpdGlvbldp
dGhDbGVhcmFuY2UpOwpAQCAtMzcyLDEyICszNzMsMTUgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAogICAgIH0KIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhp
cy0+YmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBpZiAoZm9ybWF0dGluZ1N0YXRlLmhhc0Vz
dGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKSB7CisgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5jbGVhckhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpOworICAgICAgICBBU1NF
UlQobGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmVzdGltYXRl
ZE1hcmdpbkJlZm9yZSgpLT5jb21wdXRlZFZhbHVlID09IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4u
dXNlZFZhbHVlcygpLmJlZm9yZSk7CisgICAgfSBlbHNlCisgICAgICAgIGRpc3BsYXlCb3guc2V0
VG9wKGFkanVzdGVkVmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyhsYXlvdXRC
b3gsIGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZSkpOworCiAgICAg
ZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwog
ICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7
Ci0KLSAgICAvLyBJZiB0aGlzIGJveCBoYXMgYWxyZWFkeSBiZWVuIG1vdmVkIGJ5IHRoZSBlc3Rp
bWF0ZWQgdmVydGljYWwgbWFyZ2luLCBubyBuZWVkIHRvIG1vdmUgaXQgYWdhaW4uCi0gICAgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8ICFkaXNwbGF5Qm94LmVzdGltYXRl
ZE1hcmdpbkJlZm9yZSgpKQotICAgICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGhlaWdo
dEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZSk7CiB9CiAKIEZvcm1hdHRpbmdD
b250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cygpIGNvbnN0CkBAIC00NDQsNiArNDQ4LDM3IEBA
IEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjppbnN0cmluc2ljCiAgICAgcmV0dXJuIGluc3RyaW5zaWNXaWR0aENvbnN0
cmFpbnRzOwogfQogCitMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVk
VmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyhjb25zdCBCb3gmIGxheW91dEJv
eCwgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUpIGNvbnN0Cit7CisgICAgLy8gTm93IHRoYXQgd2Un
dmUgY29tcHV0ZWQgdGhlIGZpbmFsIG1hcmdpbiBiZWZvcmUsIGxldCdzIHNoaWZ0IHRoZSBib3gn
cyB2ZXJ0aWNhbCBwb3NpdGlvbi4KKyAgICAvLyAxLiBDaGVjayBpZiB0aGUgbWFyZ2luIGJlZm9y
ZSBjb2xsYXBzZXMgd2l0aCB0aGUgcHJldmlvdXMgYm94J3MgbWFyZ2luIGFmdGVyLiBpZiBub3Qg
LT4gcmV0dXJuIHByZXZpb3VzIGJveCdzIGJvdHRvbSBpbmxjdWRpbmcgbWFyZ2luIGFmdGVyICsg
bWFyZ2luQmVmb3JlCisgICAgLy8gMi4gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIGJveCdzIG1hcmdp
bnMgY29sbGFwc2UgdGhyb3VnaC4gSWYgbm90IC0+IHJldHVybiBwcmV2aW91cyBib3gnIGJvdHRv
bSBleGNsdWRpbmcgbWFyZ2luIGFmdGVyICsgbWFyZ2luQmVmb3JlICh0aGV5IGFyZSBzdXBwb3Nl
ZCB0byBiZSBlcXVhbCkKKyAgICAvLyAzLiBHbyB0byBwcmV2aW91cyBib3ggYW5kIHN0YXJ0IGZy
b20gc3RlcCAjMSB1bnRpbCB3ZSBoaXQgdGhlIHBhcmVudCBib3guCisgICAgYXV0byYgbGF5b3V0
U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOworICAgIGF1dG8qIGN1cnJlbnRMYXlvdXRCb3gg
PSAmbGF5b3V0Qm94OworICAgIHdoaWxlIChjdXJyZW50TGF5b3V0Qm94KSB7CisgICAgICAgIGlm
ICghY3VycmVudExheW91dEJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gKmN1cnJlbnRM
YXlvdXRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygpOworICAgICAgICBpZiAoIU1hcmdpbjo6
bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCAqY3VycmVudExheW91dEJveCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3Vz
RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJ
bkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3BsYXlCb3gucmVj
dFdpdGhNYXJnaW4oKS5ib3R0b20oKSArIG1hcmdpbkJlZm9yZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghTWFyZ2luOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBwcmV2
aW91c0luRmxvd1NpYmxpbmcpKSB7CisgICAgICAgICAgICBhdXRvJiBwcmV2aW91c0Rpc3BsYXlC
b3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KHByZXZpb3VzSW5GbG93U2li
bGluZyk7CisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNEaXNwbGF5Qm94LmJvdHRvbSgpICsg
bWFyZ2luQmVmb3JlOworICAgICAgICB9CisgICAgICAgIGN1cnJlbnRMYXlvdXRCb3ggPSAmcHJl
dmlvdXNJbkZsb3dTaWJsaW5nOworICAgIH0KKworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrQ29u
dGVudEJveFRvcCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJv
eC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFRvcCgpOworICAgIGlmIChNYXJnaW46Om1h
cmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkgfHwgTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2lu
QWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBjb250YWluaW5n
QmxvY2tDb250ZW50Qm94VG9wOworCisgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRC
b3hUb3AgKyBtYXJnaW5CZWZvcmU7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaAppbmRleCA2ODA0MWQ0OTA4NTY3ZmI4ODkzNDBkNmI1M2I3ZTNmMjA4MmVjMTgwLi45YTQx
MmFlNDAyNjk1ZmNlMWI5NTczMzJjMzY4NTUwOGVkZjM0MjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXQoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgYmxv
Y2tGb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRp
bmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpOyB9CisKICAgICB2b2lkIGxheW91dEZvcm1hdHRp
bmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKICAgICB2
b2lkIHBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IENvbnRhaW5lciYpIGNvbnN0
OwogCkBAIC02Nyw2ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmVjb21wdXRlVmVydGlj
YWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3QgQm94JikgY29uc3Q7CiAK
ICAgICBJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0
aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGNvbnN0IEJveCYsIExheW91dFVuaXQgbWFyZ2luQmVm
b3JlKSBjb25zdDsKIAogICAgIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBwb3NpdGlvbmluZyBh
bmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0aWNpcGF0aW5nIGluIGEgYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0LgogICAgIGNsYXNzIEdlb21ldHJ5IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeSB7CkBAIC03OSw0OSArODIsNDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGJv
b2wgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHNOZWVkQ2hpbGRyZW5XaWR0aChjb25zdCBCb3gm
KTsKICAgICAgICAgc3RhdGljIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAg
ICAgc3RhdGljIExheW91dFVuaXQgZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGVzdGltYXRlZE1h
cmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0KICAgICBwcml2YXRl
OgotICAgICAgICAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgbWFyZ2luIGNvbGxhcHNpbmcgZm9y
IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KLSAgICAgICAgY2xhc3MgTWFyZ2luQ29sbGFwc2Ug
ewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5C
ZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRp
YyBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7
CisgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRB
bmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRV
bml0PiB1c2VkSGVpZ2h0ID0geyB9KTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGlu
Rmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGggPSB7IH0pOworICAgICAgICBzdGF0
aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsg
fSk7CisgICAgICAgIHN0YXRpYyBQb2ludCBzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0
aW9uZWQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICB9OwogCi0gICAgICAg
ICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0
ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBi
b29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgY2xhc3MgTWFyZ2luIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbChjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOwogCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgTGF5
b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG5vbkNvbGxh
cHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAg
IHN0YXRpYyBFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNv
bGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3Qg
VmVydGljYWxNYXJnaW4mIG5leHRTaWJsaW5nVmVydGljYWxNYXJnaW4pOwogCi0gICAgICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIExheW91dFVu
aXQgY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRo
UGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAg
ICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxk
TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0
YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0
U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29s
bGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdp
bkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMg
Ym9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJn
aW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGlj
IGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVh
cmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICAgICAgc3Rh
dGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFy
Z2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZyhjb25zdCBCb3gmKTsKLSAgICAg
ICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nKGNv
bnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwot
ICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICB9OworICAgICAgICBzdGF0aWMgYm9vbCBt
YXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAK
LSAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFu
ZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVu
aXQ+IHVzZWRIZWlnaHQgPSB7IH0pOwotICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5G
bG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7Ci0gICAgICAgIHN0YXRp
YyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoID0geyB9
KTsKLSAgICAgICAgc3RhdGljIFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRp
b25lZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgIHByaXZhdGU6CisgICAg
ICAgIGVudW0gY2xhc3MgTWFyZ2luVHlwZSB7IEJlZm9yZSwgQWZ0ZXIgfTsKKyAgICAgICAgc3Rh
dGljIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIHBvc2l0aXZlTmVn
YXRpdmVWYWx1ZXMoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBNYXJnaW5UeXBlKTsK
KyAgICAgICAgc3RhdGljIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVz
IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKKyAgICAgICAgc3RhdGljIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6
VmFsdWVzIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYpOwogICAgIH07CiAKICAgICBjbGFzcyBRdWlya3MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIGJvb2wgbmVlZHNTdHJldGNoaW5nKGNvbnN0IExheW91dFN0YXRlJiwgY29u
c3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gc3RyZXRjaGVkSGVpZ2h0
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgSGVpZ2h0QW5kTWFyZ2luKTsKKyAgICAg
ICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBzdHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBIZWlnaHRBbmRNYXJnaW4pOwogCiAgICAgICAgIHN0YXRp
YyBib29sIHNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVNYXJnaW5BZnRlcihjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZWU0Mzg3MmVhYjZlNTAwYmU4
YWM3MmIxNWFmOTAxMGJlZWJmODEwNi4uMDA3ZjcyYTMwNDRjMWNjM2RhMTgzNjllMjc5YmI1YWI1
MDJjNDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cApAQCAtNTcsMTMgKzU3LDkgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICAgICAgLy8g
T25seSBjaGlsZHJlbiBpbiB0aGUgbm9ybWFsIGZsb3cgYXJlIHRha2VuIGludG8gYWNjb3VudCAo
aS5lLiwgZmxvYXRpbmcgYm94ZXMgYW5kIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUg
aWdub3JlZCwKICAgICAgICAgLy8gYW5kIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUg
Y29uc2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5vdGUgdGhhdCB0aGUgY2hpbGQgYm94
IG1heSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgogCi0gICAgICAgIGF1dG8mIHN0eWxlID0g
bGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBs
YXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5
b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwotCi0gICAgICAgIGF1
dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIHsg
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpLnZhbHVlT3IoMCksCi0gICAgICAgICAgICBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApIH07
IAotICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBz
ZWRWYWx1ZXMgeyBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpLCBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJv
eCkgfTsKKyAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBjb21wdXRlZE5vbkNvbGxh
cHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgICAg
IGF1dG8gY29sbGFwc2VkTWFyZ2luID0gTWFyZ2luOjp2ZXJ0aWNhbChsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KS5jb2xsYXBzZWRWYWx1ZXMoKTsKICAgICAgICAgYXV0byBib3JkZXJBbmRQYWRkaW5n
VG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZh
bHVlT3IoMCk7CiAKICAgICAgICAgYXV0byBoZWlnaHQgPSB1c2VkSGVpZ2h0ID8gdXNlZEhlaWdo
dC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBI
ZWlnaHRUeXBlOjpOb3JtYWwpOwpAQCAtODQsMTQgKzgwLDE0IEBAIEhlaWdodEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRB
bmRNYXJnCiAgICAgICAgIC8vIDIuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgYm90dG9tIChwb3Nz
aWJseSBjb2xsYXBzZWQpIG1hcmdpbiBvZiBpdHMgbGFzdCBpbi1mbG93IGNoaWxkLCBpZiB0aGUg
Y2hpbGQncyBib3R0b20gbWFyZ2luLi4uCiAgICAgICAgIGF1dG8qIGxhc3RJbkZsb3dDaGlsZCA9
IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKICAgICAg
ICAgQVNTRVJUKGxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgICAgIGlmICghTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAq
bGFzdEluRmxvd0NoaWxkKSkgeworICAgICAgICBpZiAoIU1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xs
YXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQp
KSB7CiAgICAgICAgICAgICBhdXRvJiBsYXN0SW5GbG93RGlzcGxheUJveCA9IGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxhc3RJbkZsb3dDaGlsZCk7CiAgICAgICAgICAgICBy
ZXR1cm4geyBsYXN0SW5GbG93RGlzcGxheUJveC5ib3R0b20oKSArIGxhc3RJbkZsb3dEaXNwbGF5
Qm94Lm1hcmdpbkFmdGVyKCkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCB7IG5vbkNvbGxhcHNlZE1h
cmdpbiwgY29sbGFwc2VkTWFyZ2luIH0gfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDMuIHRo
ZSBib3R0b20gYm9yZGVyIGVkZ2Ugb2YgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCB3aG9zZSB0b3Ag
bWFyZ2luIGRvZXNuJ3QgY29sbGFwc2Ugd2l0aCB0aGUgZWxlbWVudCdzIGJvdHRvbSBtYXJnaW4K
ICAgICAgICAgYXV0byogaW5GbG93Q2hpbGQgPSBsYXN0SW5GbG93Q2hpbGQ7Ci0gICAgICAgIHdo
aWxlIChpbkZsb3dDaGlsZCAmJiBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqaW5GbG93Q2hpbGQpKQorICAgICAg
ICB3aGlsZSAoaW5GbG93Q2hpbGQgJiYgTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRo
UGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICppbkZsb3dDaGlsZCkpCiAgICAgICAgICAg
ICBpbkZsb3dDaGlsZCA9IGluRmxvd0NoaWxkLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKICAg
ICAgICAgaWYgKGluRmxvd0NoaWxkKSB7CiAgICAgICAgICAgICBhdXRvJiBpbkZsb3dEaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqaW5GbG93Q2hpbGQpOwpA
QCAtMTAzLDYgKzk5LDkgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICB9OwogCiAgICAg
YXV0byBoZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKCk7CisgICAgLy8gQWRqdXN0IHRoZSBwcmV2
aW91cyBzaWJsaW5nJ3MgbWFyZ2luIGJvdHRvbSBub3cgdGhhdCB0aGlzIGJveCdzIHZlcnRpY2Fs
IG1hcmdpbiBpcyBjb21wdXRlZC4KKyAgICBpZiAoTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgIE1hcmdpbjo6dXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
ICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCksIGhlaWdodEFuZE1hcmdpbi5tYXJn
aW4pOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQo
IiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5k
TWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRN
YXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwpAQCAtMjYx
LDcgKzI2MCw3IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExhCiAgICAgaWYgKCFRdWlya3M6Om5l
ZWRzU3RyZXRjaGluZyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIGhl
aWdodEFuZE1hcmdpbjsKIAotICAgIGhlaWdodEFuZE1hcmdpbiA9IFF1aXJrczo6c3RyZXRjaGVk
SGVpZ2h0KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIGhlaWdodEFuZE1hcmdpbik7CisgICAgaGVp
Z2h0QW5kTWFyZ2luID0gUXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQobGF5b3V0U3RhdGUs
IGxheW91dEJveCwgaGVpZ2h0QW5kTWFyZ2luKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3Jt
YXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxv
dyBub24tcmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgaGVp
Z2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi5t
YXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZSA8PCAicHgsICIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1h
cmdpbi51c2VkVmFsdWVzKCkuYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0
Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKQEAgLTMyMiwzMCArMzIx
LDYgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjoKICAgICByZXR1cm4geyBtaW5pbXVtSW50cmlu
c2ljV2lkdGgsIG1heGltdW1JbnRyaW5zaWNXaWR0aCB9OwogfQogCi1MYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBB
U1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLSAgICAvLyBDYW4ndCBlc3RpbWF0
ZSB2ZXJ0aWNhbCBtYXJnaW5zIGZvciBvdXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNob3VsZG4n
dCBuZWVkIHRvIGRvIGl0IGZvciBmbG9hdCBib3hlcykuCi0gICAgQVNTRVJUKGxheW91dEJveC5p
c0luRmxvdygpKTsKLSAgICAvLyBDYW4ndCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQg
Ym91bmRhcnkuCi0gICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0KCkpOwotCi0gICAgLy8gTGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZv
ciBub3cuCi0gICAgcmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmUobGF5b3V0U3Rh
dGUsIGxheW91dEJveCk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Js
b2NrTGV2ZWxCb3goKSk7Ci0gICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBm
b3Igb3V0IG9mIGZsb3cgYm94ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3Ig
ZmxvYXQgYm94ZXMpLgotICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7Ci0gICAgLy8g
Q2FuJ3QgY3Jvc3MgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJ5LgotICAgIEFTU0VS
VCghbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKLQotICAg
IC8vIExldCdzIGp1c3QgdXNlIHRoZSBub3JtYWwgcGF0aCBmb3Igbm93LgotICAgIHJldHVybiBN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci19Ci0K
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXgg
NDYwNmY5ZGM2NjI4ZWUwM2YzMGM3YTk1ZjQzOWZiMTNlNzQwNzA5ZC4uYjAzYzIzYTBlYTU1ZDJj
ZDM4M2RmZTBlNzc2NTE4N2M3NWMxNjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwCkBAIC02Niw4ICs2Niw5IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6UXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
CiAgICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKTsK
IH0KIAotSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3Ry
ZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gsIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW4pCitIZWlnaHRBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgSGVp
Z2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbikKIHsKKyAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
SW5GbG93KCkpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpIHx8IGxheW91
dEJveC5pc0JvZHlCb3goKSk7CiAKICAgICBhdXRvJiBkb2N1bWVudEJveCA9IGxheW91dEJveC5p
c0RvY3VtZW50Qm94KCkgPyBsYXlvdXRCb3ggOiAqbGF5b3V0Qm94LnBhcmVudCgpOwpAQCAtODgs
MTIgKzg5LDEwIEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWly
a3M6OnN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0CiAgICAgICAgIC8vIEhlcmUgaXMg
dGhlIHF1aXJreSBwYXJ0IGZvciBib2R5IGJveDoKICAgICAgICAgLy8gU3RyZXRjaCB0aGUgYm9k
eSB1c2luZyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrJ3MgaGVpZ2h0IGFuZCBzaHJpbmsg
aXQgd2l0aCBkb2N1bWVudCBib3gncyBtYXJnaW4vYm9yZGVyL3BhZGRpbmcuCiAgICAgICAgIC8v
IFRoaXMgbG9va3MgZXh0cmVtZWx5IG9kZCB3aGVuIGh0bWwgaGFzIG5vbi1hdXRvIGhlaWdodC4K
LSAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGRvY3VtZW50Qm94KSArIEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJn
aW5BZnRlcihsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpOwotICAgICAgICBzdHJlY2hlZEhlaWdo
dCAtPSB2ZXJ0aWNhbE1hcmdpbjsKKyAgICAgICAgYXV0byBkb2N1bWVudEJveFZlcnRpY2FsTWFy
Z2luID0gR2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShs
YXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpOworICAgICAgICBzdHJlY2hlZEhlaWdodCAtPSAoZG9j
dW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBkb2N1bWVudEJveFZlcnRpY2FsTWFyZ2lu
LmFmdGVyKTsKIAotICAgICAgICAvLyBUaGlzIHF1aXJrIGhhcHBlbnMgd2hlbiB0aGUgYm9keSBo
ZWlnaHQgaXMgMCB3aGljaCBtZWFucyBpdHMgdmVydGljYWwgbWFyZ2lucyBjb2xsYXBzZSB0aHJv
dWdoICh0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIGFyZSBhZGpvaW5pbmcpLgotICAgICAgICAvLyBI
b3dldmVyIG5vdyB0aGF0IHdlIHN0cmV0Y2ggdGhlIGJvZHkgdGhleSBkb24ndCBjb2xsYXBzZSB0
aHJvdWdoIGFueW1vcmUsIHNvIHdlIG5lZWQgdG8gdXNlIHRoZSBub24tY29sbGFwc2VkIHZhbHVl
cyBpbnN0ZWFkLgotICAgICAgICBhdXRvIGJvZHlCb3hWZXJ0aWNhbE1hcmdpbiA9IGhlaWdodEFu
ZE1hcmdpbi5oZWlnaHQgPyBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKSA6IGhl
aWdodEFuZE1hcmdpbi5tYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCk7CisgICAgICAgIGF1dG8g
Ym9keUJveFZlcnRpY2FsTWFyZ2luID0gaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVz
KCk7IAogICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2luID0gYm9keUJveFZlcnRpY2FsTWFyZ2lu
LmJlZm9yZSArIGJvZHlCb3hWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKICAgICB9CiAKQEAgLTExMiw2
ICsxMTEsMjAgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZEln
bm9yZU1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYKICAgICByZXR1cm4gbGF5b3V0U3Rh
dGUuaW5RdWlya3NNb2RlKCkgJiYgaXNRdWlya0NvbnRhaW5lcigqbGF5b3V0Qm94LnBhcmVudCgp
KSAmJiBoYXNNYXJnaW5CZWZvcmVRdWlya1ZhbHVlKGxheW91dEJveCk7CiB9CiAKK2Jvb2wgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcihjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAg
IC8vIElnbm9yZSBtYXJpbmcgYWZ0ZXIgd2hlbiB0aGUgaWdub3JlZCBtYXJnaW4gYmVmb3JlIGNv
bGxhcHNlcyB0aHJvdWdoLgorICAgIGlmICghc2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQo
bGF5b3V0Qm94LnBhcmVudCgpKTsKKyAgICBhdXRvJiBwYXJlbnQgPSAqbGF5b3V0Qm94LnBhcmVu
dCgpOworICAgIGlmIChwYXJlbnQuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSAhPSAmbGF5
b3V0Qm94IHx8IHBhcmVudC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpICE9IHBhcmVudC5s
YXN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91
dEJveCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IGJiOTY2OTM5
MGZmOWEyODc2ZmU3MTRkYzg1NDRiMDFkZjZkZWFhODQuLmJiNDU2YjU5MjdmZWZlNDVjNjM3ODMx
ZDViMjRmNzE3MDkyYmFkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUg
IkZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIk1hcmdpblR5cGVzLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw2ICs0MywxOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIG92ZXJyaWRlOworCisgICAgdm9pZCBz
ZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gs
IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbE1hcmdpbikgeyBtX3Bv
c2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5zZXQoJmxheW91dEJveCwgdmVydGljYWxN
YXJnaW4pOyB9CisgICAgYm9vbCBoYXNQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpdmVBbmROZWdhdGl2
ZVZlcnRpY2FsTWFyZ2luLmNvbnRhaW5zKCZsYXlvdXRCb3gpOyB9CisgICAgUG9zaXRpdmVBbmRO
ZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW4uZ2V0KCZsYXlvdXRCb3gpOyB9CisKKyAgICB2b2lkIHNldEhhc0VzdGlt
YXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgeyBtX2VzdGltYXRlZE1hcmdp
bkJlZm9yZUxpc3QuYWRkKCZsYXlvdXRCb3gpOyB9CisgICAgdm9pZCBjbGVhckhhc0VzdGltYXRl
ZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgeyBtX2VzdGltYXRlZE1hcmdpbkJl
Zm9yZUxpc3QucmVtb3ZlKCZsYXlvdXRCb3gpOyB9CisgICAgYm9vbCBoYXNFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVk
TWFyZ2luQmVmb3JlTGlzdC5jb250YWlucygmbGF5b3V0Qm94KTsgfQorCitwcml2YXRlOgorICAg
IEhhc2hNYXA8Y29uc3QgQm94KiwgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luPiBt
X3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjsKKyAgICBIYXNoU2V0PGNvbnN0IEJv
eCo+IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlTGlzdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzZkODlmYjk5Y2ExYTU5MjVjMjBjYjQ1MTMyOTAyNzhiNzJhMmU5NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJn
aW4uY3BwCkBAIC0wLDAgKzEsNjE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCIKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgi
CisjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitzdGF0aWMgYm9vbCBoYXNC
b3JkZXIoY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclZhbHVlKQoreworICAgIGlmIChib3JkZXJW
YWx1ZS5zdHlsZSgpID09IEJvcmRlclN0eWxlOjpOb25lIHx8IGJvcmRlclZhbHVlLnN0eWxlKCkg
PT0gQm9yZGVyU3R5bGU6OkhpZGRlbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biAhIWJvcmRlclZhbHVlLndpZHRoKCk7Cit9CisKK3N0YXRpYyBib29sIGhhc1BhZGRpbmcoY29u
c3QgTGVuZ3RoJiBwYWRkaW5nVmFsdWUpCit7CisgICAgLy8gRklYTUU6IENoZWNrIGlmIHBlcmNl
bnQgdmFsdWUgbmVlZHMgdG8gYmUgcmVzb2x2ZWQuCisgICAgcmV0dXJuICFwYWRkaW5nVmFsdWUu
aXNaZXJvKCk7Cit9CisKK3N0YXRpYyBib29sIGhhc0JvcmRlckJlZm9yZShjb25zdCBCb3gmIGxh
eW91dEJveCkKK3sKKyAgICByZXR1cm4gaGFzQm9yZGVyKGxheW91dEJveC5zdHlsZSgpLmJvcmRl
ckJlZm9yZSgpKTsKK30KKworc3RhdGljIGJvb2wgaGFzQm9yZGVyQWZ0ZXIoY29uc3QgQm94JiBs
YXlvdXRCb3gpCit7CisgICAgcmV0dXJuIGhhc0JvcmRlcihsYXlvdXRCb3guc3R5bGUoKS5ib3Jk
ZXJBZnRlcigpKTsKK30KKworc3RhdGljIGJvb2wgaGFzUGFkZGluZ0JlZm9yZShjb25zdCBCb3gm
IGxheW91dEJveCkKK3sKKyAgICByZXR1cm4gaGFzUGFkZGluZyhsYXlvdXRCb3guc3R5bGUoKS5w
YWRkaW5nQmVmb3JlKCkpOworfQorCitzdGF0aWMgYm9vbCBoYXNQYWRkaW5nQWZ0ZXIoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCit7CisgICAgcmV0dXJuIGhhc1BhZGRpbmcobGF5b3V0Qm94LnN0eWxl
KCkucGFkZGluZ0FmdGVyKCkpOworfQorCitzdGF0aWMgYm9vbCBoYXNDbGVhcmFuY2UoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBp
ZiAoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmhh
c0NsZWFyYW5jZSgpOworfQorCitzdGF0aWMgYm9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgLy8gV2ViS2l0IHRyZWF0cyB0
aGUgZG9jdW1lbnQgZWxlbWVudCByZW5kZXJlciBhcyBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4
dCByb290LiBJdCBwcm9iYWJseSBvbmx5IGltcGFjdHMgbWFyZ2luIGNvbGxhcHNpbmcsIHNvIGxl
dCdzIG5vdCBkbworICAgIC8vIGEgbGF5b3V0IHdpZGUgcXVpcmsgb24gdGhpcyBmb3Igbm93Lgor
ICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgp
OworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgLy8gMS4gVGhpcyBpcyB0aGUgbGFz
dCBpbi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoIGFuZCB0aGUg
bWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdzIG1hcmdpbiBhZnRlciBvcgorICAg
IC8vIDIuIFRoaXMgYm94J3MgbWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHRoZSBuZXh0IHNp
YmxpbmcncyBtYXJnaW4gYmVmb3JlIGFuZCB0aGF0IHNpYmxpbmcgY29sbGFwc2VzIHRocm91Z2gg
YW5kCisgICAgLy8gd2UgY2FuIGdldCB0byB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIGxpa2UgdGhh
dC4KKyAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBsYXlvdXRCb3gucGFyZW50KCktPmxhc3RJ
bkZsb3dDaGlsZCgpOworICAgIGZvciAoYXV0byogY3VycmVudEJveCA9ICZsYXlvdXRCb3g7IGN1
cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5uZXh0SW5GbG93U2libGluZygpKSB7
CisgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmN1cnJl
bnRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3VycmVudEJv
eCA9PSBsYXN0SW5GbG93Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4gbWFyZ2luQWZ0ZXJDb2xs
YXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KTsgCisg
ICAgICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZv
cmUobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFw
c2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIC8vIFRoZSBmaXJzdCBpbmZsb3cgY2hpbGQg
Y291bGQgcHJvcGFnYXRlIGl0cyB0b3AgbWFyZ2luIHRvIHBhcmVudC4KKyAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJnaW5zCisgICAgaWYg
KGxheW91dEJveC5pc0Fub255bW91cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBB
U1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKworICAgIC8vIE1hcmdpbnMgYmV0
d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAg
ICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRv
IG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9j
ayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2Nr
Qm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9ubHkgdGhlIGZpcnN0IGlu
bGZsb3cgY2hpbGQgY29sbGFwc2VzIHdpdGggcGFyZW50LgorICAgIGlmIChsYXlvdXRCb3gucHJl
dmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8m
IHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7CisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50
cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29s
bGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuCisgICAgaWYgKGVzdGFibGlzaGVzQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIC4uLmFuZCB0aGUgY2hpbGQgaGFzIG5vIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFz
Q2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRl
cihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQor
eworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworCisgICAgaWYgKCFs
YXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGluZyA9ICpsYXlvdXRCb3gucHJldmlvdXNJ
bkZsb3dTaWJsaW5nKCk7CisKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBh
bmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0Zs
b2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGFi
c29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKChsYXlv
dXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5zdHlsZSgpLnRvcCgp
LmlzQXV0bygpKQorICAgICAgICB8fCAocHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpICYmICFwcmV2aW91c0luRmxvd1NpYmxpbmcuc3R5bGUoKS5ib3R0b20oKS5p
c0F1dG8oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5s
aW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzSW5s
aW5lQmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBh
biBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0
b3AgbWFyZ2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5n
LCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5j
ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpt
YXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9yZShjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAg
IGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgLy8gTWFyZ2lucyBv
ZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBk
byBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAgIGlmIChlc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1m
bG93IGNoaWxkcmVuLgorICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQo
bGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHRvcCBtYXJn
aW4gb2YgYW4gaW4tZmxvdyBibG9jayBlbGVtZW50IGNvbGxhcHNlcyB3aXRoIGl0cyBmaXJzdCBp
bi1mbG93IGJsb2NrLWxldmVsCisgICAgLy8gY2hpbGQncyB0b3AgbWFyZ2luIGlmIHRoZSBlbGVt
ZW50IGhhcyBubyB0b3AgYm9yZGVyLi4uCisgICAgaWYgKGhhc0JvcmRlckJlZm9yZShsYXlvdXRC
b3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAuLi5ubyB0b3AgcGFkZGluZwor
ICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250
YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byYgZmlyc3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOworICAgIGlmICghZmlyc3RJbkZsb3dDaGlsZC5p
c0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gLi4uYW5k
IHRoZSBjaGlsZCBoYXMgbm8gY2xlYXJhbmNlLgorICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0
U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3Qg
Y29sbGFwc2UuCisgICAgaWYgKGZpcnN0SW5GbG93Q2hpbGQuaXNGbG9hdGluZ1Bvc2l0aW9uZWQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5
IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0No
aWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAg
aWYgKGZpcnN0SW5GbG93Q2hpbGQuaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVX
aXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCit7CisgICAgLy8gSWYgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYW4g
ZWxlbWVudCB3aXRoIGNsZWFyYW5jZSBhcmUgYWRqb2luaW5nLCBpdHMgbWFyZ2lucyBjb2xsYXBz
ZSB3aXRoIHRoZSBhZGpvaW5pbmcgbWFyZ2lucworICAgIC8vIG9mIGZvbGxvd2luZyBzaWJsaW5n
cyBidXQgdGhhdCByZXN1bHRpbmcgbWFyZ2luIGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGJv
dHRvbSBtYXJnaW4gb2YgdGhlIHBhcmVudCBibG9jay4KKyAgICBpZiAoIW1hcmdpbnNDb2xsYXBz
ZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAoYXV0byogcHJldmlvdXNTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5G
bG93U2libGluZygpOyBwcmV2aW91c1NpYmxpbmc7IHByZXZpb3VzU2libGluZyA9IHByZXZpb3Vz
U2libGluZy0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFtYXJnaW5z
Q29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqcHJldmlvdXNTaWJsaW5nKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGhhc0NsZWFyYW5jZShsYXlvdXRTdGF0ZSwg
KnByZXZpb3VzU2libGluZykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgLy8gMS4gVGhp
cyBpcyB0aGUgZmlyc3QgaW4tZmxvdyBjaGlsZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFwc2UgdGhy
b3VnaCBhbmQgdGhlIG1hcmdpbiBiZWZvcmUgY29sbGFwc2VzIHdpdGggcGFyZW50J3MgbWFyZ2lu
IGJlZm9yZSBvcgorICAgIC8vIDIuIFRoaXMgYm94J3MgbWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMg
d2l0aCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBhZnRlciBhbmQgdGhhdCBzaWJsaW5n
IGNvbGxhcHNlcyB0aHJvdWdoIGFuZAorICAgIC8vIHdlIGNhbiBnZXQgdG8gdGhlIGZpcnN0IGlu
LWZsb3cgY2hpbGQgbGlrZSB0aGF0LgorICAgIGF1dG8qIGZpcnN0SW5GbG93Q2hpbGQgPSBsYXlv
dXRCb3gucGFyZW50KCktPmZpcnN0SW5GbG93Q2hpbGQoKTsKKyAgICBmb3IgKGF1dG8qIGN1cnJl
bnRCb3ggPSAmbGF5b3V0Qm94OyBjdXJyZW50Qm94OyBjdXJyZW50Qm94ID0gY3VycmVudEJveC0+
cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGxheW91dFN0YXRlLCAqY3VycmVudEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChjdXJyZW50Qm94ID09IGZpcnN0SW5GbG93Q2hpbGQpCisgICAgICAg
ICAgICByZXR1cm4gbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAKKyAgICAgICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xs
YXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50
Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sK
KyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworCisgICAgLy8gTWFy
Z2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxh
cHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Ym94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5s
aW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzSW5s
aW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gT25seSB0aGUg
bGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KKyAgICBpZiAobGF5b3V0
Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7CisgICAgLy8gTWFyZ2lucyBvZiBlbGVt
ZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3Qg
Y29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAgIGlmIChlc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBh
ICdoZWlnaHQnIG9mICdhdXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2Nr
LWxldmVsIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiwgaWY6CisgICAgaWYgKCFwYXJlbnQuc3R5bGUo
KS5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhl
IGJveCBoYXMgbm8gYm90dG9tIHBhZGRpbmcsIGFuZAorICAgIGlmIChoYXNQYWRkaW5nQmVmb3Jl
KHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5v
IGJvdHRvbSBib3JkZXIsIGFuZAorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUocGFyZW50KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiBu
ZWl0aGVyIGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1hcmdpbiB0aGF0IGhhcyBjbGVhcmFuY2UuLi4K
KyAgICBpZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhD
bGVhcmFuY2UobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXplcm8pIHdpdGgg
dGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgYXV0byBjb21wdXRlZE1pbkhlaWdodCA9IHBhcmVu
dC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICBpZiAoIWNvbXB1dGVkTWluSGVpZ2h0
LmlzQXV0bygpICYmIGNvbXB1dGVkTWluSGVpZ2h0LnZhbHVlKCkgJiYgbWFyZ2luQWZ0ZXJDb2xs
YXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZs
b3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3go
KSk7CisKKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9j
ayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cg
Y2hpbGRyZW4uCisgICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChsYXlv
dXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzPENvbnRhaW5lcj4o
bGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0No
aWxkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIGxhc3RJbkZsb3dDaGls
ZCA9ICpkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7Cisg
ICAgaWYgKCFsYXN0SW5GbG93Q2hpbGQuaXNCbG9ja0xldmVsQm94KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2sg
Ym94IHdpdGggYSAnaGVpZ2h0JyBvZiAnYXV0bycgY29sbGFwc2VzIHdpdGggaXRzIGxhc3QgaW4t
ZmxvdyBibG9jay1sZXZlbCBjaGlsZCdzIGJvdHRvbSBtYXJnaW4sIGlmOgorICAgIGlmICghbGF5
b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBwYWRkaW5nLCBhbmQKKyAgICBpZiAoaGFz
UGFkZGluZ0JlZm9yZShsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyB0aGUgYm94IGhhcyBubyBib3R0b20gYm9yZGVyLCBhbmQKKyAgICBpZiAoaGFzQm9yZGVyQmVm
b3JlKGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBjaGls
ZCdzIGJvdHRvbSBtYXJnaW4gbmVpdGhlciBjb2xsYXBzZXMgd2l0aCBhIHRvcCBtYXJnaW4gdGhh
dCBoYXMgY2xlYXJhbmNlLi4uCisgICAgaWYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxp
bmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBub3IgKGlmIHRoZSBib3gncyBtaW4t
aGVpZ2h0IGlzIG5vbi16ZXJvKSB3aXRoIHRoZSBib3gncyB0b3AgbWFyZ2luLgorICAgIGF1dG8g
Y29tcHV0ZWRNaW5IZWlnaHQgPSBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCk7
CisgICAgaWYgKCFjb21wdXRlZE1pbkhlaWdodC5pc0F1dG8oKSAmJiBjb21wdXRlZE1pbkhlaWdo
dC52YWx1ZSgpCisgICAgICAgICYmIChtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJn
aW5CZWZvcmUobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkgfHwgaGFzQ2xlYXJhbmNlKGxh
eW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8g
bm90IGNvbGxhcHNlLgorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0
ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXN0SW5GbG93
Q2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAg
ICBpZiAobGFzdEluRmxvd0NoaWxkLmlzSW5saW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJl
Zm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworCisgICAgaWYg
KCFsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJn
aW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKTsKK30K
KworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRo
cm91Z2goY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKK3sKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKworICAgIC8v
IEEgYm94J3Mgb3duIG1hcmdpbnMgY29sbGFwc2UgaWYgdGhlICdtaW4taGVpZ2h0JyBwcm9wZXJ0
eSBpcyB6ZXJvLCBhbmQgaXQgaGFzIG5laXRoZXIgdG9wIG9yIGJvdHRvbSBib3JkZXJzIG5vciB0
b3Agb3IgYm90dG9tIHBhZGRpbmcsCisgICAgLy8gYW5kIGl0IGhhcyBhICdoZWlnaHQnIG9mIGVp
dGhlciAwIG9yICdhdXRvJywgYW5kIGl0IGRvZXMgbm90IGNvbnRhaW4gYSBsaW5lIGJveCwgYW5k
IGFsbCBvZiBpdHMgaW4tZmxvdyBjaGlsZHJlbidzIG1hcmdpbnMgKGlmIGFueSkgY29sbGFwc2Uu
CisgICAgaWYgKGhhc0JvcmRlckJlZm9yZShsYXlvdXRCb3gpIHx8IGhhc0JvcmRlckFmdGVyKGxh
eW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChoYXNQYWRkaW5nQmVm
b3JlKGxheW91dEJveCkgfHwgaGFzUGFkZGluZ0FmdGVyKGxheW91dEJveCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgY29tcHV0ZWQgMCBoZWlnaHQu
CisgICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IENoZWNrIGZvciBjb21wdXRlZCAwIGhlaWdo
dC4KKyAgICBpZiAoIWxheW91dEJveC5zdHlsZSgpLm1pbkhlaWdodCgpLmlzQXV0bygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWRvd25jYXN0PENvbnRhaW5lcj4obGF5
b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
IChRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZv
cm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhyb3VnaCBt
YXJnaW4gZXN0aW1hdGlvbiwgd2UgZG9uJ3QgbmVjZXNzYXJpbHkgaGF2ZSBhbiBhY3R1YWwgc3Rh
dGUgZm9yIHRoaXMgbGF5b3V0IGJveCBzaW5jZQorICAgICAgICAvLyB3ZSBoYXZlbid0IHN0YXJ0
ZWQgbGF5aW5nIGl0IG91dCB5ZXQuCisgICAgICAgIGlmICghbGF5b3V0U3RhdGUuaGFzRm9ybWF0
dGluZ1N0YXRlKGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFi
bGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpLmlubGluZVJ1bnMoKS5pc0VtcHR5KCk7
CisgICAgfQorICAgIAorICAgIGZvciAoYXV0byogaW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250
YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOyBpbmZsb3dDaGlsZDsgaW5mbG93
Q2hpbGQgPSBpbmZsb3dDaGlsZC0+bmV4dEluRmxvd1NpYmxpbmcoKSkgeworICAgICAgICBpZiAo
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCppbmZsb3dDaGlsZCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChs
YXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVy
dGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oUG9z
aXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgYSwgUG9zaXRpdmVBbmROZWdh
dGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgYikKK3sKKyAgICBQb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRlZFZhbHVlczsKKyAgICBpZiAoYS5wb3NpdGl2
ZSAmJiBiLnBvc2l0aXZlKQorICAgICAgICBjb21wdXRlZFZhbHVlcy5wb3NpdGl2ZSA9IHN0ZDo6
bWF4KCphLnBvc2l0aXZlLCAqYi5wb3NpdGl2ZSk7CisgICAgZWxzZQorICAgICAgICBjb21wdXRl
ZFZhbHVlcy5wb3NpdGl2ZSA9IGEucG9zaXRpdmUgPyBhLnBvc2l0aXZlIDogYi5wb3NpdGl2ZTsK
KworICAgIGlmIChhLm5lZ2F0aXZlICYmIGIubmVnYXRpdmUpCisgICAgICAgIGNvbXB1dGVkVmFs
dWVzLm5lZ2F0aXZlID0gc3RkOjptaW4oKmEubmVnYXRpdmUsICpiLm5lZ2F0aXZlKTsKKyAgICBl
bHNlCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm5lZ2F0aXZlID0gYS5uZWdhdGl2ZSA/IGEubmVn
YXRpdmUgOiBiLm5lZ2F0aXZlOworCisgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVzOworfQorCitz
dGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgY29tcHV0ZWRQ
b3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bjo6VmFsdWVzIGEsIE9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblZhbHVlKQoreworICAgIGlm
ICghbWFyZ2luVmFsdWUgfHwgIW1hcmdpblZhbHVlLnZhbHVlKCkpCisgICAgICAgIHJldHVybiBh
OworICAgIGlmICgqbWFyZ2luVmFsdWUgPiAwKQorICAgICAgICByZXR1cm4gY29tcHV0ZWRQb3Np
dGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgbWFyZ2luVmFsdWUsIHsgfSB9KTsKKyAgICBpZiAo
Km1hcmdpblZhbHVlIDwgMCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkUG9zaXRpdmVBbmROZWdh
dGl2ZU1hcmdpbihhLCB7IHsgfSwgbWFyZ2luVmFsdWUgfSk7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RhdGljIE9wdGlvbmFsPExheW91dFVuaXQ+
IG1hcmdpblZhbHVlKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIG1h
cmdpblZhbHVlcykKK3sKKyAgICAvLyBXaGVuIHR3byBvciBtb3JlIG1hcmdpbnMgY29sbGFwc2Us
IHRoZSByZXN1bHRpbmcgbWFyZ2luIHdpZHRoIGlzIHRoZSBtYXhpbXVtIG9mIHRoZSBjb2xsYXBz
aW5nIG1hcmdpbnMnIHdpZHRocy4KKyAgICAvLyBJbiB0aGUgY2FzZSBvZiBuZWdhdGl2ZSBtYXJn
aW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBuZWdhdGl2ZSBh
ZGpvaW5pbmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBtYXhpbXVtCisgICAgLy8gb2Yg
dGhlIHBvc2l0aXZlIGFkam9pbmluZyBtYXJnaW5zLiBJZiB0aGVyZSBhcmUgbm8gcG9zaXRpdmUg
bWFyZ2lucywgdGhlIG1heGltdW0gb2YgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgYWRqb2lu
aW5nIG1hcmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB6ZXJvLgorICAgIGlmICghbWFyZ2luVmFsdWVz
Lm5lZ2F0aXZlKQorICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWVzLnBvc2l0aXZlOworCisgICAg
aWYgKCFtYXJnaW5WYWx1ZXMucG9zaXRpdmUpCisgICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZXMu
bmVnYXRpdmU7CisKKyAgICByZXR1cm4gKm1hcmdpblZhbHVlcy5wb3NpdGl2ZSArICptYXJnaW5W
YWx1ZXMubmVnYXRpdmU7Cit9CisKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Ojp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBWZXJ0aWNhbE1hcmdpbiYgbmV4dFNpYmxp
bmdWZXJ0aWNhbE1hcmdpbikKK3sKKyAgICAvLyAxLiBHZXQgdGhlIG1hcmdpbiBiZWZvcmUgdmFs
dWUgZnJvbSB0aGUgbmV4dCBpbi1mbG93IHNpYmxpbmcuIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhp
cyBib3gncyBtYXJnaW4gYWZ0ZXIgdmFsdWUgbm93IHNpbmNlIHRoZXkgYXJlIGNvbGxhcHNlZC4K
KyAgICAvLyAyLiBVcGRhdGUgdGhlIGNvbGxhcHNlZCBtYXJnaW4gYWZ0ZXIgdmFsdWUgYXMgd2Vs
bCBhcyB0aGUgcG9zaXRpdmUvbmVnYXRpdmUgY2FjaGUuCisgICAgLy8gMy4gQ2hlY2sgaWYgdGhl
IGJveCdzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaC4KKyAgICAvLyA0LiBJZiBzbywgdXBkYXRl
IHRoZSBjb2xsYXBzZWQgbWFyZ2luIGJlZm9yZSB2YWx1ZSBhcyB3ZWxsIGFzIHRoZSBwb3NpdGl2
ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyA1LiBJbiBjYXNlIG9mIGNvbGxhcHNlZCB0aHJvdWdo
IG1hcmdpbnMgY2hlY2sgaWYgdGhlIGJlZm9yZSBtYXJnaW4gY29sbGFwZXMgd2l0aCB0aGUgcHJl
dmlvdXMgaW5mbG93IHNpYmxpbmcncyBhZnRlciBtYXJnaW4uCisgICAgLy8gNi4gSWYgc28sIGp1
bXAgdG8gIzIuCisgICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01h
cmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKKyAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxheUJveC52ZXJ0aWNh
bE1hcmdpbigpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW5BZnRlciA9IG5leHRTaWJsaW5nVmVy
dGljYWxNYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiB2ZXJ0aWNhbE1hcmdpbkJlZm9yZTsKKworICAgIGF1dG8gbWFyZ2luc0NvbGxhcHNlVGhyb3Vn
aCA9IE1hcmdpbjo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaCkKKyAgICAgICAgdmVydGljYWxNYXJn
aW5CZWZvcmUgPSB2ZXJ0aWNhbE1hcmdpbkFmdGVyOyAKKyAgICBlbHNlIGlmICh2ZXJ0aWNhbE1h
cmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSkKKyAgICAgICAgdmVydGljYWxNYXJnaW5CZWZvcmUgPSB2
ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+YmVmb3JlOworCisgICAgLy8gVXBkYXRl
IHZlcnRpY2FsIG1hcmdpbiB2YWx1ZXMuCisgICAgdmVydGljYWxNYXJnaW4uc2V0Q29sbGFwc2Vk
VmFsdWVzKHsgdmVydGljYWxNYXJnaW5CZWZvcmUsIHZlcnRpY2FsTWFyZ2luQWZ0ZXIgfSk7Cisg
ICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbE1hcmdpbik7CisKKyAgICAv
LyBVcGRhdGUgcG9zaXRpdmUvbmVnYXRpdmUgY2FjaGUuCisgICAgYXV0byYgYmxvY2tGb3JtYXR0
aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9y
bWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkpOworICAgIGF1dG8gcG9zaXRpdmVOZWdhdGl2
ZU1hcmdpbiA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNh
bE1hcmdpbihsYXlvdXRCb3gpOworICAgIGF1dG8gbmV4dFNpYmxpbmdQb3NpdGl2ZU5lZ2F0aXZl
TWFyZ2luQmVmb3JlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9zaXRpdmVBbmROZWdhdGl2ZVZl
cnRpY2FsTWFyZ2luKCpsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkuYmVmb3JlOworCisg
ICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5hZnRlciA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdh
dGl2ZU1hcmdpbihuZXh0U2libGluZ1Bvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUsIHBvc2l0
aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIpOworICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdo
KSB7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYmVmb3JlID0gY29tcHV0ZWRQb3Np
dGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYmVmb3JlLCBwb3Np
dGl2ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyKTsKKyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdp
bi5hZnRlciA9IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYmVmb3JlOyAKKyAgICB9CisgICAgYmxv
Y2tGb3JtYXR0aW5nU3RhdGUuc2V0UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGxh
eW91dEJveCwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbik7CisKKyAgICBpZiAoIW1hcmdpbnNDb2xs
YXBzZVRocm91Z2ggfHwgIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdN
YXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXlvdXRCb3gucHJl
dmlvdXNJbkZsb3dTaWJsaW5nKCksIHZlcnRpY2FsTWFyZ2luKTsKK30KKworUG9zaXRpdmVBbmRO
ZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luOjpwb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE1hcmdpblR5cGUgbWFyZ2luVHlwZSkKK3sKKyAgICBh
dXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRl
PihsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgYXV0
byBoYXNQcmVjb21wdXRlZFZhbHVlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUuaGFzUG9zaXRpdmVB
bmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCk7CisgICAgaWYgKG1hcmdpblR5cGUg
PT0gTWFyZ2luVHlwZTo6QmVmb3JlKQorICAgICAgICByZXR1cm4gaGFzUHJlY29tcHV0ZWRWYWx1
ZSA/IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bihsYXlvdXRCb3gpLmJlZm9yZSA6IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0
U3RhdGUsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGhhc1ByZWNvbXB1dGVkVmFsdWUgPyBibG9j
a0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0
Qm94KS5hZnRlciA6IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KTsKK30KKworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
Cit7CisgICAgYXV0byBmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlID0gWyZdKCkgLT4g
UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBpZiAo
IWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIGF1dG8qIGZpcnN0SW5GbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCkuZmlyc3RJbkZsb3dDaGlsZCgpOworICAgICAgICBpZiAoIWZpcnN0SW5GbG93Q2hpbGQpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxkSWdu
b3JlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCAqZmlyc3RJbkZsb3dDaGlsZCkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhs
YXlvdXRTdGF0ZSwgKmZpcnN0SW5GbG93Q2hpbGQsIE1hcmdpblR5cGU6OkJlZm9yZSk7CisgICAg
fTsKKworICAgIGF1dG8gcHJldmlvdVNpYmxpbmdDb2xsYXBzZWRNYXJnaW5BZnRlciA9IFsmXSgp
IC0+IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIHsKKyAgICAgICAg
YXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpOworICAgICAgICBpZiAoIXByZXZpb3VzSW5GbG93U2libGluZykKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcpKQorICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMobGF5b3V0U3Rh
dGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcsIE1hcmdpblR5cGU6OkFmdGVyKTsKKyAgICB9Owor
CisgICAgLy8gMS4gR2F0aGVyIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdmFsdWVzIGZy
b20gZmlyc3QgY2hpbGQgaWYgbWFyZ2lucyBhcmUgYWRqb2luaW5nLgorICAgIC8vIDIuIEdhdGhl
ciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlcyBmcm9tIHByZXZpb3VzIGluZmxv
dyBzaWJsaW5nIGlmIG1hcmdpbnMgYXJlIGFkam9pbmluZy4KKyAgICAvLyAzLiBDb21wdXRlIG1p
bi9tYXggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNvbGxhcHNlZCBtYXJnaW4gdmFsdWVzIHVzaW5n
IG5vbi1jb2xscGFzZWQgY29tcHV0ZWQgbWFyZ2luIGJlZm9yZS4KKyAgICBhdXRvIGNvbGxhcHNl
ZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihmaXJzdENo
aWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCksIHByZXZpb3VTaWJsaW5nQ29sbGFwc2VkTWFyZ2lu
QWZ0ZXIoKSk7CisgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBHZW9tZXRyeTo6
Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpLmJlZm9yZTsKKyAgICByZXR1cm4gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFy
Z2luKGNvbGxhcHNlZE1hcmdpbkJlZm9yZSwgbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKTsKK30K
KworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBhdXRv
IGxhc3RDaGlsZENvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdh
dGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4o
bGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGF1dG8qIGxhc3RJ
bkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hp
bGQoKTsKKyAgICAgICAgaWYgKCFsYXN0SW5GbG93Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGls
ZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgcmV0dXJuIHBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93
Q2hpbGQsIE1hcmdpblR5cGU6OkFmdGVyKTsKKyAgICB9OworCisgICAgLy8gV2UgZG9uJ3Qga25v
dyB5ZXQgdGhlIG1hcmdpbiBiZWZvcmUgdmFsdWUgb2YgdGhlIG5leHQgc2libGluZy4gTGV0J3Mg
anVzdCBwcmV0ZW5kIGl0IGRvZXMgbm90IGhhdmUgb25lIGFuZCAKKyAgICAvLyB1cGRhdGUgaXQg
bGF0ZXIgd2hlbiB3ZSBjb21wdXRlIHRoZSBuZXh0IHNpYmxpbmcncyBtYXJnaW4gYmVmb3JlLiBT
ZWUgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIuCisgICAgYXV0byBub25Db2xsYXBzZWRNYXJn
aW5BZnRlciA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFs
dWUobGF5b3V0U3RhdGUsIGxheW91dEJveCkuYWZ0ZXI7CisgICAgcmV0dXJuIGNvbXB1dGVkUG9z
aXRpdmVBbmROZWdhdGl2ZU1hcmdpbihsYXN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5BZnRlcigpLCBu
b25Db2xsYXBzZWRNYXJnaW5BZnRlcik7Cit9CisKK0VzdGltYXRlZE1hcmdpbkJlZm9yZSBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OmVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIGlm
IChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEFT
U0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAgIC8vIENhbid0IGVzdGltYXRl
IHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ugc2hvdWxkbid0
IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KKyAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
SW5GbG93KCkpOworICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBi
b3VuZGFyeS4KKyAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKSk7CisKKyAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3Rh
dGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiB7IG1hcmdpblZhbHVlKHBvc2l0aXZlTmVn
YXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpLnZhbHVlT3IoMCkgfTsK
KyAgICAKKyAgICByZXR1cm4geyBtYXJnaW5WYWx1ZShjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRp
dmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
KSkudmFsdWVPcigwKSB9OworfQorCitWZXJ0aWNhbE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpNYXJnaW46OnZlcnRpY2FsKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxC
b3goKSk7CisgICAgLy8gMS4gR2V0IG1pbi9tYXggbWFyZ2luIHRvcCB2YWx1ZXMgZnJvbSB0aGUg
Zmlyc3QgaW4tZmxvdyBjaGlsZCBpZiB3ZSBhcmUgY29sbGFwc2luZyBtYXJnaW4gdG9wIHdpdGgg
aXQuCisgICAgLy8gMi4gR2V0IG1pbi9tYXggbWFyZ2luIHRvcCB2YWx1ZXMgZnJvbSB0aGUgcHJl
dmlvdXMgaW4tZmxvdyBzaWJsaW5nLCBpZiB3ZSBhcmUgY29sbGFwc2luZyBtYXJnaW4gdG9wIHdp
dGggaXQuCisgICAgLy8gMy4gR2V0IHRoaXMgbGF5b3V0IGJveCdzIGNvbXB1dGVkIG1hcmdpbiB0
b3AgdmFsdWUuCisgICAgLy8gNC4gVXBkYXRlIHRoZSBtaW4vbWF4IHZhbHVlIGFuZCBjb21wdXRl
IHRoZSBmaW5hbCBtYXJnaW4uIAorICAgIGF1dG8gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9y
ZSA9IE1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KTsKKyAgICBhdXRvIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciA9IE1hcmdpbjo6
cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworCisg
ICAgYXV0byBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoID0gTWFyZ2luOjptYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOyAKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNl
VGhyb3VnaCkgeworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlID0gY29tcHV0
ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUs
IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcik7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW5BZnRlciA9IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmU7ICAgICAgICAgCisgICAg
fQorCisgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1h
dHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkp
OworICAgIGJsb2NrRm9ybWF0dGluZ1N0YXRlLnNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNh
bE1hcmdpbihsYXlvdXRCb3gsIHsgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSwgcG9zaXRp
dmVOZWdhdGl2ZU1hcmdpbkFmdGVyIH0pOworCisgICAgVmVydGljYWxNYXJnaW46OkNvbGxhcHNl
ZFZhbHVlcyBjb2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgbWFyZ2luVmFsdWUocG9zaXRpdmVO
ZWdhdGl2ZU1hcmdpbkJlZm9yZSksIG1hcmdpblZhbHVlKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5B
ZnRlciksIG1hcmdpbnNDb2xsYXBzZVRocm91Z2ggfTsgCisgICAgcmV0dXJuIHsgR2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KSwgY29sbGFwc2VkVmVydGljYWxNYXJnaW4gfTsKK30KKworfQorfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFy
Z2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja01hcmdpbkNvbGxhcHNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY3
NzA4NzQ1Mzk0YTc4NWI4NGQ5N2M4MmY1ZjQ4MTM1YTNmOGQ1MC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDY1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5oIgotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCi0KLSNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJM
YXlvdXRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKLSNpbmNsdWRlICJMYXlv
dXRVbml0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotbmFtZXNwYWNlIExheW91dCB7Ci0KLXN0YXRpYyBib29sIGhhc0JvcmRlcihjb25zdCBCb3Jk
ZXJWYWx1ZSYgYm9yZGVyVmFsdWUpCi17Ci0gICAgaWYgKGJvcmRlclZhbHVlLnN0eWxlKCkgPT0g
Qm9yZGVyU3R5bGU6Ok5vbmUgfHwgYm9yZGVyVmFsdWUuc3R5bGUoKSA9PSBCb3JkZXJTdHlsZTo6
SGlkZGVuKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICEhYm9yZGVyVmFsdWUu
d2lkdGgoKTsKLX0KLQotc3RhdGljIGJvb2wgaGFzUGFkZGluZyhjb25zdCBMZW5ndGgmIHBhZGRp
bmdWYWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgcGVyY2VudCB2YWx1ZSBuZWVkcyB0
byBiZSByZXNvbHZlZC4KLSAgICByZXR1cm4gIXBhZGRpbmdWYWx1ZS5pc1plcm8oKTsKLX0KLQot
c3RhdGljIGJvb2wgaGFzQm9yZGVyQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAg
IHJldHVybiBoYXNCb3JkZXIobGF5b3V0Qm94LnN0eWxlKCkuYm9yZGVyQmVmb3JlKCkpOwotfQot
Ci1zdGF0aWMgYm9vbCBoYXNCb3JkZXJBZnRlcihjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAg
ICByZXR1cm4gaGFzQm9yZGVyKGxheW91dEJveC5zdHlsZSgpLmJvcmRlckFmdGVyKCkpOwotfQot
Ci1zdGF0aWMgYm9vbCBoYXNQYWRkaW5nQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewot
ICAgIHJldHVybiBoYXNQYWRkaW5nKGxheW91dEJveC5zdHlsZSgpLnBhZGRpbmdCZWZvcmUoKSk7
Ci19Ci0KLXN0YXRpYyBib29sIGhhc1BhZGRpbmdBZnRlcihjb25zdCBCb3gmIGxheW91dEJveCkK
LXsKLSAgICByZXR1cm4gaGFzUGFkZGluZyhsYXlvdXRCb3guc3R5bGUoKS5wYWRkaW5nQWZ0ZXIo
KSk7Ci19Ci0KLXN0YXRpYyBib29sIGhhc0NsZWFyYW5jZShjb25zdCBCb3gmIGxheW91dEJveCkK
LXsKLSAgICBpZiAoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAvLyBGSVhNRQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wg
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgbGF5b3V0Qm94KQot
ewotICAgIC8vIFdlYktpdCB0cmVhdHMgdGhlIGRvY3VtZW50IGVsZW1lbnQgcmVuZGVyZXIgYXMg
YSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdC4gSXQgcHJvYmFibHkgb25seSBpbXBhY3Rz
IG1hcmdpbiBjb2xsYXBzaW5nLCBzbyBsZXQncyBub3QgZG8KLSAgICAvLyBhIGxheW91dCB3aWRl
IHF1aXJrIG9uIHRoaXMgZm9yIG5vdy4KLSAgICBpZiAobGF5b3V0Qm94LmlzRG9jdW1lbnRCb3go
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGxheW91dEJveC5lc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsKLX0KLQotc3RhdGljIExheW91dFVuaXQgbWFyZ2lu
VmFsdWUoTGF5b3V0VW5pdCBjdXJyZW50TWFyZ2luVmFsdWUsIExheW91dFVuaXQgY2FuZGlkYXRl
TWFyZ2luVmFsdWUpCi17Ci0gICAgaWYgKCFjYW5kaWRhdGVNYXJnaW5WYWx1ZSkKLSAgICAgICAg
cmV0dXJuIGN1cnJlbnRNYXJnaW5WYWx1ZTsKLSAgICBpZiAoIWN1cnJlbnRNYXJnaW5WYWx1ZSkK
LSAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZU1hcmdpblZhbHVlOwotICAgIC8vIEJvdGggbWFyZ2lu
cyBhcmUgcG9zaXRpdmUuCi0gICAgaWYgKGNhbmRpZGF0ZU1hcmdpblZhbHVlID4gMCAmJiBjdXJy
ZW50TWFyZ2luVmFsdWUgPiAwKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2FuZGlkYXRlTWFy
Z2luVmFsdWUsIGN1cnJlbnRNYXJnaW5WYWx1ZSk7Ci0gICAgLy8gQm90aCBtYXJnaW5zIGFyZSBu
ZWdhdGl2ZS4KLSAgICBpZiAoY2FuZGlkYXRlTWFyZ2luVmFsdWUgPCAwICYmIGN1cnJlbnRNYXJn
aW5WYWx1ZSA8IDApCi0gICAgICAgIHJldHVybiAwIC0gc3RkOjptYXgoc3RkOjphYnMoY2FuZGlk
YXRlTWFyZ2luVmFsdWUudG9GbG9hdCgpKSwgc3RkOjphYnMoY3VycmVudE1hcmdpblZhbHVlLnRv
RmxvYXQoKSkpOwotICAgIC8vIE9uZSBvZiB0aGUgbWFyZ2lucyBpcyBuZWdhdGl2ZS4KLSAgICBy
ZXR1cm4gY3VycmVudE1hcmdpblZhbHVlICsgY2FuZGlkYXRlTWFyZ2luVmFsdWU7Ci19Ci0KLUxh
eW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
Ojpjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgcmV0dXJuIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVy
dGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5iZWZvcmU7Ci19Ci0KLUxh
eW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
Ojpjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5p
c0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0
aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmFmdGVyOwotfQotCi1MYXlv
dXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6
bm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2
ZWxCb3goKSk7Ci0KLSAgICAvLyBOb24gY29sbGFwc2VkIG1hcmdpbiB0b3AgaW5jbHVkZXMgY29s
bGFwc2VkIG1hcmdpbiBmcm9tIGluZmxvdyBmaXJzdCBjaGlsZC4KLSAgICByZXR1cm4gbWFyZ2lu
VmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91
dEJveCksIGNvbGxhcHNlZE1hcmdpbkJlZm9yZUZyb21GaXJzdENoaWxkKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJU
KGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBOb24gY29sbGFwc2VkIG1h
cmdpbiBib3R0b20gaW5jbHVkZXMgY29sbGFwc2VkIG1hcmdpbiBmcm9tIGluZmxvdyBsYXN0IGNo
aWxkLgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFm
dGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0
Q2hpbGQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2lu
QmVmb3JlRnJvbUZpcnN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJv
eCgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBmaXJzdCBjaGlsZCBjb2xsYXBzZXMgaXRzIG1h
cmdpbiB0b3AuCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJveCBmcm9tIGEgbm9u
LWJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwvc3Bhbj48L2Rpdj4u
Ci0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxh
eW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IFRha2UgY29sbGFwc2VkIHRocm91Z2ggbWFyZ2lu
IGludG8gYWNjb3VudC4KLSAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENv
bnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFtYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBmaXJzdElu
Rmxvd0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQg
bWFyZ2luIHRvcCByZWN1cnNpdmVseS4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWRO
b25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpLCBj
b2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZs
b3dDaGlsZCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENoaWxkKGNv
bnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0g
ICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBDaGVjayBp
ZiB0aGUgbGFzdCBjaGlsZCBwcm9wYWdhdGVzIGl0cyBtYXJnaW4gYm90dG9tLgotICAgIGlmICgh
aXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCkuaGFzSW5GbG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBEbyBub3Qg
Y29sbGFwc2UgbWFyZ2luIHdpdGggYSBib3ggZnJvbSBhIG5vbi1ibG9jayBmb3JtYXR0aW5nIGNv
bnRleHQgPGRpdj48c3Bhbj5mb29iYXI8L3NwYW4+PC9kaXY+LgotICAgIGlmIChsYXlvdXRCb3gu
ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpICYmICFsYXlvdXRCb3guZXN0YWJsaXNoZXNC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8v
IEZJWE1FOiBDaGVjayBmb3IgY29sbGFwc2VkIHRocm91Z2ggbWFyZ2luLgotICAgIGF1dG8mIGxh
c3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxv
d0NoaWxkKCk7Ci0gICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5B
ZnRlcihsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICAvLyBDb2xsZWN0IGNvbGxhcHNlZCBtYXJnaW4gYm90dG9tIHJlY3Vyc2l2ZWx5LgotICAg
IHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hp
bGQobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpOwotfQotCi1ib29sIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFw
c2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgLy8gMS4gVGhpcyBpcyB0aGUgbGFzdCBpbi1m
bG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFyZ2lu
IGFmdGVyIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdzIG1hcmdpbiBhZnRlciBvcgotICAgIC8vIDIu
IFRoaXMgYm94J3MgbWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHRoZSBuZXh0IHNpYmxpbmcn
cyBtYXJnaW4gYmVmb3JlIGFuZCB0aGF0IHNpYmxpbmcgY29sbGFwc2VzIHRocm91Z2ggYW5kCi0g
ICAgLy8gd2UgY2FuIGdldCB0byB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIGxpa2UgdGhhdC4KLSAg
ICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBsYXlvdXRCb3gucGFyZW50KCktPmxhc3RJbkZsb3dD
aGlsZCgpOwotICAgIGZvciAoYXV0byogY3VycmVudEJveCA9ICZsYXlvdXRCb3g7IGN1cnJlbnRC
b3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5uZXh0SW5GbG93U2libGluZygpKSB7Ci0gICAg
ICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoY3VycmVudEJveCA9PSBs
YXN0SW5GbG93Q2hpbGQpCi0gICAgICAgICAgICByZXR1cm4gbWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KTsgCi0gICAgICAg
IGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcoKmN1cnJlbnRCb3gpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50
TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCi17Ci0gICAgLy8gVGhlIGZpcnN0IGluZmxvdyBjaGlsZCBjb3VsZCBwcm9wYWdh
dGUgaXRzIHRvcCBtYXJnaW4gdG8gcGFyZW50LgotICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9DU1MyMS9ib3guaHRtbCNjb2xsYXBzaW5nLW1hcmdpbnMKLSAgICBpZiAobGF5b3V0Qm94Lmlz
QW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChsYXlvdXRC
b3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRl
ZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Ly8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNl
LgotICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5v
dCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT25seSB0aGUgZmlyc3QgaW5sZmxvdyBjaGlsZCBj
b2xsYXBzZXMgd2l0aCBwYXJlbnQuCi0gICAgaWYgKGxheW91dEJveC5wcmV2aW91c0luRmxvd1Np
YmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgcGFyZW50ID0gKmxh
eW91dEJveC5wYXJlbnQoKTsKLSAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJs
aXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRo
ZWlyIGluLWZsb3cgY2hpbGRyZW4KLSAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChoYXNCb3Jk
ZXJCZWZvcmUocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc1Bh
ZGRpbmdCZWZvcmUocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gLi4u
YW5kIHRoZSBjaGlsZCBoYXMgbm8gY2xlYXJhbmNlLgotICAgIGlmIChoYXNDbGVhcmFuY2UobGF5
b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNl
KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17
Ci0gICAgLy8gSWYgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYW4gZWxlbWVudCB3aXRo
IGNsZWFyYW5jZSBhcmUgYWRqb2luaW5nLCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB3aXRoIHRoZSBh
ZGpvaW5pbmcgbWFyZ2lucwotICAgIC8vIG9mIGZvbGxvd2luZyBzaWJsaW5ncyBidXQgdGhhdCBy
ZXN1bHRpbmcgbWFyZ2luIGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGJvdHRvbSBtYXJnaW4g
b2YgdGhlIHBhcmVudCBibG9jay4KLSAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5
b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAo
YXV0byogcHJldmlvdXNTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygp
OyBwcmV2aW91c1NpYmxpbmc7IHByZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGluZy0+cHJl
dmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJv
dWdoKGxheW91dFN0YXRlLCAqcHJldmlvdXNTaWJsaW5nKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgaWYgKGhhc0NsZWFyYW5jZSgqcHJldmlvdXNTaWJsaW5nKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICAvLyAxLiBUaGlzIGlzIHRo
ZSBmaXJzdCBpbi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoIGFu
ZCB0aGUgbWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMgd2l0aCBwYXJlbnQncyBtYXJnaW4gYmVmb3Jl
IG9yCi0gICAgLy8gMi4gVGhpcyBib3gncyBtYXJnaW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHRo
ZSBwcmV2aW91cyBzaWJsaW5nJ3MgbWFyZ2luIGFmdGVyIGFuZCB0aGF0IHNpYmxpbmcgY29sbGFw
c2VzIHRocm91Z2ggYW5kCi0gICAgLy8gd2UgY2FuIGdldCB0byB0aGUgZmlyc3QgaW4tZmxvdyBj
aGlsZCBsaWtlIHRoYXQuCi0gICAgYXV0byogZmlyc3RJbkZsb3dDaGlsZCA9IGxheW91dEJveC5w
YXJlbnQoKS0+Zmlyc3RJbkZsb3dDaGlsZCgpOwotICAgIGZvciAoYXV0byogY3VycmVudEJveCA9
ICZsYXlvdXRCb3g7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5wcmV2aW91
c0luRmxvd1NpYmxpbmcoKSkgewotICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2go
bGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKGN1cnJlbnRCb3ggPT0gZmlyc3RJbkZsb3dDaGlsZCkKLSAgICAgICAgICAgIHJl
dHVybiBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0
YXRlLCAqY3VycmVudEJveCk7IAotICAgICAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhQcmV2aW91c1NpYmxpbmcoKmN1cnJlbnRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
OjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIGlmIChsYXlv
dXRCb3guaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJU
KGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBNYXJnaW5zIGJldHdlZW4g
YSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3Qg
Y29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94
ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBPbmx5IHRoZSBsYXN0IGlubGZsb3cg
Y2hpbGQgY29sbGFwc2VzIHdpdGggcGFyZW50LgotICAgIGlmIChsYXlvdXRCb3gubmV4dEluRmxv
d1NpYmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgcGFyZW50ID0g
KmxheW91dEJveC5wYXJlbnQoKTsKLSAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0
YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRo
IHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCi0gICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dChwYXJlbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGUg
Ym90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrIGJveCB3aXRoIGEgJ2hlaWdodCcgb2Yg
J2F1dG8nIGNvbGxhcHNlcyB3aXRoIGl0cyBsYXN0IGluLWZsb3cgYmxvY2stbGV2ZWwgY2hpbGQn
cyBib3R0b20gbWFyZ2luLCBpZjoKLSAgICBpZiAoIXBhcmVudC5zdHlsZSgpLmhlaWdodCgpLmlz
QXV0bygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyB0aGUgYm94IGhhcyBubyBi
b3R0b20gcGFkZGluZywgYW5kCi0gICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUocGFyZW50KSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gdGhlIGJveCBoYXMgbm8gYm90dG9tIGJvcmRl
ciwgYW5kCi0gICAgaWYgKGhhc0JvcmRlckJlZm9yZShwYXJlbnQpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyB0aGUgY2hpbGQncyBib3R0b20gbWFyZ2luIG5laXRoZXIgY29sbGFw
c2VzIHdpdGggYSB0b3AgbWFyZ2luIHRoYXQgaGFzIGNsZWFyYW5jZS4uLgotICAgIGlmIChtYXJn
aW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gbm9y
IChpZiB0aGUgYm94J3MgbWluLWhlaWdodCBpcyBub24temVybykgd2l0aCB0aGUgYm94J3MgdG9w
IG1hcmdpbi4KLSAgICBhdXRvIGNvbXB1dGVkTWluSGVpZ2h0ID0gcGFyZW50LnN0eWxlKCkubG9n
aWNhbE1pbkhlaWdodCgpOwotICAgIGlmICghY29tcHV0ZWRNaW5IZWlnaHQuaXNBdXRvKCkgJiYg
Y29tcHV0ZWRNaW5IZWlnaHQudmFsdWUoKSAmJiBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJl
bnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBy
ZXZpb3VzU2libGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIGlmICghbGF5b3V0Qm94LnByZXZpb3VzSW5G
bG93U2libGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBwcmV2aW91
c0luRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOwotCi0g
ICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8g
bm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8
fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Ym94ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmICgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpICYmICFsYXlvdXRCb3guc3R5bGUoKS50b3AoKS5pc0F1dG8oKSkKLSAgICAgICAg
fHwgKHByZXZpb3VzSW5GbG93U2libGluZy5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhcHJl
dmlvdXNJbkZsb3dTaWJsaW5nLnN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBu
b3QgY29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgfHwgcHJl
dmlvdXNJbkZsb3dTaWJsaW5nLmlzSW5saW5lQmxvY2tCb3goKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZl
bCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZgotICAgIC8v
IGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywgdW5sZXNzIHRoYXQgc2libGlu
ZyBoYXMgY2xlYXJhbmNlLgotICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0Qm94KSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxh
cHNlc1dpdGhOZXh0U2libGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIGlmICghbGF5b3V0Qm94Lm5leHRJ
bkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtYXJn
aW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKCpsYXlvdXRCb3gubmV4dEluRmxv
d1NpYmxpbmcoKSk7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91
dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBBIGJveCdzIG93biBtYXJnaW5zIGNv
bGxhcHNlIGlmIHRoZSAnbWluLWhlaWdodCcgcHJvcGVydHkgaXMgemVybywgYW5kIGl0IGhhcyBu
ZWl0aGVyIHRvcCBvciBib3R0b20gYm9yZGVycyBub3IgdG9wIG9yIGJvdHRvbSBwYWRkaW5nLAot
ICAgIC8vIGFuZCBpdCBoYXMgYSAnaGVpZ2h0JyBvZiBlaXRoZXIgMCBvciAnYXV0bycsIGFuZCBp
dCBkb2VzIG5vdCBjb250YWluIGEgbGluZSBib3gsIGFuZCBhbGwgb2YgaXRzIGluLWZsb3cgY2hp
bGRyZW4ncyBtYXJnaW5zIChpZiBhbnkpIGNvbGxhcHNlLgotICAgIGlmIChoYXNCb3JkZXJCZWZv
cmUobGF5b3V0Qm94KSB8fCBoYXNCb3JkZXJBZnRlcihsYXlvdXRCb3gpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gpIHx8IGhhc1Bh
ZGRpbmdBZnRlcihsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBG
SVhNRTogQ2hlY2sgZm9yIGNvbXB1dGVkIDAgaGVpZ2h0LgotICAgIGlmICghbGF5b3V0Qm94LnN0
eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IEZJWE1FOiBDaGVjayBmb3IgY29tcHV0ZWQgMCBoZWlnaHQuCi0gICAgaWYgKCFsYXlvdXRCb3gu
c3R5bGUoKS5taW5IZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkp
IHsKLSAgICAgICAgaWYgKGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3Rh
dGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSkuaW5saW5lUnVucygpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBmb3IgKGF1dG8qIGluZmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gp
LmZpcnN0SW5GbG93Q2hpbGQoKTsgaW5mbG93Q2hpbGQ7IGluZmxvd0NoaWxkID0gaW5mbG93Q2hp
bGQtPm5leHRJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghbWFyZ2luc0NvbGxh
cHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1M
YXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBz
ZTo6bWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCi17Ci0gICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwot
Ci0gICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2luaW5nTWFyZ2luQmVmb3JlQW5kQWZ0ZXIoKSBp
bnRvIGFjY291bnQuCi0gICAgaWYgKG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJn
aW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gRklYTUU6IEZpbmQgb3V0IHRoZSBsb2dpYyBiZWhpbmQgdGhpcy4KLSAgICBpZiAoQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUobGF5
b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKCFtYXJn
aW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGxheW91dEJveCkpIHsKLSAgICAg
ICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQot
ICAgICAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKLSAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29sbGFwc2VkIHRocm91Z2ggdmFs
dWUuCi0gICAgICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3Jl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBhdXRvIG1hcmdpbkFmdGVyID0gbm9u
Q29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7IAotICAgICAgICBy
ZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlcik7Ci0gICAgfQotCi0g
ICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZlbCBlbGVtZW50
IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1mbG93
IGJsb2NrLWxldmVsIHNpYmxpbmcsCi0gICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xl
YXJhbmNlLgotICAgIGF1dG8qIHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2
aW91c0luRmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIXByZXZpb3VzSW5GbG93U2libGluZykKLSAg
ICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KTsKLQotICAgIGF1dG8gcHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIgPSBub25Db2xsYXBz
ZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZyk7Ci0gICAg
YXV0byBtYXJnaW5CZWZvcmUgPSBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUs
IGxheW91dEJveCk7Ci0gICAgcmV0dXJuIG1hcmdpblZhbHVlKG1hcmdpbkJlZm9yZSwgcHJldmlv
dXNTaWJsaW5nTWFyZ2luQWZ0ZXIpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBpZiAobGF5
b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKGxh
eW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpv
aW5pbmdNYXJnaW5CZWZvcmVBbmRCb3R0b20oKSBpbnRvIGFjY291bnQuCi0gICAgaWYgKG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdo
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIEZs
b2F0cyBhbmQgb3V0IG9mIGZsb3cgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UgdGhl
aXIgbWFyZ2lucy4KLSAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5n
KGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKLQotICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGlu
LWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29sbGFwc2VzIHdpdGggdGhlIHRvcCBt
YXJnaW4gb2YgaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLAotICAgIC8vIHVu
bGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5jZS4KLSAgICBpZiAobGF5b3V0Qm94Lm5leHRJ
bkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBub25Db2xsYXBz
ZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLX0KLQotfQotfQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAK
aW5kZXggMDI3YjQzNGJiYzZkNGMyZjU1MTBhZmNlOWM1MDc4MzllNjQ5ZTI0NC4uNmRiN2RlZGIz
N2FjOWUzOGZiOTQ1NjgyOTY5ZTg3ZDZiZTQzZWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcApAQCAtNjAsNyArNjAsNyBAQCBCb3g6
OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwgbV9ob3Jpem9udGFsTWFyZ2luKG90aGVyLm1f
aG9yaXpvbnRhbE1hcmdpbikKICAgICAsIG1fdmVydGljYWxNYXJnaW4ob3RoZXIubV92ZXJ0aWNh
bE1hcmdpbikKICAgICAsIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKG90aGVyLm1faG9y
aXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKQotICAgICwgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
b3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUpCisgICAgLCBtX2hhc0NsZWFyYW5jZShvdGhl
ci5tX2hhc0NsZWFyYW5jZSkKICAgICAsIG1fYm9yZGVyKG90aGVyLm1fYm9yZGVyKQogICAgICwg
bV9wYWRkaW5nKG90aGVyLm1fcGFkZGluZykKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC03NCw2
ICs3NCw3IEBAIEJveDo6Qm94KGNvbnN0IEJveCYgb3RoZXIpCiAgICAgLCBtX2hhc1ZhbGlkUGFk
ZGluZyhvdGhlci5tX2hhc1ZhbGlkUGFkZGluZykKICAgICAsIG1faGFzVmFsaWRDb250ZW50SGVp
Z2h0KG90aGVyLm1faGFzVmFsaWRDb250ZW50SGVpZ2h0KQogICAgICwgbV9oYXNWYWxpZENvbnRl
bnRXaWR0aChvdGhlci5tX2hhc1ZhbGlkQ29udGVudFdpZHRoKQorICAgICwgbV9lc3RpbWF0ZWRN
YXJnaW5CZWZvcmUob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUpCiAjZW5kaWYKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4
IDU2MzkyZjQ3ZWU3OWUzMGQzZjBlMjE4OTRkM2YxNGJiODc1ZDdlODkuLjVhY2IwODdmZmFiNDky
MDRmNmNiNjc2N2QxNTdkMzMwNzA5OTlkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtMTM2LDIxICsxMzYsMjAgQEAgcHVibGljOgog
ICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBib3JkZXJMZWZ0KCkgKyBwYWRk
aW5nTGVmdCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94V2lkdGgoKSArIHBhZGRpbmdSaWdodCgp
LnZhbHVlT3IoMCkgKyBib3JkZXJSaWdodCgpOyB9CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgY29u
dGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCkgKyBib3JkZXJCb3R0
b20oKTsgfQogICAgIFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIHsgdG9wKCksIGxlZnQoKSwg
d2lkdGgoKSwgaGVpZ2h0KCkgfTsgfQotICAgIFJlY3QgcmVjdFdpdGhNYXJnaW4oKSBjb25zdCB7
IHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIGxlZnQoKSAtIG1hcmdpblN0YXJ0KCks
IG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2luRW5kKCksIG1hcmdpbkJlZm9yZSgpICsg
aGVpZ2h0KCkgKyBtYXJnaW5BZnRlcigpIH07IH0KKyAgICBSZWN0IHJlY3RXaXRoTWFyZ2luKCkg
Y29uc3Q7CiAKICAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIHZlcnRpY2FsTWFyZ2luKCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IG1hcmdpblN0YXJ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcigpIGNvbnN0
OwogICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7CisgICAgYm9vbCBoYXNDbGVhcmFu
Y2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0NsZWFyYW5jZTsgfQogCiAgICAgTGF5b3V0VW5pdCBu
b25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG5vbkNvbGxh
cHNlZE1hcmdpbkFmdGVyKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBub25Db21wdXRlZE1hcmdp
blN0YXJ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBub25Db21wdXRlZE1hcmdpbkVuZCgpIGNv
bnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkg
Y29uc3QgeyByZXR1cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7IH0KLQogICAgIExheW91dFVu
aXQgYm9yZGVyVG9wKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBib3JkZXJMZWZ0KCkgY29uc3Q7
CiAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0b20oKSBjb25zdDsKQEAgLTE3NSw2ICsxNzQsMTEg
QEAgcHVibGljOgogICAgIFJlY3QgcGFkZGluZ0JveCgpIGNvbnN0OwogICAgIFJlY3QgY29udGVu
dEJveCgpIGNvbnN0OwogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHZvaWQgc2V0RXN0aW1h
dGVkTWFyZ2luQmVmb3JlKExheW91dDo6RXN0aW1hdGVkTWFyZ2luQmVmb3JlIG1hcmdpbkJlZm9y
ZSkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZTsgfQorICAgIE9wdGlv
bmFsPExheW91dDo6RXN0aW1hdGVkTWFyZ2luQmVmb3JlPiBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
KSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsgfQorI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgc3RydWN0IFN0eWxlIHsKICAgICAgICAgU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmKTsKQEAgLTE5NCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SG9yaXpvbnRh
bE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAgIHZvaWQgc2V0VmVydGljYWxN
YXJnaW4oTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsTm9u
Q29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKLSAgICB2b2lkIHNldEVz
dGltYXRlZE1hcmdpbkJlZm9yZShMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgeyBtX2VzdGltYXRl
ZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZTsgfQorICAgIHZvaWQgc2V0SGFzQ2xlYXJhbmNl
KCkgeyBtX2hhc0NsZWFyYW5jZSA9IHRydWU7IH0KIAogICAgIHZvaWQgc2V0Qm9yZGVyKExheW91
dDo6RWRnZXMpOwogICAgIHZvaWQgc2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPik7
CkBAIC0yMDMsNiArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVNYXJnaW4o
KTsKICAgICB2b2lkIGludmFsaWRhdGVCb3JkZXIoKSB7IG1faGFzVmFsaWRCb3JkZXIgPSBmYWxz
ZTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZVBhZGRpbmcoKSB7IG1faGFzVmFsaWRQYWRkaW5nID0g
ZmFsc2U7IH0KKyAgICB2b2lkIGludmFsaWRhdGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSB7IG1f
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0geyB9OyB9CiAKICAgICB2b2lkIHNldEhhc1ZhbGlkVG9w
KCkgeyBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0SGFzVmFsaWRMZWZ0KCkg
eyBtX2hhc1ZhbGlkTGVmdCA9IHRydWU7IH0KQEAgLTIyNyw3ICsyMzIsNyBAQCBwcml2YXRlOgog
ICAgIExheW91dDo6SG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxNYXJnaW47CiAgICAgTGF5
b3V0OjpWZXJ0aWNhbE1hcmdpbiBtX3ZlcnRpY2FsTWFyZ2luOwogICAgIExheW91dDo6SG9yaXpv
bnRhbE1hcmdpbiBtX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbjsKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKKyAgICBib29sIG1faGFzQ2xlYXJh
bmNlOwogCiAgICAgTGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKICAgICBPcHRpb25hbDxMYXlvdXQ6
OkVkZ2VzPiBtX3BhZGRpbmc7CkBAIC0yNDMsNiArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzVmFsaWRQYWRkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRDb250ZW50
SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRDb250ZW50V2lkdGggeyBmYWxz
ZSB9OworICAgIE9wdGlvbmFsPExheW91dDo6RXN0aW1hdGVkTWFyZ2luQmVmb3JlPiBtX2VzdGlt
YXRlZE1hcmdpbkJlZm9yZTsKICNlbmRpZgogfTsKIApAQCAtNTIwLDggKzUyNiw4IEBAIGlubGlu
ZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbiBtYXJn
aW4pCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHNldEhhc1ZhbGlkVmVydGljYWxNYXJnaW4o
KTsKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKCk7CisgICAgaW52
YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSgpOwogI2VuZGlmCi0gICAgQVNTRVJUKCFtX2Vz
dGltYXRlZE1hcmdpbkJlZm9yZSB8fCAqbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPT0gbWFyZ2lu
LnVzZWRWYWx1ZXMoKS5iZWZvcmUpOwogICAgIG1fdmVydGljYWxNYXJnaW4gPSBtYXJnaW47CiB9
CiAKQEAgLTU0OSw2ICs1NTUsMTQgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRQYWRkaW5nKE9wdGlv
bmFsPExheW91dDo6RWRnZXM+IHBhZGRpbmcpCiAgICAgbV9wYWRkaW5nID0gcGFkZGluZzsKIH0K
IAoraW5saW5lIEJveDo6UmVjdCBCb3g6OnJlY3RXaXRoTWFyZ2luKCkgY29uc3QKK3sKKyAgICBh
dXRvIG1hcmdpbkFmdGVyID0gdGhpcy0+bWFyZ2luQWZ0ZXIoKTsKKyAgICBpZiAobV92ZXJ0aWNh
bE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSAmJiBtX3ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZh
bHVlcygpLT5pc0NvbGxhcHNlZFRocm91Z2gpCisgICAgICAgIG1hcmdpbkFmdGVyID0gMDsKKyAg
ICByZXR1cm4geyB0b3AoKSAtIG1hcmdpbkJlZm9yZSgpLCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgp
LCBtYXJnaW5TdGFydCgpICsgd2lkdGgoKSArIG1hcmdpbkVuZCgpLCBtYXJnaW5CZWZvcmUoKSAr
IGhlaWdodCgpICsgbWFyZ2luQWZ0ZXIgfTsKK30KKwogaW5saW5lIExheW91dDo6VmVydGljYWxN
YXJnaW4gQm94Ojp2ZXJ0aWNhbE1hcmdpbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFs
aWRWZXJ0aWNhbE1hcmdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zs
b2F0aW5nQ29udGV4dC5jcHAKaW5kZXggNzFmYzA2MDY1MjI3ODBkYmFkMjNhOThmNTk5NGE4NTM4
Y2EzMmUzOS4uZmNkYjUwNzdlNmNkOGY1MzNiY2FmYmQxMTFhN2M4MDI1NDU3OWI4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAt
MTgzLDM0ICsxODMsMzIgQEAgT3B0aW9uYWw8UG9zaXRpb24+IEZsb2F0aW5nQ29udGV4dDo6dmVy
dGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQm94JiBsYXkKICAgICAgICAgaWYgKGNs
ZWFyYW5jZSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgICAgICBkaXNwbGF5
Qm94LnNldEhhc0NsZWFyYW5jZSgpOwogICAgICAgICAvLyBDbGVhcmFuY2UgaW5oaWJpdHMgbWFy
Z2luIGNvbGxhcHNpbmcuIExldCdzIHJlc2V0IHRoZSByZWxldmFudCBhZGpvaW5pbmcgbWFyZ2lu
cy4KICAgICAgICAgaWYgKGF1dG8qIHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5w
cmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAgICAgICAgICAgYXV0byYgcHJldmlvdXNJbkZs
b3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqcHJldmlv
dXNJbkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIC8vIERvZXMgdGhpcyBib3ggd2l0aCBjbGVh
cmFuY2UgYWN0dWFsbHkgY29sbGFwc2UgaXRzIG1hcmdpbiBiZWZvcmUgd2l0aCB0aGUgcHJldmlv
dXMgaW5mbG93IGJveCdzIG1hcmdpbiBhZnRlcj8gCisgICAgICAgICAgICBhdXRvIHZlcnRpY2Fs
TWFyZ2luID0gZGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOworICAgICAgICAgICAgaWYgKHZl
cnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNl
ZFZhbHVlcygpLT5iZWZvcmUpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNldCBwcmV2aW91cyBi
b3R0b20gYWZ0ZXIgYW5kIGN1cnJlbnQgbWFyZ2luIGJlZm9yZSB0byBub24tY29sbGFwc2luZy4K
KyAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzVmVydGljYWxNYXJnaW4gPSBwcmV2aW91c0lu
Rmxvd0Rpc3BsYXlCb3gudmVydGljYWxNYXJnaW4oKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
cHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSAmJiBwcmV2aW91c1ZlcnRp
Y2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5hZnRlcik7CiAKLSAgICAgICAgICAgIC8vIFNp
bmNlIHRoZSBwcmV2aW91cyBpbmZsb3cgc2libGluZyBoYXMgYWxyZWFkeSBiZWVuIGxhaWQgb3V0
LCBpdHMgbWFyZ2luIGlzIGNvbGxhcHNlZCBieSBub3cuCi0gICAgICAgICAgICBBU1NFUlQoIXBy
ZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigpKTsKLSAgICAgICAgICAgIGF1dG8g
Y29sbGFwc2VkTWFyZ2luID0gZGlzcGxheUJveC5tYXJnaW5CZWZvcmUoKTsKLQotICAgICAgICAg
ICAgLy8gUmVzZXQgcHJldmlvdXMgYm90dG9tIGFuZCBjdXJyZW50IHRvcCBtYXJnaW5zIHRvIG5v
bi1jb2xsYXBzaW5nLgotICAgICAgICAgICAgYXV0byBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luID0g
cHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBp
ZiAocHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSAmJiBwcmV2aW91c1Zl
cnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5hZnRlcikgeworICAgICAgICAgICAgICAg
IGF1dG8gY29sbGFwc2VkTWFyZ2luID0gKnZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygp
LT5iZWZvcmU7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5zZXRDb2xs
YXBzZWRWYWx1ZXMoeyBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5i
ZWZvcmUsIHsgfSB9KTsKICAgICAgICAgICAgICAgICBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gu
c2V0VmVydGljYWxNYXJnaW4ocHJldmlvdXNWZXJ0aWNhbE1hcmdpbik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAvLyBGSVhNRTogY2hlY2sgaWYgY29sbGFwc2luZyB0aHJvdWdoIGhhcyBh
bnl0aGluZyB0byBkbyB3aXRoIHRoaXMuCi0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2lu
ID0gZGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOwotICAgICAgICAgICAgaWYgKHZlcnRpY2Fs
TWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVl
cygpLT5iZWZvcmUpIHsKKwogICAgICAgICAgICAgICAgIHZlcnRpY2FsTWFyZ2luLnNldENvbGxh
cHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmFmdGVy
IH0pOwogICAgICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGlj
YWxNYXJnaW4pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIG5vbkNvbGxhcHNl
ZE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigpICsgZGlzcGxh
eUJveC5tYXJnaW5CZWZvcmUoKTsKLSAgICAgICAgICAgIGF1dG8gbWFyZ2luT2Zmc2V0ID0gbm9u
Q29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOwotICAgICAgICAgICAgLy8gTW92ZSB0
aGUgYm94IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5vbi1jb2xsYXBz
ZWQgbWFyZ2lucy4KLSAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJnaW5PZmZzZXQ7
CisgICAgICAgICAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBwcmV2aW91c1ZlcnRp
Y2FsTWFyZ2luLnVzZWRWYWx1ZXMoKS5hZnRlciArIHZlcnRpY2FsTWFyZ2luLnVzZWRWYWx1ZXMo
KS5iZWZvcmU7CisgICAgICAgICAgICAgICAgYXV0byBtYXJnaW5EaWZmZXJlbmNlID0gbm9uQ29s
bGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOworICAgICAgICAgICAgICAgIC8vIE1vdmUg
dGhlIGJveCB0byB0aGUgcG9zaXRpb24gd2hlcmUgaXQgd291bGQgYmUgd2l0aCBub24tY29sbGFw
c2VkIG1hcmdpbnMuCisgICAgICAgICAgICAgICAgcm9vdFJlbGF0aXZlVG9wICs9IG1hcmdpbkRp
ZmZlcmVuY2U7CiAKLSAgICAgICAgICAgIC8vIEhhdmluZyBuZWdhdGl2ZSBjbGVhcmFuY2UgaXMg
YWxzbyBub3JtYWwuIEl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgYm94IHdpdGggdGhlIG5vbi1jb2xs
YXBzZWQgbWFyZ2lucyBpcyBub3cgbG93ZXIgdGhhbiBpdCBuZWVkcyB0byBiZS4KLSAgICAgICAg
ICAgIGNsZWFyYW5jZSAtPSBtYXJnaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgLy8gSGF2aW5n
IG5lZ2F0aXZlIGNsZWFyYW5jZSBpcyBhbHNvIG5vcm1hbC4gSXQganVzdCBtZWFucyB0aGF0IHRo
ZSBib3ggd2l0aCB0aGUgbm9uLWNvbGxhcHNlZCBtYXJnaW5zIGlzIG5vdyBsb3dlciB0aGFuIGl0
IG5lZWRzIHRvIGJlLgorICAgICAgICAgICAgICAgIGNsZWFyYW5jZSAtPSBtYXJnaW5EaWZmZXJl
bmNlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIE5vdyBhZGp1c3QgdGhl
IGJveCdzIHBvc2l0aW9uIHdpdGggdGhlIGNsZWFyYW5jZS4KICAgICAgICAgcm9vdFJlbGF0aXZl
VG9wICs9IGNsZWFyYW5jZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA4ZGNlZTFlNTI3MDBmYWUwYTczN2M1MDA4ZDVhODVmMGYxYThmMDYwLi5j
NmQzOGQ2YjczNzU3MjM5YzNhNTVmODFhMzY4NjRlNmJhYjNiODViIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgt
MTItMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtC
RkNdW01hcmdpbkNvbGxhcHNpbmddIEFkZCBzdXBwb3J0IGZvciBwZWN1bGlhciBjYXNlcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjYyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTGF5b3V0UmVs
b2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQ6CisKIDIwMTgtMTItMjIgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjog
d2FybiBhYm91dCBub24gZXhpc3RpbmcgdGVzdHMgd2hlbiBwYXJzaW5nIGV4cGVjdGF0aW9ucwpk
aWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50
eHQgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dAppbmRl
eCBmZjVlYjM4MTU0YjcyZWY4Yzg4MTdmYjI5NDVmMzUwZWJiNWQxMDEyLi4yMjViNzQ3NWRhODNh
YTVjYWFlMTkxZWE1OTFhYTYyNTFlNjljZjY4IDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxv
YWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dAorKysgYi9Ub29scy9MYXlvdXRSZWxvYWRl
ZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dApAQCAtNCwyMyArNCw2NiBAQCBmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvYWJzb2x1dGUtbGVmdC1hdXRvLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25s
eS9hYnNvbHV0ZS1sZWZ0LXJpZ2h0LXRvcC1ib3R0b20tYXV0by5odG1sCiBmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvYWJzb2x1dGUtbmVzdGVkMi5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJz
b2x1dGUtbmVzdGVkLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlv
bi1taW4tbWF4LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9z
aXRpb24tbWluLW1heC13aWR0aC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUt
cG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10aGUtZm9ybWF0dGluZy1j
b250ZXh0Mi5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24td2hl
bi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10aGUtZm9ybWF0dGluZy1jb250ZXh0Lmh0bWwK
IGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1zaW1wbGUuaHRtbAogZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Fic29sdXRlLXdpZHRoLXNocmluay10by1maXQuaHRtbAogZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Fic29sdXRlLXdpZHRoLXN0cmV0Y2guaHRtbAogZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Fic29sdXRlLXdpdGgtc3RhdGljLWJsb2NrLXBvc2l0aW9uLW5lc3RlZC5odG1sCitmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvYWxtb3N0LWludHJ1ZGluZy1sZWZ0LWZsb2F0LXNpbXBsZS5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1hdXRvLWh0bWwtaGVpZ2h0
LXF1aXJrMi5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1hdXRv
LWh0bWwtaGVpZ2h0LXF1aXJrLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdo
dC13aXRoLW5vbi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrMi5odG1sCitmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvYm9keS1oZWlnaHQtd2l0aC1ub24tYXV0by1odG1sLWhlaWdodC1xdWlyay5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9yZGVyLXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvY29sbGFwc2VkLW1hcmdpbi13aXRoLW1pbi1oZWlnaHQuaHRtbAogZmFzdC9ibG9jay9i
bG9jay1vbmx5L2ZpeGVkLW5lc3RlZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQt
YW5kLXNpYmxpbmdzLXdpdGgtbWFyZ2lucy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXQtYXZvaWRlci1tdWx0aXBsZS1yb290cy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXQtYXZvaWRlci1zaW1wbGUtbGVmdC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQt
YXZvaWRlci1zaW1wbGUtcmlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2
b2lkZXItd2l0aC1tYXJnaW5zLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1sZWZ0
LXdoZW4tY29udGFpbmVyLWhhcy1wYWRkaW5nLW1hcmdpbi5odG1sCitmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvZmxvYXQtbWluLW1heC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0LW1pbi1tYXgtd2lkdGguaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWFu
ZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1hcmdpbi13aXRoLW5vLWJvcmRlci5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5mbG93LXdp
dGgtbWFyZ2luLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtY2xlYXIt
Ym90aC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1jbGVh
ci1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1s
ZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS13aXRoLXRvcC1vZmZzZXQuaHRtbAorZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS5odG1sCitmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXJpZ2h0LXNpbXBsZS5odG1sCitmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtY2xlYXItc2libGluZ3MuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLWNsZWFyLXNpbXBsZS5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtbmV3LWZvcm1hdHRpbmctY29u
dGV4dC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtcmVsYXRp
dmUtcG9zaXRpb25lZC1zaWJsaW5nLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGlu
Zy1sZWZ0LWFuZC1yaWdodC13aXRoLWNsZWFyYW5jZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvZmxvYXRpbmctbGVmdC1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0aW5nLWxlZnQtcmlnaHQtd2l0aC1hbGwtbWFyZ2lucy5odG1sCitmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXRpbmctbGVmdHMtYW5kLXJpZ2h0cy1zaW1wbGUuaHRtbAorZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLWluLWJvZHkuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLW11bHRpcGxlLWxpbmVzLmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctd2l0aC1uZXctYmxvY2stZm9ybWF0dGluZy1j
b250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9pbmZsb3ctbWluLW1heC1oZWlnaHQu
aHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4tbWF4LXdpZHRoLmh0bWwKIGZh
c3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtYm90dG9tLWJvdHRvbS5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLWJvdHRvbS1uZXN0ZWQuaHRtbAor
ZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1maXJzdC1sYXN0LWFyZS1mbG9h
dGluZy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXNpbXBsZS5o
dG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXRvcC1uZXN0ZWQuaHRt
bAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aGVuLWNoaWxkLWhhcy1w
YWRkaW5nLWJvcmRlci5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNl
LXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Lmh0bWwKK2Zh
c3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1jbGVhcmFuY2UuaHRtbAog
ZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1sZWZ0LXJpZ2h0LXNpemluZy1vdXQtb2YtZmxv
dy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWxlZnQtcmlnaHQtc2l6aW5nLmh0
bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tcHJvcGFnYXRpb24tc2ltcGxlLWNvbnRl
bnQtaGVpZ2h0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tc2libGluZy1jb2xs
YXBzZS1wcm9wYWdhdGVkLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tc2ltcGxl
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9taW4tbWF4LWhlaWdodC1wZXJjZW50YWdlLmh0
bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9uZWdhdGl2ZS1tYXJnaW4tc2ltcGxlLmh0bWwKIGZh
c3QvYmxvY2svYmxvY2stb25seS9wYWRkaW5nLW5lc3RlZC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvcGFkZGluZy1zaW1wbGUuaHRtbApAQCAtMzEsODAgKzc0LDQ5IEBAIGZhc3QvYmxvY2sv
YmxvY2stb25seS9yZWxhdGl2ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90
LWluLXRoZS1mb3JtCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVsYXRpdmUtcmlnaHQuaHRtbAog
ZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXNpYmxpbmdzLmh0bWwKIGZhc3QvYmxvY2sv
YmxvY2stb25seS9yZWxhdGl2ZS1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fi
c29sdXRlLXBvc2l0aW9uLXdoZW4tY29udGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhlLWZvcm1h
dHRpbmctY29udGV4dDIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBz
ZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCi1m
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbGVmdC13aGVuLWNvbnRhaW5lci1oYXMtcGFkZGlu
Zy1tYXJnaW4uaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFu
ZC1yaWdodC1tdWx0aXBsZS13aXRoLXRvcC1vZmZzZXQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXJpZ2h0LXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtbmV3LWZvcm1hdHRpbmctY29udGV4dC5odG1sCi1m
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtcmVsYXRpdmUtcG9zaXRpb25l
ZC1zaWJsaW5nLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0LXJpZ2h0
LXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC13
aXRoLWFsbC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0
cy1hbmQtcmlnaHRzLXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmct
bXVsdGlwbGUtbGVmdHMtaW4tYm9keS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRp
bmctbXVsdGlwbGUtbGVmdHMtbXVsdGlwbGUtbGluZXMuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1hbmQtbmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJnaW4uaHRtbAotZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1h
cmdpbi13aXRoLW5vLWJvcmRlci5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmct
bGVmdC1hbmQtcmlnaHQtd2l0aC1jbGVhcmFuY2UuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0LWFuZC1zaWJsaW5ncy13aXRoLW1hcmdpbnMuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L21hcmdpbi1jb2xsYXBzZS13aXRoLWNsZWFyYW5jZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtbGVmdC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtcmlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0LWF2b2lkZXItbXVsdGlwbGUtcm9vdHMuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0LWF2b2lkZXItd2l0aC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9p
bmZsb3ctbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUt
cG9zaXRpb24tbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQt
bWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1pbi1tYXgt
aGVpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlvbi1taW4t
bWF4LWhlaWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbWluLW1heC1oZWln
aHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L21pbi1tYXgtaGVpZ2h0LXBlcmNlbnRhZ2Uu
aHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtbm9uLWF1dG8taHRt
bC1oZWlnaHQtcXVpcmsuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdp
dGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9ib2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAotZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1xdWlyazIuaHRt
bAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2NvbGxhcHNlZC1tYXJnaW4td2l0aC1taW4taGVpZ2h0
Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDAyLmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDAzLmh0
bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA2Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA3Lmh0bWwK
K2Zhc3QvYmxvY2svYmFzaWMvMDA4Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA5Lmh0bWwKK2Zh
c3QvYmxvY2svYmFzaWMvMDEyLmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvY2hpbGQtYmxvY2stbGV2
ZWwtYm94LXdpdGgtaGVpZ2h0LXBlcmNlbnQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9oZWlnaHQt
cGVyY2VudGFnZS1zaW1wbGUuaHRtbAogZmFzdC9ibG9jay9iYXNpYy9pbmxpbmUtY29udGVudC13
aXRoLWZsb2F0aW5nLWltYWdlLmh0bWwKIGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQt
d2l0aC1mbG9hdGluZy1pbWFnZXMyLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmct
ZmxvYXQxLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMi5odG1sCi1m
YXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czMuaHRtbAotZmFzdC9pbmxpbmUvc2lt
cGxlLWlubGluZS1ibG9jay5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1p
bmxpbmUtYmxvY2suaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1pbmZsb3ctcG9zaXRp
b25lZC5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZsb3ctZGVz
Y2VuZGFudC5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZsb3ct
ZGVzY2VuZGFudDIuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1wYWRkaW5n
LWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1ib3JkZXIt
bGVmdC1yaWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLW1hcmdpbi1s
ZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LWFuZC1uZXN0ZWQtZm9y
bWF0dGluZy1yb290LXdpdGgtbWFyZ2luLWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5s
aW5lLWNvbnRlbnQtd2l0aC1pbWFnZS1zaW1wbGUuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNv
bnRlbnQtd2l0aC1mbG9hdC1hbmQtbWFyZ2luLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvaGVpZ2h0
LXBlcmNlbnRhZ2Utc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvY2hpbGQtYmxvY2stbGV2
ZWwtYm94LXdpdGgtaGVpZ2h0LXBlcmNlbnQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9wZXJjZW50
LWhlaWdodC1pbnNpZGUtYW5vbnltb3VzLWJsb2NrLmh0bWwKIGZhc3QvYmxvY2svYmFzaWMvcXVp
cmstbW9kZS1wZXJjZW50LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljL3F1aXJrLXBlcmNl
bnQtaGVpZ2h0LWdyYW5kY2hpbGQuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMDEuaHRtbAogZmFz
dC9ibG9jay9mbG9hdC8wMDcuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMDguaHRtbAogZmFzdC9i
bG9jay9mbG9hdC8wMDkuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMTMuaHRtbAogZmFzdC9ibG9j
ay9mbG9hdC8wMTkuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDIuaHRtbAotZmFzdC9ibG9jay9i
YXNpYy8wMDMuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDYuaHRtbAotZmFzdC9ibG9jay9iYXNp
Yy8wMDcuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDguaHRtbAotZmFzdC9ibG9jay9iYXNpYy8w
MDkuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMTIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9uZWdh
dGl2ZS1tYXJnaW4tY2xlYXIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVyaGFuZ2luZy1hZnRl
ci1oZWlnaHQtZGVjcmVhc2Utb2Zmc2V0cy5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L292ZXJoYW5n
aW5nLWFmdGVyLWhlaWdodC1kZWNyZWFzZS5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L292ZXJsYXBw
aW5nLWZsb2F0cy13aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L3By
ZXZpb3VzLXNpYmxpbmctYWJzcG9zLTAwMi5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L3JlbGF0aXZl
LXBhaW50ZWQtdHdpY2UuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9hdm9pZGFuY2UtcnRsLmh0bWwK
K2Zhc3QvYmxvY2svZmxvYXQvYnItd2l0aC1jbGVhci5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Ns
YW1wZWQtcmlnaHQtZmxvYXQuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdC1vbi16ZXJvLWhl
aWdodC1saW5lLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXQtb3ZlcmhhbmdzLXJvb3QuaHRt
bAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdC13aXRoLWFub255bW91cy1wcmV2aW91cy1zaWJsaW5n
Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXRzLW5vdC1jbGVhcmVkLWNyYXNoLmh0bWwKIGZh
c3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAwMi5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1jb2xs
YXBzZS8wMDMuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI2Lmh0bWwKIGZhc3Qv
YmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyNy5odG1sCitmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBz
ZS8wMjguaHRtbAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI5Lmh0bWwKK2Zhc3QvYmxv
Y2svbWFyZ2luLWNvbGxhcHNlLzAzNS5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8w
MzkuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDQwLmh0bWwKK2Zhc3QvYmxvY2sv
cG9zaXRpb25pbmcvMDAzLmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDA0Lmh0bWwKIGZh
c3QvYmxvY2svcG9zaXRpb25pbmcvMDA1Lmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDA2
Lmh0bWwKQEAgLTE0NSw4ICsxNTcsMjkgQEAgZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNDYuaHRt
bAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNDkuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmlu
Zy8wNTIuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNTQuaHRtbAorZmFzdC9ibG9jay9w
b3NpdGlvbmluZy8wNjAuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9hYnNvbHV0ZS1wb3Np
dGlvbmluZy1uby1zY3JvbGxiYXIuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9jaGFuZ2Ut
Y29udGFpbmluZy1ibG9jay1mb3ItYWJzb2x1dGUtcG9zaXRpb25lZC5odG1sCitmYXN0L2Jsb2Nr
L3Bvc2l0aW9uaW5nL2NoYW5nZS1jb250YWluaW5nLWJsb2NrLWZvci1maXhlZC1wb3NpdGlvbmVk
Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY29tcGxleC1wb3NpdGlvbmVkLW1vdmVtZW50
Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9zaXRpb24tZGV0YWNoZWQtZnJh
bWUuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1wb3NpdGlvbi1zdGFja2luZy1j
b250ZXh0Mi5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2ZpeGVkLXBvc2l0aW9uLXN0YWNr
aW5nLWNvbnRleHQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9oaWRpbmctaW5zaWRlLXJl
bHBvc2l0aW9uZWQtaW5saW5lLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvaW5zZXJ0LXBv
c2l0aW9uZWQtaW4tYW5vbnltb3VzLWNyYXNoLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcv
bGVmdG1hcmdpbi10b3BtYXJnaW4uaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9uZWdhdGl2
ZS1yZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9hYnMtaW5zaWRlLWlu
bGluZS1yZWwuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9wcmVmLXdpZHRoLWNoYW5nZS5o
dG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3JlbGF0aXZlLW92ZXJmbG93LXJlcGxhY2VkLWZs
b2F0Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvc3RhdGljLWlubGluZS1wb3NpdGlvbi1k
eW5hbWljLmh0bWwKIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvYmFzaWMtZmxvYXQtaW50cnVz
aW9uLmh0bWwKIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvY3Jhc2gtb24tZmlyc3QtbGluZS1j
aGFuZ2UuaHRtbAorZmFzdC9ibG9jay9saW5lYm94Y29udGFpbi9yZXBsYWNlZC5odG1sCitmYXN0
L2Jsb2NrL2NvbGxhcHNlLWFub24tYmxvY2std2l0aC1mbG9hdC1zaWJsaW5ncy1vbmx5Lmh0bWwK
K2Zhc3QvYmxvY2svY3Jhc2gtd2hlbi1hbm9ueW1vdXMtYmxvY2tzLWFyZS1tZXJnZWQtd2l0aC1z
aW1wbGUtbGluZS1sYXlvdXQuaHRtbAorZmFzdC9ibG9jay9jcmFzaC13aGVuLXN1YnRyZWUtaXMt
c3RpbGwtYXR0YWNoZWQuaHRtbAorZmFzdC9ibG9jay9nZW9tZXRyeS1tYXAtYXNzZXJ0aW9uLXdp
dGgtdGFsbC1jb250ZW50Lmh0bWwKIGZhc3QvYm9yZGVycy8wcHgtYm9yZGVycy1uby1saW5lLWhl
aWdodC5odG1sCiBmYXN0L2JvcmRlcnMvMHB4LWJvcmRlcnMuaHRtbAogZmFzdC9ib3JkZXJzL2Js
b2NrLW1hc2stb3ZlcmxheS1pbWFnZS1vdXRzZXQuaHRtbApAQCAtMTU2LDExICsxODksOCBAQCBm
YXN0L2JvcmRlcnMvYm9yZGVyLWltYWdlLXNjYWxlZC1ncmFkaWVudC5odG1sCiBmYXN0L2JvcmRl
cnMvYm9yZGVyLWltYWdlLXNsaWNlLW9taXNzaW9uLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXIt
bGVmdC1yaWdodC1zYW1lLWJvdHRvbS1kaWZmZXJlbnQtY29sb3IuaHRtbAogZmFzdC9ib3JkZXJz
L2JvcmRlci1wYWludGluZy1kYXNoZWQtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVycy9ib3JkZXIt
cGFpbnRpbmctZGFzaGVkLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctZG90dGVk
LWF0LWFsbC5odG1sCi1mYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdHRlZC5odG1sCiBm
YXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdWJsZS1hdC1hbGwuaHRtbAotZmFzdC9ib3Jk
ZXJzL2JvcmRlci1wYWludGluZy1kb3VibGUuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWlu
dGluZy1ncm9vdmUtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctaW5z
ZXQtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctaW5zZXQuaHRtbApA
QCAtMTY5LDQgKzE5OSw4NiBAQCBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLW91dHNldC5o
dG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLXJpZGdlLWF0LWFsbC5odG1sCiBmYXN0
L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLXNvbGlkLWF0LWFsbC5odG1sCiBmYXN0L2JvcmRlcnMv
Ym9yZGVyLXBhaW50aW5nLXNvbGlkLmh0bWwKLWZhc3QvaW5saW5lLWJsb2NrLzAwNC5odG1sCitm
YXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1pbnNldC1vdXRzZXQuaHRtbAorZmFzdC9ib3JkZXJz
L2JvcmRlci1yYWRpdXMtb24taHRtbC5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1v
bi1zdWJwaXhlbC1wb3NpdGlvbi1ub24taGlkcGkuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1y
YWRpdXMtcGVyY2VudC5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy12YWxpZC1ib3Jk
ZXItY2xpcHBpbmcuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtd2lkZS1ib3JkZXIt
MDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtd2l0aC1ib3gtc2hhZG93LTAxLmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpdGgtYm94LXNoYWRvdy5odG1sCitmYXN0
L2JvcmRlcnMvYm9yZGVyLXNoYWRvdy1sYXJnZS1yYWRpdXMuaHRtbAorZmFzdC9ib3JkZXJzL2Jv
cmRlclJhZGl1c0FsbFN0eWxlc0FsbENvcm5lcnMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJh
ZGl1c0FyY3MwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRGFzaGVkMDEuaHRtbAor
ZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAyLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3Jk
ZXJSYWRpdXNEYXNoZWQwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG90dGVkMDEu
aHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAyLmh0bWwKK2Zhc3QvYm9yZGVy
cy9ib3JkZXJSYWRpdXNEb3R0ZWQwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91
YmxlMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTAyLmh0bWwKK2Zhc3Qv
Ym9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzR3Jvb3ZlMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0dyb292ZTAyLmh0bWwK
K2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNJbnNldDAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3Jk
ZXJSYWRpdXNJbnZhbGlkQ29sb3IuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c091dHNl
dDAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNSaWRnZTAxLmh0bWwKK2Zhc3QvYm9y
ZGVycy9ib3JkZXJSYWRpdXNTb2xpZDAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNT
b2xpZDAyLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNTb2xpZDAzLmh0bWwKK2Zhc3Qv
Ym9yZGVycy9ib3JkZXJSYWRpdXNTb2xpZDA0Lmh0bWwKK2Zhc3QvYm9yZGVycy9kYXNoZWQtYm9y
ZGVyLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9yZGVycy9kb3R0ZWQtYm9yZGVy
LW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9yZGVycy9kb3VibGUtMXB4LWJvcmRl
ci1hc3NlcnQuaHRtbAorZmFzdC9ib3JkZXJzL2VtcHR5LWRyYXdyZWN0LWFzc2VydC1hZnRlci1w
aXhlbHNuYXAuaHRtbAorZmFzdC9ib3JkZXJzL2VtcHR5LW91dGxpbmUtYm9yZGVyLWFzc2VydC5o
dG1sCitmYXN0L2JvcmRlcnMvaGlkcGktM3gtaW5wdXQtaGFpcmxpbmUtYm9yZGVyLmh0bWwKK2Zh
c3QvYm9yZGVycy9oaWRwaS1ib3JkZXItY2xpcHBpbmctcmlnaHQtYWZ0ZXItbW92ZS5odG1sCitm
YXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXBhaW50aW5nLWdyb292ZS5odG1sCitmYXN0L2JvcmRl
cnMvaGlkcGktYm9yZGVyLXBhaW50aW5nLXJpZGdlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1i
b3JkZXItcmFkaXVzLW91dGVyLWJvcmRlci1nb2VzLXJlY3RhbmdsZS5odG1sCitmYXN0L2JvcmRl
cnMvaGlkcGktYm9yZGVyLXJhZGl1cy13aXRoLXN1YnBpeGVsLW1hcmdpbi1ub3QtcmVuZGVyYWJs
ZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXdpZHRoLWZsb29yaW5nLmh0bWwKK2Zh
c3QvYm9yZGVycy9oaWRwaS1vdXRsaW5lLWhhaXJsaW5lLXBhaW50aW5nLmh0bWwKK2Zhc3QvYm9y
ZGVycy9oaWRwaS1vdXRsaW5lLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9yZGVy
cy9oaWRwaS1yb3VuZGVkLWJvcmRlci1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2Jv
cmRlcnMvaGlkcGktc2ltcGxlLWhhaXJsaW5lLWJvcmRlci1wYWludGluZy5odG1sCitmYXN0L2Jv
cmRlcnMvbWl4ZWQtYm9yZGVyLXN0eWxlMi5odG1sCitmYXN0L2JvcmRlcnMvbmVnYXRpdmUtYm9y
ZGVyLXdpZHRoLmh0bWwKK2Zhc3QvYm9yZGVycy9vdXRsaW5lLW9mZnNldC1taW4tYXNzZXJ0Lmh0
bWwKK2Zhc3QvYm9yZGVycy9vdXRsaW5lLW9mZnNldC1vdmVyZmxvdy5odG1sCitmYXN0L2JvcmRl
cnMvd2Via2l0LWJvcmRlci1yYWRpdXMuaHRtbAorZmFzdC9pbmxpbmUvYWJzb2x1dGUtcG9zaXRp
b25lZC1ibG9jay1pbi1jZW50cmVkLWJsb2NrLmh0bWwKK2Zhc3QvaW5saW5lL2Fic29sdXRlLXBv
c2l0aW9uZWQtaW5saW5lLWluLWNlbnRyZWQtYmxvY2suaHRtbAorZmFzdC9pbmxpbmUvYW5vbnlt
b3VzLWJsb2NrLXdpdGgtZW1wdHktaW5saW5lLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLW91dGxp
bmUtYXV0by1uZWdhdGl2ZS1vZmZzZXQtd2l0aC1ib3JkZXItcmFkaXVzLmh0bWwKK2Zhc3QvaW5s
aW5lL2hpZHBpLW91dGxpbmUtYXV0by13aXRoLWZyYWN0aW9uYWwtcmFkaXVzLmh0bWwKK2Zhc3Qv
aW5saW5lL2hpZHBpLW91dGxpbmUtYXV0by13aXRoLW9uZS1mb2N1c3JpbmctcmVjdC5odG1sCitm
YXN0L2lubGluZS9oaWRwaS1waXhlbC1nYXAtYmV0d2Vlbi1hZGphY2VudC1zZWxlY3Rpb24taW5s
aW5lcy5odG1sCitmYXN0L2lubGluZS9oaWRwaS1zZWxlY3QtaW5saW5lLW9uLXN1YnBpeGVsLXBv
c2l0aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdGlvbi1nYXAtb24tc3VicGl4ZWwt
cG9zaXRpb24uaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktc2VsZWN0aW9uLWdhcC1vdmVybGFwcy1p
bmxpbmUtc2VsZWN0aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1ib2R5LXdpdGgtc2Nyb2xs
YmFyLWNyYXNoLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jaGlsZC1oZWlnaHQtd2lkdGgtY2Fs
Yy1jcmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWJvcmRlci1sZWZ0
LXJpZ2h0Lmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtZmxvYXQtYW5kLW1h
cmdpbi5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWltYWdlLXNpbXBsZS5o
dG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLW1hcmdpbi1sZWZ0LXJpZ2h0Lmh0
bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtcGFkZGluZy1sZWZ0LXJpZ2h0Lmh0
bWwKK2Zhc3QvaW5saW5lL2lubGluZS1tYXJxdWVlLWNyYXNoLmh0bWwKK2Zhc3QvaW5saW5lL2lu
bGluZS1wYWRkaW5nLWRpc2FibGVzLXRleHQtcXVpcmsuaHRtbAorZmFzdC9pbmxpbmUvbmV3LWZs
b2F0LW5lZWRzLWxheW91dC13aGVuLWxpbmUtaXMtZGlydHkuaHRtbAorZmFzdC9pbmxpbmUvcGVy
Y2VudGFnZS1tYXJnaW5zLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtYmxvY2suaHRt
bAorZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1pbmZsb3ctcG9zaXRpb25lZC5odG1sCitmYXN0
L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZsb3ctZGVzY2VuZGFudDIuaHRtbAor
ZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQuaHRt
bAorZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdDEuaHRtbAorZmFzdC9pbmxpbmUv
c2ltcGxlLWludHJ1ZGluZy1mbG9hdHMyLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRp
bmctZmxvYXRzMy5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtbGluZS1sYXlvdXQtMTZiaXQtY29u
dGVudC5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2su
aHRtbAorZmFzdC9pbmxpbmUvc2tpcHBlZC13aGl0ZXNwYWNlLWJvdW5kaW5nQm94Lmh0bWwKK2Zh
c3QvaW5saW5lL3NraXBwZWQtd2hpdGVzcGFjZS1jbGllbnQtcmVjdC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358143</attachid>
            <date>2018-12-29 18:23:12 -0800</date>
            <delta_ts>2018-12-29 20:06:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20181229182305.patch</filename>
            <type>text/plain</type>
            <size>85769</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVjZmVlMWQyYzlmNjE5
N2RmNzU4MjA5NjQwMTM1Yzg0MjM4MjhmMi4uZjJlZmQ2MDk0NTBkYjRlMmUzMGYxMDVmZGQ4NTNk
ZGU3NzcyNTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxOC0xMi0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNvbWUgb2YgdGhl
IG1vcmUgcGVjdWxpYXIgY2FzZXMgbGlrZSBtYXJnaW4gY29sbHBhc2luZyB0aHJvdWdoIG11bHRp
cGxlIGJveGVzIGV0Yy4KKyAgICAgICAgQWRkIH4xMDAgbmV3IHBhc3NpbmcgY2FzZXMuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRp
bmdTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkTWluSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBz
ZWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0
VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAq
IGxheW91dC9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRT
dGF0ZTo6aGFzRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTWFyZ2lu
VHlwZXMuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5n
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2Fs
UG9zaXRpb25Gb3JGbG9hdENsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVk
VmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdo
dEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0
aW1hdGVkTWFyZ2luQWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRl
OjpzZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZl
cnRpY2FsTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nU3RhdGU6OnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdTdGF0ZTo6Y2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVm
b3JlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc0JvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpoYXNCb3JkZXJCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3Jk
ZXJBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmdCZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNQYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpl
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhQYXJlbnRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
Z01hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGls
ZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJl
Zm9yZVdpdGhDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdp
bkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpt
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2lu
c0NvbGxhcHNlVGhyb3VnaCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkUG9z
aXRpdmVBbmROZWdhdGl2ZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1hcmdp
blZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6TWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2
ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdh
dGl2ZU1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnZlcnRpY2FsKToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKiBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpoYXNDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
ZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpzZXRIYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjppbnZhbGlkYXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpyZWN0V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0Nv
bnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5n
U3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVGaW5hbFJ1bnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cG9z
dFByb2Nlc3NJbmxpbmVSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5saW5lRm9ybWF0dGluZ1N0YXRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKToKKwogMjAxOC0xMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0hhcmZCdXp6XSBXaWR0aCBub3QgY29ycmVjdGx5IHJlcG9ydGVk
IGFzIDAgZm9yIHplcm8gZm9udCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGU3ZDkzNGFkMjdmMWJm
YTkxMjMxZTFkODZkZjBiNzQxOWQ4MzhiOTAuLmU2ZmIyODRjYWY3N2UxZWJmZmZhNzVkMGJjODU4
ZDgzY2IxY2Q3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBsYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCi1sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCitsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlvbi5jcHAK
IGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAogbGF5b3V0L2Zsb2F0cy9GbG9hdEF2
b2lkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZGU0NTJjMDYyYTZiYTI2ZjQ3MzI3MDc3ZmMxZjk5YWNmY2ZkOGNlYi4u
YmQzZjc3MDg3Yjg5YWIyOTdkZWRjNmI5NmY4MzkyMGY5MjRhYmIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg4Miw3ICs1
ODgyLDcgQEAKIAkJMTE1Q0ZBODEyMDhCOEVEQTAwMUU2OTkxIC8qIEZsb2F0aW5nU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRpbmdTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTExNUNGQTg0MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTExNUNGQTg1MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMTE1Q0ZBODkyMDhCOTIxQTAwMUU2OTkxIC8qIEJsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBC
bG9ja01hcmdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9ja01hcmdpbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNGQTk1MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlv
dXRCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTExNUNGQTk2MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGF5b3V0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTE1Rjc4MDUyMDlDQkNCRDAwNzM5QzEzIC8qIEludmFsaWRhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjEw
LDcgKzE2MjEwLDcgQEAKIAkJCQkxMTVDRkE3ODIwOEI4RDlEMDAxRTY5OTEgLyogQmxvY2tGb3Jt
YXR0aW5nU3RhdGUuaCAqLywKIAkJCQkxMTIzQUZEQTIwOUFCQjIwMDA3MzZBQ0MgLyogQmxvY2tJ
bnZhbGlkYXRpb24uY3BwICovLAogCQkJCTExMjNBRkQ5MjA5QUJCMjAwMDczNkFDQyAvKiBCbG9j
a0ludmFsaWRhdGlvbi5oICovLAotCQkJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBCbG9j
a01hcmdpbkNvbGxhcHNlLmNwcCAqLywKKwkJCQkxMTVDRkE4OTIwOEI5MjFBMDAxRTY5OTEgLyog
QmxvY2tNYXJnaW4uY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBibG9ja2Zvcm1hdHRpbmc7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggYjRmNDRhODI1ZWYzYWE1OGFkMmIzNmEw
ZTJhZDIxNDc1ZjJlODdkNS4uZmExZDBhODBiYzA5MmMxOTA5YTE2MzM2MWE0MjE5NzZiZmNkOTBm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCkBAIC01MSw3ICs1MSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6OlF1
aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4CiAgICAgICAg
IGlmIChjb250YWluaW5nQmxvY2stPmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNE
b2N1bWVudEJveCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3Rh
dGUuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKTsKIAotICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29udGFp
bmluZ0Jsb2NrKTsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6
Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29u
dGFpbmluZ0Jsb2NrKTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxQYWRkaW5nID0gZGlzcGxh
eUJveC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgp
LnZhbHVlT3IoMCk7CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQm9yZGVyID0gZGlzcGxheUJv
eC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3guYm9yZGVyQm90dG9tKCk7CiAgICAgICAgICAgICBi
b2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgKz0gdmVydGljYWxN
YXJnaW4uYmVmb3JlICsgdmVydGljYWxNYXJnaW4uYWZ0ZXIgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2
ZXJ0aWNhbEJvcmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggMDQ3NzVh
YjJiYjY2OGZjMjI2YTNmYzEzMjQwNDJkYmNmMTJmYjMzZi4uMjg0NDZjZjlhZGQzZTc5ODY5ODYx
YzljYzc5YzY5ODViY2Q5ZjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAg
LTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5n
U3RhdGVGb3JCb3goY29uc3QgQm94JikgY29uc3Q7CiAgICAgRm9ybWF0dGluZ1N0YXRlJiBlc3Rh
Ymxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdDsK
KyAgICBib29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBj
b25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290
KTsgfQogICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KTsKIAogICAgIERpc3Bs
YXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCmluZGV4IDg1ZmZlZDY1OTY4Njc4OTNm
N2Q2ZTdkZjU4NjUyNGQ2ODdjMzE0OTcuLjQ0OWFiNGY2MDE5ZmEyNDkwZDNhYmRmZjQ1NmYxNzM2
NTA2MTgyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBAIC0zOSwxMCArMzks
MTEgQEAgc3RydWN0IFZlcnRpY2FsTWFyZ2luIHsKICAgICB9OwogICAgIENvbXB1dGVkVmFsdWVz
IHVzZWRWYWx1ZXMoKSBjb25zdDsKICAgICBDb21wdXRlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1
ZXMoKSBjb25zdCB7IHJldHVybiBtX25vbkNvbGxhcHNlZDsgfQotICAgIAorCiAgICAgc3RydWN0
IENvbGxhcHNlZFZhbHVlcyB7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsK
ICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYWZ0ZXI7CisgICAgICAgIGJvb2wgaXNDb2xs
YXBzZWRUaHJvdWdoIHsgZmFsc2UgfTsKICAgICB9OwogICAgIE9wdGlvbmFsPENvbGxhcHNlZFZh
bHVlcz4gY29sbGFwc2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWQ7IH0KICAg
ICB2b2lkIHNldENvbGxhcHNlZFZhbHVlcyhDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVz
KSB7IG1fY29sbGFwc2VkID0gY29sbGFwc2VkVmFsdWVzOyB9CkBAIC01MSw2ICs1Miw3IEBAIHN0
cnVjdCBWZXJ0aWNhbE1hcmdpbiB7CiAKICAgICBWZXJ0aWNhbE1hcmdpbigpID0gZGVmYXVsdDsK
ICAgICB+VmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgQ29tcHV0
ZWRWYWx1ZXMgbV9ub25Db2xsYXBzZWQ7CiAgICAgT3B0aW9uYWw8Q29sbGFwc2VkVmFsdWVzPiBt
X2NvbGxhcHNlZDsKQEAgLTcwLDYgKzcyLDEwIEBAIHN0cnVjdCBQb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW4gewogICAgIFZhbHVlcyBhZnRlcjsKIH07CiAKK3N0cnVjdCBFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUgeworICAgIExheW91dFVuaXQgY29tcHV0ZWRWYWx1ZTsKK307CisKIGlu
bGluZSBWZXJ0aWNhbE1hcmdpbjo6VmVydGljYWxNYXJnaW4oVmVydGljYWxNYXJnaW46OkNvbXB1
dGVkVmFsdWVzIG5vbkNvbGxhcHNlZCwgT3B0aW9uYWw8VmVydGljYWxNYXJnaW46OkNvbGxhcHNl
ZFZhbHVlcz4gY29sbGFwc2VkKQogICAgIDogbV9ub25Db2xsYXBzZWQobm9uQ29sbGFwc2VkKQog
ICAgICwgbV9jb2xsYXBzZWQoY29sbGFwc2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggNDI5YzBhOTgxMWE0OGRiZjQ1NTFhNGJlOTIxMzBmMjUwMTQzYTM4Yi4uOTM0YmM3
OGIwMGM0Y2IyNTQ3NzUxMGIyYmJmNjc2NzJlMGRhYzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0xODYsMTIgKzE4NiwxNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QK
IAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVm
b3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewotICAgIGF1dG8mIGxheW91dFN0YXRl
ID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKLSAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9
IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7
CisgICAgYXV0byBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBNYXJnaW46OmVzdGltYXRlZE1hcmdp
bkJlZm9yZShsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gpOworICAgIGJsb2NrRm9ybWF0dGluZ1N0
YXRlKCkuc2V0SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCk7CiAKLSAgICBhdXRv
JiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRC
b3gpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgZGlzcGxheUJv
eC5zZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTsKLSAgICBk
aXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGVzdGltYXRlZE1hcmdpbkJlZm9yZSk7CisjZW5kaWYK
KyAgICBkaXNwbGF5Qm94LnNldFRvcChhZGp1c3RlZFZlcnRpY2FsUG9zaXRpb25BZnRlck1hcmdp
bkNvbGxhcHNpbmcobGF5b3V0Qm94LCBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUuY29tcHV0ZWRWYWx1
ZSkpOwogfQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5CZWZvcmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CkBAIC0y
MDgsMTIgKzIxMCwxMSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JgogICAgIC8vIFNvIHdoZW4g
d2UgZ2V0IHRvIHRoZSBwb2ludCB3aGVyZSB3ZSBpbnRlcnNlY3QgdGhlIGJveCB3aXRoIHRoZSBm
bG9hdCB0byBkZWNpZGUgaWYgdGhlIGJveCBuZWVkcyB0byBtb3ZlLCB3ZSBkb24ndCB5ZXQgaGF2
ZSB0aGUgZmluYWwgdmVydGljYWwgcG9zaXRpb24uCiAgICAgLy8KICAgICAvLyBUaGUgaWRlYSBo
ZXJlIGlzIHRoYXQgYXMgbG9uZyBhcyB3ZSBkb24ndCBjcm9zcyB0aGUgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0IGJvdW5kYXJ5LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwcmUtY29tcHV0ZSB0aGUg
ZmluYWwgdG9wIG1hcmdpbi4KLSAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0
YXRlKCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUo
KTsKIAogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2Nr
KCk7IGFuY2VzdG9yICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAg
IGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCph
bmNlc3Rvcik7CiAgICAgICAgIC8vIEZJWE1FOiB3aXRoIGluY3JlbWVudGFsIGxheW91dCwgd2Ug
bWlnaHQgYWN0dWFsbHkgaGF2ZSBhIHZhbGlkIChub24tZXN0aW1hdGVkKSBtYXJnaW4gdG9wIGFz
IHdlbGwuCi0gICAgICAgIGlmIChkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQor
ICAgICAgICBpZiAoZm9ybWF0dGluZ1N0YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgqYW5j
ZXN0b3IpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5CZWZvcmUoKmFuY2VzdG9yKTsKQEAgLTIzOCwxMCArMjM5LDEwIEBAIHZvaWQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5n
Um9vdElmTmVlZGVkCiB9CiAKICNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgYm9vbCBoYXNQcmVjb21w
dXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoY29u
c3QgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCiB7CiAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5n
QmxvY2soKTsgYW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAg
ICAgICAgaWYgKGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKS5l
c3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkKKyAgICAgICAgaWYgKGZvcm1hdHRpbmdTdGF0ZS5oYXNF
c3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjUzLDcgKzI1NCw3IEBAIHZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRp
bmdDb250ZXh0JiBmbG9hCiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRT
dGF0ZSgpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7Ci0g
ICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0
aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0
U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIC8vIDguMy4xIENv
bGxhcHNpbmcgbWFyZ2lucwpAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRl
eHQmCiAgICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSk7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAg
ICAgQVNTRVJUKCFsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKTsKLSAgICBBU1NFUlQoaGFzUHJl
Y29tcHV0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VS
VChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlv
dXRCb3gpKTsKIAogICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkyLDcgKzI5Myw3IEBAIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0
IEZsb2F0aW5nCiAgICAgLy8gRm9yIGZvcm1hdHRpbmcgcm9vdHMsIHdlIGFscmVhZHkgcHJlY29t
cHV0ZWQgZmluYWwgcG9zaXRpb24uCiAgICAgaWYgKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpKQogICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9y
QW5jZXN0b3JzKGxheW91dEJveCk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVm
b3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRN
YXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBp
ZiAoYXV0byB2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52
ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBv
c2l0aW9uV2l0aENsZWFyYW5jZSk7CkBAIC0zNzIsMTIgKzM3MywxNSBAQCB2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0CiAgICAgfQogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3Rh
dGUgPSB0aGlzLT5ibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpOworICAgIGlmIChmb3JtYXR0aW5nU3Rh
dGUuaGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCkpIHsKKyAgICAgICAgZm9ybWF0
dGluZ1N0YXRlLmNsZWFySGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCk7CisgICAg
ICAgIEFTU0VSVChsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCku
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCktPmNvbXB1dGVkVmFsdWUgPT0gaGVpZ2h0QW5kTWFyZ2lu
Lm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlzcGxh
eUJveC5zZXRUb3AoYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5n
KGxheW91dEJveCwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKSk7
CisKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhl
aWdodCk7CiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRNYXJnaW4u
bWFyZ2luKTsKLQotICAgIC8vIElmIHRoaXMgYm94IGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgYnkg
dGhlIGVzdGltYXRlZCB2ZXJ0aWNhbCBtYXJnaW4sIG5vIG5lZWQgdG8gbW92ZSBpdCBhZ2Fpbi4K
LSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgIWRpc3BsYXlCb3gu
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkpCi0gICAgICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2Fs
bHkoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKTsKIH0KIAogRm9y
bWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKQEAgLTQ0NCw2ICs0
NDgsMzcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWMKICAgICByZXR1cm4gaW5zdHJpbnNpY1dp
ZHRoQ29uc3RyYWludHM7CiB9CiAKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
YWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgY29uc3QKK3sKKyAgICAvLyBOb3cg
dGhhdCB3ZSd2ZSBjb21wdXRlZCB0aGUgZmluYWwgbWFyZ2luIGJlZm9yZSwgbGV0J3Mgc2hpZnQg
dGhlIGJveCdzIHZlcnRpY2FsIHBvc2l0aW9uLgorICAgIC8vIDEuIENoZWNrIGlmIHRoZSBtYXJn
aW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHRoZSBwcmV2aW91cyBib3gncyBtYXJnaW4gYWZ0ZXIu
IGlmIG5vdCAtPiByZXR1cm4gcHJldmlvdXMgYm94J3MgYm90dG9tIGlubGN1ZGluZyBtYXJnaW4g
YWZ0ZXIgKyBtYXJnaW5CZWZvcmUKKyAgICAvLyAyLiBDaGVjayBpZiB0aGUgcHJldmlvdXMgYm94
J3MgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoLiBJZiBub3QgLT4gcmV0dXJuIHByZXZpb3VzIGJv
eCcgYm90dG9tIGV4Y2x1ZGluZyBtYXJnaW4gYWZ0ZXIgKyBtYXJnaW5CZWZvcmUgKHRoZXkgYXJl
IHN1cHBvc2VkIHRvIGJlIGVxdWFsKQorICAgIC8vIDMuIEdvIHRvIHByZXZpb3VzIGJveCBhbmQg
c3RhcnQgZnJvbSBzdGVwICMxIHVudGlsIHdlIGhpdCB0aGUgcGFyZW50IGJveC4KKyAgICBhdXRv
JiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byogY3VycmVudExh
eW91dEJveCA9ICZsYXlvdXRCb3g7CisgICAgd2hpbGUgKGN1cnJlbnRMYXlvdXRCb3gpIHsKKyAg
ICAgICAgaWYgKCFjdXJyZW50TGF5b3V0Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAq
Y3VycmVudExheW91dEJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICgh
TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50TGF5b3V0Qm94KSkgeworICAgICAgICAgICAgYXV0byYg
cHJldmlvdXNEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChw
cmV2aW91c0luRmxvd1NpYmxpbmcpOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzRGlzcGxh
eUJveC5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpICsgbWFyZ2luQmVmb3JlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3Rh
dGUsIHByZXZpb3VzSW5GbG93U2libGluZykpIHsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3Vz
RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJ
bkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3BsYXlCb3guYm90
dG9tKCkgKyBtYXJnaW5CZWZvcmU7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudExheW91dEJv
eCA9ICZwcmV2aW91c0luRmxvd1NpYmxpbmc7CisgICAgfQorCisgICAgYXV0byBjb250YWluaW5n
QmxvY2tDb250ZW50Qm94VG9wID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94VG9wKCk7CisgICAgaWYgKE1h
cmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KSB8fCBNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJl
bnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3A7CisKKyAgICByZXR1cm4gY29udGFpbmluZ0Jsb2Nr
Q29udGVudEJveFRvcCArIG1hcmdpbkJlZm9yZTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IDY4MDQxZDQ5MDg1NjdmYjg4OTM0MGQ2YjUzYjdlM2YyMDgyZWMx
ODAuLjlhNDEyYWU0MDI2OTVmY2UxYjk1NzMzMmMzNjg1NTA4ZWRmMzQyMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxh
eW91dCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIEJsb2NrRm9ybWF0dGluZ1N0
YXRlJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUoKSk7IH0KKwogICAgIHZvaWQgbGF5b3V0
Rm9ybWF0dGluZ0NvbnRleHRSb290KEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0
OwogICAgIHZvaWQgcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQ29udGFpbmVy
JikgY29uc3Q7CiAKQEAgLTY3LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZWNvbXB1
dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmKSBj
b25zdDsKIAogICAgIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBhZGp1c3RlZFZlcnRp
Y2FsUG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmcoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBt
YXJnaW5CZWZvcmUpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0
aW9uaW5nIGFuZCBzaXppbmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuCiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5IHsKQEAgLTc5LDQ5ICs4Miw0NyBAQCBwcml2YXRlOgogICAgICAgICBz
dGF0aWMgYm9vbCBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50c05lZWRDaGlsZHJlbldpZHRoKGNv
bnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW5z
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
IAotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZXN0
aW1hdGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLQogICAg
IHByaXZhdGU6Ci0gICAgICAgIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBtYXJnaW4gY29sbGFw
c2luZyBmb3IgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgotICAgICAgICBjbGFzcyBNYXJnaW5D
b2xsYXBzZSB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0
IG1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAg
ICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRIZWlnaHQgPSB7IH0pOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRN
YXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7CisgICAg
ICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdp
ZHRoID0geyB9KTsKKyAgICAgICAgc3RhdGljIFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93UG9zaXRpb25lZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgIH07CiAK
LSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAg
c3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICBjbGFzcyBNYXJnaW4geworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFZlcnRpY2FsTWFyZ2luIHZlcnRpY2FsKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQg
bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
KyAgICAgICAgc3RhdGljIEVzdGltYXRlZE1hcmdpbkJlZm9yZSBlc3RpbWF0ZWRNYXJnaW5CZWZv
cmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
dXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
LCBjb25zdCBWZXJ0aWNhbE1hcmdpbiYgbmV4dFNpYmxpbmdWZXJ0aWNhbE1hcmdpbik7CiAKLSAg
ICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMg
TGF5b3V0VW5pdCBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5G
bG93Q2hpbGRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29s
IG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0
VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFw
c2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAg
IHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29s
bGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2li
bGluZ01hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3Jl
V2l0aENsZWFyYW5jZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAg
ICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMg
Ym9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGNvbnN0IEJveCYp
OwotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNp
YmxpbmcoY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIH07CisgICAgICAgIHN0YXRp
YyBib29sIG1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKIAotICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gdXNlZEhlaWdodCA9IHsgfSk7Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1h
cmdpbiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoID0geyB9KTsKLSAgICAg
ICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lk
dGggPSB7IH0pOwotICAgICAgICBzdGF0aWMgUG9pbnQgc3RhdGljUG9zaXRpb25Gb3JPdXRPZkZs
b3dQb3NpdGlvbmVkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgcHJpdmF0
ZToKKyAgICAgICAgZW51bSBjbGFzcyBNYXJnaW5UeXBlIHsgQmVmb3JlLCBBZnRlciB9OworICAg
ICAgICBzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgcG9z
aXRpdmVOZWdhdGl2ZVZhbHVlcyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE1hcmdp
blR5cGUpOworICAgICAgICBzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
OjpWYWx1ZXMgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luOjpWYWx1ZXMgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CiAgICAgfTsKIAogICAgIGNsYXNzIFF1aXJrcyB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgYm9vbCBuZWVkc1N0cmV0Y2hpbmcoY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBzdHJldGNo
ZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBIZWlnaHRBbmRNYXJnaW4p
OworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIHN0cmV0Y2hlZEluRmxvd0hlaWdodChj
b25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIEhlaWdodEFuZE1hcmdpbik7CiAKICAgICAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZU1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAgICAgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBlZTQzODcyZWFi
NmU1MDBiZThhYzcyYjE1YWY5MDEwYmVlYmY4MTA2Li4wMDdmNzJhMzA0NGMxY2MzZGExODM2OWUy
NzliYjVhYjUwMmM0MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCkBAIC01NywxMyArNTcsOSBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAg
ICAgICAvLyBPbmx5IGNoaWxkcmVuIGluIHRoZSBub3JtYWwgZmxvdyBhcmUgdGFrZW4gaW50byBh
Y2NvdW50IChpLmUuLCBmbG9hdGluZyBib3hlcyBhbmQgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJv
eGVzIGFyZSBpZ25vcmVkLAogICAgICAgICAvLyBhbmQgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGJv
eGVzIGFyZSBjb25zaWRlcmVkIHdpdGhvdXQgdGhlaXIgb2Zmc2V0KS4gTm90ZSB0aGF0IHRoZSBj
aGlsZCBib3ggbWF5IGJlIGFuIGFub255bW91cyBibG9jayBib3guCiAKLSAgICAgICAgYXV0byYg
c3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tX
aWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250
YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlC
b3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7Ci0KLSAg
ICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRW
YWx1ZXMgeyBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwKSwKLSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVl
T3IoMCkgfTsgCi0gICAgICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gVmVydGljYWxNYXJnaW46
OkNvbGxhcHNlZFZhbHVlcyB7IE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmUobGF5b3V0U3Rh
dGUsIGxheW91dEJveCksIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KSB9OworICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IGNvbXB1dGVk
Tm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsK
KyAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBNYXJnaW46OnZlcnRpY2FsKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpLmNvbGxhcHNlZFZhbHVlcygpOwogICAgICAgICBhdXRvIGJvcmRlckFu
ZFBhZGRpbmdUb3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZGlzcGxheUJveC5wYWRkaW5n
VG9wKCkudmFsdWVPcigwKTsKIAogICAgICAgICBhdXRvIGhlaWdodCA9IHVzZWRIZWlnaHQgPyB1
c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CkBAIC04NCwxNCArODAsMTQgQEAgSGVpZ2h0QW5k
TWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmcKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0
b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQs
IGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KICAgICAgICAgYXV0byogbGFzdEluRmxv
d0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgp
OwogICAgICAgICBBU1NFUlQobGFzdEluRmxvd0NoaWxkKTsKLSAgICAgICAgaWYgKCFNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKSB7CisgICAgICAgIGlmICghTWFyZ2luOjptYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxhc3RJbkZs
b3dDaGlsZCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxhc3RJbkZsb3dEaXNwbGF5Qm94ID0gbGF5
b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGFzdEluRmxvd0NoaWxkKTsKICAgICAg
ICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgbGFzdEluRmxv
d0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIHsgbm9uQ29s
bGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfSB9OwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdo
b3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9t
IG1hcmdpbgogICAgICAgICBhdXRvKiBpbkZsb3dDaGlsZCA9IGxhc3RJbkZsb3dDaGlsZDsKLSAg
ICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICppbkZsb3dDaGlsZCkp
CisgICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmluRmxvd0NoaWxkKSkKICAg
ICAgICAgICAgIGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGlu
ZygpOwogICAgICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKICAgICAgICAgICAgIGF1dG8mIGluRmxv
d0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dD
aGlsZCk7CkBAIC0xMDMsNiArOTksOSBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgIH07
CiAKICAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUoKTsKKyAgICAvLyBBZGp1c3Qg
dGhlIHByZXZpb3VzIHNpYmxpbmcncyBtYXJnaW4gYm90dG9tIG5vdyB0aGF0IHRoaXMgYm94J3Mg
dmVydGljYWwgbWFyZ2luIGlzIGNvbXB1dGVkLgorICAgIGlmIChNYXJnaW46Om1hcmdpbkJlZm9y
ZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KSkKKyAgICAgICAgTWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlv
dXRTdGF0ZSwgKmxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSwgaGVpZ2h0QW5kTWFy
Z2luLm1hcmdpbik7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+
IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBo
ZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmUgPDwgInB4LCAiIDw8IGhl
aWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0
Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWlnaHRBbmRNYXJnaW47
CkBAIC0yNjEsNyArMjYwLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGEKICAgICBpZiAoIVF1
aXJrczo6bmVlZHNTdHJldGNoaW5nKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQogICAgICAgICBy
ZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogCi0gICAgaGVpZ2h0QW5kTWFyZ2luID0gUXVpcmtzOjpz
dHJldGNoZWRIZWlnaHQobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVpZ2h0QW5kTWFyZ2luKTsK
KyAgICBoZWlnaHRBbmRNYXJnaW4gPSBRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4pOwogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0g
LT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBzdHJlY2hlZCB0byB2aWV3cG9ydCAtPiBoZWlnaHQo
IiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5k
TWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRN
YXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwpAQCAtMzIy
LDMwICszMjEsNiBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OgogICAgIHJldHVybiB7IG1pbmlt
dW1JbnRyaW5zaWNXaWR0aCwgbWF4aW11bUludHJpbnNpY1dpZHRoIH07CiB9CiAKLUxheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9y
ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQot
ewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotICAgIC8vIENhbid0
IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ug
c2hvdWxkbid0IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KLSAgICBBU1NFUlQobGF5
b3V0Qm94LmlzSW5GbG93KCkpOwotICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCBib3VuZGFyeS4KLSAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAgICAvLyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFs
IHBhdGggZm9yIG5vdy4KLSAgICByZXR1cm4gTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLSAgICAvLyBDYW4ndCBlc3RpbWF0ZSB2ZXJ0aWNhbCBt
YXJnaW5zIGZvciBvdXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRv
IGl0IGZvciBmbG9hdCBib3hlcykuCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsK
LSAgICAvLyBDYW4ndCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnkuCi0g
ICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkp
OwotCi0gICAgLy8gTGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0gICAg
cmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKLX0KLQogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cAppbmRleCA0NjA2ZjlkYzY2MjhlZTAzZjMwYzdhOTVmNDM5ZmIxM2U3NDA3MDlkLi5iMDNjMjNh
MGVhNTVkMmNkMzgzZGZlMGU3NzY1MTg3Yzc1YzE2NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTY2LDggKzY2LDkgQEAgYm9vbCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3QKICAgICByZXR1cm4gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlz
QXV0bygpOwogfQogCi1IZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVp
cmtzOjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCwgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbikKK0hlaWdo
dEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxv
d0hlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBIZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luKQogeworICAgIEFTU0VSVChsYXlv
dXRCb3guaXNJbkZsb3coKSk7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkg
fHwgbGF5b3V0Qm94LmlzQm9keUJveCgpKTsKIAogICAgIGF1dG8mIGRvY3VtZW50Qm94ID0gbGF5
b3V0Qm94LmlzRG9jdW1lbnRCb3goKSA/IGxheW91dEJveCA6ICpsYXlvdXRCb3gucGFyZW50KCk7
CkBAIC04OCwxMiArODksMTAgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXQKICAgICAgICAgLy8g
SGVyZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94OgogICAgICAgICAvLyBTdHJldGNo
IHRoZSBib2R5IHVzaW5nIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sncyBoZWlnaHQgYW5k
IHNocmluayBpdCB3aXRoIGRvY3VtZW50IGJveCdzIG1hcmdpbi9ib3JkZXIvcGFkZGluZy4KICAg
ICAgICAgLy8gVGhpcyBsb29rcyBleHRyZW1lbHkgb2RkIHdoZW4gaHRtbCBoYXMgbm9uLWF1dG8g
aGVpZ2h0LgotICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmVzdGltYXRl
ZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpICsgR2VvbWV0cnk6OmVzdGlt
YXRlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7Ci0gICAgICAgIHN0cmVj
aGVkSGVpZ2h0IC09IHZlcnRpY2FsTWFyZ2luOworICAgICAgICBhdXRvIGRvY3VtZW50Qm94VmVy
dGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
blZhbHVlKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7CisgICAgICAgIHN0cmVjaGVkSGVpZ2h0
IC09IChkb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGRvY3VtZW50Qm94VmVydGlj
YWxNYXJnaW4uYWZ0ZXIpOwogCi0gICAgICAgIC8vIFRoaXMgcXVpcmsgaGFwcGVucyB3aGVuIHRo
ZSBib2R5IGhlaWdodCBpcyAwIHdoaWNoIG1lYW5zIGl0cyB2ZXJ0aWNhbCBtYXJnaW5zIGNvbGxh
cHNlIHRocm91Z2ggKHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYXJlIGFkam9pbmluZykuCi0gICAg
ICAgIC8vIEhvd2V2ZXIgbm93IHRoYXQgd2Ugc3RyZXRjaCB0aGUgYm9keSB0aGV5IGRvbid0IGNv
bGxhcHNlIHRocm91Z2ggYW55bW9yZSwgc28gd2UgbmVlZCB0byB1c2UgdGhlIG5vbi1jb2xsYXBz
ZWQgdmFsdWVzIGluc3RlYWQuCi0gICAgICAgIGF1dG8gYm9keUJveFZlcnRpY2FsTWFyZ2luID0g
aGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA/IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVl
cygpIDogaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKTsKKyAgICAg
ICAgYXV0byBib2R5Qm94VmVydGljYWxNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVz
ZWRWYWx1ZXMoKTsgCiAgICAgICAgIHRvdGFsVmVydGljYWxNYXJnaW4gPSBib2R5Qm94VmVydGlj
YWxNYXJnaW4uYmVmb3JlICsgYm9keUJveFZlcnRpY2FsTWFyZ2luLmFmdGVyOwogICAgIH0KIApA
QCAtMTEyLDYgKzExMSwyMCBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJgogICAgIHJldHVybiBs
YXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKCpsYXlvdXRCb3gu
cGFyZW50KCkpICYmIGhhc01hcmdpbkJlZm9yZVF1aXJrVmFsdWUobGF5b3V0Qm94KTsKIH0KIAor
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
Cit7CisgICAgLy8gSWdub3JlIG1hcmluZyBhZnRlciB3aGVuIHRoZSBpZ25vcmVkIG1hcmdpbiBi
ZWZvcmUgY29sbGFwc2VzIHRocm91Z2guCisgICAgaWYgKCFzaG91bGRJZ25vcmVNYXJnaW5CZWZv
cmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEFTU0VSVChsYXlvdXRCb3gucGFyZW50KCkpOworICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRC
b3gucGFyZW50KCk7CisgICAgaWYgKHBhcmVudC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgp
ICE9ICZsYXlvdXRCb3ggfHwgcGFyZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgIT0g
cGFyZW50Lmxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIE1hcmdpbjo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
YmI5NjY5MzkwZmY5YTI4NzZmZTcxNGRjODU0NGIwMWRmNmRlYWE4NC4uYmI0NTZiNTkyN2ZlZmU0
NWM2Mzc4MzFkNWIyNGY3MTcwOTJiYWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaApAQCAt
MjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAj
aW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTWFyZ2luVHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDYg
KzQzLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CbG9ja0Zvcm1hdHRpbmdTdGF0ZSgpOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIHNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxh
eW91dEJveCwgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHZlcnRpY2FsTWFyZ2lu
KSB7IG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLnNldCgmbGF5b3V0Qm94LCB2
ZXJ0aWNhbE1hcmdpbik7IH0KKyAgICBib29sIGhhc1Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNh
bE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4uY29udGFpbnMoJmxheW91dEJveCk7IH0KKyAgICBQb3Np
dGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aXZlQW5k
TmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5nZXQoJmxheW91dEJveCk7IH0KKworICAgIHZvaWQgc2V0
SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSB7IG1fZXN0aW1h
dGVkTWFyZ2luQmVmb3JlTGlzdC5hZGQoJmxheW91dEJveCk7IH0KKyAgICB2b2lkIGNsZWFySGFz
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSB7IG1fZXN0aW1hdGVk
TWFyZ2luQmVmb3JlTGlzdC5yZW1vdmUoJmxheW91dEJveCk7IH0KKyAgICBib29sIGhhc0VzdGlt
YXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9l
c3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmNvbnRhaW5zKCZsYXlvdXRCb3gpOyB9CisKK3ByaXZh
dGU6CisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxN
YXJnaW4+IG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOworICAgIEhhc2hTZXQ8
Y29uc3QgQm94Kj4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNv
bGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tN
YXJnaW5Db2xsYXBzZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NzcwODc0
NTM5NGE3ODViODRkOTdjODJmNWY0ODEzNWEzZjhkNTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQuaCIKLQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQotCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiTGF5b3V0
Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCi0jaW5jbHVkZSAiTGF5b3V0VW5p
dC5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5h
bWVzcGFjZSBMYXlvdXQgewotCi1zdGF0aWMgYm9vbCBoYXNCb3JkZXIoY29uc3QgQm9yZGVyVmFs
dWUmIGJvcmRlclZhbHVlKQotewotICAgIGlmIChib3JkZXJWYWx1ZS5zdHlsZSgpID09IEJvcmRl
clN0eWxlOjpOb25lIHx8IGJvcmRlclZhbHVlLnN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6OkhpZGRl
bikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhIWJvcmRlclZhbHVlLndpZHRo
KCk7Ci19Ci0KLXN0YXRpYyBib29sIGhhc1BhZGRpbmcoY29uc3QgTGVuZ3RoJiBwYWRkaW5nVmFs
dWUpCi17Ci0gICAgLy8gRklYTUU6IENoZWNrIGlmIHBlcmNlbnQgdmFsdWUgbmVlZHMgdG8gYmUg
cmVzb2x2ZWQuCi0gICAgcmV0dXJuICFwYWRkaW5nVmFsdWUuaXNaZXJvKCk7Ci19Ci0KLXN0YXRp
YyBib29sIGhhc0JvcmRlckJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICByZXR1
cm4gaGFzQm9yZGVyKGxheW91dEJveC5zdHlsZSgpLmJvcmRlckJlZm9yZSgpKTsKLX0KLQotc3Rh
dGljIGJvb2wgaGFzQm9yZGVyQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgcmV0
dXJuIGhhc0JvcmRlcihsYXlvdXRCb3guc3R5bGUoKS5ib3JkZXJBZnRlcigpKTsKLX0KLQotc3Rh
dGljIGJvb2wgaGFzUGFkZGluZ0JlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBy
ZXR1cm4gaGFzUGFkZGluZyhsYXlvdXRCb3guc3R5bGUoKS5wYWRkaW5nQmVmb3JlKCkpOwotfQot
Ci1zdGF0aWMgYm9vbCBoYXNQYWRkaW5nQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0g
ICAgcmV0dXJuIGhhc1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0FmdGVyKCkpOwot
fQotCi1zdGF0aWMgYm9vbCBoYXNDbGVhcmFuY2UoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0g
ICAgaWYgKCFsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgLy8gRklYTUUKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIGVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAg
ICAvLyBXZWJLaXQgdHJlYXRzIHRoZSBkb2N1bWVudCBlbGVtZW50IHJlbmRlcmVyIGFzIGEgYmxv
Y2sgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QuIEl0IHByb2JhYmx5IG9ubHkgaW1wYWN0cyBtYXJn
aW4gY29sbGFwc2luZywgc28gbGV0J3Mgbm90IGRvCi0gICAgLy8gYSBsYXlvdXQgd2lkZSBxdWly
ayBvbiB0aGlzIGZvciBub3cuCi0gICAgaWYgKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KCk7Ci19Ci0KLXN0YXRpYyBMYXlvdXRVbml0IG1hcmdpblZhbHVl
KExheW91dFVuaXQgY3VycmVudE1hcmdpblZhbHVlLCBMYXlvdXRVbml0IGNhbmRpZGF0ZU1hcmdp
blZhbHVlKQotewotICAgIGlmICghY2FuZGlkYXRlTWFyZ2luVmFsdWUpCi0gICAgICAgIHJldHVy
biBjdXJyZW50TWFyZ2luVmFsdWU7Ci0gICAgaWYgKCFjdXJyZW50TWFyZ2luVmFsdWUpCi0gICAg
ICAgIHJldHVybiBjYW5kaWRhdGVNYXJnaW5WYWx1ZTsKLSAgICAvLyBCb3RoIG1hcmdpbnMgYXJl
IHBvc2l0aXZlLgotICAgIGlmIChjYW5kaWRhdGVNYXJnaW5WYWx1ZSA+IDAgJiYgY3VycmVudE1h
cmdpblZhbHVlID4gMCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNhbmRpZGF0ZU1hcmdpblZh
bHVlLCBjdXJyZW50TWFyZ2luVmFsdWUpOwotICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgbmVnYXRp
dmUuCi0gICAgaWYgKGNhbmRpZGF0ZU1hcmdpblZhbHVlIDwgMCAmJiBjdXJyZW50TWFyZ2luVmFs
dWUgPCAwKQotICAgICAgICByZXR1cm4gMCAtIHN0ZDo6bWF4KHN0ZDo6YWJzKGNhbmRpZGF0ZU1h
cmdpblZhbHVlLnRvRmxvYXQoKSksIHN0ZDo6YWJzKGN1cnJlbnRNYXJnaW5WYWx1ZS50b0Zsb2F0
KCkpKTsKLSAgICAvLyBPbmUgb2YgdGhlIG1hcmdpbnMgaXMgbmVnYXRpdmUuCi0gICAgcmV0dXJu
IGN1cnJlbnRNYXJnaW5WYWx1ZSArIGNhbmRpZGF0ZU1hcmdpblZhbHVlOwotfQotCi1MYXlvdXRV
bml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKLQotICAgIHJldHVybiBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2Fs
TWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCkuYmVmb3JlOwotfQotCi1MYXlvdXRV
bml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9j
a0xldmVsQm94KCkpOwotCi0gICAgcmV0dXJuIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxN
YXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5hZnRlcjsKLX0KLQotTGF5b3V0VW5p
dCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om5vbkNv
bGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94
KCkpOwotCi0gICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJnaW4gdG9wIGluY2x1ZGVzIGNvbGxhcHNl
ZCBtYXJnaW4gZnJvbSBpbmZsb3cgZmlyc3QgY2hpbGQuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVl
KGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
LCBjb2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KSk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlv
dXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJnaW4g
Ym90dG9tIGluY2x1ZGVzIGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgbGFzdCBjaGlsZC4K
LSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRlcihs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENoaWxk
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZE1hcmdpbkJlZm9y
ZUZyb21GaXJzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgZmlyc3QgY2hpbGQgY29sbGFwc2VzIGl0cyBtYXJnaW4g
dG9wLgotICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250
YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICAvLyBEbyBub3QgY29sbGFwc2UgbWFyZ2luIHdpdGggYSBib3ggZnJvbSBhIG5vbi1ibG9j
ayBmb3JtYXR0aW5nIGNvbnRleHQgPGRpdj48c3Bhbj5mb29iYXI8L3NwYW4+PC9kaXY+LgotICAg
IGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpICYmICFsYXlvdXRC
b3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIC8vIEZJWE1FOiBUYWtlIGNvbGxhcHNlZCB0aHJvdWdoIG1hcmdpbiBpbnRv
IGFjY291bnQuCi0gICAgYXV0byYgZmlyc3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWlu
ZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOwotICAgIGlmICghbWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dD
aGlsZCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIC8vIENvbGxlY3QgY29sbGFwc2VkIG1hcmdp
biB0b3AgcmVjdXJzaXZlbHkuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29s
bGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSwgY29sbGFw
c2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hp
bGQpKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFT
U0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhl
IGxhc3QgY2hpbGQgcHJvcGFnYXRlcyBpdHMgbWFyZ2luIGJvdHRvbS4KLSAgICBpZiAoIWlzPENv
bnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhh
c0luRmxvd0NoaWxkKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRG8gbm90IGNvbGxh
cHNlIG1hcmdpbiB3aXRoIGEgYm94IGZyb20gYSBub24tYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0
IDxkaXY+PHNwYW4+Zm9vYmFyPC9zcGFuPjwvZGl2Pi4KLSAgICBpZiAobGF5b3V0Qm94LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAhbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dE9ubHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhN
RTogQ2hlY2sgZm9yIGNvbGxhcHNlZCB0aHJvdWdoIG1hcmdpbi4KLSAgICBhdXRvJiBsYXN0SW5G
bG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGls
ZCgpOwotICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIo
bGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
Ly8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2luIGJvdHRvbSByZWN1cnNpdmVseS4KLSAgICByZXR1
cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0
ZSwgbGFzdEluRmxvd0NoaWxkKSwgY29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENoaWxkKGxh
eW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpKTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQotewotICAgIC8vIDEuIFRoaXMgaXMgdGhlIGxhc3QgaW4tZmxvdyBj
aGlsZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBhZnRl
ciBjb2xsYXBzZXMgd2l0aCBwYXJlbnQncyBtYXJnaW4gYWZ0ZXIgb3IKLSAgICAvLyAyLiBUaGlz
IGJveCdzIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMgd2l0aCB0aGUgbmV4dCBzaWJsaW5nJ3MgbWFy
Z2luIGJlZm9yZSBhbmQgdGhhdCBzaWJsaW5nIGNvbGxhcHNlcyB0aHJvdWdoIGFuZAotICAgIC8v
IHdlIGNhbiBnZXQgdG8gdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCBsaWtlIHRoYXQuCi0gICAgYXV0
byogbGFzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94LnBhcmVudCgpLT5sYXN0SW5GbG93Q2hpbGQo
KTsKLSAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSAmbGF5b3V0Qm94OyBjdXJyZW50Qm94OyBj
dXJyZW50Qm94ID0gY3VycmVudEJveC0+bmV4dEluRmxvd1NpYmxpbmcoKSkgewotICAgICAgICBp
ZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGN1cnJlbnRCb3ggPT0gbGFzdElu
Rmxvd0NoaWxkKQotICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBh
cmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqY3VycmVudEJveCk7IAotICAgICAgICBpZiAo
IW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nKCpjdXJyZW50Qm94KSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdp
bkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQotewotICAgIC8vIFRoZSBmaXJzdCBpbmZsb3cgY2hpbGQgY291bGQgcHJvcGFnYXRlIGl0
cyB0b3AgbWFyZ2luIHRvIHBhcmVudC4KLSAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NT
MjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJnaW5zCi0gICAgaWYgKGxheW91dEJveC5pc0Fub255
bW91cygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
QmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94
IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94Lmlz
RmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE1h
cmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAg
ICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29s
bGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIE9ubHkgdGhlIGZpcnN0IGlubGZsb3cgY2hpbGQgY29sbGFw
c2VzIHdpdGggcGFyZW50LgotICAgIGlmIChsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5n
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRC
b3gucGFyZW50KCk7Ci0gICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBu
ZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBp
bi1mbG93IGNoaWxkcmVuCi0gICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dChwYXJlbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzQm9yZGVyQmVm
b3JlKHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChoYXNQYWRkaW5n
QmVmb3JlKHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIC4uLmFuZCB0
aGUgY2hpbGQgaGFzIG5vIGNsZWFyYW5jZS4KLSAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dEJv
eCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJn
aW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZShjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAg
IC8vIElmIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIG9mIGFuIGVsZW1lbnQgd2l0aCBjbGVh
cmFuY2UgYXJlIGFkam9pbmluZywgaXRzIG1hcmdpbnMgY29sbGFwc2Ugd2l0aCB0aGUgYWRqb2lu
aW5nIG1hcmdpbnMKLSAgICAvLyBvZiBmb2xsb3dpbmcgc2libGluZ3MgYnV0IHRoYXQgcmVzdWx0
aW5nIG1hcmdpbiBkb2VzIG5vdCBjb2xsYXBzZSB3aXRoIHRoZSBib3R0b20gbWFyZ2luIG9mIHRo
ZSBwYXJlbnQgYmxvY2suCi0gICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKGF1dG8q
IHByZXZpb3VzU2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsgcHJl
dmlvdXNTaWJsaW5nOyBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmctPnByZXZpb3Vz
SW5GbG93U2libGluZygpKSB7Ci0gICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChs
YXlvdXRTdGF0ZSwgKnByZXZpb3VzU2libGluZykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGlmIChoYXNDbGVhcmFuY2UoKnByZXZpb3VzU2libGluZykpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgLy8gMS4gVGhpcyBpcyB0aGUgZmly
c3QgaW4tZmxvdyBjaGlsZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaCBhbmQgdGhl
IG1hcmdpbiBiZWZvcmUgY29sbGFwc2VzIHdpdGggcGFyZW50J3MgbWFyZ2luIGJlZm9yZSBvcgot
ICAgIC8vIDIuIFRoaXMgYm94J3MgbWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMgd2l0aCB0aGUgcHJl
dmlvdXMgc2libGluZydzIG1hcmdpbiBhZnRlciBhbmQgdGhhdCBzaWJsaW5nIGNvbGxhcHNlcyB0
aHJvdWdoIGFuZAotICAgIC8vIHdlIGNhbiBnZXQgdG8gdGhlIGZpcnN0IGluLWZsb3cgY2hpbGQg
bGlrZSB0aGF0LgotICAgIGF1dG8qIGZpcnN0SW5GbG93Q2hpbGQgPSBsYXlvdXRCb3gucGFyZW50
KCktPmZpcnN0SW5GbG93Q2hpbGQoKTsKLSAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSAmbGF5
b3V0Qm94OyBjdXJyZW50Qm94OyBjdXJyZW50Qm94ID0gY3VycmVudEJveC0+cHJldmlvdXNJbkZs
b3dTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91
dFN0YXRlLCAqY3VycmVudEJveCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmIChjdXJyZW50Qm94ID09IGZpcnN0SW5GbG93Q2hpbGQpCi0gICAgICAgICAgICByZXR1cm4g
bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwg
KmN1cnJlbnRCb3gpOyAKLSAgICAgICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJl
dmlvdXNTaWJsaW5nKCpjdXJyZW50Qm94KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFy
Z2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBpZiAobGF5b3V0Qm94
LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChsYXlv
dXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxv
YXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxh
cHNlLgotICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRv
IG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT25seSB0aGUgbGFzdCBpbmxmbG93IGNoaWxk
IGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KLSAgICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJs
aW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHBhcmVudCA9ICpsYXlv
dXRCb3gucGFyZW50KCk7Ci0gICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlz
aCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVp
ciBpbi1mbG93IGNoaWxkcmVuLgotICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlIGJvdHRv
bSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9mICdhdXRv
JyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxkJ3MgYm90
dG9tIG1hcmdpbiwgaWY6Ci0gICAgaWYgKCFwYXJlbnQuc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8o
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gdGhlIGJveCBoYXMgbm8gYm90dG9t
IHBhZGRpbmcsIGFuZAotICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBib3JkZXIsIGFu
ZAotICAgIGlmIChoYXNCb3JkZXJCZWZvcmUocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiBuZWl0aGVyIGNvbGxhcHNlcyB3
aXRoIGEgdG9wIG1hcmdpbiB0aGF0IGhhcyBjbGVhcmFuY2UuLi4KLSAgICBpZiAobWFyZ2luQWZ0
ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UobGF5b3V0U3Rh
dGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIG5vciAoaWYg
dGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXplcm8pIHdpdGggdGhlIGJveCdzIHRvcCBtYXJn
aW4uCi0gICAgYXV0byBjb21wdXRlZE1pbkhlaWdodCA9IHBhcmVudC5zdHlsZSgpLmxvZ2ljYWxN
aW5IZWlnaHQoKTsKLSAgICBpZiAoIWNvbXB1dGVkTWluSGVpZ2h0LmlzQXV0bygpICYmIGNvbXB1
dGVkTWluSGVpZ2h0LnZhbHVlKCkgJiYgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91
c1NpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5p
c0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICBpZiAoIWxheW91dEJveC5wcmV2aW91c0luRmxvd1Np
YmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgcHJldmlvdXNJbkZs
b3dTaWJsaW5nID0gKmxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKLQotICAgIC8v
IE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBj
b2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgcHJl
dmlvdXNJbkZsb3dTaWJsaW5nLmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVz
IGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSAmJiAhbGF5b3V0Qm94LnN0eWxlKCkudG9wKCkuaXNBdXRvKCkpCi0gICAgICAgIHx8IChw
cmV2aW91c0luRmxvd1NpYmxpbmcuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIXByZXZpb3Vz
SW5GbG93U2libGluZy5zdHlsZSgpLmJvdHRvbSgpLmlzQXV0bygpKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNv
bGxhcHNlLgotICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpIHx8IHByZXZpb3Vz
SW5GbG93U2libGluZy5pc0lubGluZUJsb2NrQm94KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxl
bWVudCBhbHdheXMgY29sbGFwc2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YKLSAgICAvLyBpdHMg
bmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFz
IGNsZWFyYW5jZS4KLSAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dEJveCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoTmV4dFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91
dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICBpZiAoIWxheW91dEJveC5uZXh0SW5GbG93
U2libGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZygqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJs
aW5nKCkpOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gQSBib3gncyBvd24gbWFyZ2lucyBjb2xsYXBz
ZSBpZiB0aGUgJ21pbi1oZWlnaHQnIHByb3BlcnR5IGlzIHplcm8sIGFuZCBpdCBoYXMgbmVpdGhl
ciB0b3Agb3IgYm90dG9tIGJvcmRlcnMgbm9yIHRvcCBvciBib3R0b20gcGFkZGluZywKLSAgICAv
LyBhbmQgaXQgaGFzIGEgJ2hlaWdodCcgb2YgZWl0aGVyIDAgb3IgJ2F1dG8nLCBhbmQgaXQgZG9l
cyBub3QgY29udGFpbiBhIGxpbmUgYm94LCBhbmQgYWxsIG9mIGl0cyBpbi1mbG93IGNoaWxkcmVu
J3MgbWFyZ2lucyAoaWYgYW55KSBjb2xsYXBzZS4KLSAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKGxh
eW91dEJveCkgfHwgaGFzQm9yZGVyQWZ0ZXIobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNQYWRkaW5n
QWZ0ZXIobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRklYTUU6
IENoZWNrIGZvciBjb21wdXRlZCAwIGhlaWdodC4KLSAgICBpZiAoIWxheW91dEJveC5zdHlsZSgp
LmhlaWdodCgpLmlzQXV0bygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVhN
RTogQ2hlY2sgZm9yIGNvbXB1dGVkIDAgaGVpZ2h0LgotICAgIGlmICghbGF5b3V0Qm94LnN0eWxl
KCkubWluSGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
ICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0g
ICAgICAgIGlmIChkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVz
dGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpLmlubGluZVJ1bnMoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9y
IChhdXRvKiBpbmZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJz
dEluRmxvd0NoaWxkKCk7IGluZmxvd0NoaWxkOyBpbmZsb3dDaGlsZCA9IGluZmxvd0NoaWxkLT5u
ZXh0SW5GbG93U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRo
cm91Z2gobGF5b3V0U3RhdGUsICppbmZsb3dDaGlsZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTGF5b3V0
VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1h
cmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQotewotICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAg
IC8vIFRPRE86IHRha2UgX2hhc0Fkam9pbmluZ01hcmdpbkJlZm9yZUFuZEFmdGVyKCkgaW50byBh
Y2NvdW50LgotICAgIGlmIChtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVm
b3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8v
IEZJWE1FOiBGaW5kIG91dCB0aGUgbG9naWMgYmVoaW5kIHRoaXMuCi0gICAgaWYgKEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZyhsYXlvdXRCb3gpKSB7Ci0gICAgICAgIGlm
ICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAg
ICAgICAgIHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91
dEJveCk7Ci0gICAgICAgIC8vIENvbXB1dGUgdGhlIGNvbGxhcHNlZCB0aHJvdWdoIHZhbHVlLgot
ICAgICAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgYXV0byBtYXJnaW5BZnRlciA9IG5vbkNvbGxh
cHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOyAKLSAgICAgICAgcmV0dXJu
IG1hcmdpblZhbHVlKG1hcmdpbkJlZm9yZSwgbWFyZ2luQWZ0ZXIpOwotICAgIH0KLQotICAgIC8v
IFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdh
eXMgY29sbGFwc2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YgaXRzIG5leHQgaW4tZmxvdyBibG9j
ay1sZXZlbCBzaWJsaW5nLAotICAgIC8vIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5j
ZS4KLSAgICBhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJ
bkZsb3dTaWJsaW5nKCk7Ci0gICAgaWYgKCFwcmV2aW91c0luRmxvd1NpYmxpbmcpCi0gICAgICAg
IHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7
Ci0KLSAgICBhdXRvIHByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyID0gbm9uQ29sbGFwc2VkTWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwotICAgIGF1dG8g
bWFyZ2luQmVmb3JlID0gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpOwotICAgIHJldHVybiBtYXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIHByZXZpb3VzU2li
bGluZ01hcmdpbkFmdGVyKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgaWYgKGxheW91dEJv
eC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChsYXlvdXRC
b3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2luaW5n
TWFyZ2luQmVmb3JlQW5kQm90dG9tKCkgaW50byBhY2NvdW50LgotICAgIGlmIChtYXJnaW5BZnRl
ckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGbG9hdHMg
YW5kIG91dCBvZiBmbG93IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlIHRoZWlyIG1h
cmdpbnMuCi0gICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZyhsYXlv
dXRCb3gpKQotICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3Rh
dGUsIGxheW91dEJveCk7Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93
IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2lu
IG9mIGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywKLSAgICAvLyB1bmxlc3Mg
dGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgaWYgKGxheW91dEJveC5uZXh0SW5GbG93
U2libGluZygpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci19Ci0KLX0KLX0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCmluZGV4
IDAyN2I0MzRiYmM2ZDRjMmY1NTEwYWZjZTljNTA3ODM5ZTY0OWUyNDQuLjZkYjdkZWRiMzdhYzll
MzhmYjk0NTY4Mjk2OWU4N2Q2YmU0M2VlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgQm94OjpCb3go
Y29uc3QgQm94JiBvdGhlcikKICAgICAsIG1faG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hvcml6
b250YWxNYXJnaW4pCiAgICAgLCBtX3ZlcnRpY2FsTWFyZ2luKG90aGVyLm1fdmVydGljYWxNYXJn
aW4pCiAgICAgLCBtX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihvdGhlci5tX2hvcml6b250
YWxOb25Db21wdXRlZE1hcmdpbikKLSAgICAsIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKG90aGVy
Lm1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKQorICAgICwgbV9oYXNDbGVhcmFuY2Uob3RoZXIubV9o
YXNDbGVhcmFuY2UpCiAgICAgLCBtX2JvcmRlcihvdGhlci5tX2JvcmRlcikKICAgICAsIG1fcGFk
ZGluZyhvdGhlci5tX3BhZGRpbmcpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNzQsNiArNzQs
NyBAQCBCb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwgbV9oYXNWYWxpZFBhZGRpbmco
b3RoZXIubV9oYXNWYWxpZFBhZGRpbmcpCiAgICAgLCBtX2hhc1ZhbGlkQ29udGVudEhlaWdodChv
dGhlci5tX2hhc1ZhbGlkQ29udGVudEhlaWdodCkKICAgICAsIG1faGFzVmFsaWRDb250ZW50V2lk
dGgob3RoZXIubV9oYXNWYWxpZENvbnRlbnRXaWR0aCkKKyAgICAsIG1fZXN0aW1hdGVkTWFyZ2lu
QmVmb3JlKG90aGVyLm1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKQogI2VuZGlmCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAppbmRleCA1NjM5
MmY0N2VlNzllMzBkM2YwZTIxODk0ZDNmMTRiYjg3NWQ3ZTg5Li41YWNiMDg3ZmZhYjQ5MjA0ZjZj
YjY3NjdkMTU3ZDMzMDcwOTk5ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAgLTEzNiwyMSArMTM2LDIwIEBAIHB1YmxpYzoKICAgICBM
YXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xl
ZnQoKS52YWx1ZU9yKDApICsgY29udGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1
ZU9yKDApICsgYm9yZGVyUmlnaHQoKTsgfQogICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGNvbnRlbnRC
b3hIZWlnaHQoKSArIHBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApICsgYm9yZGVyQm90dG9tKCk7
IH0KICAgICBSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiB7IHRvcCgpLCBsZWZ0KCksIHdpZHRo
KCksIGhlaWdodCgpIH07IH0KLSAgICBSZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1
cm4geyB0b3AoKSAtIG1hcmdpbkJlZm9yZSgpLCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJn
aW5TdGFydCgpICsgd2lkdGgoKSArIG1hcmdpbkVuZCgpLCBtYXJnaW5CZWZvcmUoKSArIGhlaWdo
dCgpICsgbWFyZ2luQWZ0ZXIoKSB9OyB9CisgICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNvbnN0
OwogCiAgICAgTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbE1hcmdpbigpIGNvbnN0Owog
ICAgIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJn
aW5TdGFydCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoKSBjb25zdDsKICAg
ICBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNvbnN0OworICAgIGJvb2wgaGFzQ2xlYXJhbmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNDbGVhcmFuY2U7IH0KIAogICAgIExheW91dFVuaXQgbm9uQ29s
bGFwc2VkTWFyZ2luQmVmb3JlKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRN
YXJnaW5BZnRlcigpIGNvbnN0OwogICAgIExheW91dFVuaXQgbm9uQ29tcHV0ZWRNYXJnaW5TdGFy
dCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbm9uQ29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOyB9Ci0KICAgICBMYXlvdXRVbml0IGJv
cmRlclRvcCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgYm9yZGVyTGVmdCgpIGNvbnN0OwogICAg
IExheW91dFVuaXQgYm9yZGVyQm90dG9tKCkgY29uc3Q7CkBAIC0xNzUsNiArMTc0LDExIEBAIHB1
YmxpYzoKICAgICBSZWN0IHBhZGRpbmdCb3goKSBjb25zdDsKICAgICBSZWN0IGNvbnRlbnRCb3go
KSBjb25zdDsKIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2b2lkIHNldEVzdGltYXRlZE1h
cmdpbkJlZm9yZShMYXlvdXQ6OkVzdGltYXRlZE1hcmdpbkJlZm9yZSBtYXJnaW5CZWZvcmUpIHsg
bV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmU7IH0KKyAgICBPcHRpb25hbDxM
YXlvdXQ6OkVzdGltYXRlZE1hcmdpbkJlZm9yZT4gZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgY29u
c3QgeyByZXR1cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIHN0cnVjdCBTdHlsZSB7CiAgICAgICAgIFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7
CkBAIC0xOTQsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEhvcml6b250YWxNYXJn
aW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKICAgICB2b2lkIHNldFZlcnRpY2FsTWFyZ2lu
KExheW91dDo6VmVydGljYWxNYXJnaW4pOwogICAgIHZvaWQgc2V0SG9yaXpvbnRhbE5vbkNvbXB1
dGVkTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgdm9pZCBzZXRFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUoTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUpIHsgbV9lc3RpbWF0ZWRNYXJn
aW5CZWZvcmUgPSBtYXJnaW5CZWZvcmU7IH0KKyAgICB2b2lkIHNldEhhc0NsZWFyYW5jZSgpIHsg
bV9oYXNDbGVhcmFuY2UgPSB0cnVlOyB9CiAKICAgICB2b2lkIHNldEJvcmRlcihMYXlvdXQ6OkVk
Z2VzKTsKICAgICB2b2lkIHNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4pOwpAQCAt
MjAzLDYgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlTWFyZ2luKCk7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlQm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gZmFsc2U7IH0K
ICAgICB2b2lkIGludmFsaWRhdGVQYWRkaW5nKCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IGZhbHNl
OyB9CisgICAgdm9pZCBpbnZhbGlkYXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgeyBtX2VzdGlt
YXRlZE1hcmdpbkJlZm9yZSA9IHsgfTsgfQogCiAgICAgdm9pZCBzZXRIYXNWYWxpZFRvcCgpIHsg
bV9oYXNWYWxpZFRvcCA9IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlkTGVmdCgpIHsgbV9o
YXNWYWxpZExlZnQgPSB0cnVlOyB9CkBAIC0yMjcsNyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICBM
YXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsTWFyZ2luOwogICAgIExheW91dDo6
VmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKICAgICBMYXlvdXQ6Okhvcml6b250YWxN
YXJnaW4gbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW47Ci0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7CisgICAgYm9vbCBtX2hhc0NsZWFyYW5jZTsK
IAogICAgIExheW91dDo6RWRnZXMgbV9ib3JkZXI7CiAgICAgT3B0aW9uYWw8TGF5b3V0OjpFZGdl
cz4gbV9wYWRkaW5nOwpAQCAtMjQzLDYgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hh
c1ZhbGlkUGFkZGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkQ29udGVudEhlaWdo
dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkQ29udGVudFdpZHRoIHsgZmFsc2UgfTsK
KyAgICBPcHRpb25hbDxMYXlvdXQ6OkVzdGltYXRlZE1hcmdpbkJlZm9yZT4gbV9lc3RpbWF0ZWRN
YXJnaW5CZWZvcmU7CiAjZW5kaWYKIH07CiAKQEAgLTUyMCw4ICs1MjYsOCBAQCBpbmxpbmUgdm9p
ZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2luKExheW91dDo6VmVydGljYWxNYXJnaW4gbWFyZ2luKQog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAg
ICAgc2V0SGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbigpOworICAgIGludmFsaWRh
dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKTsKICNlbmRpZgotICAgIEFTU0VSVCghbV9lc3RpbWF0
ZWRNYXJnaW5CZWZvcmUgfHwgKm1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlID09IG1hcmdpbi51c2Vk
VmFsdWVzKCkuYmVmb3JlKTsKICAgICBtX3ZlcnRpY2FsTWFyZ2luID0gbWFyZ2luOwogfQogCkBA
IC01NDksNiArNTU1LDE0IEBAIGlubGluZSB2b2lkIEJveDo6c2V0UGFkZGluZyhPcHRpb25hbDxM
YXlvdXQ6OkVkZ2VzPiBwYWRkaW5nKQogICAgIG1fcGFkZGluZyA9IHBhZGRpbmc7CiB9CiAKK2lu
bGluZSBCb3g6OlJlY3QgQm94OjpyZWN0V2l0aE1hcmdpbigpIGNvbnN0Cit7CisgICAgYXV0byBt
YXJnaW5BZnRlciA9IHRoaXMtPm1hcmdpbkFmdGVyKCk7CisgICAgaWYgKG1fdmVydGljYWxNYXJn
aW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgbV92ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMo
KS0+aXNDb2xsYXBzZWRUaHJvdWdoKQorICAgICAgICBtYXJnaW5BZnRlciA9IDA7CisgICAgcmV0
dXJuIHsgdG9wKCkgLSBtYXJnaW5CZWZvcmUoKSwgbGVmdCgpIC0gbWFyZ2luU3RhcnQoKSwgbWFy
Z2luU3RhcnQoKSArIHdpZHRoKCkgKyBtYXJnaW5FbmQoKSwgbWFyZ2luQmVmb3JlKCkgKyBoZWln
aHQoKSArIG1hcmdpbkFmdGVyIH07Cit9CisKIGlubGluZSBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2lu
IEJveDo6dmVydGljYWxNYXJnaW4oKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVy
dGljYWxNYXJnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuY3BwCmluZGV4IDcxZmMwNjA2NTIyNzgwZGJhZDIzYTk4ZjU5OTRhODUzOGNhMzJl
MzkuLmZjZGI1MDc3ZTZjZDhmNTMzYmNhZmJkMTExYTdjODAyNTQ1NzliODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKQEAgLTE4Mywz
NCArMTgzLDMyIEBAIE9wdGlvbmFsPFBvc2l0aW9uPiBGbG9hdGluZ0NvbnRleHQ6OnZlcnRpY2Fs
UG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0IEJveCYgbGF5CiAgICAgICAgIGlmIChjbGVhcmFu
Y2UgPD0gMCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKKyAgICAgICAgZGlzcGxheUJveC5z
ZXRIYXNDbGVhcmFuY2UoKTsKICAgICAgICAgLy8gQ2xlYXJhbmNlIGluaGliaXRzIG1hcmdpbiBj
b2xsYXBzaW5nLiBMZXQncyByZXNldCB0aGUgcmVsZXZhbnQgYWRqb2luaW5nIG1hcmdpbnMuCiAg
ICAgICAgIGlmIChhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlv
dXNJbkZsb3dTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93RGlz
cGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnByZXZpb3VzSW5G
bG93U2libGluZyk7CisgICAgICAgICAgICAvLyBEb2VzIHRoaXMgYm94IHdpdGggY2xlYXJhbmNl
IGFjdHVhbGx5IGNvbGxhcHNlIGl0cyBtYXJnaW4gYmVmb3JlIHdpdGggdGhlIHByZXZpb3VzIGlu
ZmxvdyBib3gncyBtYXJnaW4gYWZ0ZXI/IAorICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdp
biA9IGRpc3BsYXlCb3gudmVydGljYWxNYXJnaW4oKTsKKyAgICAgICAgICAgIGlmICh2ZXJ0aWNh
bE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSAmJiB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1
ZXMoKS0+YmVmb3JlKSB7CisgICAgICAgICAgICAgICAgLy8gUmVzZXQgcHJldmlvdXMgYm90dG9t
IGFmdGVyIGFuZCBjdXJyZW50IG1hcmdpbiBiZWZvcmUgdG8gbm9uLWNvbGxhcHNpbmcuCisgICAg
ICAgICAgICAgICAgYXV0byBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luID0gcHJldmlvdXNJbkZsb3dE
aXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByZXZp
b3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgcHJldmlvdXNWZXJ0aWNhbE1h
cmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+YWZ0ZXIpOwogCi0gICAgICAgICAgICAvLyBTaW5jZSB0
aGUgcHJldmlvdXMgaW5mbG93IHNpYmxpbmcgaGFzIGFscmVhZHkgYmVlbiBsYWlkIG91dCwgaXRz
IG1hcmdpbiBpcyBjb2xsYXBzZWQgYnkgbm93LgotICAgICAgICAgICAgQVNTRVJUKCFwcmV2aW91
c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbGxh
cHNlZE1hcmdpbiA9IGRpc3BsYXlCb3gubWFyZ2luQmVmb3JlKCk7Ci0KLSAgICAgICAgICAgIC8v
IFJlc2V0IHByZXZpb3VzIGJvdHRvbSBhbmQgY3VycmVudCB0b3AgbWFyZ2lucyB0byBub24tY29s
bGFwc2luZy4KLSAgICAgICAgICAgIGF1dG8gcHJldmlvdXNWZXJ0aWNhbE1hcmdpbiA9IHByZXZp
b3VzSW5GbG93RGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOwotICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgcHJldmlvdXNWZXJ0aWNh
bE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+YWZ0ZXIpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGNvbGxhcHNlZE1hcmdpbiA9ICp2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+YmVm
b3JlOwogICAgICAgICAgICAgICAgIHByZXZpb3VzVmVydGljYWxNYXJnaW4uc2V0Q29sbGFwc2Vk
VmFsdWVzKHsgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+YmVmb3Jl
LCB7IH0gfSk7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnNldFZl
cnRpY2FsTWFyZ2luKHByZXZpb3VzVmVydGljYWxNYXJnaW4pOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIGNvbGxhcHNpbmcgdGhyb3VnaCBoYXMgYW55dGhp
bmcgdG8gZG8gd2l0aCB0aGlzLgotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IGRp
c3BsYXlCb3gudmVydGljYWxNYXJnaW4oKTsKLSAgICAgICAgICAgIGlmICh2ZXJ0aWNhbE1hcmdp
bi5jb2xsYXBzZWRWYWx1ZXMoKSAmJiB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+
YmVmb3JlKSB7CisKICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRW
YWx1ZXMoeyB7IH0sIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5hZnRlciB9KTsK
ICAgICAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTWFy
Z2luKTsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJn
aW4gPSBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSArIGRpc3BsYXlCb3gu
bWFyZ2luQmVmb3JlKCk7Ci0gICAgICAgICAgICBhdXRvIG1hcmdpbk9mZnNldCA9IG5vbkNvbGxh
cHNlZE1hcmdpbiAtIGNvbGxhcHNlZE1hcmdpbjsKLSAgICAgICAgICAgIC8vIE1vdmUgdGhlIGJv
eCB0byB0aGUgcG9zaXRpb24gd2hlcmUgaXQgd291bGQgYmUgd2l0aCBub24tY29sbGFwc2VkIG1h
cmdpbnMuCi0gICAgICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gbWFyZ2luT2Zmc2V0OworICAg
ICAgICAgICAgICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gcHJldmlvdXNWZXJ0aWNhbE1h
cmdpbi51c2VkVmFsdWVzKCkuYWZ0ZXIgKyB2ZXJ0aWNhbE1hcmdpbi51c2VkVmFsdWVzKCkuYmVm
b3JlOworICAgICAgICAgICAgICAgIGF1dG8gbWFyZ2luRGlmZmVyZW5jZSA9IG5vbkNvbGxhcHNl
ZE1hcmdpbiAtIGNvbGxhcHNlZE1hcmdpbjsKKyAgICAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBi
b3ggdG8gdGhlIHBvc2l0aW9uIHdoZXJlIGl0IHdvdWxkIGJlIHdpdGggbm9uLWNvbGxhcHNlZCBt
YXJnaW5zLgorICAgICAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJnaW5EaWZmZXJl
bmNlOwogCi0gICAgICAgICAgICAvLyBIYXZpbmcgbmVnYXRpdmUgY2xlYXJhbmNlIGlzIGFsc28g
bm9ybWFsLiBJdCBqdXN0IG1lYW5zIHRoYXQgdGhlIGJveCB3aXRoIHRoZSBub24tY29sbGFwc2Vk
IG1hcmdpbnMgaXMgbm93IGxvd2VyIHRoYW4gaXQgbmVlZHMgdG8gYmUuCi0gICAgICAgICAgICBj
bGVhcmFuY2UgLT0gbWFyZ2luT2Zmc2V0OworICAgICAgICAgICAgICAgIC8vIEhhdmluZyBuZWdh
dGl2ZSBjbGVhcmFuY2UgaXMgYWxzbyBub3JtYWwuIEl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgYm94
IHdpdGggdGhlIG5vbi1jb2xsYXBzZWQgbWFyZ2lucyBpcyBub3cgbG93ZXIgdGhhbiBpdCBuZWVk
cyB0byBiZS4KKyAgICAgICAgICAgICAgICBjbGVhcmFuY2UgLT0gbWFyZ2luRGlmZmVyZW5jZTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBOb3cgYWRqdXN0IHRoZSBib3gn
cyBwb3NpdGlvbiB3aXRoIHRoZSBjbGVhcmFuY2UuCiAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCAr
PSBjbGVhcmFuY2U7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggOGRjZWUxZTUyNzAwZmFlMGE3MzdjNTAwOGQ1YTg1ZjBmMWE4ZjA2MC4uYzZkMzhk
NmI3Mzc1NzIzOWMzYTU1ZjgxYTM2ODY0ZTZiYWIzYjg1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTEyLTI5
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXVtN
YXJnaW5Db2xsYXBzaW5nXSBBZGQgc3VwcG9ydCBmb3IgcGVjdWxpYXIgY2FzZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExheW91dFJlbG9hZGVk
L21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0OgorCiAyMDE4LTEyLTIyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IHdhcm4g
YWJvdXQgbm9uIGV4aXN0aW5nIHRlc3RzIHdoZW4gcGFyc2luZyBleHBlY3RhdGlvbnMKZGlmZiAt
LWdpdCBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0IGIv
VG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQKaW5kZXggZmY1
ZWIzODE1NGI3MmVmOGM4ODE3ZmIyOTQ1ZjM1MGViYjVkMTAxMi4uMjI1Yjc0NzVkYTgzYWE1Y2Fh
ZTE5MWVhNTkxYWE2MjUxZTY5Y2Y2OCAxMDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQv
bWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQKKysrIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlz
Yy9MRkMtcGFzc2luZy10ZXN0cy50eHQKQEAgLTQsMjMgKzQsNjYgQEAgZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Fic29sdXRlLWxlZnQtYXV0by5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJz
b2x1dGUtbGVmdC1yaWdodC10b3AtYm90dG9tLWF1dG8uaHRtbAogZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Fic29sdXRlLW5lc3RlZDIuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRl
LW5lc3RlZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWlu
LW1heC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9u
LW1pbi1tYXgtd2lkdGguaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0
aW9uLXdoZW4tY29udGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhlLWZvcm1hdHRpbmctY29udGV4
dDIuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLXdoZW4tY29u
dGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhlLWZvcm1hdHRpbmctY29udGV4dC5odG1sCiBmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2st
b25seS9hYnNvbHV0ZS13aWR0aC1zaHJpbmstdG8tZml0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2st
b25seS9hYnNvbHV0ZS13aWR0aC1zdHJldGNoLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9h
YnNvbHV0ZS13aXRoLXN0YXRpYy1ibG9jay1wb3NpdGlvbi1uZXN0ZWQuaHRtbAorZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2FsbW9zdC1pbnRydWRpbmctbGVmdC1mbG9hdC1zaW1wbGUuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1xdWly
azIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1s
LWhlaWdodC1xdWlyay5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0
aC1ub24tYXV0by1odG1sLWhlaWdodC1xdWlyazIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2JvZHktaGVpZ2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAogZmFzdC9i
bG9jay9ibG9jay1vbmx5L2JvcmRlci1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2NvbGxhcHNlZC1tYXJnaW4td2l0aC1taW4taGVpZ2h0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2st
b25seS9maXhlZC1uZXN0ZWQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWFuZC1z
aWJsaW5ncy13aXRoLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2
b2lkZXItbXVsdGlwbGUtcm9vdHMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2
b2lkZXItc2ltcGxlLWxlZnQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2b2lk
ZXItc2ltcGxlLXJpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVy
LXdpdGgtbWFyZ2lucy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbGVmdC13aGVu
LWNvbnRhaW5lci1oYXMtcGFkZGluZy1tYXJnaW4uaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0LW1pbi1tYXgtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1t
aW4tbWF4LXdpZHRoLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1hbmQtbmV4
dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJnaW4td2l0aC1uby1ib3JkZXIuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1h
cmdpbi5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWNsZWFyLWJvdGgt
c2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtY2xlYXItcmln
aHQtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtbGVmdC1h
bmQtcmlnaHQtbXVsdGlwbGUtd2l0aC10b3Atb2Zmc2V0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdGluZy1ib3gtbGVmdC1hbmQtcmlnaHQtbXVsdGlwbGUuaHRtbAorZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLWNsZWFyLXNpYmxpbmdzLmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1jbGVhci1zaW1wbGUuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLW5ldy1mb3JtYXR0aW5nLWNvbnRleHQu
aHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLXJlbGF0aXZlLXBv
c2l0aW9uZWQtc2libGluZy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVm
dC1hbmQtcmlnaHQtd2l0aC1jbGVhcmFuY2UuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0aW5nLWxlZnQtcmlnaHQtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dGluZy1sZWZ0LXJpZ2h0LXdpdGgtYWxsLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0aW5nLWxlZnRzLWFuZC1yaWdodHMtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1pbi1ib2R5Lmh0bWwKK2Zhc3QvYmxvY2sv
YmxvY2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1tdWx0aXBsZS1saW5lcy5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLXdpdGgtbmV3LWJsb2NrLWZvcm1hdHRpbmctY29udGV4
dC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1pbi1tYXgtaGVpZ2h0Lmh0bWwK
K2Zhc3QvYmxvY2svYmxvY2stb25seS9pbmZsb3ctbWluLW1heC13aWR0aC5odG1sCiBmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLWJvdHRvbS1ib3R0b20uaHRtbAogZmFzdC9i
bG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1ib3R0b20tbmVzdGVkLmh0bWwKK2Zhc3Qv
YmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtZmlyc3QtbGFzdC1hcmUtZmxvYXRpbmcu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1zaW1wbGUuaHRtbAog
ZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS10b3AtbmVzdGVkLmh0bWwKIGZh
c3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2hlbi1jaGlsZC1oYXMtcGFkZGlu
Zy1ib3JkZXIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aXRo
LWJsb2NrLWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21h
cmdpbi1jb2xsYXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sCitmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtY2xlYXJhbmNlLmh0bWwKIGZhc3Qv
YmxvY2svYmxvY2stb25seS9tYXJnaW4tbGVmdC1yaWdodC1zaXppbmctb3V0LW9mLWZsb3cuaHRt
bAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1sZWZ0LXJpZ2h0LXNpemluZy5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXByb3BhZ2F0aW9uLXNpbXBsZS1jb250ZW50LWhl
aWdodC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXNpYmxpbmctY29sbGFwc2Ut
cHJvcGFnYXRlZC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXNpbXBsZS5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWluLW1heC1oZWlnaHQtcGVyY2VudGFnZS5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbmVnYXRpdmUtbWFyZ2luLXNpbXBsZS5odG1sCiBmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvcGFkZGluZy1uZXN0ZWQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5
L3BhZGRpbmctc2ltcGxlLmh0bWwKQEAgLTMxLDgwICs3NCw0OSBAQCBmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvcmVsYXRpdmUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10
aGUtZm9ybQogZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXJpZ2h0Lmh0bWwKIGZhc3Qv
YmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1zaWJsaW5ncy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvcmVsYXRpdmUtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0
ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90LWluLXRoZS1mb3JtYXR0aW5n
LWNvbnRleHQyLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0
aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L21h
cmdpbi1jb2xsYXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAotZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0LWxlZnQtd2hlbi1jb250YWluZXItaGFzLXBhZGRpbmctbWFy
Z2luLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtbGVmdC1hbmQtcmln
aHQtbXVsdGlwbGUtd2l0aC10b3Atb2Zmc2V0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1ib3gtbGVmdC1hbmQtcmlnaHQtbXVsdGlwbGUuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWJveC1yaWdodC1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0aW5nLWJveC13aXRoLW5ldy1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAotZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLXJlbGF0aXZlLXBvc2l0aW9uZWQtc2li
bGluZy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC1zaW1w
bGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQtcmlnaHQtd2l0aC1h
bGwtbWFyZ2lucy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdHMtYW5k
LXJpZ2h0cy1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRp
cGxlLWxlZnRzLWluLWJvZHkuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11
bHRpcGxlLWxlZnRzLW11bHRpcGxlLWxpbmVzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1tdWx0aXBsZS1sZWZ0cy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRp
bmctYW5kLW5leHQtcHJldmlvdXMtaW5mbG93LXdpdGgtbWFyZ2luLmh0bWwKLWZhc3QvYmxvY2sv
YmxvY2stb25seS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJnaW4t
d2l0aC1uby1ib3JkZXIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQt
YW5kLXJpZ2h0LXdpdGgtY2xlYXJhbmNlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dC1hbmQtc2libGluZ3Mtd2l0aC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9t
YXJnaW4tY29sbGFwc2Utd2l0aC1jbGVhcmFuY2UuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0LWF2b2lkZXItc2ltcGxlLWxlZnQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0LWF2b2lkZXItc2ltcGxlLXJpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dC1hdm9pZGVyLW11bHRpcGxlLXJvb3RzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dC1hdm9pZGVyLXdpdGgtbWFyZ2lucy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93
LW1pbi1tYXgtd2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0
aW9uLW1pbi1tYXgtd2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LW1pbi1t
YXgtd2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4tbWF4LWhlaWdo
dC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWluLW1heC1o
ZWlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LW1pbi1tYXgtaGVpZ2h0Lmh0
bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9taW4tbWF4LWhlaWdodC1wZXJjZW50YWdlLmh0bWwK
LWZhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0bWwtaGVp
Z2h0LXF1aXJrLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5v
bi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrMi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9k
eS1oZWlnaHQtd2l0aC1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrLmh0bWwKLWZhc3QvYmxvY2svYmxv
Y2stb25seS9ib2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKLWZh
c3QvYmxvY2svYmxvY2stb25seS9jb2xsYXBzZWQtbWFyZ2luLXdpdGgtbWluLWhlaWdodC5odG1s
CitmYXN0L2Jsb2NrL2Jhc2ljLzAwMi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwMy5odG1sCitm
YXN0L2Jsb2NrL2Jhc2ljLzAwNi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwNy5odG1sCitmYXN0
L2Jsb2NrL2Jhc2ljLzAwOC5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwOS5odG1sCitmYXN0L2Js
b2NrL2Jhc2ljLzAxMi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljL2NoaWxkLWJsb2NrLWxldmVsLWJv
eC13aXRoLWhlaWdodC1wZXJjZW50Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvaGVpZ2h0LXBlcmNl
bnRhZ2Utc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0aC1m
bG9hdGluZy1pbWFnZS5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1jb250ZW50LXdpdGgt
ZmxvYXRpbmctaW1hZ2VzMi5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0
MS5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czIuaHRtbAotZmFzdC9p
bmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdHMzLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1p
bmxpbmUtYmxvY2suaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5saW5l
LWJsb2NrLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtaW5mbG93LXBvc2l0aW9uZWQu
aHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRh
bnQuaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2Nl
bmRhbnQyLmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtcGFkZGluZy1sZWZ0
LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtYm9yZGVyLWxlZnQt
cmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1tYXJnaW4tbGVmdC1y
aWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC1hbmQtbmVzdGVkLWZvcm1hdHRp
bmctcm9vdC13aXRoLW1hcmdpbi1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1j
b250ZW50LXdpdGgtaW1hZ2Utc2ltcGxlLmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50
LXdpdGgtZmxvYXQtYW5kLW1hcmdpbi5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljL2hlaWdodC1wZXJj
ZW50YWdlLXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljL2NoaWxkLWJsb2NrLWxldmVsLWJv
eC13aXRoLWhlaWdodC1wZXJjZW50Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvcGVyY2VudC1oZWln
aHQtaW5zaWRlLWFub255bW91cy1ibG9jay5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL3F1aXJrLW1v
ZGUtcGVyY2VudC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9xdWlyay1wZXJjZW50LWhl
aWdodC1ncmFuZGNoaWxkLmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDAxLmh0bWwKIGZhc3QvYmxv
Y2svZmxvYXQvMDA3Lmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDA4Lmh0bWwKIGZhc3QvYmxvY2sv
ZmxvYXQvMDA5Lmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDEzLmh0bWwKIGZhc3QvYmxvY2svZmxv
YXQvMDE5Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDAyLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMv
MDAzLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA2Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA3
Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA4Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA5Lmh0
bWwKLWZhc3QvYmxvY2svYmFzaWMvMDEyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvbmVnYXRpdmUt
bWFyZ2luLWNsZWFyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvb3ZlcmhhbmdpbmctYWZ0ZXItaGVp
Z2h0LWRlY3JlYXNlLW9mZnNldHMuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVyaGFuZ2luZy1h
ZnRlci1oZWlnaHQtZGVjcmVhc2UuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVybGFwcGluZy1m
bG9hdHMtd2l0aC1vdmVyZmxvdy1oaWRkZW4uaHRtbAorZmFzdC9ibG9jay9mbG9hdC9wcmV2aW91
cy1zaWJsaW5nLWFic3Bvcy0wMDIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9yZWxhdGl2ZS1wYWlu
dGVkLXR3aWNlLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvYXZvaWRhbmNlLXJ0bC5odG1sCitmYXN0
L2Jsb2NrL2Zsb2F0L2JyLXdpdGgtY2xlYXIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9jbGFtcGVk
LXJpZ2h0LWZsb2F0Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXQtb24temVyby1oZWlnaHQt
bGluZS5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LW92ZXJoYW5ncy1yb290Lmh0bWwKK2Zh
c3QvYmxvY2svZmxvYXQvZmxvYXQtd2l0aC1hbm9ueW1vdXMtcHJldmlvdXMtc2libGluZy5odG1s
CitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0cy1ub3QtY2xlYXJlZC1jcmFzaC5odG1sCiBmYXN0L2Js
b2NrL21hcmdpbi1jb2xsYXBzZS8wMDIuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2Uv
MDAzLmh0bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyNi5odG1sCiBmYXN0L2Jsb2Nr
L21hcmdpbi1jb2xsYXBzZS8wMjcuaHRtbAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI4
Lmh0bWwKK2Zhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyOS5odG1sCitmYXN0L2Jsb2NrL21h
cmdpbi1jb2xsYXBzZS8wMzUuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDM5Lmh0
bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzA0MC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0
aW9uaW5nLzAwMy5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzAwNC5odG1sCiBmYXN0L2Js
b2NrL3Bvc2l0aW9uaW5nLzAwNS5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzAwNi5odG1s
CkBAIC0xNDUsOCArMTU3LDI5IEBAIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDQ2Lmh0bWwKIGZh
c3QvYmxvY2svcG9zaXRpb25pbmcvMDQ5Lmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDUy
Lmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDU0Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRp
b25pbmcvMDYwLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvYWJzb2x1dGUtcG9zaXRpb25p
bmctbm8tc2Nyb2xsYmFyLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY2hhbmdlLWNvbnRh
aW5pbmctYmxvY2stZm9yLWFic29sdXRlLXBvc2l0aW9uZWQuaHRtbAorZmFzdC9ibG9jay9wb3Np
dGlvbmluZy9jaGFuZ2UtY29udGFpbmluZy1ibG9jay1mb3ItZml4ZWQtcG9zaXRpb25lZC5odG1s
CitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2NvbXBsZXgtcG9zaXRpb25lZC1tb3ZlbWVudC5odG1s
CitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2ZpeGVkLXBvc2l0aW9uLWRldGFjaGVkLWZyYW1lLmh0
bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9zaXRpb24tc3RhY2tpbmctY29udGV4
dDIuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1wb3NpdGlvbi1zdGFja2luZy1j
b250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvaGlkaW5nLWluc2lkZS1yZWxwb3Np
dGlvbmVkLWlubGluZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2luc2VydC1wb3NpdGlv
bmVkLWluLWFub255bW91cy1jcmFzaC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2xlZnRt
YXJnaW4tdG9wbWFyZ2luLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvbmVnYXRpdmUtcmVs
LXBvc2l0aW9uLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvYWJzLWluc2lkZS1pbmxpbmUt
cmVsLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvcHJlZi13aWR0aC1jaGFuZ2UuaHRtbAor
ZmFzdC9ibG9jay9wb3NpdGlvbmluZy9yZWxhdGl2ZS1vdmVyZmxvdy1yZXBsYWNlZC1mbG9hdC5o
dG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3N0YXRpYy1pbmxpbmUtcG9zaXRpb24tZHluYW1p
Yy5odG1sCiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL2Jhc2ljLWZsb2F0LWludHJ1c2lvbi5o
dG1sCiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL2NyYXNoLW9uLWZpcnN0LWxpbmUtY2hhbmdl
Lmh0bWwKK2Zhc3QvYmxvY2svbGluZWJveGNvbnRhaW4vcmVwbGFjZWQuaHRtbAorZmFzdC9ibG9j
ay9jb2xsYXBzZS1hbm9uLWJsb2NrLXdpdGgtZmxvYXQtc2libGluZ3Mtb25seS5odG1sCitmYXN0
L2Jsb2NrL2NyYXNoLXdoZW4tYW5vbnltb3VzLWJsb2Nrcy1hcmUtbWVyZ2VkLXdpdGgtc2ltcGxl
LWxpbmUtbGF5b3V0Lmh0bWwKK2Zhc3QvYmxvY2svY3Jhc2gtd2hlbi1zdWJ0cmVlLWlzLXN0aWxs
LWF0dGFjaGVkLmh0bWwKK2Zhc3QvYmxvY2svZ2VvbWV0cnktbWFwLWFzc2VydGlvbi13aXRoLXRh
bGwtY29udGVudC5odG1sCiBmYXN0L2JvcmRlcnMvMHB4LWJvcmRlcnMtbm8tbGluZS1oZWlnaHQu
aHRtbAogZmFzdC9ib3JkZXJzLzBweC1ib3JkZXJzLmh0bWwKIGZhc3QvYm9yZGVycy9ibG9jay1t
YXNrLW92ZXJsYXktaW1hZ2Utb3V0c2V0Lmh0bWwKQEAgLTE1NiwxMSArMTg5LDggQEAgZmFzdC9i
b3JkZXJzL2JvcmRlci1pbWFnZS1zY2FsZWQtZ3JhZGllbnQuaHRtbAogZmFzdC9ib3JkZXJzL2Jv
cmRlci1pbWFnZS1zbGljZS1vbWlzc2lvbi5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLWxlZnQt
cmlnaHQtc2FtZS1ib3R0b20tZGlmZmVyZW50LWNvbG9yLmh0bWwKIGZhc3QvYm9yZGVycy9ib3Jk
ZXItcGFpbnRpbmctZGFzaGVkLWF0LWFsbC5odG1sCi1mYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50
aW5nLWRhc2hlZC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdHRlZC1hdC1h
bGwuaHRtbAotZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kb3R0ZWQuaHRtbAogZmFzdC9i
b3JkZXJzL2JvcmRlci1wYWludGluZy1kb3VibGUtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVycy9i
b3JkZXItcGFpbnRpbmctZG91YmxlLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmct
Z3Jvb3ZlLWF0LWFsbC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWluc2V0LWF0
LWFsbC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWluc2V0Lmh0bWwKQEAgLTE2
OSw0ICsxOTksODYgQEAgZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1vdXRzZXQuaHRtbAog
ZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1yaWRnZS1hdC1hbGwuaHRtbAogZmFzdC9ib3Jk
ZXJzL2JvcmRlci1wYWludGluZy1zb2xpZC1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRl
ci1wYWludGluZy1zb2xpZC5odG1sCi1mYXN0L2lubGluZS1ibG9jay8wMDQuaHRtbAorZmFzdC9i
b3JkZXJzL2JvcmRlci1yYWRpdXMtaW5zZXQtb3V0c2V0Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3Jk
ZXItcmFkaXVzLW9uLWh0bWwuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtb24tc3Vi
cGl4ZWwtcG9zaXRpb24tbm9uLWhpZHBpLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVz
LXBlcmNlbnQuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtdmFsaWQtYm9yZGVyLWNs
aXBwaW5nLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpZGUtYm9yZGVyLTAxLmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpdGgtYm94LXNoYWRvdy0wMS5odG1sCitm
YXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy13aXRoLWJveC1zaGFkb3cuaHRtbAorZmFzdC9ib3Jk
ZXJzL2JvcmRlci1zaGFkb3ctbGFyZ2UtcmFkaXVzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJS
YWRpdXNBbGxTdHlsZXNBbGxDb3JuZXJzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNB
cmNzMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAxLmh0bWwKK2Zhc3Qv
Ym9yZGVycy9ib3JkZXJSYWRpdXNEYXNoZWQwMi5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzRGFzaGVkMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAxLmh0bWwK
K2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3R0ZWQwMi5odG1sCitmYXN0L2JvcmRlcnMvYm9y
ZGVyUmFkaXVzRG90dGVkMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTAx
Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwMi5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyUmFkaXVzRG91YmxlMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0dy
b292ZTAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNHcm9vdmUwMi5odG1sCitmYXN0
L2JvcmRlcnMvYm9yZGVyUmFkaXVzSW5zZXQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzSW52YWxpZENvbG9yLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNPdXRzZXQwMS5o
dG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzUmlkZ2UwMS5odG1sCitmYXN0L2JvcmRlcnMv
Ym9yZGVyUmFkaXVzU29saWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzU29saWQw
Mi5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzU29saWQwMy5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyUmFkaXVzU29saWQwNC5odG1sCitmYXN0L2JvcmRlcnMvZGFzaGVkLWJvcmRlci1v
bi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvZG90dGVkLWJvcmRlci1vbi1z
dWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvZG91YmxlLTFweC1ib3JkZXItYXNz
ZXJ0Lmh0bWwKK2Zhc3QvYm9yZGVycy9lbXB0eS1kcmF3cmVjdC1hc3NlcnQtYWZ0ZXItcGl4ZWxz
bmFwLmh0bWwKK2Zhc3QvYm9yZGVycy9lbXB0eS1vdXRsaW5lLWJvcmRlci1hc3NlcnQuaHRtbAor
ZmFzdC9ib3JkZXJzL2hpZHBpLTN4LWlucHV0LWhhaXJsaW5lLWJvcmRlci5odG1sCitmYXN0L2Jv
cmRlcnMvaGlkcGktYm9yZGVyLWNsaXBwaW5nLXJpZ2h0LWFmdGVyLW1vdmUuaHRtbAorZmFzdC9i
b3JkZXJzL2hpZHBpLWJvcmRlci1wYWludGluZy1ncm9vdmUuaHRtbAorZmFzdC9ib3JkZXJzL2hp
ZHBpLWJvcmRlci1wYWludGluZy1yaWRnZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVy
LXJhZGl1cy1vdXRlci1ib3JkZXItZ29lcy1yZWN0YW5nbGUuaHRtbAorZmFzdC9ib3JkZXJzL2hp
ZHBpLWJvcmRlci1yYWRpdXMtd2l0aC1zdWJwaXhlbC1tYXJnaW4tbm90LXJlbmRlcmFibGUuaHRt
bAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRlci13aWR0aC1mbG9vcmluZy5odG1sCitmYXN0L2Jv
cmRlcnMvaGlkcGktb3V0bGluZS1oYWlybGluZS1wYWludGluZy5odG1sCitmYXN0L2JvcmRlcnMv
aGlkcGktb3V0bGluZS1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvaGlk
cGktcm91bmRlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3JkZXJz
L2hpZHBpLXNpbXBsZS1oYWlybGluZS1ib3JkZXItcGFpbnRpbmcuaHRtbAorZmFzdC9ib3JkZXJz
L21peGVkLWJvcmRlci1zdHlsZTIuaHRtbAorZmFzdC9ib3JkZXJzL25lZ2F0aXZlLWJvcmRlci13
aWR0aC5odG1sCitmYXN0L2JvcmRlcnMvb3V0bGluZS1vZmZzZXQtbWluLWFzc2VydC5odG1sCitm
YXN0L2JvcmRlcnMvb3V0bGluZS1vZmZzZXQtb3ZlcmZsb3cuaHRtbAorZmFzdC9ib3JkZXJzL3dl
YmtpdC1ib3JkZXItcmFkaXVzLmh0bWwKK2Zhc3QvaW5saW5lL2Fic29sdXRlLXBvc2l0aW9uZWQt
YmxvY2staW4tY2VudHJlZC1ibG9jay5odG1sCitmYXN0L2lubGluZS9hYnNvbHV0ZS1wb3NpdGlv
bmVkLWlubGluZS1pbi1jZW50cmVkLWJsb2NrLmh0bWwKK2Zhc3QvaW5saW5lL2Fub255bW91cy1i
bG9jay13aXRoLWVtcHR5LWlubGluZS5odG1sCitmYXN0L2lubGluZS9oaWRwaS1vdXRsaW5lLWF1
dG8tbmVnYXRpdmUtb2Zmc2V0LXdpdGgtYm9yZGVyLXJhZGl1cy5odG1sCitmYXN0L2lubGluZS9o
aWRwaS1vdXRsaW5lLWF1dG8td2l0aC1mcmFjdGlvbmFsLXJhZGl1cy5odG1sCitmYXN0L2lubGlu
ZS9oaWRwaS1vdXRsaW5lLWF1dG8td2l0aC1vbmUtZm9jdXNyaW5nLXJlY3QuaHRtbAorZmFzdC9p
bmxpbmUvaGlkcGktcGl4ZWwtZ2FwLWJldHdlZW4tYWRqYWNlbnQtc2VsZWN0aW9uLWlubGluZXMu
aHRtbAorZmFzdC9pbmxpbmUvaGlkcGktc2VsZWN0LWlubGluZS1vbi1zdWJwaXhlbC1wb3NpdGlv
bi5odG1sCitmYXN0L2lubGluZS9oaWRwaS1zZWxlY3Rpb24tZ2FwLW9uLXN1YnBpeGVsLXBvc2l0
aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdGlvbi1nYXAtb3ZlcmxhcHMtaW5saW5l
LXNlbGVjdGlvbi5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtYm9keS13aXRoLXNjcm9sbGJhci1j
cmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY2hpbGQtaGVpZ2h0LXdpZHRoLWNhbGMtY3Jh
c2guaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1ib3JkZXItbGVmdC1yaWdo
dC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0LWFuZC1tYXJnaW4u
aHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1pbWFnZS1zaW1wbGUuaHRtbAor
ZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1tYXJnaW4tbGVmdC1yaWdodC5odG1sCitm
YXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLXBhZGRpbmctbGVmdC1yaWdodC5odG1sCitm
YXN0L2lubGluZS9pbmxpbmUtbWFycXVlZS1jcmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUt
cGFkZGluZy1kaXNhYmxlcy10ZXh0LXF1aXJrLmh0bWwKK2Zhc3QvaW5saW5lL25ldy1mbG9hdC1u
ZWVkcy1sYXlvdXQtd2hlbi1saW5lLWlzLWRpcnR5Lmh0bWwKK2Zhc3QvaW5saW5lL3BlcmNlbnRh
Z2UtbWFyZ2lucy5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWJsb2NrLmh0bWwKK2Zh
c3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtaW5mbG93LXBvc2l0aW9uZWQuaHRtbAorZmFzdC9pbmxp
bmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQyLmh0bWwKK2Zhc3Qv
aW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50Lmh0bWwKK2Zh
c3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXQxLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBs
ZS1pbnRydWRpbmctZmxvYXRzMi5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZs
b2F0czMuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWxpbmUtbGF5b3V0LTE2Yml0LWNvbnRlbnQu
aHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5saW5lLWJsb2NrLmh0bWwK
K2Zhc3QvaW5saW5lL3NraXBwZWQtd2hpdGVzcGFjZS1ib3VuZGluZ0JveC5odG1sCitmYXN0L2lu
bGluZS9za2lwcGVkLXdoaXRlc3BhY2UtY2xpZW50LXJlY3QuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358144</attachid>
            <date>2018-12-29 20:06:06 -0800</date>
            <delta_ts>2019-01-05 21:21:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20181229200559.patch</filename>
            <type>text/plain</type>
            <size>113997</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVjZmVlMWQyYzlmNjE5
N2RmNzU4MjA5NjQwMTM1Yzg0MjM4MjhmMi4uZjJlZmQ2MDk0NTBkYjRlMmUzMGYxMDVmZGQ4NTNk
ZGU3NzcyNTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxOC0xMi0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNvbWUgb2YgdGhl
IG1vcmUgcGVjdWxpYXIgY2FzZXMgbGlrZSBtYXJnaW4gY29sbHBhc2luZyB0aHJvdWdoIG11bHRp
cGxlIGJveGVzIGV0Yy4KKyAgICAgICAgQWRkIH4xMDAgbmV3IHBhc3NpbmcgY2FzZXMuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRp
bmdTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkTWluSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBz
ZWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0
VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAq
IGxheW91dC9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRT
dGF0ZTo6aGFzRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTWFyZ2lu
VHlwZXMuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5n
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2Fs
UG9zaXRpb25Gb3JGbG9hdENsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVk
VmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdo
dEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0
aW1hdGVkTWFyZ2luQWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRl
OjpzZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZl
cnRpY2FsTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nU3RhdGU6OnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdTdGF0ZTo6Y2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVm
b3JlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc0JvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpoYXNCb3JkZXJCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3Jk
ZXJBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmdCZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNQYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpl
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhQYXJlbnRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
Z01hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGls
ZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJl
Zm9yZVdpdGhDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdp
bkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpt
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2lu
c0NvbGxhcHNlVGhyb3VnaCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkUG9z
aXRpdmVBbmROZWdhdGl2ZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1hcmdp
blZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6TWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2
ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdh
dGl2ZU1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnZlcnRpY2FsKToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKiBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpoYXNDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
ZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpzZXRIYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjppbnZhbGlkYXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpyZWN0V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0Nv
bnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5n
U3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVGaW5hbFJ1bnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cG9z
dFByb2Nlc3NJbmxpbmVSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5saW5lRm9ybWF0dGluZ1N0YXRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKToKKwogMjAxOC0xMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0hhcmZCdXp6XSBXaWR0aCBub3QgY29ycmVjdGx5IHJlcG9ydGVk
IGFzIDAgZm9yIHplcm8gZm9udCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGU3ZDkzNGFkMjdmMWJm
YTkxMjMxZTFkODZkZjBiNzQxOWQ4MzhiOTAuLmU2ZmIyODRjYWY3N2UxZWJmZmZhNzVkMGJjODU4
ZDgzY2IxY2Q3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBsYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKIGxheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCi1sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCitsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlvbi5jcHAK
IGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAogbGF5b3V0L2Zsb2F0cy9GbG9hdEF2
b2lkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZGU0NTJjMDYyYTZiYTI2ZjQ3MzI3MDc3ZmMxZjk5YWNmY2ZkOGNlYi4u
YmQzZjc3MDg3Yjg5YWIyOTdkZWRjNmI5NmY4MzkyMGY5MjRhYmIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg4Miw3ICs1
ODgyLDcgQEAKIAkJMTE1Q0ZBODEyMDhCOEVEQTAwMUU2OTkxIC8qIEZsb2F0aW5nU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRpbmdTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTExNUNGQTg0MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTExNUNGQTg1MjA4QjkwNjYwMDFFNjk5MSAvKiBGbG9hdGluZ0NvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMTE1Q0ZBODkyMDhCOTIxQTAwMUU2OTkxIC8qIEJsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBC
bG9ja01hcmdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9ja01hcmdpbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNGQTk1MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlv
dXRCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTExNUNGQTk2MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGF5b3V0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTE1Rjc4MDUyMDlDQkNCRDAwNzM5QzEzIC8qIEludmFsaWRhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjEw
LDcgKzE2MjEwLDcgQEAKIAkJCQkxMTVDRkE3ODIwOEI4RDlEMDAxRTY5OTEgLyogQmxvY2tGb3Jt
YXR0aW5nU3RhdGUuaCAqLywKIAkJCQkxMTIzQUZEQTIwOUFCQjIwMDA3MzZBQ0MgLyogQmxvY2tJ
bnZhbGlkYXRpb24uY3BwICovLAogCQkJCTExMjNBRkQ5MjA5QUJCMjAwMDczNkFDQyAvKiBCbG9j
a0ludmFsaWRhdGlvbi5oICovLAotCQkJCTExNUNGQTg5MjA4QjkyMUEwMDFFNjk5MSAvKiBCbG9j
a01hcmdpbkNvbGxhcHNlLmNwcCAqLywKKwkJCQkxMTVDRkE4OTIwOEI5MjFBMDAxRTY5OTEgLyog
QmxvY2tNYXJnaW4uY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBibG9ja2Zvcm1hdHRpbmc7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggYjRmNDRhODI1ZWYzYWE1OGFkMmIzNmEw
ZTJhZDIxNDc1ZjJlODdkNS4uZmExZDBhODBiYzA5MmMxOTA5YTE2MzM2MWE0MjE5NzZiZmNkOTBm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCkBAIC01MSw3ICs1MSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6OlF1
aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4CiAgICAgICAg
IGlmIChjb250YWluaW5nQmxvY2stPmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNE
b2N1bWVudEJveCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3Rh
dGUuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKTsKIAotICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29udGFp
bmluZ0Jsb2NrKTsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6
Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAqY29u
dGFpbmluZ0Jsb2NrKTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxQYWRkaW5nID0gZGlzcGxh
eUJveC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgp
LnZhbHVlT3IoMCk7CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQm9yZGVyID0gZGlzcGxheUJv
eC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3guYm9yZGVyQm90dG9tKCk7CiAgICAgICAgICAgICBi
b2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgKz0gdmVydGljYWxN
YXJnaW4uYmVmb3JlICsgdmVydGljYWxNYXJnaW4uYWZ0ZXIgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2
ZXJ0aWNhbEJvcmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggMDQ3NzVh
YjJiYjY2OGZjMjI2YTNmYzEzMjQwNDJkYmNmMTJmYjMzZi4uMjg0NDZjZjlhZGQzZTc5ODY5ODYx
YzljYzc5YzY5ODViY2Q5ZjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAg
LTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5n
U3RhdGVGb3JCb3goY29uc3QgQm94JikgY29uc3Q7CiAgICAgRm9ybWF0dGluZ1N0YXRlJiBlc3Rh
Ymxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdDsK
KyAgICBib29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBj
b25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290
KTsgfQogICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KTsKIAogICAgIERpc3Bs
YXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCmluZGV4IDg1ZmZlZDY1OTY4Njc4OTNm
N2Q2ZTdkZjU4NjUyNGQ2ODdjMzE0OTcuLjQ0OWFiNGY2MDE5ZmEyNDkwZDNhYmRmZjQ1NmYxNzM2
NTA2MTgyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBAIC0zOSwxMCArMzks
MTEgQEAgc3RydWN0IFZlcnRpY2FsTWFyZ2luIHsKICAgICB9OwogICAgIENvbXB1dGVkVmFsdWVz
IHVzZWRWYWx1ZXMoKSBjb25zdDsKICAgICBDb21wdXRlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1
ZXMoKSBjb25zdCB7IHJldHVybiBtX25vbkNvbGxhcHNlZDsgfQotICAgIAorCiAgICAgc3RydWN0
IENvbGxhcHNlZFZhbHVlcyB7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsK
ICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYWZ0ZXI7CisgICAgICAgIGJvb2wgaXNDb2xs
YXBzZWRUaHJvdWdoIHsgZmFsc2UgfTsKICAgICB9OwogICAgIE9wdGlvbmFsPENvbGxhcHNlZFZh
bHVlcz4gY29sbGFwc2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWQ7IH0KICAg
ICB2b2lkIHNldENvbGxhcHNlZFZhbHVlcyhDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVz
KSB7IG1fY29sbGFwc2VkID0gY29sbGFwc2VkVmFsdWVzOyB9CkBAIC01MSw2ICs1Miw3IEBAIHN0
cnVjdCBWZXJ0aWNhbE1hcmdpbiB7CiAKICAgICBWZXJ0aWNhbE1hcmdpbigpID0gZGVmYXVsdDsK
ICAgICB+VmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgQ29tcHV0
ZWRWYWx1ZXMgbV9ub25Db2xsYXBzZWQ7CiAgICAgT3B0aW9uYWw8Q29sbGFwc2VkVmFsdWVzPiBt
X2NvbGxhcHNlZDsKQEAgLTcwLDYgKzcyLDEwIEBAIHN0cnVjdCBQb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW4gewogICAgIFZhbHVlcyBhZnRlcjsKIH07CiAKK3N0cnVjdCBFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUgeworICAgIExheW91dFVuaXQgY29tcHV0ZWRWYWx1ZTsKK307CisKIGlu
bGluZSBWZXJ0aWNhbE1hcmdpbjo6VmVydGljYWxNYXJnaW4oVmVydGljYWxNYXJnaW46OkNvbXB1
dGVkVmFsdWVzIG5vbkNvbGxhcHNlZCwgT3B0aW9uYWw8VmVydGljYWxNYXJnaW46OkNvbGxhcHNl
ZFZhbHVlcz4gY29sbGFwc2VkKQogICAgIDogbV9ub25Db2xsYXBzZWQobm9uQ29sbGFwc2VkKQog
ICAgICwgbV9jb2xsYXBzZWQoY29sbGFwc2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggNDI5YzBhOTgxMWE0OGRiZjQ1NTFhNGJlOTIxMzBmMjUwMTQzYTM4Yi4uOTM0YmM3
OGIwMGM0Y2IyNTQ3NzUxMGIyYmJmNjc2NzJlMGRhYzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0xODYsMTIgKzE4NiwxNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QK
IAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVm
b3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewotICAgIGF1dG8mIGxheW91dFN0YXRl
ID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKLSAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9
IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7
CisgICAgYXV0byBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBNYXJnaW46OmVzdGltYXRlZE1hcmdp
bkJlZm9yZShsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gpOworICAgIGJsb2NrRm9ybWF0dGluZ1N0
YXRlKCkuc2V0SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCk7CiAKLSAgICBhdXRv
JiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRC
b3gpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgZGlzcGxheUJv
eC5zZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTsKLSAgICBk
aXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGVzdGltYXRlZE1hcmdpbkJlZm9yZSk7CisjZW5kaWYK
KyAgICBkaXNwbGF5Qm94LnNldFRvcChhZGp1c3RlZFZlcnRpY2FsUG9zaXRpb25BZnRlck1hcmdp
bkNvbGxhcHNpbmcobGF5b3V0Qm94LCBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUuY29tcHV0ZWRWYWx1
ZSkpOwogfQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5CZWZvcmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CkBAIC0y
MDgsMTIgKzIxMCwxMSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JgogICAgIC8vIFNvIHdoZW4g
d2UgZ2V0IHRvIHRoZSBwb2ludCB3aGVyZSB3ZSBpbnRlcnNlY3QgdGhlIGJveCB3aXRoIHRoZSBm
bG9hdCB0byBkZWNpZGUgaWYgdGhlIGJveCBuZWVkcyB0byBtb3ZlLCB3ZSBkb24ndCB5ZXQgaGF2
ZSB0aGUgZmluYWwgdmVydGljYWwgcG9zaXRpb24uCiAgICAgLy8KICAgICAvLyBUaGUgaWRlYSBo
ZXJlIGlzIHRoYXQgYXMgbG9uZyBhcyB3ZSBkb24ndCBjcm9zcyB0aGUgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0IGJvdW5kYXJ5LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwcmUtY29tcHV0ZSB0aGUg
ZmluYWwgdG9wIG1hcmdpbi4KLSAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0
YXRlKCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUo
KTsKIAogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2Nr
KCk7IGFuY2VzdG9yICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAg
IGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCph
bmNlc3Rvcik7CiAgICAgICAgIC8vIEZJWE1FOiB3aXRoIGluY3JlbWVudGFsIGxheW91dCwgd2Ug
bWlnaHQgYWN0dWFsbHkgaGF2ZSBhIHZhbGlkIChub24tZXN0aW1hdGVkKSBtYXJnaW4gdG9wIGFz
IHdlbGwuCi0gICAgICAgIGlmIChkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQor
ICAgICAgICBpZiAoZm9ybWF0dGluZ1N0YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgqYW5j
ZXN0b3IpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5CZWZvcmUoKmFuY2VzdG9yKTsKQEAgLTIzOCwxMCArMjM5LDEwIEBAIHZvaWQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5n
Um9vdElmTmVlZGVkCiB9CiAKICNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgYm9vbCBoYXNQcmVjb21w
dXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoY29u
c3QgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCiB7CiAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5n
QmxvY2soKTsgYW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAg
ICAgICAgaWYgKGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKS5l
c3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkKKyAgICAgICAgaWYgKGZvcm1hdHRpbmdTdGF0ZS5oYXNF
c3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjUzLDcgKzI1NCw3IEBAIHZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRp
bmdDb250ZXh0JiBmbG9hCiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRT
dGF0ZSgpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7Ci0g
ICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0
aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0
U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIC8vIDguMy4xIENv
bGxhcHNpbmcgbWFyZ2lucwpAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRl
eHQmCiAgICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSk7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAg
ICAgQVNTRVJUKCFsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKTsKLSAgICBBU1NFUlQoaGFzUHJl
Y29tcHV0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VS
VChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlv
dXRCb3gpKTsKIAogICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkyLDcgKzI5Myw3IEBAIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0
IEZsb2F0aW5nCiAgICAgLy8gRm9yIGZvcm1hdHRpbmcgcm9vdHMsIHdlIGFscmVhZHkgcHJlY29t
cHV0ZWQgZmluYWwgcG9zaXRpb24uCiAgICAgaWYgKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpKQogICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9y
QW5jZXN0b3JzKGxheW91dEJveCk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVm
b3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRN
YXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBp
ZiAoYXV0byB2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52
ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBv
c2l0aW9uV2l0aENsZWFyYW5jZSk7CkBAIC0zNzIsMTIgKzM3MywxNSBAQCB2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0CiAgICAgfQogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3Rh
dGUgPSB0aGlzLT5ibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpOworICAgIGlmIChmb3JtYXR0aW5nU3Rh
dGUuaGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCkpIHsKKyAgICAgICAgZm9ybWF0
dGluZ1N0YXRlLmNsZWFySGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCk7CisgICAg
ICAgIEFTU0VSVChsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCku
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCktPmNvbXB1dGVkVmFsdWUgPT0gaGVpZ2h0QW5kTWFyZ2lu
Lm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlzcGxh
eUJveC5zZXRUb3AoYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5n
KGxheW91dEJveCwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKSk7
CisKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhl
aWdodCk7CiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRNYXJnaW4u
bWFyZ2luKTsKLQotICAgIC8vIElmIHRoaXMgYm94IGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgYnkg
dGhlIGVzdGltYXRlZCB2ZXJ0aWNhbCBtYXJnaW4sIG5vIG5lZWQgdG8gbW92ZSBpdCBhZ2Fpbi4K
LSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgIWRpc3BsYXlCb3gu
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkpCi0gICAgICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2Fs
bHkoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlKTsKIH0KIAogRm9y
bWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKQEAgLTQ0NCw2ICs0
NDgsMzcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWMKICAgICByZXR1cm4gaW5zdHJpbnNpY1dp
ZHRoQ29uc3RyYWludHM7CiB9CiAKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
YWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgY29uc3QKK3sKKyAgICAvLyBOb3cg
dGhhdCB3ZSd2ZSBjb21wdXRlZCB0aGUgZmluYWwgbWFyZ2luIGJlZm9yZSwgbGV0J3Mgc2hpZnQg
dGhlIGJveCdzIHZlcnRpY2FsIHBvc2l0aW9uLgorICAgIC8vIDEuIENoZWNrIGlmIHRoZSBtYXJn
aW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHRoZSBwcmV2aW91cyBib3gncyBtYXJnaW4gYWZ0ZXIu
IGlmIG5vdCAtPiByZXR1cm4gcHJldmlvdXMgYm94J3MgYm90dG9tIGlubGN1ZGluZyBtYXJnaW4g
YWZ0ZXIgKyBtYXJnaW5CZWZvcmUKKyAgICAvLyAyLiBDaGVjayBpZiB0aGUgcHJldmlvdXMgYm94
J3MgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoLiBJZiBub3QgLT4gcmV0dXJuIHByZXZpb3VzIGJv
eCcgYm90dG9tIGV4Y2x1ZGluZyBtYXJnaW4gYWZ0ZXIgKyBtYXJnaW5CZWZvcmUgKHRoZXkgYXJl
IHN1cHBvc2VkIHRvIGJlIGVxdWFsKQorICAgIC8vIDMuIEdvIHRvIHByZXZpb3VzIGJveCBhbmQg
c3RhcnQgZnJvbSBzdGVwICMxIHVudGlsIHdlIGhpdCB0aGUgcGFyZW50IGJveC4KKyAgICBhdXRv
JiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byogY3VycmVudExh
eW91dEJveCA9ICZsYXlvdXRCb3g7CisgICAgd2hpbGUgKGN1cnJlbnRMYXlvdXRCb3gpIHsKKyAg
ICAgICAgaWYgKCFjdXJyZW50TGF5b3V0Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAq
Y3VycmVudExheW91dEJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICgh
TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50TGF5b3V0Qm94KSkgeworICAgICAgICAgICAgYXV0byYg
cHJldmlvdXNEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChw
cmV2aW91c0luRmxvd1NpYmxpbmcpOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzRGlzcGxh
eUJveC5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpICsgbWFyZ2luQmVmb3JlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFNYXJnaW46Om1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3Rh
dGUsIHByZXZpb3VzSW5GbG93U2libGluZykpIHsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3Vz
RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJ
bkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3BsYXlCb3guYm90
dG9tKCkgKyBtYXJnaW5CZWZvcmU7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudExheW91dEJv
eCA9ICZwcmV2aW91c0luRmxvd1NpYmxpbmc7CisgICAgfQorCisgICAgYXV0byBjb250YWluaW5n
QmxvY2tDb250ZW50Qm94VG9wID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94VG9wKCk7CisgICAgaWYgKE1h
cmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KSB8fCBNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJl
bnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3A7CisKKyAgICByZXR1cm4gY29udGFpbmluZ0Jsb2Nr
Q29udGVudEJveFRvcCArIG1hcmdpbkJlZm9yZTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IDY4MDQxZDQ5MDg1NjdmYjg4OTM0MGQ2YjUzYjdlM2YyMDgyZWMx
ODAuLjlhNDEyYWU0MDI2OTVmY2UxYjk1NzMzMmMzNjg1NTA4ZWRmMzQyMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxh
eW91dCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIEJsb2NrRm9ybWF0dGluZ1N0
YXRlJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUoKSk7IH0KKwogICAgIHZvaWQgbGF5b3V0
Rm9ybWF0dGluZ0NvbnRleHRSb290KEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0
OwogICAgIHZvaWQgcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQ29udGFpbmVy
JikgY29uc3Q7CiAKQEAgLTY3LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZWNvbXB1
dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmKSBj
b25zdDsKIAogICAgIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBhZGp1c3RlZFZlcnRp
Y2FsUG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmcoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBt
YXJnaW5CZWZvcmUpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0
aW9uaW5nIGFuZCBzaXppbmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuCiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5IHsKQEAgLTc5LDQ5ICs4Miw0NyBAQCBwcml2YXRlOgogICAgICAgICBz
dGF0aWMgYm9vbCBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50c05lZWRDaGlsZHJlbldpZHRoKGNv
bnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW5z
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
IAotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZXN0
aW1hdGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLQogICAg
IHByaXZhdGU6Ci0gICAgICAgIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBtYXJnaW4gY29sbGFw
c2luZyBmb3IgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgotICAgICAgICBjbGFzcyBNYXJnaW5D
b2xsYXBzZSB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0
IG1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAg
ICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRIZWlnaHQgPSB7IH0pOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRN
YXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7CisgICAg
ICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdp
ZHRoID0geyB9KTsKKyAgICAgICAgc3RhdGljIFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93UG9zaXRpb25lZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgIH07CiAK
LSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAg
c3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICBjbGFzcyBNYXJnaW4geworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFZlcnRpY2FsTWFyZ2luIHZlcnRpY2FsKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQg
bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
KyAgICAgICAgc3RhdGljIEVzdGltYXRlZE1hcmdpbkJlZm9yZSBlc3RpbWF0ZWRNYXJnaW5CZWZv
cmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
dXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
LCBjb25zdCBWZXJ0aWNhbE1hcmdpbiYgbmV4dFNpYmxpbmdWZXJ0aWNhbE1hcmdpbik7CiAKLSAg
ICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMg
TGF5b3V0VW5pdCBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5G
bG93Q2hpbGRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29s
IG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0
VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFw
c2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAg
IHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29s
bGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2li
bGluZ01hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAg
ICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3Jl
V2l0aENsZWFyYW5jZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAg
ICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMg
Ym9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGNvbnN0IEJveCYp
OwotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNp
YmxpbmcoY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIH07CisgICAgICAgIHN0YXRp
YyBib29sIG1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKIAotICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gdXNlZEhlaWdodCA9IHsgfSk7Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1h
cmdpbiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoID0geyB9KTsKLSAgICAg
ICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lk
dGggPSB7IH0pOwotICAgICAgICBzdGF0aWMgUG9pbnQgc3RhdGljUG9zaXRpb25Gb3JPdXRPZkZs
b3dQb3NpdGlvbmVkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgcHJpdmF0
ZToKKyAgICAgICAgZW51bSBjbGFzcyBNYXJnaW5UeXBlIHsgQmVmb3JlLCBBZnRlciB9OworICAg
ICAgICBzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgcG9z
aXRpdmVOZWdhdGl2ZVZhbHVlcyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE1hcmdp
blR5cGUpOworICAgICAgICBzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
OjpWYWx1ZXMgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luOjpWYWx1ZXMgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CiAgICAgfTsKIAogICAgIGNsYXNzIFF1aXJrcyB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgYm9vbCBuZWVkc1N0cmV0Y2hpbmcoY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBzdHJldGNo
ZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBIZWlnaHRBbmRNYXJnaW4p
OworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIHN0cmV0Y2hlZEluRmxvd0hlaWdodChj
b25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIEhlaWdodEFuZE1hcmdpbik7CiAKICAgICAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZU1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAgICAgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBlZTQzODcyZWFi
NmU1MDBiZThhYzcyYjE1YWY5MDEwYmVlYmY4MTA2Li4wMDdmNzJhMzA0NGMxY2MzZGExODM2OWUy
NzliYjVhYjUwMmM0MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCkBAIC01NywxMyArNTcsOSBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAg
ICAgICAvLyBPbmx5IGNoaWxkcmVuIGluIHRoZSBub3JtYWwgZmxvdyBhcmUgdGFrZW4gaW50byBh
Y2NvdW50IChpLmUuLCBmbG9hdGluZyBib3hlcyBhbmQgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJv
eGVzIGFyZSBpZ25vcmVkLAogICAgICAgICAvLyBhbmQgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGJv
eGVzIGFyZSBjb25zaWRlcmVkIHdpdGhvdXQgdGhlaXIgb2Zmc2V0KS4gTm90ZSB0aGF0IHRoZSBj
aGlsZCBib3ggbWF5IGJlIGFuIGFub255bW91cyBibG9jayBib3guCiAKLSAgICAgICAgYXV0byYg
c3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tX
aWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250
YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlC
b3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7Ci0KLSAg
ICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRW
YWx1ZXMgeyBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwKSwKLSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVl
T3IoMCkgfTsgCi0gICAgICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gVmVydGljYWxNYXJnaW46
OkNvbGxhcHNlZFZhbHVlcyB7IE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmUobGF5b3V0U3Rh
dGUsIGxheW91dEJveCksIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KSB9OworICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IGNvbXB1dGVk
Tm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsK
KyAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBNYXJnaW46OnZlcnRpY2FsKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpLmNvbGxhcHNlZFZhbHVlcygpOwogICAgICAgICBhdXRvIGJvcmRlckFu
ZFBhZGRpbmdUb3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZGlzcGxheUJveC5wYWRkaW5n
VG9wKCkudmFsdWVPcigwKTsKIAogICAgICAgICBhdXRvIGhlaWdodCA9IHVzZWRIZWlnaHQgPyB1
c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CkBAIC04NCwxNCArODAsMTQgQEAgSGVpZ2h0QW5k
TWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmcKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0
b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQs
IGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KICAgICAgICAgYXV0byogbGFzdEluRmxv
d0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgp
OwogICAgICAgICBBU1NFUlQobGFzdEluRmxvd0NoaWxkKTsKLSAgICAgICAgaWYgKCFNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKSB7CisgICAgICAgIGlmICghTWFyZ2luOjptYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxhc3RJbkZs
b3dDaGlsZCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxhc3RJbkZsb3dEaXNwbGF5Qm94ID0gbGF5
b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGFzdEluRmxvd0NoaWxkKTsKICAgICAg
ICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgbGFzdEluRmxv
d0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIHsgbm9uQ29s
bGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfSB9OwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdo
b3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9t
IG1hcmdpbgogICAgICAgICBhdXRvKiBpbkZsb3dDaGlsZCA9IGxhc3RJbkZsb3dDaGlsZDsKLSAg
ICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICppbkZsb3dDaGlsZCkp
CisgICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmluRmxvd0NoaWxkKSkKICAg
ICAgICAgICAgIGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGlu
ZygpOwogICAgICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKICAgICAgICAgICAgIGF1dG8mIGluRmxv
d0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dD
aGlsZCk7CkBAIC0xMDMsNiArOTksOSBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgIH07
CiAKICAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUoKTsKKyAgICAvLyBBZGp1c3Qg
dGhlIHByZXZpb3VzIHNpYmxpbmcncyBtYXJnaW4gYm90dG9tIG5vdyB0aGF0IHRoaXMgYm94J3Mg
dmVydGljYWwgbWFyZ2luIGlzIGNvbXB1dGVkLgorICAgIGlmIChNYXJnaW46Om1hcmdpbkJlZm9y
ZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KSkKKyAgICAgICAgTWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlv
dXRTdGF0ZSwgKmxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSwgaGVpZ2h0QW5kTWFy
Z2luLm1hcmdpbik7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+
IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBo
ZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmUgPDwgInB4LCAiIDw8IGhl
aWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0
Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWlnaHRBbmRNYXJnaW47
CkBAIC0yNjEsNyArMjYwLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGEKICAgICBpZiAoIVF1
aXJrczo6bmVlZHNTdHJldGNoaW5nKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQogICAgICAgICBy
ZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogCi0gICAgaGVpZ2h0QW5kTWFyZ2luID0gUXVpcmtzOjpz
dHJldGNoZWRIZWlnaHQobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVpZ2h0QW5kTWFyZ2luKTsK
KyAgICBoZWlnaHRBbmRNYXJnaW4gPSBRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4pOwogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0g
LT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBzdHJlY2hlZCB0byB2aWV3cG9ydCAtPiBoZWlnaHQo
IiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5k
TWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRN
YXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwpAQCAtMzIy
LDMwICszMjEsNiBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OgogICAgIHJldHVybiB7IG1pbmlt
dW1JbnRyaW5zaWNXaWR0aCwgbWF4aW11bUludHJpbnNpY1dpZHRoIH07CiB9CiAKLUxheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9y
ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQot
ewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotICAgIC8vIENhbid0
IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ug
c2hvdWxkbid0IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KLSAgICBBU1NFUlQobGF5
b3V0Qm94LmlzSW5GbG93KCkpOwotICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCBib3VuZGFyeS4KLSAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAgICAvLyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFs
IHBhdGggZm9yIG5vdy4KLSAgICByZXR1cm4gTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLSAgICAvLyBDYW4ndCBlc3RpbWF0ZSB2ZXJ0aWNhbCBt
YXJnaW5zIGZvciBvdXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRv
IGl0IGZvciBmbG9hdCBib3hlcykuCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsK
LSAgICAvLyBDYW4ndCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnkuCi0g
ICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkp
OwotCi0gICAgLy8gTGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0gICAg
cmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKLX0KLQogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cAppbmRleCA0NjA2ZjlkYzY2MjhlZTAzZjMwYzdhOTVmNDM5ZmIxM2U3NDA3MDlkLi5iMDNjMjNh
MGVhNTVkMmNkMzgzZGZlMGU3NzY1MTg3Yzc1YzE2NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTY2LDggKzY2LDkgQEAgYm9vbCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3QKICAgICByZXR1cm4gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlz
QXV0bygpOwogfQogCi1IZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVp
cmtzOjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCwgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbikKK0hlaWdo
dEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxv
d0hlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBIZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luKQogeworICAgIEFTU0VSVChsYXlv
dXRCb3guaXNJbkZsb3coKSk7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkg
fHwgbGF5b3V0Qm94LmlzQm9keUJveCgpKTsKIAogICAgIGF1dG8mIGRvY3VtZW50Qm94ID0gbGF5
b3V0Qm94LmlzRG9jdW1lbnRCb3goKSA/IGxheW91dEJveCA6ICpsYXlvdXRCb3gucGFyZW50KCk7
CkBAIC04OCwxMiArODksMTAgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXQKICAgICAgICAgLy8g
SGVyZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94OgogICAgICAgICAvLyBTdHJldGNo
IHRoZSBib2R5IHVzaW5nIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sncyBoZWlnaHQgYW5k
IHNocmluayBpdCB3aXRoIGRvY3VtZW50IGJveCdzIG1hcmdpbi9ib3JkZXIvcGFkZGluZy4KICAg
ICAgICAgLy8gVGhpcyBsb29rcyBleHRyZW1lbHkgb2RkIHdoZW4gaHRtbCBoYXMgbm9uLWF1dG8g
aGVpZ2h0LgotICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmVzdGltYXRl
ZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpICsgR2VvbWV0cnk6OmVzdGlt
YXRlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7Ci0gICAgICAgIHN0cmVj
aGVkSGVpZ2h0IC09IHZlcnRpY2FsTWFyZ2luOworICAgICAgICBhdXRvIGRvY3VtZW50Qm94VmVy
dGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
blZhbHVlKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7CisgICAgICAgIHN0cmVjaGVkSGVpZ2h0
IC09IChkb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGRvY3VtZW50Qm94VmVydGlj
YWxNYXJnaW4uYWZ0ZXIpOwogCi0gICAgICAgIC8vIFRoaXMgcXVpcmsgaGFwcGVucyB3aGVuIHRo
ZSBib2R5IGhlaWdodCBpcyAwIHdoaWNoIG1lYW5zIGl0cyB2ZXJ0aWNhbCBtYXJnaW5zIGNvbGxh
cHNlIHRocm91Z2ggKHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYXJlIGFkam9pbmluZykuCi0gICAg
ICAgIC8vIEhvd2V2ZXIgbm93IHRoYXQgd2Ugc3RyZXRjaCB0aGUgYm9keSB0aGV5IGRvbid0IGNv
bGxhcHNlIHRocm91Z2ggYW55bW9yZSwgc28gd2UgbmVlZCB0byB1c2UgdGhlIG5vbi1jb2xsYXBz
ZWQgdmFsdWVzIGluc3RlYWQuCi0gICAgICAgIGF1dG8gYm9keUJveFZlcnRpY2FsTWFyZ2luID0g
aGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA/IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVl
cygpIDogaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKTsKKyAgICAg
ICAgYXV0byBib2R5Qm94VmVydGljYWxNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVz
ZWRWYWx1ZXMoKTsgCiAgICAgICAgIHRvdGFsVmVydGljYWxNYXJnaW4gPSBib2R5Qm94VmVydGlj
YWxNYXJnaW4uYmVmb3JlICsgYm9keUJveFZlcnRpY2FsTWFyZ2luLmFmdGVyOwogICAgIH0KIApA
QCAtMTEyLDYgKzExMSwyMCBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJgogICAgIHJldHVybiBs
YXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKCpsYXlvdXRCb3gu
cGFyZW50KCkpICYmIGhhc01hcmdpbkJlZm9yZVF1aXJrVmFsdWUobGF5b3V0Qm94KTsKIH0KIAor
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
Cit7CisgICAgLy8gSWdub3JlIG1hcmluZyBhZnRlciB3aGVuIHRoZSBpZ25vcmVkIG1hcmdpbiBi
ZWZvcmUgY29sbGFwc2VzIHRocm91Z2guCisgICAgaWYgKCFzaG91bGRJZ25vcmVNYXJnaW5CZWZv
cmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEFTU0VSVChsYXlvdXRCb3gucGFyZW50KCkpOworICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRC
b3gucGFyZW50KCk7CisgICAgaWYgKHBhcmVudC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgp
ICE9ICZsYXlvdXRCb3ggfHwgcGFyZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgIT0g
cGFyZW50Lmxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIE1hcmdpbjo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
YmI5NjY5MzkwZmY5YTI4NzZmZTcxNGRjODU0NGIwMWRmNmRlYWE4NC4uYmI0NTZiNTkyN2ZlZmU0
NWM2Mzc4MzFkNWIyNGY3MTcwOTJiYWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaApAQCAt
MjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAj
aW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTWFyZ2luVHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDYg
KzQzLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CbG9ja0Zvcm1hdHRpbmdTdGF0ZSgpOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIHNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxh
eW91dEJveCwgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHZlcnRpY2FsTWFyZ2lu
KSB7IG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLnNldCgmbGF5b3V0Qm94LCB2
ZXJ0aWNhbE1hcmdpbik7IH0KKyAgICBib29sIGhhc1Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNh
bE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4uY29udGFpbnMoJmxheW91dEJveCk7IH0KKyAgICBQb3Np
dGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aXZlQW5k
TmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5nZXQoJmxheW91dEJveCk7IH0KKworICAgIHZvaWQgc2V0
SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSB7IG1fZXN0aW1h
dGVkTWFyZ2luQmVmb3JlTGlzdC5hZGQoJmxheW91dEJveCk7IH0KKyAgICB2b2lkIGNsZWFySGFz
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSB7IG1fZXN0aW1hdGVk
TWFyZ2luQmVmb3JlTGlzdC5yZW1vdmUoJmxheW91dEJveCk7IH0KKyAgICBib29sIGhhc0VzdGlt
YXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9l
c3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmNvbnRhaW5zKCZsYXlvdXRCb3gpOyB9CisKK3ByaXZh
dGU6CisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxN
YXJnaW4+IG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOworICAgIEhhc2hTZXQ8
Y29uc3QgQm94Kj4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNmQ4OWZiOTljYTFhNTkyNWMyMGNiNDUxMzI5MDI3OGI3MmEyZTk3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja01hcmdpbi5jcHAKQEAgLTAsMCArMSw2MTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIgorCisjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0
aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRDb250
YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRVbml0LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0YXRpYyBi
b29sIGhhc0JvcmRlcihjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyVmFsdWUpCit7CisgICAgaWYg
KGJvcmRlclZhbHVlLnN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6Ok5vbmUgfHwgYm9yZGVyVmFsdWUu
c3R5bGUoKSA9PSBCb3JkZXJTdHlsZTo6SGlkZGVuKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuICEhYm9yZGVyVmFsdWUud2lkdGgoKTsKK30KKworc3RhdGljIGJvb2wgaGFzUGFk
ZGluZyhjb25zdCBMZW5ndGgmIHBhZGRpbmdWYWx1ZSkKK3sKKyAgICAvLyBGSVhNRTogQ2hlY2sg
aWYgcGVyY2VudCB2YWx1ZSBuZWVkcyB0byBiZSByZXNvbHZlZC4KKyAgICByZXR1cm4gIXBhZGRp
bmdWYWx1ZS5pc1plcm8oKTsKK30KKworc3RhdGljIGJvb2wgaGFzQm9yZGVyQmVmb3JlKGNvbnN0
IEJveCYgbGF5b3V0Qm94KQoreworICAgIHJldHVybiBoYXNCb3JkZXIobGF5b3V0Qm94LnN0eWxl
KCkuYm9yZGVyQmVmb3JlKCkpOworfQorCitzdGF0aWMgYm9vbCBoYXNCb3JkZXJBZnRlcihjb25z
dCBCb3gmIGxheW91dEJveCkKK3sKKyAgICByZXR1cm4gaGFzQm9yZGVyKGxheW91dEJveC5zdHls
ZSgpLmJvcmRlckFmdGVyKCkpOworfQorCitzdGF0aWMgYm9vbCBoYXNQYWRkaW5nQmVmb3JlKGNv
bnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIHJldHVybiBoYXNQYWRkaW5nKGxheW91dEJveC5z
dHlsZSgpLnBhZGRpbmdCZWZvcmUoKSk7Cit9CisKK3N0YXRpYyBib29sIGhhc1BhZGRpbmdBZnRl
cihjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICByZXR1cm4gaGFzUGFkZGluZyhsYXlvdXRC
b3guc3R5bGUoKS5wYWRkaW5nQWZ0ZXIoKSk7Cit9CisKK3N0YXRpYyBib29sIGhhc0NsZWFyYW5j
ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQor
eworICAgIGlmICghbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91
dEJveCkuaGFzQ2xlYXJhbmNlKCk7Cit9CisKK3N0YXRpYyBib29sIGVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICAvLyBXZWJLaXQg
dHJlYXRzIHRoZSBkb2N1bWVudCBlbGVtZW50IHJlbmRlcmVyIGFzIGEgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0IHJvb3QuIEl0IHByb2JhYmx5IG9ubHkgaW1wYWN0cyBtYXJnaW4gY29sbGFwc2lu
Zywgc28gbGV0J3Mgbm90IGRvCisgICAgLy8gYSBsYXlvdXQgd2lkZSBxdWlyayBvbiB0aGlzIGZv
ciBub3cuCisgICAgaWYgKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCk7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJn
aW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICAvLyAxLiBUaGlzIGlz
IHRoZSBsYXN0IGluLWZsb3cgY2hpbGQgYW5kIGl0cyBtYXJnaW5zIGNvbGxhcHNlIHRocm91Z2gg
YW5kIHRoZSBtYXJnaW4gYWZ0ZXIgY29sbGFwc2VzIHdpdGggcGFyZW50J3MgbWFyZ2luIGFmdGVy
IG9yCisgICAgLy8gMi4gVGhpcyBib3gncyBtYXJnaW4gYWZ0ZXIgY29sbGFwc2VzIHdpdGggdGhl
IG5leHQgc2libGluZydzIG1hcmdpbiBiZWZvcmUgYW5kIHRoYXQgc2libGluZyBjb2xsYXBzZXMg
dGhyb3VnaCBhbmQKKyAgICAvLyB3ZSBjYW4gZ2V0IHRvIHRoZSBsYXN0IGluLWZsb3cgY2hpbGQg
bGlrZSB0aGF0LgorICAgIGF1dG8qIGxhc3RJbkZsb3dDaGlsZCA9IGxheW91dEJveC5wYXJlbnQo
KS0+bGFzdEluRmxvd0NoaWxkKCk7CisgICAgZm9yIChhdXRvKiBjdXJyZW50Qm94ID0gJmxheW91
dEJveDsgY3VycmVudEJveDsgY3VycmVudEJveCA9IGN1cnJlbnRCb3gtPm5leHRJbkZsb3dTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRl
LCAqY3VycmVudEJveCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChj
dXJyZW50Qm94ID09IGxhc3RJbkZsb3dDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiBtYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmN1cnJlbnRC
b3gpOyAKKyAgICAgICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01h
cmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5CZWZv
cmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgLy8gVGhlIGZpcnN0IGluZmxv
dyBjaGlsZCBjb3VsZCBwcm9wYWdhdGUgaXRzIHRvcCBtYXJnaW4gdG8gcGFyZW50LgorICAgIC8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbCNjb2xsYXBzaW5nLW1hcmdpbnMK
KyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworCisgICAgLy8gTWFy
Z2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxh
cHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Ym94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5s
aW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzSW5s
aW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gT25seSB0aGUg
Zmlyc3QgaW5sZmxvdyBjaGlsZCBjb2xsYXBzZXMgd2l0aCBwYXJlbnQuCisgICAgaWYgKGxheW91
dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKKyAgICAvLyBNYXJnaW5zIG9m
IGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRv
IG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4KKyAgICBpZiAoZXN0YWJs
aXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChoYXNCb3JkZXJCZWZvcmUocGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUocGFyZW50KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gLi4uYW5kIHRoZSBjaGlsZCBoYXMgbm8gY2xlYXJhbmNlLgorICAg
IGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01h
cmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAg
ICBpZiAoIWxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gKmxheW91dEJveC5w
cmV2aW91c0luRmxvd1NpYmxpbmcoKTsKKworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0
ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0
Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgcHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdp
bnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBp
ZiAoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnN0eWxl
KCkudG9wKCkuaXNBdXRvKCkpCisgICAgICAgIHx8IChwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIXByZXZpb3VzSW5GbG93U2libGluZy5zdHlsZSgpLmJv
dHRvbSgpLmlzQXV0bygpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lu
cyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRC
b3guaXNJbmxpbmVCbG9ja0JveCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5pc0lubGluZUJs
b2NrQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBib3R0b20gbWFy
Z2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29sbGFwc2VzIHdp
dGggdGhlIHRvcCBtYXJnaW4gb2YKKyAgICAvLyBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVs
IHNpYmxpbmcsIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFz
Q2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
Cit7CisgICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKKyAgICAvLyBN
YXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNv
bnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAg
aWYgKGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJs
aXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRo
ZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5n
Q29udGV4dChsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUg
dG9wIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrIGVsZW1lbnQgY29sbGFwc2VzIHdpdGggaXRz
IGZpcnN0IGluLWZsb3cgYmxvY2stbGV2ZWwKKyAgICAvLyBjaGlsZCdzIHRvcCBtYXJnaW4gaWYg
dGhlIGVsZW1lbnQgaGFzIG5vIHRvcCBib3JkZXIuLi4KKyAgICBpZiAoaGFzQm9yZGVyQmVmb3Jl
KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIC4uLm5vIHRvcCBw
YWRkaW5nCisgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25j
YXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgaWYgKCFmaXJzdEluRmxv
d0NoaWxkLmlzQmxvY2tMZXZlbEJveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyAuLi5hbmQgdGhlIGNoaWxkIGhhcyBubyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5j
ZShsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94
IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAoZmlyc3RJbkZsb3dDaGlsZC5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGFi
c29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGZpcnN0
SW5GbG93Q2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBz
ZS4KKyAgICBpZiAoZmlyc3RJbkZsb3dDaGlsZC5pc0lubGluZUJsb2NrQm94KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdp
bkJlZm9yZVdpdGhDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCkKK3sKKyAgICAvLyBJZiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lu
cyBvZiBhbiBlbGVtZW50IHdpdGggY2xlYXJhbmNlIGFyZSBhZGpvaW5pbmcsIGl0cyBtYXJnaW5z
IGNvbGxhcHNlIHdpdGggdGhlIGFkam9pbmluZyBtYXJnaW5zCisgICAgLy8gb2YgZm9sbG93aW5n
IHNpYmxpbmdzIGJ1dCB0aGF0IHJlc3VsdGluZyBtYXJnaW4gZG9lcyBub3QgY29sbGFwc2Ugd2l0
aCB0aGUgYm90dG9tIG1hcmdpbiBvZiB0aGUgcGFyZW50IGJsb2NrLgorICAgIGlmICghbWFyZ2lu
c0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgZm9yIChhdXRvKiBwcmV2aW91c1NpYmxpbmcgPSBsYXlvdXRCb3gucHJl
dmlvdXNJbkZsb3dTaWJsaW5nKCk7IHByZXZpb3VzU2libGluZzsgcHJldmlvdXNTaWJsaW5nID0g
cHJldmlvdXNTaWJsaW5nLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgeworICAgICAgICBpZiAo
IW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsICpwcmV2aW91c1NpYmxpbmcpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91
dFN0YXRlLCAqcHJldmlvdXNTaWJsaW5nKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICAv
LyAxLiBUaGlzIGlzIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBjb2xs
YXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMgd2l0aCBwYXJlbnQn
cyBtYXJnaW4gYmVmb3JlIG9yCisgICAgLy8gMi4gVGhpcyBib3gncyBtYXJnaW4gYmVmb3JlIGNv
bGxhcHNlcyB3aXRoIHRoZSBwcmV2aW91cyBzaWJsaW5nJ3MgbWFyZ2luIGFmdGVyIGFuZCB0aGF0
IHNpYmxpbmcgY29sbGFwc2VzIHRocm91Z2ggYW5kCisgICAgLy8gd2UgY2FuIGdldCB0byB0aGUg
Zmlyc3QgaW4tZmxvdyBjaGlsZCBsaWtlIHRoYXQuCisgICAgYXV0byogZmlyc3RJbkZsb3dDaGls
ZCA9IGxheW91dEJveC5wYXJlbnQoKS0+Zmlyc3RJbkZsb3dDaGlsZCgpOworICAgIGZvciAoYXV0
byogY3VycmVudEJveCA9ICZsYXlvdXRCb3g7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJy
ZW50Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoIW1hcmdpbnND
b2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnRCb3ggPT0gZmlyc3RJbkZsb3dDaGlsZCkK
KyAgICAgICAgICAgIHJldHVybiBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2lu
QmVmb3JlKGxheW91dFN0YXRlLCAqY3VycmVudEJveCk7IAorICAgICAgICBpZiAoIW1hcmdpbkJl
Zm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwg
KmN1cnJlbnRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJn
aW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQoreworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAg
ICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBu
b3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9z
aXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lu
cyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRC
b3guaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBP
bmx5IHRoZSBsYXN0IGlubGZsb3cgY2hpbGQgY29sbGFwc2VzIHdpdGggcGFyZW50LgorICAgIGlm
IChsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKKyAgICAvLyBNYXJnaW5z
IG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRz
IGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGVz
dGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrIGJv
eCB3aXRoIGEgJ2hlaWdodCcgb2YgJ2F1dG8nIGNvbGxhcHNlcyB3aXRoIGl0cyBsYXN0IGluLWZs
b3cgYmxvY2stbGV2ZWwgY2hpbGQncyBib3R0b20gbWFyZ2luLCBpZjoKKyAgICBpZiAoIXBhcmVu
dC5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyB0aGUgYm94IGhhcyBubyBib3R0b20gcGFkZGluZywgYW5kCisgICAgaWYgKGhhc1BhZGRp
bmdCZWZvcmUocGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGJv
eCBoYXMgbm8gYm90dG9tIGJvcmRlciwgYW5kCisgICAgaWYgKGhhc0JvcmRlckJlZm9yZShwYXJl
bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyB0aGUgY2hpbGQncyBib3R0b20g
bWFyZ2luIG5laXRoZXIgY29sbGFwc2VzIHdpdGggYSB0b3AgbWFyZ2luIHRoYXQgaGFzIGNsZWFy
YW5jZS4uLgorICAgIGlmIChtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVm
b3JlV2l0aENsZWFyYW5jZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gbm9yIChpZiB0aGUgYm94J3MgbWluLWhlaWdodCBpcyBub24temVy
bykgd2l0aCB0aGUgYm94J3MgdG9wIG1hcmdpbi4KKyAgICBhdXRvIGNvbXB1dGVkTWluSGVpZ2h0
ID0gcGFyZW50LnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpOworICAgIGlmICghY29tcHV0ZWRN
aW5IZWlnaHQuaXNBdXRvKCkgJiYgY29tcHV0ZWRNaW5IZWlnaHQudmFsdWUoKSAmJiBtYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJv
eCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRo
TGFzdEluRmxvd0NoaWxkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
LCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tM
ZXZlbEJveCgpKTsKKworICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2gg
bmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIg
aW4tZmxvdyBjaGlsZHJlbi4KKyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXM8Q29u
dGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFz
SW5GbG93Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgbGFzdElu
Rmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hp
bGQoKTsKKyAgICBpZiAoIWxhc3RJbkZsb3dDaGlsZC5pc0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxv
dyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9mICdhdXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMg
bGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiwgaWY6CisgICAg
aWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gdGhlIGJveCBoYXMgbm8gYm90dG9tIHBhZGRpbmcsIGFuZAorICAg
IGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBib3JkZXIsIGFuZAorICAgIGlmIChoYXNC
b3JkZXJCZWZvcmUobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
dGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiBuZWl0aGVyIGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1h
cmdpbiB0aGF0IGhhcyBjbGVhcmFuY2UuLi4KKyAgICBpZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZs
b3dDaGlsZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIG5vciAoaWYgdGhlIGJv
eCdzIG1pbi1oZWlnaHQgaXMgbm9uLXplcm8pIHdpdGggdGhlIGJveCdzIHRvcCBtYXJnaW4uCisg
ICAgYXV0byBjb21wdXRlZE1pbkhlaWdodCA9IGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5I
ZWlnaHQoKTsKKyAgICBpZiAoIWNvbXB1dGVkTWluSGVpZ2h0LmlzQXV0bygpICYmIGNvbXB1dGVk
TWluSGVpZ2h0LnZhbHVlKCkKKyAgICAgICAgJiYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBh
cmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxkKSB8fCBoYXNDbGVh
cmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVy
IGJveCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxhc3RJbkZsb3dDaGlsZC5pc0Zsb2F0aW5n
UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9m
IGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxh
c3RJbkZsb3dDaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxh
cHNlLgorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNJbmxpbmVCbG9ja0JveCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5n
TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisK
KyAgICBpZiAoIWxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2li
bGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5n
KCkpOworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luc0Nv
bGxhcHNlVGhyb3VnaChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwor
CisgICAgLy8gQSBib3gncyBvd24gbWFyZ2lucyBjb2xsYXBzZSBpZiB0aGUgJ21pbi1oZWlnaHQn
IHByb3BlcnR5IGlzIHplcm8sIGFuZCBpdCBoYXMgbmVpdGhlciB0b3Agb3IgYm90dG9tIGJvcmRl
cnMgbm9yIHRvcCBvciBib3R0b20gcGFkZGluZywKKyAgICAvLyBhbmQgaXQgaGFzIGEgJ2hlaWdo
dCcgb2YgZWl0aGVyIDAgb3IgJ2F1dG8nLCBhbmQgaXQgZG9lcyBub3QgY29udGFpbiBhIGxpbmUg
Ym94LCBhbmQgYWxsIG9mIGl0cyBpbi1mbG93IGNoaWxkcmVuJ3MgbWFyZ2lucyAoaWYgYW55KSBj
b2xsYXBzZS4KKyAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKGxheW91dEJveCkgfHwgaGFzQm9yZGVy
QWZ0ZXIobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGhhc1Bh
ZGRpbmdCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNQYWRkaW5nQWZ0ZXIobGF5b3V0Qm94KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IENoZWNrIGZvciBjb21wdXRlZCAw
IGhlaWdodC4KKyAgICBpZiAoIWxheW91dEJveC5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIGNvbXB1dGVk
IDAgaGVpZ2h0LgorICAgIGlmICghbGF5b3V0Qm94LnN0eWxlKCkubWluSGVpZ2h0KCkuaXNBdXRv
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlv
dXRCb3gpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghZG93bmNhc3Q8Q29udGFp
bmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKFF1aXJrczo6bmVlZHNTdHJldGNoaW5nKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0
aHJvdWdoIG1hcmdpbiBlc3RpbWF0aW9uLCB3ZSBkb24ndCBuZWNlc3NhcmlseSBoYXZlIGFuIGFj
dHVhbCBzdGF0ZSBmb3IgdGhpcyBsYXlvdXQgYm94IHNpbmNlCisgICAgICAgIC8vIHdlIGhhdmVu
J3Qgc3RhcnRlZCBsYXlpbmcgaXQgb3V0IHlldC4KKyAgICAgICAgaWYgKCFsYXlvdXRTdGF0ZS5o
YXNGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3Rh
dGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSkuaW5saW5lUnVucygpLmlz
RW1wdHkoKTsKKyAgICB9CisgICAgCisgICAgZm9yIChhdXRvKiBpbmZsb3dDaGlsZCA9IGRvd25j
YXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7IGluZmxvd0NoaWxk
OyBpbmZsb3dDaGlsZCA9IGluZmxvd0NoaWxkLT5uZXh0SW5GbG93U2libGluZygpKSB7CisgICAg
ICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKmluZmxvd0NoaWxkKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGxheW91dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFBvc2l0aXZlQW5kTmVn
YXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1h
cmdpbihQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBhLCBQb3NpdGl2
ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBiKQoreworICAgIFBvc2l0aXZlQW5k
TmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGNvbXB1dGVkVmFsdWVzOworICAgIGlmIChh
LnBvc2l0aXZlICYmIGIucG9zaXRpdmUpCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLnBvc2l0aXZl
ID0gc3RkOjptYXgoKmEucG9zaXRpdmUsICpiLnBvc2l0aXZlKTsKKyAgICBlbHNlCisgICAgICAg
IGNvbXB1dGVkVmFsdWVzLnBvc2l0aXZlID0gYS5wb3NpdGl2ZSA/IGEucG9zaXRpdmUgOiBiLnBv
c2l0aXZlOworCisgICAgaWYgKGEubmVnYXRpdmUgJiYgYi5uZWdhdGl2ZSkKKyAgICAgICAgY29t
cHV0ZWRWYWx1ZXMubmVnYXRpdmUgPSBzdGQ6Om1pbigqYS5uZWdhdGl2ZSwgKmIubmVnYXRpdmUp
OworICAgIGVsc2UKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubmVnYXRpdmUgPSBhLm5lZ2F0aXZl
ID8gYS5uZWdhdGl2ZSA6IGIubmVnYXRpdmU7CisKKyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7
Cit9CisKK3N0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBj
b21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRp
Y2FsTWFyZ2luOjpWYWx1ZXMgYSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWFyZ2luVmFsdWUpCit7
CisgICAgaWYgKCFtYXJnaW5WYWx1ZSB8fCAhbWFyZ2luVmFsdWUudmFsdWUoKSkKKyAgICAgICAg
cmV0dXJuIGE7CisgICAgaWYgKCptYXJnaW5WYWx1ZSA+IDApCisgICAgICAgIHJldHVybiBjb21w
dXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oYSwgeyBtYXJnaW5WYWx1ZSwgeyB9IH0pOwor
ICAgIGlmICgqbWFyZ2luVmFsdWUgPCAwKQorICAgICAgICByZXR1cm4gY29tcHV0ZWRQb3NpdGl2
ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgeyB9LCBtYXJnaW5WYWx1ZSB9KTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitzdGF0aWMgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gbWFyZ2luVmFsdWUoUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpW
YWx1ZXMgbWFyZ2luVmFsdWVzKQoreworICAgIC8vIFdoZW4gdHdvIG9yIG1vcmUgbWFyZ2lucyBj
b2xsYXBzZSwgdGhlIHJlc3VsdGluZyBtYXJnaW4gd2lkdGggaXMgdGhlIG1heGltdW0gb2YgdGhl
IGNvbGxhcHNpbmcgbWFyZ2lucycgd2lkdGhzLgorICAgIC8vIEluIHRoZSBjYXNlIG9mIG5lZ2F0
aXZlIG1hcmdpbnMsIHRoZSBtYXhpbXVtIG9mIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG5l
Z2F0aXZlIGFkam9pbmluZyBtYXJnaW5zIGlzIGRlZHVjdGVkIGZyb20gdGhlIG1heGltdW0KKyAg
ICAvLyBvZiB0aGUgcG9zaXRpdmUgYWRqb2luaW5nIG1hcmdpbnMuIElmIHRoZXJlIGFyZSBubyBw
b3NpdGl2ZSBtYXJnaW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRo
ZSBhZGpvaW5pbmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHplcm8uCisgICAgaWYgKCFtYXJn
aW5WYWx1ZXMubmVnYXRpdmUpCisgICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZXMucG9zaXRpdmU7
CisKKyAgICBpZiAoIW1hcmdpblZhbHVlcy5wb3NpdGl2ZSkKKyAgICAgICAgcmV0dXJuIG1hcmdp
blZhbHVlcy5uZWdhdGl2ZTsKKworICAgIHJldHVybiAqbWFyZ2luVmFsdWVzLnBvc2l0aXZlICsg
Km1hcmdpblZhbHVlcy5uZWdhdGl2ZTsKK30KKwordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpNYXJnaW46OnVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFZlcnRpY2FsTWFyZ2luJiBu
ZXh0U2libGluZ1ZlcnRpY2FsTWFyZ2luKQoreworICAgIC8vIDEuIEdldCB0aGUgbWFyZ2luIGJl
Zm9yZSB2YWx1ZSBmcm9tIHRoZSBuZXh0IGluLWZsb3cgc2libGluZy4gVGhpcyBpcyB0aGUgc2Ft
ZSBhcyB0aGlzIGJveCdzIG1hcmdpbiBhZnRlciB2YWx1ZSBub3cgc2luY2UgdGhleSBhcmUgY29s
bGFwc2VkLgorICAgIC8vIDIuIFVwZGF0ZSB0aGUgY29sbGFwc2VkIG1hcmdpbiBhZnRlciB2YWx1
ZSBhcyB3ZWxsIGFzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyAzLiBDaGVj
ayBpZiB0aGUgYm94J3MgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoLgorICAgIC8vIDQuIElmIHNv
LCB1cGRhdGUgdGhlIGNvbGxhcHNlZCBtYXJnaW4gYmVmb3JlIHZhbHVlIGFzIHdlbGwgYXMgdGhl
IHBvc2l0aXZlL25lZ2F0aXZlIGNhY2hlLgorICAgIC8vIDUuIEluIGNhc2Ugb2YgY29sbGFwc2Vk
IHRocm91Z2ggbWFyZ2lucyBjaGVjayBpZiB0aGUgYmVmb3JlIG1hcmdpbiBjb2xsYXBlcyB3aXRo
IHRoZSBwcmV2aW91cyBpbmZsb3cgc2libGluZydzIGFmdGVyIG1hcmdpbi4KKyAgICAvLyA2LiBJ
ZiBzbywganVtcCB0byAjMi4KKyAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRT
aWJsaW5nTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94
LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbkFmdGVyID0gbmV4dFNp
YmxpbmdWZXJ0aWNhbE1hcmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlOworICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IHZlcnRpY2FsTWFyZ2luQmVmb3JlOworCisgICAgYXV0byBtYXJnaW5zQ29sbGFw
c2VUaHJvdWdoID0gTWFyZ2luOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpOworICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKQorICAgICAgICB2ZXJ0
aWNhbE1hcmdpbkJlZm9yZSA9IHZlcnRpY2FsTWFyZ2luQWZ0ZXI7IAorICAgIGVsc2UgaWYgKHZl
cnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpKQorICAgICAgICB2ZXJ0aWNhbE1hcmdpbkJl
Zm9yZSA9IHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5iZWZvcmU7CisKKyAgICAv
LyBVcGRhdGUgdmVydGljYWwgbWFyZ2luIHZhbHVlcy4KKyAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRD
b2xsYXBzZWRWYWx1ZXMoeyB2ZXJ0aWNhbE1hcmdpbkJlZm9yZSwgdmVydGljYWxNYXJnaW5BZnRl
ciB9KTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsK
KworICAgIC8vIFVwZGF0ZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICBhdXRvJiBibG9j
a0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgYXV0byBwb3NpdGl2
ZU5lZ2F0aXZlTWFyZ2luID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9zaXRpdmVBbmROZWdhdGl2
ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCk7CisgICAgYXV0byBuZXh0U2libGluZ1Bvc2l0aXZl
TmVnYXRpdmVNYXJnaW5CZWZvcmUgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5l
Z2F0aXZlVmVydGljYWxNYXJnaW4oKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKS5iZWZv
cmU7CisKKyAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyID0gY29tcHV0ZWRQb3NpdGl2
ZUFuZE5lZ2F0aXZlTWFyZ2luKG5leHRTaWJsaW5nUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9y
ZSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5hZnRlcik7CisgICAgaWYgKG1hcmdpbnNDb2xsYXBz
ZVRocm91Z2gpIHsKKyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmUgPSBjb21w
dXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZv
cmUsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIpOworICAgICAgICBwb3NpdGl2ZU5lZ2F0
aXZlTWFyZ2luLmFmdGVyID0gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmU7IAorICAgIH0K
KyAgICBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5zZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxN
YXJnaW4obGF5b3V0Qm94LCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luKTsKKworICAgIGlmICghbWFy
Z2luc0NvbGxhcHNlVGhyb3VnaCB8fCAhbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3Vz
U2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1
cm47CisKKyAgICB1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91
dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSwgdmVydGljYWxNYXJnaW4pOworfQorCitQb3Np
dGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpNYXJnaW46OnBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgTWFyZ2luVHlwZSBtYXJnaW5UeXBlKQor
eworICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0
aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsK
KyAgICBhdXRvIGhhc1ByZWNvbXB1dGVkVmFsdWUgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5oYXNQ
b3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KTsKKyAgICBpZiAobWFy
Z2luVHlwZSA9PSBNYXJnaW5UeXBlOjpCZWZvcmUpCisgICAgICAgIHJldHVybiBoYXNQcmVjb21w
dXRlZFZhbHVlID8gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRp
Y2FsTWFyZ2luKGxheW91dEJveCkuYmVmb3JlIDogcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9y
ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4gaGFzUHJlY29tcHV0ZWRWYWx1
ZSA/IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bihsYXlvdXRCb3gpLmFmdGVyIDogcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpOworfQorCitQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46
OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnBvc2l0aXZlTmVnYXRpdmVN
YXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCkKK3sKKyAgICBhdXRvIGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBb
Jl0oKSAtPiBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyB7CisgICAg
ICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgYXV0byogZmlyc3RJbkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgICAgIGlmICghZmlyc3RJbkZsb3dD
aGlsZCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghbWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtzOjpz
aG91bGRJZ25vcmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpmaXJzdEluRmxvd0NoaWxkKSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBwb3NpdGl2ZU5lZ2F0aXZl
VmFsdWVzKGxheW91dFN0YXRlLCAqZmlyc3RJbkZsb3dDaGlsZCwgTWFyZ2luVHlwZTo6QmVmb3Jl
KTsKKyAgICB9OworCisgICAgYXV0byBwcmV2aW91U2libGluZ0NvbGxhcHNlZE1hcmdpbkFmdGVy
ID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgewor
ICAgICAgICBhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJ
bkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJsaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNX
aXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtzOjpzaG91bGRJZ25vcmVN
YXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZykpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhs
YXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZywgTWFyZ2luVHlwZTo6QWZ0ZXIpOwor
ICAgIH07CisKKyAgICAvLyAxLiBHYXRoZXIgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdpbiB2
YWx1ZXMgZnJvbSBmaXJzdCBjaGlsZCBpZiBtYXJnaW5zIGFyZSBhZGpvaW5pbmcuCisgICAgLy8g
Mi4gR2F0aGVyIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdmFsdWVzIGZyb20gcHJldmlv
dXMgaW5mbG93IHNpYmxpbmcgaWYgbWFyZ2lucyBhcmUgYWRqb2luaW5nLgorICAgIC8vIDMuIENv
bXB1dGUgbWluL21heCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgY29sbGFwc2VkIG1hcmdpbiB2YWx1
ZXMgdXNpbmcgbm9uLWNvbGxwYXNlZCBjb21wdXRlZCBtYXJnaW4gYmVmb3JlLgorICAgIGF1dG8g
Y29sbGFwc2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2lu
KGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSwgcHJldmlvdVNpYmxpbmdDb2xsYXBz
ZWRNYXJnaW5BZnRlcigpKTsKKyAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSA9IEdl
b21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3Rh
dGUsIGxheW91dEJveCkuYmVmb3JlOworICAgIHJldHVybiBjb21wdXRlZFBvc2l0aXZlQW5kTmVn
YXRpdmVNYXJnaW4oY29sbGFwc2VkTWFyZ2luQmVmb3JlLCBub25Db2xsYXBzZWRNYXJnaW5CZWZv
cmUpOworfQorCitQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcihj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorewor
ICAgIGF1dG8gbGFzdENoaWxkQ29sbGFwc2VkTWFyZ2luQWZ0ZXIgPSBbJl0oKSAtPiBQb3NpdGl2
ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyB7CisgICAgICAgIGlmICghaXM8Q29u
dGFpbmVyPihsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgYXV0
byogbGFzdEluRmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJ
bkZsb3dDaGlsZCgpOworICAgICAgICBpZiAoIWxhc3RJbkZsb3dDaGlsZCkKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTGFzdElu
Rmxvd0NoaWxkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRl
cihsYXlvdXRTdGF0ZSwgKmxhc3RJbkZsb3dDaGlsZCkpCisgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhsYXlvdXRTdGF0ZSwgKmxh
c3RJbkZsb3dDaGlsZCwgTWFyZ2luVHlwZTo6QWZ0ZXIpOworICAgIH07CisKKyAgICAvLyBXZSBk
b24ndCBrbm93IHlldCB0aGUgbWFyZ2luIGJlZm9yZSB2YWx1ZSBvZiB0aGUgbmV4dCBzaWJsaW5n
LiBMZXQncyBqdXN0IHByZXRlbmQgaXQgZG9lcyBub3QgaGF2ZSBvbmUgYW5kIAorICAgIC8vIHVw
ZGF0ZSBpdCBsYXRlciB3aGVuIHdlIGNvbXB1dGUgdGhlIG5leHQgc2libGluZydzIG1hcmdpbiBi
ZWZvcmUuIFNlZSB1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlci4KKyAgICBhdXRvIG5vbkNvbGxh
cHNlZE1hcmdpbkFmdGVyID0gR2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxN
YXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5hZnRlcjsKKyAgICByZXR1cm4gY29t
cHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGxhc3RDaGlsZENvbGxhcHNlZE1hcmdpbkFm
dGVyKCksIG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKTsKK30KKworRXN0aW1hdGVkTWFyZ2luQmVm
b3JlIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6ZXN0aW1hdGVkTWFyZ2luQmVmb3Jl
KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7
CisgICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgLy8gQ2FuJ3Qg
ZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cgYm94ZXMgKGFuZCB3ZSBz
aG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgorICAgIEFTU0VSVChsYXlv
dXRCb3guaXNJbkZsb3coKSk7CisgICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0IGJvdW5kYXJ5LgorICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dCgpKTsKKworICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIHsgbWFyZ2luVmFsdWUocG9z
aXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkudmFsdWVP
cigwKSB9OworICAgIAorICAgIHJldHVybiB7IG1hcmdpblZhbHVlKGNvbXB1dGVkUG9zaXRpdmVB
bmROZWdhdGl2ZU1hcmdpbihwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpLCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpKS52YWx1ZU9yKDApIH07Cit9CisKK1ZlcnRpY2FsTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbjo6dmVydGljYWwoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnlt
b3VzKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKKyAgICAvLyAxLiBHZXQgbWluL21heCBtYXJnaW4gdG9wIHZhbHVlcyBm
cm9tIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGlmIHdlIGFyZSBjb2xsYXBzaW5nIG1hcmdpbiB0
b3Agd2l0aCBpdC4KKyAgICAvLyAyLiBHZXQgbWluL21heCBtYXJnaW4gdG9wIHZhbHVlcyBmcm9t
IHRoZSBwcmV2aW91cyBpbi1mbG93IHNpYmxpbmcsIGlmIHdlIGFyZSBjb2xsYXBzaW5nIG1hcmdp
biB0b3Agd2l0aCBpdC4KKyAgICAvLyAzLiBHZXQgdGhpcyBsYXlvdXQgYm94J3MgY29tcHV0ZWQg
bWFyZ2luIHRvcCB2YWx1ZS4KKyAgICAvLyA0LiBVcGRhdGUgdGhlIG1pbi9tYXggdmFsdWUgYW5k
IGNvbXB1dGUgdGhlIGZpbmFsIG1hcmdpbi4gCisgICAgYXV0byBwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQmVmb3JlID0gTWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyID0g
TWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJv
eCk7CisKKyAgICBhdXRvIG1hcmdpbnNDb2xsYXBzZVRocm91Z2ggPSBNYXJnaW46Om1hcmdpbnND
b2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7IAorICAgIGlmIChtYXJnaW5z
Q29sbGFwc2VUaHJvdWdoKSB7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUg
PSBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdp
bkJlZm9yZSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKTsKKyAgICAgICAgcG9zaXRpdmVO
ZWdhdGl2ZU1hcmdpbkFmdGVyID0gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZTsgICAgICAg
ICAKKyAgICB9CisKKyAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJs
b2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5
b3V0Qm94KSk7CisgICAgYmxvY2tGb3JtYXR0aW5nU3RhdGUuc2V0UG9zaXRpdmVBbmROZWdhdGl2
ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgeyBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3Jl
LCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIgfSk7CisKKyAgICBWZXJ0aWNhbE1hcmdpbjo6
Q29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luID0geyBtYXJnaW5WYWx1ZShw
b3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKSwgbWFyZ2luVmFsdWUocG9zaXRpdmVOZWdhdGl2
ZU1hcmdpbkFmdGVyKSwgbWFyZ2luc0NvbGxhcHNlVGhyb3VnaCB9OyAKKyAgICByZXR1cm4geyBH
ZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpLCBjb2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiB9OworfQorCit9Cit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1Njc3MDg3NDUzOTRhNzg1Yjg0ZDk3YzgyZjVmNDgxMzVhM2Y4ZDUwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0NjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgiCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgotI2lu
Y2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgotI2luY2x1
ZGUgIkxheW91dFVuaXQuaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQotc3RhdGljIGJvb2wgaGFzQm9yZGVyKGNv
bnN0IEJvcmRlclZhbHVlJiBib3JkZXJWYWx1ZSkKLXsKLSAgICBpZiAoYm9yZGVyVmFsdWUuc3R5
bGUoKSA9PSBCb3JkZXJTdHlsZTo6Tm9uZSB8fCBib3JkZXJWYWx1ZS5zdHlsZSgpID09IEJvcmRl
clN0eWxlOjpIaWRkZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gISFib3Jk
ZXJWYWx1ZS53aWR0aCgpOwotfQotCi1zdGF0aWMgYm9vbCBoYXNQYWRkaW5nKGNvbnN0IExlbmd0
aCYgcGFkZGluZ1ZhbHVlKQotewotICAgIC8vIEZJWE1FOiBDaGVjayBpZiBwZXJjZW50IHZhbHVl
IG5lZWRzIHRvIGJlIHJlc29sdmVkLgotICAgIHJldHVybiAhcGFkZGluZ1ZhbHVlLmlzWmVybygp
OwotfQotCi1zdGF0aWMgYm9vbCBoYXNCb3JkZXJCZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gp
Ci17Ci0gICAgcmV0dXJuIGhhc0JvcmRlcihsYXlvdXRCb3guc3R5bGUoKS5ib3JkZXJCZWZvcmUo
KSk7Ci19Ci0KLXN0YXRpYyBib29sIGhhc0JvcmRlckFmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94
KQotewotICAgIHJldHVybiBoYXNCb3JkZXIobGF5b3V0Qm94LnN0eWxlKCkuYm9yZGVyQWZ0ZXIo
KSk7Ci19Ci0KLXN0YXRpYyBib29sIGhhc1BhZGRpbmdCZWZvcmUoY29uc3QgQm94JiBsYXlvdXRC
b3gpCi17Ci0gICAgcmV0dXJuIGhhc1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0Jl
Zm9yZSgpKTsKLX0KLQotc3RhdGljIGJvb2wgaGFzUGFkZGluZ0FmdGVyKGNvbnN0IEJveCYgbGF5
b3V0Qm94KQotewotICAgIHJldHVybiBoYXNQYWRkaW5nKGxheW91dEJveC5zdHlsZSgpLnBhZGRp
bmdBZnRlcigpKTsKLX0KLQotc3RhdGljIGJvb2wgaGFzQ2xlYXJhbmNlKGNvbnN0IEJveCYgbGF5
b3V0Qm94KQotewotICAgIGlmICghbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIC8vIEZJWE1FCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0
aWMgYm9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBsYXlv
dXRCb3gpCi17Ci0gICAgLy8gV2ViS2l0IHRyZWF0cyB0aGUgZG9jdW1lbnQgZWxlbWVudCByZW5k
ZXJlciBhcyBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCByb290LiBJdCBwcm9iYWJseSBvbmx5
IGltcGFjdHMgbWFyZ2luIGNvbGxhcHNpbmcsIHNvIGxldCdzIG5vdCBkbwotICAgIC8vIGEgbGF5
b3V0IHdpZGUgcXVpcmsgb24gdGhpcyBmb3Igbm93LgotICAgIGlmIChsYXlvdXRCb3guaXNEb2N1
bWVudEJveCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbGF5b3V0Qm94LmVz
dGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOwotfQotCi1zdGF0aWMgTGF5b3V0VW5p
dCBtYXJnaW5WYWx1ZShMYXlvdXRVbml0IGN1cnJlbnRNYXJnaW5WYWx1ZSwgTGF5b3V0VW5pdCBj
YW5kaWRhdGVNYXJnaW5WYWx1ZSkKLXsKLSAgICBpZiAoIWNhbmRpZGF0ZU1hcmdpblZhbHVlKQot
ICAgICAgICByZXR1cm4gY3VycmVudE1hcmdpblZhbHVlOwotICAgIGlmICghY3VycmVudE1hcmdp
blZhbHVlKQotICAgICAgICByZXR1cm4gY2FuZGlkYXRlTWFyZ2luVmFsdWU7Ci0gICAgLy8gQm90
aCBtYXJnaW5zIGFyZSBwb3NpdGl2ZS4KLSAgICBpZiAoY2FuZGlkYXRlTWFyZ2luVmFsdWUgPiAw
ICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA+IDApCi0gICAgICAgIHJldHVybiBzdGQ6Om1heChjYW5k
aWRhdGVNYXJnaW5WYWx1ZSwgY3VycmVudE1hcmdpblZhbHVlKTsKLSAgICAvLyBCb3RoIG1hcmdp
bnMgYXJlIG5lZ2F0aXZlLgotICAgIGlmIChjYW5kaWRhdGVNYXJnaW5WYWx1ZSA8IDAgJiYgY3Vy
cmVudE1hcmdpblZhbHVlIDwgMCkKLSAgICAgICAgcmV0dXJuIDAgLSBzdGQ6Om1heChzdGQ6OmFi
cyhjYW5kaWRhdGVNYXJnaW5WYWx1ZS50b0Zsb2F0KCkpLCBzdGQ6OmFicyhjdXJyZW50TWFyZ2lu
VmFsdWUudG9GbG9hdCgpKSk7Ci0gICAgLy8gT25lIG9mIHRoZSBtYXJnaW5zIGlzIG5lZ2F0aXZl
LgotICAgIHJldHVybiBjdXJyZW50TWFyZ2luVmFsdWUgKyBjYW5kaWRhdGVNYXJnaW5WYWx1ZTsK
LX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxh
eW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWROb25Db2xs
YXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmJlZm9yZTsK
LX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5
b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIHJldHVybiBjb21wdXRlZE5vbkNvbGxh
cHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCkuYWZ0ZXI7Ci19
Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNv
bGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
QmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE5vbiBjb2xsYXBzZWQgbWFyZ2luIHRvcCBpbmNs
dWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93IGZpcnN0IGNoaWxkLgotICAgIHJldHVy
biBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQobGF5b3V0
U3RhdGUsIGxheW91dEJveCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAg
ICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE5vbiBjb2xs
YXBzZWQgbWFyZ2luIGJvdHRvbSBpbmNsdWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93
IGxhc3QgY2hpbGQuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29sbGFwc2Vk
TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCksIGNvbGxhcHNlZE1hcmdpbkFmdGVy
RnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7Ci19Ci0KLUxheW91dFVuaXQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBz
ZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9j
a0xldmVsQm94KCkpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIGZpcnN0IGNoaWxkIGNvbGxhcHNl
cyBpdHMgbWFyZ2luIHRvcC4KLSAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAh
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgLy8gRG8gbm90IGNvbGxhcHNlIG1hcmdpbiB3aXRoIGEgYm94IGZy
b20gYSBub24tYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IDxkaXY+PHNwYW4+Zm9vYmFyPC9zcGFu
PjwvZGl2Pi4KLSAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQo
KSAmJiAhbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhNRTogVGFrZSBjb2xsYXBzZWQgdGhyb3Vn
aCBtYXJnaW4gaW50byBhY2NvdW50LgotICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqZG93
bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAo
IW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUs
IGZpcnN0SW5GbG93Q2hpbGQpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAvLyBDb2xsZWN0IGNv
bGxhcHNlZCBtYXJnaW4gdG9wIHJlY3Vyc2l2ZWx5LgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShj
b21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dD
aGlsZCksIGNvbGxhcHNlZE1hcmdpbkJlZm9yZUZyb21GaXJzdENoaWxkKGxheW91dFN0YXRlLCBm
aXJzdEluRmxvd0NoaWxkKSk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0
Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8v
IENoZWNrIGlmIHRoZSBsYXN0IGNoaWxkIHByb3BhZ2F0ZXMgaXRzIG1hcmdpbiBib3R0b20uCi0g
ICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8v
IERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1h
dHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxh
eW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgLy8gRklYTUU6IENoZWNrIGZvciBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4uCi0gICAg
YXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5s
YXN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXN0SW5GbG93Q2hpbGQpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIC8vIENvbGxlY3QgY29sbGFwc2VkIG1hcmdpbiBib3R0b20gcmVjdXJzaXZl
bHkuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCksIGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJv
bUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxkKSk7Ci19Ci0KLWJvb2wgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZv
cmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICAvLyAxLiBUaGlzIGlzIHRoZSBs
YXN0IGluLWZsb3cgY2hpbGQgYW5kIGl0cyBtYXJnaW5zIGNvbGxhcHNlIHRocm91Z2ggYW5kIHRo
ZSBtYXJnaW4gYWZ0ZXIgY29sbGFwc2VzIHdpdGggcGFyZW50J3MgbWFyZ2luIGFmdGVyIG9yCi0g
ICAgLy8gMi4gVGhpcyBib3gncyBtYXJnaW4gYWZ0ZXIgY29sbGFwc2VzIHdpdGggdGhlIG5leHQg
c2libGluZydzIG1hcmdpbiBiZWZvcmUgYW5kIHRoYXQgc2libGluZyBjb2xsYXBzZXMgdGhyb3Vn
aCBhbmQKLSAgICAvLyB3ZSBjYW4gZ2V0IHRvIHRoZSBsYXN0IGluLWZsb3cgY2hpbGQgbGlrZSB0
aGF0LgotICAgIGF1dG8qIGxhc3RJbkZsb3dDaGlsZCA9IGxheW91dEJveC5wYXJlbnQoKS0+bGFz
dEluRmxvd0NoaWxkKCk7Ci0gICAgZm9yIChhdXRvKiBjdXJyZW50Qm94ID0gJmxheW91dEJveDsg
Y3VycmVudEJveDsgY3VycmVudEJveCA9IGN1cnJlbnRCb3gtPm5leHRJbkZsb3dTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqY3Vy
cmVudEJveCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChjdXJyZW50
Qm94ID09IGxhc3RJbkZsb3dDaGlsZCkKLSAgICAgICAgICAgIHJldHVybiBtYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAK
LSAgICAgICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZygqY3VycmVu
dEJveCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCkKLXsKLSAgICAvLyBUaGUgZmlyc3QgaW5mbG93IGNoaWxkIGNvdWxk
IHByb3BhZ2F0ZSBpdHMgdG9wIG1hcmdpbiB0byBwYXJlbnQuCi0gICAgLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL2JveC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucwotICAgIGlmIChsYXlv
dXRCb3guaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJU
KGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBNYXJnaW5zIGJldHdlZW4g
YSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3Qg
Y29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94
ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBPbmx5IHRoZSBmaXJzdCBpbmxmbG93
IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KLSAgICBpZiAobGF5b3V0Qm94LnByZXZpb3Vz
SW5GbG93U2libGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBwYXJl
bnQgPSAqbGF5b3V0Qm94LnBhcmVudCgpOwotICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhh
dCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNl
IHdpdGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbgotICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQocGFyZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KGhhc0JvcmRlckJlZm9yZShwYXJlbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoaGFzUGFkZGluZ0JlZm9yZShwYXJlbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyAuLi5hbmQgdGhlIGNoaWxkIGhhcyBubyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFy
YW5jZShsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUobGF5b3V0
U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhD
bGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKLXsKLSAgICAvLyBJZiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBvZiBhbiBlbGVt
ZW50IHdpdGggY2xlYXJhbmNlIGFyZSBhZGpvaW5pbmcsIGl0cyBtYXJnaW5zIGNvbGxhcHNlIHdp
dGggdGhlIGFkam9pbmluZyBtYXJnaW5zCi0gICAgLy8gb2YgZm9sbG93aW5nIHNpYmxpbmdzIGJ1
dCB0aGF0IHJlc3VsdGluZyBtYXJnaW4gZG9lcyBub3QgY29sbGFwc2Ugd2l0aCB0aGUgYm90dG9t
IG1hcmdpbiBvZiB0aGUgcGFyZW50IGJsb2NrLgotICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhy
b3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgZm9yIChhdXRvKiBwcmV2aW91c1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dT
aWJsaW5nKCk7IHByZXZpb3VzU2libGluZzsgcHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJs
aW5nLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewotICAgICAgICBpZiAoIW1hcmdpbnNDb2xs
YXBzZVRocm91Z2gobGF5b3V0U3RhdGUsICpwcmV2aW91c1NpYmxpbmcpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoaGFzQ2xlYXJhbmNlKCpwcmV2aW91c1NpYmxpbmcp
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIC8vIDEuIFRo
aXMgaXMgdGhlIGZpcnN0IGluLWZsb3cgY2hpbGQgYW5kIGl0cyBtYXJnaW5zIGNvbGxhcHNlIHRo
cm91Z2ggYW5kIHRoZSBtYXJnaW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdzIG1hcmdp
biBiZWZvcmUgb3IKLSAgICAvLyAyLiBUaGlzIGJveCdzIG1hcmdpbiBiZWZvcmUgY29sbGFwc2Vz
IHdpdGggdGhlIHByZXZpb3VzIHNpYmxpbmcncyBtYXJnaW4gYWZ0ZXIgYW5kIHRoYXQgc2libGlu
ZyBjb2xsYXBzZXMgdGhyb3VnaCBhbmQKLSAgICAvLyB3ZSBjYW4gZ2V0IHRvIHRoZSBmaXJzdCBp
bi1mbG93IGNoaWxkIGxpa2UgdGhhdC4KLSAgICBhdXRvKiBmaXJzdEluRmxvd0NoaWxkID0gbGF5
b3V0Qm94LnBhcmVudCgpLT5maXJzdEluRmxvd0NoaWxkKCk7Ci0gICAgZm9yIChhdXRvKiBjdXJy
ZW50Qm94ID0gJmxheW91dEJveDsgY3VycmVudEJveDsgY3VycmVudEJveCA9IGN1cnJlbnRCb3gt
PnByZXZpb3VzSW5GbG93U2libGluZygpKSB7Ci0gICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNl
VGhyb3VnaChsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBpZiAoY3VycmVudEJveCA9PSBmaXJzdEluRmxvd0NoaWxkKQotICAgICAg
ICAgICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUo
bGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KTsgCi0gICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29s
bGFwc2VzV2l0aFByZXZpb3VzU2libGluZygqY3VycmVudEJveCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAg
aWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE1hcmdpbnMg
YmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4K
LSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVz
IGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1i
bG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc0lubGluZUJs
b2NrQm94KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9ubHkgdGhlIGxhc3Qg
aW5sZmxvdyBjaGlsZCBjb2xsYXBzZXMgd2l0aCBwYXJlbnQuCi0gICAgaWYgKGxheW91dEJveC5u
ZXh0SW5GbG93U2libGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBw
YXJlbnQgPSAqbGF5b3V0Qm94LnBhcmVudCgpOwotICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMg
dGhhdCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxh
cHNlIHdpdGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4KLSAgICBpZiAoZXN0YWJsaXNoZXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KHBhcmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2sgYm94IHdpdGggYSAnaGVp
Z2h0JyBvZiAnYXV0bycgY29sbGFwc2VzIHdpdGggaXRzIGxhc3QgaW4tZmxvdyBibG9jay1sZXZl
bCBjaGlsZCdzIGJvdHRvbSBtYXJnaW4sIGlmOgotICAgIGlmICghcGFyZW50LnN0eWxlKCkuaGVp
Z2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHRoZSBib3gg
aGFzIG5vIGJvdHRvbSBwYWRkaW5nLCBhbmQKLSAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShwYXJl
bnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyB0aGUgYm94IGhhcyBubyBib3R0
b20gYm9yZGVyLCBhbmQKLSAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4gbmVpdGhl
ciBjb2xsYXBzZXMgd2l0aCBhIHRvcCBtYXJnaW4gdGhhdCBoYXMgY2xlYXJhbmNlLi4uCi0gICAg
aWYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJh
bmNlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBub3IgKGlmIHRoZSBib3gncyBtaW4taGVpZ2h0IGlzIG5vbi16ZXJvKSB3aXRoIHRoZSBi
b3gncyB0b3AgbWFyZ2luLgotICAgIGF1dG8gY29tcHV0ZWRNaW5IZWlnaHQgPSBwYXJlbnQuc3R5
bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCk7Ci0gICAgaWYgKCFjb21wdXRlZE1pbkhlaWdodC5pc0F1
dG8oKSAmJiBjb21wdXRlZE1pbkhlaWdodC52YWx1ZSgpICYmIG1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoUHJldmlvdXNTaWJsaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VS
VChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgaWYgKCFsYXlvdXRCb3gucHJl
dmlvdXNJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8m
IHByZXZpb3VzSW5GbG93U2libGluZyA9ICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5n
KCk7Ci0KLSAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVy
IGJveCBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9z
aXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKChsYXlvdXRCb3guaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5zdHlsZSgpLnRvcCgpLmlzQXV0bygpKQot
ICAgICAgICB8fCAocHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
ICYmICFwcmV2aW91c0luRmxvd1NpYmxpbmcuc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJv
eGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3go
KSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJs
b2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9m
Ci0gICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1bmxlc3MgdGhh
dCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFyYW5jZShsYXlvdXRCb3gp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFm
dGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAg
IEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgaWYgKCFsYXlvdXRC
b3gubmV4dEluRmxvd1NpYmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcoKmxheW91dEJveC5u
ZXh0SW5GbG93U2libGluZygpKTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NF
UlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIEEgYm94J3Mgb3duIG1h
cmdpbnMgY29sbGFwc2UgaWYgdGhlICdtaW4taGVpZ2h0JyBwcm9wZXJ0eSBpcyB6ZXJvLCBhbmQg
aXQgaGFzIG5laXRoZXIgdG9wIG9yIGJvdHRvbSBib3JkZXJzIG5vciB0b3Agb3IgYm90dG9tIHBh
ZGRpbmcsCi0gICAgLy8gYW5kIGl0IGhhcyBhICdoZWlnaHQnIG9mIGVpdGhlciAwIG9yICdhdXRv
JywgYW5kIGl0IGRvZXMgbm90IGNvbnRhaW4gYSBsaW5lIGJveCwgYW5kIGFsbCBvZiBpdHMgaW4t
ZmxvdyBjaGlsZHJlbidzIG1hcmdpbnMgKGlmIGFueSkgY29sbGFwc2UuCi0gICAgaWYgKGhhc0Jv
cmRlckJlZm9yZShsYXlvdXRCb3gpIHx8IGhhc0JvcmRlckFmdGVyKGxheW91dEJveCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkg
fHwgaGFzUGFkZGluZ0FmdGVyKGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgY29tcHV0ZWQgMCBoZWlnaHQuCi0gICAgaWYgKCFsYXlv
dXRCb3guc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRklYTUU6IENoZWNrIGZvciBjb21wdXRlZCAwIGhlaWdodC4KLSAgICBpZiAoIWxh
eW91dEJveC5zdHlsZSgpLm1pbkhlaWdodCgpLmlzQXV0bygpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkgewotICAgICAgICBpZiAoZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihs
YXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRCb3gpKS5pbmxpbmVS
dW5zKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGZvciAoYXV0byogaW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOyBpbmZsb3dDaGlsZDsgaW5mbG93Q2hpbGQgPSBp
bmZsb3dDaGlsZC0+bmV4dEluRmxvd1NpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFtYXJn
aW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBj
b25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxC
b3goKSk7Ci0KLSAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVBbmRB
ZnRlcigpIGludG8gYWNjb3VudC4KLSAgICBpZiAobWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBh
cmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAvLyBGSVhNRTogRmluZCBvdXQgdGhlIGxvZ2ljIGJlaGluZCB0aGlzLgotICAg
IGlmIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJl
Zm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBp
ZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcobGF5b3V0Qm94KSkg
ewotICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91
dEJveCkpCi0gICAgICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2xsYXBzZWQgdGhy
b3VnaCB2YWx1ZS4KLSAgICAgICAgYXV0byBtYXJnaW5CZWZvcmUgPSBub25Db2xsYXBzZWRNYXJn
aW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luQWZ0
ZXIgPSBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsgCi0g
ICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyKTsKLSAg
ICB9Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVs
IGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0
IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywKLSAgICAvLyB1bmxlc3MgdGhhdCBzaWJsaW5n
IGhhcyBjbGVhcmFuY2UuCi0gICAgYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0
Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJs
aW5nKQotICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOwotCi0gICAgYXV0byBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlciA9IG5v
bkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqcHJldmlvdXNJbkZsb3dTaWJsaW5n
KTsKLSAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3Jl
LCBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcik7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAg
IGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBB
U1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIFRPRE86IHRha2Ug
X2hhc0Fkam9pbmluZ01hcmdpbkJlZm9yZUFuZEJvdHRvbSgpIGludG8gYWNjb3VudC4KLSAgICBp
ZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG1hcmdpbnNDb2xsYXBz
ZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gRmxvYXRzIGFuZCBvdXQgb2YgZmxvdyBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xs
YXBzZSB0aGVpciBtYXJnaW5zLgotICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4
dFNpYmxpbmcobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkFm
dGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4g
b2YgYW4gaW4tZmxvdyBibG9jay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0
aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsCi0g
ICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgIGlmIChsYXlvdXRC
b3gubmV4dEluRmxvd1NpYmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5v
bkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotfQotCi19Ci19
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
Qm94LmNwcAppbmRleCAwMjdiNDM0YmJjNmQ0YzJmNTUxMGFmY2U5YzUwNzgzOWU2NDllMjQ0Li42
ZGI3ZGVkYjM3YWM5ZTM4ZmI5NDU2ODI5NjllODdkNmJlNDNlZWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCkBAIC02MCw3ICs2MCw3
IEBAIEJveDo6Qm94KGNvbnN0IEJveCYgb3RoZXIpCiAgICAgLCBtX2hvcml6b250YWxNYXJnaW4o
b3RoZXIubV9ob3Jpem9udGFsTWFyZ2luKQogICAgICwgbV92ZXJ0aWNhbE1hcmdpbihvdGhlci5t
X3ZlcnRpY2FsTWFyZ2luKQogICAgICwgbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4ob3Ro
ZXIubV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4pCi0gICAgLCBtX2VzdGltYXRlZE1hcmdp
bkJlZm9yZShvdGhlci5tX2VzdGltYXRlZE1hcmdpbkJlZm9yZSkKKyAgICAsIG1faGFzQ2xlYXJh
bmNlKG90aGVyLm1faGFzQ2xlYXJhbmNlKQogICAgICwgbV9ib3JkZXIob3RoZXIubV9ib3JkZXIp
CiAgICAgLCBtX3BhZGRpbmcob3RoZXIubV9wYWRkaW5nKQogI2lmICFBU1NFUlRfRElTQUJMRUQK
QEAgLTc0LDYgKzc0LDcgQEAgQm94OjpCb3goY29uc3QgQm94JiBvdGhlcikKICAgICAsIG1faGFz
VmFsaWRQYWRkaW5nKG90aGVyLm1faGFzVmFsaWRQYWRkaW5nKQogICAgICwgbV9oYXNWYWxpZENv
bnRlbnRIZWlnaHQob3RoZXIubV9oYXNWYWxpZENvbnRlbnRIZWlnaHQpCiAgICAgLCBtX2hhc1Zh
bGlkQ29udGVudFdpZHRoKG90aGVyLm1faGFzVmFsaWRDb250ZW50V2lkdGgpCisgICAgLCBtX2Vz
dGltYXRlZE1hcmdpbkJlZm9yZShvdGhlci5tX2VzdGltYXRlZE1hcmdpbkJlZm9yZSkKICNlbmRp
ZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
LmgKaW5kZXggNTYzOTJmNDdlZTc5ZTMwZDNmMGUyMTg5NGQzZjE0YmI4NzVkN2U4OS4uNWFjYjA4
N2ZmYWI0OTIwNGY2Y2I2NzY3ZDE1N2QzMzA3MDk5OWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCkBAIC0xMzYsMjEgKzEzNiwyMCBAQCBw
dWJsaWM6CiAgICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQo
KSArIHBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKSArIGNvbnRlbnRCb3hXaWR0aCgpICsgcGFkZGlu
Z1JpZ2h0KCkudmFsdWVPcigwKSArIGJvcmRlclJpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0IGhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpLnZhbHVlT3Io
MCkgKyBjb250ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKSArIGJv
cmRlckJvdHRvbSgpOyB9CiAgICAgUmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSwg
bGVmdCgpLCB3aWR0aCgpLCBoZWlnaHQoKSB9OyB9Ci0gICAgUmVjdCByZWN0V2l0aE1hcmdpbigp
IGNvbnN0IHsgcmV0dXJuIHsgdG9wKCkgLSBtYXJnaW5CZWZvcmUoKSwgbGVmdCgpIC0gbWFyZ2lu
U3RhcnQoKSwgbWFyZ2luU3RhcnQoKSArIHdpZHRoKCkgKyBtYXJnaW5FbmQoKSwgbWFyZ2luQmVm
b3JlKCkgKyBoZWlnaHQoKSArIG1hcmdpbkFmdGVyKCkgfTsgfQorICAgIFJlY3QgcmVjdFdpdGhN
YXJnaW4oKSBjb25zdDsKIAogICAgIExheW91dDo6VmVydGljYWxNYXJnaW4gdmVydGljYWxNYXJn
aW4oKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSgpIGNvbnN0OwogICAgIExh
eW91dFVuaXQgbWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkFmdGVy
KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQoKSBjb25zdDsKKyAgICBib29sIGhh
c0NsZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2xlYXJhbmNlOyB9CiAKICAgICBMYXlv
dXRVbml0IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQg
bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG5vbkNvbXB1
dGVkTWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG5vbkNvbXB1dGVkTWFyZ2lu
RW5kKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsgfQotCiAgICAg
TGF5b3V0VW5pdCBib3JkZXJUb3AoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJvcmRlckxlZnQo
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRvbSgpIGNvbnN0OwpAQCAtMTc1LDYg
KzE3NCwxMSBAQCBwdWJsaWM6CiAgICAgUmVjdCBwYWRkaW5nQm94KCkgY29uc3Q7CiAgICAgUmVj
dCBjb250ZW50Qm94KCkgY29uc3Q7CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdm9pZCBz
ZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoTGF5b3V0OjpFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgbWFy
Z2luQmVmb3JlKSB7IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9Cisg
ICAgT3B0aW9uYWw8TGF5b3V0OjpFc3RpbWF0ZWRNYXJnaW5CZWZvcmU+IGVzdGltYXRlZE1hcmdp
bkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOyB9CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU3R5bGUgewogICAgICAgICBTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYpOwpAQCAtMTk0LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRI
b3Jpem9udGFsTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRW
ZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luKTsKICAgICB2b2lkIHNldEhvcml6
b250YWxOb25Db21wdXRlZE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwotICAgIHZv
aWQgc2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSB7IG1f
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CisgICAgdm9pZCBzZXRIYXND
bGVhcmFuY2UoKSB7IG1faGFzQ2xlYXJhbmNlID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRCb3Jk
ZXIoTGF5b3V0OjpFZGdlcyk7CiAgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6
RWRnZXM+KTsKQEAgLTIwMyw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0
ZU1hcmdpbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRl
ciA9IGZhbHNlOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNWYWxpZFBh
ZGRpbmcgPSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9y
ZSgpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSB7IH07IH0KIAogICAgIHZvaWQgc2V0SGFz
VmFsaWRUb3AoKSB7IG1faGFzVmFsaWRUb3AgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxp
ZExlZnQoKSB7IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsgfQpAQCAtMjI3LDcgKzIzMiw3IEBAIHBy
aXZhdGU6CiAgICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE1hcmdpbjsK
ICAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1fdmVydGljYWxNYXJnaW47CiAgICAgTGF5b3V0
OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luOwotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOworICAgIGJvb2wgbV9o
YXNDbGVhcmFuY2U7CiAKICAgICBMYXlvdXQ6OkVkZ2VzIG1fYm9yZGVyOwogICAgIE9wdGlvbmFs
PExheW91dDo6RWRnZXM+IG1fcGFkZGluZzsKQEAgLTI0Myw2ICsyNDgsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxp
ZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRXaWR0
aCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8TGF5b3V0OjpFc3RpbWF0ZWRNYXJnaW5CZWZvcmU+
IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOwogI2VuZGlmCiB9OwogCkBAIC01MjAsOCArNTI2LDgg
QEAgaW5saW5lIHZvaWQgQm94OjpzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZlcnRpY2FsTWFy
Z2luIG1hcmdpbikKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNh
bE1hcmdpbigpOwogICAgIHNldEhhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4oKTsK
KyAgICBpbnZhbGlkYXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKCk7CiAjZW5kaWYKLSAgICBBU1NF
UlQoIW1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlIHx8ICptX2VzdGltYXRlZE1hcmdpbkJlZm9yZSA9
PSBtYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZSk7CiAgICAgbV92ZXJ0aWNhbE1hcmdpbiA9IG1h
cmdpbjsKIH0KIApAQCAtNTQ5LDYgKzU1NSwxNCBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFBhZGRp
bmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gcGFkZGluZykKICAgICBtX3BhZGRpbmcgPSBwYWRk
aW5nOwogfQogCitpbmxpbmUgQm94OjpSZWN0IEJveDo6cmVjdFdpdGhNYXJnaW4oKSBjb25zdAor
eworICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSB0aGlzLT5tYXJnaW5BZnRlcigpOworICAgIGlmICht
X3ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIG1fdmVydGljYWxNYXJnaW4uY29s
bGFwc2VkVmFsdWVzKCktPmlzQ29sbGFwc2VkVGhyb3VnaCkKKyAgICAgICAgbWFyZ2luQWZ0ZXIg
PSAwOworICAgIHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIGxlZnQoKSAtIG1hcmdp
blN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2luRW5kKCksIG1hcmdpbkJl
Zm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5BZnRlciB9OworfQorCiBpbmxpbmUgTGF5b3V0OjpW
ZXJ0aWNhbE1hcmdpbiBCb3g6OnZlcnRpY2FsTWFyZ2luKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
bG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCA3MWZjMDYwNjUyMjc4MGRiYWQyM2E5OGY1
OTk0YTg1MzhjYTMyZTM5Li5mY2RiNTA3N2U2Y2Q4ZjUzM2JjYWZiZDExMWE3YzgwMjU0NTc5Yjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQu
Y3BwCkBAIC0xODMsMzQgKzE4MywzMiBAQCBPcHRpb25hbDxQb3NpdGlvbj4gRmxvYXRpbmdDb250
ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShjb25zdCBCb3gmIGxheQogICAgICAg
ICBpZiAoY2xlYXJhbmNlIDw9IDApCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCisgICAgICAg
IGRpc3BsYXlCb3guc2V0SGFzQ2xlYXJhbmNlKCk7CiAgICAgICAgIC8vIENsZWFyYW5jZSBpbmhp
Yml0cyBtYXJnaW4gY29sbGFwc2luZy4gTGV0J3MgcmVzZXQgdGhlIHJlbGV2YW50IGFkam9pbmlu
ZyBtYXJnaW5zLgogICAgICAgICBpZiAoYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5
b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CiAgICAgICAgICAgICBhdXRvJiBwcmV2
aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpOworICAgICAgICAgICAgLy8gRG9lcyB0aGlzIGJveCB3
aXRoIGNsZWFyYW5jZSBhY3R1YWxseSBjb2xsYXBzZSBpdHMgbWFyZ2luIGJlZm9yZSB3aXRoIHRo
ZSBwcmV2aW91cyBpbmZsb3cgYm94J3MgbWFyZ2luIGFmdGVyPyAKKyAgICAgICAgICAgIGF1dG8g
dmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgICAgICAg
ICBpZiAodmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJnaW4u
Y29sbGFwc2VkVmFsdWVzKCktPmJlZm9yZSkgeworICAgICAgICAgICAgICAgIC8vIFJlc2V0IHBy
ZXZpb3VzIGJvdHRvbSBhZnRlciBhbmQgY3VycmVudCBtYXJnaW4gYmVmb3JlIHRvIG5vbi1jb2xs
YXBzaW5nLgorICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNWZXJ0aWNhbE1hcmdpbiA9IHBy
ZXZpb3VzSW5GbG93RGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOworICAgICAgICAgICAgICAg
IEFTU0VSVChwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHByZXZp
b3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmFmdGVyKTsKIAotICAgICAgICAg
ICAgLy8gU2luY2UgdGhlIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nIGhhcyBhbHJlYWR5IGJlZW4g
bGFpZCBvdXQsIGl0cyBtYXJnaW4gaXMgY29sbGFwc2VkIGJ5IG5vdy4KLSAgICAgICAgICAgIEFT
U0VSVCghcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkFmdGVyKCkpOwotICAgICAgICAg
ICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgpOwotCi0g
ICAgICAgICAgICAvLyBSZXNldCBwcmV2aW91cyBib3R0b20gYW5kIGN1cnJlbnQgdG9wIG1hcmdp
bnMgdG8gbm9uLWNvbGxhcHNpbmcuCi0gICAgICAgICAgICBhdXRvIHByZXZpb3VzVmVydGljYWxN
YXJnaW4gPSBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gudmVydGljYWxNYXJnaW4oKTsKLSAgICAg
ICAgICAgIGlmIChwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHBy
ZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmFmdGVyKSB7CisgICAgICAg
ICAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSAqdmVydGljYWxNYXJnaW4uY29sbGFwc2Vk
VmFsdWVzKCktPmJlZm9yZTsKICAgICAgICAgICAgICAgICBwcmV2aW91c1ZlcnRpY2FsTWFyZ2lu
LnNldENvbGxhcHNlZFZhbHVlcyh7IHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFs
dWVzKCktPmJlZm9yZSwgeyB9IH0pOwogICAgICAgICAgICAgICAgIHByZXZpb3VzSW5GbG93RGlz
cGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihwcmV2aW91c1ZlcnRpY2FsTWFyZ2luKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiBjb2xsYXBzaW5nIHRocm91
Z2ggaGFzIGFueXRoaW5nIHRvIGRvIHdpdGggdGhpcy4KLSAgICAgICAgICAgIGF1dG8gdmVydGlj
YWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBpZiAo
dmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJnaW4uY29sbGFw
c2VkVmFsdWVzKCktPmJlZm9yZSkgeworCiAgICAgICAgICAgICAgICAgdmVydGljYWxNYXJnaW4u
c2V0Q29sbGFwc2VkVmFsdWVzKHsgeyB9LCB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMo
KS0+YWZ0ZXIgfSk7CiAgICAgICAgICAgICAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdp
bih2ZXJ0aWNhbE1hcmdpbik7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gbm9u
Q29sbGFwc2VkTWFyZ2luID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkFmdGVyKCkg
KyBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgpOwotICAgICAgICAgICAgYXV0byBtYXJnaW5PZmZz
ZXQgPSBub25Db2xsYXBzZWRNYXJnaW4gLSBjb2xsYXBzZWRNYXJnaW47Ci0gICAgICAgICAgICAv
LyBNb3ZlIHRoZSBib3ggdG8gdGhlIHBvc2l0aW9uIHdoZXJlIGl0IHdvdWxkIGJlIHdpdGggbm9u
LWNvbGxhcHNlZCBtYXJnaW5zLgotICAgICAgICAgICAgcm9vdFJlbGF0aXZlVG9wICs9IG1hcmdp
bk9mZnNldDsKKyAgICAgICAgICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IHByZXZp
b3VzVmVydGljYWxNYXJnaW4udXNlZFZhbHVlcygpLmFmdGVyICsgdmVydGljYWxNYXJnaW4udXNl
ZFZhbHVlcygpLmJlZm9yZTsKKyAgICAgICAgICAgICAgICBhdXRvIG1hcmdpbkRpZmZlcmVuY2Ug
PSBub25Db2xsYXBzZWRNYXJnaW4gLSBjb2xsYXBzZWRNYXJnaW47CisgICAgICAgICAgICAgICAg
Ly8gTW92ZSB0aGUgYm94IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5v
bi1jb2xsYXBzZWQgbWFyZ2lucy4KKyAgICAgICAgICAgICAgICByb290UmVsYXRpdmVUb3AgKz0g
bWFyZ2luRGlmZmVyZW5jZTsKIAotICAgICAgICAgICAgLy8gSGF2aW5nIG5lZ2F0aXZlIGNsZWFy
YW5jZSBpcyBhbHNvIG5vcm1hbC4gSXQganVzdCBtZWFucyB0aGF0IHRoZSBib3ggd2l0aCB0aGUg
bm9uLWNvbGxhcHNlZCBtYXJnaW5zIGlzIG5vdyBsb3dlciB0aGFuIGl0IG5lZWRzIHRvIGJlLgot
ICAgICAgICAgICAgY2xlYXJhbmNlIC09IG1hcmdpbk9mZnNldDsKKyAgICAgICAgICAgICAgICAv
LyBIYXZpbmcgbmVnYXRpdmUgY2xlYXJhbmNlIGlzIGFsc28gbm9ybWFsLiBJdCBqdXN0IG1lYW5z
IHRoYXQgdGhlIGJveCB3aXRoIHRoZSBub24tY29sbGFwc2VkIG1hcmdpbnMgaXMgbm93IGxvd2Vy
IHRoYW4gaXQgbmVlZHMgdG8gYmUuCisgICAgICAgICAgICAgICAgY2xlYXJhbmNlIC09IG1hcmdp
bkRpZmZlcmVuY2U7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gTm93IGFk
anVzdCB0aGUgYm94J3MgcG9zaXRpb24gd2l0aCB0aGUgY2xlYXJhbmNlLgogICAgICAgICByb290
UmVsYXRpdmVUb3AgKz0gY2xlYXJhbmNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhkY2VlMWU1MjcwMGZhZTBhNzM3YzUwMDhkNWE4NWYwZjFh
OGYwNjAuLmM2ZDM4ZDZiNzM3NTcyMzljM2E1NWY4MWEzNjg2NGU2YmFiM2I4NWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxOC0xMi0yOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtMRkNdW0JGQ11bTWFyZ2luQ29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNh
c2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTky
NjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBM
YXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dDoKKwogMjAxOC0xMi0yMiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2Vi
RHJpdmVyOiB3YXJuIGFib3V0IG5vbiBleGlzdGluZyB0ZXN0cyB3aGVuIHBhcnNpbmcgZXhwZWN0
YXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5n
LXRlc3RzLnR4dCBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMu
dHh0CmluZGV4IGZmNWViMzgxNTRiNzJlZjhjODgxN2ZiMjk0NWYzNTBlYmI1ZDEwMTIuLjIyNWI3
NDc1ZGE4M2FhNWNhYWUxOTFlYTU5MWFhNjI1MWU2OWNmNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xh
eW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CisrKyBiL1Rvb2xzL0xheW91
dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CkBAIC00LDIzICs0LDY2IEBAIGZh
c3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1sZWZ0LWF1dG8uaHRtbAogZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Fic29sdXRlLWxlZnQtcmlnaHQtdG9wLWJvdHRvbS1hdXRvLmh0bWwKIGZhc3Qv
YmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1uZXN0ZWQyLmh0bWwKIGZhc3QvYmxvY2svYmxvY2st
b25seS9hYnNvbHV0ZS1uZXN0ZWQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRl
LXBvc2l0aW9uLW1pbi1tYXgtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9hYnNv
bHV0ZS1wb3NpdGlvbi1taW4tbWF4LXdpZHRoLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9h
YnNvbHV0ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90LWluLXRoZS1mb3Jt
YXR0aW5nLWNvbnRleHQyLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3Np
dGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90LWluLXRoZS1mb3JtYXR0aW5nLWNvbnRl
eHQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXNpbXBsZS5odG1sCiBmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2lkdGgtc2hyaW5rLXRvLWZpdC5odG1sCiBmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2lkdGgtc3RyZXRjaC5odG1sCiBmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2l0aC1zdGF0aWMtYmxvY2stcG9zaXRpb24tbmVzdGVkLmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9hbG1vc3QtaW50cnVkaW5nLWxlZnQtZmxvYXQtc2lt
cGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLWF1dG8taHRt
bC1oZWlnaHQtcXVpcmsyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13
aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Jv
ZHktaGVpZ2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJr
Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9ib3JkZXItc2ltcGxlLmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9jb2xsYXBzZWQtbWFyZ2luLXdpdGgtbWluLWhlaWdodC5odG1sCiBmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvZml4ZWQtbmVzdGVkLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdC1hbmQtc2libGluZ3Mtd2l0aC1tYXJnaW5zLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdC1hdm9pZGVyLW11bHRpcGxlLXJvb3RzLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1sZWZ0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1yaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
ZmxvYXQtYXZvaWRlci13aXRoLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0LWxlZnQtd2hlbi1jb250YWluZXItaGFzLXBhZGRpbmctbWFyZ2luLmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdC1taW4tbWF4LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvZmxvYXQtbWluLW1heC13aWR0aC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5mbG93LXdpdGgtbWFyZ2luLXdpdGgtbm8tYm9yZGVy
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91cy1p
bmZsb3ctd2l0aC1tYXJnaW4uaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJv
eC1jbGVhci1ib3RoLXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmct
Ym94LWNsZWFyLXJpZ2h0LXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRp
bmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLXdpdGgtdG9wLW9mZnNldC5odG1sCitmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtcmlnaHQtc2ltcGxlLmh0bWwK
K2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1jbGVhci1zaWJsaW5ncy5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtY2xlYXItc2ltcGxl
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1uZXctZm9ybWF0
dGluZy1jb250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0
aC1yZWxhdGl2ZS1wb3NpdGlvbmVkLXNpYmxpbmcuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0aW5nLWxlZnQtYW5kLXJpZ2h0LXdpdGgtY2xlYXJhbmNlLmh0bWwKK2Zhc3QvYmxvY2sv
YmxvY2stb25seS9mbG9hdGluZy1sZWZ0LXJpZ2h0LXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC13aXRoLWFsbC1tYXJnaW5zLmh0bWwKK2Zhc3Qv
YmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0cy1hbmQtcmlnaHRzLXNpbXBsZS5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMtaW4tYm9keS5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMtbXVsdGlwbGUt
bGluZXMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRz
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy13aXRoLW5ldy1ibG9jay1mb3Jt
YXR0aW5nLWNvbnRleHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4tbWF4
LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1pbi1tYXgtd2lkdGgu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1ib3R0b20tYm90dG9t
Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtYm90dG9tLW5lc3Rl
ZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLWZpcnN0LWxhc3Qt
YXJlLWZsb2F0aW5nLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Ut
c2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtdG9wLW5l
c3RlZC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdoZW4tY2hp
bGQtaGFzLXBhZGRpbmctYm9yZGVyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4t
Y29sbGFwc2Utd2l0aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQyLmh0bWwKK2Zhc3QvYmxvY2sv
YmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQu
aHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aXRoLWNsZWFyYW5j
ZS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWxlZnQtcmlnaHQtc2l6aW5nLW91
dC1vZi1mbG93Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tbGVmdC1yaWdodC1z
aXppbmcuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1wcm9wYWdhdGlvbi1zaW1w
bGUtY29udGVudC1oZWlnaHQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1zaWJs
aW5nLWNvbGxhcHNlLXByb3BhZ2F0ZWQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdp
bi1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21pbi1tYXgtaGVpZ2h0LXBlcmNl
bnRhZ2UuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L25lZ2F0aXZlLW1hcmdpbi1zaW1wbGUu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L3BhZGRpbmctbmVzdGVkLmh0bWwKIGZhc3QvYmxv
Y2svYmxvY2stb25seS9wYWRkaW5nLXNpbXBsZS5odG1sCkBAIC0zMSw4MCArNzQsNDkgQEAgZmFz
dC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXBvc2l0aW9uLXdoZW4tY29udGFpbmluZy1ibG9j
ay1pcy1ub3QtaW4tdGhlLWZvcm0KIGZhc3QvYmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1yaWdo
dC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVsYXRpdmUtc2libGluZ3MuaHRtbAogZmFz
dC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvYWJzb2x1dGUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10
aGUtZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2lu
LWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Lmh0bWwKLWZhc3QvYmxvY2sv
YmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQy
Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1sZWZ0LXdoZW4tY29udGFpbmVyLWhh
cy1wYWRkaW5nLW1hcmdpbi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94
LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLXdpdGgtdG9wLW9mZnNldC5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLmh0bWwKLWZh
c3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtcmlnaHQtc2ltcGxlLmh0bWwKLWZhc3Qv
YmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1uZXctZm9ybWF0dGluZy1jb250ZXh0
Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1yZWxhdGl2ZS1w
b3NpdGlvbmVkLXNpYmxpbmcuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxl
ZnQtcmlnaHQtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0
LXJpZ2h0LXdpdGgtYWxsLW1hcmdpbnMuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0
aW5nLWxlZnRzLWFuZC1yaWdodHMtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1pbi1ib2R5Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1tdWx0aXBsZS1saW5lcy5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1hcmdpbi5odG1s
Ci1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5mbG93
LXdpdGgtbWFyZ2luLXdpdGgtbm8tYm9yZGVyLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1sZWZ0LWFuZC1yaWdodC13aXRoLWNsZWFyYW5jZS5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXQtYW5kLXNpYmxpbmdzLXdpdGgtbWFyZ2lucy5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtY2xlYXJhbmNlLmh0bWwKLWZhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1sZWZ0Lmh0bWwKLWZhc3QvYmxvY2sv
YmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1yaWdodC5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXQtYXZvaWRlci1tdWx0aXBsZS1yb290cy5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXQtYXZvaWRlci13aXRoLW1hcmdpbnMuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2luZmxvdy1taW4tbWF4LXdpZHRoLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9h
YnNvbHV0ZS1wb3NpdGlvbi1taW4tbWF4LXdpZHRoLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdC1taW4tbWF4LXdpZHRoLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9pbmZsb3ct
bWluLW1heC1oZWlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0
aW9uLW1pbi1tYXgtaGVpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1taW4t
bWF4LWhlaWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWluLW1heC1oZWlnaHQtcGVy
Y2VudGFnZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1ub24t
YXV0by1odG1sLWhlaWdodC1xdWlyay5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1o
ZWlnaHQtd2l0aC1ub24tYXV0by1odG1sLWhlaWdodC1xdWlyazIuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1xdWlyay5odG1sCi1m
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1hdXRvLWh0bWwtaGVpZ2h0LXF1
aXJrMi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvY29sbGFwc2VkLW1hcmdpbi13aXRoLW1p
bi1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDIuaHRtbAorZmFzdC9ibG9jay9iYXNp
Yy8wMDMuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDYuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8w
MDcuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDguaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDku
aHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMTIuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9jaGlsZC1i
bG9jay1sZXZlbC1ib3gtd2l0aC1oZWlnaHQtcGVyY2VudC5odG1sCitmYXN0L2Jsb2NrL2Jhc2lj
L2hlaWdodC1wZXJjZW50YWdlLXNpbXBsZS5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1j
b250ZW50LXdpdGgtZmxvYXRpbmctaW1hZ2UuaHRtbAogZmFzdC9ibG9jay9iYXNpYy9pbmxpbmUt
Y29udGVudC13aXRoLWZsb2F0aW5nLWltYWdlczIuaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlu
dHJ1ZGluZy1mbG9hdDEuaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdHMy
Lmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMy5odG1sCi1mYXN0L2lu
bGluZS9zaW1wbGUtaW5saW5lLWJsb2NrLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1zaHJpbmst
dG8tZml0LWlubGluZS1ibG9jay5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWluZmxv
dy1wb3NpdGlvbmVkLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQtb2Yt
Zmxvdy1kZXNjZW5kYW50Lmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQt
b2YtZmxvdy1kZXNjZW5kYW50Mi5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRo
LXBhZGRpbmctbGVmdC1yaWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRo
LWJvcmRlci1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgt
bWFyZ2luLWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtYW5kLW5l
c3RlZC1mb3JtYXR0aW5nLXJvb3Qtd2l0aC1tYXJnaW4tbGVmdC1yaWdodC5odG1sCi1mYXN0L2lu
bGluZS9pbmxpbmUtY29udGVudC13aXRoLWltYWdlLXNpbXBsZS5odG1sCi1mYXN0L2lubGluZS9p
bmxpbmUtY29udGVudC13aXRoLWZsb2F0LWFuZC1tYXJnaW4uaHRtbAotZmFzdC9ibG9jay9iYXNp
Yy9oZWlnaHQtcGVyY2VudGFnZS1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9iYXNpYy9jaGlsZC1i
bG9jay1sZXZlbC1ib3gtd2l0aC1oZWlnaHQtcGVyY2VudC5odG1sCitmYXN0L2Jsb2NrL2Jhc2lj
L3BlcmNlbnQtaGVpZ2h0LWluc2lkZS1hbm9ueW1vdXMtYmxvY2suaHRtbAogZmFzdC9ibG9jay9i
YXNpYy9xdWlyay1tb2RlLXBlcmNlbnQtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvcXVp
cmstcGVyY2VudC1oZWlnaHQtZ3JhbmRjaGlsZC5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwMS5o
dG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwNy5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwOC5odG1s
CiBmYXN0L2Jsb2NrL2Zsb2F0LzAwOS5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAxMy5odG1sCiBm
YXN0L2Jsb2NrL2Zsb2F0LzAxOS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwMi5odG1sCi1mYXN0
L2Jsb2NrL2Jhc2ljLzAwMy5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwNi5odG1sCi1mYXN0L2Js
b2NrL2Jhc2ljLzAwNy5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwOC5odG1sCi1mYXN0L2Jsb2Nr
L2Jhc2ljLzAwOS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAxMi5odG1sCitmYXN0L2Jsb2NrL2Zs
b2F0L25lZ2F0aXZlLW1hcmdpbi1jbGVhci5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L292ZXJoYW5n
aW5nLWFmdGVyLWhlaWdodC1kZWNyZWFzZS1vZmZzZXRzLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQv
b3ZlcmhhbmdpbmctYWZ0ZXItaGVpZ2h0LWRlY3JlYXNlLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQv
b3ZlcmxhcHBpbmctZmxvYXRzLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWwKK2Zhc3QvYmxvY2sv
ZmxvYXQvcHJldmlvdXMtc2libGluZy1hYnNwb3MtMDAyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQv
cmVsYXRpdmUtcGFpbnRlZC10d2ljZS5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2F2b2lkYW5jZS1y
dGwuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9ici13aXRoLWNsZWFyLmh0bWwKK2Zhc3QvYmxvY2sv
ZmxvYXQvY2xhbXBlZC1yaWdodC1mbG9hdC5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LW9u
LXplcm8taGVpZ2h0LWxpbmUuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdC1vdmVyaGFuZ3Mt
cm9vdC5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LXdpdGgtYW5vbnltb3VzLXByZXZpb3Vz
LXNpYmxpbmcuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdHMtbm90LWNsZWFyZWQtY3Jhc2gu
aHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDAyLmh0bWwKIGZhc3QvYmxvY2svbWFy
Z2luLWNvbGxhcHNlLzAwMy5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wMjYuaHRt
bAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI3Lmh0bWwKK2Zhc3QvYmxvY2svbWFyZ2lu
LWNvbGxhcHNlLzAyOC5odG1sCitmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wMjkuaHRtbAor
ZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDM1Lmh0bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNv
bGxhcHNlLzAzOS5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wNDAuaHRtbAorZmFz
dC9ibG9jay9wb3NpdGlvbmluZy8wMDMuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wMDQu
aHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wMDUuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlv
bmluZy8wMDYuaHRtbApAQCAtMTQ1LDggKzE1NywyOSBAQCBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5n
LzA0Ni5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA0OS5odG1sCiBmYXN0L2Jsb2NrL3Bv
c2l0aW9uaW5nLzA1Mi5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA1NC5odG1sCitmYXN0
L2Jsb2NrL3Bvc2l0aW9uaW5nLzA2MC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2Fic29s
dXRlLXBvc2l0aW9uaW5nLW5vLXNjcm9sbGJhci5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5n
L2NoYW5nZS1jb250YWluaW5nLWJsb2NrLWZvci1hYnNvbHV0ZS1wb3NpdGlvbmVkLmh0bWwKK2Zh
c3QvYmxvY2svcG9zaXRpb25pbmcvY2hhbmdlLWNvbnRhaW5pbmctYmxvY2stZm9yLWZpeGVkLXBv
c2l0aW9uZWQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9jb21wbGV4LXBvc2l0aW9uZWQt
bW92ZW1lbnQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1wb3NpdGlvbi1kZXRh
Y2hlZC1mcmFtZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2ZpeGVkLXBvc2l0aW9uLXN0
YWNraW5nLWNvbnRleHQyLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9zaXRp
b24tc3RhY2tpbmctY29udGV4dC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpZGluZy1p
bnNpZGUtcmVscG9zaXRpb25lZC1pbmxpbmUuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9p
bnNlcnQtcG9zaXRpb25lZC1pbi1hbm9ueW1vdXMtY3Jhc2guaHRtbAorZmFzdC9ibG9jay9wb3Np
dGlvbmluZy9sZWZ0bWFyZ2luLXRvcG1hcmdpbi5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5n
L25lZ2F0aXZlLXJlbC1wb3NpdGlvbi5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2Ficy1p
bnNpZGUtaW5saW5lLXJlbC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3ByZWYtd2lkdGgt
Y2hhbmdlLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvcmVsYXRpdmUtb3ZlcmZsb3ctcmVw
bGFjZWQtZmxvYXQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9zdGF0aWMtaW5saW5lLXBv
c2l0aW9uLWR5bmFtaWMuaHRtbAogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9iYXNpYy1mbG9h
dC1pbnRydXNpb24uaHRtbAogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9jcmFzaC1vbi1maXJz
dC1saW5lLWNoYW5nZS5odG1sCitmYXN0L2Jsb2NrL2xpbmVib3hjb250YWluL3JlcGxhY2VkLmh0
bWwKK2Zhc3QvYmxvY2svY29sbGFwc2UtYW5vbi1ibG9jay13aXRoLWZsb2F0LXNpYmxpbmdzLW9u
bHkuaHRtbAorZmFzdC9ibG9jay9jcmFzaC13aGVuLWFub255bW91cy1ibG9ja3MtYXJlLW1lcmdl
ZC13aXRoLXNpbXBsZS1saW5lLWxheW91dC5odG1sCitmYXN0L2Jsb2NrL2NyYXNoLXdoZW4tc3Vi
dHJlZS1pcy1zdGlsbC1hdHRhY2hlZC5odG1sCitmYXN0L2Jsb2NrL2dlb21ldHJ5LW1hcC1hc3Nl
cnRpb24td2l0aC10YWxsLWNvbnRlbnQuaHRtbAogZmFzdC9ib3JkZXJzLzBweC1ib3JkZXJzLW5v
LWxpbmUtaGVpZ2h0Lmh0bWwKIGZhc3QvYm9yZGVycy8wcHgtYm9yZGVycy5odG1sCiBmYXN0L2Jv
cmRlcnMvYmxvY2stbWFzay1vdmVybGF5LWltYWdlLW91dHNldC5odG1sCkBAIC0xNTYsMTEgKzE4
OSw4IEBAIGZhc3QvYm9yZGVycy9ib3JkZXItaW1hZ2Utc2NhbGVkLWdyYWRpZW50Lmh0bWwKIGZh
c3QvYm9yZGVycy9ib3JkZXItaW1hZ2Utc2xpY2Utb21pc3Npb24uaHRtbAogZmFzdC9ib3JkZXJz
L2JvcmRlci1sZWZ0LXJpZ2h0LXNhbWUtYm90dG9tLWRpZmZlcmVudC1jb2xvci5odG1sCiBmYXN0
L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRhc2hlZC1hdC1hbGwuaHRtbAotZmFzdC9ib3JkZXJz
L2JvcmRlci1wYWludGluZy1kYXNoZWQuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGlu
Zy1kb3R0ZWQtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctZG90dGVk
Lmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctZG91YmxlLWF0LWFsbC5odG1sCi1m
YXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdWJsZS5odG1sCiBmYXN0L2JvcmRlcnMvYm9y
ZGVyLXBhaW50aW5nLWdyb292ZS1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWlu
dGluZy1pbnNldC1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1pbnNl
dC5odG1sCkBAIC0xNjksNCArMTk5LDg2IEBAIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmct
b3V0c2V0Lmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctcmlkZ2UtYXQtYWxsLmh0
bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctc29saWQtYXQtYWxsLmh0bWwKIGZhc3Qv
Ym9yZGVycy9ib3JkZXItcGFpbnRpbmctc29saWQuaHRtbAotZmFzdC9pbmxpbmUtYmxvY2svMDA0
Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLWluc2V0LW91dHNldC5odG1sCitmYXN0
L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1vbi1odG1sLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXIt
cmFkaXVzLW9uLXN1YnBpeGVsLXBvc2l0aW9uLW5vbi1oaWRwaS5odG1sCitmYXN0L2JvcmRlcnMv
Ym9yZGVyLXJhZGl1cy1wZXJjZW50Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXZh
bGlkLWJvcmRlci1jbGlwcGluZy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy13aWRl
LWJvcmRlci0wMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy13aXRoLWJveC1zaGFk
b3ctMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtd2l0aC1ib3gtc2hhZG93Lmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItc2hhZG93LWxhcmdlLXJhZGl1cy5odG1sCitmYXN0L2Jv
cmRlcnMvYm9yZGVyUmFkaXVzQWxsU3R5bGVzQWxsQ29ybmVycy5odG1sCitmYXN0L2JvcmRlcnMv
Ym9yZGVyUmFkaXVzQXJjczAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEYXNoZWQw
MS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRGFzaGVkMDIuaHRtbAorZmFzdC9ib3Jk
ZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNE
b3R0ZWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG90dGVkMDIuaHRtbAorZmFz
dC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJS
YWRpdXNEb3VibGUwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDIuaHRt
bAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTAzLmh0bWwKK2Zhc3QvYm9yZGVycy9i
b3JkZXJSYWRpdXNHcm9vdmUwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzR3Jvb3Zl
MDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0luc2V0MDEuaHRtbAorZmFzdC9ib3Jk
ZXJzL2JvcmRlclJhZGl1c0ludmFsaWRDb2xvci5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzT3V0c2V0MDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1JpZGdlMDEuaHRtbAor
ZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRl
clJhZGl1c1NvbGlkMDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDMuaHRt
bAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDQuaHRtbAorZmFzdC9ib3JkZXJzL2Rh
c2hlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3JkZXJzL2RvdHRl
ZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3JkZXJzL2RvdWJsZS0x
cHgtYm9yZGVyLWFzc2VydC5odG1sCitmYXN0L2JvcmRlcnMvZW1wdHktZHJhd3JlY3QtYXNzZXJ0
LWFmdGVyLXBpeGVsc25hcC5odG1sCitmYXN0L2JvcmRlcnMvZW1wdHktb3V0bGluZS1ib3JkZXIt
YXNzZXJ0Lmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS0zeC1pbnB1dC1oYWlybGluZS1ib3JkZXIu
aHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRlci1jbGlwcGluZy1yaWdodC1hZnRlci1tb3Zl
Lmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcGFpbnRpbmctZ3Jvb3ZlLmh0bWwKK2Zh
c3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcGFpbnRpbmctcmlkZ2UuaHRtbAorZmFzdC9ib3JkZXJz
L2hpZHBpLWJvcmRlci1yYWRpdXMtb3V0ZXItYm9yZGVyLWdvZXMtcmVjdGFuZ2xlLmh0bWwKK2Zh
c3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcmFkaXVzLXdpdGgtc3VicGl4ZWwtbWFyZ2luLW5vdC1y
ZW5kZXJhYmxlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItd2lkdGgtZmxvb3Jpbmcu
aHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLW91dGxpbmUtaGFpcmxpbmUtcGFpbnRpbmcuaHRtbAor
ZmFzdC9ib3JkZXJzL2hpZHBpLW91dGxpbmUtb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFz
dC9ib3JkZXJzL2hpZHBpLXJvdW5kZWQtYm9yZGVyLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwK
K2Zhc3QvYm9yZGVycy9oaWRwaS1zaW1wbGUtaGFpcmxpbmUtYm9yZGVyLXBhaW50aW5nLmh0bWwK
K2Zhc3QvYm9yZGVycy9taXhlZC1ib3JkZXItc3R5bGUyLmh0bWwKK2Zhc3QvYm9yZGVycy9uZWdh
dGl2ZS1ib3JkZXItd2lkdGguaHRtbAorZmFzdC9ib3JkZXJzL291dGxpbmUtb2Zmc2V0LW1pbi1h
c3NlcnQuaHRtbAorZmFzdC9ib3JkZXJzL291dGxpbmUtb2Zmc2V0LW92ZXJmbG93Lmh0bWwKK2Zh
c3QvYm9yZGVycy93ZWJraXQtYm9yZGVyLXJhZGl1cy5odG1sCitmYXN0L2lubGluZS9hYnNvbHV0
ZS1wb3NpdGlvbmVkLWJsb2NrLWluLWNlbnRyZWQtYmxvY2suaHRtbAorZmFzdC9pbmxpbmUvYWJz
b2x1dGUtcG9zaXRpb25lZC1pbmxpbmUtaW4tY2VudHJlZC1ibG9jay5odG1sCitmYXN0L2lubGlu
ZS9hbm9ueW1vdXMtYmxvY2std2l0aC1lbXB0eS1pbmxpbmUuaHRtbAorZmFzdC9pbmxpbmUvaGlk
cGktb3V0bGluZS1hdXRvLW5lZ2F0aXZlLW9mZnNldC13aXRoLWJvcmRlci1yYWRpdXMuaHRtbAor
ZmFzdC9pbmxpbmUvaGlkcGktb3V0bGluZS1hdXRvLXdpdGgtZnJhY3Rpb25hbC1yYWRpdXMuaHRt
bAorZmFzdC9pbmxpbmUvaGlkcGktb3V0bGluZS1hdXRvLXdpdGgtb25lLWZvY3VzcmluZy1yZWN0
Lmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXBpeGVsLWdhcC1iZXR3ZWVuLWFkamFjZW50LXNlbGVj
dGlvbi1pbmxpbmVzLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdC1pbmxpbmUtb24tc3Vi
cGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktc2VsZWN0aW9uLWdhcC1vbi1z
dWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2lubGluZS9oaWRwaS1zZWxlY3Rpb24tZ2FwLW92
ZXJsYXBzLWlubGluZS1zZWxlY3Rpb24uaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWJvZHktd2l0
aC1zY3JvbGxiYXItY3Jhc2guaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNoaWxkLWhlaWdodC13
aWR0aC1jYWxjLWNyYXNoLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtYm9y
ZGVyLWxlZnQtcmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9h
dC1hbmQtbWFyZ2luLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtaW1hZ2Ut
c2ltcGxlLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtbWFyZ2luLWxlZnQt
cmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1wYWRkaW5nLWxlZnQt
cmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLW1hcnF1ZWUtY3Jhc2guaHRtbAorZmFzdC9p
bmxpbmUvaW5saW5lLXBhZGRpbmctZGlzYWJsZXMtdGV4dC1xdWlyay5odG1sCitmYXN0L2lubGlu
ZS9uZXctZmxvYXQtbmVlZHMtbGF5b3V0LXdoZW4tbGluZS1pcy1kaXJ0eS5odG1sCitmYXN0L2lu
bGluZS9wZXJjZW50YWdlLW1hcmdpbnMuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1i
bG9jay5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWluZmxvdy1wb3NpdGlvbmVkLmh0
bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50
Mi5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZsb3ctZGVzY2Vu
ZGFudC5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0MS5odG1sCitmYXN0
L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czIuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxl
LWludHJ1ZGluZy1mbG9hdHMzLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1saW5lLWxheW91dC0x
NmJpdC1jb250ZW50Lmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1zaHJpbmstdG8tZml0LWlubGlu
ZS1ibG9jay5odG1sCitmYXN0L2lubGluZS9za2lwcGVkLXdoaXRlc3BhY2UtYm91bmRpbmdCb3gu
aHRtbAorZmFzdC9pbmxpbmUvc2tpcHBlZC13aGl0ZXNwYWNlLWNsaWVudC1yZWN0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358455</attachid>
            <date>2019-01-05 21:21:52 -0800</date>
            <delta_ts>2019-01-06 21:48:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20190105212144.patch</filename>
            <type>text/plain</type>
            <size>94778</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViNzFkYzlkZWIyMTA3
NGEzMmUxMDQxN2RmZDlkYmNlYTI1ODU2MS4uNTc2ZmQzZjI1YzFlYjBjMjE0Nzk2MDhmMWZlYWYz
ZDk0MWFmNzlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxOC0xMi0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHNvbWUgb2YgdGhl
IG1vcmUgcGVjdWxpYXIgY2FzZXMgbGlrZSBtYXJnaW4gY29sbHBhc2luZyB0aHJvdWdoIG11bHRp
cGxlIGJveGVzIGV0Yy4KKyAgICAgICAgQWRkIH4xMDAgbmV3IHBhc3NpbmcgY2FzZXMuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRp
bmdTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkTWluSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBz
ZWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0
VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAq
IGxheW91dC9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRT
dGF0ZTo6aGFzRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTWFyZ2lu
VHlwZXMuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5n
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2Fs
UG9zaXRpb25Gb3JGbG9hdENsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVk
VmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdo
dEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0
aW1hdGVkTWFyZ2luQWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRl
OjpzZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZl
cnRpY2FsTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nU3RhdGU6OnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdTdGF0ZTo6Y2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVm
b3JlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc0JvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpoYXNCb3JkZXJCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNCb3Jk
ZXJBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc1BhZGRpbmdCZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNQYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpl
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNl
c1dpdGhQYXJlbnRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
Z01hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGls
ZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJl
Zm9yZVdpdGhDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdp
bkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpt
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdpbkJlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2lu
c0NvbGxhcHNlVGhyb3VnaCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkUG9z
aXRpdmVBbmROZWdhdGl2ZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1hcmdp
blZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6TWFyZ2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2
ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6cG9zaXRpdmVOZWdh
dGl2ZU1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnZlcnRpY2FsKToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Qm94KToKKyAgICAgICAgKiBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpoYXNDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
ZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpzZXRIYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjppbnZhbGlkYXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpyZWN0V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0Nv
bnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5n
U3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVGaW5hbFJ1bnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cG9z
dFByb2Nlc3NJbmxpbmVSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5saW5lRm9ybWF0dGluZ1N0YXRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKToKKwogMjAxOS0wMS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2VydmljZSBXb3JrZXIgZmV0Y2ggc2hvdWxkIG9iZXkgaXRzIHJlZmVycmVyIHBv
bGljeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmluZGV4IGNjYTZlZjlhMWQ5MzNlZmEzZjBhZGZmMDNhOGY5OWJlOTZlZTZlNGUu
LjAwZTQyNWY1MTA1OTkwN2YwODVmODc0OGE5YzI3YzY4YzA3ZmI1OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTc4
NSw2ICs3ODUsNyBAQCBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdAogICAgIC8vICMxCiAgICAgYXV0
byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJn
aW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4g
PSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIu
dmFsdWVPcigwKSB9OworCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAg
ICBhdXRvIHJlcGxhY2VkID0gbGF5b3V0Qm94LnJlcGxhY2VkKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmgKaW5kZXggMDQ3NzVhYjJiYjY2OGZjMjI2YTNmYzEzMjQwNDJkYmNmMTJm
YjMzZi4uMjg0NDZjZjlhZGQzZTc5ODY5ODYxYzljYzc5YzY5ODViY2Q5ZjdhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAg
Rm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGVGb3JCb3goY29uc3QgQm94JikgY29uc3Q7
CiAgICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBC
b3gmIGZvcm1hdHRpbmdSb290KSBjb25zdDsKKyAgICBib29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShj
b25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0
ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290KTsgfQogICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3Jl
YXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZv
cm1hdHRpbmdSb290KTsKIAogICAgIERpc3BsYXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJv
eChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBl
cy5oCmluZGV4IDRlMWZjNTZkNTU2MmIxYTcyNmYyN2ZlNDg1OGExYTg3NTU2NDc0YzkuLjcyMGU2
ZDNlMTZhZjkwNzRhNmVlYjI5MzVmMzM0ZjBkYjU1MzdhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9N
YXJnaW5UeXBlcy5oCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBVc2VkVmVydGljYWxNYXJnaW4g
ewogICAgIHN0cnVjdCBDb2xsYXBzZWRWYWx1ZXMgewogICAgICAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBiZWZvcmU7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGFmdGVyOworICAgICAg
ICBib29sIGlzQ29sbGFwc2VkVGhyb3VnaCB7IGZhbHNlIH07CiAgICAgfTsKICAgICBDb2xsYXBz
ZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWRWYWx1
ZXM7IH0KICAgICBib29sIGhhc0NvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29s
bGFwc2VkVmFsdWVzLmJlZm9yZSB8fCBtX2NvbGxhcHNlZFZhbHVlcy5hZnRlcjsgfQpAQCAtNTks
NiArNjAsNyBAQCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKIAogICAgIFVzZWRWZXJ0aWNh
bE1hcmdpbigpID0gZGVmYXVsdDsKICAgICB+VXNlZFZlcnRpY2FsTWFyZ2luKCkgPSBkZWZhdWx0
OworCiBwcml2YXRlOgogICAgIE5vbkNvbGxhcHNlZFZhbHVlcyBtX25vbkNvbGxhcHNlZFZhbHVl
czsKICAgICBDb2xsYXBzZWRWYWx1ZXMgbV9jb2xsYXBzZWRWYWx1ZXM7CkBAIC03NCw2ICs3Niwx
MCBAQCBzdHJ1Y3QgVXNlZEhvcml6b250YWxNYXJnaW4gewogICAgIExheW91dFVuaXQgZW5kOwog
fTsKIAorc3RydWN0IEVzdGltYXRlZE1hcmdpbkJlZm9yZSB7CisgICAgTGF5b3V0VW5pdCBjb21w
dXRlZFZhbHVlOworfTsKKwogc3RydWN0IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
biB7CiAgICAgc3RydWN0IFZhbHVlcyB7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHBv
c2l0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTczYTU3NzFjMDQ4
MGQ4M2VmYmU2NzI1N2M4MjIwMzcyMWNkZTZiOC4uYjRmMmE3YWZlZmY5NjUwYjc2MTVkZjcxZjE1
ZTliMWMxYjJkZjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xODYs
MTIgKzE4NiwxNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQ
b3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIAogdm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0
Qm94KSBjb25zdAogewotICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUo
KTsKLSAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9IEdlb21ldHJ5Ojplc3RpbWF0ZWRN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0byBlc3RpbWF0ZWRN
YXJnaW5CZWZvcmUgPSBNYXJnaW46OmVzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSgp
LCBsYXlvdXRCb3gpOworICAgIGJsb2NrRm9ybWF0dGluZ1N0YXRlKCkuc2V0SGFzRXN0aW1hdGVk
TWFyZ2luQmVmb3JlKGxheW91dEJveCk7CiAKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0
U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgZGlzcGxheUJveC5zZXRFc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUoZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTsKLSAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNh
bGx5KGVzdGltYXRlZE1hcmdpbkJlZm9yZSk7CisjZW5kaWYKKyAgICBkaXNwbGF5Qm94LnNldFRv
cChhZGp1c3RlZFZlcnRpY2FsUG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmcobGF5b3V0Qm94
LCBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUuY29tcHV0ZWRWYWx1ZSkpOwogfQogCiB2b2lkIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmVGb3JBbmNlc3Rv
cnMoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CkBAIC0yMDgsMTIgKzIxMCwxMSBAQCB2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmVGb3JB
bmNlc3RvcnMoY29uc3QgQm94JgogICAgIC8vIFNvIHdoZW4gd2UgZ2V0IHRvIHRoZSBwb2ludCB3
aGVyZSB3ZSBpbnRlcnNlY3QgdGhlIGJveCB3aXRoIHRoZSBmbG9hdCB0byBkZWNpZGUgaWYgdGhl
IGJveCBuZWVkcyB0byBtb3ZlLCB3ZSBkb24ndCB5ZXQgaGF2ZSB0aGUgZmluYWwgdmVydGljYWwg
cG9zaXRpb24uCiAgICAgLy8KICAgICAvLyBUaGUgaWRlYSBoZXJlIGlzIHRoYXQgYXMgbG9uZyBh
cyB3ZSBkb24ndCBjcm9zcyB0aGUgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJ5LCB3
ZSBzaG91bGQgYmUgYWJsZSB0byBwcmUtY29tcHV0ZSB0aGUgZmluYWwgdG9wIG1hcmdpbi4KLSAg
ICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byYgZm9y
bWF0dGluZ1N0YXRlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIGZvciAoYXV0byog
YW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yICYmICFhbmNl
c3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2VzdG9yID0gYW5j
ZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBs
YXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCphbmNlc3Rvcik7CiAgICAgICAgIC8v
IEZJWE1FOiB3aXRoIGluY3JlbWVudGFsIGxheW91dCwgd2UgbWlnaHQgYWN0dWFsbHkgaGF2ZSBh
IHZhbGlkIChub24tZXN0aW1hdGVkKSBtYXJnaW4gdG9wIGFzIHdlbGwuCi0gICAgICAgIGlmIChk
aXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQorICAgICAgICBpZiAoZm9ybWF0dGlu
Z1N0YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IpKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9y
KTsKQEAgLTIzOCwxMCArMjM5LDEwIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJl
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkCiB9CiAKICNp
Zm5kZWYgTkRFQlVHCi1zdGF0aWMgYm9vbCBoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGlj
IGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQmxvY2tGb3JtYXR0aW5nU3Rh
dGUmIGZvcm1hdHRpbmdTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgZm9yIChh
dXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgJiYg
IWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgaWYgKGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKS5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
KSkKKyAgICAgICAgaWYgKGZvcm1hdHRpbmdTdGF0ZS5oYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
KmFuY2VzdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpAQCAtMjUzLDcgKzI1NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hCiB7CiAg
ICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIEFTU0VSVChs
YXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1
dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFz
UHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94
KSk7CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3gpOwogICAgIC8vIDguMy4xIENvbGxhcHNpbmcgbWFyZ2lucwpAQCAt
MjczLDcgKzI3NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0
aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiAgICAgQVNTRVJUKGxheW91
dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFs
YXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3gu
aGFzRmxvYXRDbGVhcigpKTsKLSAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdp
bkJlZm9yZShibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlvdXRCb3gpKTsKIAogICAgIGlmIChm
bG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjkyLDcgKzI5Myw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nCiAgICAgLy8gRm9y
IGZvcm1hdHRpbmcgcm9vdHMsIHdlIGFscmVhZHkgcHJlY29tcHV0ZWQgZmluYWwgcG9zaXRpb24u
CiAgICAgaWYgKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQogICAg
ICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzKGxheW91dEJveCk7
Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3Jt
YXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBpZiAoYXV0byB2ZXJ0aWNhbFBvc2l0
aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0aW9uV2l0aENs
ZWFyYW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSk7
CkBAIC0zNzIsMTIgKzM3MywxNSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgfQogCiAg
ICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5ibG9ja0Zvcm1h
dHRpbmdTdGF0ZSgpOworICAgIGlmIChmb3JtYXR0aW5nU3RhdGUuaGFzRXN0aW1hdGVkTWFyZ2lu
QmVmb3JlKGxheW91dEJveCkpIHsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmNsZWFySGFzRXN0
aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCk7CisgICAgICAgIEFTU0VSVChsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuZXN0aW1hdGVkTWFyZ2luQmVmb3Jl
KCktPmNvbXB1dGVkVmFsdWUgPT0gaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4uYmVmb3JlKCkp
OworICAgIH0gZWxzZQorICAgICAgICBkaXNwbGF5Qm94LnNldFRvcChhZGp1c3RlZFZlcnRpY2Fs
UG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmcobGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4u
dXNlZE1hcmdpbi5iZWZvcmUoKSkpOworCiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVp
Z2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwogICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxN
YXJnaW4oaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4pOwotCi0gICAgLy8gSWYgdGhpcyBib3gg
aGFzIGFscmVhZHkgYmVlbiBtb3ZlZCBieSB0aGUgZXN0aW1hdGVkIHZlcnRpY2FsIG1hcmdpbiwg
bm8gbmVlZCB0byBtb3ZlIGl0IGFnYWluLgotICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bv
c2l0aW9uZWQoKSB8fCAhZGlzcGxheUJveC5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkKLSAgICAg
ICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxseShoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpbi5i
ZWZvcmUoKSk7CiB9CiAKIEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJh
aW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cygp
IGNvbnN0CkBAIC00NDQsNiArNDQ4LDM3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2lj
V2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljCiAgICAg
cmV0dXJuIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwogfQogCitMYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVkVmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29s
bGFwc2luZyhjb25zdCBCb3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUpIGNv
bnN0Cit7CisgICAgLy8gTm93IHRoYXQgd2UndmUgY29tcHV0ZWQgdGhlIGZpbmFsIG1hcmdpbiBi
ZWZvcmUsIGxldCdzIHNoaWZ0IHRoZSBib3gncyB2ZXJ0aWNhbCBwb3NpdGlvbi4KKyAgICAvLyAx
LiBDaGVjayBpZiB0aGUgbWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMgd2l0aCB0aGUgcHJldmlvdXMg
Ym94J3MgbWFyZ2luIGFmdGVyLiBpZiBub3QgLT4gcmV0dXJuIHByZXZpb3VzIGJveCdzIGJvdHRv
bSBpbmxjdWRpbmcgbWFyZ2luIGFmdGVyICsgbWFyZ2luQmVmb3JlCisgICAgLy8gMi4gQ2hlY2sg
aWYgdGhlIHByZXZpb3VzIGJveCdzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaC4gSWYgbm90IC0+
IHJldHVybiBwcmV2aW91cyBib3gnIGJvdHRvbSBleGNsdWRpbmcgbWFyZ2luIGFmdGVyICsgbWFy
Z2luQmVmb3JlICh0aGV5IGFyZSBzdXBwb3NlZCB0byBiZSBlcXVhbCkKKyAgICAvLyAzLiBHbyB0
byBwcmV2aW91cyBib3ggYW5kIHN0YXJ0IGZyb20gc3RlcCAjMSB1bnRpbCB3ZSBoaXQgdGhlIHBh
cmVudCBib3guCisgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwor
ICAgIGF1dG8qIGN1cnJlbnRMYXlvdXRCb3ggPSAmbGF5b3V0Qm94OworICAgIHdoaWxlIChjdXJy
ZW50TGF5b3V0Qm94KSB7CisgICAgICAgIGlmICghY3VycmVudExheW91dEJveC0+cHJldmlvdXNJ
bkZsb3dTaWJsaW5nKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgYXV0byYgcHJldmlv
dXNJbkZsb3dTaWJsaW5nID0gKmN1cnJlbnRMYXlvdXRCb3gtPnByZXZpb3VzSW5GbG93U2libGlu
ZygpOworICAgICAgICBpZiAoIU1hcmdpbjo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqY3VycmVudExheW91dEJveCkpIHsK
KyAgICAgICAgICAgIGF1dG8mIHByZXZpb3VzRGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJl
dHVybiBwcmV2aW91c0Rpc3BsYXlCb3gucmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSArIG1hcmdp
bkJlZm9yZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghTWFyZ2luOjptYXJnaW5zQ29sbGFw
c2VUaHJvdWdoKGxheW91dFN0YXRlLCBwcmV2aW91c0luRmxvd1NpYmxpbmcpKSB7CisgICAgICAg
ICAgICBhdXRvJiBwcmV2aW91c0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KHByZXZpb3VzSW5GbG93U2libGluZyk7CisgICAgICAgICAgICByZXR1cm4gcHJl
dmlvdXNEaXNwbGF5Qm94LmJvdHRvbSgpICsgbWFyZ2luQmVmb3JlOworICAgICAgICB9CisgICAg
ICAgIGN1cnJlbnRMYXlvdXRCb3ggPSAmcHJldmlvdXNJbkZsb3dTaWJsaW5nOworICAgIH0KKwor
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJv
eFRvcCgpOworICAgIGlmIChNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkgfHwgTWFyZ2luOjptYXJnaW5CZWZv
cmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wOworCisgICAgcmV0
dXJuIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3AgKyBtYXJnaW5CZWZvcmU7Cit9CisKIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA2ODA0MWQ0OTA4NTY3ZmI4ODkz
NDBkNmI1M2I3ZTNmMjA4MmVjMTgwLi4wODFkYjc3NDQ2NmI2NmZhN2IzYTdiNDNiN2NmMzViYjM4
OWRhNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTAsNiArNTAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsYXlvdXQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAg
ICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpOyB9
CisKICAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQm
LCBjb25zdCBCb3gmKSBjb25zdDsKICAgICB2b2lkIHBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxk
cmVuKGNvbnN0IENvbnRhaW5lciYpIGNvbnN0OwogCkBAIC02Nyw2ICs2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290SWZO
ZWVkZWQoY29uc3QgQm94JikgY29uc3Q7CiAKICAgICBJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91
dFVuaXQgYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGNvbnN0
IEJveCYsIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSBjb25zdDsKIAogICAgIC8vIFRoaXMgY2xh
c3MgaW1wbGVtZW50cyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0aWNpcGF0
aW5nIGluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgogICAgIGNsYXNzIEdlb21ldHJ5IDog
cHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7CkBAIC03OSw0OSArODIsNDcgQEAg
cHJpdmF0ZToKICAgICAgICAgc3RhdGljIGJvb2wgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHNO
ZWVkQ2hpbGRyZW5XaWR0aChjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIEluc3RyaW5zaWNX
aWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZXN0aW1hdGVk
TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IGVzdGltYXRlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7Ci0KICAgICBwcml2YXRlOgotICAgICAgICAvLyBUaGlzIGNsYXNzIGltcGxl
bWVudHMgbWFyZ2luIGNvbGxhcHNpbmcgZm9yIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KLSAg
ICAgICAgY2xhc3MgTWFyZ2luQ29sbGFwc2UgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJn
aW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0ID0geyB9KTsKKyAgICAg
ICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2Vk
V2lkdGggPSB7IH0pOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93UmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7CisgICAgICAgIHN0YXRpYyBQb2ludCBzdGF0
aWNQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKKyAgICB9OwogCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBh
cmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgY2xh
c3MgTWFyZ2luIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBVc2VkVmVydGljYWxNYXJn
aW46OkNvbGxhcHNlZFZhbHVlcyB2ZXJ0aWNhbChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYpOwogCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBj
b2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdp
bkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBF
c3RpbWF0ZWRNYXJnaW5CZWZvcmUgZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNvbGxhcHNlZE1h
cmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRp
Y2FsTWFyZ2luJiBuZXh0U2libGluZ1ZlcnRpY2FsTWFyZ2luKTsKIAotICAgICAgICAgICAgc3Rh
dGljIExheW91dFVuaXQgY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNv
bXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBz
dGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdp
bkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMg
Ym9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbGxhcHNl
ZE1hcmdpbkJlZm9yZUZyb21GaXJzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
Jik7Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5CZWZv
cmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoTGFzdEluRmxvd0NoaWxkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFy
ZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAg
IHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29s
IG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNl
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBi
b29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJl
Zm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcoY29uc3QgQm94Jik7Ci0gICAgICAgICAg
ICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZyhjb25zdCBC
b3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNp
YmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQ
YXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAg
ICAgICAgIHN0YXRpYyBib29sIG1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgfTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2lu
c0NvbGxhcHNlVGhyb3VnaChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAg
ICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1
c2VkSGVpZ2h0ID0geyB9KTsKLSAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd05v
blJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBP
cHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGggPSB7IH0pOwotICAgICAgICBzdGF0aWMgV2lk
dGhBbmRNYXJnaW4gaW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7Ci0g
ICAgICAgIHN0YXRpYyBQb2ludCBzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQo
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICBwcml2YXRlOgorICAgICAgICBl
bnVtIGNsYXNzIE1hcmdpblR5cGUgeyBCZWZvcmUsIEFmdGVyIH07CisgICAgICAgIHN0YXRpYyBQ
b3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZl
VmFsdWVzKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgTWFyZ2luVHlwZSk7CisgICAg
ICAgIHN0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3Np
dGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7
CisgICAgICAgIHN0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVl
cyBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKICAgICB9OwogCiAgICAgY2xhc3MgUXVpcmtzIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBib29sIG5lZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYpOwotICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIHN0cmV0Y2hlZEhlaWdodChjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIEhlaWdodEFuZE1hcmdpbik7CisgICAgICAgIHN0
YXRpYyBIZWlnaHRBbmRNYXJnaW4gc3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94JiwgSGVpZ2h0QW5kTWFyZ2luKTsKIAogICAgICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKKyAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKICAgICB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGZjNzViNTMwN2MzZTM0M2YwMjQ0OTQz
ODk2YzI5YzdiMTYzMWJkOWYuLjYxOTdiNDYyMzYyZWE3MjE0MDFhMmUyY2QwZjU1ZDI1NThlOGNl
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICAgICAgYXV0byYgZGlz
cGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
ICAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVk
VmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgICAgIGF1dG8gbm9u
Q29sbGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMg
eyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsgCi0gICAgICAgIGF1dG8gY29sbGFwc2VkTWFy
Z2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRWYWx1ZXMgeyBNYXJnaW5Db2xsYXBz
ZTo6bWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkgfTsKKyAgICAgICAgYXV0byBjb2xs
YXBzZWRNYXJnaW4gPSBNYXJnaW46OnZlcnRpY2FsKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwog
ICAgICAgICBhdXRvIGJvcmRlckFuZFBhZGRpbmdUb3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgp
ICsgZGlzcGxheUJveC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKIAogICAgICAgICBhdXRvIGhl
aWdodCA9IHVzZWRIZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZh
bHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CkBAIC04MSwx
NCArODEsMTQgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICAgICAgLy8gMi4gdGhlIGJv
dHRvbSBlZGdlIG9mIHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0
cyBsYXN0IGluLWZsb3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KICAg
ICAgICAgYXV0byogbGFzdEluRmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRC
b3gpLmxhc3RJbkZsb3dDaGlsZCgpOwogICAgICAgICBBU1NFUlQobGFzdEluRmxvd0NoaWxkKTsK
LSAgICAgICAgaWYgKCFNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFy
ZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKSB7CisgICAgICAg
IGlmICghTWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihs
YXlvdXRTdGF0ZSwgKmxhc3RJbkZsb3dDaGlsZCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxhc3RJ
bkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGFz
dEluRmxvd0NoaWxkKTsKICAgICAgICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5Qm94
LmJvdHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSAtIGJvcmRlckFu
ZFBhZGRpbmdUb3AsIHsgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfSB9Owog
ICAgICAgICB9CiAKICAgICAgICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUg
bGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRo
IHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgogICAgICAgICBhdXRvKiBpbkZsb3dDaGlsZCA9
IGxhc3RJbkZsb3dDaGlsZDsKLSAgICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1hcmdpbkNv
bGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICppbkZsb3dDaGlsZCkpCisgICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBNYXJn
aW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0
ZSwgKmluRmxvd0NoaWxkKSkKICAgICAgICAgICAgIGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQt
PnByZXZpb3VzSW5GbG93U2libGluZygpOwogICAgICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKICAg
ICAgICAgICAgIGF1dG8mIGluRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KCppbkZsb3dDaGlsZCk7CkBAIC0xMDAsNiArMTAwLDkgQEAgSGVpZ2h0QW5k
TWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmcKICAgICB9OwogCiAgICAgYXV0byBoZWlnaHRBbmRNYXJnaW4gPSBjb21w
dXRlKCk7CisgICAgLy8gQWRqdXN0IHRoZSBwcmV2aW91cyBzaWJsaW5nJ3MgbWFyZ2luIGJvdHRv
bSBub3cgdGhhdCB0aGlzIGJveCdzIHZlcnRpY2FsIG1hcmdpbiBpcyBjb21wdXRlZC4KKyAgICBp
ZiAoTWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2lu
QWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIE1hcmdpbjo6dXBkYXRlQ29s
bGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dT
aWJsaW5nKCksIGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luKTsKIAogICAgIExPR19XSVRIX1NU
UkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5d
IC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhl
aWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luLmJlZm9y
ZSgpIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpbi5hZnRlcigpIDw8ICJw
eCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWln
aHRBbmRNYXJnaW47CkBAIC0yNTgsNyArMjYxLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGEK
ICAgICBpZiAoIVF1aXJrczo6bmVlZHNTdHJldGNoaW5nKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
KQogICAgICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogCi0gICAgaGVpZ2h0QW5kTWFyZ2lu
ID0gUXVpcmtzOjpzdHJldGNoZWRIZWlnaHQobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVpZ2h0
QW5kTWFyZ2luKTsKKyAgICBoZWlnaHRBbmRNYXJnaW4gPSBRdWlya3M6OnN0cmV0Y2hlZEluRmxv
d0hlaWdodChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4pOwogCiAgICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWln
aHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBzdHJlY2hlZCB0byB2aWV3cG9y
dCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIg
PDwgaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4uYmVmb3JlKCkgPDwgInB4LCAiIDw8IGhlaWdo
dEFuZE1hcmdpbi51c2VkTWFyZ2luLmFmdGVyKCkgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAm
bGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKQEAgLTMxOSwz
MCArMzIyLDYgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjoKICAgICByZXR1cm4geyBtaW5pbXVt
SW50cmluc2ljV2lkdGgsIG1heGltdW1JbnRyaW5zaWNXaWR0aCB9OwogfQogCi1MYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsK
LSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLSAgICAvLyBDYW4ndCBl
c3RpbWF0ZSB2ZXJ0aWNhbCBtYXJnaW5zIGZvciBvdXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNo
b3VsZG4ndCBuZWVkIHRvIGRvIGl0IGZvciBmbG9hdCBib3hlcykuCi0gICAgQVNTRVJUKGxheW91
dEJveC5pc0luRmxvdygpKTsKLSAgICAvLyBDYW4ndCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNv
bnRleHQgYm91bmRhcnkuCi0gICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCkpOwotCi0gICAgLy8gTGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBw
YXRoIGZvciBub3cuCi0gICAgcmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmUobGF5
b3V0U3RhdGUsIGxheW91dEJveCk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJv
eC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0gICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFy
Z2lucyBmb3Igb3V0IG9mIGZsb3cgYm94ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBp
dCBmb3IgZmxvYXQgYm94ZXMpLgotICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7Ci0g
ICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJ5LgotICAg
IEFTU0VSVCghbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsK
LQotICAgIC8vIExldCdzIGp1c3QgdXNlIHRoZSBub3JtYWwgcGF0aCBmb3Igbm93LgotICAgIHJl
dHVybiBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7
Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAK
aW5kZXggZjNlYmQyZDdjZjEzNWE4NzEzMWFhNjRiNDI4YzY1ZWRhMDgxMDM3MC4uOWMwY2NmNDRl
ZDBiMTc4NDJlMTA0Mzk0YmNlZWUyNzA1OTNjZGZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC02Niw4ICs2Niw5IEBAIGJvb2wgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6UXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0CiAgICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1
dG8oKTsKIH0KIAotSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJr
czo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW4pCitIZWlnaHRB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRJbkZsb3dI
ZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCwgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbikKIHsKKyAgICBBU1NFUlQobGF5b3V0
Qm94LmlzSW5GbG93KCkpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpIHx8
IGxheW91dEJveC5pc0JvZHlCb3goKSk7CiAKICAgICBhdXRvJiBkb2N1bWVudEJveCA9IGxheW91
dEJveC5pc0RvY3VtZW50Qm94KCkgPyBsYXlvdXRCb3ggOiAqbGF5b3V0Qm94LnBhcmVudCgpOwpA
QCAtODgsMTcgKzg5LDExIEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0CiAgICAgICAgIC8vIEhl
cmUgaXMgdGhlIHF1aXJreSBwYXJ0IGZvciBib2R5IGJveDoKICAgICAgICAgLy8gU3RyZXRjaCB0
aGUgYm9keSB1c2luZyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrJ3MgaGVpZ2h0IGFuZCBz
aHJpbmsgaXQgd2l0aCBkb2N1bWVudCBib3gncyBtYXJnaW4vYm9yZGVyL3BhZGRpbmcuCiAgICAg
ICAgIC8vIFRoaXMgbG9va3MgZXh0cmVtZWx5IG9kZCB3aGVuIGh0bWwgaGFzIG5vbi1hdXRvIGhl
aWdodC4KLSAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojplc3RpbWF0ZWRN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGRvY3VtZW50Qm94KSArIEdlb21ldHJ5Ojplc3RpbWF0
ZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpOwotICAgICAgICBzdHJlY2hl
ZEhlaWdodCAtPSB2ZXJ0aWNhbE1hcmdpbjsKLQotICAgICAgICAvLyBUaGlzIHF1aXJrIGhhcHBl
bnMgd2hlbiB0aGUgYm9keSBoZWlnaHQgaXMgMCB3aGljaCBtZWFucyBpdHMgdmVydGljYWwgbWFy
Z2lucyBjb2xsYXBzZSB0aHJvdWdoICh0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIGFyZSBhZGpvaW5p
bmcpLgotICAgICAgICAvLyBIb3dldmVyIG5vdyB0aGF0IHdlIHN0cmV0Y2ggdGhlIGJvZHkgdGhl
eSBkb24ndCBjb2xsYXBzZSB0aHJvdWdoIGFueW1vcmUsIHNvIHdlIG5lZWQgdG8gdXNlIHRoZSBu
b24tY29sbGFwc2VkIHZhbHVlcyBpbnN0ZWFkLgotICAgICAgICBpZiAoaGVpZ2h0QW5kTWFyZ2lu
LmhlaWdodCkKLSAgICAgICAgICAgIHRvdGFsVmVydGljYWxNYXJnaW4gPSBoZWlnaHRBbmRNYXJn
aW4udXNlZE1hcmdpbi5iZWZvcmUoKSArIGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luLmFmdGVy
KCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBub25Db2xsYXBzZWRWYWx1ZXMg
PSBoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKTsKLSAgICAg
ICAgICAgIHRvdGFsVmVydGljYWxNYXJnaW4gPSBub25Db2xsYXBzZWRWYWx1ZXMuYmVmb3JlICsg
bm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyOwotICAgICAgICB9CisgICAgICAgIGF1dG8gZG9jdW1l
bnRCb3hWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxh
eW91dFN0YXRlLCBkb2N1bWVudEJveCk7CisgICAgICAgIHN0cmVjaGVkSGVpZ2h0IC09IChkb2N1
bWVudEJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApICsgZG9jdW1lbnRCb3hWZXJ0
aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApKTsKKworICAgICAgICBhdXRvIGJvZHlCb3hWZXJ0
aWNhbE1hcmdpbiA9IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luOyAKKyAgICAgICAgdG90YWxW
ZXJ0aWNhbE1hcmdpbiA9IGJvZHlCb3hWZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKSArIGJvZHlCb3hW
ZXJ0aWNhbE1hcmdpbi5hZnRlcigpOwogICAgIH0KIAogICAgIC8vIFN0cmV0Y2ggYnV0IG5ldmVy
IG92ZXJzdHJldGNoIHdpdGggdGhlIG1hcmdpbnMuCkBAIC0xMTYsNiArMTExLDIwIEBAIGJvb2wg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUo
Y29uc3QgTGF5b3V0U3RhdGUmCiAgICAgcmV0dXJuIGxheW91dFN0YXRlLmluUXVpcmtzTW9kZSgp
ICYmIGlzUXVpcmtDb250YWluZXIoKmxheW91dEJveC5wYXJlbnQoKSkgJiYgaGFzTWFyZ2luQmVm
b3JlUXVpcmtWYWx1ZShsYXlvdXRCb3gpOwogfQogCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICAvLyBJZ25vcmUgbWFyaW5n
IGFmdGVyIHdoZW4gdGhlIGlnbm9yZWQgbWFyZ2luIGJlZm9yZSBjb2xsYXBzZXMgdGhyb3VnaC4K
KyAgICBpZiAoIXNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKGxheW91dEJveC5wYXJlbnQo
KSk7CisgICAgYXV0byYgcGFyZW50ID0gKmxheW91dEJveC5wYXJlbnQoKTsKKyAgICBpZiAocGFy
ZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgIT0gJmxheW91dEJveCB8fCBwYXJlbnQu
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSAhPSBwYXJlbnQubGFzdEluRmxvd09yRmxvYXRp
bmdDaGlsZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gTWFyZ2luOjpt
YXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworfQorCiB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBiYjk2NjkzOTBmZjlhMjg3NmZlNzE0ZGM4
NTQ0YjAxZGY2ZGVhYTg0Li5iYjQ1NmI1OTI3ZmVmZTQ1YzYzNzgzMWQ1YjI0ZjcxNzA5MmJhZDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUu
aCIKKyNpbmNsdWRlICJNYXJnaW5UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDMsMTggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkJsb2NrRm9ybWF0dGluZ1N0YXRlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9y
bWF0dGluZ0NvbnRleHQ+IGNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0
dGluZ0NvbnRleHRSb290KSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0UG9zaXRpdmVBbmROZWdh
dGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBQb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW4gdmVydGljYWxNYXJnaW4pIHsgbV9wb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW4uc2V0KCZsYXlvdXRCb3gsIHZlcnRpY2FsTWFyZ2luKTsgfQorICAgIGJv
b2wgaGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0
Qm94KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5j
b250YWlucygmbGF5b3V0Qm94KTsgfQorICAgIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1h
cmdpbiBwb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmdl
dCgmbGF5b3V0Qm94KTsgfQorCisgICAgdm9pZCBzZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmFkZCgm
bGF5b3V0Qm94KTsgfQorICAgIHZvaWQgY2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29u
c3QgQm94JiBsYXlvdXRCb3gpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LnJlbW92ZSgm
bGF5b3V0Qm94KTsgfQorICAgIGJvb2wgaGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJv
eCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3Qu
Y29udGFpbnMoJmxheW91dEJveCk7IH0KKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPGNvbnN0IEJv
eCosIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbj4gbV9wb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW47CisgICAgSGFzaFNldDxjb25zdCBCb3gqPiBtX2VzdGltYXRlZE1h
cmdpbkJlZm9yZUxpc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBm
Nzk4YWYzZGVkODRiYjcyMjQyYjU4MjVjODI5NDQ0OGRhNjkxODEyLi4wNDFkZDYzZjRlMDE4MmU5
ZTBhMmU3M2VkY2MwMjcyZjVlNjVjN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAg
LTcwLDEyICs3MCwxMSBAQCBzdGF0aWMgYm9vbCBoYXNQYWRkaW5nQWZ0ZXIoY29uc3QgQm94JiBs
YXlvdXRCb3gpCiAgICAgcmV0dXJuIGhhc1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGlu
Z0FmdGVyKCkpOwogfQogCi1zdGF0aWMgYm9vbCBoYXNDbGVhcmFuY2UoY29uc3QgQm94JiBsYXlv
dXRCb3gpCitzdGF0aWMgYm9vbCBoYXNDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBpZiAoIWxheW91dEJveC5oYXNG
bG9hdENsZWFyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBGSVhNRQotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJv
eChsYXlvdXRCb3gpLmhhc0NsZWFyYW5jZSgpOwogfQogCiBzdGF0aWMgYm9vbCBlc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC04Nyw5NCAr
ODYsNyBAQCBzdGF0aWMgYm9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29u
c3QgQm94JiBsYXlvdXRCb3gpCiAgICAgcmV0dXJuIGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKTsKIH0KIAotc3RhdGljIExheW91dFVuaXQgbWFyZ2luVmFsdWUo
TGF5b3V0VW5pdCBjdXJyZW50TWFyZ2luVmFsdWUsIExheW91dFVuaXQgY2FuZGlkYXRlTWFyZ2lu
VmFsdWUpCi17Ci0gICAgaWYgKCFjYW5kaWRhdGVNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJu
IGN1cnJlbnRNYXJnaW5WYWx1ZTsKLSAgICBpZiAoIWN1cnJlbnRNYXJnaW5WYWx1ZSkKLSAgICAg
ICAgcmV0dXJuIGNhbmRpZGF0ZU1hcmdpblZhbHVlOwotICAgIC8vIEJvdGggbWFyZ2lucyBhcmUg
cG9zaXRpdmUuCi0gICAgaWYgKGNhbmRpZGF0ZU1hcmdpblZhbHVlID4gMCAmJiBjdXJyZW50TWFy
Z2luVmFsdWUgPiAwKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2FuZGlkYXRlTWFyZ2luVmFs
dWUsIGN1cnJlbnRNYXJnaW5WYWx1ZSk7Ci0gICAgLy8gQm90aCBtYXJnaW5zIGFyZSBuZWdhdGl2
ZS4KLSAgICBpZiAoY2FuZGlkYXRlTWFyZ2luVmFsdWUgPCAwICYmIGN1cnJlbnRNYXJnaW5WYWx1
ZSA8IDApCi0gICAgICAgIHJldHVybiAwIC0gc3RkOjptYXgoc3RkOjphYnMoY2FuZGlkYXRlTWFy
Z2luVmFsdWUudG9GbG9hdCgpKSwgc3RkOjphYnMoY3VycmVudE1hcmdpblZhbHVlLnRvRmxvYXQo
KSkpOwotICAgIC8vIE9uZSBvZiB0aGUgbWFyZ2lucyBpcyBuZWdhdGl2ZS4KLSAgICByZXR1cm4g
Y3VycmVudE1hcmdpblZhbHVlICsgY2FuZGlkYXRlTWFyZ2luVmFsdWU7Ci19Ci0KLUxheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21w
dXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9j
a0xldmVsQm94KCkpOwotCi0gICAgcmV0dXJuIGNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0
U3RhdGUsIGxheW91dEJveCkuYmVmb3JlLnZhbHVlT3IoMCk7Ci19Ci0KLUxheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21wdXRlZE5v
bkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxC
b3goKSk7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KS5hZnRlci52YWx1ZU9yKDApOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2lu
QmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAv
LyBOb24gY29sbGFwc2VkIG1hcmdpbiB0b3AgaW5jbHVkZXMgY29sbGFwc2VkIG1hcmdpbiBmcm9t
IGluZmxvdyBmaXJzdCBjaGlsZC4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25D
b2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCksIGNvbGxhcHNlZE1h
cmdpbkJlZm9yZUZyb21GaXJzdENoaWxkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKLX0KLQot
TGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFw
c2U6Om5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2Nr
TGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBOb24gY29sbGFwc2VkIG1hcmdpbiBib3R0b20gaW5jbHVk
ZXMgY29sbGFwc2VkIG1hcmdpbiBmcm9tIGluZmxvdyBsYXN0IGNoaWxkLgotICAgIHJldHVybiBt
YXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpLCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hp
bGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkK
LXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIENo
ZWNrIGlmIHRoZSBmaXJzdCBjaGlsZCBjb2xsYXBzZXMgaXRzIG1hcmdpbiB0b3AuCi0gICAgaWYg
KCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0
Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIERvIG5v
dCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91dEJv
eC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
Ly8gRklYTUU6IFRha2UgY29sbGFwc2VkIHRocm91Z2ggbWFyZ2luIGludG8gYWNjb3VudC4KLSAg
ICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94
KS5maXJzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRo
UGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2luIHRvcCByZWN1cnNp
dmVseS4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5CZWZv
cmVGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpOwotfQotCi1M
YXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBz
ZTo6Y29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENoaWxkKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgQVNTRVJUKGxheW91dEJv
eC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgbGFzdCBjaGlsZCBw
cm9wYWdhdGVzIGl0cyBtYXJnaW4gYm90dG9tLgotICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlv
dXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBEbyBub3QgY29sbGFwc2UgbWFyZ2luIHdp
dGggYSBib3ggZnJvbSBhIG5vbi1ibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgPGRpdj48c3Bhbj5m
b29iYXI8L3NwYW4+PC9kaXY+LgotICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0
aW5nQ29udGV4dCgpICYmICFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0T25seSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIEZJWE1FOiBDaGVjayBmb3Ig
Y29sbGFwc2VkIHRocm91Z2ggbWFyZ2luLgotICAgIGF1dG8mIGxhc3RJbkZsb3dDaGlsZCA9ICpk
b3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYg
KCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwg
bGFzdEluRmxvd0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBDb2xsZWN0IGNv
bGxhcHNlZCBtYXJnaW4gYm90dG9tIHJlY3Vyc2l2ZWx5LgotICAgIHJldHVybiBtYXJnaW5WYWx1
ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXN0SW5GbG93
Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQobGF5b3V0U3RhdGUsIGxh
c3RJbkZsb3dDaGlsZCkpOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdp
bkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luQmVmb3JlQ29s
bGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgLy8gMS4gVGhpcyBpcyB0aGUgbGFzdCBp
bi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFy
Z2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdzIG1hcmdpbiBhZnRlciBvcgogICAgIC8v
IDIuIFRoaXMgYm94J3MgbWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHRoZSBuZXh0IHNpYmxp
bmcncyBtYXJnaW4gYmVmb3JlIGFuZCB0aGF0IHNpYmxpbmcgY29sbGFwc2VzIHRocm91Z2ggYW5k
CkBAIC0xODUsMTQgKzk3LDE0IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChjdXJyZW50Qm94ID09IGxhc3RJbkZsb3dDaGls
ZCkKICAgICAgICAgICAgIHJldHVybiBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJn
aW5BZnRlcihsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAKLSAgICAgICAgaWYgKCFtYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZygqY3VycmVudEJveCkpCisgICAgICAgIGlmICgh
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUobGF5b3V0U3Rh
dGUsICpjdXJyZW50Qm94KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAg
ICAvLyBUaGUgZmlyc3QgaW5mbG93IGNoaWxkIGNvdWxkIHByb3BhZ2F0ZSBpdHMgdG9wIG1hcmdp
biB0byBwYXJlbnQuCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1s
I2NvbGxhcHNpbmctbWFyZ2lucwpAQCAtMjI5LDE2ICsxNDEsOTIgQEAgYm9vbCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gLi4uYW5kIHRoZSBjaGls
ZCBoYXMgbm8gY2xlYXJhbmNlLgotICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0Qm94KSkKKyAg
ICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpNYXJnaW46Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdN
YXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworCisg
ICAgaWYgKCFsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGluZyA9ICpsYXlvdXRCb3gu
cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisKKyAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9h
dGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91
dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5pc0Zs
b2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJn
aW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAg
aWYgKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5zdHls
ZSgpLnRvcCgpLmlzQXV0bygpKQorICAgICAgICB8fCAocHJldmlvdXNJbkZsb3dTaWJsaW5nLmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFwcmV2aW91c0luRmxvd1NpYmxpbmcuc3R5bGUoKS5i
b3R0b20oKS5pc0F1dG8oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdp
bnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0
Qm94LmlzSW5saW5lQmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVC
bG9ja0JveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgYm90dG9tIG1h
cmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3
aXRoIHRoZSB0b3AgbWFyZ2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZl
bCBzaWJsaW5nLCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCisgICAgaWYgKGhh
c0NsZWFyYW5jZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
TWFyZ2luOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJl
Zm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQoreworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgLy8g
TWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAg
IGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFi
bGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0
aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhl
IHRvcCBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBlbGVtZW50IGNvbGxhcHNlcyB3aXRoIGl0
cyBmaXJzdCBpbi1mbG93IGJsb2NrLWxldmVsCisgICAgLy8gY2hpbGQncyB0b3AgbWFyZ2luIGlm
IHRoZSBlbGVtZW50IGhhcyBubyB0b3AgYm9yZGVyLi4uCisgICAgaWYgKGhhc0JvcmRlckJlZm9y
ZShsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAuLi5ubyB0b3Ag
cGFkZGluZworICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3du
Y2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byYgZmlyc3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250
YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOworICAgIGlmICghZmlyc3RJbkZs
b3dDaGlsZC5pc0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gLi4uYW5kIHRoZSBjaGlsZCBoYXMgbm8gY2xlYXJhbmNlLgorICAgIGlmIChoYXNDbGVhcmFu
Y2UobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgLy8gTWFyZ2lucyBiZXR3
ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAg
IGlmIChmaXJzdEluRmxvd0NoaWxkLmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJv
eGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAoZmlyc3RJbkZsb3dDaGlsZC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBv
ZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxv
d0NoaWxkLmlzSW5saW5lQmxvY2tCb3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVm
b3JlV2l0aENsZWFyYW5jZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAg
Ly8gSWYgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYW4gZWxlbWVudCB3aXRoIGNsZWFy
YW5jZSBhcmUgYWRqb2luaW5nLCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB3aXRoIHRoZSBhZGpvaW5p
bmcgbWFyZ2lucwogICAgIC8vIG9mIGZvbGxvd2luZyBzaWJsaW5ncyBidXQgdGhhdCByZXN1bHRp
bmcgbWFyZ2luIGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhl
IHBhcmVudCBibG9jay4KQEAgLTI0OCwxMyArMjM2LDEzIEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhTCiAgICAgZm9yIChhdXRvKiBwcmV2aW91c1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJ
bkZsb3dTaWJsaW5nKCk7IHByZXZpb3VzU2libGluZzsgcHJldmlvdXNTaWJsaW5nID0gcHJldmlv
dXNTaWJsaW5nLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoIW1hcmdp
bnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsICpwcmV2aW91c1NpYmxpbmcpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoaGFzQ2xlYXJhbmNlKCpwcmV2aW91c1Np
YmxpbmcpKQorICAgICAgICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCAqcHJldmlvdXNT
aWJsaW5nKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNv
bGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK2Jvb2wgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJl
bnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gm
IGxheW91dEJveCkKIHsKICAgICAvLyAxLiBUaGlzIGlzIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxk
IGFuZCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFyZ2luIGJlZm9yZSBj
b2xsYXBzZXMgd2l0aCBwYXJlbnQncyBtYXJnaW4gYmVmb3JlIG9yCiAgICAgLy8gMi4gVGhpcyBi
b3gncyBtYXJnaW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHRoZSBwcmV2aW91cyBzaWJsaW5nJ3Mg
bWFyZ2luIGFmdGVyIGFuZCB0aGF0IHNpYmxpbmcgY29sbGFwc2VzIHRocm91Z2ggYW5kCkBAIC0y
NjUsMTQgKzI1MywxNCBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpZiAoY3VycmVudEJveCA9PSBmaXJzdEluRmxvd0NoaWxkKQog
ICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KTsgCi0gICAgICAgIGlmICghbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZygqY3VycmVudEJveCkpCisgICAgICAgIGlm
ICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxh
eW91dFN0YXRlLCAqY3VycmVudEJveCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Ok1hcmdpbjo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsK
ICAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTMyNCw0NyArMzEyLDY5IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGNvbnN0
IEJveCYgbGF5b3V0Qm94KQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1h
cmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNT
RVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICBpZiAoIWxheW91dEJveC5w
cmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQg
ZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3
aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dChsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpOworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICBpZiAoIWxhc3RJbkZsb3dDaGlsZC5p
c0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIGJv
dHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9mICdh
dXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxkJ3Mg
Ym90dG9tIG1hcmdpbiwgaWY6CisgICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWlnaHQoKS5p
c0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGJveCBoYXMgbm8g
Ym90dG9tIHBhZGRpbmcsIGFuZAorICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBi
b3JkZXIsIGFuZAorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiBuZWl0aGVy
IGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1hcmdpbiB0aGF0IGhhcyBjbGVhcmFuY2UuLi4KKyAgICBp
ZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFu
Y2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXplcm8pIHdpdGgg
dGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgYXV0byBjb21wdXRlZE1pbkhlaWdodCA9IGxheW91
dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICBpZiAoIWNvbXB1dGVkTWluSGVp
Z2h0LmlzQXV0bygpICYmIGNvbXB1dGVkTWluSGVpZ2h0LnZhbHVlKCkKKyAgICAgICAgJiYgKG1h
cmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGFz
dEluRmxvd0NoaWxkKSB8fCBoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGls
ZCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBm
bG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxh
eW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5p
c0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gTWFyZ2lucyBv
ZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmICgo
bGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guc3R5bGUoKS50
b3AoKS5pc0F1dG8oKSkKLSAgICAgICAgfHwgKHByZXZpb3VzSW5GbG93U2libGluZy5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nLnN0eWxlKCkuYm90dG9t
KCkuaXNBdXRvKCkpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE1hcmdpbnMgb2YgaW5saW5l
LWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5l
QmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBp
bi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3Ag
bWFyZ2luIG9mCi0gICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1
bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFyYW5jZShs
YXlvdXRCb3gpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNJbmxpbmVCbG9ja0JveCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVy
Q29sbGFwc2VzV2l0aE5leHRTaWJsaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KQorYm9vbCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRT
aWJsaW5nTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3go
KSk7CiAKICAgICBpZiAoIWxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZygqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpOworICAgIHJldHVybiBt
YXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICpsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSk7CiB9CiAKLWJvb2wgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFw
c2VUaHJvdWdoKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6bWFyZ2luc0NvbGxh
cHNlVGhyb3VnaChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCkBA
IC0zODcsNzcgKzM5NywyMTkgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY28KICAgICBpZiAoIWlz
PENvbnRhaW5lcj4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAo
IWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKGxheW91
dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgaWYg
KGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRG
b3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSkuaW5saW5lUnVucygpLmlzRW1wdHkoKSkKKyAgICAg
ICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhyb3VnaCBtYXJnaW4gZXN0aW1hdGlvbiwgd2UgZG9uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBhY3R1YWwgc3RhdGUgZm9yIHRoaXMgbGF5b3V0IGJveCBzaW5j
ZQorICAgICAgICAvLyB3ZSBoYXZlbid0IHN0YXJ0ZWQgbGF5aW5nIGl0IG91dCB5ZXQuCisgICAg
ICAgIGlmICghbGF5b3V0U3RhdGUuaGFzRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91
dEJveCkpLmlubGluZVJ1bnMoKS5pc0VtcHR5KCk7CisgICAgfQorICAgIAorICAgIGZvciAoYXV0
byogaW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZs
b3dDaGlsZCgpOyBpbmZsb3dDaGlsZDsgaW5mbG93Q2hpbGQgPSBpbmZsb3dDaGlsZC0+bmV4dElu
Rmxvd1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCppbmZsb3dDaGlsZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGF1
dG8qIGluZmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5G
bG93Q2hpbGQoKTsgaW5mbG93Q2hpbGQ7IGluZmxvd0NoaWxkID0gaW5mbG93Q2hpbGQtPm5leHRJ
bkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3Vn
aChsYXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQogICAgIH0KLQogICAgIHJldHVybiB0cnVlOwogfQogCi1MYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2lu
QmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCitzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgY29t
cHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNh
bE1hcmdpbjo6VmFsdWVzIGEsIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFs
dWVzIGIpCiB7Ci0gICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21w
dXRlZFZhbHVlczsKKyAgICBpZiAoYS5wb3NpdGl2ZSAmJiBiLnBvc2l0aXZlKQorICAgICAgICBj
b21wdXRlZFZhbHVlcy5wb3NpdGl2ZSA9IHN0ZDo6bWF4KCphLnBvc2l0aXZlLCAqYi5wb3NpdGl2
ZSk7CisgICAgZWxzZQorICAgICAgICBjb21wdXRlZFZhbHVlcy5wb3NpdGl2ZSA9IGEucG9zaXRp
dmUgPyBhLnBvc2l0aXZlIDogYi5wb3NpdGl2ZTsKKworICAgIGlmIChhLm5lZ2F0aXZlICYmIGIu
bmVnYXRpdmUpCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm5lZ2F0aXZlID0gc3RkOjptaW4oKmEu
bmVnYXRpdmUsICpiLm5lZ2F0aXZlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1dGVkVmFsdWVz
Lm5lZ2F0aXZlID0gYS5uZWdhdGl2ZSA/IGEubmVnYXRpdmUgOiBiLm5lZ2F0aXZlOworCisgICAg
cmV0dXJuIGNvbXB1dGVkVmFsdWVzOworfQogCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2Nr
TGV2ZWxCb3goKSk7CitzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpW
YWx1ZXMgY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGEsIE9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblZh
bHVlKQoreworICAgIGlmICghbWFyZ2luVmFsdWUgfHwgIW1hcmdpblZhbHVlLnZhbHVlKCkpCisg
ICAgICAgIHJldHVybiBhOworICAgIGlmICgqbWFyZ2luVmFsdWUgPiAwKQorICAgICAgICByZXR1
cm4gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgbWFyZ2luVmFsdWUsIHsg
fSB9KTsKKyAgICBpZiAoKm1hcmdpblZhbHVlIDwgMCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVk
UG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihhLCB7IHsgfSwgbWFyZ2luVmFsdWUgfSk7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RhdGljIE9wdGlv
bmFsPExheW91dFVuaXQ+IG1hcmdpblZhbHVlKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1h
cmdpbjo6VmFsdWVzIG1hcmdpblZhbHVlcykKK3sKKyAgICAvLyBXaGVuIHR3byBvciBtb3JlIG1h
cmdpbnMgY29sbGFwc2UsIHRoZSByZXN1bHRpbmcgbWFyZ2luIHdpZHRoIGlzIHRoZSBtYXhpbXVt
IG9mIHRoZSBjb2xsYXBzaW5nIG1hcmdpbnMnIHdpZHRocy4KKyAgICAvLyBJbiB0aGUgY2FzZSBv
ZiBuZWdhdGl2ZSBtYXJnaW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9m
IHRoZSBuZWdhdGl2ZSBhZGpvaW5pbmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBtYXhp
bXVtCisgICAgLy8gb2YgdGhlIHBvc2l0aXZlIGFkam9pbmluZyBtYXJnaW5zLiBJZiB0aGVyZSBh
cmUgbm8gcG9zaXRpdmUgbWFyZ2lucywgdGhlIG1heGltdW0gb2YgdGhlIGFic29sdXRlIHZhbHVl
cyBvZiB0aGUgYWRqb2luaW5nIG1hcmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB6ZXJvLgorICAgIGlm
ICghbWFyZ2luVmFsdWVzLm5lZ2F0aXZlKQorICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWVzLnBv
c2l0aXZlOwogCi0gICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2luaW5nTWFyZ2luQmVmb3JlQW5k
QWZ0ZXIoKSBpbnRvIGFjY291bnQuCi0gICAgaWYgKG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQ
YXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgLy8gRklYTUU6IEZpbmQgb3V0IHRoZSBsb2dpYyBiZWhpbmQgdGhpcy4KLSAg
ICBpZiAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
aWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nKGxheW91dEJveCkp
IHsKLSAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29sbGFwc2VkIHRo
cm91Z2ggdmFsdWUuCi0gICAgICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gbm9uQ29sbGFwc2VkTWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBhdXRvIG1hcmdpbkFm
dGVyID0gbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7IAot
ICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlcik7Cisg
ICAgaWYgKCFtYXJnaW5WYWx1ZXMucG9zaXRpdmUpCisgICAgICAgIHJldHVybiBtYXJnaW5WYWx1
ZXMubmVnYXRpdmU7CisKKyAgICByZXR1cm4gKm1hcmdpblZhbHVlcy5wb3NpdGl2ZSArICptYXJn
aW5WYWx1ZXMubmVnYXRpdmU7Cit9CisKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIG5l
eHRTaWJsaW5nVmVydGljYWxNYXJnaW4pCit7CisgICAgLy8gMS4gR2V0IHRoZSBtYXJnaW4gYmVm
b3JlIHZhbHVlIGZyb20gdGhlIG5leHQgaW4tZmxvdyBzaWJsaW5nLiBUaGlzIGlzIHRoZSBzYW1l
IGFzIHRoaXMgYm94J3MgbWFyZ2luIGFmdGVyIHZhbHVlIG5vdyBzaW5jZSB0aGV5IGFyZSBjb2xs
YXBzZWQuCisgICAgLy8gMi4gVXBkYXRlIHRoZSBjb2xsYXBzZWQgbWFyZ2luIGFmdGVyIHZhbHVl
IGFzIHdlbGwgYXMgdGhlIHBvc2l0aXZlL25lZ2F0aXZlIGNhY2hlLgorICAgIC8vIDMuIENoZWNr
IGlmIHRoZSBib3gncyBtYXJnaW5zIGNvbGxhcHNlIHRocm91Z2guCisgICAgLy8gNC4gSWYgc28s
IHVwZGF0ZSB0aGUgY29sbGFwc2VkIG1hcmdpbiBiZWZvcmUgdmFsdWUgYXMgd2VsbCBhcyB0aGUg
cG9zaXRpdmUvbmVnYXRpdmUgY2FjaGUuCisgICAgLy8gNS4gSW4gY2FzZSBvZiBjb2xsYXBzZWQg
dGhyb3VnaCBtYXJnaW5zIGNoZWNrIGlmIHRoZSBiZWZvcmUgbWFyZ2luIGNvbGxhcGVzIHdpdGgg
dGhlIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nJ3MgYWZ0ZXIgbWFyZ2luLgorICAgIC8vIDYuIElm
IHNvLCBqdW1wIHRvICMyLgorICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNp
YmxpbmdNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IGRpc3BsYXlCb3gu
dmVydGljYWxNYXJnaW4oKTsKKyAgICBhdXRvIHZlcnRpY2FsTWFyZ2luQWZ0ZXIgPSBuZXh0U2li
bGluZ1ZlcnRpY2FsTWFyZ2luLmJlZm9yZSgpOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHZl
cnRpY2FsTWFyZ2luQmVmb3JlOworCisgICAgYXV0byBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoID0g
TWFyZ2luOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwor
ICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKQorICAgICAgICB2ZXJ0aWNhbE1hcmdpbkJl
Zm9yZSA9IHZlcnRpY2FsTWFyZ2luQWZ0ZXI7IAorICAgIGVsc2UgaWYgKHZlcnRpY2FsTWFyZ2lu
Lmhhc0NvbGxhcHNlZFZhbHVlcygpKQorICAgICAgICB2ZXJ0aWNhbE1hcmdpbkJlZm9yZSA9IHZl
cnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZTsKKworICAgIC8vIFVwZGF0ZSB2
ZXJ0aWNhbCBtYXJnaW4gdmFsdWVzLgorICAgIHZlcnRpY2FsTWFyZ2luLnNldENvbGxhcHNlZFZh
bHVlcyh7IHZlcnRpY2FsTWFyZ2luQmVmb3JlLCB2ZXJ0aWNhbE1hcmdpbkFmdGVyIH0pOworICAg
IGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOworCisgICAgLy8g
VXBkYXRlIHBvc2l0aXZlL25lZ2F0aXZlIGNhY2hlLgorICAgIGF1dG8mIGJsb2NrRm9ybWF0dGlu
Z1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1h
dHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsKKyAgICBhdXRvIHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW4gPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxN
YXJnaW4obGF5b3V0Qm94KTsKKyAgICBhdXRvIG5leHRTaWJsaW5nUG9zaXRpdmVOZWdhdGl2ZU1h
cmdpbkJlZm9yZSA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0
aWNhbE1hcmdpbigqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpLmJlZm9yZTsKKworICAg
IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIgPSBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRp
dmVNYXJnaW4obmV4dFNpYmxpbmdQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlLCBwb3NpdGl2
ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyKTsKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaCkg
eworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmJlZm9yZSA9IGNvbXB1dGVkUG9zaXRp
dmVBbmROZWdhdGl2ZU1hcmdpbihwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmJlZm9yZSwgcG9zaXRp
dmVOZWdhdGl2ZU1hcmdpbi5hZnRlcik7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4u
YWZ0ZXIgPSBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmJlZm9yZTsgCiAgICAgfQorICAgIGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlLnNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlv
dXRCb3gsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4pOwogCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJn
aW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0
aCB0aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcs
Ci0gICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgIGF1dG8qIHBy
ZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsK
LSAgICBpZiAoIXByZXZpb3VzSW5GbG93U2libGluZykKLSAgICAgICAgcmV0dXJuIG5vbkNvbGxh
cHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBpZiAoIW1hcmdp
bnNDb2xsYXBzZVRocm91Z2ggfHwgIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1Np
YmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlciA9IG5vbkNvbGxhcHNlZE1h
cmdpbkFmdGVyKGxheW91dFN0YXRlLCAqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKLSAgICBhdXRv
IG1hcmdpbkJlZm9yZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KTsKLSAgICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3JlLCBwcmV2aW91c1Np
YmxpbmdNYXJnaW5BZnRlcik7CisgICAgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0
U3RhdGUsICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCksIHZlcnRpY2FsTWFyZ2lu
KTsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFy
Z2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCitQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46
OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW46OnBvc2l0aXZlTmVnYXRpdmVW
YWx1ZXMoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCwgTWFyZ2luVHlwZSBtYXJnaW5UeXBlKQoreworICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0
YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1hdHRp
bmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsKKyAgICBhdXRvIGhhc1ByZWNvbXB1dGVkVmFsdWUg
PSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5oYXNQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJn
aW4obGF5b3V0Qm94KTsKKyAgICBpZiAobWFyZ2luVHlwZSA9PSBNYXJnaW5UeXBlOjpCZWZvcmUp
CisgICAgICAgIHJldHVybiBoYXNQcmVjb21wdXRlZFZhbHVlID8gYmxvY2tGb3JtYXR0aW5nU3Rh
dGUucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCkuYmVmb3JlIDog
cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAg
ICByZXR1cm4gaGFzUHJlY29tcHV0ZWRWYWx1ZSA/IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0
aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpLmFmdGVyIDogcG9zaXRpdmVO
ZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworfQorCitQb3NpdGl2
ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpNYXJnaW46OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBhdXRvIGZpcnN0Q2hp
bGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBbJl0oKSAtPiBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVy
dGljYWxNYXJnaW46OlZhbHVlcyB7CisgICAgICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRC
b3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgYXV0byogZmlyc3RJbkZsb3dD
aGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7
CisgICAgICAgIGlmICghZmlyc3RJbkZsb3dDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICBpZiAoUXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUobGF5b3V0
U3RhdGUsICpmaXJzdEluRmxvd0NoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIHJldHVybiBwb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzKGxheW91dFN0YXRlLCAqZmlyc3RJbkZs
b3dDaGlsZCwgTWFyZ2luVHlwZTo6QmVmb3JlKTsKKyAgICB9OworCisgICAgYXV0byBwcmV2aW91
U2libGluZ0NvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2
ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBhdXRvKiBwcmV2aW91c0luRmxvd1Np
YmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICgh
cHJldmlvdXNJbkZsb3dTaWJsaW5nKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
aWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICBpZiAoUXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKnByZXZp
b3VzSW5GbG93U2libGluZykpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1
cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2li
bGluZywgTWFyZ2luVHlwZTo6QWZ0ZXIpOworICAgIH07CisKKyAgICAvLyAxLiBHYXRoZXIgcG9z
aXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdpbiB2YWx1ZXMgZnJvbSBmaXJzdCBjaGlsZCBpZiBtYXJn
aW5zIGFyZSBhZGpvaW5pbmcuCisgICAgLy8gMi4gR2F0aGVyIHBvc2l0aXZlIGFuZCBuZWdhdGl2
ZSBtYXJnaW4gdmFsdWVzIGZyb20gcHJldmlvdXMgaW5mbG93IHNpYmxpbmcgaWYgbWFyZ2lucyBh
cmUgYWRqb2luaW5nLgorICAgIC8vIDMuIENvbXB1dGUgbWluL21heCBwb3NpdGl2ZSBhbmQgbmVn
YXRpdmUgY29sbGFwc2VkIG1hcmdpbiB2YWx1ZXMgdXNpbmcgbm9uLWNvbGxwYXNlZCBjb21wdXRl
ZCBtYXJnaW4gYmVmb3JlLgorICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luQmVmb3JlID0gY29tcHV0
ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZv
cmUoKSwgcHJldmlvdVNpYmxpbmdDb2xsYXBzZWRNYXJnaW5BZnRlcigpKTsKKyAgICBhdXRvIG5v
bkNvbGxhcHNlZE1hcmdpbkJlZm9yZSA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmJlZm9yZTsKKyAgICByZXR1cm4gY29tcHV0ZWRQb3Np
dGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGNvbGxhcHNlZE1hcmdpbkJlZm9yZSwgbm9uQ29sbGFwc2Vk
TWFyZ2luQmVmb3JlKTsKK30KKworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpW
YWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjpwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3sKKyAgICBhdXRvIGxhc3RDaGlsZENvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkg
LT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBp
ZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIGF1dG8qIGxhc3RJbkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0
Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICAgICAgaWYgKCFsYXN0SW5GbG93Q2hpbGQpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxkSWdub3Jl
TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMobGF5b3V0
U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQsIE1hcmdpblR5cGU6OkFmdGVyKTsKKyAgICB9OworCisg
ICAgLy8gV2UgZG9uJ3Qga25vdyB5ZXQgdGhlIG1hcmdpbiBiZWZvcmUgdmFsdWUgb2YgdGhlIG5l
eHQgc2libGluZy4gTGV0J3MganVzdCBwcmV0ZW5kIGl0IGRvZXMgbm90IGhhdmUgb25lIGFuZCAK
KyAgICAvLyB1cGRhdGUgaXQgbGF0ZXIgd2hlbiB3ZSBjb21wdXRlIHRoZSBuZXh0IHNpYmxpbmcn
cyBtYXJnaW4gYmVmb3JlLiBTZWUgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIuCisgICAgYXV0
byBub25Db2xsYXBzZWRNYXJnaW5BZnRlciA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFy
Z2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLmFmdGVyOworICAgIHJldHVybiBjb21wdXRlZFBv
c2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4obGFzdENoaWxkQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSwg
bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIpOworfQorCitFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBp
ZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Cisg
ICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cgYm94
ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgorICAg
IEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7CisgICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sg
Zm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJ5LgorICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKKworICAgIGlmICghbWFyZ2luc0NvbGxh
cHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIHsgbWFy
Z2luVmFsdWUocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KSkudmFsdWVPcigwKSB9OworICAgIAorICAgIHJldHVybiB7IG1hcmdpblZhbHVlKGNvbXB1
dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3Jl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIobGF5
b3V0U3RhdGUsIGxheW91dEJveCkpKS52YWx1ZU9yKDApIH07Cit9CiAKLSAgICAvLyBUT0RPOiB0
YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVBbmRCb3R0b20oKSBpbnRvIGFjY291bnQuCi0g
ICAgaWYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gMDsKK1VzZWRWZXJ0aWNhbE1hcmdpbjo6
Q29sbGFwc2VkVmFsdWVzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbjo6dmVydGljYWwo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sK
KyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3go
KSk7CisgICAgLy8gMS4gR2V0IG1pbi9tYXggbWFyZ2luIHRvcCB2YWx1ZXMgZnJvbSB0aGUgZmly
c3QgaW4tZmxvdyBjaGlsZCBpZiB3ZSBhcmUgY29sbGFwc2luZyBtYXJnaW4gdG9wIHdpdGggaXQu
CisgICAgLy8gMi4gR2V0IG1pbi9tYXggbWFyZ2luIHRvcCB2YWx1ZXMgZnJvbSB0aGUgcHJldmlv
dXMgaW4tZmxvdyBzaWJsaW5nLCBpZiB3ZSBhcmUgY29sbGFwc2luZyBtYXJnaW4gdG9wIHdpdGgg
aXQuCisgICAgLy8gMy4gR2V0IHRoaXMgbGF5b3V0IGJveCdzIGNvbXB1dGVkIG1hcmdpbiB0b3Ag
dmFsdWUuCisgICAgLy8gNC4gVXBkYXRlIHRoZSBtaW4vbWF4IHZhbHVlIGFuZCBjb21wdXRlIHRo
ZSBmaW5hbCBtYXJnaW4uIAorICAgIGF1dG8gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSA9
IE1hcmdpbjo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KTsKKyAgICBhdXRvIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciA9IE1hcmdpbjo6cG9z
aXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworCisgICAg
YXV0byBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoID0gTWFyZ2luOjptYXJnaW5zQ29sbGFwc2VUaHJv
dWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOyAKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhy
b3VnaCkgeworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRQ
b3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUsIHBv
c2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcik7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJn
aW5BZnRlciA9IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmU7ICAgICAgICAgCisgICAgfQog
Ci0gICAgLy8gRmxvYXRzIGFuZCBvdXQgb2YgZmxvdyBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBj
b2xsYXBzZSB0aGVpciBtYXJnaW5zLgotICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRo
TmV4dFNpYmxpbmcobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdp
bkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8mIGJsb2NrRm9ybWF0dGlu
Z1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmZvcm1h
dHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsKKyAgICBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5z
ZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCB7IHBvc2l0aXZl
TmVnYXRpdmVNYXJnaW5CZWZvcmUsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciB9KTsKIAot
ICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVu
dCBhbHdheXMgY29sbGFwc2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YgaXRzIG5leHQgaW4tZmxv
dyBibG9jay1sZXZlbCBzaWJsaW5nLAotICAgIC8vIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNs
ZWFyYW5jZS4KLSAgICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4geyBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZl
TWFyZ2luQmVmb3JlKSwgbWFyZ2luVmFsdWUocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKSwg
bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCB9OyAKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCmluZGV4IDMxNDBhNTVhZmFiNGNmMTJi
M2Y1NWZmYjdiMTI2MWYxZDc5NmYxYWUuLjYzMWVmNzFiOTgzYzcxNWFkN2UyZWFkNTRjMGMxNTJl
Yzk1MTAyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUJveC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgQm94OjpCb3goY29uc3QgQm94JiBvdGhlcikK
ICAgICAsIG1faG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hvcml6b250YWxNYXJnaW4pCiAgICAg
LCBtX3ZlcnRpY2FsTWFyZ2luKG90aGVyLm1fdmVydGljYWxNYXJnaW4pCiAgICAgLCBtX2hvcml6
b250YWxDb21wdXRlZE1hcmdpbihvdGhlci5tX2hvcml6b250YWxDb21wdXRlZE1hcmdpbikKLSAg
ICAsIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKG90aGVyLm1fZXN0aW1hdGVkTWFyZ2luQmVmb3Jl
KQorICAgICwgbV9oYXNDbGVhcmFuY2Uob3RoZXIubV9oYXNDbGVhcmFuY2UpCiAgICAgLCBtX2Jv
cmRlcihvdGhlci5tX2JvcmRlcikKICAgICAsIG1fcGFkZGluZyhvdGhlci5tX3BhZGRpbmcpCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNzQsNiArNzQsNyBAQCBCb3g6OkJveChjb25zdCBCb3gm
IG90aGVyKQogICAgICwgbV9oYXNWYWxpZFBhZGRpbmcob3RoZXIubV9oYXNWYWxpZFBhZGRpbmcp
CiAgICAgLCBtX2hhc1ZhbGlkQ29udGVudEhlaWdodChvdGhlci5tX2hhc1ZhbGlkQ29udGVudEhl
aWdodCkKICAgICAsIG1faGFzVmFsaWRDb250ZW50V2lkdGgob3RoZXIubV9oYXNWYWxpZENvbnRl
bnRXaWR0aCkKKyAgICAsIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKG90aGVyLm1fZXN0aW1hdGVk
TWFyZ2luQmVmb3JlKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlCb3guaAppbmRleCAzMWQ4NmE2YmZkMzNiYjU2ZDYzM2Y4NDQ2NWM2
OWFiNmNhNDI5ZWU0Li45YWVmYjE4ZDc3NTk3MzU4MjBmMzRiMGEwMzMzMzAyZTVkYzcyNzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAg
LTEzNiwyMSArMTM2LDIwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApICsgY29udGVu
dEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApICsgYm9yZGVyUmlnaHQoKTsg
fQogICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGNvbnRlbnRCb3hIZWlnaHQoKSArIHBhZGRpbmdCb3R0
b20oKS52YWx1ZU9yKDApICsgYm9yZGVyQm90dG9tKCk7IH0KICAgICBSZWN0IHJlY3QoKSBjb25z
dCB7IHJldHVybiB7IHRvcCgpLCBsZWZ0KCksIHdpZHRoKCksIGhlaWdodCgpIH07IH0KLSAgICBS
ZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSAtIG1hcmdpbkJlZm9y
ZSgpLCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJnaW5TdGFydCgpICsgd2lkdGgoKSArIG1h
cmdpbkVuZCgpLCBtYXJnaW5CZWZvcmUoKSArIGhlaWdodCgpICsgbWFyZ2luQWZ0ZXIoKSB9OyB9
CisgICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNvbnN0OwogCiAgICAgTGF5b3V0OjpVc2VkVmVy
dGljYWxNYXJnaW4gdmVydGljYWxNYXJnaW4oKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdp
bkJlZm9yZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQoKSBjb25zdDsKICAg
ICBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5F
bmQoKSBjb25zdDsKKyAgICBib29sIGhhc0NsZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q2xlYXJhbmNlOyB9CiAKICAgICBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgp
IGNvbnN0OwogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdDsK
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1hcmdpblN0YXJ0KCkgY29uc3Q7CiAg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOyB9Ci0KICAgICBMYXlvdXRVbml0IGJvcmRlclRv
cCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgYm9yZGVyTGVmdCgpIGNvbnN0OwogICAgIExheW91
dFVuaXQgYm9yZGVyQm90dG9tKCkgY29uc3Q7CkBAIC0xNzUsNiArMTc0LDExIEBAIHB1YmxpYzoK
ICAgICBSZWN0IHBhZGRpbmdCb3goKSBjb25zdDsKICAgICBSZWN0IGNvbnRlbnRCb3goKSBjb25z
dDsKIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdpbkJl
Zm9yZShMYXlvdXQ6OkVzdGltYXRlZE1hcmdpbkJlZm9yZSBtYXJnaW5CZWZvcmUpIHsgbV9lc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmU7IH0KKyAgICBPcHRpb25hbDxMYXlvdXQ6
OkVzdGltYXRlZE1hcmdpbkJlZm9yZT4gZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHN0cnVjdCBTdHlsZSB7CiAgICAgICAgIFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CkBAIC0x
OTQsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEhvcml6b250YWxNYXJnaW4oTGF5
b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRWZXJ0aWNhbE1hcmdpbihM
YXlvdXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsQ29tcHV0
ZWRNYXJnaW4oTGF5b3V0OjpDb21wdXRlZEhvcml6b250YWxNYXJnaW4pOwotICAgIHZvaWQgc2V0
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSB7IG1fZXN0aW1h
dGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CisgICAgdm9pZCBzZXRIYXNDbGVhcmFu
Y2UoKSB7IG1faGFzQ2xlYXJhbmNlID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5
b3V0OjpFZGdlcyk7CiAgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+
KTsKQEAgLTIwMyw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZU1hcmdp
bigpOwogICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IGZh
bHNlOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcg
PSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIHsg
bV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSB7IH07IH0KIAogICAgIHZvaWQgc2V0SGFzVmFsaWRU
b3AoKSB7IG1faGFzVmFsaWRUb3AgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxpZExlZnQo
KSB7IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsgfQpAQCAtMjI3LDcgKzIzMiw3IEBAIHByaXZhdGU6
CiAgICAgTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxNYXJnaW47CiAg
ICAgTGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKICAgICBMYXlv
dXQ6OkNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxDb21wdXRlZE1hcmdpbjsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKKyAgICBi
b29sIG1faGFzQ2xlYXJhbmNlOwogCiAgICAgTGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKICAgICBP
cHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBtX3BhZGRpbmc7CkBAIC0yNDMsNiArMjQ4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFzVmFsaWRQYWRkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzVmFsaWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRDb250
ZW50V2lkdGggeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPExheW91dDo6RXN0aW1hdGVkTWFyZ2lu
QmVmb3JlPiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKICNlbmRpZgogfTsKIApAQCAtNTIwLDgg
KzUyNiw4IEBAIGlubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpVc2Vk
VmVydGljYWxNYXJnaW4gbWFyZ2luKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBzZXRIYXNW
YWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNl
ZE1hcmdpbigpOworICAgIGludmFsaWRhdGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKTsKICNlbmRp
ZgotICAgIEFTU0VSVCghbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgfHwgKm1fZXN0aW1hdGVkTWFy
Z2luQmVmb3JlID09IG1hcmdpbi5iZWZvcmUoKSk7CiAgICAgbV92ZXJ0aWNhbE1hcmdpbiA9IG1h
cmdpbjsKIH0KIApAQCAtNTQ5LDYgKzU1NSwxNCBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFBhZGRp
bmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gcGFkZGluZykKICAgICBtX3BhZGRpbmcgPSBwYWRk
aW5nOwogfQogCitpbmxpbmUgQm94OjpSZWN0IEJveDo6cmVjdFdpdGhNYXJnaW4oKSBjb25zdAor
eworICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSB0aGlzLT5tYXJnaW5BZnRlcigpOworICAgIGlmICht
X3ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmlzQ29sbGFwc2VkVGhyb3VnaCkKKyAg
ICAgICAgbWFyZ2luQWZ0ZXIgPSAwOworICAgIHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3Jl
KCksIGxlZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFy
Z2luRW5kKCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5BZnRlciB9OworfQor
CiBpbmxpbmUgTGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gQm94Ojp2ZXJ0aWNhbE1hcmdpbigp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggNzFk
MDUzOTc4ODk4OGY3NDFmMDRhMGI3ZDYzZTYzZDY1MTg3ZmIyOC4uNGU5ZjJjYzJjMDE4NmFiNjlm
YWM5NjljMTdmZjRhYTczNjkxYWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
bG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtMTgzLDM0ICsxODMsMzIgQEAgT3B0aW9uYWw8
UG9zaXRpb24+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2Uo
Y29uc3QgQm94JiBsYXkKICAgICAgICAgaWYgKGNsZWFyYW5jZSA8PSAwKQogICAgICAgICAgICAg
cmV0dXJuIHsgfTsKIAorICAgICAgICBkaXNwbGF5Qm94LnNldEhhc0NsZWFyYW5jZSgpOwogICAg
ICAgICAvLyBDbGVhcmFuY2UgaW5oaWJpdHMgbWFyZ2luIGNvbGxhcHNpbmcuIExldCdzIHJlc2V0
IHRoZSByZWxldmFudCBhZGpvaW5pbmcgbWFyZ2lucy4KICAgICAgICAgaWYgKGF1dG8qIHByZXZp
b3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewog
ICAgICAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveCgqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKKyAgICAgICAg
ICAgIC8vIERvZXMgdGhpcyBib3ggd2l0aCBjbGVhcmFuY2UgYWN0dWFsbHkgY29sbGFwc2UgaXRz
IG1hcmdpbiBiZWZvcmUgd2l0aCB0aGUgcHJldmlvdXMgaW5mbG93IGJveCdzIG1hcmdpbiBhZnRl
cj8gCisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxheUJveC52ZXJ0aWNh
bE1hcmdpbigpOworICAgICAgICAgICAgaWYgKHZlcnRpY2FsTWFyZ2luLmhhc0NvbGxhcHNlZFZh
bHVlcygpICYmIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZSkgeworICAg
ICAgICAgICAgICAgIC8vIFJlc2V0IHByZXZpb3VzIGJvdHRvbSBhZnRlciBhbmQgY3VycmVudCBt
YXJnaW4gYmVmb3JlIHRvIG5vbi1jb2xsYXBzaW5nLgorICAgICAgICAgICAgICAgIGF1dG8gcHJl
dmlvdXNWZXJ0aWNhbE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC52ZXJ0aWNhbE1h
cmdpbigpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmhh
c0NvbGxhcHNlZFZhbHVlcygpICYmIHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFs
dWVzKCkuYWZ0ZXIpOwogCi0gICAgICAgICAgICAvLyBTaW5jZSB0aGUgcHJldmlvdXMgaW5mbG93
IHNpYmxpbmcgaGFzIGFscmVhZHkgYmVlbiBsYWlkIG91dCwgaXRzIG1hcmdpbiBpcyBjb2xsYXBz
ZWQgYnkgbm93LgotICAgICAgICAgICAgQVNTRVJUKCFwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gu
bWFyZ2luQWZ0ZXIoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IGRpc3Bs
YXlCb3gubWFyZ2luQmVmb3JlKCk7Ci0KLSAgICAgICAgICAgIC8vIFJlc2V0IHByZXZpb3VzIGJv
dHRvbSBhbmQgY3VycmVudCB0b3AgbWFyZ2lucyB0byBub24tY29sbGFwc2luZy4KLSAgICAgICAg
ICAgIGF1dG8gcHJldmlvdXNWZXJ0aWNhbE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJv
eC52ZXJ0aWNhbE1hcmdpbigpOwotICAgICAgICAgICAgaWYgKHByZXZpb3VzVmVydGljYWxNYXJn
aW4uY29sbGFwc2VkVmFsdWVzKCkuYWZ0ZXIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbGxh
cHNlZE1hcmdpbiA9ICp2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5iZWZvcmU7CiAg
ICAgICAgICAgICAgICAgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMo
eyBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZSwgeyB9IH0p
OwogICAgICAgICAgICAgICAgIHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5zZXRWZXJ0aWNhbE1h
cmdpbihwcmV2aW91c1ZlcnRpY2FsTWFyZ2luKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IC8vIEZJWE1FOiBjaGVjayBpZiBjb2xsYXBzaW5nIHRocm91Z2ggaGFzIGFueXRoaW5nIHRvIGRv
IHdpdGggdGhpcy4KLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94
LnZlcnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBpZiAodmVydGljYWxNYXJnaW4uY29sbGFw
c2VkVmFsdWVzKCkuYmVmb3JlKSB7CisKICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1hcmdpbi5z
ZXRDb2xsYXBzZWRWYWx1ZXMoeyB7IH0sIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygp
LmFmdGVyIH0pOwogICAgICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4o
dmVydGljYWxNYXJnaW4pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIG5vbkNv
bGxhcHNlZE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigpICsg
ZGlzcGxheUJveC5tYXJnaW5CZWZvcmUoKTsKLSAgICAgICAgICAgIGF1dG8gbWFyZ2luT2Zmc2V0
ID0gbm9uQ29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOwotICAgICAgICAgICAgLy8g
TW92ZSB0aGUgYm94IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5vbi1j
b2xsYXBzZWQgbWFyZ2lucy4KLSAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJnaW5P
ZmZzZXQ7CisgICAgICAgICAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBwcmV2aW91
c1ZlcnRpY2FsTWFyZ2luLmFmdGVyKCkgKyB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIG1hcmdpbkRpZmZlcmVuY2UgPSBub25Db2xsYXBzZWRNYXJnaW4gLSBj
b2xsYXBzZWRNYXJnaW47CisgICAgICAgICAgICAgICAgLy8gTW92ZSB0aGUgYm94IHRvIHRoZSBw
b3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5vbi1jb2xsYXBzZWQgbWFyZ2lucy4KKyAg
ICAgICAgICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gbWFyZ2luRGlmZmVyZW5jZTsKIAotICAg
ICAgICAgICAgLy8gSGF2aW5nIG5lZ2F0aXZlIGNsZWFyYW5jZSBpcyBhbHNvIG5vcm1hbC4gSXQg
anVzdCBtZWFucyB0aGF0IHRoZSBib3ggd2l0aCB0aGUgbm9uLWNvbGxhcHNlZCBtYXJnaW5zIGlz
IG5vdyBsb3dlciB0aGFuIGl0IG5lZWRzIHRvIGJlLgotICAgICAgICAgICAgY2xlYXJhbmNlIC09
IG1hcmdpbk9mZnNldDsKKyAgICAgICAgICAgICAgICAvLyBIYXZpbmcgbmVnYXRpdmUgY2xlYXJh
bmNlIGlzIGFsc28gbm9ybWFsLiBJdCBqdXN0IG1lYW5zIHRoYXQgdGhlIGJveCB3aXRoIHRoZSBu
b24tY29sbGFwc2VkIG1hcmdpbnMgaXMgbm93IGxvd2VyIHRoYW4gaXQgbmVlZHMgdG8gYmUuCisg
ICAgICAgICAgICAgICAgY2xlYXJhbmNlIC09IG1hcmdpbkRpZmZlcmVuY2U7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gTm93IGFkanVzdCB0aGUgYm94J3MgcG9zaXRpb24g
d2l0aCB0aGUgY2xlYXJhbmNlLgogICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gY2xlYXJhbmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGUwYWFmNTlkZWZkMDNk
NWQzMTkzYTkyNGU5OWU1Mzk5ODU2YWFjYzUuLjFjNDE2ODA2YzcwZWZmZDBmZjRkMmQ4NWUyNzYz
MWFjMjVjZjljNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTQ2
Niw2ICs0NjYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5l
Q29udGVudEZvclN1YnRyZWUoY29uc3QgQm94JiByb290LCBJbgogICAgIGF1dG8gcGFkZGluZyA9
IEdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcobGF5b3V0U3RhdGUoKSwgcm9vdCk7CiAgICAgYXV0
byBib3JkZXIgPSBHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIobGF5b3V0U3RhdGUoKSwgcm9vdCk7
CiAgICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbihsYXlvdXRTdGF0ZSgpLCByb290KTsKKwogICAgIC8vIFNldHVwIGJyZWFraW5nIGJv
dW5kYXJpZXMgZm9yIHRoaXMgc3VidHJlZS4KICAgICBhdXRvKiBsYXN0RGVzY2VuZGFudElubGlu
ZUJveCA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5sYXN0SW5saW5lSXRlbSgpOwogICAgIC8vIEVt
cHR5IGNvbnRhaW5lcj8KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA5NzEwNGQzY2U5MDZhODZjYTUwZWVlNTVlZTZhMmRmZDlhMjI2MDM1Li4wMGZl
OTQ1ODljZTg2OGVlZGRhYWVhNjZiMjU1MWIyZjU2ZDBlZWM0IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTIt
MjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtCRkNd
W01hcmdpbkNvbGxhcHNpbmddIEFkZCBzdXBwb3J0IGZvciBwZWN1bGlhciBjYXNlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjYyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTGF5b3V0UmVsb2Fk
ZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQ6CisKIDIwMTktMDEtMDUgIE9yaW9sIEJydWZh
dSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgcHl0aG9uMy1zZXR1
cHRvb2xzLCBsaWJ1bmlzdHJpbmctZGV2LCBiaXNvbiBhbmQgZmxleCBkZXBlbmRlbmNpZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0
IGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQKaW5kZXgg
ZmY1ZWIzODE1NGI3MmVmOGM4ODE3ZmIyOTQ1ZjM1MGViYjVkMTAxMi4uMjI1Yjc0NzVkYTgzYWE1
Y2FhZTE5MWVhNTkxYWE2MjUxZTY5Y2Y2OCAxMDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0UmVsb2Fk
ZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQKKysrIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQv
bWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQKQEAgLTQsMjMgKzQsNjYgQEAgZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Fic29sdXRlLWxlZnQtYXV0by5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
YWJzb2x1dGUtbGVmdC1yaWdodC10b3AtYm90dG9tLWF1dG8uaHRtbAogZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Fic29sdXRlLW5lc3RlZDIuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29s
dXRlLW5lc3RlZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24t
bWluLW1heC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0
aW9uLW1pbi1tYXgtd2lkdGguaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBv
c2l0aW9uLXdoZW4tY29udGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhlLWZvcm1hdHRpbmctY29u
dGV4dDIuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLXdoZW4t
Y29udGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhlLWZvcm1hdHRpbmctY29udGV4dC5odG1sCiBm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9hYnNvbHV0ZS13aWR0aC1zaHJpbmstdG8tZml0Lmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9hYnNvbHV0ZS13aWR0aC1zdHJldGNoLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25s
eS9hYnNvbHV0ZS13aXRoLXN0YXRpYy1ibG9jay1wb3NpdGlvbi1uZXN0ZWQuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2FsbW9zdC1pbnRydWRpbmctbGVmdC1mbG9hdC1zaW1wbGUuaHRtbAor
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1x
dWlyazIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1o
dG1sLWhlaWdodC1xdWlyay5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQt
d2l0aC1ub24tYXV0by1odG1sLWhlaWdodC1xdWlyazIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2JvZHktaGVpZ2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAogZmFz
dC9ibG9jay9ibG9jay1vbmx5L2JvcmRlci1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2NvbGxhcHNlZC1tYXJnaW4td2l0aC1taW4taGVpZ2h0Lmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9maXhlZC1uZXN0ZWQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWFu
ZC1zaWJsaW5ncy13aXRoLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0
LWF2b2lkZXItbXVsdGlwbGUtcm9vdHMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0
LWF2b2lkZXItc2ltcGxlLWxlZnQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2
b2lkZXItc2ltcGxlLXJpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9p
ZGVyLXdpdGgtbWFyZ2lucy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbGVmdC13
aGVuLWNvbnRhaW5lci1oYXMtcGFkZGluZy1tYXJnaW4uaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0LW1pbi1tYXgtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dC1taW4tbWF4LXdpZHRoLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1hbmQt
bmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJnaW4td2l0aC1uby1ib3JkZXIuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRo
LW1hcmdpbi5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWNsZWFyLWJv
dGgtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtY2xlYXIt
cmlnaHQtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtbGVm
dC1hbmQtcmlnaHQtbXVsdGlwbGUtd2l0aC10b3Atb2Zmc2V0Lmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9mbG9hdGluZy1ib3gtbGVmdC1hbmQtcmlnaHQtbXVsdGlwbGUuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLWNsZWFyLXNpYmxpbmdzLmh0bWwKK2Zhc3Qv
YmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1jbGVhci1zaW1wbGUuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLW5ldy1mb3JtYXR0aW5nLWNvbnRl
eHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLXJlbGF0aXZl
LXBvc2l0aW9uZWQtc2libGluZy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmct
bGVmdC1hbmQtcmlnaHQtd2l0aC1jbGVhcmFuY2UuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0aW5nLWxlZnQtcmlnaHQtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1sZWZ0LXJpZ2h0LXdpdGgtYWxsLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWxlZnRzLWFuZC1yaWdodHMtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2sv
YmxvY2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1pbi1ib2R5Lmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1tdWx0aXBsZS1saW5lcy5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLXdpdGgtbmV3LWJsb2NrLWZvcm1hdHRpbmctY29u
dGV4dC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1pbi1tYXgtaGVpZ2h0Lmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9pbmZsb3ctbWluLW1heC13aWR0aC5odG1sCiBmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLWJvdHRvbS1ib3R0b20uaHRtbAogZmFz
dC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1ib3R0b20tbmVzdGVkLmh0bWwKK2Zh
c3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtZmlyc3QtbGFzdC1hcmUtZmxvYXRp
bmcuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1zaW1wbGUuaHRt
bAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS10b3AtbmVzdGVkLmh0bWwK
IGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2hlbi1jaGlsZC1oYXMtcGFk
ZGluZy1ib3JkZXIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13
aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L21hcmdpbi1jb2xsYXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sCitmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtY2xlYXJhbmNlLmh0bWwKIGZh
c3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tbGVmdC1yaWdodC1zaXppbmctb3V0LW9mLWZsb3cu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1sZWZ0LXJpZ2h0LXNpemluZy5odG1s
CiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXByb3BhZ2F0aW9uLXNpbXBsZS1jb250ZW50
LWhlaWdodC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXNpYmxpbmctY29sbGFw
c2UtcHJvcGFnYXRlZC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXNpbXBsZS5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWluLW1heC1oZWlnaHQtcGVyY2VudGFnZS5odG1s
CiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbmVnYXRpdmUtbWFyZ2luLXNpbXBsZS5odG1sCiBmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvcGFkZGluZy1uZXN0ZWQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1v
bmx5L3BhZGRpbmctc2ltcGxlLmh0bWwKQEAgLTMxLDgwICs3NCw0OSBAQCBmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvcmVsYXRpdmUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1p
bi10aGUtZm9ybQogZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXJpZ2h0Lmh0bWwKIGZh
c3QvYmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1zaWJsaW5ncy5odG1sCiBmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvcmVsYXRpdmUtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9hYnNv
bHV0ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90LWluLXRoZS1mb3JtYXR0
aW5nLWNvbnRleHQyLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Ut
d2l0aC1ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5
L21hcmdpbi1jb2xsYXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAotZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWxlZnQtd2hlbi1jb250YWluZXItaGFzLXBhZGRpbmct
bWFyZ2luLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtbGVmdC1hbmQt
cmlnaHQtbXVsdGlwbGUtd2l0aC10b3Atb2Zmc2V0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdGluZy1ib3gtbGVmdC1hbmQtcmlnaHQtbXVsdGlwbGUuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Zsb2F0aW5nLWJveC1yaWdodC1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLW5ldy1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAotZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLXJlbGF0aXZlLXBvc2l0aW9uZWQt
c2libGluZy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC1z
aW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQtcmlnaHQtd2l0
aC1hbGwtbWFyZ2lucy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdHMt
YW5kLXJpZ2h0cy1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11
bHRpcGxlLWxlZnRzLWluLWJvZHkuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5n
LW11bHRpcGxlLWxlZnRzLW11bHRpcGxlLWxpbmVzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5mbG93LXdpdGgtbWFyZ2luLmh0bWwKLWZhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJn
aW4td2l0aC1uby1ib3JkZXIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxl
ZnQtYW5kLXJpZ2h0LXdpdGgtY2xlYXJhbmNlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdC1hbmQtc2libGluZ3Mtd2l0aC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9tYXJnaW4tY29sbGFwc2Utd2l0aC1jbGVhcmFuY2UuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0LWF2b2lkZXItc2ltcGxlLWxlZnQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0LWF2b2lkZXItc2ltcGxlLXJpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdC1hdm9pZGVyLW11bHRpcGxlLXJvb3RzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdC1hdm9pZGVyLXdpdGgtbWFyZ2lucy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5m
bG93LW1pbi1tYXgtd2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBv
c2l0aW9uLW1pbi1tYXgtd2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LW1p
bi1tYXgtd2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4tbWF4LWhl
aWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWluLW1h
eC1oZWlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LW1pbi1tYXgtaGVpZ2h0
Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9taW4tbWF4LWhlaWdodC1wZXJjZW50YWdlLmh0
bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0bWwt
aGVpZ2h0LXF1aXJrLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRo
LW5vbi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrMi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
Ym9keS1oZWlnaHQtd2l0aC1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrLmh0bWwKLWZhc3QvYmxvY2sv
YmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwK
LWZhc3QvYmxvY2svYmxvY2stb25seS9jb2xsYXBzZWQtbWFyZ2luLXdpdGgtbWluLWhlaWdodC5o
dG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwMi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwMy5odG1s
CitmYXN0L2Jsb2NrL2Jhc2ljLzAwNi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwNy5odG1sCitm
YXN0L2Jsb2NrL2Jhc2ljLzAwOC5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwOS5odG1sCitmYXN0
L2Jsb2NrL2Jhc2ljLzAxMi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljL2NoaWxkLWJsb2NrLWxldmVs
LWJveC13aXRoLWhlaWdodC1wZXJjZW50Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvaGVpZ2h0LXBl
cmNlbnRhZ2Utc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0
aC1mbG9hdGluZy1pbWFnZS5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1jb250ZW50LXdp
dGgtZmxvYXRpbmctaW1hZ2VzMi5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZs
b2F0MS5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czIuaHRtbAotZmFz
dC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdHMzLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBs
ZS1pbmxpbmUtYmxvY2suaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5s
aW5lLWJsb2NrLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtaW5mbG93LXBvc2l0aW9u
ZWQuaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2Nl
bmRhbnQuaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRl
c2NlbmRhbnQyLmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtcGFkZGluZy1s
ZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtYm9yZGVyLWxl
ZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1tYXJnaW4tbGVm
dC1yaWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC1hbmQtbmVzdGVkLWZvcm1h
dHRpbmctcm9vdC13aXRoLW1hcmdpbi1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGlu
ZS1jb250ZW50LXdpdGgtaW1hZ2Utc2ltcGxlLmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250
ZW50LXdpdGgtZmxvYXQtYW5kLW1hcmdpbi5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljL2hlaWdodC1w
ZXJjZW50YWdlLXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljL2NoaWxkLWJsb2NrLWxldmVs
LWJveC13aXRoLWhlaWdodC1wZXJjZW50Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvcGVyY2VudC1o
ZWlnaHQtaW5zaWRlLWFub255bW91cy1ibG9jay5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL3F1aXJr
LW1vZGUtcGVyY2VudC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9xdWlyay1wZXJjZW50
LWhlaWdodC1ncmFuZGNoaWxkLmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDAxLmh0bWwKIGZhc3Qv
YmxvY2svZmxvYXQvMDA3Lmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDA4Lmh0bWwKIGZhc3QvYmxv
Y2svZmxvYXQvMDA5Lmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDEzLmh0bWwKIGZhc3QvYmxvY2sv
ZmxvYXQvMDE5Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDAyLmh0bWwKLWZhc3QvYmxvY2svYmFz
aWMvMDAzLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA2Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMv
MDA3Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA4Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA5
Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDEyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvbmVnYXRp
dmUtbWFyZ2luLWNsZWFyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvb3ZlcmhhbmdpbmctYWZ0ZXIt
aGVpZ2h0LWRlY3JlYXNlLW9mZnNldHMuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVyaGFuZ2lu
Zy1hZnRlci1oZWlnaHQtZGVjcmVhc2UuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVybGFwcGlu
Zy1mbG9hdHMtd2l0aC1vdmVyZmxvdy1oaWRkZW4uaHRtbAorZmFzdC9ibG9jay9mbG9hdC9wcmV2
aW91cy1zaWJsaW5nLWFic3Bvcy0wMDIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9yZWxhdGl2ZS1w
YWludGVkLXR3aWNlLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvYXZvaWRhbmNlLXJ0bC5odG1sCitm
YXN0L2Jsb2NrL2Zsb2F0L2JyLXdpdGgtY2xlYXIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9jbGFt
cGVkLXJpZ2h0LWZsb2F0Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXQtb24temVyby1oZWln
aHQtbGluZS5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LW92ZXJoYW5ncy1yb290Lmh0bWwK
K2Zhc3QvYmxvY2svZmxvYXQvZmxvYXQtd2l0aC1hbm9ueW1vdXMtcHJldmlvdXMtc2libGluZy5o
dG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0cy1ub3QtY2xlYXJlZC1jcmFzaC5odG1sCiBmYXN0
L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8wMDIuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFw
c2UvMDAzLmh0bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyNi5odG1sCiBmYXN0L2Js
b2NrL21hcmdpbi1jb2xsYXBzZS8wMjcuaHRtbAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2Uv
MDI4Lmh0bWwKK2Zhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyOS5odG1sCitmYXN0L2Jsb2Nr
L21hcmdpbi1jb2xsYXBzZS8wMzUuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDM5
Lmh0bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzA0MC5odG1sCitmYXN0L2Jsb2NrL3Bv
c2l0aW9uaW5nLzAwMy5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzAwNC5odG1sCiBmYXN0
L2Jsb2NrL3Bvc2l0aW9uaW5nLzAwNS5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzAwNi5o
dG1sCkBAIC0xNDUsOCArMTU3LDI5IEBAIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDQ2Lmh0bWwK
IGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDQ5Lmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcv
MDUyLmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDU0Lmh0bWwKK2Zhc3QvYmxvY2svcG9z
aXRpb25pbmcvMDYwLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvYWJzb2x1dGUtcG9zaXRp
b25pbmctbm8tc2Nyb2xsYmFyLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY2hhbmdlLWNv
bnRhaW5pbmctYmxvY2stZm9yLWFic29sdXRlLXBvc2l0aW9uZWQuaHRtbAorZmFzdC9ibG9jay9w
b3NpdGlvbmluZy9jaGFuZ2UtY29udGFpbmluZy1ibG9jay1mb3ItZml4ZWQtcG9zaXRpb25lZC5o
dG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2NvbXBsZXgtcG9zaXRpb25lZC1tb3ZlbWVudC5o
dG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2ZpeGVkLXBvc2l0aW9uLWRldGFjaGVkLWZyYW1l
Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9zaXRpb24tc3RhY2tpbmctY29u
dGV4dDIuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1wb3NpdGlvbi1zdGFja2lu
Zy1jb250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvaGlkaW5nLWluc2lkZS1yZWxw
b3NpdGlvbmVkLWlubGluZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2luc2VydC1wb3Np
dGlvbmVkLWluLWFub255bW91cy1jcmFzaC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2xl
ZnRtYXJnaW4tdG9wbWFyZ2luLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvbmVnYXRpdmUt
cmVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvYWJzLWluc2lkZS1pbmxp
bmUtcmVsLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvcHJlZi13aWR0aC1jaGFuZ2UuaHRt
bAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9yZWxhdGl2ZS1vdmVyZmxvdy1yZXBsYWNlZC1mbG9h
dC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3N0YXRpYy1pbmxpbmUtcG9zaXRpb24tZHlu
YW1pYy5odG1sCiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL2Jhc2ljLWZsb2F0LWludHJ1c2lv
bi5odG1sCiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL2NyYXNoLW9uLWZpcnN0LWxpbmUtY2hh
bmdlLmh0bWwKK2Zhc3QvYmxvY2svbGluZWJveGNvbnRhaW4vcmVwbGFjZWQuaHRtbAorZmFzdC9i
bG9jay9jb2xsYXBzZS1hbm9uLWJsb2NrLXdpdGgtZmxvYXQtc2libGluZ3Mtb25seS5odG1sCitm
YXN0L2Jsb2NrL2NyYXNoLXdoZW4tYW5vbnltb3VzLWJsb2Nrcy1hcmUtbWVyZ2VkLXdpdGgtc2lt
cGxlLWxpbmUtbGF5b3V0Lmh0bWwKK2Zhc3QvYmxvY2svY3Jhc2gtd2hlbi1zdWJ0cmVlLWlzLXN0
aWxsLWF0dGFjaGVkLmh0bWwKK2Zhc3QvYmxvY2svZ2VvbWV0cnktbWFwLWFzc2VydGlvbi13aXRo
LXRhbGwtY29udGVudC5odG1sCiBmYXN0L2JvcmRlcnMvMHB4LWJvcmRlcnMtbm8tbGluZS1oZWln
aHQuaHRtbAogZmFzdC9ib3JkZXJzLzBweC1ib3JkZXJzLmh0bWwKIGZhc3QvYm9yZGVycy9ibG9j
ay1tYXNrLW92ZXJsYXktaW1hZ2Utb3V0c2V0Lmh0bWwKQEAgLTE1NiwxMSArMTg5LDggQEAgZmFz
dC9ib3JkZXJzL2JvcmRlci1pbWFnZS1zY2FsZWQtZ3JhZGllbnQuaHRtbAogZmFzdC9ib3JkZXJz
L2JvcmRlci1pbWFnZS1zbGljZS1vbWlzc2lvbi5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLWxl
ZnQtcmlnaHQtc2FtZS1ib3R0b20tZGlmZmVyZW50LWNvbG9yLmh0bWwKIGZhc3QvYm9yZGVycy9i
b3JkZXItcGFpbnRpbmctZGFzaGVkLWF0LWFsbC5odG1sCi1mYXN0L2JvcmRlcnMvYm9yZGVyLXBh
aW50aW5nLWRhc2hlZC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdHRlZC1h
dC1hbGwuaHRtbAotZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kb3R0ZWQuaHRtbAogZmFz
dC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kb3VibGUtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVy
cy9ib3JkZXItcGFpbnRpbmctZG91YmxlLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRp
bmctZ3Jvb3ZlLWF0LWFsbC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWluc2V0
LWF0LWFsbC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWluc2V0Lmh0bWwKQEAg
LTE2OSw0ICsxOTksODYgQEAgZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1vdXRzZXQuaHRt
bAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1yaWRnZS1hdC1hbGwuaHRtbAogZmFzdC9i
b3JkZXJzL2JvcmRlci1wYWludGluZy1zb2xpZC1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2Jv
cmRlci1wYWludGluZy1zb2xpZC5odG1sCi1mYXN0L2lubGluZS1ibG9jay8wMDQuaHRtbAorZmFz
dC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtaW5zZXQtb3V0c2V0Lmh0bWwKK2Zhc3QvYm9yZGVycy9i
b3JkZXItcmFkaXVzLW9uLWh0bWwuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtb24t
c3VicGl4ZWwtcG9zaXRpb24tbm9uLWhpZHBpLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFk
aXVzLXBlcmNlbnQuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtdmFsaWQtYm9yZGVy
LWNsaXBwaW5nLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpZGUtYm9yZGVyLTAx
Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpdGgtYm94LXNoYWRvdy0wMS5odG1s
CitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy13aXRoLWJveC1zaGFkb3cuaHRtbAorZmFzdC9i
b3JkZXJzL2JvcmRlci1zaGFkb3ctbGFyZ2UtcmFkaXVzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3Jk
ZXJSYWRpdXNBbGxTdHlsZXNBbGxDb3JuZXJzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRp
dXNBcmNzMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAxLmh0bWwKK2Zh
c3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEYXNoZWQwMi5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVy
UmFkaXVzRGFzaGVkMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAxLmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3R0ZWQwMi5odG1sCitmYXN0L2JvcmRlcnMv
Ym9yZGVyUmFkaXVzRG90dGVkMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJs
ZTAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwMi5odG1sCitmYXN0L2Jv
cmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1
c0dyb292ZTAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNHcm9vdmUwMi5odG1sCitm
YXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzSW5zZXQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVy
UmFkaXVzSW52YWxpZENvbG9yLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNPdXRzZXQw
MS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzUmlkZ2UwMS5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyUmFkaXVzU29saWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzU29s
aWQwMi5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzU29saWQwMy5odG1sCitmYXN0L2Jv
cmRlcnMvYm9yZGVyUmFkaXVzU29saWQwNC5odG1sCitmYXN0L2JvcmRlcnMvZGFzaGVkLWJvcmRl
ci1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvZG90dGVkLWJvcmRlci1v
bi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvZG91YmxlLTFweC1ib3JkZXIt
YXNzZXJ0Lmh0bWwKK2Zhc3QvYm9yZGVycy9lbXB0eS1kcmF3cmVjdC1hc3NlcnQtYWZ0ZXItcGl4
ZWxzbmFwLmh0bWwKK2Zhc3QvYm9yZGVycy9lbXB0eS1vdXRsaW5lLWJvcmRlci1hc3NlcnQuaHRt
bAorZmFzdC9ib3JkZXJzL2hpZHBpLTN4LWlucHV0LWhhaXJsaW5lLWJvcmRlci5odG1sCitmYXN0
L2JvcmRlcnMvaGlkcGktYm9yZGVyLWNsaXBwaW5nLXJpZ2h0LWFmdGVyLW1vdmUuaHRtbAorZmFz
dC9ib3JkZXJzL2hpZHBpLWJvcmRlci1wYWludGluZy1ncm9vdmUuaHRtbAorZmFzdC9ib3JkZXJz
L2hpZHBpLWJvcmRlci1wYWludGluZy1yaWRnZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9y
ZGVyLXJhZGl1cy1vdXRlci1ib3JkZXItZ29lcy1yZWN0YW5nbGUuaHRtbAorZmFzdC9ib3JkZXJz
L2hpZHBpLWJvcmRlci1yYWRpdXMtd2l0aC1zdWJwaXhlbC1tYXJnaW4tbm90LXJlbmRlcmFibGUu
aHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRlci13aWR0aC1mbG9vcmluZy5odG1sCitmYXN0
L2JvcmRlcnMvaGlkcGktb3V0bGluZS1oYWlybGluZS1wYWludGluZy5odG1sCitmYXN0L2JvcmRl
cnMvaGlkcGktb3V0bGluZS1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMv
aGlkcGktcm91bmRlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3Jk
ZXJzL2hpZHBpLXNpbXBsZS1oYWlybGluZS1ib3JkZXItcGFpbnRpbmcuaHRtbAorZmFzdC9ib3Jk
ZXJzL21peGVkLWJvcmRlci1zdHlsZTIuaHRtbAorZmFzdC9ib3JkZXJzL25lZ2F0aXZlLWJvcmRl
ci13aWR0aC5odG1sCitmYXN0L2JvcmRlcnMvb3V0bGluZS1vZmZzZXQtbWluLWFzc2VydC5odG1s
CitmYXN0L2JvcmRlcnMvb3V0bGluZS1vZmZzZXQtb3ZlcmZsb3cuaHRtbAorZmFzdC9ib3JkZXJz
L3dlYmtpdC1ib3JkZXItcmFkaXVzLmh0bWwKK2Zhc3QvaW5saW5lL2Fic29sdXRlLXBvc2l0aW9u
ZWQtYmxvY2staW4tY2VudHJlZC1ibG9jay5odG1sCitmYXN0L2lubGluZS9hYnNvbHV0ZS1wb3Np
dGlvbmVkLWlubGluZS1pbi1jZW50cmVkLWJsb2NrLmh0bWwKK2Zhc3QvaW5saW5lL2Fub255bW91
cy1ibG9jay13aXRoLWVtcHR5LWlubGluZS5odG1sCitmYXN0L2lubGluZS9oaWRwaS1vdXRsaW5l
LWF1dG8tbmVnYXRpdmUtb2Zmc2V0LXdpdGgtYm9yZGVyLXJhZGl1cy5odG1sCitmYXN0L2lubGlu
ZS9oaWRwaS1vdXRsaW5lLWF1dG8td2l0aC1mcmFjdGlvbmFsLXJhZGl1cy5odG1sCitmYXN0L2lu
bGluZS9oaWRwaS1vdXRsaW5lLWF1dG8td2l0aC1vbmUtZm9jdXNyaW5nLXJlY3QuaHRtbAorZmFz
dC9pbmxpbmUvaGlkcGktcGl4ZWwtZ2FwLWJldHdlZW4tYWRqYWNlbnQtc2VsZWN0aW9uLWlubGlu
ZXMuaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktc2VsZWN0LWlubGluZS1vbi1zdWJwaXhlbC1wb3Np
dGlvbi5odG1sCitmYXN0L2lubGluZS9oaWRwaS1zZWxlY3Rpb24tZ2FwLW9uLXN1YnBpeGVsLXBv
c2l0aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdGlvbi1nYXAtb3ZlcmxhcHMtaW5s
aW5lLXNlbGVjdGlvbi5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtYm9keS13aXRoLXNjcm9sbGJh
ci1jcmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY2hpbGQtaGVpZ2h0LXdpZHRoLWNhbGMt
Y3Jhc2guaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1ib3JkZXItbGVmdC1y
aWdodC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0LWFuZC1tYXJn
aW4uaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1pbWFnZS1zaW1wbGUuaHRt
bAorZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1tYXJnaW4tbGVmdC1yaWdodC5odG1s
CitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLXBhZGRpbmctbGVmdC1yaWdodC5odG1s
CitmYXN0L2lubGluZS9pbmxpbmUtbWFycXVlZS1jcmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxp
bmUtcGFkZGluZy1kaXNhYmxlcy10ZXh0LXF1aXJrLmh0bWwKK2Zhc3QvaW5saW5lL25ldy1mbG9h
dC1uZWVkcy1sYXlvdXQtd2hlbi1saW5lLWlzLWRpcnR5Lmh0bWwKK2Zhc3QvaW5saW5lL3BlcmNl
bnRhZ2UtbWFyZ2lucy5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWJsb2NrLmh0bWwK
K2Zhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtaW5mbG93LXBvc2l0aW9uZWQuaHRtbAorZmFzdC9p
bmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQyLmh0bWwKK2Zh
c3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50Lmh0bWwK
K2Zhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXQxLmh0bWwKK2Zhc3QvaW5saW5lL3Np
bXBsZS1pbnRydWRpbmctZmxvYXRzMi5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5n
LWZsb2F0czMuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWxpbmUtbGF5b3V0LTE2Yml0LWNvbnRl
bnQuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5saW5lLWJsb2NrLmh0
bWwKK2Zhc3QvaW5saW5lL3NraXBwZWQtd2hpdGVzcGFjZS1ib3VuZGluZ0JveC5odG1sCitmYXN0
L2lubGluZS9za2lwcGVkLXdoaXRlc3BhY2UtY2xpZW50LXJlY3QuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358479</attachid>
            <date>2019-01-06 21:48:00 -0800</date>
            <delta_ts>2019-01-08 07:47:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>87262</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkODRjN2RlMjQ1My4uOGVhYzQxNDM2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAxOS0wMS0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2luQ29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBl
Y3VsaWFyIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHNvbWUgb2YgdGhlIG1vcmUgcGVjdWxpYXIgY2FzZXMgbGlrZSBtYXJn
aW4gY29sbHBhc2luZyB0aHJvdWdoIG11bHRpcGxlIGJveGVzIGV0Yy4KKyAgICAgICAgQWRkIH4x
MDAgbmV3IHBhc3NpbmcgY2FzZXMuCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRT
dGF0ZTo6aGFzRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTWFyZ2lu
VHlwZXMuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1h
cmdpbkJlZm9yZUZvckFuY2VzdG9ycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
UG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENs
ZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFkanVzdGVkVmVydGljYWxQb3NpdGlvbkFm
dGVyTWFyZ2luQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmJsb2NrRm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmVzdGltYXRlZE1hcmdpbkFmdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hl
ZEluRmxvd0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEhl
aWdodCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdTdGF0ZTo6c2V0UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6Omhhc1Bvc2l0aXZlQW5kTmVn
YXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ1N0YXRlOjpwb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6c2V0
SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nU3RhdGU6OmNsZWFySGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6Omhhc0VzdGltYXRlZE1h
cmdpbkJlZm9yZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a01hcmdpbkNvbGxhcHNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aGFzQ2xlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJn
aW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dD
aGlsZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJs
aW5nTWFyZ2luQmVmb3JlV2l0aENsZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoTGFzdEluRmxvd0NoaWxkTWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0Nv
bGxhcHNlVGhyb3VnaCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVkUG9zaXRp
dmVBbmROZWdhdGl2ZU1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1hcmdpblZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
TWFyZ2luQ29sbGFwc2U6OnVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OnBv
c2l0aXZlTmVnYXRpdmVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Ok1hcmdpbkNvbGxhcHNlOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZFZlcnRpY2FsVmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Q29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xs
YXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om5vbkNv
bGxhcHNlZE1hcmdpbkFmdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZE1hcmdpbkJl
Zm9yZUZyb21GaXJzdENoaWxkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZE1hcmdpbkFm
dGVyRnJvbUxhc3RDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoUHJldmlvdXNTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29s
bGFwc2VzV2l0aE5leHRTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpCb3gpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Omhhc0NsZWFyYW5jZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldEVzdGltYXRlZE1hcmdpbkJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmVzdGltYXRlZE1hcmdpbkJlZm9yZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldEhhc0NsZWFyYW5jZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmludmFsaWRhdGVFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRWZXJ0aWNhbE1h
cmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnJlY3RXaXRoTWFyZ2luIGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldp
dGhDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9yU3VidHJlZSBjb25z
dCk6CisKIDIwMTktMDEtMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtCRkNdIE1hcmdpbiBjb2xsYXBzaW5nIHNob3VsZCBub3QgYmUgbGltaXRlZCB0
byBpbi1mbG93IG5vbi1yZXBsYWNlZCBib3hlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA3NWU3YjdlZTY5Yy4uNTNk
NWU4ZjBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAKQEAgLTc4Niw2ICs3ODYsNyBAQCBIZWlnaHRBbmRNYXJnaW4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihj
b25zdAogICAgIC8vICMxCiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0
cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAg
YXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNl
ZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1
dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OworCiAgICAgYXV0byYgc3R5bGUg
PSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRvIHJlcGxhY2VkID0gbGF5b3V0Qm94LnJlcGxh
Y2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggMDQ3NzVhYjJiYjYu
LjI4NDQ2Y2Y5YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaApAQCAtNzUsNiAr
NzUsNyBAQCBwdWJsaWM6CiAKICAgICBGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZUZv
ckJveChjb25zdCBCb3gmKSBjb25zdDsKICAgICBGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVk
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0OworICAgIGJv
b2wgaGFzRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0IHsg
cmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlcy5jb250YWlucygmZm9ybWF0dGluZ1Jvb3QpOyB9CiAg
ICAgRm9ybWF0dGluZ1N0YXRlJiBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9v
dElmTmVlZGVkKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpOwogCiAgICAgRGlzcGxheTo6Qm94
JiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKaW5kZXggNGUxZmM1NmQ1NTYuLjcyMGU2ZDNlMTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaApAQCAtNTAsNiArNTAsNyBAQCBzdHJ1
Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKICAgICBzdHJ1Y3QgQ29sbGFwc2VkVmFsdWVzIHsKICAg
ICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYmVmb3JlOwogICAgICAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiBhZnRlcjsKKyAgICAgICAgYm9vbCBpc0NvbGxhcHNlZFRocm91Z2ggeyBmYWxzZSB9
OwogICAgIH07CiAgICAgQ29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29sbGFwc2VkVmFsdWVzOyB9CiAgICAgYm9vbCBoYXNDb2xsYXBzZWRWYWx1ZXMo
KSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZFZhbHVlcy5iZWZvcmUgfHwgbV9jb2xsYXBzZWRW
YWx1ZXMuYWZ0ZXI7IH0KQEAgLTU5LDYgKzYwLDcgQEAgc3RydWN0IFVzZWRWZXJ0aWNhbE1hcmdp
biB7CiAKICAgICBVc2VkVmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CiAgICAgflVzZWRWZXJ0
aWNhbE1hcmdpbigpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBOb25Db2xsYXBzZWRWYWx1
ZXMgbV9ub25Db2xsYXBzZWRWYWx1ZXM7CiAgICAgQ29sbGFwc2VkVmFsdWVzIG1fY29sbGFwc2Vk
VmFsdWVzOwpAQCAtNzQsNiArNzYsMTAgQEAgc3RydWN0IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsK
ICAgICBMYXlvdXRVbml0IGVuZDsKIH07CiAKK3N0cnVjdCBFc3RpbWF0ZWRNYXJnaW5CZWZvcmUg
eworICAgIExheW91dFVuaXQgY29tcHV0ZWRWYWx1ZTsKK307CisKIHN0cnVjdCBQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gewogICAgIHN0cnVjdCBWYWx1ZXMgewogICAgICAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBwb3NpdGl2ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IDI0ODExMTZhZmQ3Li45N2IzYjQ5YTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0xODYsMTIgKzE4NiwxNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QK
IAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVm
b3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewotICAgIGF1dG8mIGxheW91dFN0YXRl
ID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKLSAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9
IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7
CisgICAgYXV0byBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBNYXJnaW5Db2xsYXBzZTo6ZXN0aW1h
dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlKCksIGxheW91dEJveCk7CisgICAgYmxvY2tGb3Jt
YXR0aW5nU3RhdGUoKS5zZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0Qm94KTsKIAot
ICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KGxheW91dEJveCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlKCkuZGlzcGxh
eUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBk
aXNwbGF5Qm94LnNldEVzdGltYXRlZE1hcmdpbkJlZm9yZShlc3RpbWF0ZWRNYXJnaW5CZWZvcmUp
OwotICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkoZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTsK
KyNlbmRpZgorICAgIGRpc3BsYXlCb3guc2V0VG9wKGFkanVzdGVkVmVydGljYWxQb3NpdGlvbkFm
dGVyTWFyZ2luQ29sbGFwc2luZyhsYXlvdXRCb3gsIGVzdGltYXRlZE1hcmdpbkJlZm9yZS5jb21w
dXRlZFZhbHVlKSk7CiB9CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVz
dGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyhjb25zdCBCb3gmIGxheW91dEJveCkgY29u
c3QKQEAgLTIwOCwxMiArMjEwLDExIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyhjb25zdCBCb3gmCiAgICAgLy8g
U28gd2hlbiB3ZSBnZXQgdG8gdGhlIHBvaW50IHdoZXJlIHdlIGludGVyc2VjdCB0aGUgYm94IHdp
dGggdGhlIGZsb2F0IHRvIGRlY2lkZSBpZiB0aGUgYm94IG5lZWRzIHRvIG1vdmUsIHdlIGRvbid0
IHlldCBoYXZlIHRoZSBmaW5hbCB2ZXJ0aWNhbCBwb3NpdGlvbi4KICAgICAvLwogICAgIC8vIFRo
ZSBpZGVhIGhlcmUgaXMgdGhhdCBhcyBsb25nIGFzIHdlIGRvbid0IGNyb3NzIHRoZSBibG9jayBm
b3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnksIHdlIHNob3VsZCBiZSBhYmxlIHRvIHByZS1jb21w
dXRlIHRoZSBmaW5hbCB0b3AgbWFyZ2luLgotICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+
bGF5b3V0U3RhdGUoKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBibG9ja0Zvcm1hdHRp
bmdTdGF0ZSgpOwogCiAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKTsgYW5jZXN0b3IgJiYgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQoKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsK
LSAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goKmFuY2VzdG9yKTsKICAgICAgICAgLy8gRklYTUU6IHdpdGggaW5jcmVtZW50YWwgbGF5
b3V0LCB3ZSBtaWdodCBhY3R1YWxseSBoYXZlIGEgdmFsaWQgKG5vbi1lc3RpbWF0ZWQpIG1hcmdp
biB0b3AgYXMgd2VsbC4KLSAgICAgICAgaWYgKGRpc3BsYXlCb3guZXN0aW1hdGVkTWFyZ2luQmVm
b3JlKCkpCisgICAgICAgIGlmIChmb3JtYXR0aW5nU3RhdGUuaGFzRXN0aW1hdGVkTWFyZ2luQmVm
b3JlKCphbmNlc3RvcikpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY29tcHV0ZUVz
dGltYXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IpOwpAQCAtMjM4LDEwICsyMzksMTAgQEAgdm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpwcmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZv
cm1hdHRpbmdSb290SWZOZWVkZWQKIH0KIAogI2lmbmRlZiBOREVCVUcKLXN0YXRpYyBib29sIGhh
c1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgYm9vbCBoYXNQcmVjb21wdXRlZE1hcmdpbkJl
Zm9yZShjb25zdCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKIHsKICAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gbGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpOyBhbmNlc3RvciAmJiAhYW5jZXN0b3ItPmVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dCgpOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5jb250YWluaW5nQmxvY2so
KSkgewotICAgICAgICBpZiAobGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqYW5j
ZXN0b3IpLmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQorICAgICAgICBpZiAoZm9ybWF0dGluZ1N0
YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yNTMsNyArMjU0LDcgQEAg
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdQb3NpdGlvbihjb25z
dCBGbG9hdGluZ0NvbnRleHQmIGZsb2EKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMt
PmxheW91dFN0YXRlKCk7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25l
ZCgpKTsKLSAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpOworICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShibG9j
a0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlvdXRCb3gpKTsKIAogICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgLy8g
OC4zLjEgQ29sbGFwc2luZyBtYXJnaW5zCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0
aW5nQ29udGV4dCYKICAgICBBU1NFUlQobGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIWxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25l
ZCgpKTsKICAgICBBU1NFUlQoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpOwotICAgIEFTU0VS
VChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7Cisg
ICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGJsb2NrRm9ybWF0dGluZ1N0YXRl
KCksIGxheW91dEJveCkpOwogCiAgICAgaWYgKGZsb2F0aW5nQ29udGV4dC5mbG9hdGluZ1N0YXRl
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yOTIsNyArMjkzLDcgQEAgdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xl
YXIoY29uc3QgRmxvYXRpbmcKICAgICAvLyBGb3IgZm9ybWF0dGluZyByb290cywgd2UgYWxyZWFk
eSBwcmVjb21wdXRlZCBmaW5hbCBwb3NpdGlvbi4KICAgICBpZiAoIWxheW91dEJveC5lc3RhYmxp
c2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5C
ZWZvcmVGb3JBbmNlc3RvcnMobGF5b3V0Qm94KTsKLSAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VSVChoYXNQcmVj
b21wdXRlZE1hcmdpbkJlZm9yZShibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlvdXRCb3gpKTsK
IAogICAgIGlmIChhdXRvIHZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlID0gZmxvYXRpbmdD
b250ZXh0LnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGxheW91dEJveCkpCiAgICAgICAg
IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRUb3AoKnZl
cnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKTsKQEAgLTM3MSwxNSArMzcyLDIxIEBAIHZvaWQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gY29sbGFwc2Vk
TWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRWYWx1ZXMgeyBNYXJnaW5Db2xs
YXBzZTo6bWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBNYXJnaW5Db2xsYXBz
ZTo6bWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkgfTsKKyAgICBhdXRvIGNvbGxh
cHNlZE1hcmdpbiA9IE1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luKTsK
ICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luIHsgaGVpZ2h0QW5k
TWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH07CiAgICAgYXV0byYg
ZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5ibG9ja0Zvcm1hdHRpbmdTdGF0
ZSgpOworICAgIGlmIChmb3JtYXR0aW5nU3RhdGUuaGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxh
eW91dEJveCkpIHsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmNsZWFySGFzRXN0aW1hdGVkTWFy
Z2luQmVmb3JlKGxheW91dEJveCk7CisgICAgICAgIEFTU0VSVChsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCktPmNvbXB1
dGVkVmFsdWUgPT0gdmVydGljYWxNYXJnaW4uYmVmb3JlKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBkaXNwbGF5Qm94LnNldFRvcChhZGp1c3RlZFZlcnRpY2FsUG9zaXRpb25BZnRlck1hcmdpbkNv
bGxhcHNpbmcobGF5b3V0Qm94LCB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKSkpOworCiAgICAgZGlz
cGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwogICAg
IGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOwotCi0gICAgLy8g
SWYgdGhpcyBib3ggaGFzIGFscmVhZHkgYmVlbiBtb3ZlZCBieSB0aGUgZXN0aW1hdGVkIHZlcnRp
Y2FsIG1hcmdpbiwgbm8gbmVlZCB0byBtb3ZlIGl0IGFnYWluLgotICAgIGlmIChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCAhZGlzcGxheUJveC5lc3RpbWF0ZWRNYXJnaW5CZWZv
cmUoKSkKLSAgICAgICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxseSh2ZXJ0aWNhbE1hcmdpbi5i
ZWZvcmUoKSk7CisgICAgLy8gQWRqdXN0IHRoZSBwcmV2aW91cyBzaWJsaW5nJ3MgbWFyZ2luIGJv
dHRvbSBub3cgdGhhdCB0aGlzIGJveCdzIHZlcnRpY2FsIG1hcmdpbiBpcyBjb21wdXRlZC4KKyAg
ICBpZiAoTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1Np
YmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgTWFyZ2lu
Q29sbGFwc2U6OnVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqbGF5b3V0
Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpLCB2ZXJ0aWNhbE1hcmdpbik7CiB9CiAKIEZvcm1h
dHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cygpIGNvbnN0CkBAIC00NDYsNiArNDUz
LDM3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljCiAgICAgcmV0dXJuIGluc3RyaW5zaWNXaWR0
aENvbnN0cmFpbnRzOwogfQogCitMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmFk
anVzdGVkVmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFwc2luZyhjb25zdCBCb3gmIGxh
eW91dEJveCwgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUpIGNvbnN0Cit7CisgICAgLy8gTm93IHRo
YXQgd2UndmUgY29tcHV0ZWQgdGhlIGZpbmFsIG1hcmdpbiBiZWZvcmUsIGxldCdzIHNoaWZ0IHRo
ZSBib3gncyB2ZXJ0aWNhbCBwb3NpdGlvbi4KKyAgICAvLyAxLiBDaGVjayBpZiB0aGUgbWFyZ2lu
IGJlZm9yZSBjb2xsYXBzZXMgd2l0aCB0aGUgcHJldmlvdXMgYm94J3MgbWFyZ2luIGFmdGVyLiBp
ZiBub3QgLT4gcmV0dXJuIHByZXZpb3VzIGJveCdzIGJvdHRvbSBpbmxjdWRpbmcgbWFyZ2luIGFm
dGVyICsgbWFyZ2luQmVmb3JlCisgICAgLy8gMi4gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIGJveCdz
IG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaC4gSWYgbm90IC0+IHJldHVybiBwcmV2aW91cyBib3gn
IGJvdHRvbSBleGNsdWRpbmcgbWFyZ2luIGFmdGVyICsgbWFyZ2luQmVmb3JlICh0aGV5IGFyZSBz
dXBwb3NlZCB0byBiZSBlcXVhbCkKKyAgICAvLyAzLiBHbyB0byBwcmV2aW91cyBib3ggYW5kIHN0
YXJ0IGZyb20gc3RlcCAjMSB1bnRpbCB3ZSBoaXQgdGhlIHBhcmVudCBib3guCisgICAgYXV0byYg
bGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOworICAgIGF1dG8qIGN1cnJlbnRMYXlv
dXRCb3ggPSAmbGF5b3V0Qm94OworICAgIHdoaWxlIChjdXJyZW50TGF5b3V0Qm94KSB7CisgICAg
ICAgIGlmICghY3VycmVudExheW91dEJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gKmN1
cnJlbnRMYXlvdXRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygpOworICAgICAgICBpZiAoIU1h
cmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsICpjdXJyZW50TGF5b3V0Qm94KSkgeworICAgICAgICAgICAg
YXV0byYgcHJldmlvdXNEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91
dEJveChwcmV2aW91c0luRmxvd1NpYmxpbmcpOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3Vz
RGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpICsgbWFyZ2luQmVmb3JlOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhy
b3VnaChsYXlvdXRTdGF0ZSwgcHJldmlvdXNJbkZsb3dTaWJsaW5nKSkgeworICAgICAgICAgICAg
YXV0byYgcHJldmlvdXNEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91
dEJveChwcmV2aW91c0luRmxvd1NpYmxpbmcpOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3Vz
RGlzcGxheUJveC5ib3R0b20oKSArIG1hcmdpbkJlZm9yZTsKKyAgICAgICAgfQorICAgICAgICBj
dXJyZW50TGF5b3V0Qm94ID0gJnByZXZpb3VzSW5GbG93U2libGluZzsKKyAgICB9CisKKyAgICBh
dXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3AgPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hUb3Ao
KTsKKyAgICBpZiAoTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJl
bnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkgfHwgTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3A7
CisKKyAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCArIG1hcmdpbkJlZm9y
ZTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDIxZGUzYjQ5
MjM0Li5mZWI2MmM0YTA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTUwLDYg
KzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgbGF5b3V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CisgICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGJsb2NrRm9ybWF0dGluZ1N0YXRlKCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdT
dGF0ZSgpKTsgfQorCiAgICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRp
bmdDb250ZXh0JiwgY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0
aW9uZWRDaGlsZHJlbihjb25zdCBDb250YWluZXImKSBjb25zdDsKIApAQCAtNjcsNiArNjksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0
aW5nUm9vdElmTmVlZGVkKGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgSW5zdHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBMYXlvdXRVbml0IGFkanVzdGVkVmVydGljYWxQb3NpdGlvbkFmdGVyTWFyZ2luQ29sbGFw
c2luZyhjb25zdCBCb3gmLCBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSkgY29uc3Q7CiAKICAgICAv
LyBUaGlzIGNsYXNzIGltcGxlbWVudHMgcG9zaXRpb25pbmcgYW5kIHNpemluZyBmb3IgYm94ZXMg
cGFydGljaXBhdGluZyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICBjbGFzcyBH
ZW9tZXRyeSA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkgewpAQCAtNzksOSAr
ODIsNiBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgYm9vbCBpbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50c05lZWRDaGlsZHJlbldpZHRoKGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgSW5z
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBl
c3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAg
ICAgICAgc3RhdGljIExheW91dFVuaXQgZXN0aW1hdGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0
U3RhdGUmLCBjb25zdCBCb3gmKTsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBIZWln
aHRBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0
U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0ID0geyB9
KTsKICAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRV
bml0PiB1c2VkV2lkdGggPSB7IH0pOwpAQCAtOTIsMzYgKzkyLDM4IEBAIHByaXZhdGU6CiAgICAg
Ly8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIG1hcmdpbiBjb2xsYXBzaW5nIGZvciBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuCiAgICAgY2xhc3MgTWFyZ2luQ29sbGFwc2UgewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgbWFy
Z2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5B
ZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAg
ICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0
U3RhdGUmLCBjb25zdCBCb3gmKTsKLQotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRl
ZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYp
OwotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBVc2Vk
VmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyBjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhj
b25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbjo6
Tm9uQ29sbGFwc2VkVmFsdWVzJik7CiAKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29sbGFw
c2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3Jl
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUgZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFy
Z2luJiBuZXh0U2libGluZ1ZlcnRpY2FsTWFyZ2luKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBt
YXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNvbGxh
cHNlc1dpdGhQcmV2aW91c1NpYmxpbmcoY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nKGNvbnN0IEJveCYpOwotICAgICAg
ICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhTaWJsaW5nTWFyZ2luQmVmb3Jl
V2l0aENsZWFyYW5jZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBz
dGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdp
bkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMg
Ym9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7CisKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
KyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTGFzdEluRmxvd0No
aWxkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKICAgICAgICAg
c3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJsaW5nTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFw
c2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94Jik7CisKICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luc0NvbGxhcHNlVGhy
b3VnaChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgZW51bSBjbGFzcyBNYXJnaW5UeXBlIHsgQmVmb3JlLCBBZnRlciB9OworICAgICAgICBz
dGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgcG9zaXRpdmVO
ZWdhdGl2ZVZhbHVlcyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE1hcmdpblR5cGUs
IGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzJik7CisgICAgICAg
IHN0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2
ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29u
c3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMmKTsKKyAgICAgICAgc3Rh
dGljIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIHBvc2l0aXZlTmVn
YXRpdmVNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IFVz
ZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzJik7CiAgICAgfTsKIAogICAgIGNs
YXNzIFF1aXJrcyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBuZWVkc1N0cmV0
Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIEhl
aWdodEFuZE1hcmdpbiBzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmLCBIZWlnaHRBbmRNYXJnaW4pOworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIHN0
cmV0Y2hlZEluRmxvd0hlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIEhlaWdo
dEFuZE1hcmdpbik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29s
IHNob3VsZElnbm9yZU1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7
CiAgICAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAppbmRleCA0Y2JiYzYzMzA0MC4uNDE3MGVhYzkwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTk5LDcgKzk5LDYgQEAgSGVpZ2h0QW5k
TWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmcKICAgICB9OwogCiAgICAgYXV0byBoZWlnaHRBbmRNYXJnaW4gPSBjb21w
dXRlKCk7Ci0KICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IGhlaWdo
dCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBoZWlnaHRB
bmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9yZSA8PCAicHgsICIgPDwgaGVpZ2h0QW5k
TWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogfQpAQCAt
MjU3LDcgKzI1Niw3IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExhCiAgICAgaWYgKCFRdWlya3M6
Om5lZWRzU3RyZXRjaGluZyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJu
IGhlaWdodEFuZE1hcmdpbjsKIAotICAgIGhlaWdodEFuZE1hcmdpbiA9IFF1aXJrczo6c3RyZXRj
aGVkSGVpZ2h0KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIGhlaWdodEFuZE1hcmdpbik7CisgICAg
aGVpZ2h0QW5kTWFyZ2luID0gUXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQobGF5b3V0U3Rh
dGUsIGxheW91dEJveCwgaGVpZ2h0QW5kTWFyZ2luKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShG
b3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGlu
ZmxvdyBub24tcmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwg
aGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdp
bi5ub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4u
bm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91
dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWlnaHRBbmRNYXJnaW47CkBAIC0zMTgsMzAgKzMx
Nyw2IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6CiAgICAgcmV0dXJuIHsgbWluaW11bUludHJp
bnNpY1dpZHRoLCBtYXhpbXVtSW50cmluc2ljV2lkdGggfTsKIH0KIAotTGF5b3V0VW5pdCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAg
QVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0gICAgLy8gQ2FuJ3QgZXN0aW1h
dGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cgYm94ZXMgKGFuZCB3ZSBzaG91bGRu
J3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgotICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNJbkZsb3coKSk7Ci0gICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0
IGJvdW5kYXJ5LgotICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpKTsKLQotICAgIC8vIExldCdzIGp1c3QgdXNlIHRoZSBub3JtYWwgcGF0aCBm
b3Igbm93LgotICAgIHJldHVybiBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNC
bG9ja0xldmVsQm94KCkpOwotICAgIC8vIENhbid0IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdpbnMg
Zm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gaXQgZm9y
IGZsb2F0IGJveGVzKS4KLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwotICAgIC8v
IENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBib3VuZGFyeS4KLSAgICBBU1NF
UlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAg
ICAvLyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFsIHBhdGggZm9yIG5vdy4KLSAgICByZXR1cm4g
TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotfQot
CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4
IGExMDc5NzRkMDdhLi5iN2Y5MDU4MGVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwCkBAIC02Niw4ICs2Niw5IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6UXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
CiAgICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKTsK
IH0KIAotSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3Ry
ZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gsIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW4pCitIZWlnaHRBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgSGVp
Z2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbikKIHsKKyAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
SW5GbG93KCkpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpIHx8IGxheW91
dEJveC5pc0JvZHlCb3goKSk7CiAKICAgICBhdXRvJiBkb2N1bWVudEJveCA9IGxheW91dEJveC5p
c0RvY3VtZW50Qm94KCkgPyBsYXlvdXRCb3ggOiAqbGF5b3V0Qm94LnBhcmVudCgpOwpAQCAtODcs
MTEgKzg4LDExIEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWly
a3M6OnN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0CiAgICAgICAgIC8vIEhlcmUgaXMg
dGhlIHF1aXJreSBwYXJ0IGZvciBib2R5IGJveDoKICAgICAgICAgLy8gU3RyZXRjaCB0aGUgYm9k
eSB1c2luZyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrJ3MgaGVpZ2h0IGFuZCBzaHJpbmsg
aXQgd2l0aCBkb2N1bWVudCBib3gncyBtYXJnaW4vYm9yZGVyL3BhZGRpbmcuCiAgICAgICAgIC8v
IFRoaXMgbG9va3MgZXh0cmVtZWx5IG9kZCB3aGVuIGh0bWwgaGFzIG5vbi1hdXRvIGhlaWdodC4K
LSAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGRvY3VtZW50Qm94KSArIEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJn
aW5BZnRlcihsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpOwotICAgICAgICBzdHJlY2hlZEhlaWdo
dCAtPSB2ZXJ0aWNhbE1hcmdpbjsKKyAgICAgICAgYXV0byBkb2N1bWVudEJveFZlcnRpY2FsTWFy
Z2luID0gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGRvY3Vt
ZW50Qm94KTsKKyAgICAgICAgc3RyZWNoZWRIZWlnaHQgLT0gKGRvY3VtZW50Qm94VmVydGljYWxN
YXJnaW4uYmVmb3JlLnZhbHVlT3IoMCkgKyBkb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmFmdGVy
LnZhbHVlT3IoMCkpOwogCi0gICAgICAgIGF1dG8gbm9uQ29sbGFwc2VkVmFsdWVzID0gaGVpZ2h0
QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbjsKLSAgICAgICAgdG90YWxWZXJ0aWNhbE1hcmdp
biA9IG5vbkNvbGxhcHNlZFZhbHVlcy5iZWZvcmUgKyBub25Db2xsYXBzZWRWYWx1ZXMuYWZ0ZXI7
CisgICAgICAgIGF1dG8gYm9keUJveFZlcnRpY2FsTWFyZ2luID0gaGVpZ2h0QW5kTWFyZ2luLm5v
bkNvbGxhcHNlZE1hcmdpbjsgCisgICAgICAgIHRvdGFsVmVydGljYWxNYXJnaW4gPSBib2R5Qm94
VmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9keUJveFZlcnRpY2FsTWFyZ2luLmFmdGVyOwogICAg
IH0KIAogICAgIC8vIFN0cmV0Y2ggYnV0IG5ldmVyIG92ZXJzdHJldGNoIHdpdGggdGhlIG1hcmdp
bnMuCkBAIC0xMDksNiArMTEwLDIwIEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVp
cmtzOjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmCiAgICAgcmV0
dXJuIGxheW91dFN0YXRlLmluUXVpcmtzTW9kZSgpICYmIGlzUXVpcmtDb250YWluZXIoKmxheW91
dEJveC5wYXJlbnQoKSkgJiYgaGFzTWFyZ2luQmVmb3JlUXVpcmtWYWx1ZShsYXlvdXRCb3gpOwog
fQogCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFy
Z2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3sKKyAgICAvLyBJZ25vcmUgbWFyaW5nIGFmdGVyIHdoZW4gdGhlIGlnbm9yZWQgbWFy
Z2luIGJlZm9yZSBjb2xsYXBzZXMgdGhyb3VnaC4KKyAgICBpZiAoIXNob3VsZElnbm9yZU1hcmdp
bkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgQVNTRVJUKGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgYXV0byYgcGFyZW50ID0gKmxh
eW91dEJveC5wYXJlbnQoKTsKKyAgICBpZiAocGFyZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0No
aWxkKCkgIT0gJmxheW91dEJveCB8fCBwYXJlbnQuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQo
KSAhPSBwYXJlbnQubGFzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gTWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91
Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdT
dGF0ZS5oCmluZGV4IGJiOTY2OTM5MGZmLi5iYjQ1NmI1OTI3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
U3RhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQogCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTWFyZ2lu
VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQyLDYgKzQzLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CbG9ja0Zvcm1hdHRp
bmdTdGF0ZSgpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVh
dGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihj
b25zdCBCb3gmIGxheW91dEJveCwgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHZl
cnRpY2FsTWFyZ2luKSB7IG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLnNldCgm
bGF5b3V0Qm94LCB2ZXJ0aWNhbE1hcmdpbik7IH0KKyAgICBib29sIGhhc1Bvc2l0aXZlQW5kTmVn
YXRpdmVWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4uY29udGFpbnMoJmxheW91dEJveCk7
IH0KKyAgICBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gcG9zaXRpdmVBbmROZWdh
dGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5nZXQoJmxheW91dEJveCk7IH0KKwor
ICAgIHZvaWQgc2V0SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94
KSB7IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlTGlzdC5hZGQoJmxheW91dEJveCk7IH0KKyAgICB2
b2lkIGNsZWFySGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSB7
IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlTGlzdC5yZW1vdmUoJmxheW91dEJveCk7IH0KKyAgICBi
b29sIGhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3Qg
eyByZXR1cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmNvbnRhaW5zKCZsYXlvdXRCb3gp
OyB9CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBQb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW4+IG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOwor
ICAgIEhhc2hTZXQ8Y29uc3QgQm94Kj4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggYzcxZDM5MjYwYTcuLmJlZmNlMzk4
MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTcwLDEyICs3MCwxMSBAQCBzdGF0
aWMgYm9vbCBoYXNQYWRkaW5nQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAgcmV0dXJu
IGhhc1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0FmdGVyKCkpOwogfQogCi1zdGF0
aWMgYm9vbCBoYXNDbGVhcmFuY2UoY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgYm9vbCBo
YXNDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKICAgICBpZiAoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAvLyBGSVhNRQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmhhc0NsZWFy
YW5jZSgpOwogfQogCiBzdGF0aWMgYm9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC04Nyw5MyArODYsNiBAQCBzdGF0aWMgYm9vbCBl
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAg
ICAgcmV0dXJuIGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsK
IH0KIAotc3RhdGljIExheW91dFVuaXQgbWFyZ2luVmFsdWUoTGF5b3V0VW5pdCBjdXJyZW50TWFy
Z2luVmFsdWUsIExheW91dFVuaXQgY2FuZGlkYXRlTWFyZ2luVmFsdWUpCi17Ci0gICAgaWYgKCFj
YW5kaWRhdGVNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJnaW5WYWx1ZTsK
LSAgICBpZiAoIWN1cnJlbnRNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZU1h
cmdpblZhbHVlOwotICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgcG9zaXRpdmUuCi0gICAgaWYgKGNh
bmRpZGF0ZU1hcmdpblZhbHVlID4gMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPiAwKQotICAgICAg
ICByZXR1cm4gc3RkOjptYXgoY2FuZGlkYXRlTWFyZ2luVmFsdWUsIGN1cnJlbnRNYXJnaW5WYWx1
ZSk7Ci0gICAgLy8gQm90aCBtYXJnaW5zIGFyZSBuZWdhdGl2ZS4KLSAgICBpZiAoY2FuZGlkYXRl
TWFyZ2luVmFsdWUgPCAwICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA8IDApCi0gICAgICAgIHJldHVy
biAwIC0gc3RkOjptYXgoc3RkOjphYnMoY2FuZGlkYXRlTWFyZ2luVmFsdWUudG9GbG9hdCgpKSwg
c3RkOjphYnMoY3VycmVudE1hcmdpblZhbHVlLnRvRmxvYXQoKSkpOwotICAgIC8vIE9uZSBvZiB0
aGUgbWFyZ2lucyBpcyBuZWdhdGl2ZS4KLSAgICByZXR1cm4gY3VycmVudE1hcmdpblZhbHVlICsg
Y2FuZGlkYXRlTWFyZ2luVmFsdWU7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGNv
bnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0g
ICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICByZXR1cm4gR2Vv
bWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCkuYmVm
b3JlLnZhbHVlT3IoMCk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NF
UlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIHJldHVybiBHZW9tZXRyeTo6
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5hZnRlci52YWx1
ZU9yKDApOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNv
bGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
QmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE5vbiBjb2xsYXBzZWQgbWFyZ2luIHRvcCBpbmNs
dWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93IGZpcnN0IGNoaWxkLgotICAgIHJldHVy
biBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQobGF5b3V0
U3RhdGUsIGxheW91dEJveCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChs
YXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJn
aW4gYm90dG9tIGluY2x1ZGVzIGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgbGFzdCBjaGls
ZC4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRl
cihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENo
aWxkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZp
cnN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAg
IC8vIENoZWNrIGlmIHRoZSBmaXJzdCBjaGlsZCBjb2xsYXBzZXMgaXRzIG1hcmdpbiB0b3AuCi0g
ICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8v
IERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1h
dHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxh
eW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgLy8gRklYTUU6IFRha2UgY29sbGFwc2VkIHRocm91Z2ggbWFyZ2luIGludG8gYWNjb3Vu
dC4KLSAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5
b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2luIHRvcCBy
ZWN1cnNpdmVseS4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJn
aW5CZWZvcmVGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpOwot
fQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpj
b2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
QmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGNoaWxkIHByb3Bh
Z2F0ZXMgaXRzIG1hcmdpbiBib3R0b20uCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJv
eCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBh
IGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jh
cjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdD
b250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRP
bmx5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IENoZWNrIGZvciBjb2xs
YXBzZWQgdGhyb3VnaCBtYXJnaW4uCi0gICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25j
YXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAoIW1h
cmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXN0
SW5GbG93Q2hpbGQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIENvbGxlY3QgY29sbGFw
c2VkIG1hcmdpbiBib3R0b20gcmVjdXJzaXZlbHkuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNv
bXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGls
ZCksIGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGFzdElu
Rmxvd0NoaWxkKSk7Ci19Ci0KIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29s
bGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIC8v
IDEuIFRoaXMgaXMgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFw
c2UgdGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMgd2l0aCBwYXJlbnQncyBt
YXJnaW4gYWZ0ZXIgb3IKQEAgLTE4NSw3ICs5Nyw3IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJn
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChjdXJyZW50Qm94ID09IGxh
c3RJbkZsb3dDaGlsZCkKICAgICAgICAgICAgIHJldHVybiBtYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAKLSAgICAgICAg
aWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZygqY3VycmVudEJveCkpCisg
ICAgICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZv
cmUobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjksMTAgKzE0MSw4NiBAQCBi
b29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyAu
Li5hbmQgdGhlIGNoaWxkIGhhcyBubyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFyYW5jZShs
YXlvdXRCb3gpKQorICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
QmxvY2tMZXZlbEJveCgpKTsKKworICAgIGlmICghbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBwcmV2aW91c0luRmxv
d1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOworCisgICAgLy8g
TWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNv
bGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBwcmV2
aW91c0luRmxvd1NpYmxpbmcuaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMg
ZG8gbm90IGNvbGxhcHNlLgorICAgIGlmICgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpICYmICFsYXlvdXRCb3guc3R5bGUoKS50b3AoKS5pc0F1dG8oKSkKKyAgICAgICAgfHwgKHBy
ZXZpb3VzSW5GbG93U2libGluZy5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhcHJldmlvdXNJ
bkZsb3dTaWJsaW5nLnN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29s
bGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgfHwgcHJldmlvdXNJ
bkZsb3dTaWJsaW5nLmlzSW5saW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZlbCBlbGVt
ZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZgorICAgIC8vIGl0cyBu
ZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywgdW5sZXNzIHRoYXQgc2libGluZyBoYXMg
Y2xlYXJhbmNlLgorICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIGlmIChsYXlvdXRCb3guaXNB
bm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKGxheW91dEJv
eC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVz
dGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0
aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
TWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgorICAg
IGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHRvcCBtYXJnaW4gb2YgYW4gaW4tZmxvdyBi
bG9jayBlbGVtZW50IGNvbGxhcHNlcyB3aXRoIGl0cyBmaXJzdCBpbi1mbG93IGJsb2NrLWxldmVs
CisgICAgLy8gY2hpbGQncyB0b3AgbWFyZ2luIGlmIHRoZSBlbGVtZW50IGhhcyBubyB0b3AgYm9y
ZGVyLi4uCisgICAgaWYgKGhhc0JvcmRlckJlZm9yZShsYXlvdXRCb3gpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyAuLi5ubyB0b3AgcGFkZGluZworICAgIGlmIChoYXNQYWRkaW5n
QmVmb3JlKGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXM8
Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCku
aGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgZmly
c3RJbkZsb3dDaGlsZCA9ICpkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZs
b3dDaGlsZCgpOworICAgIGlmICghZmlyc3RJbkZsb3dDaGlsZC5pc0Jsb2NrTGV2ZWxCb3goKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gLi4uYW5kIHRoZSBjaGlsZCBoYXMgbm8g
Y2xlYXJhbmNlLgorICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93
Q2hpbGQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBv
dGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdp
bnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBp
ZiAoZmlyc3RJbkZsb3dDaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90
IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzSW5saW5lQmxvY2tCb3goKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDgsNyArMjM2
LDcgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2lu
QWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmcKICAgICBmb3IgKGF1dG8qIHByZXZpb3VzU2li
bGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsgcHJldmlvdXNTaWJsaW5n
OyBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmctPnByZXZpb3VzSW5GbG93U2libGlu
ZygpKSB7CiAgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwg
KnByZXZpb3VzU2libGluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
IChoYXNDbGVhcmFuY2UoKnByZXZpb3VzU2libGluZykpCisgICAgICAgIGlmIChoYXNDbGVhcmFu
Y2UobGF5b3V0U3RhdGUsICpwcmV2aW91c1NpYmxpbmcpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NSw3ICsyNTMsNyBAQCBib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNl
c1dpdGhQYXJlbnRNYXJnaQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAo
Y3VycmVudEJveCA9PSBmaXJzdEluRmxvd0NoaWxkKQogICAgICAgICAgICAgcmV0dXJuIG1hcmdp
bkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpjdXJy
ZW50Qm94KTsgCi0gICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3Vz
U2libGluZygqY3VycmVudEJveCkpCisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2Vz
V2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqY3VycmVudEJveCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMzI0LDQ0ICszMTIsNjYgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2kKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xs
YXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZyhjb25zdCBCb3gm
IGxheW91dEJveCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAg
QVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICBpZiAoIWxheW91dEJv
eC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRo
YXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBz
ZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBhdXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93
U2libGluZygpOworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2Fz
dDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICBpZiAoIWxhc3RJbkZsb3dDaGls
ZC5pc0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhl
IGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9m
ICdhdXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxk
J3MgYm90dG9tIG1hcmdpbiwgaWY6CisgICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWlnaHQo
KS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGJveCBoYXMg
bm8gYm90dG9tIHBhZGRpbmcsIGFuZAorICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJv
eCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRv
bSBib3JkZXIsIGFuZAorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiBuZWl0
aGVyIGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1hcmdpbiB0aGF0IGhhcyBjbGVhcmFuY2UuLi4KKyAg
ICBpZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVh
cmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXplcm8pIHdp
dGggdGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgYXV0byBjb21wdXRlZE1pbkhlaWdodCA9IGxh
eW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICBpZiAoIWNvbXB1dGVkTWlu
SGVpZ2h0LmlzQXV0bygpICYmIGNvbXB1dGVkTWluSGVpZ2h0LnZhbHVlKCkKKyAgICAgICAgJiYg
KG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwg
bGFzdEluRmxvd0NoaWxkKSB8fCBoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dD
aGlsZCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBNYXJnaW5zIGJldHdlZW4g
YSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93U2libGlu
Zy5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gTWFyZ2lu
cyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlm
ICgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guc3R5bGUo
KS50b3AoKS5pc0F1dG8oKSkKLSAgICAgICAgfHwgKHByZXZpb3VzSW5GbG93U2libGluZy5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nLnN0eWxlKCkuYm90
dG9tKCkuaXNBdXRvKCkpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE1hcmdpbnMgb2YgaW5s
aW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzSW5s
aW5lQmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBh
biBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0
b3AgbWFyZ2luIG9mCi0gICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5n
LCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFyYW5j
ZShsYXlvdXRCb3gpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNJbmxpbmVCbG9ja0JveCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoTmV4dFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0
U2libGluZ01hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94
KCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2
aW91c1NpYmxpbmcoKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKTsKKyAgICByZXR1cm4g
bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCAqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpOwogfQogCiBib29sIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdo
KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBA
IC0zODcsNzcgKzM5NywyMjIgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBMYXlvdXQKICAgICBpZiAoIWlz
PENvbnRhaW5lcj4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAo
IWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKGxheW91
dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgaWYg
KGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRG
b3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSkuaW5saW5lUnVucygpLmlzRW1wdHkoKSkKKyAgICAg
ICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhyb3VnaCBtYXJnaW4gZXN0aW1hdGlvbiwgd2UgZG9uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBhY3R1YWwgc3RhdGUgZm9yIHRoaXMgbGF5b3V0IGJveCBzaW5j
ZQorICAgICAgICAvLyB3ZSBoYXZlbid0IHN0YXJ0ZWQgbGF5aW5nIGl0IG91dCB5ZXQuCisgICAg
ICAgIGlmICghbGF5b3V0U3RhdGUuaGFzRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91
dEJveCkpLmlubGluZVJ1bnMoKS5pc0VtcHR5KCk7CisgICAgfQorICAgIAorICAgIGZvciAoYXV0
byogaW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZs
b3dDaGlsZCgpOyBpbmZsb3dDaGlsZDsgaW5mbG93Q2hpbGQgPSBpbmZsb3dDaGlsZC0+bmV4dElu
Rmxvd1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCppbmZsb3dDaGlsZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGF1
dG8qIGluZmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5G
bG93Q2hpbGQoKTsgaW5mbG93Q2hpbGQ7IGluZmxvd0NoaWxkID0gaW5mbG93Q2hpbGQtPm5leHRJ
bkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3Vn
aChsYXlvdXRTdGF0ZSwgKmluZmxvd0NoaWxkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQogICAgIH0KLQogICAgIHJldHVybiB0cnVlOwogfQogCi1MYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3N0YXRp
YyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRlZFBvc2l0
aXZlQW5kTmVnYXRpdmVNYXJnaW4oUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpW
YWx1ZXMgYSwgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgYikKIHsK
LSAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGNvbXB1dGVkVmFsdWVz
OworICAgIGlmIChhLnBvc2l0aXZlICYmIGIucG9zaXRpdmUpCisgICAgICAgIGNvbXB1dGVkVmFs
dWVzLnBvc2l0aXZlID0gc3RkOjptYXgoKmEucG9zaXRpdmUsICpiLnBvc2l0aXZlKTsKKyAgICBl
bHNlCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLnBvc2l0aXZlID0gYS5wb3NpdGl2ZSA/IGEucG9z
aXRpdmUgOiBiLnBvc2l0aXZlOworCisgICAgaWYgKGEubmVnYXRpdmUgJiYgYi5uZWdhdGl2ZSkK
KyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubmVnYXRpdmUgPSBzdGQ6Om1pbigqYS5uZWdhdGl2ZSwg
KmIubmVnYXRpdmUpOworICAgIGVsc2UKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubmVnYXRpdmUg
PSBhLm5lZ2F0aXZlID8gYS5uZWdhdGl2ZSA6IGIubmVnYXRpdmU7CisKKyAgICByZXR1cm4gY29t
cHV0ZWRWYWx1ZXM7Cit9CiAKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgp
KTsKK3N0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21w
dXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luOjpWYWx1ZXMgYSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWFyZ2luVmFsdWUpCit7Cisg
ICAgaWYgKCFtYXJnaW5WYWx1ZSB8fCAhbWFyZ2luVmFsdWUudmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIGE7CisgICAgaWYgKCptYXJnaW5WYWx1ZSA+IDApCisgICAgICAgIHJldHVybiBjb21wdXRl
ZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oYSwgeyBtYXJnaW5WYWx1ZSwgeyB9IH0pOworICAg
IGlmICgqbWFyZ2luVmFsdWUgPCAwKQorICAgICAgICByZXR1cm4gY29tcHV0ZWRQb3NpdGl2ZUFu
ZE5lZ2F0aXZlTWFyZ2luKGEsIHsgeyB9LCBtYXJnaW5WYWx1ZSB9KTsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitzdGF0aWMgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gbWFyZ2luVmFsdWUoUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1
ZXMgbWFyZ2luVmFsdWVzKQoreworICAgIC8vIFdoZW4gdHdvIG9yIG1vcmUgbWFyZ2lucyBjb2xs
YXBzZSwgdGhlIHJlc3VsdGluZyBtYXJnaW4gd2lkdGggaXMgdGhlIG1heGltdW0gb2YgdGhlIGNv
bGxhcHNpbmcgbWFyZ2lucycgd2lkdGhzLgorICAgIC8vIEluIHRoZSBjYXNlIG9mIG5lZ2F0aXZl
IG1hcmdpbnMsIHRoZSBtYXhpbXVtIG9mIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG5lZ2F0
aXZlIGFkam9pbmluZyBtYXJnaW5zIGlzIGRlZHVjdGVkIGZyb20gdGhlIG1heGltdW0KKyAgICAv
LyBvZiB0aGUgcG9zaXRpdmUgYWRqb2luaW5nIG1hcmdpbnMuIElmIHRoZXJlIGFyZSBubyBwb3Np
dGl2ZSBtYXJnaW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBh
ZGpvaW5pbmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHplcm8uCisgICAgaWYgKCFtYXJnaW5W
YWx1ZXMubmVnYXRpdmUpCisgICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZXMucG9zaXRpdmU7CiAK
LSAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVBbmRBZnRlcigpIGlu
dG8gYWNjb3VudC4KLSAgICBpZiAobWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdp
bkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICAvLyBGSVhNRTogRmluZCBvdXQgdGhlIGxvZ2ljIGJlaGluZCB0aGlzLgotICAgIGlmIChCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoIW1hcmdp
bkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcobGF5b3V0Qm94KSkgewotICAgICAg
ICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0g
ICAgICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpOwotICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2xsYXBzZWQgdGhyb3VnaCB2YWx1
ZS4KLSAgICAgICAgYXV0byBtYXJnaW5CZWZvcmUgPSBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBub25D
b2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsgCi0gICAgICAgIHJl
dHVybiBtYXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyKTsKKyAgICBpZiAoIW1h
cmdpblZhbHVlcy5wb3NpdGl2ZSkKKyAgICAgICAgcmV0dXJuIG1hcmdpblZhbHVlcy5uZWdhdGl2
ZTsKKworICAgIHJldHVybiAqbWFyZ2luVmFsdWVzLnBvc2l0aXZlICsgKm1hcmdpblZhbHVlcy5u
ZWdhdGl2ZTsKK30KKwordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBz
ZTo6dXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiBuZXh0
U2libGluZ1ZlcnRpY2FsTWFyZ2luKQoreworICAgIC8vIDEuIEdldCB0aGUgbWFyZ2luIGJlZm9y
ZSB2YWx1ZSBmcm9tIHRoZSBuZXh0IGluLWZsb3cgc2libGluZy4gVGhpcyBpcyB0aGUgc2FtZSBh
cyB0aGlzIGJveCdzIG1hcmdpbiBhZnRlciB2YWx1ZSBub3cgc2luY2UgdGhleSBhcmUgY29sbGFw
c2VkLgorICAgIC8vIDIuIFVwZGF0ZSB0aGUgY29sbGFwc2VkIG1hcmdpbiBhZnRlciB2YWx1ZSBh
cyB3ZWxsIGFzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyAzLiBDaGVjayBp
ZiB0aGUgYm94J3MgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoLgorICAgIC8vIDQuIElmIHNvLCB1
cGRhdGUgdGhlIGNvbGxhcHNlZCBtYXJnaW4gYmVmb3JlIHZhbHVlIGFzIHdlbGwgYXMgdGhlIHBv
c2l0aXZlL25lZ2F0aXZlIGNhY2hlLgorICAgIC8vIDUuIEluIGNhc2Ugb2YgY29sbGFwc2VkIHRo
cm91Z2ggbWFyZ2lucyBjaGVjayBpZiB0aGUgYmVmb3JlIG1hcmdpbiBjb2xsYXBlcyB3aXRoIHRo
ZSBwcmV2aW91cyBpbmZsb3cgc2libGluZydzIGFmdGVyIG1hcmdpbi4KKyAgICAvLyA2LiBJZiBz
bywganVtcCB0byAjMi4KKyAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aE5leHRTaWJs
aW5nTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91
dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZl
cnRpY2FsTWFyZ2luKCk7CisgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbkFmdGVyID0gbmV4dFNpYmxp
bmdWZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB2ZXJ0
aWNhbE1hcmdpbkJlZm9yZTsKKworICAgIGF1dG8gbWFyZ2luc0NvbGxhcHNlVGhyb3VnaCA9IE1h
cmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpOworICAgIGlmIChtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKQorICAgICAgICB2ZXJ0aWNhbE1h
cmdpbkJlZm9yZSA9IHZlcnRpY2FsTWFyZ2luQWZ0ZXI7IAorICAgIGVsc2UgaWYgKHZlcnRpY2Fs
TWFyZ2luLmhhc0NvbGxhcHNlZFZhbHVlcygpKQorICAgICAgICB2ZXJ0aWNhbE1hcmdpbkJlZm9y
ZSA9IHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZTsKKworICAgIC8vIFVw
ZGF0ZSB2ZXJ0aWNhbCBtYXJnaW4gdmFsdWVzLgorICAgIHZlcnRpY2FsTWFyZ2luLnNldENvbGxh
cHNlZFZhbHVlcyh7IHZlcnRpY2FsTWFyZ2luQmVmb3JlLCB2ZXJ0aWNhbE1hcmdpbkFmdGVyIH0p
OworICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOworCisg
ICAgLy8gVXBkYXRlIHBvc2l0aXZlL25lZ2F0aXZlIGNhY2hlLgorICAgIGF1dG8mIGJsb2NrRm9y
bWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRl
LmZvcm1hdHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsKKyAgICBhdXRvIHBvc2l0aXZlTmVn
YXRpdmVNYXJnaW4gPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVy
dGljYWxNYXJnaW4obGF5b3V0Qm94KTsKKyAgICBhdXRvIG5leHRTaWJsaW5nUG9zaXRpdmVOZWdh
dGl2ZU1hcmdpbkJlZm9yZSA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbigqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpLmJlZm9yZTsK
KworICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIgPSBjb21wdXRlZFBvc2l0aXZlQW5k
TmVnYXRpdmVNYXJnaW4obmV4dFNpYmxpbmdQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlLCBw
b3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyKTsKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhy
b3VnaCkgeworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmJlZm9yZSA9IGNvbXB1dGVk
UG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmJlZm9yZSwg
cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5hZnRlcik7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW4uYWZ0ZXIgPSBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmJlZm9yZTsgCiAgICAgfQorICAg
IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bihsYXlvdXRCb3gsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4pOwogCi0gICAgLy8gVGhlIGJvdHRv
bSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBz
ZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNp
YmxpbmcsCi0gICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgIGF1
dG8qIHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxp
bmcoKTsKLSAgICBpZiAoIXByZXZpb3VzSW5GbG93U2libGluZykKLSAgICAgICAgcmV0dXJuIG5v
bkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBpZiAo
IW1hcmdpbnNDb2xsYXBzZVRocm91Z2ggfHwgIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2
aW91c1NpYmxpbmdNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlciA9IG5vbkNvbGxh
cHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKLSAg
ICBhdXRvIG1hcmdpbkJlZm9yZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKLSAgICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3JlLCBwcmV2
aW91c1NpYmxpbmdNYXJnaW5BZnRlcik7CisgICAgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
bGF5b3V0U3RhdGUsICpsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCksIHZlcnRpY2Fs
TWFyZ2luKTsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCkKK1Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFs
dWVzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpwb3NpdGl2ZU5lZ2F0
aXZlVmFsdWVzKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gsIE1hcmdpblR5cGUgbWFyZ2luVHlwZSwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpO
b25Db2xsYXBzZWRWYWx1ZXMmIG5vbkNvbGxhcHNlZFZhbHVlcykKK3sKKyAgICBhdXRvJiBibG9j
a0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgYXV0byBoYXNQcmVj
b21wdXRlZFZhbHVlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUuaGFzUG9zaXRpdmVBbmROZWdhdGl2
ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCk7CisgICAgaWYgKG1hcmdpblR5cGUgPT0gTWFyZ2lu
VHlwZTo6QmVmb3JlKQorICAgICAgICByZXR1cm4gaGFzUHJlY29tcHV0ZWRWYWx1ZSA/IGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRC
b3gpLmJlZm9yZSA6IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCwgbm9uQ29sbGFwc2VkVmFsdWVzKTsKKyAgICByZXR1cm4gaGFzUHJlY29tcHV0ZWRW
YWx1ZSA/IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1h
cmdpbihsYXlvdXRCb3gpLmFmdGVyIDogcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gsIG5vbkNvbGxhcHNlZFZhbHVlcyk7Cit9CisKK1Bvc2l0aXZlQW5k
TmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbkNvbGxhcHNlOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNh
bE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzJiBub25Db2xsYXBzZWRWYWx1ZXMpCit7CisgICAg
YXV0byBmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlID0gWyZdKCkgLT4gUG9zaXRpdmVB
bmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgeworICAgICAgICBpZiAoIWlzPENvbnRh
aW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGF1dG8q
IGZpcnN0SW5GbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJ
bkZsb3dDaGlsZCgpOworICAgICAgICBpZiAoIWZpcnN0SW5GbG93Q2hpbGQpCisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJz
dEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2lu
QmVmb3JlKGxheW91dFN0YXRlLCAqZmlyc3RJbkZsb3dDaGlsZCkpCisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhsYXlvdXRTdGF0
ZSwgKmZpcnN0SW5GbG93Q2hpbGQsIE1hcmdpblR5cGU6OkJlZm9yZSwgbm9uQ29sbGFwc2VkVmFs
dWVzKTsKKyAgICB9OworCisgICAgYXV0byBwcmV2aW91U2libGluZ0NvbGxhcHNlZE1hcmdpbkFm
dGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMg
eworICAgICAgICBhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlv
dXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJsaW5nKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtzOjpzaG91bGRJZ25v
cmVNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZykpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVl
cyhsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZywgTWFyZ2luVHlwZTo6QWZ0ZXIs
IG5vbkNvbGxhcHNlZFZhbHVlcyk7CisgICAgfTsKKworICAgIC8vIDEuIEdhdGhlciBwb3NpdGl2
ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlcyBmcm9tIGZpcnN0IGNoaWxkIGlmIG1hcmdpbnMg
YXJlIGFkam9pbmluZy4KKyAgICAvLyAyLiBHYXRoZXIgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1h
cmdpbiB2YWx1ZXMgZnJvbSBwcmV2aW91cyBpbmZsb3cgc2libGluZyBpZiBtYXJnaW5zIGFyZSBh
ZGpvaW5pbmcuCisgICAgLy8gMy4gQ29tcHV0ZSBtaW4vbWF4IHBvc2l0aXZlIGFuZCBuZWdhdGl2
ZSBjb2xsYXBzZWQgbWFyZ2luIHZhbHVlcyB1c2luZyBub24tY29sbHBhc2VkIGNvbXB1dGVkIG1h
cmdpbiBiZWZvcmUuCisgICAgYXV0byBjb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFBv
c2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oZmlyc3RDaGlsZENvbGxhcHNlZE1hcmdpbkJlZm9yZSgp
LCBwcmV2aW91U2libGluZ0NvbGxhcHNlZE1hcmdpbkFmdGVyKCkpOworICAgIHJldHVybiBjb21w
dXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oY29sbGFwc2VkTWFyZ2luQmVmb3JlLCBub25D
b2xsYXBzZWRWYWx1ZXMuYmVmb3JlKTsKK30KKworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2Fs
TWFyZ2luOjpWYWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OnBv
c2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxh
cHNlZFZhbHVlcyYgbm9uQ29sbGFwc2VkVmFsdWVzKQoreworICAgIGF1dG8gbGFzdENoaWxkQ29s
bGFwc2VkTWFyZ2luQWZ0ZXIgPSBbJl0oKSAtPiBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxN
YXJnaW46OlZhbHVlcyB7CisgICAgICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgYXV0byogbGFzdEluRmxvd0NoaWxkID0g
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgpOworICAgICAg
ICBpZiAoIWxhc3RJbkZsb3dDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTGFzdEluRmxvd0NoaWxkTWFyZ2luQWZ0ZXIo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICBpZiAoUXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxhc3RJ
bkZsb3dDaGlsZCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gcG9z
aXRpdmVOZWdhdGl2ZVZhbHVlcyhsYXlvdXRTdGF0ZSwgKmxhc3RJbkZsb3dDaGlsZCwgTWFyZ2lu
VHlwZTo6QWZ0ZXIsIG5vbkNvbGxhcHNlZFZhbHVlcyk7CisgICAgfTsKKworICAgIC8vIFdlIGRv
bid0IGtub3cgeWV0IHRoZSBtYXJnaW4gYmVmb3JlIHZhbHVlIG9mIHRoZSBuZXh0IHNpYmxpbmcu
IExldCdzIGp1c3QgcHJldGVuZCBpdCBkb2VzIG5vdCBoYXZlIG9uZSBhbmQgCisgICAgLy8gdXBk
YXRlIGl0IGxhdGVyIHdoZW4gd2UgY29tcHV0ZSB0aGUgbmV4dCBzaWJsaW5nJ3MgbWFyZ2luIGJl
Zm9yZS4gU2VlIHVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFmdGVyLgorICAgIHJldHVybiBjb21wdXRl
ZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4obGFzdENoaWxkQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
KSwgbm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyKTsKK30KKworRXN0aW1hdGVkTWFyZ2luQmVmb3Jl
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjplc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKIHsKICAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2
ZWxCb3goKSk7CisgICAgLy8gQ2FuJ3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0
IG9mIGZsb3cgYm94ZXMgKGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQg
Ym94ZXMpLgorICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7CisgICAgQVNTRVJUKCFs
YXlvdXRCb3gucmVwbGFjZWQoKSk7CisgICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0IGJvdW5kYXJ5LgorICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICAKKyAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxN
YXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KTsKKyAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdp
bjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFs
dWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07IAorCisg
ICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQor
ICAgICAgICByZXR1cm4geyBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3Jl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIG5vbkNvbGxhcHNlZE1hcmdpbikpLnZhbHVlT3IoMCkg
fTsKKyAgICAKKyAgICByZXR1cm4geyBtYXJnaW5WYWx1ZShjb21wdXRlZFBvc2l0aXZlQW5kTmVn
YXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4pLAorICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCwgbm9uQ29sbGFwc2VkTWFyZ2luKSkpLnZh
bHVlT3IoMCkgfTsKK30KIAotICAgIC8vIFRPRE86IHRha2UgX2hhc0Fkam9pbmluZ01hcmdpbkJl
Zm9yZUFuZEJvdHRvbSgpIGludG8gYWNjb3VudC4KLSAgICBpZiAobWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAg
IHJldHVybiAwOworVXNlZFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRWYWx1ZXMgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZFZlcnRpY2FsVmFsdWVzKGNv
bnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzJiBub25Db2xsYXBzZWRWYWx1
ZXMpCit7CisgICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQorICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgaWYgKG1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91
dEJveCkpCi0gICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xl
dmVsQm94KCkpOworICAgIC8vIDEuIEdldCBtaW4vbWF4IG1hcmdpbiB0b3AgdmFsdWVzIGZyb20g
dGhlIGZpcnN0IGluLWZsb3cgY2hpbGQgaWYgd2UgYXJlIGNvbGxhcHNpbmcgbWFyZ2luIHRvcCB3
aXRoIGl0LgorICAgIC8vIDIuIEdldCBtaW4vbWF4IG1hcmdpbiB0b3AgdmFsdWVzIGZyb20gdGhl
IHByZXZpb3VzIGluLWZsb3cgc2libGluZywgaWYgd2UgYXJlIGNvbGxhcHNpbmcgbWFyZ2luIHRv
cCB3aXRoIGl0LgorICAgIC8vIDMuIEdldCB0aGlzIGxheW91dCBib3gncyBjb21wdXRlZCBtYXJn
aW4gdG9wIHZhbHVlLgorICAgIC8vIDQuIFVwZGF0ZSB0aGUgbWluL21heCB2YWx1ZSBhbmQgY29t
cHV0ZSB0aGUgZmluYWwgbWFyZ2luLiAKKyAgICBhdXRvIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5C
ZWZvcmUgPSBNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCBub25Db2xsYXBzZWRWYWx1ZXMpOworICAgIGF1dG8gcG9zaXRp
dmVOZWdhdGl2ZU1hcmdpbkFmdGVyID0gTWFyZ2luQ29sbGFwc2U6OnBvc2l0aXZlTmVnYXRpdmVN
YXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBub25Db2xsYXBzZWRWYWx1ZXMpOwor
CisgICAgYXV0byBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoID0gTWFyZ2luQ29sbGFwc2U6Om1hcmdp
bnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7IAorICAgIGlmIChtYXJn
aW5zQ29sbGFwc2VUaHJvdWdoKSB7CisgICAgICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZv
cmUgPSBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1h
cmdpbkJlZm9yZSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKTsKKyAgICAgICAgcG9zaXRp
dmVOZWdhdGl2ZU1hcmdpbkFmdGVyID0gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZTsgICAg
ICAgICAKKyAgICB9CiAKLSAgICAvLyBGbG9hdHMgYW5kIG91dCBvZiBmbG93IHBvc2l0aW9uZWQg
Ym94ZXMgZG8gbm90IGNvbGxhcHNlIHRoZWlyIG1hcmdpbnMuCi0gICAgaWYgKCFtYXJnaW5BZnRl
ckNvbGxhcHNlc1dpdGhOZXh0U2libGluZyhsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gbm9u
Q29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0byYg
YmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4obGF5
b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkpOworICAgIGJsb2NrRm9y
bWF0dGluZ1N0YXRlLnNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRC
b3gsIHsgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdp
bkFmdGVyIH0pOwogCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9j
ay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZiBp
dHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsCi0gICAgLy8gdW5sZXNzIHRoYXQg
c2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgIGlmIChsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxp
bmcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkFm
dGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIHJldHVybiB7IG1hcmdpblZhbHVlKHBv
c2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUpLCBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZl
TWFyZ2luQWZ0ZXIpLCBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoIH07IAogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKaW5kZXggMzE0
MGE1NWFmYWIuLjYzMWVmNzFiOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCkBAIC02MCw3ICs2MCw3IEBAIEJveDo6Qm94KGNvbnN0
IEJveCYgb3RoZXIpCiAgICAgLCBtX2hvcml6b250YWxNYXJnaW4ob3RoZXIubV9ob3Jpem9udGFs
TWFyZ2luKQogICAgICwgbV92ZXJ0aWNhbE1hcmdpbihvdGhlci5tX3ZlcnRpY2FsTWFyZ2luKQog
ICAgICwgbV9ob3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4ob3RoZXIubV9ob3Jpem9udGFsQ29tcHV0
ZWRNYXJnaW4pCi0gICAgLCBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZShvdGhlci5tX2VzdGltYXRl
ZE1hcmdpbkJlZm9yZSkKKyAgICAsIG1faGFzQ2xlYXJhbmNlKG90aGVyLm1faGFzQ2xlYXJhbmNl
KQogICAgICwgbV9ib3JkZXIob3RoZXIubV9ib3JkZXIpCiAgICAgLCBtX3BhZGRpbmcob3RoZXIu
bV9wYWRkaW5nKQogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTc0LDYgKzc0LDcgQEAgQm94OjpC
b3goY29uc3QgQm94JiBvdGhlcikKICAgICAsIG1faGFzVmFsaWRQYWRkaW5nKG90aGVyLm1faGFz
VmFsaWRQYWRkaW5nKQogICAgICwgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQob3RoZXIubV9oYXNW
YWxpZENvbnRlbnRIZWlnaHQpCiAgICAgLCBtX2hhc1ZhbGlkQ29udGVudFdpZHRoKG90aGVyLm1f
aGFzVmFsaWRDb250ZW50V2lkdGgpCisgICAgLCBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZShvdGhl
ci5tX2VzdGltYXRlZE1hcmdpbkJlZm9yZSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKaW5kZXggMzFkODZhNmJmZDMuLjlh
ZWZiMThkNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5Qm94LmgKQEAgLTEzNiwyMSArMTM2LDIwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKS52YWx1ZU9y
KDApICsgY29udGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApICsgYm9y
ZGVyUmlnaHQoKTsgfQogICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9y
ZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGNvbnRlbnRCb3hIZWlnaHQoKSAr
IHBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApICsgYm9yZGVyQm90dG9tKCk7IH0KICAgICBSZWN0
IHJlY3QoKSBjb25zdCB7IHJldHVybiB7IHRvcCgpLCBsZWZ0KCksIHdpZHRoKCksIGhlaWdodCgp
IH07IH0KLSAgICBSZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSAt
IG1hcmdpbkJlZm9yZSgpLCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJnaW5TdGFydCgpICsg
d2lkdGgoKSArIG1hcmdpbkVuZCgpLCBtYXJnaW5CZWZvcmUoKSArIGhlaWdodCgpICsgbWFyZ2lu
QWZ0ZXIoKSB9OyB9CisgICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNvbnN0OwogCiAgICAgTGF5
b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gdmVydGljYWxNYXJnaW4oKSBjb25zdDsKICAgICBMYXlv
dXRVbml0IG1hcmdpbkJlZm9yZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQo
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKCkgY29uc3Q7CiAgICAgTGF5b3V0
VW5pdCBtYXJnaW5FbmQoKSBjb25zdDsKKyAgICBib29sIGhhc0NsZWFyYW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzQ2xlYXJhbmNlOyB9CiAKICAgICBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1h
cmdpbkJlZm9yZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQWZ0
ZXIoKSBjb25zdDsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1hcmdpblN0YXJ0
KCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXJnaW5FbmQoKSBj
b25zdDsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZE1hcmdpbkJlZm9yZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOyB9Ci0KICAgICBMYXlvdXRV
bml0IGJvcmRlclRvcCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgYm9yZGVyTGVmdCgpIGNvbnN0
OwogICAgIExheW91dFVuaXQgYm9yZGVyQm90dG9tKCkgY29uc3Q7CkBAIC0xNzUsNiArMTc0LDEx
IEBAIHB1YmxpYzoKICAgICBSZWN0IHBhZGRpbmdCb3goKSBjb25zdDsKICAgICBSZWN0IGNvbnRl
bnRCb3goKSBjb25zdDsKIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2b2lkIHNldEVzdGlt
YXRlZE1hcmdpbkJlZm9yZShMYXlvdXQ6OkVzdGltYXRlZE1hcmdpbkJlZm9yZSBtYXJnaW5CZWZv
cmUpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmU7IH0KKyAgICBPcHRp
b25hbDxMYXlvdXQ6OkVzdGltYXRlZE1hcmdpbkJlZm9yZT4gZXN0aW1hdGVkTWFyZ2luQmVmb3Jl
KCkgY29uc3QgeyByZXR1cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7IH0KKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIHN0cnVjdCBTdHlsZSB7CiAgICAgICAgIFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJik7CkBAIC0xOTQsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEhvcml6b250
YWxNYXJnaW4oTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRWZXJ0
aWNhbE1hcmdpbihMYXlvdXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRIb3Jp
em9udGFsQ29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpDb21wdXRlZEhvcml6b250YWxNYXJnaW4pOwot
ICAgIHZvaWQgc2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3Jl
KSB7IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CisgICAgdm9pZCBz
ZXRIYXNDbGVhcmFuY2UoKSB7IG1faGFzQ2xlYXJhbmNlID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBz
ZXRCb3JkZXIoTGF5b3V0OjpFZGdlcyk7CiAgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExh
eW91dDo6RWRnZXM+KTsKQEAgLTIwMyw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52
YWxpZGF0ZU1hcmdpbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxp
ZEJvcmRlciA9IGZhbHNlOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNW
YWxpZFBhZGRpbmcgPSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZUVzdGltYXRlZE1hcmdp
bkJlZm9yZSgpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSB7IH07IH0KIAogICAgIHZvaWQg
c2V0SGFzVmFsaWRUb3AoKSB7IG1faGFzVmFsaWRUb3AgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRI
YXNWYWxpZExlZnQoKSB7IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsgfQpAQCAtMjI3LDcgKzIzMiw3
IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250
YWxNYXJnaW47CiAgICAgTGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdp
bjsKICAgICBMYXlvdXQ6OkNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxDb21w
dXRlZE1hcmdpbjsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJl
Zm9yZTsKKyAgICBib29sIG1faGFzQ2xlYXJhbmNlOwogCiAgICAgTGF5b3V0OjpFZGdlcyBtX2Jv
cmRlcjsKICAgICBPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBtX3BhZGRpbmc7CkBAIC0yNDMsNiAr
MjQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVmFsaWRQYWRkaW5nIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzVmFsaWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzVmFsaWRDb250ZW50V2lkdGggeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPExheW91dDo6RXN0
aW1hdGVkTWFyZ2luQmVmb3JlPiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKICNlbmRpZgogfTsK
IApAQCAtNTIwLDggKzUyNiw4IEBAIGlubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4o
TGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gbWFyZ2luKQogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNh
bE5vbkNvbGxhcHNlZE1hcmdpbigpOworICAgIGludmFsaWRhdGVFc3RpbWF0ZWRNYXJnaW5CZWZv
cmUoKTsKICNlbmRpZgotICAgIEFTU0VSVCghbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgfHwgKm1f
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlID09IG1hcmdpbi5iZWZvcmUoKSk7CiAgICAgbV92ZXJ0aWNh
bE1hcmdpbiA9IG1hcmdpbjsKIH0KIApAQCAtNTQ5LDYgKzU1NSwxNCBAQCBpbmxpbmUgdm9pZCBC
b3g6OnNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gcGFkZGluZykKICAgICBtX3Bh
ZGRpbmcgPSBwYWRkaW5nOwogfQogCitpbmxpbmUgQm94OjpSZWN0IEJveDo6cmVjdFdpdGhNYXJn
aW4oKSBjb25zdAoreworICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSB0aGlzLT5tYXJnaW5BZnRlcigp
OworICAgIGlmIChtX3ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmlzQ29sbGFwc2Vk
VGhyb3VnaCkKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSAwOworICAgIHJldHVybiB7IHRvcCgpIC0g
bWFyZ2luQmVmb3JlKCksIGxlZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3
aWR0aCgpICsgbWFyZ2luRW5kKCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5B
ZnRlciB9OworfQorCiBpbmxpbmUgTGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gQm94Ojp2ZXJ0
aWNhbE1hcmdpbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdp
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5j
cHAKaW5kZXggNzFkMDUzOTc4ODkuLjRlOWYyY2MyYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xODMsMzQgKzE4MywzMiBA
QCBPcHRpb25hbDxQb3NpdGlvbj4gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aENsZWFyYW5jZShjb25zdCBCb3gmIGxheQogICAgICAgICBpZiAoY2xlYXJhbmNlIDw9IDApCiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogCisgICAgICAgIGRpc3BsYXlCb3guc2V0SGFzQ2xlYXJh
bmNlKCk7CiAgICAgICAgIC8vIENsZWFyYW5jZSBpbmhpYml0cyBtYXJnaW4gY29sbGFwc2luZy4g
TGV0J3MgcmVzZXQgdGhlIHJlbGV2YW50IGFkam9pbmluZyBtYXJnaW5zLgogICAgICAgICBpZiAo
YXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpKSB7CiAgICAgICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBs
YXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcp
OworICAgICAgICAgICAgLy8gRG9lcyB0aGlzIGJveCB3aXRoIGNsZWFyYW5jZSBhY3R1YWxseSBj
b2xsYXBzZSBpdHMgbWFyZ2luIGJlZm9yZSB3aXRoIHRoZSBwcmV2aW91cyBpbmZsb3cgYm94J3Mg
bWFyZ2luIGFmdGVyPyAKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5
Qm94LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgICAgICAgICBpZiAodmVydGljYWxNYXJnaW4uaGFz
Q29sbGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkuYmVm
b3JlKSB7CisgICAgICAgICAgICAgICAgLy8gUmVzZXQgcHJldmlvdXMgYm90dG9tIGFmdGVyIGFu
ZCBjdXJyZW50IG1hcmdpbiBiZWZvcmUgdG8gbm9uLWNvbGxhcHNpbmcuCisgICAgICAgICAgICAg
ICAgYXV0byBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94
LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByZXZpb3VzVmVydGlj
YWxNYXJnaW4uaGFzQ29sbGFwc2VkVmFsdWVzKCkgJiYgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5j
b2xsYXBzZWRWYWx1ZXMoKS5hZnRlcik7CiAKLSAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBwcmV2
aW91cyBpbmZsb3cgc2libGluZyBoYXMgYWxyZWFkeSBiZWVuIGxhaWQgb3V0LCBpdHMgbWFyZ2lu
IGlzIGNvbGxhcHNlZCBieSBub3cuCi0gICAgICAgICAgICBBU1NFUlQoIXByZXZpb3VzSW5GbG93
RGlzcGxheUJveC5tYXJnaW5BZnRlcigpKTsKLSAgICAgICAgICAgIGF1dG8gY29sbGFwc2VkTWFy
Z2luID0gZGlzcGxheUJveC5tYXJnaW5CZWZvcmUoKTsKLQotICAgICAgICAgICAgLy8gUmVzZXQg
cHJldmlvdXMgYm90dG9tIGFuZCBjdXJyZW50IHRvcCBtYXJnaW5zIHRvIG5vbi1jb2xsYXBzaW5n
LgotICAgICAgICAgICAgYXV0byBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luID0gcHJldmlvdXNJbkZs
b3dEaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNW
ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5hZnRlcikgeworICAgICAgICAgICAgICAg
IGF1dG8gY29sbGFwc2VkTWFyZ2luID0gKnZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygp
LmJlZm9yZTsKICAgICAgICAgICAgICAgICBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLnNldENvbGxh
cHNlZFZhbHVlcyh7IHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkuYmVm
b3JlLCB7IH0gfSk7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnNl
dFZlcnRpY2FsTWFyZ2luKHByZXZpb3VzVmVydGljYWxNYXJnaW4pOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIGNvbGxhcHNpbmcgdGhyb3VnaCBoYXMgYW55
dGhpbmcgdG8gZG8gd2l0aCB0aGlzLgotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9
IGRpc3BsYXlCb3gudmVydGljYWxNYXJnaW4oKTsKLSAgICAgICAgICAgIGlmICh2ZXJ0aWNhbE1h
cmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5iZWZvcmUpIHsKKwogICAgICAgICAgICAgICAgIHZlcnRp
Y2FsTWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFw
c2VkVmFsdWVzKCkuYWZ0ZXIgfSk7CiAgICAgICAgICAgICAgICAgZGlzcGxheUJveC5zZXRWZXJ0
aWNhbE1hcmdpbih2ZXJ0aWNhbE1hcmdpbik7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm1hcmdp
bkFmdGVyKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgpOwotICAgICAgICAgICAgYXV0byBt
YXJnaW5PZmZzZXQgPSBub25Db2xsYXBzZWRNYXJnaW4gLSBjb2xsYXBzZWRNYXJnaW47Ci0gICAg
ICAgICAgICAvLyBNb3ZlIHRoZSBib3ggdG8gdGhlIHBvc2l0aW9uIHdoZXJlIGl0IHdvdWxkIGJl
IHdpdGggbm9uLWNvbGxhcHNlZCBtYXJnaW5zLgotICAgICAgICAgICAgcm9vdFJlbGF0aXZlVG9w
ICs9IG1hcmdpbk9mZnNldDsKKyAgICAgICAgICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdp
biA9IHByZXZpb3VzVmVydGljYWxNYXJnaW4uYWZ0ZXIoKSArIHZlcnRpY2FsTWFyZ2luLmJlZm9y
ZSgpOworICAgICAgICAgICAgICAgIGF1dG8gbWFyZ2luRGlmZmVyZW5jZSA9IG5vbkNvbGxhcHNl
ZE1hcmdpbiAtIGNvbGxhcHNlZE1hcmdpbjsKKyAgICAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBi
b3ggdG8gdGhlIHBvc2l0aW9uIHdoZXJlIGl0IHdvdWxkIGJlIHdpdGggbm9uLWNvbGxhcHNlZCBt
YXJnaW5zLgorICAgICAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJnaW5EaWZmZXJl
bmNlOwogCi0gICAgICAgICAgICAvLyBIYXZpbmcgbmVnYXRpdmUgY2xlYXJhbmNlIGlzIGFsc28g
bm9ybWFsLiBJdCBqdXN0IG1lYW5zIHRoYXQgdGhlIGJveCB3aXRoIHRoZSBub24tY29sbGFwc2Vk
IG1hcmdpbnMgaXMgbm93IGxvd2VyIHRoYW4gaXQgbmVlZHMgdG8gYmUuCi0gICAgICAgICAgICBj
bGVhcmFuY2UgLT0gbWFyZ2luT2Zmc2V0OworICAgICAgICAgICAgICAgIC8vIEhhdmluZyBuZWdh
dGl2ZSBjbGVhcmFuY2UgaXMgYWxzbyBub3JtYWwuIEl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgYm94
IHdpdGggdGhlIG5vbi1jb2xsYXBzZWQgbWFyZ2lucyBpcyBub3cgbG93ZXIgdGhhbiBpdCBuZWVk
cyB0byBiZS4KKyAgICAgICAgICAgICAgICBjbGVhcmFuY2UgLT0gbWFyZ2luRGlmZmVyZW5jZTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBOb3cgYWRqdXN0IHRoZSBib3gn
cyBwb3NpdGlvbiB3aXRoIHRoZSBjbGVhcmFuY2UuCiAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCAr
PSBjbGVhcmFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMGMz
ZjVjOGQ3N2EuLmFlNWIwZGYwNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCkBAIC00NjYsNiArNDY2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29s
bGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNvbnN0IEJveCYgcm9vdCwgSW4KICAgICBhdXRv
IHBhZGRpbmcgPSBHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKGxheW91dFN0YXRlKCksIHJvb3Qp
OwogICAgIGF1dG8gYm9yZGVyID0gR2VvbWV0cnk6OmNvbXB1dGVkQm9yZGVyKGxheW91dFN0YXRl
KCksIHJvb3QpOwogICAgIGF1dG8gaG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4obGF5b3V0U3RhdGUoKSwgcm9vdCk7CisKICAgICAvLyBTZXR1cCBi
cmVha2luZyBib3VuZGFyaWVzIGZvciB0aGlzIHN1YnRyZWUuCiAgICAgYXV0byogbGFzdERlc2Nl
bmRhbnRJbmxpbmVCb3ggPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGFzdElubGluZUl0ZW0oKTsK
ICAgICAvLyBFbXB0eSBjb250YWluZXI/CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOTcxMDRkM2NlOTAuLjYzMTQwYzgzN2Y1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTktMDEtMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
TEZDXVtCRkNdW01hcmdpbkNvbGxhcHNpbmddIEFkZCBzdXBwb3J0IGZvciBwZWN1bGlhciBjYXNl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjYy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTGF5
b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQ6CisKIDIwMTktMDEtMDUgIE9y
aW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgcHl0
aG9uMy1zZXR1cHRvb2xzLCBsaWJ1bmlzdHJpbmctZGV2LCBiaXNvbiBhbmQgZmxleCBkZXBlbmRl
bmNpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3Npbmct
dGVzdHMudHh0IGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50
eHQKaW5kZXggZmY1ZWIzODE1NGIuLjIyNWI3NDc1ZGE4IDEwMDY0NAotLS0gYS9Ub29scy9MYXlv
dXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dAorKysgYi9Ub29scy9MYXlvdXRS
ZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dApAQCAtNCwyMyArNCw2NiBAQCBmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtbGVmdC1hdXRvLmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9hYnNvbHV0ZS1sZWZ0LXJpZ2h0LXRvcC1ib3R0b20tYXV0by5odG1sCiBmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtbmVzdGVkMi5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvYWJzb2x1dGUtbmVzdGVkLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1w
b3NpdGlvbi1taW4tbWF4LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1
dGUtcG9zaXRpb24tbWluLW1heC13aWR0aC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJz
b2x1dGUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10aGUtZm9ybWF0
dGluZy1jb250ZXh0Mi5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRp
b24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10aGUtZm9ybWF0dGluZy1jb250ZXh0
Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1zaW1wbGUuaHRtbAogZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXdpZHRoLXNocmluay10by1maXQuaHRtbAogZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXdpZHRoLXN0cmV0Y2guaHRtbAogZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Fic29sdXRlLXdpdGgtc3RhdGljLWJsb2NrLXBvc2l0aW9uLW5lc3RlZC5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWxtb3N0LWludHJ1ZGluZy1sZWZ0LWZsb2F0LXNpbXBs
ZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1hdXRvLWh0bWwt
aGVpZ2h0LXF1aXJrMi5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0
aC1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9ib2R5
LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrMi5odG1sCitmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1ub24tYXV0by1odG1sLWhlaWdodC1xdWlyay5o
dG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9yZGVyLXNpbXBsZS5odG1sCitmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvY29sbGFwc2VkLW1hcmdpbi13aXRoLW1pbi1oZWlnaHQuaHRtbAogZmFzdC9i
bG9jay9ibG9jay1vbmx5L2ZpeGVkLW5lc3RlZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
ZmxvYXQtYW5kLXNpYmxpbmdzLXdpdGgtbWFyZ2lucy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvZmxvYXQtYXZvaWRlci1tdWx0aXBsZS1yb290cy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtbGVmdC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
ZmxvYXQtYXZvaWRlci1zaW1wbGUtcmlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0LWF2b2lkZXItd2l0aC1tYXJnaW5zLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dC1sZWZ0LXdoZW4tY29udGFpbmVyLWhhcy1wYWRkaW5nLW1hcmdpbi5odG1sCitmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtbWluLW1heC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0LW1pbi1tYXgtd2lkdGguaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0
aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1hcmdpbi13aXRoLW5vLWJvcmRlci5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5m
bG93LXdpdGgtbWFyZ2luLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gt
Y2xlYXItYm90aC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJv
eC1jbGVhci1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5n
LWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS13aXRoLXRvcC1vZmZzZXQuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXJpZ2h0LXNpbXBsZS5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtY2xlYXItc2libGluZ3MuaHRt
bAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLWNsZWFyLXNpbXBsZS5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtbmV3LWZvcm1hdHRp
bmctY29udGV4dC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgt
cmVsYXRpdmUtcG9zaXRpb25lZC1zaWJsaW5nLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1sZWZ0LWFuZC1yaWdodC13aXRoLWNsZWFyYW5jZS5odG1sCitmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWxlZnQtcmlnaHQtd2l0aC1hbGwtbWFyZ2lucy5odG1sCitmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdHMtYW5kLXJpZ2h0cy1zaW1wbGUuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLWluLWJvZHkuaHRtbAor
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLW11bHRpcGxlLWxp
bmVzLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctd2l0aC1uZXctYmxvY2stZm9ybWF0
dGluZy1jb250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9pbmZsb3ctbWluLW1heC1o
ZWlnaHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4tbWF4LXdpZHRoLmh0
bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2UtYm90dG9tLWJvdHRvbS5o
dG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLWJvdHRvbS1uZXN0ZWQu
aHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1maXJzdC1sYXN0LWFy
ZS1mbG9hdGluZy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXNp
bXBsZS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXRvcC1uZXN0
ZWQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aGVuLWNoaWxk
LWhhcy1wYWRkaW5nLWJvcmRlci5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNv
bGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCitmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Lmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1jbGVhcmFuY2Uu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1sZWZ0LXJpZ2h0LXNpemluZy1vdXQt
b2YtZmxvdy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWxlZnQtcmlnaHQtc2l6
aW5nLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tcHJvcGFnYXRpb24tc2ltcGxl
LWNvbnRlbnQtaGVpZ2h0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tc2libGlu
Zy1jb2xsYXBzZS1wcm9wYWdhdGVkLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4t
c2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9taW4tbWF4LWhlaWdodC1wZXJjZW50
YWdlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9uZWdhdGl2ZS1tYXJnaW4tc2ltcGxlLmh0
bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9wYWRkaW5nLW5lc3RlZC5odG1sCiBmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvcGFkZGluZy1zaW1wbGUuaHRtbApAQCAtMzEsODAgKzc0LDQ5IEBAIGZhc3Qv
YmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2st
aXMtbm90LWluLXRoZS1mb3JtCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVsYXRpdmUtcmlnaHQu
aHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXNpYmxpbmdzLmh0bWwKIGZhc3Qv
YmxvY2svYmxvY2stb25seS9yZWxhdGl2ZS1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Fic29sdXRlLXBvc2l0aW9uLXdoZW4tY29udGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhl
LWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1j
b2xsYXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1jb250ZXh0Mi5o
dG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbGVmdC13aGVuLWNvbnRhaW5lci1oYXMt
cGFkZGluZy1tYXJnaW4uaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1s
ZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS13aXRoLXRvcC1vZmZzZXQuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Zsb2F0aW5nLWJveC1sZWZ0LWFuZC1yaWdodC1tdWx0aXBsZS5odG1sCi1mYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXJpZ2h0LXNpbXBsZS5odG1sCi1mYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtbmV3LWZvcm1hdHRpbmctY29udGV4dC5o
dG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LXdpdGgtcmVsYXRpdmUtcG9z
aXRpb25lZC1zaWJsaW5nLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0
LXJpZ2h0LXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1y
aWdodC13aXRoLWFsbC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGlu
Zy1sZWZ0cy1hbmQtcmlnaHRzLXNpbXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXRpbmctbXVsdGlwbGUtbGVmdHMtaW4tYm9keS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
ZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMtbXVsdGlwbGUtbGluZXMuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJnaW4uaHRtbAot
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13
aXRoLW1hcmdpbi13aXRoLW5vLWJvcmRlci5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxv
YXRpbmctbGVmdC1hbmQtcmlnaHQtd2l0aC1jbGVhcmFuY2UuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0LWFuZC1zaWJsaW5ncy13aXRoLW1hcmdpbnMuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aXRoLWNsZWFyYW5jZS5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtbGVmdC5odG1sCi1mYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvZmxvYXQtYXZvaWRlci1zaW1wbGUtcmlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0LWF2b2lkZXItbXVsdGlwbGUtcm9vdHMuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0LWF2b2lkZXItd2l0aC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2st
b25seS9pbmZsb3ctbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJz
b2x1dGUtcG9zaXRpb24tbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
ZmxvYXQtbWluLW1heC13aWR0aC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1p
bi1tYXgtaGVpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlv
bi1taW4tbWF4LWhlaWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbWluLW1h
eC1oZWlnaHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L21pbi1tYXgtaGVpZ2h0LXBlcmNl
bnRhZ2UuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtbm9uLWF1
dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVp
Z2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKLWZhc3QvYmxvY2svYmxv
Y2stb25seS9ib2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAotZmFz
dC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1xdWly
azIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2NvbGxhcHNlZC1tYXJnaW4td2l0aC1taW4t
aGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDAyLmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMv
MDAzLmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA2Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA3
Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA4Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDA5Lmh0
bWwKK2Zhc3QvYmxvY2svYmFzaWMvMDEyLmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvY2hpbGQtYmxv
Y2stbGV2ZWwtYm94LXdpdGgtaGVpZ2h0LXBlcmNlbnQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9o
ZWlnaHQtcGVyY2VudGFnZS1zaW1wbGUuaHRtbAogZmFzdC9ibG9jay9iYXNpYy9pbmxpbmUtY29u
dGVudC13aXRoLWZsb2F0aW5nLWltYWdlLmh0bWwKIGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNv
bnRlbnQtd2l0aC1mbG9hdGluZy1pbWFnZXMyLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRy
dWRpbmctZmxvYXQxLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMi5o
dG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czMuaHRtbAotZmFzdC9pbmxp
bmUvc2ltcGxlLWlubGluZS1ibG9jay5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRv
LWZpdC1pbmxpbmUtYmxvY2suaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1pbmZsb3ct
cG9zaXRpb25lZC5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZs
b3ctZGVzY2VuZGFudC5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9m
LWZsb3ctZGVzY2VuZGFudDIuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1w
YWRkaW5nLWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1i
b3JkZXItbGVmdC1yaWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLW1h
cmdpbi1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LWFuZC1uZXN0
ZWQtZm9ybWF0dGluZy1yb290LXdpdGgtbWFyZ2luLWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxp
bmUvaW5saW5lLWNvbnRlbnQtd2l0aC1pbWFnZS1zaW1wbGUuaHRtbAotZmFzdC9pbmxpbmUvaW5s
aW5lLWNvbnRlbnQtd2l0aC1mbG9hdC1hbmQtbWFyZ2luLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMv
aGVpZ2h0LXBlcmNlbnRhZ2Utc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvY2hpbGQtYmxv
Y2stbGV2ZWwtYm94LXdpdGgtaGVpZ2h0LXBlcmNlbnQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9w
ZXJjZW50LWhlaWdodC1pbnNpZGUtYW5vbnltb3VzLWJsb2NrLmh0bWwKIGZhc3QvYmxvY2svYmFz
aWMvcXVpcmstbW9kZS1wZXJjZW50LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljL3F1aXJr
LXBlcmNlbnQtaGVpZ2h0LWdyYW5kY2hpbGQuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMDEuaHRt
bAogZmFzdC9ibG9jay9mbG9hdC8wMDcuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMDguaHRtbAog
ZmFzdC9ibG9jay9mbG9hdC8wMDkuaHRtbAogZmFzdC9ibG9jay9mbG9hdC8wMTMuaHRtbAogZmFz
dC9ibG9jay9mbG9hdC8wMTkuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDIuaHRtbAotZmFzdC9i
bG9jay9iYXNpYy8wMDMuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDYuaHRtbAotZmFzdC9ibG9j
ay9iYXNpYy8wMDcuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMDguaHRtbAotZmFzdC9ibG9jay9i
YXNpYy8wMDkuaHRtbAotZmFzdC9ibG9jay9iYXNpYy8wMTIuaHRtbAorZmFzdC9ibG9jay9mbG9h
dC9uZWdhdGl2ZS1tYXJnaW4tY2xlYXIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVyaGFuZ2lu
Zy1hZnRlci1oZWlnaHQtZGVjcmVhc2Utb2Zmc2V0cy5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L292
ZXJoYW5naW5nLWFmdGVyLWhlaWdodC1kZWNyZWFzZS5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L292
ZXJsYXBwaW5nLWZsb2F0cy13aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sCitmYXN0L2Jsb2NrL2Zs
b2F0L3ByZXZpb3VzLXNpYmxpbmctYWJzcG9zLTAwMi5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L3Jl
bGF0aXZlLXBhaW50ZWQtdHdpY2UuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9hdm9pZGFuY2UtcnRs
Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvYnItd2l0aC1jbGVhci5odG1sCitmYXN0L2Jsb2NrL2Zs
b2F0L2NsYW1wZWQtcmlnaHQtZmxvYXQuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdC1vbi16
ZXJvLWhlaWdodC1saW5lLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXQtb3ZlcmhhbmdzLXJv
b3QuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9mbG9hdC13aXRoLWFub255bW91cy1wcmV2aW91cy1z
aWJsaW5nLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXRzLW5vdC1jbGVhcmVkLWNyYXNoLmh0
bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAwMi5odG1sCiBmYXN0L2Jsb2NrL21hcmdp
bi1jb2xsYXBzZS8wMDMuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI2Lmh0bWwK
IGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyNy5odG1sCitmYXN0L2Jsb2NrL21hcmdpbi1j
b2xsYXBzZS8wMjguaHRtbAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI5Lmh0bWwKK2Zh
c3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAzNS5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1jb2xs
YXBzZS8wMzkuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDQwLmh0bWwKK2Zhc3Qv
YmxvY2svcG9zaXRpb25pbmcvMDAzLmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDA0Lmh0
bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDA1Lmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25p
bmcvMDA2Lmh0bWwKQEAgLTE0NSw4ICsxNTcsMjkgQEAgZmFzdC9ibG9jay9wb3NpdGlvbmluZy8w
NDYuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNDkuaHRtbAogZmFzdC9ibG9jay9wb3Np
dGlvbmluZy8wNTIuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wNTQuaHRtbAorZmFzdC9i
bG9jay9wb3NpdGlvbmluZy8wNjAuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9hYnNvbHV0
ZS1wb3NpdGlvbmluZy1uby1zY3JvbGxiYXIuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9j
aGFuZ2UtY29udGFpbmluZy1ibG9jay1mb3ItYWJzb2x1dGUtcG9zaXRpb25lZC5odG1sCitmYXN0
L2Jsb2NrL3Bvc2l0aW9uaW5nL2NoYW5nZS1jb250YWluaW5nLWJsb2NrLWZvci1maXhlZC1wb3Np
dGlvbmVkLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY29tcGxleC1wb3NpdGlvbmVkLW1v
dmVtZW50Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9zaXRpb24tZGV0YWNo
ZWQtZnJhbWUuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1wb3NpdGlvbi1zdGFj
a2luZy1jb250ZXh0Mi5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2ZpeGVkLXBvc2l0aW9u
LXN0YWNraW5nLWNvbnRleHQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9oaWRpbmctaW5z
aWRlLXJlbHBvc2l0aW9uZWQtaW5saW5lLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvaW5z
ZXJ0LXBvc2l0aW9uZWQtaW4tYW5vbnltb3VzLWNyYXNoLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRp
b25pbmcvbGVmdG1hcmdpbi10b3BtYXJnaW4uaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9u
ZWdhdGl2ZS1yZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9hYnMtaW5z
aWRlLWlubGluZS1yZWwuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9wcmVmLXdpZHRoLWNo
YW5nZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3JlbGF0aXZlLW92ZXJmbG93LXJlcGxh
Y2VkLWZsb2F0Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvc3RhdGljLWlubGluZS1wb3Np
dGlvbi1keW5hbWljLmh0bWwKIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvYmFzaWMtZmxvYXQt
aW50cnVzaW9uLmh0bWwKIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvY3Jhc2gtb24tZmlyc3Qt
bGluZS1jaGFuZ2UuaHRtbAorZmFzdC9ibG9jay9saW5lYm94Y29udGFpbi9yZXBsYWNlZC5odG1s
CitmYXN0L2Jsb2NrL2NvbGxhcHNlLWFub24tYmxvY2std2l0aC1mbG9hdC1zaWJsaW5ncy1vbmx5
Lmh0bWwKK2Zhc3QvYmxvY2svY3Jhc2gtd2hlbi1hbm9ueW1vdXMtYmxvY2tzLWFyZS1tZXJnZWQt
d2l0aC1zaW1wbGUtbGluZS1sYXlvdXQuaHRtbAorZmFzdC9ibG9jay9jcmFzaC13aGVuLXN1YnRy
ZWUtaXMtc3RpbGwtYXR0YWNoZWQuaHRtbAorZmFzdC9ibG9jay9nZW9tZXRyeS1tYXAtYXNzZXJ0
aW9uLXdpdGgtdGFsbC1jb250ZW50Lmh0bWwKIGZhc3QvYm9yZGVycy8wcHgtYm9yZGVycy1uby1s
aW5lLWhlaWdodC5odG1sCiBmYXN0L2JvcmRlcnMvMHB4LWJvcmRlcnMuaHRtbAogZmFzdC9ib3Jk
ZXJzL2Jsb2NrLW1hc2stb3ZlcmxheS1pbWFnZS1vdXRzZXQuaHRtbApAQCAtMTU2LDExICsxODks
OCBAQCBmYXN0L2JvcmRlcnMvYm9yZGVyLWltYWdlLXNjYWxlZC1ncmFkaWVudC5odG1sCiBmYXN0
L2JvcmRlcnMvYm9yZGVyLWltYWdlLXNsaWNlLW9taXNzaW9uLmh0bWwKIGZhc3QvYm9yZGVycy9i
b3JkZXItbGVmdC1yaWdodC1zYW1lLWJvdHRvbS1kaWZmZXJlbnQtY29sb3IuaHRtbAogZmFzdC9i
b3JkZXJzL2JvcmRlci1wYWludGluZy1kYXNoZWQtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVycy9i
b3JkZXItcGFpbnRpbmctZGFzaGVkLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmct
ZG90dGVkLWF0LWFsbC5odG1sCi1mYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdHRlZC5o
dG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdWJsZS1hdC1hbGwuaHRtbAotZmFz
dC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kb3VibGUuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRl
ci1wYWludGluZy1ncm9vdmUtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRp
bmctaW5zZXQtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctaW5zZXQu
aHRtbApAQCAtMTY5LDQgKzE5OSw4NiBAQCBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLW91
dHNldC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLXJpZGdlLWF0LWFsbC5odG1s
CiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLXNvbGlkLWF0LWFsbC5odG1sCiBmYXN0L2Jv
cmRlcnMvYm9yZGVyLXBhaW50aW5nLXNvbGlkLmh0bWwKLWZhc3QvaW5saW5lLWJsb2NrLzAwNC5o
dG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1pbnNldC1vdXRzZXQuaHRtbAorZmFzdC9i
b3JkZXJzL2JvcmRlci1yYWRpdXMtb24taHRtbC5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJh
ZGl1cy1vbi1zdWJwaXhlbC1wb3NpdGlvbi1ub24taGlkcGkuaHRtbAorZmFzdC9ib3JkZXJzL2Jv
cmRlci1yYWRpdXMtcGVyY2VudC5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy12YWxp
ZC1ib3JkZXItY2xpcHBpbmcuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtd2lkZS1i
b3JkZXItMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtd2l0aC1ib3gtc2hhZG93
LTAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpdGgtYm94LXNoYWRvdy5odG1s
CitmYXN0L2JvcmRlcnMvYm9yZGVyLXNoYWRvdy1sYXJnZS1yYWRpdXMuaHRtbAorZmFzdC9ib3Jk
ZXJzL2JvcmRlclJhZGl1c0FsbFN0eWxlc0FsbENvcm5lcnMuaHRtbAorZmFzdC9ib3JkZXJzL2Jv
cmRlclJhZGl1c0FyY3MwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRGFzaGVkMDEu
aHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAyLmh0bWwKK2Zhc3QvYm9yZGVy
cy9ib3JkZXJSYWRpdXNEYXNoZWQwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG90
dGVkMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAyLmh0bWwKK2Zhc3Qv
Ym9yZGVycy9ib3JkZXJSYWRpdXNEb3R0ZWQwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzRG91YmxlMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTAyLmh0bWwK
K2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9y
ZGVyUmFkaXVzR3Jvb3ZlMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0dyb292ZTAy
Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNJbnNldDAxLmh0bWwKK2Zhc3QvYm9yZGVy
cy9ib3JkZXJSYWRpdXNJbnZhbGlkQ29sb3IuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1
c091dHNldDAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNSaWRnZTAxLmh0bWwKK2Zh
c3QvYm9yZGVycy9ib3JkZXJSYWRpdXNTb2xpZDAxLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJS
YWRpdXNTb2xpZDAyLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNTb2xpZDAzLmh0bWwK
K2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNTb2xpZDA0Lmh0bWwKK2Zhc3QvYm9yZGVycy9kYXNo
ZWQtYm9yZGVyLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9yZGVycy9kb3R0ZWQt
Ym9yZGVyLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9yZGVycy9kb3VibGUtMXB4
LWJvcmRlci1hc3NlcnQuaHRtbAorZmFzdC9ib3JkZXJzL2VtcHR5LWRyYXdyZWN0LWFzc2VydC1h
ZnRlci1waXhlbHNuYXAuaHRtbAorZmFzdC9ib3JkZXJzL2VtcHR5LW91dGxpbmUtYm9yZGVyLWFz
c2VydC5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktM3gtaW5wdXQtaGFpcmxpbmUtYm9yZGVyLmh0
bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItY2xpcHBpbmctcmlnaHQtYWZ0ZXItbW92ZS5o
dG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXBhaW50aW5nLWdyb292ZS5odG1sCitmYXN0
L2JvcmRlcnMvaGlkcGktYm9yZGVyLXBhaW50aW5nLXJpZGdlLmh0bWwKK2Zhc3QvYm9yZGVycy9o
aWRwaS1ib3JkZXItcmFkaXVzLW91dGVyLWJvcmRlci1nb2VzLXJlY3RhbmdsZS5odG1sCitmYXN0
L2JvcmRlcnMvaGlkcGktYm9yZGVyLXJhZGl1cy13aXRoLXN1YnBpeGVsLW1hcmdpbi1ub3QtcmVu
ZGVyYWJsZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXdpZHRoLWZsb29yaW5nLmh0
bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1vdXRsaW5lLWhhaXJsaW5lLXBhaW50aW5nLmh0bWwKK2Zh
c3QvYm9yZGVycy9oaWRwaS1vdXRsaW5lLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3Qv
Ym9yZGVycy9oaWRwaS1yb3VuZGVkLWJvcmRlci1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitm
YXN0L2JvcmRlcnMvaGlkcGktc2ltcGxlLWhhaXJsaW5lLWJvcmRlci1wYWludGluZy5odG1sCitm
YXN0L2JvcmRlcnMvbWl4ZWQtYm9yZGVyLXN0eWxlMi5odG1sCitmYXN0L2JvcmRlcnMvbmVnYXRp
dmUtYm9yZGVyLXdpZHRoLmh0bWwKK2Zhc3QvYm9yZGVycy9vdXRsaW5lLW9mZnNldC1taW4tYXNz
ZXJ0Lmh0bWwKK2Zhc3QvYm9yZGVycy9vdXRsaW5lLW9mZnNldC1vdmVyZmxvdy5odG1sCitmYXN0
L2JvcmRlcnMvd2Via2l0LWJvcmRlci1yYWRpdXMuaHRtbAorZmFzdC9pbmxpbmUvYWJzb2x1dGUt
cG9zaXRpb25lZC1ibG9jay1pbi1jZW50cmVkLWJsb2NrLmh0bWwKK2Zhc3QvaW5saW5lL2Fic29s
dXRlLXBvc2l0aW9uZWQtaW5saW5lLWluLWNlbnRyZWQtYmxvY2suaHRtbAorZmFzdC9pbmxpbmUv
YW5vbnltb3VzLWJsb2NrLXdpdGgtZW1wdHktaW5saW5lLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBp
LW91dGxpbmUtYXV0by1uZWdhdGl2ZS1vZmZzZXQtd2l0aC1ib3JkZXItcmFkaXVzLmh0bWwKK2Zh
c3QvaW5saW5lL2hpZHBpLW91dGxpbmUtYXV0by13aXRoLWZyYWN0aW9uYWwtcmFkaXVzLmh0bWwK
K2Zhc3QvaW5saW5lL2hpZHBpLW91dGxpbmUtYXV0by13aXRoLW9uZS1mb2N1c3JpbmctcmVjdC5o
dG1sCitmYXN0L2lubGluZS9oaWRwaS1waXhlbC1nYXAtYmV0d2Vlbi1hZGphY2VudC1zZWxlY3Rp
b24taW5saW5lcy5odG1sCitmYXN0L2lubGluZS9oaWRwaS1zZWxlY3QtaW5saW5lLW9uLXN1YnBp
eGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdGlvbi1nYXAtb24tc3Vi
cGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktc2VsZWN0aW9uLWdhcC1vdmVy
bGFwcy1pbmxpbmUtc2VsZWN0aW9uLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1ib2R5LXdpdGgt
c2Nyb2xsYmFyLWNyYXNoLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jaGlsZC1oZWlnaHQtd2lk
dGgtY2FsYy1jcmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWJvcmRl
ci1sZWZ0LXJpZ2h0Lmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtZmxvYXQt
YW5kLW1hcmdpbi5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWltYWdlLXNp
bXBsZS5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLW1hcmdpbi1sZWZ0LXJp
Z2h0Lmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtcGFkZGluZy1sZWZ0LXJp
Z2h0Lmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1tYXJxdWVlLWNyYXNoLmh0bWwKK2Zhc3QvaW5s
aW5lL2lubGluZS1wYWRkaW5nLWRpc2FibGVzLXRleHQtcXVpcmsuaHRtbAorZmFzdC9pbmxpbmUv
bmV3LWZsb2F0LW5lZWRzLWxheW91dC13aGVuLWxpbmUtaXMtZGlydHkuaHRtbAorZmFzdC9pbmxp
bmUvcGVyY2VudGFnZS1tYXJnaW5zLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtYmxv
Y2suaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1pbmZsb3ctcG9zaXRpb25lZC5odG1s
CitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLXdpdGgtb3V0LW9mLWZsb3ctZGVzY2VuZGFudDIu
aHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRh
bnQuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdDEuaHRtbAorZmFzdC9p
bmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdHMyLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1p
bnRydWRpbmctZmxvYXRzMy5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtbGluZS1sYXlvdXQtMTZi
aXQtY29udGVudC5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUt
YmxvY2suaHRtbAorZmFzdC9pbmxpbmUvc2tpcHBlZC13aGl0ZXNwYWNlLWJvdW5kaW5nQm94Lmh0
bWwKK2Zhc3QvaW5saW5lL3NraXBwZWQtd2hpdGVzcGFjZS1jbGllbnQtcmVjdC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358589</attachid>
            <date>2019-01-08 07:47:25 -0800</date>
            <delta_ts>2019-01-08 21:32:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20190108074716.patch</filename>
            <type>text/plain</type>
            <size>89226</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I3MThkMTAyYjI3YzA1
ZmI0Nzk3NDdiOTM2OGY1OGY5MjRlOTNlMi4uYTg2OWE3NDQxYWRmZWZiODcwZTdlZjkzN2IyZGQy
Yjg0OWYzZDg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE5LTAxLTA3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXVtNYXJnaW5D
b2xsYXBzaW5nXSBBZGQgc3VwcG9ydCBmb3IgcGVjdWxpYXIgY2FzZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2MjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc29tZSBvZiB0aGUg
bW9yZSBwZWN1bGlhciBjYXNlcyBsaWtlIG1hcmdpbiBjb2xscGFzaW5nIHRocm91Z2ggbXVsdGlw
bGUgYm94ZXMgZXRjLgorICAgICAgICBBZGQgfjEwMCBuZXcgcGFzc2luZyBjYXNlcy4KKworICAg
ICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNGb3JtYXR0aW5nU3RhdGUgY29u
c3QpOgorICAgICAgICAqIGxheW91dC9NYXJnaW5UeXBlcy5oOgorICAgICAgICAqIGxheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlRmxvYXRpbmdQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6YWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nIGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Ymxv
Y2tGb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25v
cmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRQb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6OnBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJIYXNF
c3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNv
bGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29s
bGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJl
Zm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5B
ZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdp
bkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Y29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6bWFyZ2luVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6dXBkYXRlQ29sbGFw
c2VkTWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxh
cHNlOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OnBvc2l0aXZlTmVn
YXRpdmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xs
YXBzZTo6Y29sbGFwc2VkVmVydGljYWxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWROb25Db2xs
YXBzZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWROb25Db2xsYXBz
ZWRNYXJnaW5BZnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5CZWZv
cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENoaWxkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFm
dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6aGFzQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6c2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0SGFzQ2xlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6aW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6cmVjdFdpdGhNYXJnaW4gY29uc3QpOgorICAgICAgICAqIGxheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRp
bmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVj
dElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0KToKKwogMjAxOS0wMS0wNyAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JGQ10gTWFyZ2luIGNvbGxh
cHNpbmcgc2hvdWxkIG5vdCBiZSBsaW1pdGVkIHRvIGluLWZsb3cgbm9uLXJlcGxhY2VkIGJveGVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCmluZGV4IDc1ZTdiN2VlNjljNjU4ZTAxZmU0ZDk2YjY4ZDQyMGU2MzM2NGFhNmQuLjUz
ZDVlOGYwZTAwM2YxZDAyNTU4ZTI1MDFlYWIyODBkZjkwOWZiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTc4Niw2
ICs3ODYsNyBAQCBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdAogICAgIC8vICMxCiAgICAgYXV0byBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4o
bGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBV
c2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxN
YXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFs
dWVPcigwKSB9OworCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBh
dXRvIHJlcGxhY2VkID0gbGF5b3V0Qm94LnJlcGxhY2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFN0YXRlLmgKaW5kZXggMDQ3NzVhYjJiYjY2OGZjMjI2YTNmYzEzMjQwNDJkYmNmMTJmYjMz
Zi4uMjg0NDZjZjlhZGQzZTc5ODY5ODYxYzljYzc5YzY5ODViY2Q5ZjdhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFN0YXRlLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgRm9y
bWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGVGb3JCb3goY29uc3QgQm94JikgY29uc3Q7CiAg
ICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gm
IGZvcm1hdHRpbmdSb290KSBjb25zdDsKKyAgICBib29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShjb25z
dCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZXMu
Y29udGFpbnMoJmZvcm1hdHRpbmdSb290KTsgfQogICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZvcm1h
dHRpbmdSb290KTsKIAogICAgIERpc3BsYXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJveChj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
CmluZGV4IDRlMWZjNTZkNTU2MmIxYTcyNmYyN2ZlNDg1OGExYTg3NTU2NDc0YzkuLmJiYzUxMTg4
YTAxNTJjMmM2YWI0NDU1MmU5MWM5OTM2ZGY4NGU1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJn
aW5UeXBlcy5oCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBVc2VkVmVydGljYWxNYXJnaW4gewog
ICAgIHN0cnVjdCBDb2xsYXBzZWRWYWx1ZXMgewogICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBiZWZvcmU7CiAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGFmdGVyOworICAgICAgICBi
b29sIGlzQ29sbGFwc2VkVGhyb3VnaCB7IGZhbHNlIH07CiAgICAgfTsKICAgICBDb2xsYXBzZWRW
YWx1ZXMgY29sbGFwc2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWRWYWx1ZXM7
IH0KICAgICBib29sIGhhc0NvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFw
c2VkVmFsdWVzLmJlZm9yZSB8fCBtX2NvbGxhcHNlZFZhbHVlcy5hZnRlcjsgfQpAQCAtNTksNiAr
NjAsNyBAQCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKIAogICAgIFVzZWRWZXJ0aWNhbE1h
cmdpbigpID0gZGVmYXVsdDsKICAgICB+VXNlZFZlcnRpY2FsTWFyZ2luKCkgPSBkZWZhdWx0Owor
CiBwcml2YXRlOgogICAgIE5vbkNvbGxhcHNlZFZhbHVlcyBtX25vbkNvbGxhcHNlZFZhbHVlczsK
ICAgICBDb2xsYXBzZWRWYWx1ZXMgbV9jb2xsYXBzZWRWYWx1ZXM7CkBAIC03NCw2ICs3NiwxMCBA
QCBzdHJ1Y3QgVXNlZEhvcml6b250YWxNYXJnaW4gewogICAgIExheW91dFVuaXQgZW5kOwogfTsK
IAorc3RydWN0IEVzdGltYXRlZE1hcmdpbkJlZm9yZSB7CisgICAgTGF5b3V0VW5pdCB1c2VkVmFs
dWU7Cit9OworCiBzdHJ1Y3QgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHsKICAg
ICBzdHJ1Y3QgVmFsdWVzIHsKICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcG9zaXRpdmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAyNDgxMTE2YWZkN2FiMTQwNzc2
ZGU5NTdhZjc3NjJlOGMwOTM4NmViLi5kNDg5MGVkNGVkYTQ0ZTc4MjE4NmQ3MTZlMTUyMDc5M2Zh
MzFlODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE4NiwxMiArMTg2
LDE0IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9u
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNv
bnN0CiB7Ci0gICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAg
IGF1dG8gZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gR2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJl
Zm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJl
Zm9yZSA9IE1hcmdpbkNvbGxhcHNlOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUo
KSwgbGF5b3V0Qm94KTsKKyAgICBibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLnNldEhhc0VzdGltYXRl
ZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpOwogCi0gICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBkaXNw
bGF5Qm94ID0gbGF5b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGRpc3BsYXlCb3guc2V0RXN0aW1hdGVkTWFyZ2lu
QmVmb3JlKGVzdGltYXRlZE1hcmdpbkJlZm9yZSk7Ci0gICAgZGlzcGxheUJveC5tb3ZlVmVydGlj
YWxseShlc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOworI2VuZGlmCisgICAgZGlzcGxheUJveC5zZXRU
b3AoYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGxheW91dEJv
eCwgZXN0aW1hdGVkTWFyZ2luQmVmb3JlLnVzZWRWYWx1ZSkpOwogfQogCiB2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmVGb3JBbmNlc3RvcnMo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CkBAIC0yMDgsMTIgKzIxMCwxMSBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmVGb3JBbmNl
c3RvcnMoY29uc3QgQm94JgogICAgIC8vIFNvIHdoZW4gd2UgZ2V0IHRvIHRoZSBwb2ludCB3aGVy
ZSB3ZSBpbnRlcnNlY3QgdGhlIGJveCB3aXRoIHRoZSBmbG9hdCB0byBkZWNpZGUgaWYgdGhlIGJv
eCBuZWVkcyB0byBtb3ZlLCB3ZSBkb24ndCB5ZXQgaGF2ZSB0aGUgZmluYWwgdmVydGljYWwgcG9z
aXRpb24uCiAgICAgLy8KICAgICAvLyBUaGUgaWRlYSBoZXJlIGlzIHRoYXQgYXMgbG9uZyBhcyB3
ZSBkb24ndCBjcm9zcyB0aGUgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJ5LCB3ZSBz
aG91bGQgYmUgYWJsZSB0byBwcmUtY29tcHV0ZSB0aGUgZmluYWwgdG9wIG1hcmdpbi4KLSAgICBh
dXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byYgZm9ybWF0
dGluZ1N0YXRlID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIGZvciAoYXV0byogYW5j
ZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yICYmICFhbmNlc3Rv
ci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2VzdG9yID0gYW5jZXN0
b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlv
dXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCphbmNlc3Rvcik7CiAgICAgICAgIC8vIEZJ
WE1FOiB3aXRoIGluY3JlbWVudGFsIGxheW91dCwgd2UgbWlnaHQgYWN0dWFsbHkgaGF2ZSBhIHZh
bGlkIChub24tZXN0aW1hdGVkKSBtYXJnaW4gdG9wIGFzIHdlbGwuCi0gICAgICAgIGlmIChkaXNw
bGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQorICAgICAgICBpZiAoZm9ybWF0dGluZ1N0
YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yKTsK
QEAgLTIzOCwxMCArMjM5LDEwIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29t
cHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkCiB9CiAKICNpZm5k
ZWYgTkRFQlVHCi1zdGF0aWMgYm9vbCBoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJv
b2wgaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQmxvY2tGb3JtYXR0aW5nU3RhdGUm
IGZvcm1hdHRpbmdTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgZm9yIChhdXRv
KiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgJiYgIWFu
Y2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgaWYgKGxheW91dFN0YXRlLmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKS5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkK
KyAgICAgICAgaWYgKGZvcm1hdHRpbmdTdGF0ZS5oYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFu
Y2VzdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpAQCAtMjUzLDcgKzI1NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hCiB7CiAgICAg
YXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIEFTU0VSVChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJl
Y29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7
CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91
dEJveChsYXlvdXRCb3gpOwogICAgIC8vIDguMy4xIENvbGxhcHNpbmcgbWFyZ2lucwpAQCAtMjcz
LDcgKzI3NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0aW9u
VG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiAgICAgQVNTRVJUKGxheW91dEJv
eC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3guaGFz
RmxvYXRDbGVhcigpKTsKLSAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUobGF5
b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdpbkJl
Zm9yZShibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlvdXRCb3gpKTsKIAogICAgIGlmIChmbG9h
dGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjkyLDcgKzI5Myw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZl
cnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nCiAgICAgLy8gRm9yIGZv
cm1hdHRpbmcgcm9vdHMsIHdlIGFscmVhZHkgcHJlY29tcHV0ZWQgZmluYWwgcG9zaXRpb24uCiAg
ICAgaWYgKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQogICAgICAg
ICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzKGxheW91dEJveCk7Ci0g
ICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0
aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBpZiAoYXV0byB2ZXJ0aWNhbFBvc2l0aW9u
V2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSk7CkBA
IC0zNzEsMTUgKzM3MiwyMSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVI
ZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Q29s
bGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpIH07CisgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBNYXJnaW5Db2xsYXBzZTo6Y29s
bGFwc2VkVmVydGljYWxWYWx1ZXMobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVpZ2h0QW5kTWFy
Z2luLm5vbkNvbGxhcHNlZE1hcmdpbik7CiAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IFVzZWRW
ZXJ0aWNhbE1hcmdpbiB7IGhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxh
cHNlZE1hcmdpbiB9OwogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+YmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBpZiAoZm9ybWF0dGluZ1N0YXRlLmhh
c0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKSB7CisgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5jbGVhckhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpOworICAgICAgICBB
U1NFUlQoZGlzcGxheUJveC5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKS0+dXNlZFZhbHVlID09IHZl
cnRpY2FsTWFyZ2luLmJlZm9yZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlzcGxheUJveC5z
ZXRUb3AoYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGxheW91
dEJveCwgdmVydGljYWxNYXJnaW4uYmVmb3JlKCkpKTsKKwogICAgIGRpc3BsYXlCb3guc2V0Q29u
dGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKICAgICBkaXNwbGF5Qm94LnNl
dFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsKLQotICAgIC8vIElmIHRoaXMgYm94IGhh
cyBhbHJlYWR5IGJlZW4gbW92ZWQgYnkgdGhlIGVzdGltYXRlZCB2ZXJ0aWNhbCBtYXJnaW4sIG5v
IG5lZWQgdG8gbW92ZSBpdCBhZ2Fpbi4KLSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3Np
dGlvbmVkKCkgfHwgIWRpc3BsYXlCb3guZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkpCi0gICAgICAg
IGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkodmVydGljYWxNYXJnaW4uYmVmb3JlKCkpOworICAg
IC8vIEFkanVzdCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0b20gbm93IHRoYXQg
dGhpcyBib3gncyB2ZXJ0aWNhbCBtYXJnaW4gaXMgY29tcHV0ZWQuCisgICAgaWYgKE1hcmdpbkNv
bGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0
ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIE1hcmdpbkNvbGxhcHNlOjp1cGRh
dGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91dEJveC5wcmV2aW91c0lu
Rmxvd1NpYmxpbmcoKSwgdmVydGljYWxNYXJnaW4pOwogfQogCiBGb3JtYXR0aW5nQ29udGV4dDo6
SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6aW5zdHJp
bnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdApAQCAtNDQ2LDYgKzQ1MywzNyBAQCBGb3JtYXR0
aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6aW5zdHJpbnNpYwogICAgIHJldHVybiBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50czsK
IH0KIAorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjphZGp1c3RlZFZlcnRpY2Fs
UG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gsIExheW91
dFVuaXQgbWFyZ2luQmVmb3JlKSBjb25zdAoreworICAgIC8vIE5vdyB0aGF0IHdlJ3ZlIGNvbXB1
dGVkIHRoZSBmaW5hbCBtYXJnaW4gYmVmb3JlLCBsZXQncyBzaGlmdCB0aGUgYm94J3MgdmVydGlj
YWwgcG9zaXRpb24uCisgICAgLy8gMS4gQ2hlY2sgaWYgdGhlIG1hcmdpbiBiZWZvcmUgY29sbGFw
c2VzIHdpdGggdGhlIHByZXZpb3VzIGJveCdzIG1hcmdpbiBhZnRlci4gaWYgbm90IC0+IHJldHVy
biBwcmV2aW91cyBib3gncyBib3R0b20gaW5sY3VkaW5nIG1hcmdpbiBhZnRlciArIG1hcmdpbkJl
Zm9yZQorICAgIC8vIDIuIENoZWNrIGlmIHRoZSBwcmV2aW91cyBib3gncyBtYXJnaW5zIGNvbGxh
cHNlIHRocm91Z2guIElmIG5vdCAtPiByZXR1cm4gcHJldmlvdXMgYm94JyBib3R0b20gZXhjbHVk
aW5nIG1hcmdpbiBhZnRlciArIG1hcmdpbkJlZm9yZSAodGhleSBhcmUgc3VwcG9zZWQgdG8gYmUg
ZXF1YWwpCisgICAgLy8gMy4gR28gdG8gcHJldmlvdXMgYm94IGFuZCBzdGFydCBmcm9tIHN0ZXAg
IzEgdW50aWwgd2UgaGl0IHRoZSBwYXJlbnQgYm94LgorICAgIGF1dG8mIGxheW91dFN0YXRlID0g
dGhpcy0+bGF5b3V0U3RhdGUoKTsKKyAgICBhdXRvKiBjdXJyZW50TGF5b3V0Qm94ID0gJmxheW91
dEJveDsKKyAgICB3aGlsZSAoY3VycmVudExheW91dEJveCkgeworICAgICAgICBpZiAoIWN1cnJl
bnRMYXlvdXRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGluZyA9ICpjdXJyZW50TGF5b3V0Qm94
LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKKyAgICAgICAgaWYgKCFNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCAqY3VycmVudExheW91dEJveCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3Vz
RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJ
bkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3BsYXlCb3gucmVj
dFdpdGhNYXJnaW4oKS5ib3R0b20oKSArIG1hcmdpbkJlZm9yZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghTWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3Rh
dGUsIHByZXZpb3VzSW5GbG93U2libGluZykpIHsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3Vz
RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocHJldmlvdXNJ
bkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3BsYXlCb3guYm90
dG9tKCkgKyBtYXJnaW5CZWZvcmU7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudExheW91dEJv
eCA9ICZwcmV2aW91c0luRmxvd1NpYmxpbmc7CisgICAgfQorCisgICAgYXV0byBjb250YWluaW5n
QmxvY2tDb250ZW50Qm94VG9wID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94VG9wKCk7CisgICAgaWYgKE1h
cmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3Jl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpIHx8IE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisg
ICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wOworCisgICAgcmV0dXJu
IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3AgKyBtYXJnaW5CZWZvcmU7Cit9CisKIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAyMWRlM2I0OTIzNGUyNjljOGFkNTQ1
MzEyNzdmMTc5MmEzMzQ1ZGFmLi41MDBkMDY0OWMyNWUyMzdlYzAwZGU3MmZiZGViOTJiMDVlNzU4
ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsYXlvdXQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICBC
bG9ja0Zvcm1hdHRpbmdTdGF0ZSYgYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVy
biBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKCkpOyB9CisK
ICAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQmLCBj
b25zdCBCb3gmKSBjb25zdDsKICAgICB2b2lkIHBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVu
KGNvbnN0IENvbnRhaW5lciYpIGNvbnN0OwogCkBAIC02Nyw2ICs2OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwcmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290SWZOZWVk
ZWQoY29uc3QgQm94JikgY29uc3Q7CiAKICAgICBJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBp
bnN0cmluc2ljV2lkdGhDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVu
aXQgYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGNvbnN0IEJv
eCYsIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSBjb25zdDsKIAogICAgIC8vIFRoaXMgY2xhc3Mg
aW1wbGVtZW50cyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0aWNpcGF0aW5n
IGluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgogICAgIGNsYXNzIEdlb21ldHJ5IDogcHVi
bGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7CkBAIC03OSw5ICs4Miw2IEBAIHByaXZh
dGU6CiAgICAgICAgIHN0YXRpYyBib29sIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzTmVlZENo
aWxkcmVuV2lkdGgoY29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBJbnN0cmluc2ljV2lkdGhD
b25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGVzdGltYXRlZE1hcmdp
bkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMg
TGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYpOwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBp
bkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQgPSB7IH0pOwogICAgICAgICBz
dGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0
aCA9IHsgfSk7CkBAIC05MiwzNiArOTIsMzggQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIGNsYXNz
IGltcGxlbWVudHMgbWFyZ2luIGNvbGxhcHNpbmcgZm9yIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4
dC4KICAgICBjbGFzcyBNYXJnaW5Db2xsYXBzZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKLQotICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xs
YXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RD
aGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgTGF5
b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYpOwotCi0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2Vk
TWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFVzZWRWZXJ0aWNhbE1hcmdp
bjo6Q29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZlcnRpY2FsVmFsdWVzKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRW
YWx1ZXMmKTsKIAotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZv
cmVGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0
U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEVzdGltYXRlZE1hcmdpbkJlZm9y
ZSBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIG5leHRTaWJs
aW5nVmVydGljYWxNYXJnaW4pOwogCiAgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJlZm9yZUNv
bGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZyhjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcoY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNl
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1h
cmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIG1hcmdpbkJl
Zm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRo
UHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKKworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0
aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5BZnRl
cihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBt
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGlu
Z01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
KTsKKwogICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBlbnVtIGNs
YXNzIE1hcmdpblR5cGUgeyBCZWZvcmUsIEFmdGVyIH07CisgICAgICAgIHN0YXRpYyBQb3NpdGl2
ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0aXZlVmFsdWVz
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgTWFyZ2luVHlwZSk7CisgICAgICAgIHN0
YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5l
Z2F0aXZlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3Qg
VXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMmKTsKKyAgICAgICAgc3RhdGlj
IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIHBvc2l0aXZlTmVnYXRp
dmVNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IFVzZWRW
ZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzJik7CiAgICAgfTsKIAogICAgIGNsYXNz
IFF1aXJrcyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBuZWVkc1N0cmV0Y2hp
bmcoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIEhlaWdo
dEFuZE1hcmdpbiBzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gm
LCBIZWlnaHRBbmRNYXJnaW4pOworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIHN0cmV0
Y2hlZEluRmxvd0hlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIEhlaWdodEFu
ZE1hcmdpbik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTWFyZ2luQmVmb3Jl
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29sIHNo
b3VsZElnbm9yZU1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAg
ICAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAppbmRleCA0Y2JiYzYzMzA0MDEzYzA4ZmQ5OTc5ODkyZDI5NTlhM2NmNzUwNTc4Li40MTcwZWFj
OTBmYWY0ZGVmNTk5NTdiNDA0MTBmOTE2YmQ0ODYxOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC05OSw3ICs5OSw2IEBAIEhlaWdodEFuZE1h
cmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRI
ZWlnaHRBbmRNYXJnCiAgICAgfTsKIAogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0
ZSgpOwotCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQo
IiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5k
TWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUgPDwgInB4LCAiIDw8IGhlaWdodEFuZE1h
cmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAm
bGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKIH0KQEAgLTI1
Nyw3ICsyNTYsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBMYQogICAgIGlmICghUXVpcmtzOjpu
ZWVkc1N0cmV0Y2hpbmcobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiBo
ZWlnaHRBbmRNYXJnaW47CiAKLSAgICBoZWlnaHRBbmRNYXJnaW4gPSBRdWlya3M6OnN0cmV0Y2hl
ZEhlaWdodChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4pOworICAgIGhl
aWdodEFuZE1hcmdpbiA9IFF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KGxheW91dFN0YXRl
LCBsYXlvdXRCb3gsIGhlaWdodEFuZE1hcmdpbik7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZs
b3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0IC0+IGhlaWdodCgiIDw8IGhl
aWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBoZWlnaHRBbmRNYXJnaW4u
bm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9yZSA8PCAicHgsICIgPDwgaGVpZ2h0QW5kTWFyZ2luLm5v
bkNvbGxhcHNlZE1hcmdpbi5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRC
b3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwpAQCAtMzE4LDMwICszMTcs
NiBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OgogICAgIHJldHVybiB7IG1pbmltdW1JbnRyaW5z
aWNXaWR0aCwgbWF4aW11bUludHJpbnNpY1dpZHRoIH07CiB9CiAKLUxheW91dFVuaXQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFT
U0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotICAgIC8vIENhbid0IGVzdGltYXRl
IHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ugc2hvdWxkbid0
IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KLSAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
SW5GbG93KCkpOwotICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBi
b3VuZGFyeS4KLSAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKSk7Ci0KLSAgICAvLyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFsIHBhdGggZm9y
IG5vdy4KLSAgICByZXR1cm4gTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKLSAgICAvLyBDYW4ndCBlc3RpbWF0ZSB2ZXJ0aWNhbCBtYXJnaW5zIGZv
ciBvdXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIGl0IGZvciBm
bG9hdCBib3hlcykuCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKLSAgICAvLyBD
YW4ndCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnkuCi0gICAgQVNTRVJU
KCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwotCi0gICAg
Ly8gTGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0gICAgcmV0dXJuIE1h
cmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLX0KLQog
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCBh
MTA3OTc0ZDA3YWRlNDQzNzE2NWZhOWM5Nzk1YmI4MzBhM2FmZDU0Li43MWExYTc5ZGU2ZmUwNTA3
OWQ1MGEzYWU5OTMxOTQ2MjgyZmJmMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKQEAgLTU1LDcgKzU1LDYgQEAgc3RhdGljIGJvb2wgaGFzTWFyZ2luQmVm
b3JlUXVpcmtWYWx1ZShjb25zdCBCb3gmIGxheW91dEJveCkKIAogYm9vbCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNJbkZsb3coKSk7CiAgICAgLy8gSW4gcXVpcmtzIG1vZGUsIGJvZHkgc3RyZXRjaGVzIHRvIGh0
bWwgYW5kIGh0bWwgdG8gdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayAoaGVpZ2h0OiBhdXRv
IG9ubHkpLgogICAgIGlmICghbGF5b3V0U3RhdGUuaW5RdWlya3NNb2RlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTY2LDggKzY1LDkgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3QKICAg
ICByZXR1cm4gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpOwogfQog
Ci1IZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNo
ZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCwgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbikKK0hlaWdodEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodChjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBIZWlnaHRB
bmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luKQogeworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZs
b3coKSk7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkgfHwgbGF5b3V0Qm94
LmlzQm9keUJveCgpKTsKIAogICAgIGF1dG8mIGRvY3VtZW50Qm94ID0gbGF5b3V0Qm94LmlzRG9j
dW1lbnRCb3goKSA/IGxheW91dEJveCA6ICpsYXlvdXRCb3gucGFyZW50KCk7CkBAIC04NywxMSAr
ODcsMTIgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXQKICAgICAgICAgLy8gSGVyZSBpcyB0aGUg
cXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94OgogICAgICAgICAvLyBTdHJldGNoIHRoZSBib2R5IHVz
aW5nIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sncyBoZWlnaHQgYW5kIHNocmluayBpdCB3
aXRoIGRvY3VtZW50IGJveCdzIG1hcmdpbi9ib3JkZXIvcGFkZGluZy4KICAgICAgICAgLy8gVGhp
cyBsb29rcyBleHRyZW1lbHkgb2RkIHdoZW4gaHRtbCBoYXMgbm9uLWF1dG8gaGVpZ2h0LgotICAg
ICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9y
ZShsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpICsgR2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkFm
dGVyKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7Ci0gICAgICAgIHN0cmVjaGVkSGVpZ2h0IC09
IHZlcnRpY2FsTWFyZ2luOworICAgICAgICBhdXRvIGRvY3VtZW50Qm94VmVydGljYWxNYXJnaW4g
PSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgZG9jdW1lbnRC
b3gpOworICAgICAgICBzdHJlY2hlZEhlaWdodCAtPSAoZG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdp
bi5iZWZvcmUudmFsdWVPcigwKSArIGRvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYWZ0ZXIudmFs
dWVPcigwKSk7CiAKLSAgICAgICAgYXV0byBub25Db2xsYXBzZWRWYWx1ZXMgPSBoZWlnaHRBbmRN
YXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luOwotICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2luID0g
bm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9yZSArIG5vbkNvbGxhcHNlZFZhbHVlcy5hZnRlcjsKKyAg
ICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFw
c2VkTWFyZ2luOworICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IE1hcmdpbkNvbGxhcHNl
Ojpjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBub25Db2xs
YXBzZWRNYXJnaW4pOworICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2luID0gY29sbGFwc2VkTWFy
Z2luLmJlZm9yZS52YWx1ZU9yKG5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUpICsgY29sbGFwc2Vk
TWFyZ2luLmFmdGVyLnZhbHVlT3Iobm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyKTsKICAgICB9CiAK
ICAgICAvLyBTdHJldGNoIGJ1dCBuZXZlciBvdmVyc3RyZXRjaCB3aXRoIHRoZSBtYXJnaW5zLgpA
QCAtMTA5LDYgKzExMCwyMCBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJgogICAgIHJldHVybiBs
YXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKCpsYXlvdXRCb3gu
cGFyZW50KCkpICYmIGhhc01hcmdpbkJlZm9yZVF1aXJrVmFsdWUobGF5b3V0Qm94KTsKIH0KIAor
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkFm
dGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
Cit7CisgICAgLy8gSWdub3JlIG1hcmluZyBhZnRlciB3aGVuIHRoZSBpZ25vcmVkIG1hcmdpbiBi
ZWZvcmUgY29sbGFwc2VzIHRocm91Z2guCisgICAgaWYgKCFzaG91bGRJZ25vcmVNYXJnaW5CZWZv
cmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEFTU0VSVChsYXlvdXRCb3gucGFyZW50KCkpOworICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRC
b3gucGFyZW50KCk7CisgICAgaWYgKHBhcmVudC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgp
ICE9ICZsYXlvdXRCb3ggfHwgcGFyZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgIT0g
cGFyZW50Lmxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpOworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUu
aAppbmRleCBiYjk2NjkzOTBmZjlhMjg3NmZlNzE0ZGM4NTQ0YjAxZGY2ZGVhYTg0Li5iYjQ1NmI1
OTI3ZmVmZTQ1YzYzNzgzMWQ1YjI0ZjcxNzA5MmJhZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCiAKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJNYXJnaW5UeXBl
cy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDIsNiArNDMsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkJsb2NrRm9ybWF0dGluZ1N0
YXRlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IGNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBvdmVycmlk
ZTsKKworICAgIHZvaWQgc2V0UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gdmVydGlj
YWxNYXJnaW4pIHsgbV9wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4uc2V0KCZsYXlv
dXRCb3gsIHZlcnRpY2FsTWFyZ2luKTsgfQorICAgIGJvb2wgaGFzUG9zaXRpdmVBbmROZWdhdGl2
ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX3Bv
c2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5jb250YWlucygmbGF5b3V0Qm94KTsgfQor
ICAgIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBwb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmdldCgmbGF5b3V0Qm94KTsgfQorCisgICAg
dm9pZCBzZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIHsg
bV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmFkZCgmbGF5b3V0Qm94KTsgfQorICAgIHZvaWQg
Y2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIHsgbV9l
c3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LnJlbW92ZSgmbGF5b3V0Qm94KTsgfQorICAgIGJvb2wg
aGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJl
dHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QuY29udGFpbnMoJmxheW91dEJveCk7IH0K
KworcHJpdmF0ZToKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIFBvc2l0aXZlQW5kTmVnYXRpdmVW
ZXJ0aWNhbE1hcmdpbj4gbV9wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW47CisgICAg
SGFzaFNldDxjb25zdCBCb3gqPiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3Q7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBjNzFkMzkyNjBhNzU1ODhhYTBlZThmMjYx
ZjI0YWUyMTk0ZWU4N2I0Li5lYWI1YmM3ZDNkZTcxNjE3YjZiZjExMDc0MGE1MzcwOTcyYjJiNDQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTcwLDEyICs3MCwxMSBAQCBzdGF0aWMg
Ym9vbCBoYXNQYWRkaW5nQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAgcmV0dXJuIGhh
c1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0FmdGVyKCkpOwogfQogCi1zdGF0aWMg
Ym9vbCBoYXNDbGVhcmFuY2UoY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgYm9vbCBoYXND
bGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKIHsKICAgICBpZiAoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAvLyBGSVhNRQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
bGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmhhc0NsZWFyYW5j
ZSgpOwogfQogCiBzdGF0aWMgYm9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC04Nyw5MyArODYsNiBAQCBzdGF0aWMgYm9vbCBlc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAg
cmV0dXJuIGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsKIH0K
IAotc3RhdGljIExheW91dFVuaXQgbWFyZ2luVmFsdWUoTGF5b3V0VW5pdCBjdXJyZW50TWFyZ2lu
VmFsdWUsIExheW91dFVuaXQgY2FuZGlkYXRlTWFyZ2luVmFsdWUpCi17Ci0gICAgaWYgKCFjYW5k
aWRhdGVNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJnaW5WYWx1ZTsKLSAg
ICBpZiAoIWN1cnJlbnRNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZU1hcmdp
blZhbHVlOwotICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgcG9zaXRpdmUuCi0gICAgaWYgKGNhbmRp
ZGF0ZU1hcmdpblZhbHVlID4gMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPiAwKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYXgoY2FuZGlkYXRlTWFyZ2luVmFsdWUsIGN1cnJlbnRNYXJnaW5WYWx1ZSk7
Ci0gICAgLy8gQm90aCBtYXJnaW5zIGFyZSBuZWdhdGl2ZS4KLSAgICBpZiAoY2FuZGlkYXRlTWFy
Z2luVmFsdWUgPCAwICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA8IDApCi0gICAgICAgIHJldHVybiAw
IC0gc3RkOjptYXgoc3RkOjphYnMoY2FuZGlkYXRlTWFyZ2luVmFsdWUudG9GbG9hdCgpKSwgc3Rk
OjphYnMoY3VycmVudE1hcmdpblZhbHVlLnRvRmxvYXQoKSkpOwotICAgIC8vIE9uZSBvZiB0aGUg
bWFyZ2lucyBpcyBuZWdhdGl2ZS4KLSAgICByZXR1cm4gY3VycmVudE1hcmdpblZhbHVlICsgY2Fu
ZGlkYXRlTWFyZ2luVmFsdWU7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAg
QVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICByZXR1cm4gR2VvbWV0
cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCkuYmVmb3Jl
LnZhbHVlT3IoMCk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIHJldHVybiBHZW9tZXRyeTo6Y29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5hZnRlci52YWx1ZU9y
KDApOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxh
cHNlOjpub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE5vbiBjb2xsYXBzZWQgbWFyZ2luIHRvcCBpbmNsdWRl
cyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93IGZpcnN0IGNoaWxkLgotICAgIHJldHVybiBt
YXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQobGF5b3V0U3Rh
dGUsIGxheW91dEJveCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFTU0VSVChsYXlv
dXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJnaW4g
Ym90dG9tIGluY2x1ZGVzIGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgbGFzdCBjaGlsZC4K
LSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRlcihs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENoaWxk
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0
Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8v
IENoZWNrIGlmIHRoZSBmaXJzdCBjaGlsZCBjb2xsYXBzZXMgaXRzIG1hcmdpbiB0b3AuCi0gICAg
aWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5
b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIERv
IG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91
dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gRklYTUU6IFRha2UgY29sbGFwc2VkIHRocm91Z2ggbWFyZ2luIGludG8gYWNjb3VudC4K
LSAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0
Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBzZXNX
aXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2luIHRvcCByZWN1
cnNpdmVseS4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJn
aW5CZWZvcmUobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5C
ZWZvcmVGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpOwotfQot
Ci1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpjb2xs
YXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxv
Y2tMZXZlbEJveCgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGNoaWxkIHByb3BhZ2F0
ZXMgaXRzIG1hcmdpbiBib3R0b20uCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkg
fHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJv
eCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwv
c3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250
ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5
KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IENoZWNrIGZvciBjb2xsYXBz
ZWQgdGhyb3VnaCBtYXJnaW4uCi0gICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAoIW1hcmdp
bkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXN0SW5G
bG93Q2hpbGQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIENvbGxlY3QgY29sbGFwc2Vk
IG1hcmdpbiBib3R0b20gcmVjdXJzaXZlbHkuCi0gICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1
dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCks
IGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGFzdEluRmxv
d0NoaWxkKSk7Ci19Ci0KIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFw
c2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIC8vIDEu
IFRoaXMgaXMgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFwc2Ug
dGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMgd2l0aCBwYXJlbnQncyBtYXJn
aW4gYWZ0ZXIgb3IKQEAgLTE4NSw3ICs5Nyw3IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChjdXJyZW50Qm94ID09IGxhc3RJ
bkZsb3dDaGlsZCkKICAgICAgICAgICAgIHJldHVybiBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQ
YXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAKLSAgICAgICAgaWYg
KCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZygqY3VycmVudEJveCkpCisgICAg
ICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUo
bGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjksMTAgKzE0MSw4NiBAQCBib29s
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xs
YXBzZXNXaXRoUGFyZW50TWFyZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyAuLi5h
bmQgdGhlIGNoaWxkIGhhcyBubyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFyYW5jZShsYXlv
dXRCb3gpKQorICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpR
dWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdp
bkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAgICBp
ZiAoIWxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gKmxheW91dEJveC5wcmV2
aW91c0luRmxvd1NpYmxpbmcoKTsKKworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQg
Ym94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94
LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgcHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMg
b2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAo
KGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnN0eWxlKCku
dG9wKCkuaXNBdXRvKCkpCisgICAgICAgIHx8IChwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgIXByZXZpb3VzSW5GbG93U2libGluZy5zdHlsZSgpLmJvdHRv
bSgpLmlzQXV0bygpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBv
ZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3gu
aXNJbmxpbmVCbG9ja0JveCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5pc0lubGluZUJsb2Nr
Qm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBib3R0b20gbWFyZ2lu
IG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29sbGFwc2VzIHdpdGgg
dGhlIHRvcCBtYXJnaW4gb2YKKyAgICAvLyBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNp
YmxpbmcsIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFzQ2xl
YXJhbmNlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJn
aW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3sKKyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAg
IC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4K
KyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBl
c3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdp
dGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4KKyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IFRoZSB0b3AgbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2sgZWxlbWVudCBjb2xsYXBzZXMgd2l0
aCBpdHMgZmlyc3QgaW4tZmxvdyBibG9jay1sZXZlbAorICAgIC8vIGNoaWxkJ3MgdG9wIG1hcmdp
biBpZiB0aGUgZWxlbWVudCBoYXMgbm8gdG9wIGJvcmRlci4uLgorICAgIGlmIChoYXNCb3JkZXJC
ZWZvcmUobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gLi4ubm8g
dG9wIHBhZGRpbmcKKyAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAh
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8
Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hpbGQoKTsKKyAgICBpZiAoIWZpcnN0
SW5GbG93Q2hpbGQuaXNCbG9ja0xldmVsQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIC4uLmFuZCB0aGUgY2hpbGQgaGFzIG5vIGNsZWFyYW5jZS4KKyAgICBpZiAoaGFzQ2xl
YXJhbmNlKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhl
ciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMg
b2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAo
Zmlyc3RJbkZsb3dDaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNv
bGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzSW5saW5lQmxvY2tCb3goKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDgsNyArMjM2LDcg
QEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0
ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmcKICAgICBmb3IgKGF1dG8qIHByZXZpb3VzU2libGlu
ZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsgcHJldmlvdXNTaWJsaW5nOyBw
cmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmctPnByZXZpb3VzSW5GbG93U2libGluZygp
KSB7CiAgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgKnBy
ZXZpb3VzU2libGluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICho
YXNDbGVhcmFuY2UoKnByZXZpb3VzU2libGluZykpCisgICAgICAgIGlmIChoYXNDbGVhcmFuY2Uo
bGF5b3V0U3RhdGUsICpwcmV2aW91c1NpYmxpbmcpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NSw3ICsyNTMsNyBAQCBib29sIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoY3Vy
cmVudEJveCA9PSBmaXJzdEluRmxvd0NoaWxkKQogICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkJl
Zm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpjdXJyZW50
Qm94KTsgCi0gICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2li
bGluZygqY3VycmVudEJveCkpCisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0
aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqY3VycmVudEJveCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMzI0LDQ0ICszMTIsNjYgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2kKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBz
ZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZyhjb25zdCBCb3gmIGxh
eW91dEJveCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1h
cmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNT
RVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICBpZiAoIWxheW91dEJveC5w
cmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1lbnRzIHRoYXQg
ZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBjb2xsYXBzZSB3
aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGVzdGFibGlzaGVzQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dChsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpOworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICBpZiAoIWxhc3RJbkZsb3dDaGlsZC5p
c0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIGJv
dHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9mICdh
dXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxkJ3Mg
Ym90dG9tIG1hcmdpbiwgaWY6CisgICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5oZWlnaHQoKS5p
c0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGJveCBoYXMgbm8g
Ym90dG9tIHBhZGRpbmcsIGFuZAorICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxheW91dEJveCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBi
b3JkZXIsIGFuZAorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiBuZWl0aGVy
IGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1hcmdpbiB0aGF0IGhhcyBjbGVhcmFuY2UuLi4KKyAgICBp
ZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFu
Y2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXplcm8pIHdpdGgg
dGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgYXV0byBjb21wdXRlZE1pbkhlaWdodCA9IGxheW91
dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICBpZiAoIWNvbXB1dGVkTWluSGVp
Z2h0LmlzQXV0bygpICYmIGNvbXB1dGVkTWluSGVpZ2h0LnZhbHVlKCkKKyAgICAgICAgJiYgKG1h
cmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGFz
dEluRmxvd0NoaWxkKSB8fCBoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGls
ZCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBm
bG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0gICAgaWYgKGxh
eW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5p
c0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gTWFyZ2lucyBv
ZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgotICAgIGlmICgo
bGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guc3R5bGUoKS50
b3AoKS5pc0F1dG8oKSkKLSAgICAgICAgfHwgKHByZXZpb3VzSW5GbG93U2libGluZy5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nLnN0eWxlKCkuYm90dG9t
KCkuaXNBdXRvKCkpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE1hcmdpbnMgb2YgaW5saW5l
LWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5l
QmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBp
bi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3Ag
bWFyZ2luIG9mCi0gICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1
bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFyYW5jZShs
YXlvdXRCb3gpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNJbmxpbmVCbG9ja0JveCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoTmV4dFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2li
bGluZ01hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkp
OwogCiAgICAgaWYgKCFsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91
c1NpYmxpbmcoKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKTsKKyAgICByZXR1cm4gbWFy
Z2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0
YXRlLCAqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpOwogfQogCiBib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNv
bnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC0z
ODcsNzcgKzM5NywyMzQgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xs
YXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBMYXlvdXQKICAgICBpZiAoIWlzPENv
bnRhaW5lcj4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobGF5
b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICBp
ZiAoZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRCb3gpKS5pbmxpbmVSdW5zKCkuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byog
aW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dD
aGlsZCgpOyBpbmZsb3dDaGlsZDsgaW5mbG93Q2hpbGQgPSBpbmZsb3dDaGlsZC0+bmV4dEluRmxv
d1NpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxh
eW91dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICghZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkp
CisgICAgICAgIHJldHVybiAhZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGxheW91
dEJveCk7CisKKyAgICBpZiAoUXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChsYXlvdXRCb3guZXN0
YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChsYXlvdXRCb3guZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICAvLyBJZiB3
ZSBnZXQgaGVyZSB0aHJvdWdoIG1hcmdpbiBlc3RpbWF0aW9uLCB3ZSBkb24ndCBuZWNlc3Nhcmls
eSBoYXZlIGFuIGFjdHVhbCBzdGF0ZSBmb3IgdGhpcyBsYXlvdXQgYm94IHNpbmNlCisgICAgICAg
ICAgICAvLyB3ZSBoYXZlbid0IHN0YXJ0ZWQgbGF5aW5nIGl0IG91dCB5ZXQuCisgICAgICAgICAg
ICBpZiAoIWxheW91dFN0YXRlLmhhc0Zvcm1hdHRpbmdTdGF0ZShsYXlvdXRCb3gpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmxp
bmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRl
KGxheW91dEJveCkpLmlubGluZVJ1bnMoKS5pc0VtcHR5KCk7CiAgICAgICAgIH0KKworICAgICAg
ICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgZm9yIChhdXRvKiBpbmZsb3dDaGls
ZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7IGlu
Zmxvd0NoaWxkOyBpbmZsb3dDaGlsZCA9IGluZmxvd0NoaWxkLT5uZXh0SW5GbG93U2libGluZygp
KSB7CisgICAgICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKmluZmxv
d0NoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtYXJnaW5z
Q29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTGF5b3V0VW5pdCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMg
UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgY29tcHV0ZWRQb3NpdGl2
ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFs
dWVzIGEsIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGIpCiB7Ci0g
ICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBQ
b3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRlZFZhbHVlczsK
KyAgICBpZiAoYS5wb3NpdGl2ZSAmJiBiLnBvc2l0aXZlKQorICAgICAgICBjb21wdXRlZFZhbHVl
cy5wb3NpdGl2ZSA9IHN0ZDo6bWF4KCphLnBvc2l0aXZlLCAqYi5wb3NpdGl2ZSk7CisgICAgZWxz
ZQorICAgICAgICBjb21wdXRlZFZhbHVlcy5wb3NpdGl2ZSA9IGEucG9zaXRpdmUgPyBhLnBvc2l0
aXZlIDogYi5wb3NpdGl2ZTsKKworICAgIGlmIChhLm5lZ2F0aXZlICYmIGIubmVnYXRpdmUpCisg
ICAgICAgIGNvbXB1dGVkVmFsdWVzLm5lZ2F0aXZlID0gc3RkOjptaW4oKmEubmVnYXRpdmUsICpi
Lm5lZ2F0aXZlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm5lZ2F0aXZlID0g
YS5uZWdhdGl2ZSA/IGEubmVnYXRpdmUgOiBiLm5lZ2F0aXZlOworCisgICAgcmV0dXJuIGNvbXB1
dGVkVmFsdWVzOworfQogCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
CitzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgY29tcHV0
ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1h
cmdpbjo6VmFsdWVzIGEsIE9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblZhbHVlKQoreworICAg
IGlmICghbWFyZ2luVmFsdWUgfHwgIW1hcmdpblZhbHVlLnZhbHVlKCkpCisgICAgICAgIHJldHVy
biBhOworICAgIGlmICgqbWFyZ2luVmFsdWUgPiAwKQorICAgICAgICByZXR1cm4gY29tcHV0ZWRQ
b3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgbWFyZ2luVmFsdWUsIHsgfSB9KTsKKyAgICBp
ZiAoKm1hcmdpblZhbHVlIDwgMCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkUG9zaXRpdmVBbmRO
ZWdhdGl2ZU1hcmdpbihhLCB7IHsgfSwgbWFyZ2luVmFsdWUgfSk7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RhdGljIE9wdGlvbmFsPExheW91dFVu
aXQ+IG1hcmdpblZhbHVlKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVz
IG1hcmdpblZhbHVlcykKK3sKKyAgICAvLyBXaGVuIHR3byBvciBtb3JlIG1hcmdpbnMgY29sbGFw
c2UsIHRoZSByZXN1bHRpbmcgbWFyZ2luIHdpZHRoIGlzIHRoZSBtYXhpbXVtIG9mIHRoZSBjb2xs
YXBzaW5nIG1hcmdpbnMnIHdpZHRocy4KKyAgICAvLyBJbiB0aGUgY2FzZSBvZiBuZWdhdGl2ZSBt
YXJnaW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBuZWdhdGl2
ZSBhZGpvaW5pbmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBtYXhpbXVtCisgICAgLy8g
b2YgdGhlIHBvc2l0aXZlIGFkam9pbmluZyBtYXJnaW5zLiBJZiB0aGVyZSBhcmUgbm8gcG9zaXRp
dmUgbWFyZ2lucywgdGhlIG1heGltdW0gb2YgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgYWRq
b2luaW5nIG1hcmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB6ZXJvLgorICAgIGlmICghbWFyZ2luVmFs
dWVzLm5lZ2F0aXZlKQorICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWVzLnBvc2l0aXZlOworCisg
ICAgaWYgKCFtYXJnaW5WYWx1ZXMucG9zaXRpdmUpCisgICAgICAgIHJldHVybiBtYXJnaW5WYWx1
ZXMubmVnYXRpdmU7CiAKLSAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZv
cmVBbmRBZnRlcigpIGludG8gYWNjb3VudC4KLSAgICBpZiAobWFyZ2luQmVmb3JlQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhNRTogRmluZCBvdXQgdGhlIGxvZ2ljIGJlaGluZCB0aGlz
LgotICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1h
cmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcobGF5b3V0
Qm94KSkgewotICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpCi0gICAgICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3Jl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2xsYXBz
ZWQgdGhyb3VnaCB2YWx1ZS4KLSAgICAgICAgYXV0byBtYXJnaW5CZWZvcmUgPSBub25Db2xsYXBz
ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIGF1dG8gbWFy
Z2luQWZ0ZXIgPSBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsgCi0gICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVy
KTsKKyAgICByZXR1cm4gKm1hcmdpblZhbHVlcy5wb3NpdGl2ZSArICptYXJnaW5WYWx1ZXMubmVn
YXRpdmU7Cit9CisKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6
OnVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbiYgbmV4dFNp
YmxpbmdWZXJ0aWNhbE1hcmdpbikKK3sKKyAgICAvLyAxLiBHZXQgdGhlIG1hcmdpbiBiZWZvcmUg
dmFsdWUgZnJvbSB0aGUgbmV4dCBpbi1mbG93IHNpYmxpbmcuIFRoaXMgaXMgdGhlIHNhbWUgYXMg
dGhpcyBib3gncyBtYXJnaW4gYWZ0ZXIgdmFsdWUgbm93IHNpbmNlIHRoZXkgYXJlIGNvbGxhcHNl
ZC4KKyAgICAvLyAyLiBVcGRhdGUgdGhlIGNvbGxhcHNlZCBtYXJnaW4gYWZ0ZXIgdmFsdWUgYXMg
d2VsbCBhcyB0aGUgcG9zaXRpdmUvbmVnYXRpdmUgY2FjaGUuCisgICAgLy8gMy4gQ2hlY2sgaWYg
dGhlIGJveCdzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaC4KKyAgICAvLyA0LiBJZiBzbywgdXBk
YXRlIHRoZSBjb2xsYXBzZWQgbWFyZ2luIGJlZm9yZSB2YWx1ZSBhcyB3ZWxsIGFzIHRoZSBwb3Np
dGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyA1LiBJbiBjYXNlIG9mIGNvbGxhcHNlZCB0aHJv
dWdoIG1hcmdpbnMgY2hlY2sgaWYgdGhlIGJlZm9yZSBtYXJnaW4gY29sbGFwZXMgd2l0aCB0aGUg
cHJldmlvdXMgaW5mbG93IHNpYmxpbmcncyBhZnRlciBtYXJnaW4uCisgICAgLy8gNi4gSWYgc28s
IGp1bXAgdG8gIzIuCisgICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGlu
Z01hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxheUJveC52ZXJ0
aWNhbE1hcmdpbigpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW5BZnRlciA9IG5leHRTaWJsaW5n
VmVydGljYWxNYXJnaW4uYmVmb3JlKCk7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdmVydGlj
YWxNYXJnaW5CZWZvcmU7CisKKyAgICBhdXRvIG1hcmdpbnNDb2xsYXBzZVRocm91Z2ggPSBNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaCkKKyAgICAgICAgdmVydGljYWxNYXJn
aW5CZWZvcmUgPSB2ZXJ0aWNhbE1hcmdpbkFmdGVyOyAKKyAgICBlbHNlIGlmICh2ZXJ0aWNhbE1h
cmdpbi5oYXNDb2xsYXBzZWRWYWx1ZXMoKSkKKyAgICAgICAgdmVydGljYWxNYXJnaW5CZWZvcmUg
PSB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5iZWZvcmU7CisKKyAgICAvLyBVcGRh
dGUgdmVydGljYWwgbWFyZ2luIHZhbHVlcy4KKyAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBz
ZWRWYWx1ZXMoeyB2ZXJ0aWNhbE1hcmdpbkJlZm9yZSwgdmVydGljYWxNYXJnaW5BZnRlciB9KTsK
KyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsKKworICAg
IC8vIFVwZGF0ZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICBhdXRvJiBibG9ja0Zvcm1h
dHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5m
b3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgYXV0byBwb3NpdGl2ZU5lZ2F0
aXZlTWFyZ2luID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRp
Y2FsTWFyZ2luKGxheW91dEJveCk7CisgICAgYXV0byBuZXh0U2libGluZ1Bvc2l0aXZlTmVnYXRp
dmVNYXJnaW5CZWZvcmUgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFuZE5lZ2F0aXZl
VmVydGljYWxNYXJnaW4oKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKS5iZWZvcmU7CisK
KyAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5l
Z2F0aXZlTWFyZ2luKG5leHRTaWJsaW5nUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZSwgcG9z
aXRpdmVOZWdhdGl2ZU1hcmdpbi5hZnRlcik7CisgICAgaWYgKG1hcmdpbnNDb2xsYXBzZVRocm91
Z2gpIHsKKyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmUgPSBjb21wdXRlZFBv
c2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmUsIHBv
c2l0aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIpOworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luLmFmdGVyID0gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmU7IAogICAgIH0KKyAgICBi
bG9ja0Zvcm1hdHRpbmdTdGF0ZS5zZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4o
bGF5b3V0Qm94LCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luKTsKKworICAgIGlmICghbWFyZ2luc0Nv
bGxhcHNlVGhyb3VnaCB8fCAhbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGlu
Z01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm47CisK
KyAgICB1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91dEJveC5w
cmV2aW91c0luRmxvd1NpYmxpbmcoKSwgdmVydGljYWxNYXJnaW4pOworfQorCitQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBNYXJnaW5UeXBlIG1hcmdpblR5cGUp
Cit7CisgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1h
dHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkp
OworICAgIGlmIChibG9ja0Zvcm1hdHRpbmdTdGF0ZS5oYXNQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVy
dGljYWxNYXJnaW4obGF5b3V0Qm94KSkgeworICAgICAgICBhdXRvIHBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbiA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpOworICAgICAgICByZXR1cm4gbWFyZ2luVHlwZSA9
PSBNYXJnaW5UeXBlOjpCZWZvcmUgPyBwb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4u
YmVmb3JlIDogcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmFmdGVyOyAKKyAgICB9
CisgICAgLy8gRklYTUU6IGV4cGxhaW4gd2h5IHRoaXMgaXMgYSB0aGluZyBhbmQgd2h5IHRoaXMg
d29ya3MuIG9wdGlvbmFsbHkgZmluZCBhIGJldHRlciB3YXkuCisgICAgYXV0byBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3Rh
dGUsIGxheW91dEJveCk7CisgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGlj
YWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVm
b3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9
OyAKKworICAgIGlmIChtYXJnaW5UeXBlID09IE1hcmdpblR5cGU6OkJlZm9yZSkKKyAgICAgICAg
cmV0dXJuIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJv
eCwgbm9uQ29sbGFwc2VkTWFyZ2luKTsKKyAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZU1hcmdp
bkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIG5vbkNvbGxhcHNlZE1hcmdpbik7Cit9CiAK
LSAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1l
bnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0IGluLWZs
b3cgYmxvY2stbGV2ZWwgc2libGluZywKLSAgICAvLyB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBj
bGVhcmFuY2UuCi0gICAgYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnBy
ZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJsaW5nKQot
ICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpOworUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5C
ZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMmIG5vbkNvbGxh
cHNlZFZhbHVlcykKK3sKKyAgICBhdXRvIGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUg
PSBbJl0oKSAtPiBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyB7Cisg
ICAgICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgYXV0byogZmlyc3RJbkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgICAgIGlmICghZmlyc3RJbkZs
b3dDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtz
OjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsICpmaXJzdEluRmxvd0NoaWxk
KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBwb3NpdGl2ZU5lZ2F0
aXZlVmFsdWVzKGxheW91dFN0YXRlLCAqZmlyc3RJbkZsb3dDaGlsZCwgTWFyZ2luVHlwZTo6QmVm
b3JlKTsKKyAgICB9OworCisgICAgYXV0byBwcmV2aW91U2libGluZ0NvbGxhcHNlZE1hcmdpbkFm
dGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMg
eworICAgICAgICBhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlv
dXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJsaW5nKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKCFtYXJnaW5CZWZvcmVDb2xsYXBz
ZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoUXVpcmtzOjpzaG91bGRJZ25v
cmVNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZykpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZhbHVl
cyhsYXlvdXRTdGF0ZSwgKnByZXZpb3VzSW5GbG93U2libGluZywgTWFyZ2luVHlwZTo6QWZ0ZXIp
OworICAgIH07CisKKyAgICAvLyAxLiBHYXRoZXIgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdp
biB2YWx1ZXMgZnJvbSBmaXJzdCBjaGlsZCBpZiBtYXJnaW5zIGFyZSBhZGpvaW5pbmcuCisgICAg
Ly8gMi4gR2F0aGVyIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdmFsdWVzIGZyb20gcHJl
dmlvdXMgaW5mbG93IHNpYmxpbmcgaWYgbWFyZ2lucyBhcmUgYWRqb2luaW5nLgorICAgIC8vIDMu
IENvbXB1dGUgbWluL21heCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgY29sbGFwc2VkIG1hcmdpbiB2
YWx1ZXMgdXNpbmcgbm9uLWNvbGxwYXNlZCBjb21wdXRlZCBtYXJnaW4gYmVmb3JlLgorICAgIGF1
dG8gY29sbGFwc2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFy
Z2luKGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSwgcHJldmlvdVNpYmxpbmdDb2xs
YXBzZWRNYXJnaW5BZnRlcigpKTsKKyAgICByZXR1cm4gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0
aXZlTWFyZ2luKGNvbGxhcHNlZE1hcmdpbkJlZm9yZSwgbm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9y
ZSk7Cit9CiAKLSAgICBhdXRvIHByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyID0gbm9uQ29sbGFw
c2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwotICAg
IGF1dG8gbWFyZ2luQmVmb3JlID0gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOwotICAgIHJldHVybiBtYXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIHByZXZp
b3VzU2libGluZ01hcmdpbkFmdGVyKTsKK1Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bjo6VmFsdWVzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpwb3NpdGl2
ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRW
YWx1ZXMmIG5vbkNvbGxhcHNlZFZhbHVlcykKK3sKKyAgICBhdXRvIGxhc3RDaGlsZENvbGxhcHNl
ZE1hcmdpbkFmdGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2lu
OjpWYWx1ZXMgeworICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGF1dG8qIGxhc3RJbkZsb3dDaGlsZCA9IGRvd25j
YXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICAgICAgaWYg
KCFsYXN0SW5GbG93Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAo
IW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYg
KFF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93
Q2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZl
TmVnYXRpdmVWYWx1ZXMobGF5b3V0U3RhdGUsICpsYXN0SW5GbG93Q2hpbGQsIE1hcmdpblR5cGU6
OkFmdGVyKTsKKyAgICB9OworCisgICAgLy8gV2UgZG9uJ3Qga25vdyB5ZXQgdGhlIG1hcmdpbiBi
ZWZvcmUgdmFsdWUgb2YgdGhlIG5leHQgc2libGluZy4gTGV0J3MganVzdCBwcmV0ZW5kIGl0IGRv
ZXMgbm90IGhhdmUgb25lIGFuZCAKKyAgICAvLyB1cGRhdGUgaXQgbGF0ZXIgd2hlbiB3ZSBjb21w
dXRlIHRoZSBuZXh0IHNpYmxpbmcncyBtYXJnaW4gYmVmb3JlLiBTZWUgdXBkYXRlQ29sbGFwc2Vk
TWFyZ2luQWZ0ZXIuCisgICAgcmV0dXJuIGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdp
bihsYXN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5BZnRlcigpLCBub25Db2xsYXBzZWRWYWx1ZXMuYWZ0
ZXIpOwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxh
cHNlOjptYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQorRXN0aW1hdGVkTWFyZ2luQmVmb3JlIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbkNvbGxhcHNlOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBpZiAobGF5b3V0
Qm94LmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgLy8gQ2Fu
J3QgZXN0aW1hdGUgdmVydGljYWwgbWFyZ2lucyBmb3Igb3V0IG9mIGZsb3cgYm94ZXMgKGFuZCB3
ZSBzaG91bGRuJ3QgbmVlZCB0byBkbyBpdCBmb3IgZmxvYXQgYm94ZXMpLgorICAgIEFTU0VSVChs
YXlvdXRCb3guaXNJbkZsb3coKSk7CisgICAgQVNTRVJUKCFsYXlvdXRCb3gucmVwbGFjZWQoKSk7
CisgICAgLy8gQ2FuJ3QgY3Jvc3MgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJ5Lgor
ICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgp
KTsKKyAgICAKKyAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIG5v
bkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVz
IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07IAogCi0gICAgLy8gVE9ETzogdGFrZSBfaGFz
QWRqb2luaW5nTWFyZ2luQmVmb3JlQW5kQm90dG9tKCkgaW50byBhY2NvdW50LgotICAgIGlmICht
YXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJv
dWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4geyBtYXJnaW5WYWx1
ZShwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIG5v
bkNvbGxhcHNlZE1hcmdpbikpLnZhbHVlT3IoMCkgfTsKKyAgICAKKyAgICByZXR1cm4geyBtYXJn
aW5WYWx1ZShjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2
ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4p
LAorICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91
dEJveCwgbm9uQ29sbGFwc2VkTWFyZ2luKSkpLnZhbHVlT3IoMCkgfTsKK30KIAotICAgIGlmICht
YXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQotICAgICAgICBy
ZXR1cm4gMDsKK1VzZWRWZXJ0aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBV
c2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyYgbm9uQ29sbGFwc2VkVmFsdWVz
KQoreworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIC8vIEZsb2F0cyBhbmQgb3V0IG9mIGZsb3cgcG9zaXRpb25lZCBib3hlcyBkbyBu
b3QgY29sbGFwc2UgdGhlaXIgbWFyZ2lucy4KLSAgICBpZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aE5leHRTaWJsaW5nKGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBub25Db2xsYXBzZWRN
YXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBBU1NFUlQobGF5b3V0Qm94
LmlzQmxvY2tMZXZlbEJveCgpKTsKKyAgICAvLyAxLiBHZXQgbWluL21heCBtYXJnaW4gdG9wIHZh
bHVlcyBmcm9tIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGlmIHdlIGFyZSBjb2xsYXBzaW5nIG1h
cmdpbiB0b3Agd2l0aCBpdC4KKyAgICAvLyAyLiBHZXQgbWluL21heCBtYXJnaW4gdG9wIHZhbHVl
cyBmcm9tIHRoZSBwcmV2aW91cyBpbi1mbG93IHNpYmxpbmcsIGlmIHdlIGFyZSBjb2xsYXBzaW5n
IG1hcmdpbiB0b3Agd2l0aCBpdC4KKyAgICAvLyAzLiBHZXQgdGhpcyBsYXlvdXQgYm94J3MgY29t
cHV0ZWQgbWFyZ2luIHRvcCB2YWx1ZS4KKyAgICAvLyA0LiBVcGRhdGUgdGhlIG1pbi9tYXggdmFs
dWUgYW5kIGNvbXB1dGUgdGhlIGZpbmFsIG1hcmdpbi4gCisgICAgYXV0byBwb3NpdGl2ZU5lZ2F0
aXZlTWFyZ2luQmVmb3JlID0gTWFyZ2luQ29sbGFwc2U6OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCwgbm9uQ29sbGFwc2VkVmFsdWVzKTsKKyAgICBh
dXRvIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciA9IE1hcmdpbkNvbGxhcHNlOjpwb3NpdGl2
ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCwgbm9uQ29sbGFwc2Vk
VmFsdWVzKTsKKworICAgIGF1dG8gbWFyZ2luc0NvbGxhcHNlVGhyb3VnaCA9IE1hcmdpbkNvbGxh
cHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOyAKKyAg
ICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaCkgeworICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZl
TWFyZ2luQmVmb3JlID0gY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBvc2l0aXZl
TmVnYXRpdmVNYXJnaW5CZWZvcmUsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlcik7CisgICAg
ICAgIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRlciA9IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5C
ZWZvcmU7ICAgICAgICAgCisgICAgfQogCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4g
aW4tZmxvdyBibG9jay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9w
IG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsCi0gICAgLy8g
dW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgIGlmIChsYXlvdXRCb3gubmV4
dEluRmxvd1NpYmxpbmcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5vbkNvbGxh
cHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8mIGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0
YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJveChsYXlvdXRCb3gpKTsKKyAgICBibG9ja0Zvcm1hdHRp
bmdTdGF0ZS5zZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCB7
IHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5BZnRl
ciB9KTsKKworICAgIHJldHVybiB7IG1hcmdpblZhbHVlKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5C
ZWZvcmUpLCBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIpLCBtYXJnaW5z
Q29sbGFwc2VUaHJvdWdoIH07IAogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKaW5kZXggMzE0MGE1NWFmYWI0Y2YxMmIzZjU1ZmZi
N2IxMjYxZjFkNzk2ZjFhZS4uNjMxZWY3MWI5ODNjNzE1YWQ3ZTJlYWQ1NGMwYzE1MmVjOTUxMDJl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBCb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwg
bV9ob3Jpem9udGFsTWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbE1hcmdpbikKICAgICAsIG1fdmVy
dGljYWxNYXJnaW4ob3RoZXIubV92ZXJ0aWNhbE1hcmdpbikKICAgICAsIG1faG9yaXpvbnRhbENv
bXB1dGVkTWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKQotICAgICwgbV9l
c3RpbWF0ZWRNYXJnaW5CZWZvcmUob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUpCisgICAg
LCBtX2hhc0NsZWFyYW5jZShvdGhlci5tX2hhc0NsZWFyYW5jZSkKICAgICAsIG1fYm9yZGVyKG90
aGVyLm1fYm9yZGVyKQogICAgICwgbV9wYWRkaW5nKG90aGVyLm1fcGFkZGluZykKICNpZiAhQVNT
RVJUX0RJU0FCTEVECkBAIC03NCw2ICs3NCw3IEBAIEJveDo6Qm94KGNvbnN0IEJveCYgb3RoZXIp
CiAgICAgLCBtX2hhc1ZhbGlkUGFkZGluZyhvdGhlci5tX2hhc1ZhbGlkUGFkZGluZykKICAgICAs
IG1faGFzVmFsaWRDb250ZW50SGVpZ2h0KG90aGVyLm1faGFzVmFsaWRDb250ZW50SGVpZ2h0KQog
ICAgICwgbV9oYXNWYWxpZENvbnRlbnRXaWR0aChvdGhlci5tX2hhc1ZhbGlkQ29udGVudFdpZHRo
KQorICAgICwgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUJveC5oCmluZGV4IDMxZDg2YTZiZmQzM2JiNTZkNjMzZjg0NDY1YzY5YWI2Y2E0
MjllZTQuLjlhZWZiMThkNzc1OTczNTgyMGYzNGIwYTAzMzMzMDJlNWRjNzI3MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtMTM2LDIx
ICsxMzYsMjAgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVy
biBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94V2lk
dGgoKSArIHBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCkgKyBib3JkZXJSaWdodCgpOyB9CiAgICAg
TGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKS52YWx1ZU9yKDApICsgY29udGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpLnZh
bHVlT3IoMCkgKyBib3JkZXJCb3R0b20oKTsgfQogICAgIFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIHsgdG9wKCksIGxlZnQoKSwgd2lkdGgoKSwgaGVpZ2h0KCkgfTsgfQotICAgIFJlY3QgcmVj
dFdpdGhNYXJnaW4oKSBjb25zdCB7IHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIGxl
ZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2luRW5k
KCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5BZnRlcigpIH07IH0KKyAgICBS
ZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3Q7CiAKICAgICBMYXlvdXQ6OlVzZWRWZXJ0aWNhbE1h
cmdpbiB2ZXJ0aWNhbE1hcmdpbigpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luQmVmb3Jl
KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCgpIGNvbnN0OwogICAgIExheW91
dFVuaXQgbWFyZ2luQWZ0ZXIoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNv
bnN0OworICAgIGJvb2wgaGFzQ2xlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDbGVhcmFu
Y2U7IH0KIAogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgY29uc3Q7
CiAgICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0OwogICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9l
c3RpbWF0ZWRNYXJnaW5CZWZvcmU7IH0KLQogICAgIExheW91dFVuaXQgYm9yZGVyVG9wKCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBib3JkZXJMZWZ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBi
b3JkZXJCb3R0b20oKSBjb25zdDsKQEAgLTE3NSw2ICsxNzQsMTEgQEAgcHVibGljOgogICAgIFJl
Y3QgcGFkZGluZ0JveCgpIGNvbnN0OwogICAgIFJlY3QgY29udGVudEJveCgpIGNvbnN0OwogCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHZvaWQgc2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExh
eW91dDo6RXN0aW1hdGVkTWFyZ2luQmVmb3JlIG1hcmdpbkJlZm9yZSkgeyBtX2VzdGltYXRlZE1h
cmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZTsgfQorICAgIE9wdGlvbmFsPExheW91dDo6RXN0aW1h
dGVkTWFyZ2luQmVmb3JlPiBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBt
X2VzdGltYXRlZE1hcmdpbkJlZm9yZTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgc3RydWN0
IFN0eWxlIHsKICAgICAgICAgU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKQEAgLTE5NCw3ICsx
OTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6OlVz
ZWRIb3Jpem9udGFsTWFyZ2luKTsKICAgICB2b2lkIHNldFZlcnRpY2FsTWFyZ2luKExheW91dDo6
VXNlZFZlcnRpY2FsTWFyZ2luKTsKICAgICB2b2lkIHNldEhvcml6b250YWxDb21wdXRlZE1hcmdp
bihMYXlvdXQ6OkNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgdm9pZCBzZXRFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUoTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUpIHsgbV9lc3RpbWF0ZWRNYXJn
aW5CZWZvcmUgPSBtYXJnaW5CZWZvcmU7IH0KKyAgICB2b2lkIHNldEhhc0NsZWFyYW5jZSgpIHsg
bV9oYXNDbGVhcmFuY2UgPSB0cnVlOyB9CiAKICAgICB2b2lkIHNldEJvcmRlcihMYXlvdXQ6OkVk
Z2VzKTsKICAgICB2b2lkIHNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4pOwpAQCAt
MjAzLDYgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlTWFyZ2luKCk7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlQm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gZmFsc2U7IH0K
ICAgICB2b2lkIGludmFsaWRhdGVQYWRkaW5nKCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IGZhbHNl
OyB9CisgICAgdm9pZCBpbnZhbGlkYXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgeyBtX2VzdGlt
YXRlZE1hcmdpbkJlZm9yZSA9IHsgfTsgfQogCiAgICAgdm9pZCBzZXRIYXNWYWxpZFRvcCgpIHsg
bV9oYXNWYWxpZFRvcCA9IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlkTGVmdCgpIHsgbV9o
YXNWYWxpZExlZnQgPSB0cnVlOyB9CkBAIC0yMjcsNyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICBM
YXlvdXQ6OlVzZWRIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE1hcmdpbjsKICAgICBMYXlv
dXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbiBtX3ZlcnRpY2FsTWFyZ2luOwogICAgIExheW91dDo6Q29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luOwotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOworICAgIGJvb2wgbV9o
YXNDbGVhcmFuY2U7CiAKICAgICBMYXlvdXQ6OkVkZ2VzIG1fYm9yZGVyOwogICAgIE9wdGlvbmFs
PExheW91dDo6RWRnZXM+IG1fcGFkZGluZzsKQEAgLTI0Myw2ICsyNDgsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxp
ZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRXaWR0
aCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8TGF5b3V0OjpFc3RpbWF0ZWRNYXJnaW5CZWZvcmU+
IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOwogI2VuZGlmCiB9OwogCkBAIC01MjAsOCArNTI2LDgg
QEAgaW5saW5lIHZvaWQgQm94OjpzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlVzZWRWZXJ0aWNh
bE1hcmdpbiBtYXJnaW4pCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHNldEhhc1ZhbGlkVmVy
dGljYWxNYXJnaW4oKTsKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2lu
KCk7CisgICAgaW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSgpOwogI2VuZGlmCi0gICAg
QVNTRVJUKCFtX2VzdGltYXRlZE1hcmdpbkJlZm9yZSB8fCAqbV9lc3RpbWF0ZWRNYXJnaW5CZWZv
cmUgPT0gbWFyZ2luLmJlZm9yZSgpKTsKICAgICBtX3ZlcnRpY2FsTWFyZ2luID0gbWFyZ2luOwog
fQogCkBAIC01NDksNiArNTU1LDE0IEBAIGlubGluZSB2b2lkIEJveDo6c2V0UGFkZGluZyhPcHRp
b25hbDxMYXlvdXQ6OkVkZ2VzPiBwYWRkaW5nKQogICAgIG1fcGFkZGluZyA9IHBhZGRpbmc7CiB9
CiAKK2lubGluZSBCb3g6OlJlY3QgQm94OjpyZWN0V2l0aE1hcmdpbigpIGNvbnN0Cit7CisgICAg
YXV0byBtYXJnaW5BZnRlciA9IHRoaXMtPm1hcmdpbkFmdGVyKCk7CisgICAgaWYgKG1fdmVydGlj
YWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkuaXNDb2xsYXBzZWRUaHJvdWdoKQorICAgICAgICBt
YXJnaW5BZnRlciA9IDA7CisgICAgcmV0dXJuIHsgdG9wKCkgLSBtYXJnaW5CZWZvcmUoKSwgbGVm
dCgpIC0gbWFyZ2luU3RhcnQoKSwgbWFyZ2luU3RhcnQoKSArIHdpZHRoKCkgKyBtYXJnaW5FbmQo
KSwgbWFyZ2luQmVmb3JlKCkgKyBoZWlnaHQoKSArIG1hcmdpbkFmdGVyIH07Cit9CisKIGlubGlu
ZSBMYXlvdXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbiBCb3g6OnZlcnRpY2FsTWFyZ2luKCkgY29uc3QK
IHsKICAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCA3MWQwNTM5Nzg4
OTg4Zjc0MWYwNGEwYjdkNjNlNjNkNjUxODdmYjI4Li40ZTlmMmNjMmMwMTg2YWI2OWZhYzk2OWMx
N2ZmNGFhNzM2OTFhZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xODMsMzQgKzE4MywzMiBAQCBPcHRpb25hbDxQb3NpdGlv
bj4gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShjb25zdCBC
b3gmIGxheQogICAgICAgICBpZiAoY2xlYXJhbmNlIDw9IDApCiAgICAgICAgICAgICByZXR1cm4g
eyB9OwogCisgICAgICAgIGRpc3BsYXlCb3guc2V0SGFzQ2xlYXJhbmNlKCk7CiAgICAgICAgIC8v
IENsZWFyYW5jZSBpbmhpYml0cyBtYXJnaW4gY29sbGFwc2luZy4gTGV0J3MgcmVzZXQgdGhlIHJl
bGV2YW50IGFkam9pbmluZyBtYXJnaW5zLgogICAgICAgICBpZiAoYXV0byogcHJldmlvdXNJbkZs
b3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpOworICAgICAgICAgICAgLy8g
RG9lcyB0aGlzIGJveCB3aXRoIGNsZWFyYW5jZSBhY3R1YWxseSBjb2xsYXBzZSBpdHMgbWFyZ2lu
IGJlZm9yZSB3aXRoIHRoZSBwcmV2aW91cyBpbmZsb3cgYm94J3MgbWFyZ2luIGFmdGVyPyAKKyAg
ICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2lu
KCk7CisgICAgICAgICAgICBpZiAodmVydGljYWxNYXJnaW4uaGFzQ29sbGFwc2VkVmFsdWVzKCkg
JiYgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkuYmVmb3JlKSB7CisgICAgICAgICAg
ICAgICAgLy8gUmVzZXQgcHJldmlvdXMgYm90dG9tIGFmdGVyIGFuZCBjdXJyZW50IG1hcmdpbiBi
ZWZvcmUgdG8gbm9uLWNvbGxhcHNpbmcuCisgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c1Zl
cnRpY2FsTWFyZ2luID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKHByZXZpb3VzVmVydGljYWxNYXJnaW4uaGFzQ29sbGFw
c2VkVmFsdWVzKCkgJiYgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5h
ZnRlcik7CiAKLSAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBwcmV2aW91cyBpbmZsb3cgc2libGlu
ZyBoYXMgYWxyZWFkeSBiZWVuIGxhaWQgb3V0LCBpdHMgbWFyZ2luIGlzIGNvbGxhcHNlZCBieSBu
b3cuCi0gICAgICAgICAgICBBU1NFUlQoIXByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5B
ZnRlcigpKTsKLSAgICAgICAgICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gZGlzcGxheUJveC5t
YXJnaW5CZWZvcmUoKTsKLQotICAgICAgICAgICAgLy8gUmVzZXQgcHJldmlvdXMgYm90dG9tIGFu
ZCBjdXJyZW50IHRvcCBtYXJnaW5zIHRvIG5vbi1jb2xsYXBzaW5nLgotICAgICAgICAgICAgYXV0
byBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnZlcnRp
Y2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xs
YXBzZWRWYWx1ZXMoKS5hZnRlcikgeworICAgICAgICAgICAgICAgIGF1dG8gY29sbGFwc2VkTWFy
Z2luID0gKnZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZTsKICAgICAgICAg
ICAgICAgICBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHByZXZp
b3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkuYmVmb3JlLCB7IH0gfSk7CiAgICAg
ICAgICAgICAgICAgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHBy
ZXZpb3VzVmVydGljYWxNYXJnaW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklY
TUU6IGNoZWNrIGlmIGNvbGxhcHNpbmcgdGhyb3VnaCBoYXMgYW55dGhpbmcgdG8gZG8gd2l0aCB0
aGlzLgotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IGRpc3BsYXlCb3gudmVydGlj
YWxNYXJnaW4oKTsKLSAgICAgICAgICAgIGlmICh2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1
ZXMoKS5iZWZvcmUpIHsKKwogICAgICAgICAgICAgICAgIHZlcnRpY2FsTWFyZ2luLnNldENvbGxh
cHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkuYWZ0ZXIg
fSk7CiAgICAgICAgICAgICAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNh
bE1hcmdpbik7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gbm9uQ29sbGFwc2Vk
TWFyZ2luID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkFmdGVyKCkgKyBkaXNwbGF5
Qm94Lm1hcmdpbkJlZm9yZSgpOwotICAgICAgICAgICAgYXV0byBtYXJnaW5PZmZzZXQgPSBub25D
b2xsYXBzZWRNYXJnaW4gLSBjb2xsYXBzZWRNYXJnaW47Ci0gICAgICAgICAgICAvLyBNb3ZlIHRo
ZSBib3ggdG8gdGhlIHBvc2l0aW9uIHdoZXJlIGl0IHdvdWxkIGJlIHdpdGggbm9uLWNvbGxhcHNl
ZCBtYXJnaW5zLgotICAgICAgICAgICAgcm9vdFJlbGF0aXZlVG9wICs9IG1hcmdpbk9mZnNldDsK
KyAgICAgICAgICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IHByZXZpb3VzVmVydGlj
YWxNYXJnaW4uYWZ0ZXIoKSArIHZlcnRpY2FsTWFyZ2luLmJlZm9yZSgpOworICAgICAgICAgICAg
ICAgIGF1dG8gbWFyZ2luRGlmZmVyZW5jZSA9IG5vbkNvbGxhcHNlZE1hcmdpbiAtIGNvbGxhcHNl
ZE1hcmdpbjsKKyAgICAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBib3ggdG8gdGhlIHBvc2l0aW9u
IHdoZXJlIGl0IHdvdWxkIGJlIHdpdGggbm9uLWNvbGxhcHNlZCBtYXJnaW5zLgorICAgICAgICAg
ICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJnaW5EaWZmZXJlbmNlOwogCi0gICAgICAgICAg
ICAvLyBIYXZpbmcgbmVnYXRpdmUgY2xlYXJhbmNlIGlzIGFsc28gbm9ybWFsLiBJdCBqdXN0IG1l
YW5zIHRoYXQgdGhlIGJveCB3aXRoIHRoZSBub24tY29sbGFwc2VkIG1hcmdpbnMgaXMgbm93IGxv
d2VyIHRoYW4gaXQgbmVlZHMgdG8gYmUuCi0gICAgICAgICAgICBjbGVhcmFuY2UgLT0gbWFyZ2lu
T2Zmc2V0OworICAgICAgICAgICAgICAgIC8vIEhhdmluZyBuZWdhdGl2ZSBjbGVhcmFuY2UgaXMg
YWxzbyBub3JtYWwuIEl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgYm94IHdpdGggdGhlIG5vbi1jb2xs
YXBzZWQgbWFyZ2lucyBpcyBub3cgbG93ZXIgdGhhbiBpdCBuZWVkcyB0byBiZS4KKyAgICAgICAg
ICAgICAgICBjbGVhcmFuY2UgLT0gbWFyZ2luRGlmZmVyZW5jZTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAvLyBOb3cgYWRqdXN0IHRoZSBib3gncyBwb3NpdGlvbiB3aXRoIHRo
ZSBjbGVhcmFuY2UuCiAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBjbGVhcmFuY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMGMzZjVjOGQ3N2ExZTc1NmYyNmJj
NzMyMDk1OWQzYzk5Y2Q5YjQwYy4uYWU1YjBkZjA0NGMxOGI0NzU1ODJmNzc3OGI2NDQwODYxNDNi
ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNDY2LDYgKzQ2
Niw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50
Rm9yU3VidHJlZShjb25zdCBCb3gmIHJvb3QsIEluCiAgICAgYXV0byBwYWRkaW5nID0gR2VvbWV0
cnk6OmNvbXB1dGVkUGFkZGluZyhsYXlvdXRTdGF0ZSgpLCByb290KTsKICAgICBhdXRvIGJvcmRl
ciA9IEdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihsYXlvdXRTdGF0ZSgpLCByb290KTsKICAgICBh
dXRvIGhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
KGxheW91dFN0YXRlKCksIHJvb3QpOworCiAgICAgLy8gU2V0dXAgYnJlYWtpbmcgYm91bmRhcmll
cyBmb3IgdGhpcyBzdWJ0cmVlLgogICAgIGF1dG8qIGxhc3REZXNjZW5kYW50SW5saW5lQm94ID0g
aW5saW5lRm9ybWF0dGluZ1N0YXRlLmxhc3RJbmxpbmVJdGVtKCk7CiAgICAgLy8gRW1wdHkgY29u
dGFpbmVyPwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDNlNjhmMDc2YzFlM2ZmYzZkOGU5NzYzMjE4N2Y5YmE5N2UzYThkZjIuLjQwNmUxMDkyNjgy
ZmQ2ZTc3YjFjNGFkNjIzMTM5MjliOWUwOTAxMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wMS0wNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9taXNj
L0xGQy1wYXNzaW5nLXRlc3RzLnR4dDoKKwogMjAxOS0wMS0wNiAgRnVqaWkgSGlyb25vcmkgIDxI
aXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luXVtDbGFuZ10gRml4IGNvbXBp
bGF0aW9uIHdhcm5pbmdzIG9mIE1pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRS
ZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dCBiL1Rvb2xzL0xheW91dFJlbG9hZGVk
L21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CmluZGV4IGZmNWViMzgxNTRiNzJlZjhjODgxN2Zi
Mjk0NWYzNTBlYmI1ZDEwMTIuLjIyNWI3NDc1ZGE4M2FhNWNhYWUxOTFlYTU5MWFhNjI1MWU2OWNm
NjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVz
dHMudHh0CisrKyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMu
dHh0CkBAIC00LDIzICs0LDY2IEBAIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1sZWZ0
LWF1dG8uaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLWxlZnQtcmlnaHQtdG9w
LWJvdHRvbS1hdXRvLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1uZXN0ZWQy
Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1uZXN0ZWQuaHRtbAorZmFzdC9i
bG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLW1pbi1tYXgtaGVpZ2h0Lmh0bWwKK2Zh
c3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlvbi1taW4tbWF4LXdpZHRoLmh0bWwK
K2Zhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmct
YmxvY2staXMtbm90LWluLXRoZS1mb3JtYXR0aW5nLWNvbnRleHQyLmh0bWwKIGZhc3QvYmxvY2sv
YmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlvbi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90
LWluLXRoZS1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fi
c29sdXRlLXNpbXBsZS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2lkdGgt
c2hyaW5rLXRvLWZpdC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2lkdGgt
c3RyZXRjaC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtd2l0aC1zdGF0aWMt
YmxvY2stcG9zaXRpb24tbmVzdGVkLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9hbG1vc3Qt
aW50cnVkaW5nLWxlZnQtZmxvYXQtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9i
b2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKK2Zhc3QvYmxvY2sv
YmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAor
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWln
aHQtcXVpcmsyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5v
bi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9ib3Jk
ZXItc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9jb2xsYXBzZWQtbWFyZ2luLXdp
dGgtbWluLWhlaWdodC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZml4ZWQtbmVzdGVkLmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hbmQtc2libGluZ3Mtd2l0aC1tYXJnaW5z
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLW11bHRpcGxlLXJvb3Rz
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1sZWZ0Lmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1yaWdodC5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci13aXRoLW1hcmdpbnMuaHRtbAor
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWxlZnQtd2hlbi1jb250YWluZXItaGFzLXBhZGRp
bmctbWFyZ2luLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1taW4tbWF4LWhlaWdo
dC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbWluLW1heC13aWR0aC5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYW5kLW5leHQtcHJldmlvdXMtaW5mbG93LXdp
dGgtbWFyZ2luLXdpdGgtbm8tYm9yZGVyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dGluZy1hbmQtbmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJnaW4uaHRtbAorZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC1jbGVhci1ib3RoLXNpbXBsZS5odG1sCitmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWNsZWFyLXJpZ2h0LXNpbXBsZS5odG1sCitmYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLXdp
dGgtdG9wLW9mZnNldC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxl
ZnQtYW5kLXJpZ2h0LW11bHRpcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGlu
Zy1ib3gtcmlnaHQtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1i
b3gtd2l0aC1jbGVhci1zaWJsaW5ncy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRp
bmctYm94LXdpdGgtY2xlYXItc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dGluZy1ib3gtd2l0aC1uZXctZm9ybWF0dGluZy1jb250ZXh0Lmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9mbG9hdGluZy1ib3gtd2l0aC1yZWxhdGl2ZS1wb3NpdGlvbmVkLXNpYmxpbmcuaHRt
bAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQtYW5kLXJpZ2h0LXdpdGgtY2xl
YXJhbmNlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0LXJpZ2h0LXNp
bXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC13aXRo
LWFsbC1tYXJnaW5zLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0cy1h
bmQtcmlnaHRzLXNpbXBsZS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVs
dGlwbGUtbGVmdHMtaW4tYm9keS5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmct
bXVsdGlwbGUtbGVmdHMtbXVsdGlwbGUtbGluZXMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRzLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dGluZy13aXRoLW5ldy1ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAorZmFzdC9ibG9jay9i
bG9jay1vbmx5L2luZmxvdy1taW4tbWF4LWhlaWdodC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvaW5mbG93LW1pbi1tYXgtd2lkdGguaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdp
bi1jb2xsYXBzZS1ib3R0b20tYm90dG9tLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9tYXJn
aW4tY29sbGFwc2UtYm90dG9tLW5lc3RlZC5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFy
Z2luLWNvbGxhcHNlLWZpcnN0LWxhc3QtYXJlLWZsb2F0aW5nLmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9tYXJnaW4tY29sbGFwc2Utc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25s
eS9tYXJnaW4tY29sbGFwc2UtdG9wLW5lc3RlZC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
bWFyZ2luLWNvbGxhcHNlLXdoZW4tY2hpbGQtaGFzLXBhZGRpbmctYm9yZGVyLmh0bWwKK2Zhc3Qv
YmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1ibG9jay1mb3JtYXR0aW5nLWNv
bnRleHQyLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1i
bG9jay1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdp
bi1jb2xsYXBzZS13aXRoLWNsZWFyYW5jZS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFy
Z2luLWxlZnQtcmlnaHQtc2l6aW5nLW91dC1vZi1mbG93Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2st
b25seS9tYXJnaW4tbGVmdC1yaWdodC1zaXppbmcuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5
L21hcmdpbi1wcm9wYWdhdGlvbi1zaW1wbGUtY29udGVudC1oZWlnaHQuaHRtbAogZmFzdC9ibG9j
ay9ibG9jay1vbmx5L21hcmdpbi1zaWJsaW5nLWNvbGxhcHNlLXByb3BhZ2F0ZWQuaHRtbAogZmFz
dC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L21pbi1tYXgtaGVpZ2h0LXBlcmNlbnRhZ2UuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5
L25lZ2F0aXZlLW1hcmdpbi1zaW1wbGUuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L3BhZGRp
bmctbmVzdGVkLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9wYWRkaW5nLXNpbXBsZS5odG1s
CkBAIC0zMSw4MCArNzQsNDkgQEAgZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXBvc2l0
aW9uLXdoZW4tY29udGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhlLWZvcm0KIGZhc3QvYmxvY2sv
YmxvY2stb25seS9yZWxhdGl2ZS1yaWdodC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVs
YXRpdmUtc2libGluZ3MuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXNpbXBs
ZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24td2hlbi1jb250
YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10aGUtZm9ybWF0dGluZy1jb250ZXh0Mi5odG1sCi1mYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtYmxvY2stZm9ybWF0dGluZy1j
b250ZXh0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1i
bG9jay1mb3JtYXR0aW5nLWNvbnRleHQyLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dC1sZWZ0LXdoZW4tY29udGFpbmVyLWhhcy1wYWRkaW5nLW1hcmdpbi5odG1sCi1mYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxlZnQtYW5kLXJpZ2h0LW11bHRpcGxlLXdpdGgtdG9w
LW9mZnNldC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWxlZnQtYW5k
LXJpZ2h0LW11bHRpcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gt
cmlnaHQtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtd2l0
aC1uZXctZm9ybWF0dGluZy1jb250ZXh0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dGluZy1ib3gtd2l0aC1yZWxhdGl2ZS1wb3NpdGlvbmVkLXNpYmxpbmcuaHRtbAotZmFzdC9ibG9j
ay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQtcmlnaHQtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2sv
YmxvY2stb25seS9mbG9hdGluZy1sZWZ0LXJpZ2h0LXdpdGgtYWxsLW1hcmdpbnMuaHRtbAotZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnRzLWFuZC1yaWdodHMtc2ltcGxlLmh0bWwK
LWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1pbi1ib2R5Lmh0
bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1tdWx0aXBs
ZS1saW5lcy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVm
dHMuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3Vz
LWluZmxvdy13aXRoLW1hcmdpbi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmct
YW5kLW5leHQtcHJldmlvdXMtaW5mbG93LXdpdGgtbWFyZ2luLXdpdGgtbm8tYm9yZGVyLmh0bWwK
LWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0LWFuZC1yaWdodC13aXRoLWNsZWFy
YW5jZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtYW5kLXNpYmxpbmdzLXdpdGgt
bWFyZ2lucy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgt
Y2xlYXJhbmNlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBs
ZS1sZWZ0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXNpbXBsZS1y
aWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci1tdWx0aXBsZS1y
b290cy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtYXZvaWRlci13aXRoLW1hcmdp
bnMuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4tbWF4LXdpZHRoLmh0bWwK
LWZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlvbi1taW4tbWF4LXdpZHRoLmh0
bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1taW4tbWF4LXdpZHRoLmh0bWwKLWZhc3Qv
YmxvY2svYmxvY2stb25seS9pbmZsb3ctbWluLW1heC1oZWlnaHQuaHRtbAotZmFzdC9ibG9jay9i
bG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLW1pbi1tYXgtaGVpZ2h0Lmh0bWwKLWZhc3QvYmxv
Y2svYmxvY2stb25seS9mbG9hdC1taW4tbWF4LWhlaWdodC5odG1sCi1mYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvbWluLW1heC1oZWlnaHQtcGVyY2VudGFnZS5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9u
bHkvYm9keS1oZWlnaHQtd2l0aC1ub24tYXV0by1odG1sLWhlaWdodC1xdWlyay5odG1sCi1mYXN0
L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1ub24tYXV0by1odG1sLWhlaWdodC1x
dWlyazIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1o
dG1sLWhlaWdodC1xdWlyay5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQt
d2l0aC1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrMi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkv
Y29sbGFwc2VkLW1hcmdpbi13aXRoLW1pbi1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8w
MDIuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDMuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDYu
aHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDcuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMDguaHRt
bAorZmFzdC9ibG9jay9iYXNpYy8wMDkuaHRtbAorZmFzdC9ibG9jay9iYXNpYy8wMTIuaHRtbAor
ZmFzdC9ibG9jay9iYXNpYy9jaGlsZC1ibG9jay1sZXZlbC1ib3gtd2l0aC1oZWlnaHQtcGVyY2Vu
dC5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljL2hlaWdodC1wZXJjZW50YWdlLXNpbXBsZS5odG1sCiBm
YXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1jb250ZW50LXdpdGgtZmxvYXRpbmctaW1hZ2UuaHRtbAog
ZmFzdC9ibG9jay9iYXNpYy9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0aW5nLWltYWdlczIuaHRt
bAotZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdDEuaHRtbAotZmFzdC9pbmxpbmUv
c2ltcGxlLWludHJ1ZGluZy1mbG9hdHMyLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRp
bmctZmxvYXRzMy5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWJsb2NrLmh0bWwKLWZh
c3QvaW5saW5lL3NpbXBsZS1zaHJpbmstdG8tZml0LWlubGluZS1ibG9jay5odG1sCi1mYXN0L2lu
bGluZS9zaW1wbGUtaW5saW5lLWluZmxvdy1wb3NpdGlvbmVkLmh0bWwKLWZhc3QvaW5saW5lL3Np
bXBsZS1pbmxpbmUtd2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50Lmh0bWwKLWZhc3QvaW5saW5l
L3NpbXBsZS1pbmxpbmUtd2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50Mi5odG1sCi1mYXN0L2lu
bGluZS9pbmxpbmUtY29udGVudC13aXRoLXBhZGRpbmctbGVmdC1yaWdodC5odG1sCi1mYXN0L2lu
bGluZS9pbmxpbmUtY29udGVudC13aXRoLWJvcmRlci1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5s
aW5lL2lubGluZS1jb250ZW50LXdpdGgtbWFyZ2luLWxlZnQtcmlnaHQuaHRtbAotZmFzdC9pbmxp
bmUvaW5saW5lLWNvbnRlbnQtYW5kLW5lc3RlZC1mb3JtYXR0aW5nLXJvb3Qtd2l0aC1tYXJnaW4t
bGVmdC1yaWdodC5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWltYWdlLXNp
bXBsZS5odG1sCi1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0LWFuZC1tYXJn
aW4uaHRtbAotZmFzdC9ibG9jay9iYXNpYy9oZWlnaHQtcGVyY2VudGFnZS1zaW1wbGUuaHRtbAot
ZmFzdC9ibG9jay9iYXNpYy9jaGlsZC1ibG9jay1sZXZlbC1ib3gtd2l0aC1oZWlnaHQtcGVyY2Vu
dC5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljL3BlcmNlbnQtaGVpZ2h0LWluc2lkZS1hbm9ueW1vdXMt
YmxvY2suaHRtbAogZmFzdC9ibG9jay9iYXNpYy9xdWlyay1tb2RlLXBlcmNlbnQtaGVpZ2h0Lmh0
bWwKK2Zhc3QvYmxvY2svYmFzaWMvcXVpcmstcGVyY2VudC1oZWlnaHQtZ3JhbmRjaGlsZC5odG1s
CiBmYXN0L2Jsb2NrL2Zsb2F0LzAwMS5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwNy5odG1sCiBm
YXN0L2Jsb2NrL2Zsb2F0LzAwOC5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAwOS5odG1sCiBmYXN0
L2Jsb2NrL2Zsb2F0LzAxMy5odG1sCiBmYXN0L2Jsb2NrL2Zsb2F0LzAxOS5odG1sCi1mYXN0L2Js
b2NrL2Jhc2ljLzAwMi5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwMy5odG1sCi1mYXN0L2Jsb2Nr
L2Jhc2ljLzAwNi5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwNy5odG1sCi1mYXN0L2Jsb2NrL2Jh
c2ljLzAwOC5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljLzAwOS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2lj
LzAxMi5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L25lZ2F0aXZlLW1hcmdpbi1jbGVhci5odG1sCitm
YXN0L2Jsb2NrL2Zsb2F0L292ZXJoYW5naW5nLWFmdGVyLWhlaWdodC1kZWNyZWFzZS1vZmZzZXRz
Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvb3ZlcmhhbmdpbmctYWZ0ZXItaGVpZ2h0LWRlY3JlYXNl
Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvb3ZlcmxhcHBpbmctZmxvYXRzLXdpdGgtb3ZlcmZsb3ct
aGlkZGVuLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvcHJldmlvdXMtc2libGluZy1hYnNwb3MtMDAy
Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvcmVsYXRpdmUtcGFpbnRlZC10d2ljZS5odG1sCitmYXN0
L2Jsb2NrL2Zsb2F0L2F2b2lkYW5jZS1ydGwuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9ici13aXRo
LWNsZWFyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvY2xhbXBlZC1yaWdodC1mbG9hdC5odG1sCitm
YXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LW9uLXplcm8taGVpZ2h0LWxpbmUuaHRtbAorZmFzdC9ibG9j
ay9mbG9hdC9mbG9hdC1vdmVyaGFuZ3Mtcm9vdC5odG1sCitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0
LXdpdGgtYW5vbnltb3VzLXByZXZpb3VzLXNpYmxpbmcuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9m
bG9hdHMtbm90LWNsZWFyZWQtY3Jhc2guaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2Uv
MDAyLmh0bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAwMy5odG1sCiBmYXN0L2Jsb2Nr
L21hcmdpbi1jb2xsYXBzZS8wMjYuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI3
Lmh0bWwKK2Zhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyOC5odG1sCitmYXN0L2Jsb2NrL21h
cmdpbi1jb2xsYXBzZS8wMjkuaHRtbAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDM1Lmh0
bWwKIGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAzOS5odG1sCiBmYXN0L2Jsb2NrL21hcmdp
bi1jb2xsYXBzZS8wNDAuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wMDMuaHRtbAogZmFz
dC9ibG9jay9wb3NpdGlvbmluZy8wMDQuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wMDUu
aHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy8wMDYuaHRtbApAQCAtMTQ1LDggKzE1NywyOSBA
QCBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA0Ni5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5n
LzA0OS5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA1Mi5odG1sCiBmYXN0L2Jsb2NrL3Bv
c2l0aW9uaW5nLzA1NC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzA2MC5odG1sCitmYXN0
L2Jsb2NrL3Bvc2l0aW9uaW5nL2Fic29sdXRlLXBvc2l0aW9uaW5nLW5vLXNjcm9sbGJhci5odG1s
CitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2NoYW5nZS1jb250YWluaW5nLWJsb2NrLWZvci1hYnNv
bHV0ZS1wb3NpdGlvbmVkLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY2hhbmdlLWNvbnRh
aW5pbmctYmxvY2stZm9yLWZpeGVkLXBvc2l0aW9uZWQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlv
bmluZy9jb21wbGV4LXBvc2l0aW9uZWQtbW92ZW1lbnQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlv
bmluZy9maXhlZC1wb3NpdGlvbi1kZXRhY2hlZC1mcmFtZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0
aW9uaW5nL2ZpeGVkLXBvc2l0aW9uLXN0YWNraW5nLWNvbnRleHQyLmh0bWwKK2Zhc3QvYmxvY2sv
cG9zaXRpb25pbmcvZml4ZWQtcG9zaXRpb24tc3RhY2tpbmctY29udGV4dC5odG1sCitmYXN0L2Js
b2NrL3Bvc2l0aW9uaW5nL2hpZGluZy1pbnNpZGUtcmVscG9zaXRpb25lZC1pbmxpbmUuaHRtbAor
ZmFzdC9ibG9jay9wb3NpdGlvbmluZy9pbnNlcnQtcG9zaXRpb25lZC1pbi1hbm9ueW1vdXMtY3Jh
c2guaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9sZWZ0bWFyZ2luLXRvcG1hcmdpbi5odG1s
CitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL25lZ2F0aXZlLXJlbC1wb3NpdGlvbi5odG1sCitmYXN0
L2Jsb2NrL3Bvc2l0aW9uaW5nL2Ficy1pbnNpZGUtaW5saW5lLXJlbC5odG1sCitmYXN0L2Jsb2Nr
L3Bvc2l0aW9uaW5nL3ByZWYtd2lkdGgtY2hhbmdlLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25p
bmcvcmVsYXRpdmUtb3ZlcmZsb3ctcmVwbGFjZWQtZmxvYXQuaHRtbAorZmFzdC9ibG9jay9wb3Np
dGlvbmluZy9zdGF0aWMtaW5saW5lLXBvc2l0aW9uLWR5bmFtaWMuaHRtbAogZmFzdC9ibG9jay9p
bnNpZGUtaW5saW5lcy9iYXNpYy1mbG9hdC1pbnRydXNpb24uaHRtbAogZmFzdC9ibG9jay9pbnNp
ZGUtaW5saW5lcy9jcmFzaC1vbi1maXJzdC1saW5lLWNoYW5nZS5odG1sCitmYXN0L2Jsb2NrL2xp
bmVib3hjb250YWluL3JlcGxhY2VkLmh0bWwKK2Zhc3QvYmxvY2svY29sbGFwc2UtYW5vbi1ibG9j
ay13aXRoLWZsb2F0LXNpYmxpbmdzLW9ubHkuaHRtbAorZmFzdC9ibG9jay9jcmFzaC13aGVuLWFu
b255bW91cy1ibG9ja3MtYXJlLW1lcmdlZC13aXRoLXNpbXBsZS1saW5lLWxheW91dC5odG1sCitm
YXN0L2Jsb2NrL2NyYXNoLXdoZW4tc3VidHJlZS1pcy1zdGlsbC1hdHRhY2hlZC5odG1sCitmYXN0
L2Jsb2NrL2dlb21ldHJ5LW1hcC1hc3NlcnRpb24td2l0aC10YWxsLWNvbnRlbnQuaHRtbAogZmFz
dC9ib3JkZXJzLzBweC1ib3JkZXJzLW5vLWxpbmUtaGVpZ2h0Lmh0bWwKIGZhc3QvYm9yZGVycy8w
cHgtYm9yZGVycy5odG1sCiBmYXN0L2JvcmRlcnMvYmxvY2stbWFzay1vdmVybGF5LWltYWdlLW91
dHNldC5odG1sCkBAIC0xNTYsMTEgKzE4OSw4IEBAIGZhc3QvYm9yZGVycy9ib3JkZXItaW1hZ2Ut
c2NhbGVkLWdyYWRpZW50Lmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItaW1hZ2Utc2xpY2Utb21p
c3Npb24uaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1sZWZ0LXJpZ2h0LXNhbWUtYm90dG9tLWRp
ZmZlcmVudC1jb2xvci5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRhc2hlZC1h
dC1hbGwuaHRtbAotZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kYXNoZWQuaHRtbAogZmFz
dC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kb3R0ZWQtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVy
cy9ib3JkZXItcGFpbnRpbmctZG90dGVkLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRp
bmctZG91YmxlLWF0LWFsbC5odG1sCi1mYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdWJs
ZS5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWdyb292ZS1hdC1hbGwuaHRtbAog
ZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1pbnNldC1hdC1hbGwuaHRtbAogZmFzdC9ib3Jk
ZXJzL2JvcmRlci1wYWludGluZy1pbnNldC5odG1sCkBAIC0xNjksNCArMTk5LDg2IEBAIGZhc3Qv
Ym9yZGVycy9ib3JkZXItcGFpbnRpbmctb3V0c2V0Lmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXIt
cGFpbnRpbmctcmlkZ2UtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmct
c29saWQtYXQtYWxsLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctc29saWQuaHRt
bAotZmFzdC9pbmxpbmUtYmxvY2svMDA0Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVz
LWluc2V0LW91dHNldC5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1vbi1odG1sLmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLW9uLXN1YnBpeGVsLXBvc2l0aW9uLW5vbi1o
aWRwaS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wZXJjZW50Lmh0bWwKK2Zhc3Qv
Ym9yZGVycy9ib3JkZXItcmFkaXVzLXZhbGlkLWJvcmRlci1jbGlwcGluZy5odG1sCitmYXN0L2Jv
cmRlcnMvYm9yZGVyLXJhZGl1cy13aWRlLWJvcmRlci0wMS5odG1sCitmYXN0L2JvcmRlcnMvYm9y
ZGVyLXJhZGl1cy13aXRoLWJveC1zaGFkb3ctMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1y
YWRpdXMtd2l0aC1ib3gtc2hhZG93Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItc2hhZG93LWxh
cmdlLXJhZGl1cy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzQWxsU3R5bGVzQWxsQ29y
bmVycy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzQXJjczAxLmh0bWwKK2Zhc3QvYm9y
ZGVycy9ib3JkZXJSYWRpdXNEYXNoZWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVz
RGFzaGVkMDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAzLmh0bWwKK2Zh
c3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3R0ZWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVy
UmFkaXVzRG90dGVkMDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAzLmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwMS5odG1sCitmYXN0L2JvcmRlcnMv
Ym9yZGVyUmFkaXVzRG91YmxlMDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJs
ZTAzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNHcm9vdmUwMS5odG1sCitmYXN0L2Jv
cmRlcnMvYm9yZGVyUmFkaXVzR3Jvb3ZlMDIuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1
c0luc2V0MDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0ludmFsaWRDb2xvci5odG1s
CitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzT3V0c2V0MDEuaHRtbAorZmFzdC9ib3JkZXJzL2Jv
cmRlclJhZGl1c1JpZGdlMDEuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDEu
aHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlkMDIuaHRtbAorZmFzdC9ib3JkZXJz
L2JvcmRlclJhZGl1c1NvbGlkMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c1NvbGlk
MDQuaHRtbAorZmFzdC9ib3JkZXJzL2Rhc2hlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24u
aHRtbAorZmFzdC9ib3JkZXJzL2RvdHRlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRt
bAorZmFzdC9ib3JkZXJzL2RvdWJsZS0xcHgtYm9yZGVyLWFzc2VydC5odG1sCitmYXN0L2JvcmRl
cnMvZW1wdHktZHJhd3JlY3QtYXNzZXJ0LWFmdGVyLXBpeGVsc25hcC5odG1sCitmYXN0L2JvcmRl
cnMvZW1wdHktb3V0bGluZS1ib3JkZXItYXNzZXJ0Lmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS0z
eC1pbnB1dC1oYWlybGluZS1ib3JkZXIuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRlci1j
bGlwcGluZy1yaWdodC1hZnRlci1tb3ZlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXIt
cGFpbnRpbmctZ3Jvb3ZlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcGFpbnRpbmct
cmlkZ2UuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRlci1yYWRpdXMtb3V0ZXItYm9yZGVy
LWdvZXMtcmVjdGFuZ2xlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1ib3JkZXItcmFkaXVzLXdp
dGgtc3VicGl4ZWwtbWFyZ2luLW5vdC1yZW5kZXJhYmxlLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRw
aS1ib3JkZXItd2lkdGgtZmxvb3JpbmcuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLW91dGxpbmUt
aGFpcmxpbmUtcGFpbnRpbmcuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLW91dGxpbmUtb24tc3Vi
cGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLXJvdW5kZWQtYm9yZGVyLW9u
LXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwKK2Zhc3QvYm9yZGVycy9oaWRwaS1zaW1wbGUtaGFpcmxp
bmUtYm9yZGVyLXBhaW50aW5nLmh0bWwKK2Zhc3QvYm9yZGVycy9taXhlZC1ib3JkZXItc3R5bGUy
Lmh0bWwKK2Zhc3QvYm9yZGVycy9uZWdhdGl2ZS1ib3JkZXItd2lkdGguaHRtbAorZmFzdC9ib3Jk
ZXJzL291dGxpbmUtb2Zmc2V0LW1pbi1hc3NlcnQuaHRtbAorZmFzdC9ib3JkZXJzL291dGxpbmUt
b2Zmc2V0LW92ZXJmbG93Lmh0bWwKK2Zhc3QvYm9yZGVycy93ZWJraXQtYm9yZGVyLXJhZGl1cy5o
dG1sCitmYXN0L2lubGluZS9hYnNvbHV0ZS1wb3NpdGlvbmVkLWJsb2NrLWluLWNlbnRyZWQtYmxv
Y2suaHRtbAorZmFzdC9pbmxpbmUvYWJzb2x1dGUtcG9zaXRpb25lZC1pbmxpbmUtaW4tY2VudHJl
ZC1ibG9jay5odG1sCitmYXN0L2lubGluZS9hbm9ueW1vdXMtYmxvY2std2l0aC1lbXB0eS1pbmxp
bmUuaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktb3V0bGluZS1hdXRvLW5lZ2F0aXZlLW9mZnNldC13
aXRoLWJvcmRlci1yYWRpdXMuaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktb3V0bGluZS1hdXRvLXdp
dGgtZnJhY3Rpb25hbC1yYWRpdXMuaHRtbAorZmFzdC9pbmxpbmUvaGlkcGktb3V0bGluZS1hdXRv
LXdpdGgtb25lLWZvY3VzcmluZy1yZWN0Lmh0bWwKK2Zhc3QvaW5saW5lL2hpZHBpLXBpeGVsLWdh
cC1iZXR3ZWVuLWFkamFjZW50LXNlbGVjdGlvbi1pbmxpbmVzLmh0bWwKK2Zhc3QvaW5saW5lL2hp
ZHBpLXNlbGVjdC1pbmxpbmUtb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9pbmxpbmUv
aGlkcGktc2VsZWN0aW9uLWdhcC1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2lubGlu
ZS9oaWRwaS1zZWxlY3Rpb24tZ2FwLW92ZXJsYXBzLWlubGluZS1zZWxlY3Rpb24uaHRtbAorZmFz
dC9pbmxpbmUvaW5saW5lLWJvZHktd2l0aC1zY3JvbGxiYXItY3Jhc2guaHRtbAorZmFzdC9pbmxp
bmUvaW5saW5lLWNoaWxkLWhlaWdodC13aWR0aC1jYWxjLWNyYXNoLmh0bWwKK2Zhc3QvaW5saW5l
L2lubGluZS1jb250ZW50LXdpdGgtYm9yZGVyLWxlZnQtcmlnaHQuaHRtbAorZmFzdC9pbmxpbmUv
aW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdC1hbmQtbWFyZ2luLmh0bWwKK2Zhc3QvaW5saW5lL2lu
bGluZS1jb250ZW50LXdpdGgtaW1hZ2Utc2ltcGxlLmh0bWwKK2Zhc3QvaW5saW5lL2lubGluZS1j
b250ZW50LXdpdGgtbWFyZ2luLWxlZnQtcmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLWNv
bnRlbnQtd2l0aC1wYWRkaW5nLWxlZnQtcmlnaHQuaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLW1h
cnF1ZWUtY3Jhc2guaHRtbAorZmFzdC9pbmxpbmUvaW5saW5lLXBhZGRpbmctZGlzYWJsZXMtdGV4
dC1xdWlyay5odG1sCitmYXN0L2lubGluZS9uZXctZmxvYXQtbmVlZHMtbGF5b3V0LXdoZW4tbGlu
ZS1pcy1kaXJ0eS5odG1sCitmYXN0L2lubGluZS9wZXJjZW50YWdlLW1hcmdpbnMuaHRtbAorZmFz
dC9pbmxpbmUvc2ltcGxlLWlubGluZS1ibG9jay5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5s
aW5lLWluZmxvdy1wb3NpdGlvbmVkLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtd2l0
aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50Mi5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5l
LXdpdGgtb3V0LW9mLWZsb3ctZGVzY2VuZGFudC5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW50
cnVkaW5nLWZsb2F0MS5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czIu
aHRtbAorZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9hdHMzLmh0bWwKK2Zhc3QvaW5s
aW5lL3NpbXBsZS1saW5lLWxheW91dC0xNmJpdC1jb250ZW50Lmh0bWwKK2Zhc3QvaW5saW5lL3Np
bXBsZS1zaHJpbmstdG8tZml0LWlubGluZS1ibG9jay5odG1sCitmYXN0L2lubGluZS9za2lwcGVk
LXdoaXRlc3BhY2UtYm91bmRpbmdCb3guaHRtbAorZmFzdC9pbmxpbmUvc2tpcHBlZC13aGl0ZXNw
YWNlLWNsaWVudC1yZWN0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358670</attachid>
            <date>2019-01-08 21:32:59 -0800</date>
            <delta_ts>2019-01-09 08:08:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192625-20190108213249.patch</filename>
            <type>text/plain</type>
            <size>92543</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I3MThkMTAyYjI3YzA1
ZmI0Nzk3NDdiOTM2OGY1OGY5MjRlOTNlMi4uYTg2OWE3NDQxYWRmZWZiODcwZTdlZjkzN2IyZGQy
Yjg0OWYzZDg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE5LTAxLTA3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXVtNYXJnaW5D
b2xsYXBzaW5nXSBBZGQgc3VwcG9ydCBmb3IgcGVjdWxpYXIgY2FzZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2MjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc29tZSBvZiB0aGUg
bW9yZSBwZWN1bGlhciBjYXNlcyBsaWtlIG1hcmdpbiBjb2xscGFzaW5nIHRocm91Z2ggbXVsdGlw
bGUgYm94ZXMgZXRjLgorICAgICAgICBBZGQgfjEwMCBuZXcgcGFzc2luZyBjYXNlcy4KKworICAg
ICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNGb3JtYXR0aW5nU3RhdGUgY29u
c3QpOgorICAgICAgICAqIGxheW91dC9NYXJnaW5UeXBlcy5oOgorICAgICAgICAqIGxheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlRmxvYXRpbmdQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6YWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5nIGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Ymxv
Y2tGb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25v
cmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRQb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdTdGF0ZTo6aGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6OnBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpzZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJIYXNF
c3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdTdGF0ZTo6aGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNDbGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNv
bGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29s
bGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJl
Zm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRoQ2xlYXJhbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5B
ZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZ01hcmdp
bkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Y29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6bWFyZ2luVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6dXBkYXRlQ29sbGFw
c2VkTWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxh
cHNlOjpwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OnBvc2l0aXZlTmVn
YXRpdmVNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjplc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xs
YXBzZTo6Y29sbGFwc2VkVmVydGljYWxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWROb25Db2xs
YXBzZWRNYXJnaW5CZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWROb25Db2xsYXBz
ZWRNYXJnaW5BZnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5CZWZv
cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9tTGFzdENoaWxkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFm
dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6aGFzQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6c2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0SGFzQ2xlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6aW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6cmVjdFdpdGhNYXJnaW4gY29uc3QpOgorICAgICAgICAqIGxheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRp
bmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVj
dElubGluZUNvbnRlbnRGb3JTdWJ0cmVlIGNvbnN0KToKKwogMjAxOS0wMS0wNyAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JGQ10gTWFyZ2luIGNvbGxh
cHNpbmcgc2hvdWxkIG5vdCBiZSBsaW1pdGVkIHRvIGluLWZsb3cgbm9uLXJlcGxhY2VkIGJveGVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAppbmRleCAwNDc3NWFiMmJiNjY4ZmMyMjZh
M2ZjMTMyNDA0MmRiY2YxMmZiMzNmLi4yODQ0NmNmOWFkZDNlNzk4Njk4NjFjOWNjNzljNjk4NWJj
ZDlmN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaApAQCAtNzUsNiArNzUsNyBA
QCBwdWJsaWM6CiAKICAgICBGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZUZvckJveChj
b25zdCBCb3gmKSBjb25zdDsKICAgICBGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVkRm9ybWF0
dGluZ1N0YXRlKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0OworICAgIGJvb2wgaGFz
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0IHsgcmV0dXJu
IG1fZm9ybWF0dGluZ1N0YXRlcy5jb250YWlucygmZm9ybWF0dGluZ1Jvb3QpOyB9CiAgICAgRm9y
bWF0dGluZ1N0YXRlJiBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVl
ZGVkKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpOwogCiAgICAgRGlzcGxheTo6Qm94JiBkaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L01hcmdpblR5cGVzLmgKaW5kZXggNGUxZmM1NmQ1NTYyYjFhNzI2ZjI3ZmU0ODU4YTFh
ODc1NTY0NzRjOS4uYWM0YWE4YmM1ZWVkYjllNTcxZTFhZGFlMGFiM2M2Y2RmYmMxMDc1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKQEAgLTUwLDE1ICs1MCwxNSBAQCBzdHJ1Y3Qg
VXNlZFZlcnRpY2FsTWFyZ2luIHsKICAgICBzdHJ1Y3QgQ29sbGFwc2VkVmFsdWVzIHsKICAgICAg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYmVmb3JlOwogICAgICAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBhZnRlcjsKKyAgICAgICAgYm9vbCBpc0NvbGxhcHNlZFRocm91Z2ggeyBmYWxzZSB9Owog
ICAgIH07CiAgICAgQ29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY29sbGFwc2VkVmFsdWVzOyB9CiAgICAgYm9vbCBoYXNDb2xsYXBzZWRWYWx1ZXMoKSBj
b25zdCB7IHJldHVybiBtX2NvbGxhcHNlZFZhbHVlcy5iZWZvcmUgfHwgbV9jb2xsYXBzZWRWYWx1
ZXMuYWZ0ZXI7IH0KICAgICB2b2lkIHNldENvbGxhcHNlZFZhbHVlcyhDb2xsYXBzZWRWYWx1ZXMg
Y29sbGFwc2VkVmFsdWVzKSB7IG1fY29sbGFwc2VkVmFsdWVzID0gY29sbGFwc2VkVmFsdWVzOyB9
CiAKICAgICBVc2VkVmVydGljYWxNYXJnaW4oTm9uQ29sbGFwc2VkVmFsdWVzLCBDb2xsYXBzZWRW
YWx1ZXMpOwotCiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luKCkgPSBkZWZhdWx0OwotICAgIH5Vc2Vk
VmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgTm9uQ29sbGFwc2Vk
VmFsdWVzIG1fbm9uQ29sbGFwc2VkVmFsdWVzOwogICAgIENvbGxhcHNlZFZhbHVlcyBtX2NvbGxh
cHNlZFZhbHVlczsKQEAgLTc0LDYgKzc0LDEwIEBAIHN0cnVjdCBVc2VkSG9yaXpvbnRhbE1hcmdp
biB7CiAgICAgTGF5b3V0VW5pdCBlbmQ7CiB9OwogCitzdHJ1Y3QgRXN0aW1hdGVkTWFyZ2luQmVm
b3JlIHsKKyAgICBMYXlvdXRVbml0IHVzZWRWYWx1ZTsKK307CisKIHN0cnVjdCBQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gewogICAgIHN0cnVjdCBWYWx1ZXMgewogICAgICAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBwb3NpdGl2ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IDI0ODExMTZhZmQ3YWIxNDA3NzZkZTk1N2FmNzc2MmU4YzA5Mzg2ZWIuLmIyNGRl
OWY2ODM4N2U2ZjgzZmQzMDIwNjNlNzZjZDA4ZjYwN2UzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMTg3LDExICsxODcsMTQgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZv
cmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUg
PSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAgIGF1dG8gZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0g
R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsK
KyAgICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9IE1hcmdpbkNvbGxhcHNlOjplc3RpbWF0
ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYmxvY2tGb3JtYXR0
aW5nU3RhdGUoKS5zZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0Qm94KTsKIAogICAg
IGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveCk7CisgICAgZGlzcGxheUJveC5zZXRUb3AoYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9u
QWZ0ZXJNYXJnaW5Db2xsYXBzaW5nKGxheW91dEJveCwgZXN0aW1hdGVkTWFyZ2luQmVmb3JlLnVz
ZWRWYWx1ZSkpOworI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBkaXNwbGF5Qm94LnNldEVzdGlt
YXRlZE1hcmdpbkJlZm9yZShlc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOwotICAgIGRpc3BsYXlCb3gu
bW92ZVZlcnRpY2FsbHkoZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTsKKyNlbmRpZgogfQogCiB2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmVGb3JB
bmNlc3RvcnMoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CkBAIC0yMDgsMTIgKzIxMSwxMCBA
QCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZv
cmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JgogICAgIC8vIFNvIHdoZW4gd2UgZ2V0IHRvIHRoZSBw
b2ludCB3aGVyZSB3ZSBpbnRlcnNlY3QgdGhlIGJveCB3aXRoIHRoZSBmbG9hdCB0byBkZWNpZGUg
aWYgdGhlIGJveCBuZWVkcyB0byBtb3ZlLCB3ZSBkb24ndCB5ZXQgaGF2ZSB0aGUgZmluYWwgdmVy
dGljYWwgcG9zaXRpb24uCiAgICAgLy8KICAgICAvLyBUaGUgaWRlYSBoZXJlIGlzIHRoYXQgYXMg
bG9uZyBhcyB3ZSBkb24ndCBjcm9zcyB0aGUgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5k
YXJ5LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwcmUtY29tcHV0ZSB0aGUgZmluYWwgdG9wIG1hcmdp
bi4KLSAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0KKyAgICBh
dXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGZvciAo
YXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yICYm
ICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2VzdG9y
ID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlC
b3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCphbmNlc3Rvcik7CiAgICAg
ICAgIC8vIEZJWE1FOiB3aXRoIGluY3JlbWVudGFsIGxheW91dCwgd2UgbWlnaHQgYWN0dWFsbHkg
aGF2ZSBhIHZhbGlkIChub24tZXN0aW1hdGVkKSBtYXJnaW4gdG9wIGFzIHdlbGwuCi0gICAgICAg
IGlmIChkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQorICAgICAgICBpZiAoZm9y
bWF0dGluZ1N0YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFu
Y2VzdG9yKTsKQEAgLTIzOCwxMCArMjM5LDEwIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkCiB9
CiAKICNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgYm9vbCBoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9y
ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQor
c3RhdGljIGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQmxvY2tGb3JtYXR0
aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAg
Zm9yIChhdXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0
b3IgJiYgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5j
ZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgaWYgKGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKS5lc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUoKSkKKyAgICAgICAgaWYgKGZvcm1hdHRpbmdTdGF0ZS5oYXNFc3RpbWF0ZWRNYXJnaW5C
ZWZvcmUoKmFuY2VzdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtMjUzLDcgKzI1NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9h
CiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIEFT
U0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7Ci0gICAgQVNTRVJUKGhhc1By
ZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBBU1NF
UlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5
b3V0Qm94KSk7CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIC8vIDguMy4xIENvbGxhcHNpbmcgbWFyZ2lu
cwpAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiAgICAgQVNTRVJU
KGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgQVNT
RVJUKCFsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAgICAgQVNTRVJUKCFsYXlv
dXRCb3guaGFzRmxvYXRDbGVhcigpKTsKLSAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5C
ZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIEFTU0VSVChoYXNQcmVjb21wdXRl
ZE1hcmdpbkJlZm9yZShibG9ja0Zvcm1hdHRpbmdTdGF0ZSgpLCBsYXlvdXRCb3gpKTsKIAogICAg
IGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjkyLDcgKzI5Myw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nCiAgICAg
Ly8gRm9yIGZvcm1hdHRpbmcgcm9vdHMsIHdlIGFscmVhZHkgcHJlY29tcHV0ZWQgZmluYWwgcG9z
aXRpb24uCiAgICAgaWYgKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgp
KQogICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzKGxheW91
dEJveCk7Ci0gICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpKTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoYmxv
Y2tGb3JtYXR0aW5nU3RhdGUoKSwgbGF5b3V0Qm94KSk7CiAKICAgICBpZiAoYXV0byB2ZXJ0aWNh
bFBvc2l0aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0aW9u
V2l0aENsZWFyYW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jZSk7CkBAIC0zNzEsMTUgKzM3MiwyMSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1h
cmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpIH07CisgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBNYXJnaW5Db2xs
YXBzZTo6Y29sbGFwc2VkVmVydGljYWxWYWx1ZXMobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVp
Z2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbik7CiAgICAgYXV0byB2ZXJ0aWNhbE1hcmdp
biA9IFVzZWRWZXJ0aWNhbE1hcmdpbiB7IGhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJn
aW4sIGNvbGxhcHNlZE1hcmdpbiB9OwogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byYgZm9ybWF0dGlu
Z1N0YXRlID0gdGhpcy0+YmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBpZiAoZm9ybWF0dGlu
Z1N0YXRlLmhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKSB7CisgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5jbGVhckhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpOwor
ICAgICAgICBBU1NFUlQoZGlzcGxheUJveC5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKS0+dXNlZFZh
bHVlID09IHZlcnRpY2FsTWFyZ2luLmJlZm9yZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlz
cGxheUJveC5zZXRUb3AoYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBz
aW5nKGxheW91dEJveCwgdmVydGljYWxNYXJnaW4uYmVmb3JlKCkpKTsKKwogICAgIGRpc3BsYXlC
b3guc2V0Q29udGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKICAgICBkaXNw
bGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsKLQotICAgIC8vIElmIHRo
aXMgYm94IGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgYnkgdGhlIGVzdGltYXRlZCB2ZXJ0aWNhbCBt
YXJnaW4sIG5vIG5lZWQgdG8gbW92ZSBpdCBhZ2Fpbi4KLSAgICBpZiAobGF5b3V0Qm94LmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkgfHwgIWRpc3BsYXlCb3guZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkp
Ci0gICAgICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkodmVydGljYWxNYXJnaW4uYmVmb3Jl
KCkpOworICAgIC8vIEFkanVzdCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0b20g
bm93IHRoYXQgdGhpcyBib3gncyB2ZXJ0aWNhbCBtYXJnaW4gaXMgY29tcHV0ZWQuCisgICAgaWYg
KE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUHJldmlvdXNTaWJsaW5n
TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIE1hcmdpbkNvbGxh
cHNlOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxheW91dEJveC5w
cmV2aW91c0luRmxvd1NpYmxpbmcoKSwgdmVydGljYWxNYXJnaW4pOwogfQogCiBGb3JtYXR0aW5n
Q29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6aW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdApAQCAtNDQ2LDYgKzQ1MywzNyBA
QCBGb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6aW5zdHJpbnNpYwogICAgIHJldHVybiBpbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50czsKIH0KIAorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjphZGp1c3Rl
ZFZlcnRpY2FsUG9zaXRpb25BZnRlck1hcmdpbkNvbGxhcHNpbmcoY29uc3QgQm94JiBsYXlvdXRC
b3gsIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSBjb25zdAoreworICAgIC8vIE5vdyB0aGF0IHdl
J3ZlIGNvbXB1dGVkIHRoZSBmaW5hbCBtYXJnaW4gYmVmb3JlLCBsZXQncyBzaGlmdCB0aGUgYm94
J3MgdmVydGljYWwgcG9zaXRpb24uCisgICAgLy8gMS4gQ2hlY2sgaWYgdGhlIG1hcmdpbiBiZWZv
cmUgY29sbGFwc2VzIHdpdGggdGhlIHByZXZpb3VzIGJveCdzIG1hcmdpbiBhZnRlci4gaWYgbm90
IC0+IHJldHVybiBwcmV2aW91cyBib3gncyBib3R0b20gaW5sY3VkaW5nIG1hcmdpbiBhZnRlciAr
IG1hcmdpbkJlZm9yZQorICAgIC8vIDIuIENoZWNrIGlmIHRoZSBwcmV2aW91cyBib3gncyBtYXJn
aW5zIGNvbGxhcHNlIHRocm91Z2guIElmIG5vdCAtPiByZXR1cm4gcHJldmlvdXMgYm94JyBib3R0
b20gZXhjbHVkaW5nIG1hcmdpbiBhZnRlciArIG1hcmdpbkJlZm9yZSAodGhleSBhcmUgc3VwcG9z
ZWQgdG8gYmUgZXF1YWwpCisgICAgLy8gMy4gR28gdG8gcHJldmlvdXMgYm94IGFuZCBzdGFydCBm
cm9tIHN0ZXAgIzEgdW50aWwgd2UgaGl0IHRoZSBwYXJlbnQgYm94LgorICAgIGF1dG8mIGxheW91
dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKKyAgICBhdXRvKiBjdXJyZW50TGF5b3V0Qm94
ID0gJmxheW91dEJveDsKKyAgICB3aGlsZSAoY3VycmVudExheW91dEJveCkgeworICAgICAgICBp
ZiAoIWN1cnJlbnRMYXlvdXRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygpKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93U2libGluZyA9ICpjdXJyZW50
TGF5b3V0Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKKyAgICAgICAgaWYgKCFNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFm
dGVyKGxheW91dFN0YXRlLCAqY3VycmVudExheW91dEJveCkpIHsKKyAgICAgICAgICAgIGF1dG8m
IHByZXZpb3VzRGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
cHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3Bs
YXlCb3gucmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSArIG1hcmdpbkJlZm9yZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghTWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2go
bGF5b3V0U3RhdGUsIHByZXZpb3VzSW5GbG93U2libGluZykpIHsKKyAgICAgICAgICAgIGF1dG8m
IHByZXZpb3VzRGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
cHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rpc3Bs
YXlCb3guYm90dG9tKCkgKyBtYXJnaW5CZWZvcmU7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVu
dExheW91dEJveCA9ICZwcmV2aW91c0luRmxvd1NpYmxpbmc7CisgICAgfQorCisgICAgYXV0byBj
b250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94VG9wKCk7Cisg
ICAgaWYgKE1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpIHx8IE1hcmdpbkNvbGxhcHNlOjptYXJn
aW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91
dEJveCkpCisgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wOworCisg
ICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3AgKyBtYXJnaW5CZWZvcmU7Cit9
CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAyMWRlM2I0OTIzNGUy
NjljOGFkNTQ1MzEyNzdmMTc5MmEzMzQ1ZGFmLi41MDBkMDY0OWMyNWUyMzdlYzAwZGU3MmZiZGVi
OTJiMDVlNzU4ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTAsNiArNTAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgYmxvY2tGb3JtYXR0aW5nU3RhdGUoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRl
KCkpOyB9CisKICAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0Nv
bnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKICAgICB2b2lkIHBsYWNlSW5GbG93UG9zaXRpb25l
ZENoaWxkcmVuKGNvbnN0IENvbnRhaW5lciYpIGNvbnN0OwogCkBAIC02Nyw2ICs2OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwcmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdS
b290SWZOZWVkZWQoY29uc3QgQm94JikgY29uc3Q7CiAKICAgICBJbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlOworICAg
IExheW91dFVuaXQgYWRqdXN0ZWRWZXJ0aWNhbFBvc2l0aW9uQWZ0ZXJNYXJnaW5Db2xsYXBzaW5n
KGNvbnN0IEJveCYsIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSBjb25zdDsKIAogICAgIC8vIFRo
aXMgY2xhc3MgaW1wbGVtZW50cyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0
aWNpcGF0aW5nIGluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgogICAgIGNsYXNzIEdlb21l
dHJ5IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7CkBAIC03OSw5ICs4Miw2
IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBib29sIGluc3RyaW5zaWNXaWR0aENvbnN0cmFp
bnRzTmVlZENoaWxkcmVuV2lkdGgoY29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBJbnN0cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGVzdGlt
YXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIEhlaWdodEFu
ZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQgPSB7IH0pOwog
ICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+
IHVzZWRXaWR0aCA9IHsgfSk7CkBAIC05MiwzNiArOTIsMzggQEAgcHJpdmF0ZToKICAgICAvLyBU
aGlzIGNsYXNzIGltcGxlbWVudHMgbWFyZ2luIGNvbGxhcHNpbmcgZm9yIGJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dC4KICAgICBjbGFzcyBNYXJnaW5Db2xsYXBzZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLQotICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRo
UGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFmdGVy
RnJvbUxhc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBz
dGF0aWMgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOwotCi0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9u
Q29sbGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0g
ICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFVzZWRWZXJ0
aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZlcnRpY2FsVmFsdWVzKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25D
b2xsYXBzZWRWYWx1ZXMmKTsKIAotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRN
YXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYp
OwotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEVzdGltYXRlZE1h
cmdpbkJlZm9yZSBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdXBkYXRlQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4m
IG5leHRTaWJsaW5nVmVydGljYWxNYXJnaW4pOwogCiAgICAgICAgIHN0YXRpYyBib29sIG1hcmdp
bkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQmVmb3JlQ29sbGFwc2Vz
V2l0aFByZXZpb3VzU2libGluZyhjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgbWFy
Z2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcoY29uc3QgQm94Jik7Ci0gICAgICAgIHN0
YXRpYyBib29sIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFNpYmxpbmdNYXJnaW5CZWZvcmVXaXRo
Q2xlYXJhbmNlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRp
YyBib29sIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBib29s
IG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5CZWZvcmVDb2xs
YXBzZXNXaXRoUHJldmlvdXNTaWJsaW5nTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKKworICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAg
ICAgICBzdGF0aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRN
YXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0
aWMgYm9vbCBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0
ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNX
aXRoU2libGluZ01hcmdpbkJlZm9yZVdpdGhDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKKwogICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5zQ29sbGFwc2VUaHJvdWdo
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBlbnVtIGNsYXNzIE1hcmdpblR5cGUgeyBCZWZvcmUsIEFmdGVyIH07CisgICAgICAgIHN0YXRp
YyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBwb3NpdGl2ZU5lZ2F0
aXZlVmFsdWVzKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgTWFyZ2luVHlwZSk7Cisg
ICAgICAgIHN0YXRpYyBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBw
b3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94
JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMmKTsKKyAgICAg
ICAgc3RhdGljIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIHBvc2l0
aXZlTmVnYXRpdmVNYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNv
bnN0IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzJik7CiAgICAgfTsKIAog
ICAgIGNsYXNzIFF1aXJrcyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBuZWVk
c1N0cmV0Y2hpbmcoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3Rh
dGljIEhlaWdodEFuZE1hcmdpbiBzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmLCBIZWlnaHRBbmRNYXJnaW4pOworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFy
Z2luIHN0cmV0Y2hlZEluRmxvd0hlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYs
IEhlaWdodEFuZE1hcmdpbik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTWFy
Z2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRp
YyBib29sIHNob3VsZElnbm9yZU1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3Qg
Qm94Jik7CiAgICAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcAppbmRleCA0Y2JiYzYzMzA0MDEzYzA4ZmQ5OTc5ODkyZDI5NTlhM2NmNzUwNTc4
Li40MTcwZWFjOTBmYWY0ZGVmNTk5NTdiNDA0MTBmOTE2YmQ0ODYxOTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC05OSw3ICs5OSw2IEBAIEhl
aWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9u
UmVwbGFjZWRIZWlnaHRBbmRNYXJnCiAgICAgfTsKIAogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2lu
ID0gY29tcHV0ZSgpOwotCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAt
PiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwg
aGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUgPDwgInB4LCAiIDw8IGhl
aWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRC
b3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsK
IH0KQEAgLTI1Nyw3ICsyNTYsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBMYQogICAgIGlmICgh
UXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCiAgICAgICAg
IHJldHVybiBoZWlnaHRBbmRNYXJnaW47CiAKLSAgICBoZWlnaHRBbmRNYXJnaW4gPSBRdWlya3M6
OnN0cmV0Y2hlZEhlaWdodChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4p
OworICAgIGhlaWdodEFuZE1hcmdpbiA9IFF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gsIGhlaWdodEFuZE1hcmdpbik7CiAKICAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2lu
XSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0IC0+IGhlaWdo
dCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBoZWlnaHRB
bmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9yZSA8PCAicHgsICIgPDwgaGVpZ2h0QW5k
TWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwpAQCAtMzE4
LDMwICszMTcsNiBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OgogICAgIHJldHVybiB7IG1pbmlt
dW1JbnRyaW5zaWNXaWR0aCwgbWF4aW11bUludHJpbnNpY1dpZHRoIH07CiB9CiAKLUxheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJlZm9y
ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQot
ewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotICAgIC8vIENhbid0
IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQgd2Ug
c2hvdWxkbid0IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KLSAgICBBU1NFUlQobGF5
b3V0Qm94LmlzSW5GbG93KCkpOwotICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCBib3VuZGFyeS4KLSAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAgICAvLyBMZXQncyBqdXN0IHVzZSB0aGUgbm9ybWFs
IHBhdGggZm9yIG5vdy4KLSAgICByZXR1cm4gTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLSAgICAvLyBDYW4ndCBlc3RpbWF0ZSB2ZXJ0aWNhbCBt
YXJnaW5zIGZvciBvdXQgb2YgZmxvdyBib3hlcyAoYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRv
IGl0IGZvciBmbG9hdCBib3hlcykuCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsK
LSAgICAvLyBDYW4ndCBjcm9zcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnkuCi0g
ICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkp
OwotCi0gICAgLy8gTGV0J3MganVzdCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0gICAg
cmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKLX0KLQogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cAppbmRleCBhMTA3OTc0ZDA3YWRlNDQzNzE2NWZhOWM5Nzk1YmI4MzBhM2FmZDU0Li43MWExYTc5
ZGU2ZmUwNTA3OWQ1MGEzYWU5OTMxOTQ2MjgyZmJmMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTU1LDcgKzU1LDYgQEAgc3RhdGljIGJvb2wgaGFz
TWFyZ2luQmVmb3JlUXVpcmtWYWx1ZShjb25zdCBCb3gmIGxheW91dEJveCkKIAogYm9vbCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIEFTU0VSVChs
YXlvdXRCb3guaXNJbkZsb3coKSk7CiAgICAgLy8gSW4gcXVpcmtzIG1vZGUsIGJvZHkgc3RyZXRj
aGVzIHRvIGh0bWwgYW5kIGh0bWwgdG8gdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayAoaGVp
Z2h0OiBhdXRvIG9ubHkpLgogICAgIGlmICghbGF5b3V0U3RhdGUuaW5RdWlya3NNb2RlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY2LDggKzY1LDkgQEAgYm9vbCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3QKICAgICByZXR1cm4gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0
bygpOwogfQogCi1IZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtz
OjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCwgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbikKK0hlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hl
aWdodChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBIZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luKQogeworICAgIEFTU0VSVChsYXlvdXRC
b3guaXNJbkZsb3coKSk7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkgfHwg
bGF5b3V0Qm94LmlzQm9keUJveCgpKTsKIAogICAgIGF1dG8mIGRvY3VtZW50Qm94ID0gbGF5b3V0
Qm94LmlzRG9jdW1lbnRCb3goKSA/IGxheW91dEJveCA6ICpsYXlvdXRCb3gucGFyZW50KCk7CkBA
IC04NywxMSArODcsMTIgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXQKICAgICAgICAgLy8gSGVy
ZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94OgogICAgICAgICAvLyBTdHJldGNoIHRo
ZSBib2R5IHVzaW5nIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sncyBoZWlnaHQgYW5kIHNo
cmluayBpdCB3aXRoIGRvY3VtZW50IGJveCdzIG1hcmdpbi9ib3JkZXIvcGFkZGluZy4KICAgICAg
ICAgLy8gVGhpcyBsb29rcyBleHRyZW1lbHkgb2RkIHdoZW4gaHRtbCBoYXMgbm9uLWF1dG8gaGVp
Z2h0LgotICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmVzdGltYXRlZE1h
cmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpICsgR2VvbWV0cnk6OmVzdGltYXRl
ZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7Ci0gICAgICAgIHN0cmVjaGVk
SGVpZ2h0IC09IHZlcnRpY2FsTWFyZ2luOworICAgICAgICBhdXRvIGRvY3VtZW50Qm94VmVydGlj
YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwg
ZG9jdW1lbnRCb3gpOworICAgICAgICBzdHJlY2hlZEhlaWdodCAtPSAoZG9jdW1lbnRCb3hWZXJ0
aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSArIGRvY3VtZW50Qm94VmVydGljYWxNYXJnaW4u
YWZ0ZXIudmFsdWVPcigwKSk7CiAKLSAgICAgICAgYXV0byBub25Db2xsYXBzZWRWYWx1ZXMgPSBo
ZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luOwotICAgICAgICB0b3RhbFZlcnRpY2Fs
TWFyZ2luID0gbm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9yZSArIG5vbkNvbGxhcHNlZFZhbHVlcy5h
ZnRlcjsKKyAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4u
bm9uQ29sbGFwc2VkTWFyZ2luOworICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IE1hcmdp
bkNvbGxhcHNlOjpjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
LCBub25Db2xsYXBzZWRNYXJnaW4pOworICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2luID0gY29s
bGFwc2VkTWFyZ2luLmJlZm9yZS52YWx1ZU9yKG5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUpICsg
Y29sbGFwc2VkTWFyZ2luLmFmdGVyLnZhbHVlT3Iobm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyKTsK
ICAgICB9CiAKICAgICAvLyBTdHJldGNoIGJ1dCBuZXZlciBvdmVyc3RyZXRjaCB3aXRoIHRoZSBt
YXJnaW5zLgpAQCAtMTA5LDYgKzExMCwyMCBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJgogICAg
IHJldHVybiBsYXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKCps
YXlvdXRCb3gucGFyZW50KCkpICYmIGhhc01hcmdpbkJlZm9yZVF1aXJrVmFsdWUobGF5b3V0Qm94
KTsKIH0KIAorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9y
ZU1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCit7CisgICAgLy8gSWdub3JlIG1hcmluZyBhZnRlciB3aGVuIHRoZSBpZ25vcmVk
IG1hcmdpbiBiZWZvcmUgY29sbGFwc2VzIHRocm91Z2guCisgICAgaWYgKCFzaG91bGRJZ25vcmVN
YXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEFTU0VSVChsYXlvdXRCb3gucGFyZW50KCkpOworICAgIGF1dG8mIHBhcmVudCA9
ICpsYXlvdXRCb3gucGFyZW50KCk7CisgICAgaWYgKHBhcmVudC5maXJzdEluRmxvd09yRmxvYXRp
bmdDaGlsZCgpICE9ICZsYXlvdXRCb3ggfHwgcGFyZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0No
aWxkKCkgIT0gcGFyZW50Lmxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nU3RhdGUuaAppbmRleCBiYjk2NjkzOTBmZjlhMjg3NmZlNzE0ZGM4NTQ0YjAxZGY2ZGVhYTg0
Li5iYjQ1NmI1OTI3ZmVmZTQ1YzYzNzgzMWQ1YjI0ZjcxNzA5MmJhZDJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdTdGF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJN
YXJnaW5UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDIsNiArNDMsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkJsb2NrRm9y
bWF0dGluZ1N0YXRlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+
IGNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFy
Z2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJn
aW4gdmVydGljYWxNYXJnaW4pIHsgbV9wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4u
c2V0KCZsYXlvdXRCb3gsIHZlcnRpY2FsTWFyZ2luKTsgfQorICAgIGJvb2wgaGFzUG9zaXRpdmVB
bmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJl
dHVybiBtX3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbi5jb250YWlucygmbGF5b3V0
Qm94KTsgfQorICAgIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiBwb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmdldCgmbGF5b3V0Qm94KTsg
fQorCisgICAgdm9pZCBzZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlv
dXRCb3gpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmFkZCgmbGF5b3V0Qm94KTsgfQor
ICAgIHZvaWQgY2xlYXJIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRC
b3gpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LnJlbW92ZSgmbGF5b3V0Qm94KTsgfQor
ICAgIGJvb2wgaGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBj
b25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QuY29udGFpbnMoJmxheW91
dEJveCk7IH0KKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIFBvc2l0aXZlQW5k
TmVnYXRpdmVWZXJ0aWNhbE1hcmdpbj4gbV9wb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJn
aW47CisgICAgSGFzaFNldDxjb25zdCBCb3gqPiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3Q7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBjNzFkMzkyNjBhNzU1ODhh
YTBlZThmMjYxZjI0YWUyMTk0ZWU4N2I0Li5mOWFiMTI3ZjlhYTQ4YzIwZDBhN2Y0ZmExZTdiNGM0
NDVhZDQ0YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTcwLDEyICs3MCwxMSBA
QCBzdGF0aWMgYm9vbCBoYXNQYWRkaW5nQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAg
cmV0dXJuIGhhc1BhZGRpbmcobGF5b3V0Qm94LnN0eWxlKCkucGFkZGluZ0FmdGVyKCkpOwogfQog
Ci1zdGF0aWMgYm9vbCBoYXNDbGVhcmFuY2UoY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMg
Ym9vbCBoYXNDbGVhcmFuY2UoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKIHsKICAgICBpZiAoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBGSVhNRQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmhh
c0NsZWFyYW5jZSgpOwogfQogCiBzdGF0aWMgYm9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC04Nyw5MyArODYsNiBAQCBzdGF0aWMg
Ym9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBsYXlvdXRC
b3gpCiAgICAgcmV0dXJuIGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKTsKIH0KIAotc3RhdGljIExheW91dFVuaXQgbWFyZ2luVmFsdWUoTGF5b3V0VW5pdCBjdXJy
ZW50TWFyZ2luVmFsdWUsIExheW91dFVuaXQgY2FuZGlkYXRlTWFyZ2luVmFsdWUpCi17Ci0gICAg
aWYgKCFjYW5kaWRhdGVNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJnaW5W
YWx1ZTsKLSAgICBpZiAoIWN1cnJlbnRNYXJnaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGNhbmRp
ZGF0ZU1hcmdpblZhbHVlOwotICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgcG9zaXRpdmUuCi0gICAg
aWYgKGNhbmRpZGF0ZU1hcmdpblZhbHVlID4gMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPiAwKQot
ICAgICAgICByZXR1cm4gc3RkOjptYXgoY2FuZGlkYXRlTWFyZ2luVmFsdWUsIGN1cnJlbnRNYXJn
aW5WYWx1ZSk7Ci0gICAgLy8gQm90aCBtYXJnaW5zIGFyZSBuZWdhdGl2ZS4KLSAgICBpZiAoY2Fu
ZGlkYXRlTWFyZ2luVmFsdWUgPCAwICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA8IDApCi0gICAgICAg
IHJldHVybiAwIC0gc3RkOjptYXgoc3RkOjphYnMoY2FuZGlkYXRlTWFyZ2luVmFsdWUudG9GbG9h
dCgpKSwgc3RkOjphYnMoY3VycmVudE1hcmdpblZhbHVlLnRvRmxvYXQoKSkpOwotICAgIC8vIE9u
ZSBvZiB0aGUgbWFyZ2lucyBpcyBuZWdhdGl2ZS4KLSAgICByZXR1cm4gY3VycmVudE1hcmdpblZh
bHVlICsgY2FuZGlkYXRlTWFyZ2luVmFsdWU7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
Ci17Ci0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0KLSAgICByZXR1
cm4gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJv
eCkuYmVmb3JlLnZhbHVlT3IoMCk7Ci19Ci0KLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAg
ICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIHJldHVybiBHZW9t
ZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5hZnRl
ci52YWx1ZU9yKDApOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIE5vbiBjb2xsYXBzZWQgbWFyZ2luIHRv
cCBpbmNsdWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93IGZpcnN0IGNoaWxkLgotICAg
IHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5BZnRlcihjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIEFT
U0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwotCi0gICAgLy8gTm9uIGNvbGxhcHNl
ZCBtYXJnaW4gYm90dG9tIGluY2x1ZGVzIGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgbGFz
dCBjaGlsZC4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJn
aW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luQWZ0ZXJGcm9t
TGFzdENoaWxkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQmVmb3Jl
RnJvbUZpcnN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gm
IGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsK
LQotICAgIC8vIENoZWNrIGlmIHRoZSBmaXJzdCBjaGlsZCBjb2xsYXBzZXMgaXRzIG1hcmdpbiB0
b3AuCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4gd2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2Nr
IGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFuPmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAg
aWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJv
eC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgLy8gRklYTUU6IFRha2UgY29sbGFwc2VkIHRocm91Z2ggbWFyZ2luIGludG8g
YWNjb3VudC4KLSAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFtYXJnaW5CZWZvcmVD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0No
aWxkKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2lu
IHRvcCByZWN1cnNpdmVseS4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xs
YXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBz
ZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGls
ZCkpOwotfQotCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxh
cHNlOjpjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGNoaWxk
IHByb3BhZ2F0ZXMgaXRzIG1hcmdpbiBib3R0b20uCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxh
eW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGls
ZCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtYXJnaW4g
d2l0aCBhIGJveCBmcm9tIGEgbm9uLWJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCA8ZGl2PjxzcGFu
PmZvb2Jhcjwvc3Bhbj48L2Rpdj4uCi0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1h
dHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IENoZWNrIGZv
ciBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4uCi0gICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0g
KmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKLSAgICBp
ZiAoIW1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFmdGVyKGxheW91dFN0YXRl
LCBsYXN0SW5GbG93Q2hpbGQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIENvbGxlY3Qg
Y29sbGFwc2VkIG1hcmdpbiBib3R0b20gcmVjdXJzaXZlbHkuCi0gICAgcmV0dXJuIG1hcmdpblZh
bHVlKGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxhc3RJbkZs
b3dDaGlsZCksIGNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwg
bGFzdEluRmxvd0NoaWxkKSk7Ci19Ci0KIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFy
Z2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewog
ICAgIC8vIDEuIFRoaXMgaXMgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCBhbmQgaXRzIG1hcmdpbnMg
Y29sbGFwc2UgdGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMgd2l0aCBwYXJl
bnQncyBtYXJnaW4gYWZ0ZXIgb3IKQEAgLTE4NSw3ICs5Nyw3IEBAIGJvb2wgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJl
bnRNYXJnCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChjdXJyZW50Qm94
ID09IGxhc3RJbkZsb3dDaGlsZCkKICAgICAgICAgICAgIHJldHVybiBtYXJnaW5BZnRlckNvbGxh
cHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmN1cnJlbnRCb3gpOyAKLSAg
ICAgICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhOZXh0U2libGluZygqY3VycmVudEJv
eCkpCisgICAgICAgIGlmICghbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoTmV4dFNpYmxpbmdNYXJn
aW5CZWZvcmUobGF5b3V0U3RhdGUsICpjdXJyZW50Qm94KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjksMTAgKzE0MSw4
NiBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyAuLi5hbmQgdGhlIGNoaWxkIGhhcyBubyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0NsZWFy
YW5jZShsYXlvdXRCb3gpKQorICAgIGlmIChoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxheW91
dEJveCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KSkKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2li
bGluZ01hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
CisKKyAgICBpZiAoIWxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gKmxheW91
dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKKworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBh
IGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAo
bGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgcHJldmlvdXNJbkZsb3dTaWJsaW5n
LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4K
KyAgICBpZiAoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94
LnN0eWxlKCkudG9wKCkuaXNBdXRvKCkpCisgICAgICAgIHx8IChwcmV2aW91c0luRmxvd1NpYmxp
bmcuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIXByZXZpb3VzSW5GbG93U2libGluZy5zdHls
ZSgpLmJvdHRvbSgpLmlzQXV0bygpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
TWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChs
YXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpIHx8IHByZXZpb3VzSW5GbG93U2libGluZy5pc0lu
bGluZUJsb2NrQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBib3R0
b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29sbGFw
c2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YKKyAgICAvLyBpdHMgbmV4dCBpbi1mbG93IGJsb2Nr
LWxldmVsIHNpYmxpbmcsIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5jZS4KKyAgICBp
ZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93
Q2hpbGRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94
KCkpOworICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2ggbmV3IGJsb2Nr
IGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIgaW4tZmxvdyBj
aGlsZHJlbi4KKyAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGxheW91
dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVu
dHMgdGhhdCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNv
bGxhcHNlIHdpdGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbi4KKyAgICBpZiAoZXN0YWJsaXNoZXNC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIFRoZSB0b3AgbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2sgZWxlbWVudCBjb2xs
YXBzZXMgd2l0aCBpdHMgZmlyc3QgaW4tZmxvdyBibG9jay1sZXZlbAorICAgIC8vIGNoaWxkJ3Mg
dG9wIG1hcmdpbiBpZiB0aGUgZWxlbWVudCBoYXMgbm8gdG9wIGJvcmRlci4uLgorICAgIGlmICho
YXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gLi4ubm8gdG9wIHBhZGRpbmcKKyAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRCb3gp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0
Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAq
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hpbGQoKTsKKyAgICBp
ZiAoIWZpcnN0SW5GbG93Q2hpbGQuaXNCbG9ja0xldmVsQm94KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIC4uLmFuZCB0aGUgY2hpbGQgaGFzIG5vIGNsZWFyYW5jZS4KKyAgICBp
ZiAoaGFzQ2xlYXJhbmNlKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5k
IGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxk
LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4K
KyAgICBpZiAoZmlyc3RJbkZsb3dDaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBpbmxpbmUtYmxvY2sgYm94ZXMg
ZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChmaXJzdEluRmxvd0NoaWxkLmlzSW5saW5lQmxvY2tC
b3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDgs
NyArMjM2LDcgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmcKICAgICBmb3IgKGF1dG8qIHByZXZp
b3VzU2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsgcHJldmlvdXNT
aWJsaW5nOyBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmctPnByZXZpb3VzSW5GbG93
U2libGluZygpKSB7CiAgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRT
dGF0ZSwgKnByZXZpb3VzU2libGluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmIChoYXNDbGVhcmFuY2UoKnByZXZpb3VzU2libGluZykpCisgICAgICAgIGlmIChoYXND
bGVhcmFuY2UobGF5b3V0U3RhdGUsICpwcmV2aW91c1NpYmxpbmcpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NSw3ICsyNTMsNyBAQCBi
b29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhQYXJlbnRNYXJnaQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBpZiAoY3VycmVudEJveCA9PSBmaXJzdEluRmxvd0NoaWxkKQogICAgICAgICAgICAgcmV0dXJu
IG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUs
ICpjdXJyZW50Qm94KTsgCi0gICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBy
ZXZpb3VzU2libGluZygqY3VycmVudEJveCkpCisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29s
bGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqY3VycmVu
dEJveCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMzI0LDQ0ICszMTIsNjYgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2kK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZyhjb25z
dCBCb3gmIGxheW91dEJveCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29s
bGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVy
KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7
CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICBpZiAoIWxh
eW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkKKyAgICAvLyBNYXJnaW5zIG9mIGVsZW1l
bnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzIGRvIG5vdCBj
b2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4uCisgICAgaWYgKGVzdGFibGlzaGVz
QmxvY2tGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvJiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSAqbGF5b3V0Qm94LnByZXZpb3Vz
SW5GbG93U2libGluZygpOworICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFk
b3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENv
bnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICBpZiAoIWxhc3RJbkZs
b3dDaGlsZC5pc0Jsb2NrTGV2ZWxCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBib3ggd2l0aCBhICdoZWln
aHQnIG9mICdhdXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMgbGFzdCBpbi1mbG93IGJsb2NrLWxldmVs
IGNoaWxkJ3MgYm90dG9tIG1hcmdpbiwgaWY6CisgICAgaWYgKCFsYXlvdXRCb3guc3R5bGUoKS5o
ZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGJv
eCBoYXMgbm8gYm90dG9tIHBhZGRpbmcsIGFuZAorICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKGxh
eW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIHRoZSBib3ggaGFzIG5v
IGJvdHRvbSBib3JkZXIsIGFuZAorICAgIGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdp
biBuZWl0aGVyIGNvbGxhcHNlcyB3aXRoIGEgdG9wIG1hcmdpbiB0aGF0IGhhcyBjbGVhcmFuY2Uu
Li4KKyAgICBpZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoU2libGluZ01hcmdpbkJlZm9yZVdp
dGhDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIG5vciAoaWYgdGhlIGJveCdzIG1pbi1oZWlnaHQgaXMgbm9uLXpl
cm8pIHdpdGggdGhlIGJveCdzIHRvcCBtYXJnaW4uCisgICAgYXV0byBjb21wdXRlZE1pbkhlaWdo
dCA9IGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICBpZiAoIWNvbXB1
dGVkTWluSGVpZ2h0LmlzQXV0bygpICYmIGNvbXB1dGVkTWluSGVpZ2h0LnZhbHVlKCkKKyAgICAg
ICAgJiYgKG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRT
dGF0ZSwgbGFzdEluRmxvd0NoaWxkKSB8fCBoYXNDbGVhcmFuY2UobGF5b3V0U3RhdGUsIGxhc3RJ
bkZsb3dDaGlsZCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBNYXJnaW5zIGJl
dHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJveCBkbyBub3QgY29sbGFwc2UuCi0g
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IHByZXZpb3VzSW5GbG93
U2libGluZy5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
TWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgot
ICAgIGlmICgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gu
c3R5bGUoKS50b3AoKS5pc0F1dG8oKSkKLSAgICAgICAgfHwgKHByZXZpb3VzSW5GbG93U2libGlu
Zy5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nLnN0eWxl
KCkuYm90dG9tKCkuaXNBdXRvKCkpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE1hcmdpbnMg
b2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KLSAgICBpZiAobGF5b3V0Qm94
LmlzSW5saW5lQmxvY2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9j
a0JveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGUgYm90dG9tIG1hcmdp
biBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRo
IHRoZSB0b3AgbWFyZ2luIG9mCi0gICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBz
aWJsaW5nLCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgaWYgKGhhc0Ns
ZWFyYW5jZShsYXlvdXRCb3gpKQorICAgIGlmIChsYXN0SW5GbG93Q2hpbGQuaXNJbmxpbmVCbG9j
a0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoTmV4dFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhOZXh0U2libGluZ01hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xl
dmVsQm94KCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1hcmdpbkJlZm9yZUNvbGxhcHNlc1dp
dGhQcmV2aW91c1NpYmxpbmcoKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKTsKKyAgICBy
ZXR1cm4gbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVy
KGxheW91dFN0YXRlLCAqbGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpOwogfQogCiBib29s
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCkBAIC0zODcsNzcgKzM5NywyMzQgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBMYXlvdXQKICAgICBp
ZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewot
ICAgICAgICBpZiAoZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5l
c3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRCb3gpKS5pbmxpbmVSdW5zKCkuaXNFbXB0
eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZv
ciAoYXV0byogaW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmly
c3RJbkZsb3dDaGlsZCgpOyBpbmZsb3dDaGlsZDsgaW5mbG93Q2hpbGQgPSBpbmZsb3dDaGlsZC0+
bmV4dEluRmxvd1NpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGxheW91dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICghZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxv
d0NoaWxkKCkpCisgICAgICAgIHJldHVybiAhZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KGxheW91dEJveCk7CisKKyAgICBpZiAoUXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcobGF5b3V0
U3RhdGUsIGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChsYXlv
dXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChsYXlv
dXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAg
ICAvLyBJZiB3ZSBnZXQgaGVyZSB0aHJvdWdoIG1hcmdpbiBlc3RpbWF0aW9uLCB3ZSBkb24ndCBu
ZWNlc3NhcmlseSBoYXZlIGFuIGFjdHVhbCBzdGF0ZSBmb3IgdGhpcyBsYXlvdXQgYm94IHNpbmNl
CisgICAgICAgICAgICAvLyB3ZSBoYXZlbid0IHN0YXJ0ZWQgbGF5aW5nIGl0IG91dCB5ZXQuCisg
ICAgICAgICAgICBpZiAoIWxheW91dFN0YXRlLmhhc0Zvcm1hdHRpbmdTdGF0ZShsYXlvdXRCb3gp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0
dGluZ1N0YXRlKGxheW91dEJveCkpLmlubGluZVJ1bnMoKS5pc0VtcHR5KCk7CiAgICAgICAgIH0K
KworICAgICAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGxheW91dEJv
eCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgZm9yIChhdXRvKiBp
bmZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0No
aWxkKCk7IGluZmxvd0NoaWxkOyBpbmZsb3dDaGlsZCA9IGluZmxvd0NoaWxkLT5uZXh0SW5GbG93
U2libGluZygpKSB7CisgICAgICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKmluZmxvd0NoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGxheW91dFN0YXRlLCAqaW5mbG93Q2hpbGQpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTGF5
b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVm
b3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
CitzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMgY29tcHV0
ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1h
cmdpbjo6VmFsdWVzIGEsIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVz
IGIpCiB7Ci0gICAgaWYgKGxheW91dEJveC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBjb21wdXRl
ZFZhbHVlczsKKyAgICBpZiAoYS5wb3NpdGl2ZSAmJiBiLnBvc2l0aXZlKQorICAgICAgICBjb21w
dXRlZFZhbHVlcy5wb3NpdGl2ZSA9IHN0ZDo6bWF4KCphLnBvc2l0aXZlLCAqYi5wb3NpdGl2ZSk7
CisgICAgZWxzZQorICAgICAgICBjb21wdXRlZFZhbHVlcy5wb3NpdGl2ZSA9IGEucG9zaXRpdmUg
PyBhLnBvc2l0aXZlIDogYi5wb3NpdGl2ZTsKKworICAgIGlmIChhLm5lZ2F0aXZlICYmIGIubmVn
YXRpdmUpCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm5lZ2F0aXZlID0gc3RkOjptaW4oKmEubmVn
YXRpdmUsICpiLm5lZ2F0aXZlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm5l
Z2F0aXZlID0gYS5uZWdhdGl2ZSA/IGEubmVnYXRpdmUgOiBiLm5lZ2F0aXZlOworCisgICAgcmV0
dXJuIGNvbXB1dGVkVmFsdWVzOworfQogCi0gICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2
ZWxCb3goKSk7CitzdGF0aWMgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1
ZXMgY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKFBvc2l0aXZlQW5kTmVnYXRpdmVW
ZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIGEsIE9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblZhbHVl
KQoreworICAgIGlmICghbWFyZ2luVmFsdWUgfHwgIW1hcmdpblZhbHVlLnZhbHVlKCkpCisgICAg
ICAgIHJldHVybiBhOworICAgIGlmICgqbWFyZ2luVmFsdWUgPiAwKQorICAgICAgICByZXR1cm4g
Y29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKGEsIHsgbWFyZ2luVmFsdWUsIHsgfSB9
KTsKKyAgICBpZiAoKm1hcmdpblZhbHVlIDwgMCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkUG9z
aXRpdmVBbmROZWdhdGl2ZU1hcmdpbihhLCB7IHsgfSwgbWFyZ2luVmFsdWUgfSk7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RhdGljIE9wdGlvbmFs
PExheW91dFVuaXQ+IG1hcmdpblZhbHVlKFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdp
bjo6VmFsdWVzIG1hcmdpblZhbHVlcykKK3sKKyAgICAvLyBXaGVuIHR3byBvciBtb3JlIG1hcmdp
bnMgY29sbGFwc2UsIHRoZSByZXN1bHRpbmcgbWFyZ2luIHdpZHRoIGlzIHRoZSBtYXhpbXVtIG9m
IHRoZSBjb2xsYXBzaW5nIG1hcmdpbnMnIHdpZHRocy4KKyAgICAvLyBJbiB0aGUgY2FzZSBvZiBu
ZWdhdGl2ZSBtYXJnaW5zLCB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRo
ZSBuZWdhdGl2ZSBhZGpvaW5pbmcgbWFyZ2lucyBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBtYXhpbXVt
CisgICAgLy8gb2YgdGhlIHBvc2l0aXZlIGFkam9pbmluZyBtYXJnaW5zLiBJZiB0aGVyZSBhcmUg
bm8gcG9zaXRpdmUgbWFyZ2lucywgdGhlIG1heGltdW0gb2YgdGhlIGFic29sdXRlIHZhbHVlcyBv
ZiB0aGUgYWRqb2luaW5nIG1hcmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB6ZXJvLgorICAgIGlmICgh
bWFyZ2luVmFsdWVzLm5lZ2F0aXZlKQorICAgICAgICByZXR1cm4gbWFyZ2luVmFsdWVzLnBvc2l0
aXZlOworCisgICAgaWYgKCFtYXJnaW5WYWx1ZXMucG9zaXRpdmUpCisgICAgICAgIHJldHVybiBt
YXJnaW5WYWx1ZXMubmVnYXRpdmU7CiAKLSAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdN
YXJnaW5CZWZvcmVBbmRBZnRlcigpIGludG8gYWNjb3VudC4KLSAgICBpZiAobWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhNRTogRmluZCBvdXQgdGhlIGxvZ2ljIGJl
aGluZCB0aGlzLgotICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3Vs
ZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBpZiAoIW1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxp
bmcobGF5b3V0Qm94KSkgewotICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2gobGF5
b3V0U3RhdGUsIGxheW91dEJveCkpCi0gICAgICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICAvLyBDb21wdXRlIHRo
ZSBjb2xsYXBzZWQgdGhyb3VnaCB2YWx1ZS4KLSAgICAgICAgYXV0byBtYXJnaW5CZWZvcmUgPSBu
b25Db2xsYXBzZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAg
IGF1dG8gbWFyZ2luQWZ0ZXIgPSBub25Db2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsgCi0gICAgICAgIHJldHVybiBtYXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIG1h
cmdpbkFmdGVyKTsKKyAgICByZXR1cm4gKm1hcmdpblZhbHVlcy5wb3NpdGl2ZSArICptYXJnaW5W
YWx1ZXMubmVnYXRpdmU7Cit9CisKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Q29sbGFwc2U6OnVwZGF0ZUNvbGxhcHNlZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdp
biYgbmV4dFNpYmxpbmdWZXJ0aWNhbE1hcmdpbikKK3sKKyAgICAvLyAxLiBHZXQgdGhlIG1hcmdp
biBiZWZvcmUgdmFsdWUgZnJvbSB0aGUgbmV4dCBpbi1mbG93IHNpYmxpbmcuIFRoaXMgaXMgdGhl
IHNhbWUgYXMgdGhpcyBib3gncyBtYXJnaW4gYWZ0ZXIgdmFsdWUgbm93IHNpbmNlIHRoZXkgYXJl
IGNvbGxhcHNlZC4KKyAgICAvLyAyLiBVcGRhdGUgdGhlIGNvbGxhcHNlZCBtYXJnaW4gYWZ0ZXIg
dmFsdWUgYXMgd2VsbCBhcyB0aGUgcG9zaXRpdmUvbmVnYXRpdmUgY2FjaGUuCisgICAgLy8gMy4g
Q2hlY2sgaWYgdGhlIGJveCdzIG1hcmdpbnMgY29sbGFwc2UgdGhyb3VnaC4KKyAgICAvLyA0LiBJ
ZiBzbywgdXBkYXRlIHRoZSBjb2xsYXBzZWQgbWFyZ2luIGJlZm9yZSB2YWx1ZSBhcyB3ZWxsIGFz
IHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICAvLyA1LiBJbiBjYXNlIG9mIGNvbGxh
cHNlZCB0aHJvdWdoIG1hcmdpbnMgY2hlY2sgaWYgdGhlIGJlZm9yZSBtYXJnaW4gY29sbGFwZXMg
d2l0aCB0aGUgcHJldmlvdXMgaW5mbG93IHNpYmxpbmcncyBhZnRlciBtYXJnaW4uCisgICAgLy8g
Ni4gSWYgc28sIGp1bXAgdG8gIzIuCisgICAgaWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhO
ZXh0U2libGluZ01hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxh
eUJveC52ZXJ0aWNhbE1hcmdpbigpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW5BZnRlciA9IG5l
eHRTaWJsaW5nVmVydGljYWxNYXJnaW4uYmVmb3JlKCk7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gdmVydGljYWxNYXJnaW5CZWZvcmU7CisKKyAgICBhdXRvIG1hcmdpbnNDb2xsYXBzZVRocm91
Z2ggPSBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKKyAgICBpZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaCkKKyAgICAgICAgdmVy
dGljYWxNYXJnaW5CZWZvcmUgPSB2ZXJ0aWNhbE1hcmdpbkFmdGVyOyAKKyAgICBlbHNlIGlmICh2
ZXJ0aWNhbE1hcmdpbi5oYXNDb2xsYXBzZWRWYWx1ZXMoKSkKKyAgICAgICAgdmVydGljYWxNYXJn
aW5CZWZvcmUgPSB2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5iZWZvcmU7CisKKyAg
ICAvLyBVcGRhdGUgdmVydGljYWwgbWFyZ2luIHZhbHVlcy4KKyAgICB2ZXJ0aWNhbE1hcmdpbi5z
ZXRDb2xsYXBzZWRWYWx1ZXMoeyB2ZXJ0aWNhbE1hcmdpbkJlZm9yZSwgdmVydGljYWxNYXJnaW5B
ZnRlciB9KTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTWFyZ2lu
KTsKKworICAgIC8vIFVwZGF0ZSBwb3NpdGl2ZS9uZWdhdGl2ZSBjYWNoZS4KKyAgICBhdXRvJiBi
bG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlv
dXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgYXV0byBwb3Np
dGl2ZU5lZ2F0aXZlTWFyZ2luID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUucG9zaXRpdmVBbmROZWdh
dGl2ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJveCk7CisgICAgYXV0byBuZXh0U2libGluZ1Bvc2l0
aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUgPSBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5wb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4oKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpKS5i
ZWZvcmU7CisKKyAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luLmFmdGVyID0gY29tcHV0ZWRQb3Np
dGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKG5leHRTaWJsaW5nUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJl
Zm9yZSwgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5hZnRlcik7CisgICAgaWYgKG1hcmdpbnNDb2xs
YXBzZVRocm91Z2gpIHsKKyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmUgPSBj
b21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4ocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5i
ZWZvcmUsIHBvc2l0aXZlTmVnYXRpdmVNYXJnaW4uYWZ0ZXIpOworICAgICAgICBwb3NpdGl2ZU5l
Z2F0aXZlTWFyZ2luLmFmdGVyID0gcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbi5iZWZvcmU7IAogICAg
IH0KKyAgICBibG9ja0Zvcm1hdHRpbmdTdGF0ZS5zZXRQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGlj
YWxNYXJnaW4obGF5b3V0Qm94LCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luKTsKKworICAgIGlmICgh
bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCB8fCAhbWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgKmxh
eW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSwgdmVydGljYWxNYXJnaW4pOworfQorCitQ
b3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBNYXJnaW5UeXBlIG1h
cmdpblR5cGUpCit7CisgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxC
bG9ja0Zvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxh
eW91dEJveCkpOworICAgIGlmIChibG9ja0Zvcm1hdHRpbmdTdGF0ZS5oYXNQb3NpdGl2ZUFuZE5l
Z2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KSkgeworICAgICAgICBhdXRvIHBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiA9IGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZl
QW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpOworICAgICAgICByZXR1cm4gbWFy
Z2luVHlwZSA9PSBNYXJnaW5UeXBlOjpCZWZvcmUgPyBwb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGlj
YWxNYXJnaW4uYmVmb3JlIDogcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luLmFmdGVy
OyAKKyAgICB9CisgICAgLy8gVGhpcyBpcyB0aGUgZXN0aW1hdGUgcGF0aC4gV2UgZG9uJ3QgeWV0
IGhhdmUgcG9zaXRpdmUvbmVnYXRpdmUgbWFyZ2luIGNvbXB1dGVkLgorICAgIGF1dG8gY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVXNlZFZl
cnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
LmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3Io
MCkgfTsgCisKKyAgICBpZiAobWFyZ2luVHlwZSA9PSBNYXJnaW5UeXBlOjpCZWZvcmUpCisgICAg
ICAgIHJldHVybiBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gsIG5vbkNvbGxhcHNlZE1hcmdpbik7CisgICAgcmV0dXJuIHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4pOwor
fQogCi0gICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZlbCBl
bGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBp
bi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsCi0gICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBo
YXMgY2xlYXJhbmNlLgotICAgIGF1dG8qIHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJv
eC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIXByZXZpb3VzSW5GbG93U2libGlu
ZykKLSAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKK1Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzJiBub25D
b2xsYXBzZWRWYWx1ZXMpCit7CisgICAgYXV0byBmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2luQmVm
b3JlID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luOjpWYWx1ZXMg
eworICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIGF1dG8qIGZpcnN0SW5GbG93Q2hpbGQgPSBkb3duY2FzdDxDb250
YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOworICAgICAgICBpZiAoIWZpcnN0
SW5GbG93Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAoIW1hcmdp
bkJlZm9yZUNvbGxhcHNlc1dpdGhGaXJzdEluRmxvd0NoaWxkTWFyZ2luQmVmb3JlKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1
aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCAqZmlyc3RJbkZsb3dD
aGlsZCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gcG9zaXRpdmVO
ZWdhdGl2ZVZhbHVlcyhsYXlvdXRTdGF0ZSwgKmZpcnN0SW5GbG93Q2hpbGQsIE1hcmdpblR5cGU6
OkJlZm9yZSk7CisgICAgfTsKKworICAgIGF1dG8gcHJldmlvdVNpYmxpbmdDb2xsYXBzZWRNYXJn
aW5BZnRlciA9IFsmXSgpIC0+IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFs
dWVzIHsKKyAgICAgICAgYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnBy
ZXZpb3VzSW5GbG93U2libGluZygpOworICAgICAgICBpZiAoIXByZXZpb3VzSW5GbG93U2libGlu
ZykKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghbWFyZ2luQmVmb3JlQ29s
bGFwc2VzV2l0aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKFF1aXJrczo6c2hvdWxk
SWdub3JlTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcpKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlTmVnYXRpdmVW
YWx1ZXMobGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcsIE1hcmdpblR5cGU6OkFm
dGVyKTsKKyAgICB9OworCisgICAgLy8gMS4gR2F0aGVyIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBt
YXJnaW4gdmFsdWVzIGZyb20gZmlyc3QgY2hpbGQgaWYgbWFyZ2lucyBhcmUgYWRqb2luaW5nLgor
ICAgIC8vIDIuIEdhdGhlciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlcyBmcm9t
IHByZXZpb3VzIGluZmxvdyBzaWJsaW5nIGlmIG1hcmdpbnMgYXJlIGFkam9pbmluZy4KKyAgICAv
LyAzLiBDb21wdXRlIG1pbi9tYXggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNvbGxhcHNlZCBtYXJn
aW4gdmFsdWVzIHVzaW5nIG5vbi1jb2xscGFzZWQgY29tcHV0ZWQgbWFyZ2luIGJlZm9yZS4KKyAg
ICBhdXRvIGNvbGxhcHNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2
ZU1hcmdpbihmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCksIHByZXZpb3VTaWJsaW5n
Q29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSk7CisgICAgcmV0dXJuIGNvbXB1dGVkUG9zaXRpdmVBbmRO
ZWdhdGl2ZU1hcmdpbihjb2xsYXBzZWRNYXJnaW5CZWZvcmUsIG5vbkNvbGxhcHNlZFZhbHVlcy5i
ZWZvcmUpOworfQogCi0gICAgYXV0byBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlciA9IG5vbkNv
bGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsK
LSAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KTsKLSAgICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2luQmVmb3JlLCBw
cmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcik7CitQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxN
YXJnaW46OlZhbHVlcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6cG9z
aXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFw
c2VkVmFsdWVzJiBub25Db2xsYXBzZWRWYWx1ZXMpCit7CisgICAgYXV0byBsYXN0Q2hpbGRDb2xs
YXBzZWRNYXJnaW5BZnRlciA9IFsmXSgpIC0+IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1h
cmdpbjo6VmFsdWVzIHsKKyAgICAgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBk
b3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7CisgICAgICAg
IGlmICghbGFzdEluRmxvd0NoaWxkKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
aWYgKCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5BZnRlcihs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IGlmIChRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqbGFzdElu
Rmxvd0NoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBwb3Np
dGl2ZU5lZ2F0aXZlVmFsdWVzKGxheW91dFN0YXRlLCAqbGFzdEluRmxvd0NoaWxkLCBNYXJnaW5U
eXBlOjpBZnRlcik7CisgICAgfTsKKworICAgIC8vIFdlIGRvbid0IGtub3cgeWV0IHRoZSBtYXJn
aW4gYmVmb3JlIHZhbHVlIG9mIHRoZSBuZXh0IHNpYmxpbmcuIExldCdzIGp1c3QgcHJldGVuZCBp
dCBkb2VzIG5vdCBoYXZlIG9uZSBhbmQgCisgICAgLy8gdXBkYXRlIGl0IGxhdGVyIHdoZW4gd2Ug
Y29tcHV0ZSB0aGUgbmV4dCBzaWJsaW5nJ3MgbWFyZ2luIGJlZm9yZS4gU2VlIHVwZGF0ZUNvbGxh
cHNlZE1hcmdpbkFmdGVyLgorICAgIHJldHVybiBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVN
YXJnaW4obGFzdENoaWxkQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSwgbm9uQ29sbGFwc2VkVmFsdWVz
LmFmdGVyKTsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25z
dCBCb3gmIGxheW91dEJveCkKK0VzdGltYXRlZE1hcmdpbkJlZm9yZSBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6ZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgaWYgKGxh
eW91dEJveC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOworICAgIC8v
IENhbid0IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChh
bmQgd2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KKyAgICBBU1NF
UlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOworICAgIEFTU0VSVCghbGF5b3V0Qm94LnJlcGxhY2Vk
KCkpOworICAgIC8vIENhbid0IGNyb3NzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBib3VuZGFy
eS4KKyAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSk7CisgICAgCisgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6
OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0
byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZh
bHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVk
VmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OyAKIAotICAgIC8vIFRPRE86IHRha2Ug
X2hhc0Fkam9pbmluZ01hcmdpbkJlZm9yZUFuZEJvdHRvbSgpIGludG8gYWNjb3VudC4KLSAgICBp
ZiAobWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghbWFyZ2luc0NvbGxhcHNl
VGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIHsgbWFyZ2lu
VmFsdWUocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
LCBub25Db2xsYXBzZWRNYXJnaW4pKS52YWx1ZU9yKDApIH07CisgICAgCisgICAgcmV0dXJuIHsg
bWFyZ2luVmFsdWUoY29tcHV0ZWRQb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luKHBvc2l0aXZlTmVn
YXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCwgbm9uQ29sbGFwc2VkTWFy
Z2luKSwKKyAgICAgICAgcG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gsIG5vbkNvbGxhcHNlZE1hcmdpbikpKS52YWx1ZU9yKDApIH07Cit9CiAKLSAgICBp
ZiAobWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKLSAgICAg
ICAgcmV0dXJuIDA7CitVc2VkVmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkVmVydGljYWxWYWx1ZXMo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMmIG5vbkNvbGxhcHNlZFZh
bHVlcykKK3sKKyAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICAvLyBGbG9hdHMgYW5kIG91dCBvZiBmbG93IHBvc2l0aW9uZWQgYm94ZXMg
ZG8gbm90IGNvbGxhcHNlIHRoZWlyIG1hcmdpbnMuCi0gICAgaWYgKCFtYXJnaW5BZnRlckNvbGxh
cHNlc1dpdGhOZXh0U2libGluZyhsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gbm9uQ29sbGFw
c2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgQVNTRVJUKGxheW91
dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisgICAgLy8gMS4gR2V0IG1pbi9tYXggbWFyZ2luIHRv
cCB2YWx1ZXMgZnJvbSB0aGUgZmlyc3QgaW4tZmxvdyBjaGlsZCBpZiB3ZSBhcmUgY29sbGFwc2lu
ZyBtYXJnaW4gdG9wIHdpdGggaXQuCisgICAgLy8gMi4gR2V0IG1pbi9tYXggbWFyZ2luIHRvcCB2
YWx1ZXMgZnJvbSB0aGUgcHJldmlvdXMgaW4tZmxvdyBzaWJsaW5nLCBpZiB3ZSBhcmUgY29sbGFw
c2luZyBtYXJnaW4gdG9wIHdpdGggaXQuCisgICAgLy8gMy4gR2V0IHRoaXMgbGF5b3V0IGJveCdz
IGNvbXB1dGVkIG1hcmdpbiB0b3AgdmFsdWUuCisgICAgLy8gNC4gVXBkYXRlIHRoZSBtaW4vbWF4
IHZhbHVlIGFuZCBjb21wdXRlIHRoZSBmaW5hbCBtYXJnaW4uIAorICAgIGF1dG8gcG9zaXRpdmVO
ZWdhdGl2ZU1hcmdpbkJlZm9yZSA9IE1hcmdpbkNvbGxhcHNlOjpwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIG5vbkNvbGxhcHNlZFZhbHVlcyk7Cisg
ICAgYXV0byBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIgPSBNYXJnaW5Db2xsYXBzZTo6cG9z
aXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIG5vbkNvbGxh
cHNlZFZhbHVlcyk7CisKKyAgICBhdXRvIG1hcmdpbnNDb2xsYXBzZVRocm91Z2ggPSBNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsg
CisgICAgaWYgKG1hcmdpbnNDb2xsYXBzZVRocm91Z2gpIHsKKyAgICAgICAgcG9zaXRpdmVOZWdh
dGl2ZU1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihwb3Np
dGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlLCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIpOwor
ICAgICAgICBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQWZ0ZXIgPSBwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQmVmb3JlOyAgICAgICAgIAorICAgIH0KIAotICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9m
IGFuIGluLWZsb3cgYmxvY2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29sbGFwc2VzIHdpdGggdGhl
IHRvcCBtYXJnaW4gb2YgaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLAotICAg
IC8vIHVubGVzcyB0aGF0IHNpYmxpbmcgaGFzIGNsZWFyYW5jZS4KLSAgICBpZiAobGF5b3V0Qm94
Lm5leHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBub25D
b2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRvJiBi
bG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihsYXlv
dXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgYmxvY2tGb3Jt
YXR0aW5nU3RhdGUuc2V0UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGxheW91dEJv
eCwgeyBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlLCBwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2lu
QWZ0ZXIgfSk7CisKKyAgICByZXR1cm4geyBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQmVmb3JlKSwgbWFyZ2luVmFsdWUocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyKSwgbWFy
Z2luc0NvbGxhcHNlVGhyb3VnaCB9OyAKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCmluZGV4IDMxNDBhNTVhZmFiNGNmMTJiM2Y1
NWZmYjdiMTI2MWYxZDc5NmYxYWUuLjYzMWVmNzFiOTgzYzcxNWFkN2UyZWFkNTRjMGMxNTJlYzk1
MTAyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgQm94OjpCb3goY29uc3QgQm94JiBvdGhlcikKICAg
ICAsIG1faG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hvcml6b250YWxNYXJnaW4pCiAgICAgLCBt
X3ZlcnRpY2FsTWFyZ2luKG90aGVyLm1fdmVydGljYWxNYXJnaW4pCiAgICAgLCBtX2hvcml6b250
YWxDb21wdXRlZE1hcmdpbihvdGhlci5tX2hvcml6b250YWxDb21wdXRlZE1hcmdpbikKLSAgICAs
IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKG90aGVyLm1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKQor
ICAgICwgbV9oYXNDbGVhcmFuY2Uob3RoZXIubV9oYXNDbGVhcmFuY2UpCiAgICAgLCBtX2JvcmRl
cihvdGhlci5tX2JvcmRlcikKICAgICAsIG1fcGFkZGluZyhvdGhlci5tX3BhZGRpbmcpCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRApAQCAtNzQsNiArNzQsNyBAQCBCb3g6OkJveChjb25zdCBCb3gmIG90
aGVyKQogICAgICwgbV9oYXNWYWxpZFBhZGRpbmcob3RoZXIubV9oYXNWYWxpZFBhZGRpbmcpCiAg
ICAgLCBtX2hhc1ZhbGlkQ29udGVudEhlaWdodChvdGhlci5tX2hhc1ZhbGlkQ29udGVudEhlaWdo
dCkKICAgICAsIG1faGFzVmFsaWRDb250ZW50V2lkdGgob3RoZXIubV9oYXNWYWxpZENvbnRlbnRX
aWR0aCkKKyAgICAsIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlKG90aGVyLm1fZXN0aW1hdGVkTWFy
Z2luQmVmb3JlKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlCb3guaAppbmRleCAzMWQ4NmE2YmZkMzNiYjU2ZDYzM2Y4NDQ2NWM2OWFi
NmNhNDI5ZWU0Li45YWVmYjE4ZDc3NTk3MzU4MjBmMzRiMGEwMzMzMzAyZTVkYzcyNzE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAgLTEz
NiwyMSArMTM2LDIwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApICsgY29udGVudEJv
eFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApICsgYm9yZGVyUmlnaHQoKTsgfQog
ICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBwYWRk
aW5nVG9wKCkudmFsdWVPcigwKSArIGNvbnRlbnRCb3hIZWlnaHQoKSArIHBhZGRpbmdCb3R0b20o
KS52YWx1ZU9yKDApICsgYm9yZGVyQm90dG9tKCk7IH0KICAgICBSZWN0IHJlY3QoKSBjb25zdCB7
IHJldHVybiB7IHRvcCgpLCBsZWZ0KCksIHdpZHRoKCksIGhlaWdodCgpIH07IH0KLSAgICBSZWN0
IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSAtIG1hcmdpbkJlZm9yZSgp
LCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJnaW5TdGFydCgpICsgd2lkdGgoKSArIG1hcmdp
bkVuZCgpLCBtYXJnaW5CZWZvcmUoKSArIGhlaWdodCgpICsgbWFyZ2luQWZ0ZXIoKSB9OyB9Cisg
ICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNvbnN0OwogCiAgICAgTGF5b3V0OjpVc2VkVmVydGlj
YWxNYXJnaW4gdmVydGljYWxNYXJnaW4oKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkJl
Zm9yZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IG1hcmdpbkFmdGVyKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQo
KSBjb25zdDsKKyAgICBib29sIGhhc0NsZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2xl
YXJhbmNlOyB9CiAKICAgICBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNv
bnN0OwogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdDsKICAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1hcmdpblN0YXJ0KCkgY29uc3Q7CiAgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOyB9Ci0KICAgICBMYXlvdXRVbml0IGJvcmRlclRvcCgp
IGNvbnN0OwogICAgIExheW91dFVuaXQgYm9yZGVyTGVmdCgpIGNvbnN0OwogICAgIExheW91dFVu
aXQgYm9yZGVyQm90dG9tKCkgY29uc3Q7CkBAIC0xNzUsNiArMTc0LDExIEBAIHB1YmxpYzoKICAg
ICBSZWN0IHBhZGRpbmdCb3goKSBjb25zdDsKICAgICBSZWN0IGNvbnRlbnRCb3goKSBjb25zdDsK
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdpbkJlZm9y
ZShMYXlvdXQ6OkVzdGltYXRlZE1hcmdpbkJlZm9yZSBtYXJnaW5CZWZvcmUpIHsgbV9lc3RpbWF0
ZWRNYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmU7IH0KKyAgICBPcHRpb25hbDxMYXlvdXQ6OkVz
dGltYXRlZE1hcmdpbkJlZm9yZT4gZXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1
cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHN0
cnVjdCBTdHlsZSB7CiAgICAgICAgIFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CkBAIC0xOTQs
NyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEhvcml6b250YWxNYXJnaW4oTGF5b3V0
OjpVc2VkSG9yaXpvbnRhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRWZXJ0aWNhbE1hcmdpbihMYXlv
dXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsQ29tcHV0ZWRN
YXJnaW4oTGF5b3V0OjpDb21wdXRlZEhvcml6b250YWxNYXJnaW4pOwotICAgIHZvaWQgc2V0RXN0
aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSB7IG1fZXN0aW1hdGVk
TWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CisgICAgdm9pZCBzZXRIYXNDbGVhcmFuY2Uo
KSB7IG1faGFzQ2xlYXJhbmNlID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5b3V0
OjpFZGdlcyk7CiAgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+KTsK
QEAgLTIwMyw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZU1hcmdpbigp
OwogICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IGZhbHNl
OyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSBm
YWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIHsgbV9l
c3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSB7IH07IH0KIAogICAgIHZvaWQgc2V0SGFzVmFsaWRUb3Ao
KSB7IG1faGFzVmFsaWRUb3AgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxpZExlZnQoKSB7
IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsgfQpAQCAtMjI3LDcgKzIzMiw3IEBAIHByaXZhdGU6CiAg
ICAgTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxNYXJnaW47CiAgICAg
TGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKICAgICBMYXlvdXQ6
OkNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxDb21wdXRlZE1hcmdpbjsKLSAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKKyAgICBib29s
IG1faGFzQ2xlYXJhbmNlOwogCiAgICAgTGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKICAgICBPcHRp
b25hbDxMYXlvdXQ6OkVkZ2VzPiBtX3BhZGRpbmc7CkBAIC0yNDMsNiArMjQ4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faGFzVmFsaWRQYWRkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFz
VmFsaWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRDb250ZW50
V2lkdGggeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPExheW91dDo6RXN0aW1hdGVkTWFyZ2luQmVm
b3JlPiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKICNlbmRpZgogfTsKIApAQCAtNTIwLDggKzUy
Niw4IEBAIGlubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpVc2VkVmVy
dGljYWxNYXJnaW4gbWFyZ2luKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBzZXRIYXNWYWxp
ZFZlcnRpY2FsTWFyZ2luKCk7CiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1h
cmdpbigpOworICAgIGludmFsaWRhdGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKTsKICNlbmRpZgot
ICAgIEFTU0VSVCghbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgfHwgKm1fZXN0aW1hdGVkTWFyZ2lu
QmVmb3JlID09IG1hcmdpbi5iZWZvcmUoKSk7CiAgICAgbV92ZXJ0aWNhbE1hcmdpbiA9IG1hcmdp
bjsKIH0KIApAQCAtNTQ5LDYgKzU1NSwxNCBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFBhZGRpbmco
T3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gcGFkZGluZykKICAgICBtX3BhZGRpbmcgPSBwYWRkaW5n
OwogfQogCitpbmxpbmUgQm94OjpSZWN0IEJveDo6cmVjdFdpdGhNYXJnaW4oKSBjb25zdAorewor
ICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSB0aGlzLT5tYXJnaW5BZnRlcigpOworICAgIGlmIChtX3Zl
cnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmlzQ29sbGFwc2VkVGhyb3VnaCkKKyAgICAg
ICAgbWFyZ2luQWZ0ZXIgPSAwOworICAgIHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCks
IGxlZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2lu
RW5kKCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5BZnRlciB9OworfQorCiBp
bmxpbmUgTGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gQm94Ojp2ZXJ0aWNhbE1hcmdpbigpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggNzFkMDUz
OTc4ODk4OGY3NDFmMDRhMGI3ZDYzZTYzZDY1MTg3ZmIyOC4uNGU5ZjJjYzJjMDE4NmFiNjlmYWM5
NjljMTdmZjRhYTczNjkxYWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtMTgzLDM0ICsxODMsMzIgQEAgT3B0aW9uYWw8UG9z
aXRpb24+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29u
c3QgQm94JiBsYXkKICAgICAgICAgaWYgKGNsZWFyYW5jZSA8PSAwKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKIAorICAgICAgICBkaXNwbGF5Qm94LnNldEhhc0NsZWFyYW5jZSgpOwogICAgICAg
ICAvLyBDbGVhcmFuY2UgaW5oaWJpdHMgbWFyZ2luIGNvbGxhcHNpbmcuIExldCdzIHJlc2V0IHRo
ZSByZWxldmFudCBhZGpvaW5pbmcgbWFyZ2lucy4KICAgICAgICAgaWYgKGF1dG8qIHByZXZpb3Vz
SW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAg
ICAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlz
cGxheUJveEZvckxheW91dEJveCgqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKKyAgICAgICAgICAg
IC8vIERvZXMgdGhpcyBib3ggd2l0aCBjbGVhcmFuY2UgYWN0dWFsbHkgY29sbGFwc2UgaXRzIG1h
cmdpbiBiZWZvcmUgd2l0aCB0aGUgcHJldmlvdXMgaW5mbG93IGJveCdzIG1hcmdpbiBhZnRlcj8g
CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxheUJveC52ZXJ0aWNhbE1h
cmdpbigpOworICAgICAgICAgICAgaWYgKHZlcnRpY2FsTWFyZ2luLmhhc0NvbGxhcHNlZFZhbHVl
cygpICYmIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZSkgeworICAgICAg
ICAgICAgICAgIC8vIFJlc2V0IHByZXZpb3VzIGJvdHRvbSBhZnRlciBhbmQgY3VycmVudCBtYXJn
aW4gYmVmb3JlIHRvIG5vbi1jb2xsYXBzaW5nLgorICAgICAgICAgICAgICAgIGF1dG8gcHJldmlv
dXNWZXJ0aWNhbE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC52ZXJ0aWNhbE1hcmdp
bigpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmhhc0Nv
bGxhcHNlZFZhbHVlcygpICYmIHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVz
KCkuYWZ0ZXIpOwogCi0gICAgICAgICAgICAvLyBTaW5jZSB0aGUgcHJldmlvdXMgaW5mbG93IHNp
YmxpbmcgaGFzIGFscmVhZHkgYmVlbiBsYWlkIG91dCwgaXRzIG1hcmdpbiBpcyBjb2xsYXBzZWQg
Ynkgbm93LgotICAgICAgICAgICAgQVNTRVJUKCFwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFy
Z2luQWZ0ZXIoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IGRpc3BsYXlC
b3gubWFyZ2luQmVmb3JlKCk7Ci0KLSAgICAgICAgICAgIC8vIFJlc2V0IHByZXZpb3VzIGJvdHRv
bSBhbmQgY3VycmVudCB0b3AgbWFyZ2lucyB0byBub24tY29sbGFwc2luZy4KLSAgICAgICAgICAg
IGF1dG8gcHJldmlvdXNWZXJ0aWNhbE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC52
ZXJ0aWNhbE1hcmdpbigpOwotICAgICAgICAgICAgaWYgKHByZXZpb3VzVmVydGljYWxNYXJnaW4u
Y29sbGFwc2VkVmFsdWVzKCkuYWZ0ZXIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbGxhcHNl
ZE1hcmdpbiA9ICp2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5iZWZvcmU7CiAgICAg
ICAgICAgICAgICAgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoeyBw
cmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZSwgeyB9IH0pOwog
ICAgICAgICAgICAgICAgIHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdp
bihwcmV2aW91c1ZlcnRpY2FsTWFyZ2luKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBjaGVjayBpZiBjb2xsYXBzaW5nIHRocm91Z2ggaGFzIGFueXRoaW5nIHRvIGRvIHdp
dGggdGhpcy4KLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZl
cnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAgICBpZiAodmVydGljYWxNYXJnaW4uY29sbGFwc2Vk
VmFsdWVzKCkuYmVmb3JlKSB7CisKICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRD
b2xsYXBzZWRWYWx1ZXMoeyB7IH0sIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmFm
dGVyIH0pOwogICAgICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVy
dGljYWxNYXJnaW4pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIG5vbkNvbGxh
cHNlZE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigpICsgZGlz
cGxheUJveC5tYXJnaW5CZWZvcmUoKTsKLSAgICAgICAgICAgIGF1dG8gbWFyZ2luT2Zmc2V0ID0g
bm9uQ29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOwotICAgICAgICAgICAgLy8gTW92
ZSB0aGUgYm94IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5vbi1jb2xs
YXBzZWQgbWFyZ2lucy4KLSAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJnaW5PZmZz
ZXQ7CisgICAgICAgICAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBwcmV2aW91c1Zl
cnRpY2FsTWFyZ2luLmFmdGVyKCkgKyB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIG1hcmdpbkRpZmZlcmVuY2UgPSBub25Db2xsYXBzZWRNYXJnaW4gLSBjb2xs
YXBzZWRNYXJnaW47CisgICAgICAgICAgICAgICAgLy8gTW92ZSB0aGUgYm94IHRvIHRoZSBwb3Np
dGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5vbi1jb2xsYXBzZWQgbWFyZ2lucy4KKyAgICAg
ICAgICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gbWFyZ2luRGlmZmVyZW5jZTsKIAotICAgICAg
ICAgICAgLy8gSGF2aW5nIG5lZ2F0aXZlIGNsZWFyYW5jZSBpcyBhbHNvIG5vcm1hbC4gSXQganVz
dCBtZWFucyB0aGF0IHRoZSBib3ggd2l0aCB0aGUgbm9uLWNvbGxhcHNlZCBtYXJnaW5zIGlzIG5v
dyBsb3dlciB0aGFuIGl0IG5lZWRzIHRvIGJlLgotICAgICAgICAgICAgY2xlYXJhbmNlIC09IG1h
cmdpbk9mZnNldDsKKyAgICAgICAgICAgICAgICAvLyBIYXZpbmcgbmVnYXRpdmUgY2xlYXJhbmNl
IGlzIGFsc28gbm9ybWFsLiBJdCBqdXN0IG1lYW5zIHRoYXQgdGhlIGJveCB3aXRoIHRoZSBub24t
Y29sbGFwc2VkIG1hcmdpbnMgaXMgbm93IGxvd2VyIHRoYW4gaXQgbmVlZHMgdG8gYmUuCisgICAg
ICAgICAgICAgICAgY2xlYXJhbmNlIC09IG1hcmdpbkRpZmZlcmVuY2U7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgLy8gTm93IGFkanVzdCB0aGUgYm94J3MgcG9zaXRpb24gd2l0
aCB0aGUgY2xlYXJhbmNlLgogICAgICAgICByb290UmVsYXRpdmVUb3AgKz0gY2xlYXJhbmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDBjM2Y1YzhkNzdhMWU3NTZm
MjZiYzczMjA5NTlkM2M5OWNkOWI0MGMuLmU3ZTcyYjc5YWFlODVkNDFkOWIxMGNjNTg1ZWMwMjlj
YWRmMmIyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE1Nyw3
ICsxNTcsNiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzcGxpdElubGluZVJ1bklm
TmVlZGVkKGNvbnN0IElubGluZVJ1biYgaW5saW5lUnVuLAogICAgICAgICBzcGxpdFJ1bnMuYXBw
ZW5kKHJ1bik7CiAKICAgICAgICAgY29udGVudFN0YXJ0ICs9IHJ1bldpZHRoICsgdW5jb21taXR0
ZWQtPmxhc3RJbmxpbmVJdGVtLT5ub25CcmVha2FibGVFbmQoKTsKLSAgICAgICAgcmVtYW5pbmdM
ZW5ndGggLT0gdW5jb21taXR0ZWQtPmxlbmd0aDsKIAogICAgICAgICBzdGFydFBvc2l0aW9uID0g
MDsKICAgICAgICAgdW5jb21taXR0ZWQgPSB7IH07CkBAIC0xODMsNyArMTgyLDkgQEAgdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRlZChjb25zdCBJbmxp
bmVSdW4mIGlubGluZVJ1biwKICAgICAgICAgLy8gIzEKICAgICAgICAgaWYgKGRldGFjaGluZ1J1
bGVzLmNvbnRhaW5zQWxsKHsgSW5saW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdFN0YXJ0
LCBJbmxpbmVJdGVtOjpEZXRhY2hpbmdSdWxlOjpCcmVha0F0RW5kIH0pKSB7CiAgICAgICAgICAg
ICBjb21taXQoKTsKLSAgICAgICAgICAgIHVuY29tbWl0dGVkID0gVW5jb21taXR0ZWQgeyAmaW5s
aW5lSXRlbSwgJmlubGluZUl0ZW0sIGN1cnJlbnRMZW5ndGgoKSB9OworICAgICAgICAgICAgYXV0
byBjb250ZW50TGVuZ3RoID0gY3VycmVudExlbmd0aCgpOworICAgICAgICAgICAgdW5jb21taXR0
ZWQgPSBVbmNvbW1pdHRlZCB7ICZpbmxpbmVJdGVtLCAmaW5saW5lSXRlbSwgY29udGVudExlbmd0
aCB9OworICAgICAgICAgICAgcmVtYW5pbmdMZW5ndGggLT0gY29udGVudExlbmd0aDsKICAgICAg
ICAgICAgIGNvbW1pdCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTE5
NCwxMCArMTk1LDEyIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNwbGl0SW5saW5l
UnVuSWZOZWVkZWQoY29uc3QgSW5saW5lUnVuJiBpbmxpbmVSdW4sCiAKICAgICAgICAgLy8gQWRk
IGN1cnJlbnQgaW5saW5lIGl0ZW0gdG8gdW5jb21taXR0ZWQuCiAgICAgICAgIC8vICMzIGFuZCAj
NAorICAgICAgICBhdXRvIGNvbnRlbnRMZW5ndGggPSBjdXJyZW50TGVuZ3RoKCk7CiAgICAgICAg
IGlmICghdW5jb21taXR0ZWQpCiAgICAgICAgICAgICB1bmNvbW1pdHRlZCA9IFVuY29tbWl0dGVk
IHsgJmlubGluZUl0ZW0sICZpbmxpbmVJdGVtLCAwIH07Ci0gICAgICAgIHVuY29tbWl0dGVkLT5s
ZW5ndGggKz0gY3VycmVudExlbmd0aCgpOworICAgICAgICB1bmNvbW1pdHRlZC0+bGVuZ3RoICs9
IGNvbnRlbnRMZW5ndGg7CiAgICAgICAgIHVuY29tbWl0dGVkLT5sYXN0SW5saW5lSXRlbSA9ICZp
bmxpbmVJdGVtOworICAgICAgICByZW1hbmluZ0xlbmd0aCAtPSBjb250ZW50TGVuZ3RoOwogCiAg
ICAgICAgIC8vICMzCiAgICAgICAgIGlmIChkZXRhY2hpbmdSdWxlcy5jb250YWlucyhJbmxpbmVJ
dGVtOjpEZXRhY2hpbmdSdWxlOjpCcmVha0F0RW5kKSkKQEAgLTQ0MSwxMSArNDQ0LDEyIEBAIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9yU3VidHJl
ZShjb25zdCBCb3gmIHJvb3QsIEluCiAgICAgaWYgKHJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5n
Q29udGV4dCgpICYmICZyb290ICE9ICYodGhpcy0+cm9vdCgpKSkgewogICAgICAgICBjcmVhdGVB
bmRBcHBlbmRJbmxpbmVJdGVtKCk7CiAgICAgICAgIGF1dG8mIGlubGluZVJ1biA9ICppbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaW5saW5lQ29udGVudCgpLmxhc3QoKTsKKyAgICAgICAgYXV0byBjb21w
dXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
KGxheW91dFN0YXRlKCksIHJvb3QpOworICAgICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBV
c2VkSG9yaXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1
ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKIAotICAg
ICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luKGxheW91dFN0YXRlKCksIHJvb3QpOwogICAgICAgICBpbmxpbmVSdW4uYWRkRGV0YWNo
aW5nUnVsZSh7IElubGluZUl0ZW06OkRldGFjaGluZ1J1bGU6OkJyZWFrQXRTdGFydCwgSW5saW5l
SXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdEVuZCB9KTsKLSAgICAgICAgaW5saW5lUnVuLmFk
ZE5vbkJyZWFrYWJsZVN0YXJ0KGhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSk7Ci0g
ICAgICAgIGlubGluZVJ1bi5hZGROb25CcmVha2FibGVFbmQoaG9yaXpvbnRhbE1hcmdpbi5lbmQu
dmFsdWVPcigwKSk7CisgICAgICAgIGlubGluZVJ1bi5hZGROb25CcmVha2FibGVTdGFydChob3Jp
em9udGFsTWFyZ2luLnN0YXJ0KTsKKyAgICAgICAgaW5saW5lUnVuLmFkZE5vbkJyZWFrYWJsZUVu
ZChob3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgICAgIC8vIFNraXAgZm9ybWF0dGluZyByb290
IHN1YnRyZWUuIFRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoaXMgaW5saW5lIGZvcm1hdHRpbmcgY29u
dGV4dC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ2NSw3ICs0NjksOSBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudEZvclN1YnRyZWUoY29u
c3QgQm94JiByb290LCBJbgogICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMgd2hlbiB3ZSBmaWd1
cmVkIG91dCBob3cgaW5saW5lIGJveGVzIGZpdCB0aGUgZGlzcGxheSB0cmVlLgogICAgIGF1dG8g
cGFkZGluZyA9IEdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcobGF5b3V0U3RhdGUoKSwgcm9vdCk7
CiAgICAgYXV0byBib3JkZXIgPSBHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIobGF5b3V0U3RhdGUo
KSwgcm9vdCk7Ci0gICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbihsYXlvdXRTdGF0ZSgpLCByb290KTsKKyAgICBhdXRvIGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5
b3V0U3RhdGUoKSwgcm9vdCk7CisgICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gVXNlZEhvcml6
b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwg
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDApIH07CisKICAgICAvLyBTZXR1
cCBicmVha2luZyBib3VuZGFyaWVzIGZvciB0aGlzIHN1YnRyZWUuCiAgICAgYXV0byogbGFzdERl
c2NlbmRhbnRJbmxpbmVCb3ggPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGFzdElubGluZUl0ZW0o
KTsKICAgICAvLyBFbXB0eSBjb250YWluZXI/CkBAIC00OTYsNyArNTAyLDcgQEAgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNvbnN0
IEJveCYgcm9vdCwgSW4KIAogICAgICAgICBBU1NFUlQoZmlyc3REZXNjZW5kYW50SW5saW5lQm94
KTsKICAgICAgICAgZmlyc3REZXNjZW5kYW50SW5saW5lQm94LT5hZGREZXRhY2hpbmdSdWxlKElu
bGluZUl0ZW06OkRldGFjaGluZ1J1bGU6OkJyZWFrQXRTdGFydCk7Ci0gICAgICAgIGF1dG8gc3Rh
cnRPZmZzZXQgPSBib3JkZXIuaG9yaXpvbnRhbC5sZWZ0ICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFy
dC52YWx1ZU9yKDApOworICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gYm9yZGVyLmhvcml6b250
YWwubGVmdCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQ7CiAgICAgICAgIGlmIChwYWRkaW5nKQog
ICAgICAgICAgICAgc3RhcnRPZmZzZXQgKz0gcGFkZGluZy0+aG9yaXpvbnRhbC5sZWZ0OwogICAg
ICAgICBmaXJzdERlc2NlbmRhbnRJbmxpbmVCb3gtPmFkZE5vbkJyZWFrYWJsZVN0YXJ0KHN0YXJ0
T2Zmc2V0KTsKQEAgLTUwNCw3ICs1MTAsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb2xsZWN0SW5saW5lQ29udGVudEZvclN1YnRyZWUoY29uc3QgQm94JiByb290LCBJbgogCiAg
ICAgaWYgKHJvb3RCcmVha3NBdEVuZCgpKSB7CiAgICAgICAgIGxhc3REZXNjZW5kYW50SW5saW5l
Qm94LT5hZGREZXRhY2hpbmdSdWxlKElubGluZUl0ZW06OkRldGFjaGluZ1J1bGU6OkJyZWFrQXRF
bmQpOwotICAgICAgICBhdXRvIGVuZE9mZnNldCA9IGJvcmRlci5ob3Jpem9udGFsLnJpZ2h0ICsg
aG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBlbmRPZmZzZXQg
PSBib3JkZXIuaG9yaXpvbnRhbC5yaWdodCArIGhvcml6b250YWxNYXJnaW4uZW5kOwogICAgICAg
ICBpZiAocGFkZGluZykKICAgICAgICAgICAgIGVuZE9mZnNldCArPSBwYWRkaW5nLT5ob3Jpem9u
dGFsLnJpZ2h0OwogICAgICAgICBsYXN0RGVzY2VuZGFudElubGluZUJveC0+YWRkTm9uQnJlYWth
YmxlRW5kKGVuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggM2U2OGYwNzZjMWUzZmZjNmQ4ZTk3NjMyMTg3ZjliYTk3ZTNhOGRmMi4u
NDA2ZTEwOTI2ODJmZDZlNzdiMWM0YWQ2MjMxMzkyOWI5ZTA5MDEwOSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5
LTAxLTA3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11b
QkZDXVtNYXJnaW5Db2xsYXBzaW5nXSBBZGQgc3VwcG9ydCBmb3IgcGVjdWxpYXIgY2FzZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2MjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExheW91dFJl
bG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0OgorCiAyMDE5LTAxLTA2ICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5n
XSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mgb2YgTWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rv
b2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0IGIvVG9vbHMvTGF5
b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQKaW5kZXggZmY1ZWIzODE1NGI3
MmVmOGM4ODE3ZmIyOTQ1ZjM1MGViYjVkMTAxMi4uMjI1Yjc0NzVkYTgzYWE1Y2FhZTE5MWVhNTkx
YWE2MjUxZTY5Y2Y2OCAxMDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMt
cGFzc2luZy10ZXN0cy50eHQKKysrIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFz
c2luZy10ZXN0cy50eHQKQEAgLTQsMjMgKzQsNjYgQEAgZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fi
c29sdXRlLWxlZnQtYXV0by5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtbGVm
dC1yaWdodC10b3AtYm90dG9tLWF1dG8uaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29s
dXRlLW5lc3RlZDIuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLW5lc3RlZC5o
dG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWluLW1heC1oZWln
aHQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLW1pbi1tYXgt
d2lkdGguaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLXdoZW4t
Y29udGFpbmluZy1ibG9jay1pcy1ub3QtaW4tdGhlLWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAog
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLXdoZW4tY29udGFpbmluZy1i
bG9jay1pcy1ub3QtaW4tdGhlLWZvcm1hdHRpbmctY29udGV4dC5odG1sCiBmYXN0L2Jsb2NrL2Js
b2NrLW9ubHkvYWJzb2x1dGUtc2ltcGxlLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNv
bHV0ZS13aWR0aC1zaHJpbmstdG8tZml0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNv
bHV0ZS13aWR0aC1zdHJldGNoLmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS13
aXRoLXN0YXRpYy1ibG9jay1wb3NpdGlvbi1uZXN0ZWQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2FsbW9zdC1pbnRydWRpbmctbGVmdC1mbG9hdC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9i
bG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1xdWlyazIuaHRtbAor
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVpZ2h0LXdpdGgtYXV0by1odG1sLWhlaWdodC1x
dWlyay5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQtd2l0aC1ub24tYXV0
by1odG1sLWhlaWdodC1xdWlyazIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2JvZHktaGVp
Z2h0LXdpdGgtbm9uLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsuaHRtbAogZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2JvcmRlci1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2NvbGxhcHNl
ZC1tYXJnaW4td2l0aC1taW4taGVpZ2h0Lmh0bWwKIGZhc3QvYmxvY2svYmxvY2stb25seS9maXhl
ZC1uZXN0ZWQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWFuZC1zaWJsaW5ncy13
aXRoLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2b2lkZXItbXVs
dGlwbGUtcm9vdHMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2b2lkZXItc2lt
cGxlLWxlZnQuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2b2lkZXItc2ltcGxl
LXJpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVyLXdpdGgtbWFy
Z2lucy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXQtbGVmdC13aGVuLWNvbnRhaW5l
ci1oYXMtcGFkZGluZy1tYXJnaW4uaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LW1p
bi1tYXgtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1taW4tbWF4LXdp
ZHRoLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91
cy1pbmZsb3ctd2l0aC1tYXJnaW4td2l0aC1uby1ib3JkZXIuaHRtbAorZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWFuZC1uZXh0LXByZXZpb3VzLWluZmxvdy13aXRoLW1hcmdpbi5odG1s
CitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYm94LWNsZWFyLWJvdGgtc2ltcGxlLmh0
bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtY2xlYXItcmlnaHQtc2ltcGxl
Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtbGVmdC1hbmQtcmlnaHQt
bXVsdGlwbGUtd2l0aC10b3Atb2Zmc2V0Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9h
dGluZy1ib3gtbGVmdC1hbmQtcmlnaHQtbXVsdGlwbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1v
bmx5L2Zsb2F0aW5nLWJveC1yaWdodC1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5
L2Zsb2F0aW5nLWJveC13aXRoLWNsZWFyLXNpYmxpbmdzLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2st
b25seS9mbG9hdGluZy1ib3gtd2l0aC1jbGVhci1zaW1wbGUuaHRtbAorZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLW5ldy1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAorZmFz
dC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLXJlbGF0aXZlLXBvc2l0aW9uZWQt
c2libGluZy5odG1sCitmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1hbmQtcmln
aHQtd2l0aC1jbGVhcmFuY2UuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxl
ZnQtcmlnaHQtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1sZWZ0
LXJpZ2h0LXdpdGgtYWxsLW1hcmdpbnMuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0
aW5nLWxlZnRzLWFuZC1yaWdodHMtc2ltcGxlLmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25seS9m
bG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1pbi1ib2R5Lmh0bWwKK2Zhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdGluZy1tdWx0aXBsZS1sZWZ0cy1tdWx0aXBsZS1saW5lcy5odG1sCitmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvZmxvYXRpbmctbXVsdGlwbGUtbGVmdHMuaHRtbAorZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLXdpdGgtbmV3LWJsb2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sCitm
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1pbi1tYXgtaGVpZ2h0Lmh0bWwKK2Zhc3QvYmxv
Y2svYmxvY2stb25seS9pbmZsb3ctbWluLW1heC13aWR0aC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvbWFyZ2luLWNvbGxhcHNlLWJvdHRvbS1ib3R0b20uaHRtbAogZmFzdC9ibG9jay9ibG9j
ay1vbmx5L21hcmdpbi1jb2xsYXBzZS1ib3R0b20tbmVzdGVkLmh0bWwKK2Zhc3QvYmxvY2svYmxv
Y2stb25seS9tYXJnaW4tY29sbGFwc2UtZmlyc3QtbGFzdC1hcmUtZmxvYXRpbmcuaHRtbAogZmFz
dC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS1zaW1wbGUuaHRtbAogZmFzdC9ibG9j
ay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS10b3AtbmVzdGVkLmh0bWwKIGZhc3QvYmxvY2sv
YmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2hlbi1jaGlsZC1oYXMtcGFkZGluZy1ib3JkZXIu
aHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xsYXBzZS13aXRoLWJsb2NrLWZv
cm1hdHRpbmctY29udGV4dDIuaHRtbAorZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xs
YXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sCitmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvbWFyZ2luLWNvbGxhcHNlLXdpdGgtY2xlYXJhbmNlLmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9tYXJnaW4tbGVmdC1yaWdodC1zaXppbmctb3V0LW9mLWZsb3cuaHRtbAogZmFzdC9i
bG9jay9ibG9jay1vbmx5L21hcmdpbi1sZWZ0LXJpZ2h0LXNpemluZy5odG1sCiBmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvbWFyZ2luLXByb3BhZ2F0aW9uLXNpbXBsZS1jb250ZW50LWhlaWdodC5odG1s
CiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXNpYmxpbmctY29sbGFwc2UtcHJvcGFnYXRl
ZC5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvbWFyZ2luLXNpbXBsZS5odG1sCitmYXN0L2Js
b2NrL2Jsb2NrLW9ubHkvbWluLW1heC1oZWlnaHQtcGVyY2VudGFnZS5odG1sCiBmYXN0L2Jsb2Nr
L2Jsb2NrLW9ubHkvbmVnYXRpdmUtbWFyZ2luLXNpbXBsZS5odG1sCiBmYXN0L2Jsb2NrL2Jsb2Nr
LW9ubHkvcGFkZGluZy1uZXN0ZWQuaHRtbAogZmFzdC9ibG9jay9ibG9jay1vbmx5L3BhZGRpbmct
c2ltcGxlLmh0bWwKQEAgLTMxLDgwICs3NCw0OSBAQCBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVs
YXRpdmUtcG9zaXRpb24td2hlbi1jb250YWluaW5nLWJsb2NrLWlzLW5vdC1pbi10aGUtZm9ybQog
ZmFzdC9ibG9jay9ibG9jay1vbmx5L3JlbGF0aXZlLXJpZ2h0Lmh0bWwKIGZhc3QvYmxvY2svYmxv
Y2stb25seS9yZWxhdGl2ZS1zaWJsaW5ncy5odG1sCiBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvcmVs
YXRpdmUtc2ltcGxlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9hYnNvbHV0ZS1wb3NpdGlv
bi13aGVuLWNvbnRhaW5pbmctYmxvY2staXMtbm90LWluLXRoZS1mb3JtYXR0aW5nLWNvbnRleHQy
Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29sbGFwc2Utd2l0aC1ibG9jay1m
b3JtYXR0aW5nLWNvbnRleHQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L21hcmdpbi1jb2xs
YXBzZS13aXRoLWJsb2NrLWZvcm1hdHRpbmctY29udGV4dDIuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0LWxlZnQtd2hlbi1jb250YWluZXItaGFzLXBhZGRpbmctbWFyZ2luLmh0bWwK
LWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1ib3gtbGVmdC1hbmQtcmlnaHQtbXVsdGlw
bGUtd2l0aC10b3Atb2Zmc2V0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1i
b3gtbGVmdC1hbmQtcmlnaHQtbXVsdGlwbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zs
b2F0aW5nLWJveC1yaWdodC1zaW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0
aW5nLWJveC13aXRoLW5ldy1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAotZmFzdC9ibG9jay9ibG9j
ay1vbmx5L2Zsb2F0aW5nLWJveC13aXRoLXJlbGF0aXZlLXBvc2l0aW9uZWQtc2libGluZy5odG1s
Ci1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdC1yaWdodC1zaW1wbGUuaHRtbAot
ZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQtcmlnaHQtd2l0aC1hbGwtbWFyZ2lu
cy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctbGVmdHMtYW5kLXJpZ2h0cy1z
aW1wbGUuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxlZnRz
LWluLWJvZHkuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLW11bHRpcGxlLWxl
ZnRzLW11bHRpcGxlLWxpbmVzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdGluZy1t
dWx0aXBsZS1sZWZ0cy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvZmxvYXRpbmctYW5kLW5l
eHQtcHJldmlvdXMtaW5mbG93LXdpdGgtbWFyZ2luLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25s
eS9mbG9hdGluZy1hbmQtbmV4dC1wcmV2aW91cy1pbmZsb3ctd2l0aC1tYXJnaW4td2l0aC1uby1i
b3JkZXIuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0aW5nLWxlZnQtYW5kLXJpZ2h0
LXdpdGgtY2xlYXJhbmNlLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hbmQtc2li
bGluZ3Mtd2l0aC1tYXJnaW5zLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9tYXJnaW4tY29s
bGFwc2Utd2l0aC1jbGVhcmFuY2UuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2
b2lkZXItc2ltcGxlLWxlZnQuaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LWF2b2lk
ZXItc2ltcGxlLXJpZ2h0Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVy
LW11bHRpcGxlLXJvb3RzLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9mbG9hdC1hdm9pZGVy
LXdpdGgtbWFyZ2lucy5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvaW5mbG93LW1pbi1tYXgt
d2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Fic29sdXRlLXBvc2l0aW9uLW1pbi1t
YXgtd2lkdGguaHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LW1pbi1tYXgtd2lkdGgu
aHRtbAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2luZmxvdy1taW4tbWF4LWhlaWdodC5odG1sCi1m
YXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWluLW1heC1oZWlnaHQuaHRt
bAotZmFzdC9ibG9jay9ibG9jay1vbmx5L2Zsb2F0LW1pbi1tYXgtaGVpZ2h0Lmh0bWwKLWZhc3Qv
YmxvY2svYmxvY2stb25seS9taW4tbWF4LWhlaWdodC1wZXJjZW50YWdlLmh0bWwKLWZhc3QvYmxv
Y2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJr
Lmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9ib2R5LWhlaWdodC13aXRoLW5vbi1hdXRvLWh0
bWwtaGVpZ2h0LXF1aXJrMi5odG1sCi1mYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYm9keS1oZWlnaHQt
d2l0aC1hdXRvLWh0bWwtaGVpZ2h0LXF1aXJrLmh0bWwKLWZhc3QvYmxvY2svYmxvY2stb25seS9i
b2R5LWhlaWdodC13aXRoLWF1dG8taHRtbC1oZWlnaHQtcXVpcmsyLmh0bWwKLWZhc3QvYmxvY2sv
YmxvY2stb25seS9jb2xsYXBzZWQtbWFyZ2luLXdpdGgtbWluLWhlaWdodC5odG1sCitmYXN0L2Js
b2NrL2Jhc2ljLzAwMi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwMy5odG1sCitmYXN0L2Jsb2Nr
L2Jhc2ljLzAwNi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwNy5odG1sCitmYXN0L2Jsb2NrL2Jh
c2ljLzAwOC5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljLzAwOS5odG1sCitmYXN0L2Jsb2NrL2Jhc2lj
LzAxMi5odG1sCitmYXN0L2Jsb2NrL2Jhc2ljL2NoaWxkLWJsb2NrLWxldmVsLWJveC13aXRoLWhl
aWdodC1wZXJjZW50Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvaGVpZ2h0LXBlcmNlbnRhZ2Utc2lt
cGxlLmh0bWwKIGZhc3QvYmxvY2svYmFzaWMvaW5saW5lLWNvbnRlbnQtd2l0aC1mbG9hdGluZy1p
bWFnZS5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL2lubGluZS1jb250ZW50LXdpdGgtZmxvYXRpbmct
aW1hZ2VzMi5odG1sCi1mYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0MS5odG1sCi1m
YXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czIuaHRtbAotZmFzdC9pbmxpbmUvc2lt
cGxlLWludHJ1ZGluZy1mbG9hdHMzLmh0bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtYmxv
Y2suaHRtbAotZmFzdC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5saW5lLWJsb2NrLmh0
bWwKLWZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtaW5mbG93LXBvc2l0aW9uZWQuaHRtbAotZmFz
dC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQuaHRtbAot
ZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQyLmh0
bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtcGFkZGluZy1sZWZ0LXJpZ2h0Lmh0
bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtYm9yZGVyLWxlZnQtcmlnaHQuaHRt
bAotZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1tYXJnaW4tbGVmdC1yaWdodC5odG1s
Ci1mYXN0L2lubGluZS9pbmxpbmUtY29udGVudC1hbmQtbmVzdGVkLWZvcm1hdHRpbmctcm9vdC13
aXRoLW1hcmdpbi1sZWZ0LXJpZ2h0Lmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdp
dGgtaW1hZ2Utc2ltcGxlLmh0bWwKLWZhc3QvaW5saW5lL2lubGluZS1jb250ZW50LXdpdGgtZmxv
YXQtYW5kLW1hcmdpbi5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljL2hlaWdodC1wZXJjZW50YWdlLXNp
bXBsZS5odG1sCi1mYXN0L2Jsb2NrL2Jhc2ljL2NoaWxkLWJsb2NrLWxldmVsLWJveC13aXRoLWhl
aWdodC1wZXJjZW50Lmh0bWwKK2Zhc3QvYmxvY2svYmFzaWMvcGVyY2VudC1oZWlnaHQtaW5zaWRl
LWFub255bW91cy1ibG9jay5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljL3F1aXJrLW1vZGUtcGVyY2Vu
dC1oZWlnaHQuaHRtbAorZmFzdC9ibG9jay9iYXNpYy9xdWlyay1wZXJjZW50LWhlaWdodC1ncmFu
ZGNoaWxkLmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDAxLmh0bWwKIGZhc3QvYmxvY2svZmxvYXQv
MDA3Lmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDA4Lmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDA5
Lmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDEzLmh0bWwKIGZhc3QvYmxvY2svZmxvYXQvMDE5Lmh0
bWwKLWZhc3QvYmxvY2svYmFzaWMvMDAyLmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDAzLmh0bWwK
LWZhc3QvYmxvY2svYmFzaWMvMDA2Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA3Lmh0bWwKLWZh
c3QvYmxvY2svYmFzaWMvMDA4Lmh0bWwKLWZhc3QvYmxvY2svYmFzaWMvMDA5Lmh0bWwKLWZhc3Qv
YmxvY2svYmFzaWMvMDEyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvbmVnYXRpdmUtbWFyZ2luLWNs
ZWFyLmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvb3ZlcmhhbmdpbmctYWZ0ZXItaGVpZ2h0LWRlY3Jl
YXNlLW9mZnNldHMuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVyaGFuZ2luZy1hZnRlci1oZWln
aHQtZGVjcmVhc2UuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9vdmVybGFwcGluZy1mbG9hdHMtd2l0
aC1vdmVyZmxvdy1oaWRkZW4uaHRtbAorZmFzdC9ibG9jay9mbG9hdC9wcmV2aW91cy1zaWJsaW5n
LWFic3Bvcy0wMDIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9yZWxhdGl2ZS1wYWludGVkLXR3aWNl
Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvYXZvaWRhbmNlLXJ0bC5odG1sCitmYXN0L2Jsb2NrL2Zs
b2F0L2JyLXdpdGgtY2xlYXIuaHRtbAorZmFzdC9ibG9jay9mbG9hdC9jbGFtcGVkLXJpZ2h0LWZs
b2F0Lmh0bWwKK2Zhc3QvYmxvY2svZmxvYXQvZmxvYXQtb24temVyby1oZWlnaHQtbGluZS5odG1s
CitmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LW92ZXJoYW5ncy1yb290Lmh0bWwKK2Zhc3QvYmxvY2sv
ZmxvYXQvZmxvYXQtd2l0aC1hbm9ueW1vdXMtcHJldmlvdXMtc2libGluZy5odG1sCitmYXN0L2Js
b2NrL2Zsb2F0L2Zsb2F0cy1ub3QtY2xlYXJlZC1jcmFzaC5odG1sCiBmYXN0L2Jsb2NrL21hcmdp
bi1jb2xsYXBzZS8wMDIuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDAzLmh0bWwK
IGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyNi5odG1sCiBmYXN0L2Jsb2NrL21hcmdpbi1j
b2xsYXBzZS8wMjcuaHRtbAorZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDI4Lmh0bWwKK2Zh
c3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzAyOS5odG1sCitmYXN0L2Jsb2NrL21hcmdpbi1jb2xs
YXBzZS8wMzUuaHRtbAogZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvMDM5Lmh0bWwKIGZhc3Qv
YmxvY2svbWFyZ2luLWNvbGxhcHNlLzA0MC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzAw
My5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzAwNC5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0
aW9uaW5nLzAwNS5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nLzAwNi5odG1sCkBAIC0xNDUs
OCArMTU3LDI5IEBAIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDQ2Lmh0bWwKIGZhc3QvYmxvY2sv
cG9zaXRpb25pbmcvMDQ5Lmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25pbmcvMDUyLmh0bWwKIGZh
c3QvYmxvY2svcG9zaXRpb25pbmcvMDU0Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvMDYw
Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvYWJzb2x1dGUtcG9zaXRpb25pbmctbm8tc2Ny
b2xsYmFyLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvY2hhbmdlLWNvbnRhaW5pbmctYmxv
Y2stZm9yLWFic29sdXRlLXBvc2l0aW9uZWQuaHRtbAorZmFzdC9ibG9jay9wb3NpdGlvbmluZy9j
aGFuZ2UtY29udGFpbmluZy1ibG9jay1mb3ItZml4ZWQtcG9zaXRpb25lZC5odG1sCitmYXN0L2Js
b2NrL3Bvc2l0aW9uaW5nL2NvbXBsZXgtcG9zaXRpb25lZC1tb3ZlbWVudC5odG1sCitmYXN0L2Js
b2NrL3Bvc2l0aW9uaW5nL2ZpeGVkLXBvc2l0aW9uLWRldGFjaGVkLWZyYW1lLmh0bWwKK2Zhc3Qv
YmxvY2svcG9zaXRpb25pbmcvZml4ZWQtcG9zaXRpb24tc3RhY2tpbmctY29udGV4dDIuaHRtbAor
ZmFzdC9ibG9jay9wb3NpdGlvbmluZy9maXhlZC1wb3NpdGlvbi1zdGFja2luZy1jb250ZXh0Lmh0
bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvaGlkaW5nLWluc2lkZS1yZWxwb3NpdGlvbmVkLWlu
bGluZS5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2luc2VydC1wb3NpdGlvbmVkLWluLWFu
b255bW91cy1jcmFzaC5odG1sCitmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2xlZnRtYXJnaW4tdG9w
bWFyZ2luLmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvbmVnYXRpdmUtcmVsLXBvc2l0aW9u
Lmh0bWwKK2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvYWJzLWluc2lkZS1pbmxpbmUtcmVsLmh0bWwK
K2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvcHJlZi13aWR0aC1jaGFuZ2UuaHRtbAorZmFzdC9ibG9j
ay9wb3NpdGlvbmluZy9yZWxhdGl2ZS1vdmVyZmxvdy1yZXBsYWNlZC1mbG9hdC5odG1sCitmYXN0
L2Jsb2NrL3Bvc2l0aW9uaW5nL3N0YXRpYy1pbmxpbmUtcG9zaXRpb24tZHluYW1pYy5odG1sCiBm
YXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL2Jhc2ljLWZsb2F0LWludHJ1c2lvbi5odG1sCiBmYXN0
L2Jsb2NrL2luc2lkZS1pbmxpbmVzL2NyYXNoLW9uLWZpcnN0LWxpbmUtY2hhbmdlLmh0bWwKK2Zh
c3QvYmxvY2svbGluZWJveGNvbnRhaW4vcmVwbGFjZWQuaHRtbAorZmFzdC9ibG9jay9jb2xsYXBz
ZS1hbm9uLWJsb2NrLXdpdGgtZmxvYXQtc2libGluZ3Mtb25seS5odG1sCitmYXN0L2Jsb2NrL2Ny
YXNoLXdoZW4tYW5vbnltb3VzLWJsb2Nrcy1hcmUtbWVyZ2VkLXdpdGgtc2ltcGxlLWxpbmUtbGF5
b3V0Lmh0bWwKK2Zhc3QvYmxvY2svY3Jhc2gtd2hlbi1zdWJ0cmVlLWlzLXN0aWxsLWF0dGFjaGVk
Lmh0bWwKK2Zhc3QvYmxvY2svZ2VvbWV0cnktbWFwLWFzc2VydGlvbi13aXRoLXRhbGwtY29udGVu
dC5odG1sCiBmYXN0L2JvcmRlcnMvMHB4LWJvcmRlcnMtbm8tbGluZS1oZWlnaHQuaHRtbAogZmFz
dC9ib3JkZXJzLzBweC1ib3JkZXJzLmh0bWwKIGZhc3QvYm9yZGVycy9ibG9jay1tYXNrLW92ZXJs
YXktaW1hZ2Utb3V0c2V0Lmh0bWwKQEAgLTE1NiwxMSArMTg5LDggQEAgZmFzdC9ib3JkZXJzL2Jv
cmRlci1pbWFnZS1zY2FsZWQtZ3JhZGllbnQuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1pbWFn
ZS1zbGljZS1vbWlzc2lvbi5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLWxlZnQtcmlnaHQtc2Ft
ZS1ib3R0b20tZGlmZmVyZW50LWNvbG9yLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRp
bmctZGFzaGVkLWF0LWFsbC5odG1sCi1mYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRhc2hl
ZC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWRvdHRlZC1hdC1hbGwuaHRtbAot
ZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1kb3R0ZWQuaHRtbAogZmFzdC9ib3JkZXJzL2Jv
cmRlci1wYWludGluZy1kb3VibGUtYXQtYWxsLmh0bWwKLWZhc3QvYm9yZGVycy9ib3JkZXItcGFp
bnRpbmctZG91YmxlLmh0bWwKIGZhc3QvYm9yZGVycy9ib3JkZXItcGFpbnRpbmctZ3Jvb3ZlLWF0
LWFsbC5odG1sCiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWluc2V0LWF0LWFsbC5odG1s
CiBmYXN0L2JvcmRlcnMvYm9yZGVyLXBhaW50aW5nLWluc2V0Lmh0bWwKQEAgLTE2OSw0ICsxOTks
ODYgQEAgZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGluZy1vdXRzZXQuaHRtbAogZmFzdC9ib3Jk
ZXJzL2JvcmRlci1wYWludGluZy1yaWRnZS1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRl
ci1wYWludGluZy1zb2xpZC1hdC1hbGwuaHRtbAogZmFzdC9ib3JkZXJzL2JvcmRlci1wYWludGlu
Zy1zb2xpZC5odG1sCi1mYXN0L2lubGluZS1ibG9jay8wMDQuaHRtbAorZmFzdC9ib3JkZXJzL2Jv
cmRlci1yYWRpdXMtaW5zZXQtb3V0c2V0Lmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVz
LW9uLWh0bWwuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtb24tc3VicGl4ZWwtcG9z
aXRpb24tbm9uLWhpZHBpLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXBlcmNlbnQu
aHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtdmFsaWQtYm9yZGVyLWNsaXBwaW5nLmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXdpZGUtYm9yZGVyLTAxLmh0bWwKK2Zhc3Qv
Ym9yZGVycy9ib3JkZXItcmFkaXVzLXdpdGgtYm94LXNoYWRvdy0wMS5odG1sCitmYXN0L2JvcmRl
cnMvYm9yZGVyLXJhZGl1cy13aXRoLWJveC1zaGFkb3cuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRl
ci1zaGFkb3ctbGFyZ2UtcmFkaXVzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNBbGxT
dHlsZXNBbGxDb3JuZXJzLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNBcmNzMDEuaHRt
bAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0Rhc2hlZDAxLmh0bWwKK2Zhc3QvYm9yZGVycy9i
b3JkZXJSYWRpdXNEYXNoZWQwMi5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRGFzaGVk
MDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdHRlZDAxLmh0bWwKK2Zhc3QvYm9y
ZGVycy9ib3JkZXJSYWRpdXNEb3R0ZWQwMi5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVz
RG90dGVkMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTAxLmh0bWwKK2Zh
c3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwMi5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVy
UmFkaXVzRG91YmxlMDMuaHRtbAorZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0dyb292ZTAxLmh0
bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNHcm9vdmUwMi5odG1sCitmYXN0L2JvcmRlcnMv
Ym9yZGVyUmFkaXVzSW5zZXQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzSW52YWxp
ZENvbG9yLmh0bWwKK2Zhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNPdXRzZXQwMS5odG1sCitmYXN0
L2JvcmRlcnMvYm9yZGVyUmFkaXVzUmlkZ2UwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzU29saWQwMS5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzU29saWQwMi5odG1sCitm
YXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzU29saWQwMy5odG1sCitmYXN0L2JvcmRlcnMvYm9yZGVy
UmFkaXVzU29saWQwNC5odG1sCitmYXN0L2JvcmRlcnMvZGFzaGVkLWJvcmRlci1vbi1zdWJwaXhl
bC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvZG90dGVkLWJvcmRlci1vbi1zdWJwaXhlbC1w
b3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvZG91YmxlLTFweC1ib3JkZXItYXNzZXJ0Lmh0bWwK
K2Zhc3QvYm9yZGVycy9lbXB0eS1kcmF3cmVjdC1hc3NlcnQtYWZ0ZXItcGl4ZWxzbmFwLmh0bWwK
K2Zhc3QvYm9yZGVycy9lbXB0eS1vdXRsaW5lLWJvcmRlci1hc3NlcnQuaHRtbAorZmFzdC9ib3Jk
ZXJzL2hpZHBpLTN4LWlucHV0LWhhaXJsaW5lLWJvcmRlci5odG1sCitmYXN0L2JvcmRlcnMvaGlk
cGktYm9yZGVyLWNsaXBwaW5nLXJpZ2h0LWFmdGVyLW1vdmUuaHRtbAorZmFzdC9ib3JkZXJzL2hp
ZHBpLWJvcmRlci1wYWludGluZy1ncm9vdmUuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRl
ci1wYWludGluZy1yaWRnZS5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktYm9yZGVyLXJhZGl1cy1v
dXRlci1ib3JkZXItZ29lcy1yZWN0YW5nbGUuaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLWJvcmRl
ci1yYWRpdXMtd2l0aC1zdWJwaXhlbC1tYXJnaW4tbm90LXJlbmRlcmFibGUuaHRtbAorZmFzdC9i
b3JkZXJzL2hpZHBpLWJvcmRlci13aWR0aC1mbG9vcmluZy5odG1sCitmYXN0L2JvcmRlcnMvaGlk
cGktb3V0bGluZS1oYWlybGluZS1wYWludGluZy5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktb3V0
bGluZS1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitmYXN0L2JvcmRlcnMvaGlkcGktcm91bmRl
ZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbAorZmFzdC9ib3JkZXJzL2hpZHBpLXNp
bXBsZS1oYWlybGluZS1ib3JkZXItcGFpbnRpbmcuaHRtbAorZmFzdC9ib3JkZXJzL21peGVkLWJv
cmRlci1zdHlsZTIuaHRtbAorZmFzdC9ib3JkZXJzL25lZ2F0aXZlLWJvcmRlci13aWR0aC5odG1s
CitmYXN0L2JvcmRlcnMvb3V0bGluZS1vZmZzZXQtbWluLWFzc2VydC5odG1sCitmYXN0L2JvcmRl
cnMvb3V0bGluZS1vZmZzZXQtb3ZlcmZsb3cuaHRtbAorZmFzdC9ib3JkZXJzL3dlYmtpdC1ib3Jk
ZXItcmFkaXVzLmh0bWwKK2Zhc3QvaW5saW5lL2Fic29sdXRlLXBvc2l0aW9uZWQtYmxvY2staW4t
Y2VudHJlZC1ibG9jay5odG1sCitmYXN0L2lubGluZS9hYnNvbHV0ZS1wb3NpdGlvbmVkLWlubGlu
ZS1pbi1jZW50cmVkLWJsb2NrLmh0bWwKK2Zhc3QvaW5saW5lL2Fub255bW91cy1ibG9jay13aXRo
LWVtcHR5LWlubGluZS5odG1sCitmYXN0L2lubGluZS9oaWRwaS1vdXRsaW5lLWF1dG8tbmVnYXRp
dmUtb2Zmc2V0LXdpdGgtYm9yZGVyLXJhZGl1cy5odG1sCitmYXN0L2lubGluZS9oaWRwaS1vdXRs
aW5lLWF1dG8td2l0aC1mcmFjdGlvbmFsLXJhZGl1cy5odG1sCitmYXN0L2lubGluZS9oaWRwaS1v
dXRsaW5lLWF1dG8td2l0aC1vbmUtZm9jdXNyaW5nLXJlY3QuaHRtbAorZmFzdC9pbmxpbmUvaGlk
cGktcGl4ZWwtZ2FwLWJldHdlZW4tYWRqYWNlbnQtc2VsZWN0aW9uLWlubGluZXMuaHRtbAorZmFz
dC9pbmxpbmUvaGlkcGktc2VsZWN0LWlubGluZS1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sCitm
YXN0L2lubGluZS9oaWRwaS1zZWxlY3Rpb24tZ2FwLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwK
K2Zhc3QvaW5saW5lL2hpZHBpLXNlbGVjdGlvbi1nYXAtb3ZlcmxhcHMtaW5saW5lLXNlbGVjdGlv
bi5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtYm9keS13aXRoLXNjcm9sbGJhci1jcmFzaC5odG1s
CitmYXN0L2lubGluZS9pbmxpbmUtY2hpbGQtaGVpZ2h0LXdpZHRoLWNhbGMtY3Jhc2guaHRtbAor
ZmFzdC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1ib3JkZXItbGVmdC1yaWdodC5odG1sCitm
YXN0L2lubGluZS9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0LWFuZC1tYXJnaW4uaHRtbAorZmFz
dC9pbmxpbmUvaW5saW5lLWNvbnRlbnQtd2l0aC1pbWFnZS1zaW1wbGUuaHRtbAorZmFzdC9pbmxp
bmUvaW5saW5lLWNvbnRlbnQtd2l0aC1tYXJnaW4tbGVmdC1yaWdodC5odG1sCitmYXN0L2lubGlu
ZS9pbmxpbmUtY29udGVudC13aXRoLXBhZGRpbmctbGVmdC1yaWdodC5odG1sCitmYXN0L2lubGlu
ZS9pbmxpbmUtbWFycXVlZS1jcmFzaC5odG1sCitmYXN0L2lubGluZS9pbmxpbmUtcGFkZGluZy1k
aXNhYmxlcy10ZXh0LXF1aXJrLmh0bWwKK2Zhc3QvaW5saW5lL25ldy1mbG9hdC1uZWVkcy1sYXlv
dXQtd2hlbi1saW5lLWlzLWRpcnR5Lmh0bWwKK2Zhc3QvaW5saW5lL3BlcmNlbnRhZ2UtbWFyZ2lu
cy5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW5saW5lLWJsb2NrLmh0bWwKK2Zhc3QvaW5saW5l
L3NpbXBsZS1pbmxpbmUtaW5mbG93LXBvc2l0aW9uZWQuaHRtbAorZmFzdC9pbmxpbmUvc2ltcGxl
LWlubGluZS13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQyLmh0bWwKK2Zhc3QvaW5saW5lL3Np
bXBsZS1pbmxpbmUtd2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50Lmh0bWwKK2Zhc3QvaW5saW5l
L3NpbXBsZS1pbnRydWRpbmctZmxvYXQxLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRp
bmctZmxvYXRzMi5odG1sCitmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czMuaHRt
bAorZmFzdC9pbmxpbmUvc2ltcGxlLWxpbmUtbGF5b3V0LTE2Yml0LWNvbnRlbnQuaHRtbAorZmFz
dC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5saW5lLWJsb2NrLmh0bWwKK2Zhc3QvaW5s
aW5lL3NraXBwZWQtd2hpdGVzcGFjZS1ib3VuZGluZ0JveC5odG1sCitmYXN0L2lubGluZS9za2lw
cGVkLXdoaXRlc3BhY2UtY2xpZW50LXJlY3QuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>