<?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>220146</bug_id>
          
          <creation_ts>2020-12-25 12:48:25 -0800</creation_ts>
          <short_desc>Simplify adding new color spaces to WebCore</short_desc>
          <delta_ts>2020-12-26 09:43:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716609</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 12:48:25 -0800</bug_when>
    <thetext>The spring refactoring of color made it quite a bit easier to add a new color space to WebCore without touching too many places, but it is still a bit more than necessary. Currently you need to:

- Add new value to ColorSpace enum in ColorSpace.h
- Add a new type to ColorTypes.h
- Add conversions to ColorConversion.h/cpp (it&apos;s quite unclear which ones you would need to add)
- Add serialization to ColorSerialization.h/cpp.
- Update switch statement in ColorSpace TextStream overload in Color.cpp
- Add override of Color constructor in Color.h
- Add override of Color::setColor in Color.h
- Update switch statement in ExtendedColor::callOnUnderlyingType in ExtendedColor.h
- Add new color space accessor to GraphicsContextCG.h/cpp.
- Update switch statement in cachedCGColorSpace in GraphicsContextCG.h
- Update switch statement in ColorCG.cpp
- Add css parsing support.

Many of these can be simplified, clarified or removed.

I think we can improve things such that the steps get reduced to:

- Add new value to ColorSpace enum in ColorSpace.h
- Update switch statement in ColorSpace TextStream overload (but lets move it to ColorSpace.cpp so it&apos;s clear you need to do this when adding the enum value).
- Add a new type to ColorTypes.h
- Add serialization to ColorSerialization.h/cpp.
- Add conversions to ColorConversion.h/cpp (but make it really clear which conversions are needed).
- Add new color space accessor to GraphicsContextCG.h/cpp.
- Update switch statement in cachedCGColorSpace in GraphicsContextCG.h
- Add css parsing support.

Not amazing, but will be an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716611</commentid>
    <comment_count>1</comment_count>
      <attachid>416758</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 13:24:25 -0800</bug_when>
    <thetext>Created attachment 416758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716612</commentid>
    <comment_count>2</comment_count>
      <attachid>416759</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 13:26:26 -0800</bug_when>
    <thetext>Created attachment 416759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716616</commentid>
    <comment_count>3</comment_count>
      <attachid>416761</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 15:15:19 -0800</bug_when>
    <thetext>Created attachment 416761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716620</commentid>
    <comment_count>4</comment_count>
      <attachid>416762</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 16:22:44 -0800</bug_when>
    <thetext>Created attachment 416762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716622</commentid>
    <comment_count>5</comment_count>
      <attachid>416763</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 17:00:01 -0800</bug_when>
    <thetext>Created attachment 416763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716623</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 18:32:36 -0800</bug_when>
    <thetext>Anyone have any idea what these windows failures are about? I can&apos;t make heads or tails from the MSVC error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716624</commentid>
    <comment_count>7</comment_count>
      <attachid>416764</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 18:45:04 -0800</bug_when>
    <thetext>Created attachment 416764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716625</commentid>
    <comment_count>8</comment_count>
      <attachid>416765</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 18:49:58 -0800</bug_when>
    <thetext>Created attachment 416765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716626</commentid>
    <comment_count>9</comment_count>
      <attachid>416766</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 19:03:22 -0800</bug_when>
    <thetext>Created attachment 416766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716629</commentid>
    <comment_count>10</comment_count>
      <attachid>416768</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 19:57:22 -0800</bug_when>
    <thetext>Created attachment 416768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716630</commentid>
    <comment_count>11</comment_count>
      <attachid>416769</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 20:07:02 -0800</bug_when>
    <thetext>Created attachment 416769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716631</commentid>
    <comment_count>12</comment_count>
      <attachid>416770</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 20:12:17 -0800</bug_when>
    <thetext>Created attachment 416770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716632</commentid>
    <comment_count>13</comment_count>
      <attachid>416771</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 20:18:23 -0800</bug_when>
    <thetext>Created attachment 416771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716633</commentid>
    <comment_count>14</comment_count>
      <attachid>416772</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 20:45:25 -0800</bug_when>
    <thetext>Created attachment 416772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716634</commentid>
    <comment_count>15</comment_count>
      <attachid>416773</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 20:51:44 -0800</bug_when>
    <thetext>Created attachment 416773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716635</commentid>
    <comment_count>16</comment_count>
      <attachid>416774</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 20:57:05 -0800</bug_when>
    <thetext>Created attachment 416774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716636</commentid>
    <comment_count>17</comment_count>
      <attachid>416775</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 21:04:42 -0800</bug_when>
    <thetext>Created attachment 416775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716637</commentid>
    <comment_count>18</comment_count>
      <attachid>416776</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-25 21:09:04 -0800</bug_when>
    <thetext>Created attachment 416776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716652</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-26 08:09:45 -0800</bug_when>
    <thetext>Seems that by making callWithColorType only templatized on the functor, and not the component type makes the issue go away. Still not clear what is causing it, but will try to work that out in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716660</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-26 09:42:59 -0800</bug_when>
    <thetext>Committed r271089: &lt;https://trac.webkit.org/changeset/271089&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416776.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716661</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-26 09:43:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/72682108&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416758</attachid>
            <date>2020-12-25 13:24:25 -0800</date>
            <delta_ts>2020-12-25 13:26:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225132425.patch</filename>
            <type>text/plain</type>
            <size>43032</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBudW1iZXIgb2YgcGxhY2VzIG9uZSBuZWVkcyB0byB0
b3VjaCB3aGVuIGFkZGluZyBuZXcgY29sb3IgdHlwZXMgdG86CisKKyAgICAgICAgICAgIC0gQ29s
b3JUeXBlcy5oCisgICAgICAgICAgICAtIENvbG9yQ29udmVyc2lvbi5oL2NwcAorICAgICAgICAg
ICAgLSBDb2xvclNwYWNlLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlz
IHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JTZXJpYWxpemF0aW9uLmggKG9ubHkgbmVl
ZGVkIGlmIHN1cHBvcnQgaW4gQ29sb3IgaXMgcmVxdWlyZWQpLgorICAgICAgICAgICAgLSBDb2xv
clNwYWNlQ0cuaC9jcHAgKG9ubHkgbmVlZGVkIGlmIHN1cHBvcnQgaW4gQ29sb3IgaXMgcmVxdWly
ZWQpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgQ29sb3JTcGFjZS5jcHAsIENvbG9yU3Bh
Y2VDRy5oIGFuZCBDb2xvclNwYWNlQ0cuY3BwLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNl
dENvbG9yKToKKyAgICAgICAgUmVwbGFjZSBzcGVjaWZpYyBvdmVybG9hZHMgb2YgdGhlIGNvbnRy
dWN0b3IgYW5kIHNldENvbG9yIHdpdGggdGVtcGxhdGUgZnVuY3Rpb25zCisgICAgICAgIHRoYXQg
ZG8gdGhlIHNhbWUgdGhpbmdzLiBUaGVzZSBhcmUgc2FmZSB0byBtYWtlIGFzIGlmIGEgbm9uLXN1
cHBvcnRlZCBjb2xvciB0eXBlCisgICAgICAgIChvbmUgdGhhdCBkb2Vzbid0IGhhdmUgYSBjb2xv
clNwYWNlIG1lbWJlcikgaXMgcGFzc2VkIGl0IHdpbGwgZmFpbCB0byBjb21waWxlIGR1ZQorICAg
ICAgICB0byB1c2UgYmVuZWF0aCBFeHRlbmRlZENvbG9yOjpjcmVhdGUoKS4KKworICAgICAgICBB
bHNvIG1vdmVzIFdURjo6VGV4dFN0cmVhbSBvcGVyYXRvcjw8IG92ZXJsb2FkIGZvciBDb2xvclNw
YWNlIG91dCBhbmQgaW50bworICAgICAgICBDb2xvclNwYWNlLmNwcCB3aGVyZSBpdCBtYWtlcyBt
b3JlIHNlbnNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAg
ICAgICAgUmUtb3JkZXIgYW5kIGV4cGxpY2l0bHkgY29tbWVudCBjb252ZXJzaW9uIGZ1bmN0aW9u
cyB0byBiZSBtb3JlIGNsZWFyLgorICAgICAgICAKKyAgICAgICAgQXMgdGhlIGNvbW1lbnQgaW5k
aWNhdGVzLCBhbGwgY29sb3IgdHlwZXMgbXVzdCBpbXBsZW1lbnQgYXQgbGVhc3QgdGhlIGZvbGxv
d2luZworICAgICAgICBjb252ZXJzaW9uczoKKyAgICAgICAgICAgIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CisgICAgICAgICAgICBDb2xvclR5cGU8ZmxvYXQ+
IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisKKyAgICAgICAgVGhpcyBhbGxvd3Mg
Z2VuZXJpYyBmYWxsYmFjayBjb2RlLCBpbmxpbmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgaGVhZGVy
LCB0bworICAgICAgICBzdXBwb3J0IGNvbnZlcnNpb24gdG8gYW5kIGZyb20gYW55IHNldCBvZiBj
b2xvcnMuIEFkZGl0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbnMKKyAgICAgICAgYXJlIHVzZWZ1
bCBmb3IgdGhlIGNhc2VzIHdoZXJlIHRoZSBvcHRpbWFsIG9yIGJhc2UgY29udmVyc2lvbiBpcyBu
b3QgdGhyb3VnaCBYWVoKKyAgICAgICAgc3VjaCBhcyBmcm9tIFNSR0JBIHRvIExpbmVhclNSR0JB
LgorCisgICAgICAgIFRvIGFsbG93IHRoaXMgdG8gd29yayBhIGZldyBhZGRpdGlvbmFsIGNvbnZl
cnNpb24gZnVuY3Rpb25zIHdlcmUgYWRkZWQgd2hpY2gganVzdAorICAgICAgICBjb21iaW5lIGV4
aXN0aW5nIGNvbnZlcnNpb25zIHRvZ2V0aGVyIGFuZCBvbmUgd2FzIGFkZGVkIGZvciBTUkdCQSB0
byBDTVlLQSB3aGljaAorICAgICAgICB3YXMgbWlzc2luZywgdGhvdWdoIGN1cnJlbnRseSB1bnVz
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIE1vdmVkIGZyb20gQ29sb3IuaAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bFdpdGhDb2xvclR5cGUpOgorICAgICAgICBUaGlzIGlzIGEgZ2VuZXJhbGl6YXRpb24gb2YgRXh0
ZW5kZWRDb2xvcjo6Y2FsbE9uVW5kZXJseWluZ1R5cGUoKSB0aGF0IGFsc28KKyAgICAgICAgaGFz
IHRoZSBiZW5lZml0IG9mIG5vdyBiZWluZyBpbiB0aGUgc2FtZSBmaWxlIGFzIHRoZSBjb2xvciB0
eXBlIGRlZmluaXRpb25zLAorICAgICAgICByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGZpbGVzIHBl
b3BsZSBuZWVkIHRvIHRvdWNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yQnlNb2RpZmluZ0VhY2hOb25BbHBo
YUNvbXBvbmVudCk6CisgICAgICAgIFVwZGF0ZSB0byBub3QgYXNzdW1lIHRoYXQgY29sb3JzIHVz
ZSB0aGUgbmFtZXMgcmVkL2dyZWVuL2JsdWUgZm9yIG5vbi1hbHBoYQorICAgICAgICBjb21wb25l
bnRzLiBUaGlzIG1ha2VzIGl0IHdvcmsgZ2VuZXJpY2FsbHkgZm9yIGFsbCBmb3VyIGNvbXBvbmVu
dCBjb2xvciB0eXBlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdU
eXBlIGNvbnN0KToKKyAgICAgICAgVXNlIGdlbmVyYWxpemVkIGZvcm0sIGNhbGxXaXRoQ29sb3JU
eXBlIHRvIGF2b2lkIHJlcXVpcmluZyBtb2RpZnR5aW5nIHRoaXMKKyAgICAgICAgd2hlbiBuZXcg
Y29sb3IgdHlwZXMgYXJlIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQ0dDb2xvcik6CisgICAgICAgIFdo
ZW4gZ29pbmcgdG8gZ2VuZXJhbGl6ZSB0aGlzICh3ZSBjb3VsZCBoYXZlIHNpbXBseSBjYWxsZWQg
CisgICAgICAgIGByZXR1cm4gQ0dDb2xvckNyZWF0ZShjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSksIGNnRmxvYXRDb21wb25lbnRzKSlgCisgICAgICAgIEkgbm90aWNlZCB0aGlzIHdhcyBu
b3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIGZvciBDRyBwb3J0cyB0aGF0IGRvbid0IHN1cHBvcnQK
KyAgICAgICAgYWxsIHRoZSBjb2xvciBzcGFjZXMgV2ViQ29yZSByZXF1aXJlcyAoc3VjaCBhcyBX
aW5kb3dzKS4gRm9yIGluc3RhbmNlLAorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkg
anVzdCByZXR1cm5zIHNSR0JDb2xvclNwYWNlUmVmKCkgb24gd2luZG93cywgbWVhbmluZworICAg
ICAgICB3ZSB3b3VsZCBiZSB0YWtpbmcgc29tZSBEaXNwbGF5UDMgY29tcG9uZW50cyBhbmQgaGF2
aW5nIENHIGludGVycHJldCB0aGVtIGFzCisgICAgICAgIHNSR0IuIFRvIGF2b2lkIHRoaXMsIHdl
IG5vdyBjaGVjayBpZiB0aGUgY29sb3Igc3BhY2UgcmV0dXJuZWQgaXMgdGhlIGZhbGxiYWNrCisg
ICAgICAgIGNvbG9yIHNwYWNlLCBzUkdCLCBhbmQgZG8gb3VyIG93biBjb252ZXJzaW9uIHRvIHNS
R0IgdXNpbmcgQ29sb3JDb252ZXJzaW9uCisgICAgICAgIGJlZm9yZSBjcmVhdGluZyB0aGUgY29s
b3IuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlc29sdmVzIGEgbG9uZyBzdGFuZGluZyBidWcgLyBG
SVhNRSBhcm91bmQgTGluZWFyUkdCIHdoZXJlIHdlIHdlcmUKKyAgICAgICAgdXNpbmcgc1JHQkNv
bG9yU3BhY2VSZWYoKSBmb3IgdGhlbS4gSW4gcHJhY3RpY2UsIHdlIGRvbid0IGFjdHVhbGx5IGV2
ZXIgY3JlYXRlCisgICAgICAgIExpbmVhclJHQiBDR0NvbG9yUmVmcyByaWdodCBub3csIGJ1dCBp
ZiB3ZSBldmVyIGRvIGluIHRoZSBmdXR1cmUsIG1ha2VzIHNlbnNlCisgICAgICAgIHRvIHVzZSB0
aGUgcmlnaHQgY29sb3Igc3BhY2UuIAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JTcGFjZUNHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNwYWNlUmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkQ0dDb2xv
clNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGlzcGxheVAzQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmVkIGNvbG9yIHNw
YWNlIHNwZWNpZmljIENHIGNvZGUgdG8gaXRzIG93biBmaWxlcyB0byBtYWtlIGl0IG1vcmUgY2xl
YXIKKyAgICAgICAgd2hlcmUgdG8gZmluZCB0aGVtLgorCiAyMDIwLTEyLTI1ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGYXN0IHZlcnRpY2Fs
IGFsaWdubWVudCBzaG91bGQgd29yayB3aXRoIGxpbmUtaGVpZ2h0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgs
NyBAQCBlbHNlICgpCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJh
Y2tpbmdMYXllcldpbi5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDRy5jcHAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0Zsb2F0U2l6ZUNHLmNwcApAQCAtMTgyLDYgKzE4Myw3IEBAIGVsc2UgKCkKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0Q2xpZW50LmgKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCiAKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JT1N1cmZhY2VQb29sLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksNiArMjc5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAKQEAgLTU0NCw2ICs1NDUsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCiAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MTEsNiArMTkxMSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFs
aXphdGlvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiAr
MzI3LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViU3lzdGVtQmFjawogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlZpZGVvQ29udGFpbmVyTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDM0LDYgKzQwMzQsNyBA
QAogCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNBQ0YzQkQxMDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkIx
MDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQUUxRkE3MTI5MzlEQjcwMDRD
QjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1h
dG9yTWFjLmggKi87IH07CisJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUZF
REIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxODA5NzlDM0JEMDA0Njc3NDEg
LyogTWVtb3J5Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQjE2QkZGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzFBMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oICovOyB9OwogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyog
Q2FjaGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDExMyw2ICsxNDExNCw5
IEBACiAJCUJDQUNGM0JCMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUQxODA5MTMxQzdBMEQwMDk5MDQw
NiAvKiBlbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IGVuOyBwYXRoID0g
ZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlCQ0FFMUZBNTEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBRkVEQUYyNTk2NkQwNTAwMzBFNkFBIC8qIENvbG9y
U3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JTcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREIyMjU5NjhEMEIwMDMw
RTZBQSAvKiBDb2xvclNwYWNlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JTcGFjZUNHLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBD
b2xvclNwYWNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JTcGFjZUNHLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZCRkUwOTc5QzNCRDAwNDY3NzQxIC8qIE1l
bW9yeUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1v
cnlDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZGMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVtb3J5Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZD
MDAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZENTU1N0eWxlU2hlZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MTcsNiArMjY0MjEsOCBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCisJCQkJQkNBRkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9y
U3BhY2VDRy5jcHAgKi8sCisJCQkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3Bh
Y2VDRy5oICovLAogCQkJCUIyNzUzNTJCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cu
Y3BwICovLAogCQkJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAg
Ki8sCiAJCQkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywK
QEAgLTI2NTIyLDYgKzI2NTI4LDcgQEAKIAkJCQk3Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyog
Q29sb3JNYXRyaXguaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0MTkgLyogQ29sb3JT
ZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4OUM0MTkgLyogQ29s
b3JTZXJpYWxpemF0aW9uLmggKi8sCisJCQkJQkNBRkVEQUYyNTk2NkQwNTAwMzBFNkFBIC8qIENv
bG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNw
YWNlLmggKi8sCiAJCQkJN0MwMjlDNkQyNDkzQzhGODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCAq
LywKIAkJCQkwRkU2Qzc2QjFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMuY3BwICov
LApAQCAtMzQ4MDgsNiArMzQ4MTUsNyBAQAogCQkJCUIyMjI3OUYyMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUxpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RjQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
NzlGNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDIyNDE5NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RkEwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RkQwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNp
b24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMjAgKzE2NSw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGMKICAgICByZXR1cm4gdHMgPDwgc2VyaWFsaXphdGlvbkZvclJl
bmRlclRyZWVBc1RleHQoY29sb3IpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNw
YWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAg
ICB0cyA8PCAiTGluZWFyUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNl
OjpEaXNwbGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3MTA3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDkgKzc3LDcgQEAgcHVibGljOgogICAgIENvbG9yKE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiwgU2VtYW50aWNUYWcpOwogCiAgICAgQ29sb3IoQ29sb3JDb21wb25lbnRzPGZs
b2F0PiwgQ29sb3JTcGFjZSk7Ci0gICAgQ29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci0gICAg
Q29sb3IoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0gICAgQ29sb3IoY29uc3QgRGlzcGxh
eVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBD
b2xvclR5cGU+IENvbG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIAogICAgIGV4cGxpY2l0
IENvbG9yKFdURjo6SGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUpOwogICAgIGV4cGxpY2l0IENvbG9y
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CkBAIC0xODEsOSArMTc5LDcgQEAgcHJp
dmF0ZToKICAgICBDb2xvcihSZWY8RXh0ZW5kZWRDb2xvcj4mJik7CiAKICAgICB2b2lkIHNldENv
bG9yKFNSR0JBPHVpbnQ4X3Q+KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0
PiYpOwotICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0gICAg
dm9pZCBzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CisgICAgdGVtcGxhdGU8dGVt
cGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvclR5cGU8ZmxvYXQ+Jik7CiAgICAgdm9pZCBzZXRFeHRlbmRlZENvbG9yKFJlZjxFeHRlbmRl
ZENvbG9yPiYmKTsKIAogICAgIHZvaWQgdGFnQXNTZW1hbnRpYygpIHsgbV9jb2xvckRhdGEuaW5s
aW5lQ29sb3JBbmRGbGFncyB8PSBpc1NlbWFudGljSW5saW5lQ29sb3JCaXQ7IH0KQEAgLTIxOCw3
ICsyMTQsNiBAQCBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoCiAjZW5k
aWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQogewpAQCAtMjc2LDMw
ICsyNzEsMTIgQEAgaW5saW5lIENvbG9yOjpDb2xvcihPcHRpb25hbDxTUkdCQTx1aW50OAogCiBp
bmxpbmUgQ29sb3I6OkNvbG9yKENvbG9yQ29tcG9uZW50czxmbG9hdD4gY29tcG9uZW50cywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNh
c2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgc2V0Q29sb3IoYXNTUkdCQShjb21wb25lbnRz
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAg
ICAgICAgc2V0Q29sb3IoYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgc2V0Q29sb3IoYXNE
aXNwbGF5UDMoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1pbmxp
bmUgQ29sb3I6OkNvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29s
b3IoY29sb3IpOwotfQotCi1pbmxpbmUgQ29sb3I6OkNvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZs
b2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29sb3IoY29sb3IpOworICAgIGNhbGxXaXRoQ29sb3JU
eXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFsmXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAg
ICAgICAgc2V0Q29sb3IoY29sb3IpOworICAgIH0pOwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9y
KGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5h
bWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRDb2xvcihjb2xvcik7CiB9CkBAIC00MDIsMTcg
KzM3OSw3IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihTUkdCQTx1aW50OF8KICAgICB0
YWdBc1ZhbGlkKCk7CiB9CiAKLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBTUkdC
QTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6
Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBM
aW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5k
ZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xv
cihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVu
YW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IENvbG9y
VHlwZTxmbG9hdD4mIGNvbG9yKQogewogICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xv
cjo6Y3JlYXRlKGNvbG9yKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYQogICAgIH07CiB9CiAKLXN0YXRpYyBMaW5lYXJTUkdCQTxmbG9hdD4gdG9M
aW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5k
Ymxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKQEAgLTEwMCw3ICsx
MDAsNyBAQCBzdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoCiAgICAgcmV0
dXJuIGFzTGluZWFyU1JHQkEoeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxm
bG9hdD4gdG9YWVooY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBz
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGlu
ZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMTIsNyAr
MTEyLDcgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSRwogICAgIHJl
dHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgTGluZWFyRGlzcGxh
eVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+
JiBjb2xvcikKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNj
b2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6
VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXggewpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBMaW5l
YXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGkKICAgICByZXR1cm4gYXNMaW5lYXJEaXNwbGF5
UDMoeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMo
YXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLXN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZ
Wihjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXggewpA
QCAtMTM0LDE2ICsxMzQsNiBAQCBzdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFy
RGlzCiAgICAgcmV0dXJuIGFzWFlaQShsaW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCi17Ci0gICAg
cmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQSh0b1hZWih0b0xpbmVhckRpc3BsYXlQMyhjb2xv
cikpKSk7Ci19Ci0KLURpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMo
dG9YWVoodG9MaW5lYXJTUkdCQShjb2xvcikpKSk7Ci19Ci0KIEhTTEE8ZmxvYXQ+IHRvSFNMQShj
b25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgpAQCAtMjM5LDQgKzIyOSw1OCBAQCBTUkdCQTxmbG9h
dD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mCiAgICAgcmV0dXJuIHsgciwgZywgYiwgYSB9
OwogfQogCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQor
eworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29sb3I7CisKKyAgICBhdXRvIGsgPSAxLjBmIC0g
c3RkOjptYXgoeyByLCBnLCBiIH0pOworICAgIGlmIChrID09IDEuMGYpCisgICAgICAgIHJldHVy
biB7IDAsIDAsIDAsIDEuMGYsIGEgfTsKKyAgICAKKyAgICBhdXRvIGMgPSAoMS4wZiAtIHIgLSBr
KSAvICgxLjBmIC0gayk7CisgICAgYXV0byBtID0gKDEuMGYgLSBnIC0gaykgLyAoMS4wZiAtIGsp
OworICAgIGF1dG8geSA9ICgxLjBmIC0gYiAtIGspIC8gKDEuMGYgLSBrKTsKKyAgICByZXR1cm4g
eyBjLCBtLCB5LCBrLCBhIH07Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxm
bG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJTUkdCQShjb2xvcikp
OworfQorCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7
CisgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQShjb2xvcikpOworfQorCitYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvWFlaQSh0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpOworfQorCitEaXNwbGF5UDM8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9E
aXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvU1JH
QkEoY29sb3IpKTsKK30KKworSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xBKHRvU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
WFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK0NNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IFhZ
WkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9DTVlLQSh0b1NSR0JBKGNvbG9yKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMjcgKzMzLDEwMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBm
bG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIGZsb2F0IHJnYlRvTGluZWFy
Q29sb3JDb21wb25lbnQoZmxvYXQpOwogCisKKy8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxl
YXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBY
WVpBIGNvbG9yIHNwYWNlOgorLy8gICAgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlw
ZTxmbG9hdD4mKTsKKy8vICAgIENvbG9yVHlwZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFla
QTxmbG9hdD4mKTsKKy8vCisvLyBBbnkgYWRkaXRpb25hbCBjb252ZXJzaW9ucyBjYW4gYmUgdGhv
dWdodCBvZiBhcyBvcHRpbWl6YXRpb25zLCBzaG9ydGN1dHRpbmcgdW5uZWNlc3Nhcnkgc3RlcHMs
IHRob3VnaAorLy8gc29tZSBtYXkgYmUgaW50ZWdyYWwgdG8gdGhlIGJhc2UgY29udmVyc2lvbi4K
KworCisvLyBTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNS
R0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8
ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKworLy8gTGluZWFy
U1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNS
R0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwogCisKKy8vIERp
c3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+
Jik7CisKKworLy8gTGluZWFyRGlzcGxheVAzCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYp
OworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxh
eVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKIAotV0VCQ09SRV9FWFBPUlQgU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBP
UlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBTUkdCQTxmbG9hdD4mKTsKIAot
V0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwor
Ly8gSFNMQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8Zmxv
YXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9h
dD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEo
Y29uc3QgSFNMQTxmbG9hdD4mKTsKIAotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8
ZmxvYXQ+Jik7CiAKKy8vIENNWUtBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlL
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKIAotLy8gSWRlbnRpdHkgY29u
dmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykKKworLy8gSWRlbnRpdHkgY29u
dmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykuCiAKIGNvbnN0ZXhwciBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xv
cjsgfQogY29uc3RleHByIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExp
bmVhclNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgRGlz
cGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikg
eyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGlu
ZWFyRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVy
biBjb2xvcjsgfQogY29uc3RleHByIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0
PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgQ01ZS0E8ZmxvYXQ+IHRvQ01Z
S0EoY29uc3QgQ01ZS0E8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhw
ciBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBj
b2xvcjsgfQorCisKKy8vIEZhbGxiYWNrIGNvbnZlcnNpb25zLgorCisvLyBBbGwgdHlwZXMgYXJl
IHJlcXVpcmVkIHRvIGhhdmUgYSBjb252ZXJzaW9uIHRvIFhZWkEsIHNvIHRoZXNlIGFyZSBnYXVy
ZW50ZWVkIHRvIHdvcmsgaWYKKy8vIGEgcHJvcGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHBy
b3ZpZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25z
dCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYg
Y29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3QgVCYg
Y29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7Cisg
ICAgcmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
U3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCisj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6
OlNSR0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgdHMgPDwg
IkRpc3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdt
YSBvbmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKQEAgLTMz
LDQgKzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgRGlzcGxh
eVAzCiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJl
dmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDYgKzM1MywyMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykgY2Fs
bFdpdGhDb2xvclR5cGUoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjb21wb25lbnRzLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQoreworICAgIHN3aXRjaCAoY29s
b3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShjb21wb25l
bnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHJldHVybiBz
dGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzTGluZWFyU1JHQkEo
Y29tcG9uZW50cykpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICBy
ZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0Rpc3Bs
YXlQMyhjb21wb25lbnRzKSk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNT
UkdCQShjb21wb25lbnRzKSk7Cit9CiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMu
aAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDEyICsxNDcsMTIgQEAgdGVt
cGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZpbmdF
YWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYmIGZ1
bmN0b3IpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUgdG8gd29yayB3aXRo
IGNvbG9ycyB0aGF0IGRvbid0IHVzZSB0aGUgbmFtZXMgcmVkLCBncmVlbiwgYW5kIGJsdWUgZm9y
IHRoZWlyIGNoYW5uZWxzLgotICAgIGF1dG8gY29weSA9IGNvbG9yOwotICAgIGNvcHkucmVkID0g
c3RkOjppbnZva2UoZnVuY3RvciwgY29sb3IucmVkKTsKLSAgICBjb3B5LmdyZWVuID0gc3RkOjpp
bnZva2UoZnVuY3RvciwgY29sb3IuZ3JlZW4pOwotICAgIGNvcHkuYmx1ZSA9IHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29sb3IuYmx1ZSk7Ci0gICAgcmV0dXJu
IGNvcHk7CisgICAgYXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOwor
ICAgIGF1dG8gY29weSA9IGNvbXBvbmVudHM7CisgICAgY29weVswXSA9IHN0ZDo6aW52b2tlKGZ1
bmN0b3IsIGNvbXBvbmVudHNbMF0pOworICAgIGNvcHlbMV0gPSBzdGQ6Omludm9rZShmdW5jdG9y
LCBjb21wb25lbnRzWzFdKTsKKyAgICBjb3B5WzJdID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJk
PEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4geyBjb3B5WzBd
LCBjb3B5WzFdLCBjb3B5WzJdLCBjb3B5WzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25z
dCBDb2xvclR5cGUmIGNvbG9yLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCShyZXZpc2lv
biAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENv
bG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw3IEBAIGlubGluZSBFeHRlbmRlZENv
bG9yOjpFeHRlbmRlZENvbG9yKENvbG8KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gZGVj
bHR5cGUoYXV0bykgRXh0ZW5kZWRDb2xvcjo6Y2FsbE9uVW5kZXJseWluZ1R5cGUoRnVuY3RvciYm
IGZ1bmN0b3IpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtX2NvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndh
cmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEobV9jb21wb25lbnRzKSk7Ci0gICAgY2FzZSBD
b2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZv
cndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzTGluZWFyU1JHQkEobV9jb21wb25lbnRzKSk7Ci0g
ICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9r
ZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzRGlzcGxheVAzKG1fY29tcG9uZW50
cykpOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6
Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEobV9jb21wb25l
bnRzKSk7CisgICAgcmV0dXJuIGNhbGxXaXRoQ29sb3JUeXBlKG1fY29tcG9uZW50cywgbV9jb2xv
clNwYWNlLCBzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvcikpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2
aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShDRykK
IAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNH
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtOTcsMjEgKzk3LDI0IEBAIENv
bG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBTZW1hbnRpY1QKIHN0YXRpYyBDR0NvbG9yUmVm
IGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBhdXRvIFtjb2xvclNwYWNl
LCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgYXV0
byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVu
dHNbNF0geyByLCBnLCBiLCBhIH07CiAKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBj
YXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlUmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6
OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoZGlzcGxheVAzQ29sb3JT
cGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5l
YXJSR0I6Ci0gICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9yUmVmcyBp
biB0aGVzZSBzcGFjZXM/IEl0IG1heSBvbmx5IGJlIEltYWdlQnVmZmVycy4KLSAgICAgICAgcmV0
dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMp
OworICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2Up
OworCisgICAgLy8gU29tZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3Bh
Y2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KKyAgICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1
bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZQorICAgIC8vIG5lZWQg
dG8gZWFnZXJseSBhbmQgcG90ZW50aWFsbHkgbG9zc2lseSBjb252ZXJ0IHRoZSBjb2xvciBpbnRv
IHNSR0IKKyAgICAvLyBvdXJzZWx2ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgor
ICAgIGlmIChjb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OlNSR0IgJiYgY2dDb2xvclNwYWNlID09
IHNSR0JDb2xvclNwYWNlUmVmKCkpIHsKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JH
QkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3Qg
YXV0byYgY29sb3IpIHsKKyAgICAgICAgICAgIHJldHVybiB0b1NSR0JBKGNvbG9yKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZl
cnRlZFRvU1JHQkEpOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBudWxscHRyOworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICBD
R0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OworCisgICAgcmV0dXJu
IENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CiB9CiAKIENH
Q29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JTcGFjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKworI2lm
IFVTRShDRykKKworI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCkK
K3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFs
bGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9p
ZHMKKyAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuIFNp
bmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKKyAgICAgICAgLy8gaXMgc1JH
QiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KKyAgICAgICAgLy8gRklYTUU6IElzIHRoaXMg
c3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCisgICAgICAg
IHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpOworICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQorICAgICAgICAgICAgc1JHQkNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyNlbHNlCisgICAgICAg
IHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpOworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyAgICB9KTsKKyAgICByZXR1cm4gc1JH
QkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVm
KCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2U7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhNRTogV2luZG93
cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJhY2tlZCBieSBo
dHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFyU1JHQik7Cisj
ZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKK30KKworQ0dD
b2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0Nv
bG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOworI2Vsc2UKKyAgICAgICAgZGlz
cGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9KTsK
KyAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVmIGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYg
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAg
ICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUV4
dGVuZGVkU1JHQik7CisjZW5kaWYKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBm
b3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0IuCisgICAgICAgIGlmICghY29sb3JT
cGFjZSkKKyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworCisg
ICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOworICAgIH0pOworICAg
IHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworfQorCit9CisKKyNlbmRpZiAvLyBVU0Uo
Q0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNl
Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvclNwYWNlQ0cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisK
K3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9y
U3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xv
clNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdC
Q29sb3JTcGFjZVJlZigpOworCitzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRD
R0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIHN3aXRjaCAoY29sb3JT
cGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNSR0JD
b2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAg
IHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpE
aXNwbGF5UDM6CisgICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJl
ZigpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNzEwNzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDczICs3MSw2IEBAIGlubGluZSBDR0FmZmluZVRyYW5z
Zm9ybSBnZXRVc2VyVG9CYXNlQ1QKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQo
Q0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRl
eHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsK
LSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIE91dC1vZi1kYXRl
IENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMg
bG9naWMgYXZvaWRzCi0gICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25k
aXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCi0gICAgICAg
IC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCi0gICAgICAgIC8vIEZJWE1F
OiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVk
LgotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VTUkdCKTsKLSAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKLSAgICAgICAg
ICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0jZWxz
ZQotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VTUkdCKTsKLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0gICAgfSk7Ci0gICAg
cmV0dXJuIHNSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29s
b3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xv
clNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNh
bGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8gRklY
TUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRy
YWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAgICAgICAgbGluZWFyUkdCQ29s
b3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICBsaW5lYXJSR0JD
b2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVh
clNSR0IpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7
Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKLXsKLSAg
ICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci0gICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gTlVMTDsKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwotI2VuZGlmCi0gICAgICAgIC8vIElm
IHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdC
LgotICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgICAgICBjb2xvclNwYWNlID0gc1JH
QkNvbG9yU3BhY2VSZWYoKTsKLQotICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29s
b3JTcGFjZTsKLSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKLX0K
LQotQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRp
YyBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOwotI2Vsc2UKLSAgICAg
ICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAg
ICB9KTsKLSAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKLX0KLQogc3RhdGljIEludGVy
cG9sYXRpb25RdWFsaXR5IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0ludGVycG9sYXRp
b25RdWFsaXR5IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCwgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDMzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCi10eXBlZGVm
IHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYo
KTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNl
UmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFj
ZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3Bh
Y2VSZWYoKTsKLQogQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRS
ZWYpOwogCi1zdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2Uo
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAg
IGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVm
KCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBsaW5l
YXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0g
ICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotfQotCiBj
bGFzcyBDR0NvbnRleHRTdGF0ZVNhdmVyIHsKIHB1YmxpYzoKICAgICBDR0NvbnRleHRTdGF0ZVNh
dmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416759</attachid>
            <date>2020-12-25 13:26:26 -0800</date>
            <delta_ts>2020-12-25 15:15:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225132626.patch</filename>
            <type>text/plain</type>
            <size>43031</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBudW1iZXIgb2YgcGxhY2VzIG9uZSBuZWVkcyB0byB0
b3VjaCB3aGVuIGFkZGluZyBuZXcgY29sb3IgdHlwZXMgdG86CisKKyAgICAgICAgICAgIC0gQ29s
b3JUeXBlcy5oCisgICAgICAgICAgICAtIENvbG9yQ29udmVyc2lvbi5oL2NwcAorICAgICAgICAg
ICAgLSBDb2xvclNwYWNlLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlz
IHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JTZXJpYWxpemF0aW9uLmggKG9ubHkgbmVl
ZGVkIGlmIHN1cHBvcnQgaW4gQ29sb3IgaXMgcmVxdWlyZWQpLgorICAgICAgICAgICAgLSBDb2xv
clNwYWNlQ0cuaC9jcHAgKG9ubHkgbmVlZGVkIGlmIHN1cHBvcnQgaW4gQ29sb3IgaXMgcmVxdWly
ZWQpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgQ29sb3JTcGFjZS5jcHAsIENvbG9yU3Bh
Y2VDRy5oIGFuZCBDb2xvclNwYWNlQ0cuY3BwLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNl
dENvbG9yKToKKyAgICAgICAgUmVwbGFjZSBzcGVjaWZpYyBvdmVybG9hZHMgb2YgdGhlIGNvbnRy
dWN0b3IgYW5kIHNldENvbG9yIHdpdGggdGVtcGxhdGUgZnVuY3Rpb25zCisgICAgICAgIHRoYXQg
ZG8gdGhlIHNhbWUgdGhpbmdzLiBUaGVzZSBhcmUgc2FmZSB0byBtYWtlIGFzIGlmIGEgbm9uLXN1
cHBvcnRlZCBjb2xvciB0eXBlCisgICAgICAgIChvbmUgdGhhdCBkb2Vzbid0IGhhdmUgYSBjb2xv
clNwYWNlIG1lbWJlcikgaXMgcGFzc2VkIGl0IHdpbGwgZmFpbCB0byBjb21waWxlIGR1ZQorICAg
ICAgICB0byB1c2UgYmVuZWF0aCBFeHRlbmRlZENvbG9yOjpjcmVhdGUoKS4KKworICAgICAgICBB
bHNvIG1vdmVzIFdURjo6VGV4dFN0cmVhbSBvcGVyYXRvcjw8IG92ZXJsb2FkIGZvciBDb2xvclNw
YWNlIG91dCBhbmQgaW50bworICAgICAgICBDb2xvclNwYWNlLmNwcCB3aGVyZSBpdCBtYWtlcyBt
b3JlIHNlbnNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAg
ICAgICAgUmUtb3JkZXIgYW5kIGV4cGxpY2l0bHkgY29tbWVudCBjb252ZXJzaW9uIGZ1bmN0aW9u
cyB0byBiZSBtb3JlIGNsZWFyLgorICAgICAgICAKKyAgICAgICAgQXMgdGhlIGNvbW1lbnQgaW5k
aWNhdGVzLCBhbGwgY29sb3IgdHlwZXMgbXVzdCBpbXBsZW1lbnQgYXQgbGVhc3QgdGhlIGZvbGxv
d2luZworICAgICAgICBjb252ZXJzaW9uczoKKyAgICAgICAgICAgIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CisgICAgICAgICAgICBDb2xvclR5cGU8ZmxvYXQ+
IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisKKyAgICAgICAgVGhpcyBhbGxvd3Mg
Z2VuZXJpYyBmYWxsYmFjayBjb2RlLCBpbmxpbmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgaGVhZGVy
LCB0bworICAgICAgICBzdXBwb3J0IGNvbnZlcnNpb24gdG8gYW5kIGZyb20gYW55IHNldCBvZiBj
b2xvcnMuIEFkZGl0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbnMKKyAgICAgICAgYXJlIHVzZWZ1
bCBmb3IgdGhlIGNhc2VzIHdoZXJlIHRoZSBvcHRpbWFsIG9yIGJhc2UgY29udmVyc2lvbiBpcyBu
b3QgdGhyb3VnaCBYWVoKKyAgICAgICAgc3VjaCBhcyBmcm9tIFNSR0JBIHRvIExpbmVhclNSR0JB
LgorCisgICAgICAgIFRvIGFsbG93IHRoaXMgdG8gd29yayBhIGZldyBhZGRpdGlvbmFsIGNvbnZl
cnNpb24gZnVuY3Rpb25zIHdlcmUgYWRkZWQgd2hpY2gganVzdAorICAgICAgICBjb21iaW5lIGV4
aXN0aW5nIGNvbnZlcnNpb25zIHRvZ2V0aGVyIGFuZCBvbmUgd2FzIGFkZGVkIGZvciBTUkdCQSB0
byBDTVlLQSB3aGljaAorICAgICAgICB3YXMgbWlzc2luZywgdGhvdWdoIGN1cnJlbnRseSB1bnVz
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIE1vdmVkIGZyb20gQ29sb3IuaAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bFdpdGhDb2xvclR5cGUpOgorICAgICAgICBUaGlzIGlzIGEgZ2VuZXJhbGl6YXRpb24gb2YgRXh0
ZW5kZWRDb2xvcjo6Y2FsbE9uVW5kZXJseWluZ1R5cGUoKSB0aGF0IGFsc28KKyAgICAgICAgaGFz
IHRoZSBiZW5lZml0IG9mIG5vdyBiZWluZyBpbiB0aGUgc2FtZSBmaWxlIGFzIHRoZSBjb2xvciB0
eXBlIGRlZmluaXRpb25zLAorICAgICAgICByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGZpbGVzIHBl
b3BsZSBuZWVkIHRvIHRvdWNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yQnlNb2RpZmluZ0VhY2hOb25BbHBo
YUNvbXBvbmVudCk6CisgICAgICAgIFVwZGF0ZSB0byBub3QgYXNzdW1lIHRoYXQgY29sb3JzIHVz
ZSB0aGUgbmFtZXMgcmVkL2dyZWVuL2JsdWUgZm9yIG5vbi1hbHBoYQorICAgICAgICBjb21wb25l
bnRzLiBUaGlzIG1ha2VzIGl0IHdvcmsgZ2VuZXJpY2FsbHkgZm9yIGFsbCBmb3VyIGNvbXBvbmVu
dCBjb2xvciB0eXBlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdU
eXBlIGNvbnN0KToKKyAgICAgICAgVXNlIGdlbmVyYWxpemVkIGZvcm0sIGNhbGxXaXRoQ29sb3JU
eXBlIHRvIGF2b2lkIHJlcXVpcmluZyBtb2RpZnR5aW5nIHRoaXMKKyAgICAgICAgd2hlbiBuZXcg
Y29sb3IgdHlwZXMgYXJlIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQ0dDb2xvcik6CisgICAgICAgIFdo
ZW4gZ29pbmcgdG8gZ2VuZXJhbGl6ZSB0aGlzICh3ZSBjb3VsZCBoYXZlIHNpbXBseSBjYWxsZWQg
CisgICAgICAgIGByZXR1cm4gQ0dDb2xvckNyZWF0ZShjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSksIGNnRmxvYXRDb21wb25lbnRzKSlgCisgICAgICAgIEkgbm90aWNlZCB0aGlzIHdhcyBu
b3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIGZvciBDRyBwb3J0cyB0aGF0IGRvbid0IHN1cHBvcnQK
KyAgICAgICAgYWxsIHRoZSBjb2xvciBzcGFjZXMgV2ViQ29yZSByZXF1aXJlcyAoc3VjaCBhcyBX
aW5kb3dzKS4gRm9yIGluc3RhbmNlLAorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkg
anVzdCByZXR1cm5zIHNSR0JDb2xvclNwYWNlUmVmKCkgb24gd2luZG93cywgbWVhbmluZworICAg
ICAgICB3ZSB3b3VsZCBiZSB0YWtpbmcgc29tZSBEaXNwbGF5UDMgY29tcG9uZW50cyBhbmQgaGF2
aW5nIENHIGludGVycHJldCB0aGVtIGFzCisgICAgICAgIHNSR0IuIFRvIGF2b2lkIHRoaXMsIHdl
IG5vdyBjaGVjayBpZiB0aGUgY29sb3Igc3BhY2UgcmV0dXJuZWQgaXMgdGhlIGZhbGxiYWNrCisg
ICAgICAgIGNvbG9yIHNwYWNlLCBzUkdCLCBhbmQgZG8gb3VyIG93biBjb252ZXJzaW9uIHRvIHNS
R0IgdXNpbmcgQ29sb3JDb252ZXJzaW9uCisgICAgICAgIGJlZm9yZSBjcmVhdGluZyB0aGUgY29s
b3IuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlc29sdmVzIGEgbG9uZyBzdGFuZGluZyBidWcgLyBG
SVhNRSBhcm91bmQgTGluZWFyUkdCIHdoZXJlIHdlIHdlcmUKKyAgICAgICAgdXNpbmcgc1JHQkNv
bG9yU3BhY2VSZWYoKSBmb3IgdGhlbS4gSW4gcHJhY3RpY2UsIHdlIGRvbid0IGFjdHVhbGx5IGV2
ZXIgY3JlYXRlCisgICAgICAgIExpbmVhclJHQiBDR0NvbG9yUmVmcyByaWdodCBub3csIGJ1dCBp
ZiB3ZSBldmVyIGRvIGluIHRoZSBmdXR1cmUsIG1ha2VzIHNlbnNlCisgICAgICAgIHRvIHVzZSB0
aGUgcmlnaHQgY29sb3Igc3BhY2UuIAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JTcGFjZUNHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNwYWNlUmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkQ0dDb2xv
clNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGlzcGxheVAzQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmVkIGNvbG9yIHNw
YWNlIHNwZWNpZmljIENHIGNvZGUgdG8gaXRzIG93biBmaWxlcyB0byBtYWtlIGl0IG1vcmUgY2xl
YXIKKyAgICAgICAgd2hlcmUgdG8gZmluZCB0aGVtLgorCiAyMDIwLTEyLTI1ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGYXN0IHZlcnRpY2Fs
IGFsaWdubWVudCBzaG91bGQgd29yayB3aXRoIGxpbmUtaGVpZ2h0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgs
NyBAQCBlbHNlICgpCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJh
Y2tpbmdMYXllcldpbi5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDRy5jcHAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0Zsb2F0U2l6ZUNHLmNwcApAQCAtMTgyLDYgKzE4Myw3IEBAIGVsc2UgKCkKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0Q2xpZW50LmgKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCiAKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JT1N1cmZhY2VQb29sLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksNiArMjc5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAKQEAgLTU0NCw2ICs1NDUsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCiAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MTEsNiArMTkxMSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFs
aXphdGlvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiAr
MzI3LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViU3lzdGVtQmFjawogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlZpZGVvQ29udGFpbmVyTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDM0LDYgKzQwMzQsNyBA
QAogCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNBQ0YzQkQxMDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkIx
MDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQUUxRkE3MTI5MzlEQjcwMDRD
QjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1h
dG9yTWFjLmggKi87IH07CisJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUZF
REIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxODA5NzlDM0JEMDA0Njc3NDEg
LyogTWVtb3J5Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQjE2QkZGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzFBMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oICovOyB9OwogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyog
Q2FjaGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDExMyw2ICsxNDExNCw5
IEBACiAJCUJDQUNGM0JCMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUQxODA5MTMxQzdBMEQwMDk5MDQw
NiAvKiBlbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IGVuOyBwYXRoID0g
ZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlCQ0FFMUZBNTEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBRkVEQUYyNTk2NkQwNTAwMzBFNkFBIC8qIENvbG9y
U3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JTcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREIyMjU5NjhEMEIwMDMw
RTZBQSAvKiBDb2xvclNwYWNlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JTcGFjZUNHLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBD
b2xvclNwYWNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JTcGFjZUNHLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZCRkUwOTc5QzNCRDAwNDY3NzQxIC8qIE1l
bW9yeUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1v
cnlDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZGMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVtb3J5Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZD
MDAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZENTU1N0eWxlU2hlZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MTcsNiArMjY0MjEsOCBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCisJCQkJQkNBRkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9y
U3BhY2VDRy5jcHAgKi8sCisJCQkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3Bh
Y2VDRy5oICovLAogCQkJCUIyNzUzNTJCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cu
Y3BwICovLAogCQkJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAg
Ki8sCiAJCQkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywK
QEAgLTI2NTIyLDYgKzI2NTI4LDcgQEAKIAkJCQk3Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyog
Q29sb3JNYXRyaXguaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0MTkgLyogQ29sb3JT
ZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4OUM0MTkgLyogQ29s
b3JTZXJpYWxpemF0aW9uLmggKi8sCisJCQkJQkNBRkVEQUYyNTk2NkQwNTAwMzBFNkFBIC8qIENv
bG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNw
YWNlLmggKi8sCiAJCQkJN0MwMjlDNkQyNDkzQzhGODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCAq
LywKIAkJCQkwRkU2Qzc2QjFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMuY3BwICov
LApAQCAtMzQ4MDgsNiArMzQ4MTUsNyBAQAogCQkJCUIyMjI3OUYyMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUxpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RjQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
NzlGNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDIyNDE5NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RkEwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RkQwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNp
b24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMjAgKzE2NSw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGMKICAgICByZXR1cm4gdHMgPDwgc2VyaWFsaXphdGlvbkZvclJl
bmRlclRyZWVBc1RleHQoY29sb3IpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNw
YWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAg
ICB0cyA8PCAiTGluZWFyUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNl
OjpEaXNwbGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3MTA3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDkgKzc3LDcgQEAgcHVibGljOgogICAgIENvbG9yKE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiwgU2VtYW50aWNUYWcpOwogCiAgICAgQ29sb3IoQ29sb3JDb21wb25lbnRzPGZs
b2F0PiwgQ29sb3JTcGFjZSk7Ci0gICAgQ29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci0gICAg
Q29sb3IoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0gICAgQ29sb3IoY29uc3QgRGlzcGxh
eVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBD
b2xvclR5cGU+IENvbG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIAogICAgIGV4cGxpY2l0
IENvbG9yKFdURjo6SGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUpOwogICAgIGV4cGxpY2l0IENvbG9y
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CkBAIC0xODEsOSArMTc5LDcgQEAgcHJp
dmF0ZToKICAgICBDb2xvcihSZWY8RXh0ZW5kZWRDb2xvcj4mJik7CiAKICAgICB2b2lkIHNldENv
bG9yKFNSR0JBPHVpbnQ4X3Q+KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0
PiYpOwotICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0gICAg
dm9pZCBzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CisgICAgdGVtcGxhdGU8dGVt
cGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvclR5cGU8ZmxvYXQ+Jik7CiAgICAgdm9pZCBzZXRFeHRlbmRlZENvbG9yKFJlZjxFeHRlbmRl
ZENvbG9yPiYmKTsKIAogICAgIHZvaWQgdGFnQXNTZW1hbnRpYygpIHsgbV9jb2xvckRhdGEuaW5s
aW5lQ29sb3JBbmRGbGFncyB8PSBpc1NlbWFudGljSW5saW5lQ29sb3JCaXQ7IH0KQEAgLTIxOCw3
ICsyMTQsNiBAQCBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoCiAjZW5k
aWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQogewpAQCAtMjc2LDMw
ICsyNzEsMTIgQEAgaW5saW5lIENvbG9yOjpDb2xvcihPcHRpb25hbDxTUkdCQTx1aW50OAogCiBp
bmxpbmUgQ29sb3I6OkNvbG9yKENvbG9yQ29tcG9uZW50czxmbG9hdD4gY29tcG9uZW50cywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNh
c2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgc2V0Q29sb3IoYXNTUkdCQShjb21wb25lbnRz
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAg
ICAgICAgc2V0Q29sb3IoYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgc2V0Q29sb3IoYXNE
aXNwbGF5UDMoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1pbmxp
bmUgQ29sb3I6OkNvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29s
b3IoY29sb3IpOwotfQotCi1pbmxpbmUgQ29sb3I6OkNvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZs
b2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29sb3IoY29sb3IpOworICAgIGNhbGxXaXRoQ29sb3JU
eXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFsmXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAg
ICAgICAgc2V0Q29sb3IoY29sb3IpOworICAgIH0pOwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9y
KGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5h
bWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRDb2xvcihjb2xvcik7CiB9CkBAIC00MDIsMTcg
KzM3OSw3IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihTUkdCQTx1aW50OF8KICAgICB0
YWdBc1ZhbGlkKCk7CiB9CiAKLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBTUkdC
QTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6
Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBM
aW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5k
ZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xv
cihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVu
YW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IENvbG9y
VHlwZTxmbG9hdD4mIGNvbG9yKQogewogICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xv
cjo6Y3JlYXRlKGNvbG9yKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYQogICAgIH07CiB9CiAKLXN0YXRpYyBMaW5lYXJTUkdCQTxmbG9hdD4gdG9M
aW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5k
Ymxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKQEAgLTEwMCw3ICsx
MDAsNyBAQCBzdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoCiAgICAgcmV0
dXJuIGFzTGluZWFyU1JHQkEoeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxm
bG9hdD4gdG9YWVooY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBz
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGlu
ZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMTIsNyAr
MTEyLDcgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSRwogICAgIHJl
dHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgTGluZWFyRGlzcGxh
eVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+
JiBjb2xvcikKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNj
b2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6
VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXggewpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBMaW5l
YXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGkKICAgICByZXR1cm4gYXNMaW5lYXJEaXNwbGF5
UDMoeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMo
YXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLXN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZ
Wihjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXggewpA
QCAtMTM0LDE2ICsxMzQsNiBAQCBzdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFy
RGlzCiAgICAgcmV0dXJuIGFzWFlaQShsaW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCi17Ci0gICAg
cmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQSh0b1hZWih0b0xpbmVhckRpc3BsYXlQMyhjb2xv
cikpKSk7Ci19Ci0KLURpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMo
dG9YWVoodG9MaW5lYXJTUkdCQShjb2xvcikpKSk7Ci19Ci0KIEhTTEE8ZmxvYXQ+IHRvSFNMQShj
b25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgpAQCAtMjM5LDQgKzIyOSw1OCBAQCBTUkdCQTxmbG9h
dD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mCiAgICAgcmV0dXJuIHsgciwgZywgYiwgYSB9
OwogfQogCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQor
eworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29sb3I7CisKKyAgICBhdXRvIGsgPSAxLjBmIC0g
c3RkOjptYXgoeyByLCBnLCBiIH0pOworICAgIGlmIChrID09IDEuMGYpCisgICAgICAgIHJldHVy
biB7IDAsIDAsIDAsIDEuMGYsIGEgfTsKKyAgICAKKyAgICBhdXRvIGMgPSAoMS4wZiAtIHIgLSBr
KSAvICgxLjBmIC0gayk7CisgICAgYXV0byBtID0gKDEuMGYgLSBnIC0gaykgLyAoMS4wZiAtIGsp
OworICAgIGF1dG8geSA9ICgxLjBmIC0gYiAtIGspIC8gKDEuMGYgLSBrKTsKKyAgICByZXR1cm4g
eyBjLCBtLCB5LCBrLCBhIH07Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxm
bG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJTUkdCQShjb2xvcikp
OworfQorCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7
CisgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQShjb2xvcikpOworfQorCitYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvWFlaQSh0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpOworfQorCitEaXNwbGF5UDM8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9E
aXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvU1JH
QkEoY29sb3IpKTsKK30KKworSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xBKHRvU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
WFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK0NNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IFhZ
WkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9DTVlLQSh0b1NSR0JBKGNvbG9yKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMjcgKzMzLDEwMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBm
bG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIGZsb2F0IHJnYlRvTGluZWFy
Q29sb3JDb21wb25lbnQoZmxvYXQpOwogCisKKy8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxl
YXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBY
WVpBIGNvbG9yIHNwYWNlOgorLy8gICAgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlw
ZTxmbG9hdD4mKTsKKy8vICAgIENvbG9yVHlwZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFla
QTxmbG9hdD4mKTsKKy8vCisvLyBBbnkgYWRkaXRpb25hbCBjb252ZXJzaW9ucyBjYW4gYmUgdGhv
dWdodCBvZiBhcyBvcHRpbWl6YXRpb25zLCBzaG9ydGN1dHRpbmcgdW5uZWNlc3Nhcnkgc3RlcHMs
IHRob3VnaAorLy8gc29tZSBtYXkgYmUgaW50ZWdyYWwgdG8gdGhlIGJhc2UgY29udmVyc2lvbi4K
KworCisvLyBTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNS
R0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8
ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKworLy8gTGluZWFy
U1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNS
R0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwogCisKKy8vIERp
c3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+
Jik7CisKKworLy8gTGluZWFyRGlzcGxheVAzCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYp
OworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxh
eVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKIAotV0VCQ09SRV9FWFBPUlQgU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBP
UlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBTUkdCQTxmbG9hdD4mKTsKIAot
V0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwor
Ly8gSFNMQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8Zmxv
YXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9h
dD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEo
Y29uc3QgSFNMQTxmbG9hdD4mKTsKIAotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8
ZmxvYXQ+Jik7CiAKKy8vIENNWUtBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlL
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKIAotLy8gSWRlbnRpdHkgY29u
dmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykKKworLy8gSWRlbnRpdHkgY29u
dmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykuCiAKIGNvbnN0ZXhwciBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xv
cjsgfQogY29uc3RleHByIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExp
bmVhclNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgRGlz
cGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikg
eyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGlu
ZWFyRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVy
biBjb2xvcjsgfQogY29uc3RleHByIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0
PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgQ01ZS0E8ZmxvYXQ+IHRvQ01Z
S0EoY29uc3QgQ01ZS0E8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhw
ciBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBj
b2xvcjsgfQorCisKKy8vIEZhbGxiYWNrIGNvbnZlcnNpb25zLgorCisvLyBBbGwgdHlwZXMgYXJl
IHJlcXVpcmVkIHRvIGhhdmUgYSBjb252ZXJzaW9uIHRvIFhZWkEsIHNvIHRoZXNlIGFyZSBndWFy
YW50ZWVkIHRvIHdvcmsgaWYKKy8vIGFub3RoZXIgb3ZlcmxvYWQgaXMgbm90IGFscmVhZHkgcHJv
dmlkZWQuCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b1NSR0JBKHRvWFlaQShjb2xvcikpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJTUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFQmIGNv
bG9yKQoreworICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFQm
IGNvbG9yKQoreworICAgIHJldHVybiB0b0xpbmVhckRpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvSFNMQShjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xBKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9DTVlLQShjb25zdCBUJiBjb2xvcikKK3sKKyAg
ICByZXR1cm4gdG9DTVlLQSh0b1hZWkEoY29sb3IpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6
U1JHQjoKKyAgICAgICAgdHMgPDwgInNSR0IiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENv
bG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgdHMgPDwgIkxpbmVhclJHQiI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICB0cyA8PCAi
RGlzcGxheVAzIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSwxMCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFtOworfQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewpAQCAtMzMs
NCArMzcsNiBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBEaXNwbGF5
UDMKIH07CiAKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2
aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JU
eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNiArMzUzLDIwIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXIKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBkZWNsdHlwZShhdXRvKSBjYWxs
V2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7CisgICAgc3dpdGNoIChjb2xv
clNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gc3Rk
OjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVu
dHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdCQShj
b21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzRGlzcGxh
eVAzKGNvbXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NS
R0JBKGNvbXBvbmVudHMpKTsKK30KIAogLy8gUGFja2VkIENvbG9yIEZvcm1hdHMKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5o
CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTIgKzE0NywxMiBAQCB0ZW1w
bGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0Vh
Y2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBGdW5jdG9yJiYgZnVu
Y3RvcikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFkZSB0byB3b3JrIHdpdGgg
Y29sb3JzIHRoYXQgZG9uJ3QgdXNlIHRoZSBuYW1lcyByZWQsIGdyZWVuLCBhbmQgYmx1ZSBmb3Ig
dGhlaXIgY2hhbm5lbHMuCi0gICAgYXV0byBjb3B5ID0gY29sb3I7Ci0gICAgY29weS5yZWQgPSBz
dGQ6Omludm9rZShmdW5jdG9yLCBjb2xvci5yZWQpOwotICAgIGNvcHkuZ3JlZW4gPSBzdGQ6Omlu
dm9rZShmdW5jdG9yLCBjb2xvci5ncmVlbik7Ci0gICAgY29weS5ibHVlID0gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb2xvci5ibHVlKTsKLSAgICByZXR1cm4g
Y29weTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7Cisg
ICAgYXV0byBjb3B5ID0gY29tcG9uZW50czsKKyAgICBjb3B5WzBdID0gc3RkOjppbnZva2UoZnVu
Y3RvciwgY29tcG9uZW50c1swXSk7CisgICAgY29weVsxXSA9IHN0ZDo6aW52b2tlKGZ1bmN0b3Is
IGNvbXBvbmVudHNbMV0pOworICAgIGNvcHlbMl0gPSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8
RnVuY3Rvcj4oZnVuY3RvciksIGNvbXBvbmVudHNbMl0pOworICAgIHJldHVybiB7IGNvcHlbMF0s
IGNvcHlbMV0sIGNvcHlbMl0sIGNvcHlbM10gfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlIGNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0
IENvbG9yVHlwZSYgY29sb3IsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDcgQEAgaW5saW5lIEV4dGVuZGVkQ29s
b3I6OkV4dGVuZGVkQ29sb3IoQ29sbwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBkZWNs
dHlwZShhdXRvKSBFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlwZShGdW5jdG9yJiYg
ZnVuY3RvcikgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fY29sb3JTcGFjZSkgewotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2Fy
ZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShtX2NvbXBvbmVudHMpKTsKLSAgICBjYXNlIENv
bG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9y
d2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdCQShtX2NvbXBvbmVudHMpKTsKLSAg
ICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5UDMobV9jb21wb25lbnRz
KSk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShtX2NvbXBvbmVu
dHMpKTsKKyAgICByZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUobV9jb21wb25lbnRzLCBtX2NvbG9y
U3BhY2UsIHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZp
c2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgVVNFKENHKQog
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cu
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC05NywyMSArOTcsMjQgQEAgQ29s
b3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIFNlbWFudGljVAogc3RhdGljIENHQ29sb3JSZWYg
bGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gW2NvbG9yU3BhY2Us
IGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKLSAgICBhdXRv
IFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50
c1s0XSB7IHIsIGcsIGIsIGEgfTsKIAotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNh
c2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNv
bG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShkaXNwbGF5UDNDb2xvclNw
YWNlUmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVh
clJHQjoKLSAgICAgICAgLy8gRklYTUU6IERvIHdlIGV2ZXIgY3JlYXRlIENHQ29sb3JSZWZzIGlu
IHRoZXNlIHNwYWNlcz8gSXQgbWF5IG9ubHkgYmUgSW1hZ2VCdWZmZXJzLgotICAgICAgICByZXR1
cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7
CisgICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7
CisKKyAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFj
ZXMgcmVxdWlyZWQgYW5kIHJldHVybgorICAgIC8vIHNSR0JDb2xvclNwYWNlUmVmKCkgZm9yIHVu
c3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlCisgICAgLy8gbmVlZCB0
byBlYWdlcmx5IGFuZCBwb3RlbnRpYWxseSBsb3NzaWx5IGNvbnZlcnQgdGhlIGNvbG9yIGludG8g
c1JHQgorICAgIC8vIG91cnNlbHZlcyBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisg
ICAgaWYgKGNvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQiAmJiBjZ0NvbG9yU3BhY2UgPT0g
c1JHQkNvbG9yU3BhY2VSZWYoKSkgeworICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdC
QSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBh
dXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIHRvU1JHQkEoY29sb3IpOworICAgICAg
ICB9KTsKKyAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVy
dGVkVG9TUkdCQSk7CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgIENH
RmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CisKKyAgICByZXR1cm4g
Q0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKTsKIH0KIAogQ0dD
b2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorCisjaWYg
VVNFKENHKQorCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQor
eworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxs
YXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lk
cworICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gU2lu
Y2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cworICAgICAgICAvLyBpcyBzUkdC
LCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgorICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBz
dGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KKyAgICAgICAg
c1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNl
U1JHQik7CisgICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCisgICAgICAgICAgICBzUkdCQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworI2Vsc2UKKyAgICAgICAg
c1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNl
U1JHQik7CisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgIH0pOworICAgIHJldHVybiBzUkdC
Q29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYo
KQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShXSU4pCisgICAgICAgIC8vIEZJWE1FOiBXaW5kb3dz
IHNob3VsZCBiZSBhYmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5IGh0
dHA6Ly93ZWJraXQub3JnL2IvODAwMDAuCisgICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBz
UkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsKKyNl
bmRpZgorICAgIH0pOworICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOworfQorCitDR0Nv
bG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZURpc3BsYXlQMyk7CisjZWxzZQorICAgICAgICBkaXNw
bGF5UDNDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgorICAgIH0pOwor
ICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlOworfQorCitDR0NvbG9yU3BhY2VSZWYgZXh0
ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IG51bGxwdHI7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAg
IGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0
ZW5kZWRTUkdCKTsKKyNlbmRpZgorICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzdXBwb3J0IGZv
ciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KKyAgICAgICAgaWYgKCFjb2xvclNw
YWNlKQorICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAg
ICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CisgICAgfSk7CisgICAg
cmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShD
RykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKwor
dHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3BhY2VSZWY7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNw
YWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JT
cGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9y
U3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JD
b2xvclNwYWNlUmVmKCk7CisKK3N0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENH
Q29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgc3dpdGNoIChjb2xvclNw
YWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAg
cmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRp
c3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVm
KCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzEsNzMgKzcxLDYgQEAgaW5saW5lIENHQWZmaW5lVHJhbnNm
b3JtIGdldFVzZXJUb0Jhc2VDVAogICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChD
R0NvbnRleHRHZXRDVE0oY29udGV4dCksIENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KENHQ29udGV4
dEdldEJhc2VDVE0oY29udGV4dCkpKTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNw
YWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOwot
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8gT3V0LW9mLWRhdGUg
Q0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBs
b2dpYyBhdm9pZHMKLSAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRp
dGlvbnMuIFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKLSAgICAgICAg
Ly8gaXMgc1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KLSAgICAgICAgLy8gRklYTUU6
IElzIHRoaXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQu
Ci0gICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NH
Q29sb3JTcGFjZVNSR0IpOwotICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQotICAgICAgICAg
ICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSNlbHNl
Ci0gICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NH
Q29sb3JTcGFjZVNSR0IpOwotI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKLSAgICB9KTsKLSAgICBy
ZXR1cm4gc1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xv
clNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9y
U3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBGSVhN
RTogV2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJh
Y2tlZCBieSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgotICAgICAgICBsaW5lYXJSR0JDb2xv
clNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIGxpbmVhclJHQkNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFy
U1JHQik7Ci0jZW5kaWYKLSAgICB9KTsKLSAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsK
LX0KLQotQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQotewotICAg
IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKLSAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBOVUxMOwotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVkU1JHQik7Ci0jZW5kaWYKLSAgICAgICAgLy8gSWYg
dGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0Iu
Ci0gICAgICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdC
Q29sb3JTcGFjZVJlZigpOwotCi0gICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xv
clNwYWNlOwotICAgIH0pOwotICAgIHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwotfQot
Ci1DR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZURpc3BsYXlQMyk7Ci0jZWxzZQotICAgICAg
ICBkaXNwbGF5UDNDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAg
IH0pOwotICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlOwotfQotCiBzdGF0aWMgSW50ZXJw
b2xhdGlvblF1YWxpdHkgY29udmVydEludGVycG9sYXRpb25RdWFsaXR5KENHSW50ZXJwb2xhdGlv
blF1YWxpdHkgcXVhbGl0eSkKIHsKICAgICBzd2l0Y2ggKHF1YWxpdHkpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwLCAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsMzMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
Q29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigp
OwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNl
UmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFj
ZVJlZigpOwotCiBDR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1RNKENHQ29udGV4dFJl
Zik7CiAKLXN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGxpbmVh
clJHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAg
ICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci19Ci0KIGNs
YXNzIENHQ29udGV4dFN0YXRlU2F2ZXIgewogcHVibGljOgogICAgIENHQ29udGV4dFN0YXRlU2F2
ZXIoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgc2F2ZUFuZFJlc3RvcmUgPSB0cnVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416761</attachid>
            <date>2020-12-25 15:15:19 -0800</date>
            <delta_ts>2020-12-25 16:45:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225151518.patch</filename>
            <type>text/plain</type>
            <size>43138</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBudW1iZXIgb2YgcGxhY2VzIG9uZSBuZWVkcyB0byB0
b3VjaCB3aGVuIGFkZGluZyBuZXcgY29sb3IgdHlwZXMgdG86CisKKyAgICAgICAgICAgIC0gQ29s
b3JUeXBlcy5oCisgICAgICAgICAgICAtIENvbG9yQ29udmVyc2lvbi5oL2NwcAorICAgICAgICAg
ICAgLSBDb2xvclNwYWNlLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlz
IHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JTZXJpYWxpemF0aW9uLmggKG9ubHkgbmVl
ZGVkIGlmIHN1cHBvcnQgaW4gQ29sb3IgaXMgcmVxdWlyZWQpLgorICAgICAgICAgICAgLSBDb2xv
clNwYWNlQ0cuaC9jcHAgKG9ubHkgbmVlZGVkIGlmIHN1cHBvcnQgaW4gQ29sb3IgaXMgcmVxdWly
ZWQpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgQ29sb3JTcGFjZS5jcHAsIENvbG9yU3Bh
Y2VDRy5oIGFuZCBDb2xvclNwYWNlQ0cuY3BwLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNl
dENvbG9yKToKKyAgICAgICAgUmVwbGFjZSBzcGVjaWZpYyBvdmVybG9hZHMgb2YgdGhlIGNvbnRy
dWN0b3IgYW5kIHNldENvbG9yIHdpdGggdGVtcGxhdGUgZnVuY3Rpb25zCisgICAgICAgIHRoYXQg
ZG8gdGhlIHNhbWUgdGhpbmdzLiBUaGVzZSBhcmUgc2FmZSB0byBtYWtlIGFzIGlmIGEgbm9uLXN1
cHBvcnRlZCBjb2xvciB0eXBlCisgICAgICAgIChvbmUgdGhhdCBkb2Vzbid0IGhhdmUgYSBjb2xv
clNwYWNlIG1lbWJlcikgaXMgcGFzc2VkIGl0IHdpbGwgZmFpbCB0byBjb21waWxlIGR1ZQorICAg
ICAgICB0byB1c2UgYmVuZWF0aCBFeHRlbmRlZENvbG9yOjpjcmVhdGUoKS4KKworICAgICAgICBB
bHNvIG1vdmVzIFdURjo6VGV4dFN0cmVhbSBvcGVyYXRvcjw8IG92ZXJsb2FkIGZvciBDb2xvclNw
YWNlIG91dCBhbmQgaW50bworICAgICAgICBDb2xvclNwYWNlLmNwcCB3aGVyZSBpdCBtYWtlcyBt
b3JlIHNlbnNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAg
ICAgICAgUmUtb3JkZXIgYW5kIGV4cGxpY2l0bHkgY29tbWVudCBjb252ZXJzaW9uIGZ1bmN0aW9u
cyB0byBiZSBtb3JlIGNsZWFyLgorICAgICAgICAKKyAgICAgICAgQXMgdGhlIGNvbW1lbnQgaW5k
aWNhdGVzLCBhbGwgY29sb3IgdHlwZXMgbXVzdCBpbXBsZW1lbnQgYXQgbGVhc3QgdGhlIGZvbGxv
d2luZworICAgICAgICBjb252ZXJzaW9uczoKKyAgICAgICAgICAgIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CisgICAgICAgICAgICBDb2xvclR5cGU8ZmxvYXQ+
IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisKKyAgICAgICAgVGhpcyBhbGxvd3Mg
Z2VuZXJpYyBmYWxsYmFjayBjb2RlLCBpbmxpbmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgaGVhZGVy
LCB0bworICAgICAgICBzdXBwb3J0IGNvbnZlcnNpb24gdG8gYW5kIGZyb20gYW55IHNldCBvZiBj
b2xvcnMuIEFkZGl0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbnMKKyAgICAgICAgYXJlIHVzZWZ1
bCBmb3IgdGhlIGNhc2VzIHdoZXJlIHRoZSBvcHRpbWFsIG9yIGJhc2UgY29udmVyc2lvbiBpcyBu
b3QgdGhyb3VnaCBYWVoKKyAgICAgICAgc3VjaCBhcyBmcm9tIFNSR0JBIHRvIExpbmVhclNSR0JB
LgorCisgICAgICAgIFRvIGFsbG93IHRoaXMgdG8gd29yayBhIGZldyBhZGRpdGlvbmFsIGNvbnZl
cnNpb24gZnVuY3Rpb25zIHdlcmUgYWRkZWQgd2hpY2gganVzdAorICAgICAgICBjb21iaW5lIGV4
aXN0aW5nIGNvbnZlcnNpb25zIHRvZ2V0aGVyIGFuZCBvbmUgd2FzIGFkZGVkIGZvciBTUkdCQSB0
byBDTVlLQSB3aGljaAorICAgICAgICB3YXMgbWlzc2luZywgdGhvdWdoIGN1cnJlbnRseSB1bnVz
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIE1vdmVkIGZyb20gQ29sb3IuaAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bFdpdGhDb2xvclR5cGUpOgorICAgICAgICBUaGlzIGlzIGEgZ2VuZXJhbGl6YXRpb24gb2YgRXh0
ZW5kZWRDb2xvcjo6Y2FsbE9uVW5kZXJseWluZ1R5cGUoKSB0aGF0IGFsc28KKyAgICAgICAgaGFz
IHRoZSBiZW5lZml0IG9mIG5vdyBiZWluZyBpbiB0aGUgc2FtZSBmaWxlIGFzIHRoZSBjb2xvciB0
eXBlIGRlZmluaXRpb25zLAorICAgICAgICByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGZpbGVzIHBl
b3BsZSBuZWVkIHRvIHRvdWNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yQnlNb2RpZmluZ0VhY2hOb25BbHBo
YUNvbXBvbmVudCk6CisgICAgICAgIFVwZGF0ZSB0byBub3QgYXNzdW1lIHRoYXQgY29sb3JzIHVz
ZSB0aGUgbmFtZXMgcmVkL2dyZWVuL2JsdWUgZm9yIG5vbi1hbHBoYQorICAgICAgICBjb21wb25l
bnRzLiBUaGlzIG1ha2VzIGl0IHdvcmsgZ2VuZXJpY2FsbHkgZm9yIGFsbCBmb3VyIGNvbXBvbmVu
dCBjb2xvciB0eXBlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdU
eXBlIGNvbnN0KToKKyAgICAgICAgVXNlIGdlbmVyYWxpemVkIGZvcm0sIGNhbGxXaXRoQ29sb3JU
eXBlIHRvIGF2b2lkIHJlcXVpcmluZyBtb2RpZnR5aW5nIHRoaXMKKyAgICAgICAgd2hlbiBuZXcg
Y29sb3IgdHlwZXMgYXJlIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQ0dDb2xvcik6CisgICAgICAgIFdo
ZW4gZ29pbmcgdG8gZ2VuZXJhbGl6ZSB0aGlzICh3ZSBjb3VsZCBoYXZlIHNpbXBseSBjYWxsZWQg
CisgICAgICAgIGByZXR1cm4gQ0dDb2xvckNyZWF0ZShjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSksIGNnRmxvYXRDb21wb25lbnRzKSlgCisgICAgICAgIEkgbm90aWNlZCB0aGlzIHdhcyBu
b3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIGZvciBDRyBwb3J0cyB0aGF0IGRvbid0IHN1cHBvcnQK
KyAgICAgICAgYWxsIHRoZSBjb2xvciBzcGFjZXMgV2ViQ29yZSByZXF1aXJlcyAoc3VjaCBhcyBX
aW5kb3dzKS4gRm9yIGluc3RhbmNlLAorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkg
anVzdCByZXR1cm5zIHNSR0JDb2xvclNwYWNlUmVmKCkgb24gd2luZG93cywgbWVhbmluZworICAg
ICAgICB3ZSB3b3VsZCBiZSB0YWtpbmcgc29tZSBEaXNwbGF5UDMgY29tcG9uZW50cyBhbmQgaGF2
aW5nIENHIGludGVycHJldCB0aGVtIGFzCisgICAgICAgIHNSR0IuIFRvIGF2b2lkIHRoaXMsIHdl
IG5vdyBjaGVjayBpZiB0aGUgY29sb3Igc3BhY2UgcmV0dXJuZWQgaXMgdGhlIGZhbGxiYWNrCisg
ICAgICAgIGNvbG9yIHNwYWNlLCBzUkdCLCBhbmQgZG8gb3VyIG93biBjb252ZXJzaW9uIHRvIHNS
R0IgdXNpbmcgQ29sb3JDb252ZXJzaW9uCisgICAgICAgIGJlZm9yZSBjcmVhdGluZyB0aGUgY29s
b3IuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlc29sdmVzIGEgbG9uZyBzdGFuZGluZyBidWcgLyBG
SVhNRSBhcm91bmQgTGluZWFyUkdCIHdoZXJlIHdlIHdlcmUKKyAgICAgICAgdXNpbmcgc1JHQkNv
bG9yU3BhY2VSZWYoKSBmb3IgdGhlbS4gSW4gcHJhY3RpY2UsIHdlIGRvbid0IGFjdHVhbGx5IGV2
ZXIgY3JlYXRlCisgICAgICAgIExpbmVhclJHQiBDR0NvbG9yUmVmcyByaWdodCBub3csIGJ1dCBp
ZiB3ZSBldmVyIGRvIGluIHRoZSBmdXR1cmUsIG1ha2VzIHNlbnNlCisgICAgICAgIHRvIHVzZSB0
aGUgcmlnaHQgY29sb3Igc3BhY2UuIAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JTcGFjZUNHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNwYWNlUmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkQ0dDb2xv
clNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGlzcGxheVAzQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmVkIGNvbG9yIHNw
YWNlIHNwZWNpZmljIENHIGNvZGUgdG8gaXRzIG93biBmaWxlcyB0byBtYWtlIGl0IG1vcmUgY2xl
YXIKKyAgICAgICAgd2hlcmUgdG8gZmluZCB0aGVtLgorCiAyMDIwLTEyLTI1ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGYXN0IHZlcnRpY2Fs
IGFsaWdubWVudCBzaG91bGQgd29yayB3aXRoIGxpbmUtaGVpZ2h0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgs
NyBAQCBlbHNlICgpCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJh
Y2tpbmdMYXllcldpbi5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDRy5jcHAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0Zsb2F0U2l6ZUNHLmNwcApAQCAtMTgyLDYgKzE4Myw3IEBAIGVsc2UgKCkKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0Q2xpZW50LmgKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCiAKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JT1N1cmZhY2VQb29sLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksNiArMjc5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAKQEAgLTU0NCw2ICs1NDUsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCiAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MTEsNiArMTkxMSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFs
aXphdGlvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiAr
MzI3LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViU3lzdGVtQmFjawogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlZpZGVvQ29udGFpbmVyTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDM0LDYgKzQwMzQsNyBA
QAogCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNBQ0YzQkQxMDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkIx
MDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQUUxRkE3MTI5MzlEQjcwMDRD
QjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1h
dG9yTWFjLmggKi87IH07CisJCUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUZF
REIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxODA5NzlDM0JEMDA0Njc3NDEg
LyogTWVtb3J5Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQjE2QkZGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzFBMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oICovOyB9OwogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyog
Q2FjaGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDExMyw2ICsxNDExNCw5
IEBACiAJCUJDQUNGM0JCMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUQxODA5MTMxQzdBMEQwMDk5MDQw
NiAvKiBlbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IGVuOyBwYXRoID0g
ZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlCQ0FFMUZBNTEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBRkVEQUYyNTk2NkQwNTAwMzBFNkFBIC8qIENvbG9y
U3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JTcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREIyMjU5NjhEMEIwMDMw
RTZBQSAvKiBDb2xvclNwYWNlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JTcGFjZUNHLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBD
b2xvclNwYWNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JTcGFjZUNHLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZCRkUwOTc5QzNCRDAwNDY3NzQxIC8qIE1l
bW9yeUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1v
cnlDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZGMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVtb3J5Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZD
MDAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZENTU1N0eWxlU2hlZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MTcsNiArMjY0MjEsOCBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCisJCQkJQkNBRkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9y
U3BhY2VDRy5jcHAgKi8sCisJCQkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3Bh
Y2VDRy5oICovLAogCQkJCUIyNzUzNTJCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cu
Y3BwICovLAogCQkJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAg
Ki8sCiAJCQkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywK
QEAgLTI2NTIyLDYgKzI2NTI4LDcgQEAKIAkJCQk3Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyog
Q29sb3JNYXRyaXguaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0MTkgLyogQ29sb3JT
ZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4OUM0MTkgLyogQ29s
b3JTZXJpYWxpemF0aW9uLmggKi8sCisJCQkJQkNBRkVEQUYyNTk2NkQwNTAwMzBFNkFBIC8qIENv
bG9yU3BhY2UuY3BwICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNw
YWNlLmggKi8sCiAJCQkJN0MwMjlDNkQyNDkzQzhGODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCAq
LywKIAkJCQkwRkU2Qzc2QjFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMuY3BwICov
LApAQCAtMzQ4MDgsNiArMzQ4MTUsNyBAQAogCQkJCUIyMjI3OUYyMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUxpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RjQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
NzlGNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDIyNDE5NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RkEwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RkQwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNp
b24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMjAgKzE2NSw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGMKICAgICByZXR1cm4gdHMgPDwgc2VyaWFsaXphdGlvbkZvclJl
bmRlclRyZWVBc1RleHQoY29sb3IpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNw
YWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAg
ICB0cyA8PCAiTGluZWFyUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNl
OjpEaXNwbGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3MTA3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDkgKzc3LDcgQEAgcHVibGljOgogICAgIENvbG9yKE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiwgU2VtYW50aWNUYWcpOwogCiAgICAgQ29sb3IoQ29sb3JDb21wb25lbnRzPGZs
b2F0PiwgQ29sb3JTcGFjZSk7Ci0gICAgQ29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci0gICAg
Q29sb3IoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0gICAgQ29sb3IoY29uc3QgRGlzcGxh
eVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBD
b2xvclR5cGU+IENvbG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIAogICAgIGV4cGxpY2l0
IENvbG9yKFdURjo6SGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUpOwogICAgIGV4cGxpY2l0IENvbG9y
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CkBAIC0xODEsOSArMTc5LDcgQEAgcHJp
dmF0ZToKICAgICBDb2xvcihSZWY8RXh0ZW5kZWRDb2xvcj4mJik7CiAKICAgICB2b2lkIHNldENv
bG9yKFNSR0JBPHVpbnQ4X3Q+KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0
PiYpOwotICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0gICAg
dm9pZCBzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CisgICAgdGVtcGxhdGU8dGVt
cGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvclR5cGU8ZmxvYXQ+Jik7CiAgICAgdm9pZCBzZXRFeHRlbmRlZENvbG9yKFJlZjxFeHRlbmRl
ZENvbG9yPiYmKTsKIAogICAgIHZvaWQgdGFnQXNTZW1hbnRpYygpIHsgbV9jb2xvckRhdGEuaW5s
aW5lQ29sb3JBbmRGbGFncyB8PSBpc1NlbWFudGljSW5saW5lQ29sb3JCaXQ7IH0KQEAgLTIxOCw3
ICsyMTQsNiBAQCBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoCiAjZW5k
aWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQogewpAQCAtMjc2LDMw
ICsyNzEsMTIgQEAgaW5saW5lIENvbG9yOjpDb2xvcihPcHRpb25hbDxTUkdCQTx1aW50OAogCiBp
bmxpbmUgQ29sb3I6OkNvbG9yKENvbG9yQ29tcG9uZW50czxmbG9hdD4gY29tcG9uZW50cywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNh
c2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgc2V0Q29sb3IoYXNTUkdCQShjb21wb25lbnRz
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAg
ICAgICAgc2V0Q29sb3IoYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgc2V0Q29sb3IoYXNE
aXNwbGF5UDMoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1pbmxp
bmUgQ29sb3I6OkNvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29s
b3IoY29sb3IpOwotfQotCi1pbmxpbmUgQ29sb3I6OkNvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZs
b2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29sb3IoY29sb3IpOworICAgIGNhbGxXaXRoQ29sb3JU
eXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFsmXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAg
ICAgICAgc2V0Q29sb3IoY29sb3IpOworICAgIH0pOwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9y
KGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5h
bWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRDb2xvcihjb2xvcik7CiB9CkBAIC00MDIsMTcg
KzM3OSw3IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihTUkdCQTx1aW50OF8KICAgICB0
YWdBc1ZhbGlkKCk7CiB9CiAKLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBTUkdC
QTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6
Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBM
aW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5k
ZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xv
cihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVu
YW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IENvbG9y
VHlwZTxmbG9hdD4mIGNvbG9yKQogewogICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xv
cjo6Y3JlYXRlKGNvbG9yKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYQogICAgIH07CiB9CiAKLXN0YXRpYyBMaW5lYXJTUkdCQTxmbG9hdD4gdG9M
aW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5k
Ymxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKQEAgLTEwMCw3ICsx
MDAsNyBAQCBzdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoCiAgICAgcmV0
dXJuIGFzTGluZWFyU1JHQkEoeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxm
bG9hdD4gdG9YWVooY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBz
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGlu
ZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMTIsNyAr
MTEyLDcgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSRwogICAgIHJl
dHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgTGluZWFyRGlzcGxh
eVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+
JiBjb2xvcikKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNj
b2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6
VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXggewpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBMaW5l
YXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGkKICAgICByZXR1cm4gYXNMaW5lYXJEaXNwbGF5
UDMoeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMo
YXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLXN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZ
Wihjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXggewpA
QCAtMTM0LDE2ICsxMzQsNiBAQCBzdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFy
RGlzCiAgICAgcmV0dXJuIGFzWFlaQShsaW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCi17Ci0gICAg
cmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQSh0b1hZWih0b0xpbmVhckRpc3BsYXlQMyhjb2xv
cikpKSk7Ci19Ci0KLURpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMo
dG9YWVoodG9MaW5lYXJTUkdCQShjb2xvcikpKSk7Ci19Ci0KIEhTTEE8ZmxvYXQ+IHRvSFNMQShj
b25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgpAQCAtMjM5LDQgKzIyOSw1OCBAQCBTUkdCQTxmbG9h
dD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mCiAgICAgcmV0dXJuIHsgciwgZywgYiwgYSB9
OwogfQogCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQor
eworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29sb3I7CisKKyAgICBhdXRvIGsgPSAxLjBmIC0g
c3RkOjptYXgoeyByLCBnLCBiIH0pOworICAgIGlmIChrID09IDEuMGYpCisgICAgICAgIHJldHVy
biB7IDAsIDAsIDAsIDEuMGYsIGEgfTsKKyAgICAKKyAgICBhdXRvIGMgPSAoMS4wZiAtIHIgLSBr
KSAvICgxLjBmIC0gayk7CisgICAgYXV0byBtID0gKDEuMGYgLSBnIC0gaykgLyAoMS4wZiAtIGsp
OworICAgIGF1dG8geSA9ICgxLjBmIC0gYiAtIGspIC8gKDEuMGYgLSBrKTsKKyAgICByZXR1cm4g
eyBjLCBtLCB5LCBrLCBhIH07Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxm
bG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJTUkdCQShjb2xvcikp
OworfQorCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7
CisgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQShjb2xvcikpOworfQorCitYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvWFlaQSh0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpOworfQorCitEaXNwbGF5UDM8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9E
aXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvU1JH
QkEoY29sb3IpKTsKK30KKworSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xBKHRvU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
WFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK0NNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IFhZ
WkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9DTVlLQSh0b1NSR0JBKGNvbG9yKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMjcgKzMzLDEwMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBm
bG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIGZsb2F0IHJnYlRvTGluZWFy
Q29sb3JDb21wb25lbnQoZmxvYXQpOwogCisKKy8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxl
YXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBY
WVpBIGNvbG9yIHNwYWNlOgorLy8gICAgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlw
ZTxmbG9hdD4mKTsKKy8vICAgIENvbG9yVHlwZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFla
QTxmbG9hdD4mKTsKKy8vCisvLyBBbnkgYWRkaXRpb25hbCBjb252ZXJzaW9ucyBjYW4gYmUgdGhv
dWdodCBvZiBhcyBvcHRpbWl6YXRpb25zLCBzaG9ydGN1dHRpbmcgdW5uZWNlc3Nhcnkgc3RlcHMs
IHRob3VnaAorLy8gc29tZSBtYXkgYmUgaW50ZWdyYWwgdG8gdGhlIGJhc2UgY29udmVyc2lvbi4K
KworCisvLyBTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNS
R0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8
ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKworLy8gTGluZWFy
U1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNS
R0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwogCisKKy8vIERp
c3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+
Jik7CisKKworLy8gTGluZWFyRGlzcGxheVAzCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYp
OworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxh
eVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKIAotV0VCQ09SRV9FWFBPUlQgU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBP
UlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBTUkdCQTxmbG9hdD4mKTsKIAot
V0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwor
Ly8gSFNMQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8Zmxv
YXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9h
dD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEo
Y29uc3QgSFNMQTxmbG9hdD4mKTsKIAotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8
ZmxvYXQ+Jik7CiAKKy8vIENNWUtBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlL
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKIAotLy8gSWRlbnRpdHkgY29u
dmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykKKworLy8gSWRlbnRpdHkgY29u
dmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykuCiAKIGNvbnN0ZXhwciBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xv
cjsgfQogY29uc3RleHByIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExp
bmVhclNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgRGlz
cGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikg
eyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGlu
ZWFyRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVy
biBjb2xvcjsgfQogY29uc3RleHByIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0
PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgQ01ZS0E8ZmxvYXQ+IHRvQ01Z
S0EoY29uc3QgQ01ZS0E8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhw
ciBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBj
b2xvcjsgfQorCisKKy8vIEZhbGxiYWNrIGNvbnZlcnNpb25zLgorCisvLyBBbGwgdHlwZXMgYXJl
IHJlcXVpcmVkIHRvIGhhdmUgYSBjb252ZXJzaW9uIHRvIFhZWkEsIHNvIHRoZXNlIGFyZSBndWFy
YW50ZWVkIHRvIHdvcmsgaWYKKy8vIGFub3RoZXIgb3ZlcmxvYWQgaXMgbm90IGFscmVhZHkgcHJv
dmlkZWQuCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b1NSR0JBKHRvWFlaQShjb2xvcikpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJTUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFQmIGNv
bG9yKQoreworICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFQm
IGNvbG9yKQoreworICAgIHJldHVybiB0b0xpbmVhckRpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvSFNMQShjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xBKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9DTVlLQShjb25zdCBUJiBjb2xvcikKK3sKKyAg
ICByZXR1cm4gdG9DTVlLQSh0b1hZWkEoY29sb3IpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6
U1JHQjoKKyAgICAgICAgdHMgPDwgInNSR0IiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENv
bG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgdHMgPDwgIkxpbmVhclJHQiI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICB0cyA8PCAi
RGlzcGxheVAzIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSwxMCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFtOworfQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewpAQCAtMzMs
NCArMzcsNiBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBEaXNwbGF5
UDMKIH07CiAKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2
aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JU
eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM1Myw2ICszNTQsMjAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y29uc3RleHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29s
b3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cywgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2Up
IHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9r
ZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEoY29tcG9uZW50cykpOwor
ICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gc3RkOjppbnZv
a2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0xpbmVhclNSR0JBKGNvbXBvbmVu
dHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5UDMoY29t
cG9uZW50cykpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEoY29t
cG9uZW50cykpOworfQogCiAvLyBQYWNrZWQgQ29sb3IgRm9ybWF0cwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlz
aW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NywxMiArMTQ3LDEyIEBAIHRlbXBsYXRlPHRl
bXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2wKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JU
eXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFs
cGhhQ29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIEZ1bmN0b3ImJiBmdW5jdG9yKQog
ewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIHRvIHdvcmsgd2l0aCBjb2xvcnMg
dGhhdCBkb24ndCB1c2UgdGhlIG5hbWVzIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGZvciB0aGVpciBj
aGFubmVscy4KLSAgICBhdXRvIGNvcHkgPSBjb2xvcjsKLSAgICBjb3B5LnJlZCA9IHN0ZDo6aW52
b2tlKGZ1bmN0b3IsIGNvbG9yLnJlZCk7Ci0gICAgY29weS5ncmVlbiA9IHN0ZDo6aW52b2tlKGZ1
bmN0b3IsIGNvbG9yLmdyZWVuKTsKLSAgICBjb3B5LmJsdWUgPSBzdGQ6Omludm9rZShzdGQ6OmZv
cndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGNvbG9yLmJsdWUpOwotICAgIHJldHVybiBjb3B5Owor
ICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsKKyAgICBhdXRv
IGNvcHkgPSBjb21wb25lbnRzOworICAgIGNvcHlbMF0gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBj
b21wb25lbnRzWzBdKTsKKyAgICBjb3B5WzFdID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29tcG9u
ZW50c1sxXSk7CisgICAgY29weVsyXSA9IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9y
PihmdW5jdG9yKSwgY29tcG9uZW50c1syXSk7CisgICAgcmV0dXJuIHsgY29weVswXSwgY29weVsx
XSwgY29weVsyXSwgY29weVszXSB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+
IGNvbnN0ZXhwciBDb2xvclR5cGUgY29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JU
eXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFscGhhKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkocmV2aXNpb24gMjcxMDc0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsNyBAQCBpbmxpbmUgRXh0ZW5kZWRDb2xvcjo6RXh0
ZW5kZWRDb2xvcihDb2xvCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGRlY2x0eXBlKGF1
dG8pIEV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKEZ1bmN0b3ImJiBmdW5jdG9y
KSBjb25zdAogewotICAgIHN3aXRjaCAobV9jb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNw
YWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0
b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKG1fY29tcG9uZW50cykpOwotICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1
bmN0b3I+KGZ1bmN0b3IpLCBhc0xpbmVhclNSR0JBKG1fY29tcG9uZW50cykpOwotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpm
b3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0Rpc3BsYXlQMyhtX2NvbXBvbmVudHMpKTsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKG1fY29tcG9uZW50cykpOwor
ICAgIHJldHVybiBjYWxsV2l0aENvbG9yVHlwZShtX2NvbXBvbmVudHMsIG1fY29sb3JTcGFjZSwg
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI3
MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ0cpCiAKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTk3LDIxICs5NywyNCBAQCBDb2xvcjo6Q29s
b3IoQ0dDb2xvclJlZiBjb2xvciwgU2VtYW50aWNUCiBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9u
ZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgIGF1dG8gW3IsIGcs
IGIsIGFdID0gY29tcG9uZW50czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsg
ciwgZywgYiwgYSB9OwogCi0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xv
clNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFj
ZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5
UDM6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYo
KSwgY2dGbG9hdENvbXBvbmVudHMpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgot
ICAgICAgICAvLyBGSVhNRTogRG8gd2UgZXZlciBjcmVhdGUgQ0dDb2xvclJlZnMgaW4gdGhlc2Ug
c3BhY2VzPyBJdCBtYXkgb25seSBiZSBJbWFnZUJ1ZmZlcnMuCi0gICAgICAgIHJldHVybiBDR0Nv
bG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKKyAgICBh
dXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKKworICAg
IC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1
aXJlZCBhbmQgcmV0dXJuCisgICAgLy8gc1JHQkNvbG9yU3BhY2VSZWYoKSBmb3IgdW5zdXBwb3J0
ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UKKyAgICAvLyBuZWVkIHRvIGVhZ2Vy
bHkgYW5kIHBvdGVudGlhbGx5IGxvc3NpbHkgY29udmVydCB0aGUgY29sb3IgaW50byBzUkdCCisg
ICAgLy8gb3Vyc2VsdmVzIGJlZm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICBpZiAo
Y29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCICYmIGNnQ29sb3JTcGFjZSA9PSBzUkdCQ29s
b3JTcGFjZVJlZigpKSB7CisgICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb1NSR0JBID0gY2Fs
bFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNv
bG9yKSB7CisgICAgICAgICAgICByZXR1cm4gdG9TUkdCQShjb2xvcik7CisgICAgICAgIH0pOwor
ICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb1NS
R0JBKTsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBj
Z0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIsIGcsIGIsIGEgfTsKKworICAgIHJldHVybiBDR0NvbG9y
Q3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMpOwogfQogCiBDR0NvbG9yUmVm
IGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisKKyNpZiBVU0UoQ0cp
CisKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0NHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMg
d2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCisgICAg
ICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUg
ZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0IsIHRoaXMg
YWxsIHdvcmtzIG91dCBuaWNlbHkuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5l
ZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBzUkdCQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsK
KyAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBzUkdCQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsK
KyNlbmRpZiAvLyBQTEFURk9STShXSU4pCisgICAgfSk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNw
YWNlOworfQorCitDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCit7Cisg
ICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxk
IGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dl
YmtpdC5vcmcvYi84MDAwMC4KKyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xv
clNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOworI2VuZGlmCisg
ICAgfSk7CisgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFj
ZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNl
UmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKKyNlbHNlCisgICAgICAgIGRpc3BsYXlQM0Nv
bG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0
dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNS
R0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVk
U1JHQkNvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgY29sb3JT
cGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNS
R0IpOworI2VuZGlmCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVu
ZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgorICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCisg
ICAgICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgICAgICBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKKyAgICB9KTsKKyAgICByZXR1cm4g
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCit0eXBlZGVm
IHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYo
KTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVm
KCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJl
ZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKKworc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNw
YWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4g
bGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAz
OgorICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3MyArNzEsNiBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0
VXNlclRvQmFzZUNUCiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KENHQ29udGV4
dEdldENUTShjb250ZXh0KSwgQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0QmFz
ZUNUTShjb250ZXh0KSkpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYo
KQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Ci0gICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0
YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2
b2lkcwotICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4g
U2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwotICAgICAgICAvLyBpcyBz
UkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAgICAgICAvLyBGSVhNRTogSXMgdGhp
cyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KLSAgICAg
ICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlU1JHQik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCi0gICAgICAgICAgICBzUkdC
Q29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotI2Vsc2UKLSAgICAg
ICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlU1JHQik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotICAgIH0pOwotICAgIHJldHVybiBz
UkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VS
ZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsK
LSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIEZJWE1FOiBXaW5k
b3dzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5
IGh0dHA6Ly93ZWJraXQub3JnL2IvODAwMDAuCi0gICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2Ug
PSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFj
ZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsK
LSNlbmRpZgotICAgIH0pOwotICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwotfQotCi1D
R0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewot
ICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKLSNlbmRpZgotICAgICAgICAvLyBJZiB0aGVyZSBp
cyBubyBzdXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KLSAgICAg
ICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0KLSAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7
Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29s
b3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3Bs
YXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAgfSk7Ci0g
ICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci19Ci0KIHN0YXRpYyBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb252ZXJ0SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0
eSBxdWFsaXR5KQogewogICAgIHN3aXRjaCAocXVhbGl0eSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNSwzMyArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvclNw
YWNlQ0cuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAotdHlwZWRlZiBzdHJ1Y3Qg
Q0dDb2xvclNwYWNlICpDR0NvbG9yU3BhY2VSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJD
T1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwot
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsK
LVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7
Ci0KIENHQWZmaW5lVHJhbnNmb3JtIGdldFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVmKTsKIAot
c3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENv
bG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29s
b3JTcGFjZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICBy
ZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogY2xhc3MgQ0dD
b250ZXh0U3RhdGVTYXZlciB7CiBwdWJsaWM6CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlcihDR0Nv
bnRleHRSZWYgY29udGV4dCwgYm9vbCBzYXZlQW5kUmVzdG9yZSA9IHRydWUpCg==
</data>
<flag name="commit-queue"
          id="434365"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416762</attachid>
            <date>2020-12-25 16:22:44 -0800</date>
            <delta_ts>2020-12-25 17:46:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225162243.patch</filename>
            <type>text/plain</type>
            <size>43154</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMCAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBjYWxsV2l0aENvbG9yVHlw
ZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbJl0gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAg
ICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICB9KTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1l
PiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JUeXBl
PGZsb2F0PiYgY29sb3IpCiB7CiAgICAgc2V0Q29sb3IoY29sb3IpOwogfQpAQCAtNDAyLDE3ICsz
NzksNyBAQCBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoU1JHQkE8dWludDhfCiAgICAgdGFn
QXNWYWxpZCgpOwogfQogCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNy
ZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgTGlu
ZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVk
Q29sb3I6OmNyZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3Io
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6
OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJs
b29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKAogICAgIHJldHVy
biBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRi
bG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTEyLDcgKzEx
Miw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkcKICAgICByZXR1
cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29s
b3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRv
TGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAz
KHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVoo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29u
c3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKQEAg
LTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRp
cwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKHRv
WFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBIU0xBPGZsb2F0PiB0b0hTTEEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+
IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsK
IH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sK
KyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOworCisgICAgYXV0byBrID0gMS4wZiAtIHN0
ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9PSAxLjBmKQorICAgICAgICByZXR1cm4g
eyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAgYXV0byBjID0gKDEuMGYgLSByIC0gaykg
LyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBmIC0gZyAtIGspIC8gKDEuMGYgLSBrKTsK
KyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgcmV0dXJuIHsg
YywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsK
K30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0
b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworRGlzcGxheVAzPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRGlz
cGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZ
WkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9TUkdCQShjb2xvcikpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcxMDc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZmxv
YXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBhdCBsZWFz
dCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUgWFla
QSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDb2xvclR5cGU8
ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwgY29udmVyc2lvbnMgY2FuIGJlIHRob3Vn
aHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0
aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRvIHRoZSBiYXNlIGNvbnZlcnNpb24uCisK
KworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZs
b2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
SFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
Q01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNS
R0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIAorCisvLyBEaXNw
bGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckRp
c3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYp
OworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsK
Ky8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdF
QkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKy8v
IEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+
Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZs
b2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKLS8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpCisKKy8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4m
IGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIENNWUtBPGZsb2F0PiB0b0NNWUtB
KGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKworLy8gQWxsIHR5cGVzIGFyZSBy
ZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFu
dGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHByb3Zp
ZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xv
clNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgdHMgPDwgIkRp
c3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJ
KHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKQEAgLTMzLDQg
KzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgRGlzcGxheVAz
CiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlz
aW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNTMsNiArMzU0LDIwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXIKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9y
VHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGNvbXBvbmVudHMsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7
CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKKyAg
ICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdCQShjb21wb25lbnRz
KSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBzdGQ6
Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzRGlzcGxheVAzKGNvbXBv
bmVudHMpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
c3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBv
bmVudHMpKTsKK30KIAogLy8gUGFja2VkIENvbG9yIEZvcm1hdHMKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lv
biAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTIgKzE0NywxMiBAQCB0ZW1wbGF0ZTx0ZW1w
bGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0VhY2hOb25BbHBo
YUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBGdW5jdG9yJiYgZnVuY3RvcikKIHsK
LSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFkZSB0byB3b3JrIHdpdGggY29sb3JzIHRo
YXQgZG9uJ3QgdXNlIHRoZSBuYW1lcyByZWQsIGdyZWVuLCBhbmQgYmx1ZSBmb3IgdGhlaXIgY2hh
bm5lbHMuCi0gICAgYXV0byBjb3B5ID0gY29sb3I7Ci0gICAgY29weS5yZWQgPSBzdGQ6Omludm9r
ZShmdW5jdG9yLCBjb2xvci5yZWQpOwotICAgIGNvcHkuZ3JlZW4gPSBzdGQ6Omludm9rZShmdW5j
dG9yLCBjb2xvci5ncmVlbik7Ci0gICAgY29weS5ibHVlID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb2xvci5ibHVlKTsKLSAgICByZXR1cm4gY29weTsKKyAg
ICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7CisgICAgYXV0byBj
b3B5ID0gY29tcG9uZW50czsKKyAgICBjb3B5WzBdID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29t
cG9uZW50c1swXSk7CisgICAgY29weVsxXSA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbXBvbmVu
dHNbMV0pOworICAgIGNvcHlbMl0gPSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4o
ZnVuY3RvciksIGNvbXBvbmVudHNbMl0pOworICAgIHJldHVybiB7IGNvcHlbMF0sIGNvcHlbMV0s
IGNvcHlbMl0sIGNvcHlbM10gfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBj
b25zdGV4cHIgQ29sb3JUeXBlIGNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9yVHlw
ZSYgY29sb3IsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHJldmlzaW9uIDI3MTA3NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDcgQEAgaW5saW5lIEV4dGVuZGVkQ29sb3I6OkV4dGVu
ZGVkQ29sb3IoQ29sbwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBkZWNsdHlwZShhdXRv
KSBFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlwZShGdW5jdG9yJiYgZnVuY3Rvcikg
Y29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFj
ZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9y
PihmdW5jdG9yKSwgYXNTUkdCQShtX2NvbXBvbmVudHMpKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6
OkxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5j
dG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdCQShtX2NvbXBvbmVudHMpKTsKLSAgICBjYXNlIENv
bG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9y
d2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5UDMobV9jb21wb25lbnRzKSk7Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShtX2NvbXBvbmVudHMpKTsKKyAg
ICByZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUobV9jb21wb25lbnRzLCBtX2NvbG9yU3BhY2UsIHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAyNzEw
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgVVNFKENHKQogCi0jaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC05NywyMSArOTcsMjQgQEAgQ29sb3I6OkNvbG9y
KENHQ29sb3JSZWYgY29sb3IsIFNlbWFudGljVAogc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKLSAgICBhdXRvIFtyLCBnLCBi
LCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIs
IGcsIGIsIGEgfTsKIAotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JT
cGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VS
ZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAz
OgotICAgICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCks
IGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAg
ICAgICAgLy8gRklYTUU6IERvIHdlIGV2ZXIgY3JlYXRlIENHQ29sb3JSZWZzIGluIHRoZXNlIHNw
YWNlcz8gSXQgbWF5IG9ubHkgYmUgSW1hZ2VCdWZmZXJzLgotICAgICAgICByZXR1cm4gQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CisgICAgYXV0
byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7CisKKyAgICAv
LyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVxdWly
ZWQgYW5kIHJldHVybgorICAgIC8vIHNSR0JDb2xvclNwYWNlUmVmKCkgZm9yIHVuc3VwcG9ydGVk
IGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlCisgICAgLy8gbmVlZCB0byBlYWdlcmx5
IGFuZCBwb3RlbnRpYWxseSBsb3NzaWx5IGNvbnZlcnQgdGhlIGNvbG9yIGludG8gc1JHQgorICAg
IC8vIG91cnNlbHZlcyBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisgICAgaWYgKGNv
bG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQiAmJiBjZ0NvbG9yU3BhY2UgPT0gc1JHQkNvbG9y
U3BhY2VSZWYoKSkgeworICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdCQSA9IGNhbGxX
aXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xv
cikgeworICAgICAgICAgICAgcmV0dXJuIHRvU1JHQkEoY29sb3IpOworICAgICAgICB9KTsKKyAg
ICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9TUkdC
QSk7CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgIENHRmxvYXQgY2dG
bG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CisKKyAgICByZXR1cm4gQ0dDb2xvckNy
ZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKTsKIH0KIAogQ0dDb2xvclJlZiBj
YWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorCisjaWYgVVNFKENHKQor
CisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3Bh
Y2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBPdXQtb2YtZGF0ZSBD
RyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxv
Z2ljIGF2b2lkcworICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0
aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cworICAgICAgICAv
LyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgorICAgICAgICAvLyBGSVhNRTog
SXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4K
KyAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlU1JHQik7CisgICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCisgICAgICAgICAg
ICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworI2Vsc2UK
KyAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlU1JHQik7CisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgIH0pOworICAgIHJl
dHVybiBzUkdCQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9y
U3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JT
cGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShXSU4pCisgICAgICAgIC8vIEZJWE1F
OiBXaW5kb3dzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFj
a2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvODAwMDAuCisgICAgICAgIGxpbmVhclJHQkNvbG9y
U3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICAgICAgbGluZWFyUkdCQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJT
UkdCKTsKKyNlbmRpZgorICAgIH0pOworICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwor
fQorCitDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3Rh
dGljIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0gQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZURpc3BsYXlQMyk7CisjZWxzZQorICAg
ICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgor
ICAgIH0pOworICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlOworfQorCitDR0NvbG9yU3Bh
Y2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IG51bGxwdHI7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlRXh0ZW5kZWRTUkdCKTsKKyNlbmRpZgorICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBz
dXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KKyAgICAgICAgaWYg
KCFjb2xvclNwYWNlKQorICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVm
KCk7CisKKyAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CisgICAg
fSk7CisgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Cit9CisKK30KKworI2VuZGlm
IC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yU3BhY2VDRy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKwordHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3BhY2VSZWY7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNS
R0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFy
UkdCQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3Bs
YXlQM0NvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRl
bmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisKK3N0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVm
IGNhY2hlZENHQ29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgc3dpdGNo
IChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1
cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoK
KyAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIENvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYo
KTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHNSR0JDb2xv
clNwYWNlUmVmKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDI3
MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNzMgKzcxLDYgQEAgaW5saW5lIENHQWZm
aW5lVHJhbnNmb3JtIGdldFVzZXJUb0Jhc2VDVAogICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9y
bUNvbmNhdChDR0NvbnRleHRHZXRDVE0oY29udGV4dCksIENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0
KENHQ29udGV4dEdldEJhc2VDVE0oY29udGV4dCkpKTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNS
R0JDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xv
clNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNh
bGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8gT3V0
LW9mLWRhdGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JH
Qi4gVGhpcyBsb2dpYyBhdm9pZHMKLSAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRo
b3NlIGNvbmRpdGlvbnMuIFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MK
LSAgICAgICAgLy8gaXMgc1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KLSAgICAgICAg
Ly8gRklYTUU6IElzIHRoaXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3
YXMgZml4ZWQuCi0gICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOwotICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQot
ICAgICAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0Io
KTsKLSNlbHNlCi0gICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOwotI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKLSAgICB9
KTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBsaW5l
YXJSR0JDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVh
clJHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAg
ICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRo
aXMgaXMgdHJhY2tlZCBieSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgotICAgICAgICBsaW5l
YXJSR0JDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIGxp
bmVhclJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlTGluZWFyU1JHQik7Ci0jZW5kaWYKLSAgICB9KTsKLSAgICByZXR1cm4gbGluZWFyUkdCQ29s
b3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYo
KQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsK
LSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBOVUxM
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVkU1JHQik7Ci0jZW5kaWYKLSAgICAg
ICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNr
IHRvIHNSR0IuCi0gICAgICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgICAgIGNvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotCi0gICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3Bh
Y2UgPSBjb2xvclNwYWNlOwotICAgIH0pOwotICAgIHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNw
YWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpCi17Ci0g
ICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlOwotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0g
Q0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZURpc3BsYXlQMyk7Ci0jZWxz
ZQotICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNl
bmRpZgotICAgIH0pOwotICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlOwotfQotCiBzdGF0
aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgY29udmVydEludGVycG9sYXRpb25RdWFsaXR5KENHSW50
ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSkKIHsKICAgICBzd2l0Y2ggKHF1YWxpdHkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDEwLCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMzMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAK
LXR5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDND
b2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdC
Q29sb3JTcGFjZVJlZigpOwotCiBDR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1RNKENH
Q29udGV4dFJlZik7CiAKLXN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29s
b3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNwYWNl
KSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc1JHQkNvbG9y
U3BhY2VSZWYoKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgcmV0
dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7
Ci19Ci0KIGNsYXNzIENHQ29udGV4dFN0YXRlU2F2ZXIgewogcHVibGljOgogICAgIENHQ29udGV4
dFN0YXRlU2F2ZXIoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgc2F2ZUFuZFJlc3RvcmUgPSB0
cnVlKQo=
</data>
<flag name="commit-queue"
          id="434367"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416763</attachid>
            <date>2020-12-25 17:00:01 -0800</date>
            <delta_ts>2020-12-25 20:06:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225170000.patch</filename>
            <type>text/plain</type>
            <size>43676</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMCAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBjYWxsV2l0aENvbG9yVHlw
ZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbJl0gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAg
ICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICB9KTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1l
PiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JUeXBl
PGZsb2F0PiYgY29sb3IpCiB7CiAgICAgc2V0Q29sb3IoY29sb3IpOwogfQpAQCAtNDAyLDE3ICsz
NzksNyBAQCBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoU1JHQkE8dWludDhfCiAgICAgdGFn
QXNWYWxpZCgpOwogfQogCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNy
ZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgTGlu
ZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVk
Q29sb3I6OmNyZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3Io
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6
OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJs
b29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKAogICAgIHJldHVy
biBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRi
bG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTEyLDcgKzEx
Miw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkcKICAgICByZXR1
cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29s
b3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRv
TGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAz
KHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVoo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29u
c3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKQEAg
LTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRp
cwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKHRv
WFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBIU0xBPGZsb2F0PiB0b0hTTEEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+
IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsK
IH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sK
KyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOworCisgICAgYXV0byBrID0gMS4wZiAtIHN0
ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9PSAxLjBmKQorICAgICAgICByZXR1cm4g
eyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAgYXV0byBjID0gKDEuMGYgLSByIC0gaykg
LyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBmIC0gZyAtIGspIC8gKDEuMGYgLSBrKTsK
KyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgcmV0dXJuIHsg
YywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsK
K30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0
b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworRGlzcGxheVAzPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRGlz
cGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZ
WkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9TUkdCQShjb2xvcikpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcxMDc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZmxv
YXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBhdCBsZWFz
dCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUgWFla
QSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDb2xvclR5cGU8
ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwgY29udmVyc2lvbnMgY2FuIGJlIHRob3Vn
aHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0
aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRvIHRoZSBiYXNlIGNvbnZlcnNpb24uCisK
KworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZs
b2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
SFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
Q01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNS
R0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIAorCisvLyBEaXNw
bGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckRp
c3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYp
OworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsK
Ky8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdF
QkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKy8v
IEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+
Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZs
b2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKLS8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpCisKKy8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4m
IGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIENNWUtBPGZsb2F0PiB0b0NNWUtB
KGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKworLy8gQWxsIHR5cGVzIGFyZSBy
ZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFu
dGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHByb3Zp
ZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xv
clNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgdHMgPDwgIkRp
c3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJ
KHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKQEAgLTMzLDQg
KzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgRGlzcGxheVAz
CiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlz
aW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IENvbXBvbmVudFRyYWl0czsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRz
PHVpbnQ4X3Q+IHsKQEAgLTM1Myw2ICszNTQsMjAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29u
c3RleHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JU
eXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShz
dGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEoY29tcG9uZW50cykpOworICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0xpbmVhclNSR0JBKGNvbXBvbmVudHMp
KTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5UDMoY29tcG9u
ZW50cykpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBz
dGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEoY29tcG9u
ZW50cykpOworfQogCiAvLyBQYWNrZWQgQ29sb3IgRm9ybWF0cwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0
aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJDb2xvclR5cGVzLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgpAQCAtMzMsOCArMzQsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7
Ci0KIGZsb2F0IGxpZ2h0bmVzcyhjb25zdCBTUkdCQTxmbG9hdD4mKTsKIGZsb2F0IGx1bWluYW5j
ZShjb25zdCBTUkdCQTxmbG9hdD4mKTsKIGZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgU1JHQkE8
ZmxvYXQ+JiwgY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CkBAIC0xNDcsMTIgKzE0NiwxMiBAQCB0ZW1w
bGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0Vh
Y2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBGdW5jdG9yJiYgZnVu
Y3RvcikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFkZSB0byB3b3JrIHdpdGgg
Y29sb3JzIHRoYXQgZG9uJ3QgdXNlIHRoZSBuYW1lcyByZWQsIGdyZWVuLCBhbmQgYmx1ZSBmb3Ig
dGhlaXIgY2hhbm5lbHMuCi0gICAgYXV0byBjb3B5ID0gY29sb3I7Ci0gICAgY29weS5yZWQgPSBz
dGQ6Omludm9rZShmdW5jdG9yLCBjb2xvci5yZWQpOwotICAgIGNvcHkuZ3JlZW4gPSBzdGQ6Omlu
dm9rZShmdW5jdG9yLCBjb2xvci5ncmVlbik7Ci0gICAgY29weS5ibHVlID0gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb2xvci5ibHVlKTsKLSAgICByZXR1cm4g
Y29weTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7Cisg
ICAgYXV0byBjb3B5ID0gY29tcG9uZW50czsKKyAgICBjb3B5WzBdID0gc3RkOjppbnZva2UoZnVu
Y3RvciwgY29tcG9uZW50c1swXSk7CisgICAgY29weVsxXSA9IHN0ZDo6aW52b2tlKGZ1bmN0b3Is
IGNvbXBvbmVudHNbMV0pOworICAgIGNvcHlbMl0gPSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8
RnVuY3Rvcj4oZnVuY3RvciksIGNvbXBvbmVudHNbMl0pOworICAgIHJldHVybiB7IGNvcHlbMF0s
IGNvcHlbMV0sIGNvcHlbMl0sIGNvcHlbM10gfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlIGNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0
IENvbG9yVHlwZSYgY29sb3IsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDcgQEAgaW5saW5lIEV4dGVuZGVkQ29s
b3I6OkV4dGVuZGVkQ29sb3IoQ29sbwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBkZWNs
dHlwZShhdXRvKSBFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlwZShGdW5jdG9yJiYg
ZnVuY3RvcikgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fY29sb3JTcGFjZSkgewotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2Fy
ZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShtX2NvbXBvbmVudHMpKTsKLSAgICBjYXNlIENv
bG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9y
d2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdCQShtX2NvbXBvbmVudHMpKTsKLSAg
ICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5UDMobV9jb21wb25lbnRz
KSk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShtX2NvbXBvbmVu
dHMpKTsKKyAgICByZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUobV9jb21wb25lbnRzLCBtX2NvbG9y
U3BhY2UsIHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZp
c2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgVVNFKENHKQog
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cu
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC05NywyMSArOTcsMjQgQEAgQ29s
b3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIFNlbWFudGljVAogc3RhdGljIENHQ29sb3JSZWYg
bGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gW2NvbG9yU3BhY2Us
IGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKLSAgICBhdXRv
IFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50
c1s0XSB7IHIsIGcsIGIsIGEgfTsKIAotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNh
c2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNv
bG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShkaXNwbGF5UDNDb2xvclNw
YWNlUmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVh
clJHQjoKLSAgICAgICAgLy8gRklYTUU6IERvIHdlIGV2ZXIgY3JlYXRlIENHQ29sb3JSZWZzIGlu
IHRoZXNlIHNwYWNlcz8gSXQgbWF5IG9ubHkgYmUgSW1hZ2VCdWZmZXJzLgotICAgICAgICByZXR1
cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7
CisgICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7
CisKKyAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFj
ZXMgcmVxdWlyZWQgYW5kIHJldHVybgorICAgIC8vIHNSR0JDb2xvclNwYWNlUmVmKCkgZm9yIHVu
c3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlCisgICAgLy8gbmVlZCB0
byBlYWdlcmx5IGFuZCBwb3RlbnRpYWxseSBsb3NzaWx5IGNvbnZlcnQgdGhlIGNvbG9yIGludG8g
c1JHQgorICAgIC8vIG91cnNlbHZlcyBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisg
ICAgaWYgKGNvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQiAmJiBjZ0NvbG9yU3BhY2UgPT0g
c1JHQkNvbG9yU3BhY2VSZWYoKSkgeworICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdC
QSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBh
dXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIHRvU1JHQkEoY29sb3IpOworICAgICAg
ICB9KTsKKyAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVy
dGVkVG9TUkdCQSk7CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgIENH
RmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CisKKyAgICByZXR1cm4g
Q0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKTsKIH0KIAogQ0dD
b2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorCisjaWYg
VVNFKENHKQorCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3Jh
cGhpY3NTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDR0NvbG9yU3BhY2VSZWYgc1JH
QkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9y
U3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBPdXQt
b2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdC
LiBUaGlzIGxvZ2ljIGF2b2lkcworICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhv
c2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwor
ICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgorICAgICAgICAv
LyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdh
cyBmaXhlZC4KKyAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CisgICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCisg
ICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
OworI2Vsc2UKKyAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgIH0p
OworICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVmIGxpbmVh
clJHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFy
UkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShXSU4pCisgICAgICAg
IC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhp
cyBpcyB0cmFja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvODAwMDAuCisgICAgICAgIGxpbmVh
clJHQkNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICAgICAgbGlu
ZWFyUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VMaW5lYXJTUkdCKTsKKyNlbmRpZgorICAgIH0pOworICAgIHJldHVybiBsaW5lYXJSR0JDb2xv
clNwYWNlOworfQorCitDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpCit7
CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZURpc3BsYXlQMyk7Cisj
ZWxzZQorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
KyNlbmRpZgorICAgIH0pOworICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlOworfQorCitD
R0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewor
ICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IG51bGxwdHI7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKKyNlbmRpZgorICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBzdXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KKyAg
ICAgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xv
clNwYWNlUmVmKCk7CisKKyAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3Bh
Y2U7CisgICAgfSk7CisgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Cit9CisKK30K
KworI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yU3BhY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkNvbG9yU3BhY2UuaCIKKwordHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3Bh
Y2VSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNw
YWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VS
ZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNl
UmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFj
ZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisKK3N0YXRpYyBpbmxpbmUgQ0dDb2xv
clNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7Cisg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAg
ICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6Okxp
bmVhclJHQjoKKyAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBj
YXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9y
U3BhY2VSZWYoKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHNSR0JDb2xvclNwYWNlUmVmKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJl
dmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNzMgKzcxLDYgQEAgaW5s
aW5lIENHQWZmaW5lVHJhbnNmb3JtIGdldFVzZXJUb0Jhc2VDVAogICAgIHJldHVybiBDR0FmZmlu
ZVRyYW5zZm9ybUNvbmNhdChDR0NvbnRleHRHZXRDVE0oY29udGV4dCksIENHQWZmaW5lVHJhbnNm
b3JtSW52ZXJ0KENHQ29udGV4dEdldEJhc2VDVE0oY29udGV4dCkpKTsKIH0KIAotQ0dDb2xvclNw
YWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IHNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAg
ICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xv
clNwYWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9pZHMKLSAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNo
IHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuIFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGlu
IFdpbmRvd3MKLSAgICAgICAgLy8gaXMgc1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4K
LSAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8x
NTIxMzUxNSB3YXMgZml4ZWQuCi0gICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOwotICAgICAgICBpZiAoIXNSR0JDb2xv
clNwYWNlKQotICAgICAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVE
ZXZpY2VSR0IoKTsKLSNlbHNlCi0gICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOwotI2VuZGlmIC8vIFBMQVRGT1JNKFdJ
TikKLSAgICB9KTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFj
ZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNl
UmVmIGxpbmVhclJHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lO
KQotICAgICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFy
IHNSR0IsIHRoaXMgaXMgdHJhY2tlZCBieSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgotICAg
ICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0g
ICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlTGluZWFyU1JHQik7Ci0jZW5kaWYKLSAgICB9KTsKLSAgICByZXR1cm4gbGlu
ZWFyUkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9y
U3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29s
b3JTcGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UgPSBOVUxMOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBjb2xvclNwYWNlID0gQ0dD
b2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVkU1JHQik7Ci0jZW5k
aWYKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgc1JHQiwg
ZmFsbCBiYWNrIHRvIHNSR0IuCi0gICAgICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgICAg
IGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotCi0gICAgICAgIGV4dGVuZGVkU1JH
QkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwotICAgIH0pOwotICAgIHJldHVybiBleHRlbmRlZFNS
R0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJl
ZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlOwot
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBkaXNwbGF5UDNDb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZURpc3BsYXlQ
Myk7Ci0jZWxzZQotICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLSNlbmRpZgotICAgIH0pOwotICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlOwot
fQotCiBzdGF0aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgY29udmVydEludGVycG9sYXRpb25RdWFs
aXR5KENHSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSkKIHsKICAgICBzd2l0Y2ggKHF1YWxp
dHkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDEwLCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMzMgKzI1LDEzIEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAKLXR5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBz
UkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVu
ZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBk
aXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYg
bGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotCiBDR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9C
YXNlQ1RNKENHQ29udGV4dFJlZik7CiAKLXN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNh
Y2hlZENHQ29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChj
b2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAg
ICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBjYXNlIENvbG9yU3Bh
Y2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsK
LSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNw
YWNlUmVmKCk7Ci19Ci0KIGNsYXNzIENHQ29udGV4dFN0YXRlU2F2ZXIgewogcHVibGljOgogICAg
IENHQ29udGV4dFN0YXRlU2F2ZXIoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgc2F2ZUFuZFJl
c3RvcmUgPSB0cnVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416764</attachid>
            <date>2020-12-25 18:45:04 -0800</date>
            <delta_ts>2020-12-25 19:30:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225184503.patch</filename>
            <type>text/plain</type>
            <size>39261</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViU3lzdGVtQmFjawogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlZpZGVvQ29udGFpbmVyTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDM0LDYgKzQwMzQsNyBAQAogCQlCQ0FCNDE4MjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBQ0YzQkQxMDcy
OTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkIxMDcyOTIxQTAwQzBDOEEzIC8q
IFVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDQUUxRkE3MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmlt
YXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi87IH07CisJ
CUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUZFREIyMjU5NjhEMEIwMDMwRTZB
QSAvKiBDb2xvclNwYWNlQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0IxNkMxODA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QkZGMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzFBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
ICovOyB9OwogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzAzMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDExMyw2ICsxNDExNCw4IEBACiAJCUJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDQUQxODA5MTMxQzdBMEQwMDk5MDQwNiAvKiBlbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlCQ0FFMUZBNTEyOTM5
REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2xvclNwYWNlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNB
RkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2xvclNwYWNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Ix
NkJGRTA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCMTZCRkYwOTc5QzNCRDAwNDY3NzQxIC8qIE1lbW9yeUNhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMwMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjQx
Nyw2ICsyNjQyMCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCAqLywKKwkJCQlCQ0FGRURC
MzI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmNwcCAqLywKKwkJCQlCQ0FGRURCMjI1
OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi8sCiAJCQkJQjI3NTM1MkIwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKIAkJCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRTaXplQ0cuY3BwICovLApAQCAtMzQ4MDgsNiArMzQ4MTMsNyBAQAogCQkJCUIy
MjI3OUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUxpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5RjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlGNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDIyNDE5NDEwN0U3OEE3
MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5RkEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjc5RkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAog
ICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9hdD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9y
KGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0
ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBDb2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFs
dWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVk
Q29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xvcihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9p
ZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mKTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0
IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAz
PGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQg
c2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRDb2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0Fz
U2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGluZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRp
Y0lubGluZUNvbG9yQml0OyB9CkBAIC0yNzYsMzAgKzI3MiwxMiBAQCBpbmxpbmUgQ29sb3I6OkNv
bG9yKE9wdGlvbmFsPFNSR0JBPHVpbnQ4CiAKIGlubGluZSBDb2xvcjo6Q29sb3IoQ29sb3JDb21w
b25lbnRzPGZsb2F0PiBjb21wb25lbnRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Ci0gICAg
c3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICBzZXRDb2xvcihhc1NSR0JBKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICBzZXRDb2xvcihhc0xpbmVhclNSR0JB
KGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlz
cGxheVAzOgotICAgICAgICBzZXRDb2xvcihhc0Rpc3BsYXlQMyhjb21wb25lbnRzKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLWlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRDb2xvcihjb2xvcik7Ci19Ci0KLWlubGluZSBDb2xv
cjo6Q29sb3IoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRDb2xv
cihjb2xvcik7CisgICAgY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwg
WyZdIChjb25zdCBhdXRvJiBjb2xvcikgeworICAgICAgICBzZXRDb2xvcihjb2xvcik7CisgICAg
fSk7CiB9CiAKLWlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxp
bmUgQ29sb3I6OkNvbG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mIGNvbG9yKQogewogICAgIHNl
dENvbG9yKGNvbG9yKTsKIH0KQEAgLTQwMiwxNyArMzgwLDcgQEAgaW5saW5lIHZvaWQgQ29sb3I6
OnNldENvbG9yKFNSR0JBPHVpbnQ4XwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIAotaW5saW5lIHZv
aWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0
RXh0ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpKTsKLX0KLQotaW5saW5l
IHZvaWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCi17
Ci0gICAgc2V0RXh0ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpKTsKLX0K
LQotaW5saW5lIHZvaWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNv
bG9yKQordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gdm9p
ZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYgY29sb3IpCiB7CiAgICAg
c2V0RXh0ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJz
aW9uLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBA
QCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhCiAgICAgfTsKIH0KIAot
c3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+
JiBjb2xvcikKK0xpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8Zmxv
YXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdC
CiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdC
X1hZWl9NYXRyaXguaHRtbApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBMaW5lYXJTUkdCQTxm
bG9hdD4gdG9MaW5lYXJTUkdCQSgKICAgICByZXR1cm4gYXNMaW5lYXJTUkdCQSh4eXpUb0xpbmVh
clNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMo
Y29sb3IpKSk7CiB9CiAKLXN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mIGNvbG9yKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZs
b2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JH
QgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JH
Ql9YWVpfTWF0cml4Lmh0bWwKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgWFlaQTxmbG9hdD4g
dG9YWVooY29uc3QgTGluZWFyU1JHCiAgICAgcmV0dXJuIGFzWFlaQShsaW5lYXJTUkdCVG9YWVpN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7CiB9CiAKLXN0YXRpYyBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAz
KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5l
YXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQogICAgIGNv
bnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeCB7CkBA
IC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJE
aQogICAgIHJldHVybiBhc0xpbmVhckRpc3BsYXlQMyh4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJp
eC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsK
IH0KIAotc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9h
dD4mIGNvbG9yKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9h
dD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3Iv
I2NvbG9yLWNvbnZlcnNpb24tY29kZQogICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBs
aW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeCB7CkBAIC0xMzQsMTYgKzEzNCw2IEBAIHN0YXRpYyBY
WVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJEaXMKICAgICByZXR1cm4gYXNYWVpBKGxpbmVh
ckRpc3BsYXlQM1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JD
b21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNw
bGF5UDM8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gdG9TUkdCQSh0b0xpbmVhclNSR0JB
KHRvWFlaKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSkpKTsKLX0KLQotRGlzcGxheVAzPGZsb2F0
PiB0b0Rpc3BsYXlQMyhjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHJldHVybiB0
b0Rpc3BsYXlQMyh0b0xpbmVhckRpc3BsYXlQMyh0b1hZWih0b0xpbmVhclNSR0JBKGNvbG9yKSkp
KTsKLX0KLQogSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCiB7
CiAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfY29sb3Jfc3BhY2UuCkBA
IC0yMzksNCArMjI5LDU4IEBAIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZsb2F0
PiYKICAgICByZXR1cm4geyByLCBnLCBiLCBhIH07CiB9CiAKK0NNWUtBPGZsb2F0PiB0b0NNWUtB
KGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCit7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBj
b2xvcjsKKworICAgIGF1dG8gayA9IDEuMGYgLSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7CisgICAg
aWYgKGsgPT0gMS4wZikKKyAgICAgICAgcmV0dXJuIHsgMCwgMCwgMCwgMS4wZiwgYSB9OworICAg
IAorICAgIGF1dG8gYyA9ICgxLjBmIC0gciAtIGspIC8gKDEuMGYgLSBrKTsKKyAgICBhdXRvIG0g
PSAoMS4wZiAtIGcgLSBrKSAvICgxLjBmIC0gayk7CisgICAgYXV0byB5ID0gKDEuMGYgLSBiIC0g
aykgLyAoMS4wZiAtIGspOworICAgIHJldHVybiB7IGMsIG0sIHksIGssIGEgfTsKK30KKworWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvWFlaQSh0b0xpbmVhclNSR0JBKGNvbG9yKSk7Cit9CisKK1NSR0JBPGZsb2F0PiB0b1NSR0JB
KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b0xpbmVh
clNSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyRGlzcGxheVAzKGNv
bG9yKSk7Cit9CisKK0Rpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9h
dD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b0xpbmVhckRpc3BsYXlQMyhj
b2xvcikpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9y
KQoreworICAgIHJldHVybiB0b1hZWkEodG9TUkdCQShjb2xvcikpOworfQorCitIU0xBPGZsb2F0
PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b0hTTEEo
dG9TUkdCQShjb2xvcikpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQ01ZS0E8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvU1JHQkEoY29sb3IpKTsKK30KKwor
Q01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJl
dHVybiB0b0NNWUtBKHRvU1JHQkEoY29sb3IpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNyArMzMs
MTAyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGZsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25l
bnQoZmxvYXQpOwogZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9hdCk7CiAKKwor
Ly8gQWxsIGNvbG9yIHR5cGVzIG11c3QgYXQgbGVhc3QgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcg
Y29udmVyc2lvbnMgdG8gYW5kIGZyb20gdGhlIFhZWkEgY29sb3Igc3BhY2U6CisvLyAgICBYWVpB
PGZsb2F0PiB0b1hZWkEoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworLy8gICAgQ29sb3JUeXBl
PGZsb2F0PiB0b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8KKy8vIEFueSBhZGRp
dGlvbmFsIGNvbnZlcnNpb25zIGNhbiBiZSB0aG91Z2h0IG9mIGFzIG9wdGltaXphdGlvbnMsIHNo
b3J0Y3V0dGluZyB1bm5lY2Vzc2FyeSBzdGVwcywgdGhvdWdoCisvLyBzb21lIG1heSBiZSBpbnRl
Z3JhbCB0byB0aGUgYmFzZSBjb252ZXJzaW9uLgorCisKKy8vIFNSR0JBCitXRUJDT1JFX0VYUE9S
VCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25z
CiBXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBT
UkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBT
UkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIENNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0
IFNSR0JBPGZsb2F0PiYpOworCisvLyBMaW5lYXJTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
TGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8v
IEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgTGlu
ZWFyU1JHQkE8ZmxvYXQ+Jik7CiAKKworLy8gRGlzcGxheVAzCitXRUJDT1JFX0VYUE9SVCBYWVpB
PGZsb2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
RGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRk
aXRpb25zCiBXRUJDT1JFX0VYUE9SVCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlz
cGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKKworCisvLyBMaW5lYXJEaXNwbGF5UDMK
K1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJEaXNwbGF5UDM8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFy
RGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQ
T1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZs
b2F0PiYpOwogCi1XRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNw
bGF5UDM8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxh
eVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogCi1XRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0
b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisvLyBIU0xBCitXRUJDT1JFX0VYUE9SVCBYWVpB
PGZsb2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEhTTEE8
ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JF
X0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYpOwogCi1TUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKIAorLy8gQ01ZS0EKK1dFQkNP
UkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKK1dFQkNP
UkVfRVhQT1JUIENNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBB
ZGRpdGlvbnMKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtB
PGZsb2F0PiYpOwogCi0vLyBJZGVudGl0eSBjb252ZXJzaW9ucyAodXNlZnVsIGZvciBnZW5lcmlj
IGNvbnRleHRzKQorCisvLyBJZGVudGl0eSBjb252ZXJzaW9ucyAodXNlZnVsIGZvciBnZW5lcmlj
IGNvbnRleHRzKS4KIAogY29uc3RleHByIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFNSR0JB
PGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyU1JHQkE8
ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyBy
ZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHBy
IExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgTGluZWFyRGlz
cGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgSFNMQTxm
bG9hdD4gdG9IU0xBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0K
K2NvbnN0ZXhwciBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9y
KSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBY
WVpBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CisKKworLy8gRmFsbGJhY2sgY29u
dmVyc2lvbnMuCisKKy8vIEFsbCB0eXBlcyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhIGNvbnZlcnNp
b24gdG8gWFlaQSwgc28gdGhlc2UgYXJlIGd1YXJhbnRlZWQgdG8gd29yayBpZgorLy8gYW5vdGhl
ciBvdmVybG9hZCBpcyBub3QgYWxyZWFkeSBwcm92aWRlZC4KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
U1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZs
b2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0xpbmVh
clNSR0JBKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxm
bG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRGlzcGxh
eVAzKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9h
dD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvTGlu
ZWFyRGlzcGxheVAzKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBT
UkdCQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0hTTEEo
dG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0
b0NNWUtBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0NNWUtBKHRvWFlaQShjb2xv
cikpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIFRleHRTdHJlYW07Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFz
cyBDb2xvclNwYWNlIDogdWludDhfdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDExICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50
cy5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21w
b25lbnRzOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb21wb25lbnRUcmFpdHM7CiAKIHRl
bXBsYXRlPD4gc3RydWN0IENvbXBvbmVudFRyYWl0czx1aW50OF90PiB7CkBAIC0zNTMsNiArMzU0
LDIwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXIKICAgICByZXR1
cm4gIShhID09IGIpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9y
PiBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8
VD4mIGNvbXBvbmVudHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3Ip
Cit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdC
OgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0
b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJH
QjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpE
aXNwbGF5UDM6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rv
cj4oZnVuY3RvciksIGFzRGlzcGxheVAzKGNvbXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1
bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKK30KIAogLy8gUGFja2VkIENv
bG9yIEZvcm1hdHMKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRz
LmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxjbWF0aD4KQEAgLTMzLDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwotCiBmbG9hdCBsaWdodG5lc3MoY29uc3Qg
U1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFuY2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBm
bG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JBPGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZsb2F0
PiYpOwpAQCAtMTQ3LDEyICsxNDYsMTIgQEAgdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5
cGVuYW1lIENvbAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0
b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYmIGZ1bmN0b3IpCiB7Ci0gICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIG1hZGUgdG8gd29yayB3aXRoIGNvbG9ycyB0aGF0IGRvbid0IHVzZSB0aGUg
bmFtZXMgcmVkLCBncmVlbiwgYW5kIGJsdWUgZm9yIHRoZWlyIGNoYW5uZWxzLgotICAgIGF1dG8g
Y29weSA9IGNvbG9yOwotICAgIGNvcHkucmVkID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29sb3Iu
cmVkKTsKLSAgICBjb3B5LmdyZWVuID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29sb3IuZ3JlZW4p
OwotICAgIGNvcHkuYmx1ZSA9IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgY29sb3IuYmx1ZSk7Ci0gICAgcmV0dXJuIGNvcHk7CisgICAgYXV0byBjb21wb25lbnRz
ID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOworICAgIGF1dG8gY29weSA9IGNvbXBvbmVudHM7
CisgICAgY29weVswXSA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbXBvbmVudHNbMF0pOworICAg
IGNvcHlbMV0gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb21wb25lbnRzWzFdKTsKKyAgICBjb3B5
WzJdID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb21wb25l
bnRzWzJdKTsKKyAgICByZXR1cm4geyBjb3B5WzBdLCBjb3B5WzFdLCBjb3B5WzJdLCBjb3B5WzNd
IH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlw
ZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmIGNvbG9yLCB1aW50OF90
IG92ZXJyaWRlQWxwaGEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbmRlZENvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5kZWRDb2xvci5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDE3ICs4Miw3IEBAIGlubGluZSBFeHRlbmRlZENvbG9yOjpFeHRlbmRlZENvbG9yKENvbG8KIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykgRXh0ZW5kZWRDb2xvcjo6
Y2FsbE9uVW5kZXJseWluZ1R5cGUoRnVuY3RvciYmIGZ1bmN0b3IpIGNvbnN0CiB7Ci0gICAgc3dp
dGNoIChtX2NvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JH
QkEobV9jb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFz
TGluZWFyU1JHQkEobV9jb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5
UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVu
Y3RvciksIGFzRGlzcGxheVAzKG1fY29tcG9uZW50cykpOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rv
cj4oZnVuY3RvciksIGFzU1JHQkEobV9jb21wb25lbnRzKSk7CisgICAgcmV0dXJuIGNhbGxXaXRo
Q29sb3JUeXBlKG1fY29tcG9uZW50cywgbV9jb2xvclNwYWNlLCBzdGQ6OmZvcndhcmQ8RnVuY3Rv
cj4oZnVuY3RvcikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShDRykKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dENHLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVD
YWNoZS5oPgpAQCAtOTcsMjEgKzk3LDI0IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9y
LCBTZW1hbnRpY1QKIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKIHsKICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9y
U3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRz
OwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CiAKLSAg
ICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAg
ICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNnRmxvYXRDb21w
b25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJu
IENHQ29sb3JDcmVhdGUoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50
cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIC8vIEZJWE1FOiBE
byB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9yUmVmcyBpbiB0aGVzZSBzcGFjZXM/IEl0IG1heSBvbmx5
IGJlIEltYWdlQnVmZmVycy4KLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOworICAgIGF1dG8gY2dDb2xvclNwYWNlID0g
Y2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOworCisgICAgLy8gU29tZSBDRyBwb3J0cyBk
b24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KKyAg
ICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMuIElu
IHRob3NlIGNhc2VzLCB3ZQorICAgIC8vIG5lZWQgdG8gZWFnZXJseSBhbmQgcG90ZW50aWFsbHkg
bG9zc2lseSBjb252ZXJ0IHRoZSBjb2xvciBpbnRvIHNSR0IKKyAgICAvLyBvdXJzZWx2ZXMgYmVm
b3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIGlmIChjb2xvclNwYWNlICE9IENvbG9y
U3BhY2U6OlNSR0IgJiYgY2dDb2xvclNwYWNlID09IHNSR0JDb2xvclNwYWNlUmVmKCkpIHsKKyAg
ICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21w
b25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAgICAg
IHJldHVybiB0b1NSR0JBKGNvbG9yKTsKKyAgICAgICAgfSk7CisgICAgICAgIGNvbXBvbmVudHMg
PSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOwogICAgIH0KIAotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gW3Is
IGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRd
IHsgciwgZywgYiwgYSB9OworCisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNl
LCBjZ0Zsb2F0Q29tcG9uZW50cyk7CiB9CiAKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgPG11dGV4
PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworI2lm
IFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFsbGF0aW9ucyB3
aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9pZHMKKyAgICAg
ICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuIFNpbmNlIHRoZSBk
ZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKKyAgICAgICAgLy8gaXMgc1JHQiwgdGhpcyBh
bGwgd29ya3Mgb3V0IG5pY2VseS4KKyAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgc3RpbGwgbmVl
ZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCisgICAgICAgIHNSR0JDb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOwor
ICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQorICAgICAgICAgICAgc1JHQkNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyNlbHNlCisgICAgICAgIHNSR0JDb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOwor
I2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyAgICB9KTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3Bh
Y2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAg
ICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2U7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQg
YmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJhY2tlZCBieSBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzgwMDAwLgorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gc1JHQkNvbG9y
U3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBDR0NvbG9y
U3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFyU1JHQik7CisjZW5kaWYKKyAg
ICB9KTsKKyAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNl
UmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VS
ZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOworI2Vsc2UKKyAgICAgICAgZGlzcGxheVAzQ29s
b3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1
cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JH
QkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRT
UkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBjb2xvclNw
YWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVkU1JH
Qik7CisjZW5kaWYKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0ZW5k
ZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0IuCisgICAgICAgIGlmICghY29sb3JTcGFjZSkKKyAg
ICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworCisgICAgICAgIGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOworICAgIH0pOworICAgIHJldHVybiBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoQ0cpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNl
Q0cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisKK3R5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigp
OworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYo
KTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVm
KCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFj
ZVJlZigpOworCitzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3Bh
Y2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewor
ICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNl
UmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHJldHVybiBs
aW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6
CisgICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDczICs3MSw2IEBAIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSBnZXRV
c2VyVG9CYXNlQ1QKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoQ0dDb250ZXh0
R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRCYXNl
Q1RNKGNvbnRleHQpKSk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigp
Ci17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKLSAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3Rh
bGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZv
aWRzCi0gICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBT
aW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCi0gICAgICAgIC8vIGlzIHNS
R0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCi0gICAgICAgIC8vIEZJWE1FOiBJcyB0aGlz
IHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgotICAgICAg
ICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VTUkdCKTsKLSAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKLSAgICAgICAgICAgIHNSR0JD
b2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0jZWxzZQotICAgICAg
ICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VTUkdCKTsKLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0gICAgfSk7Ci0gICAgcmV0dXJuIHNS
R0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJl
ZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOwot
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8gRklYTUU6IFdpbmRv
d3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkg
aHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9
IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOwot
I2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Ci19Ci0KLUNH
Q29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMg
Q0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0g
ICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gTlVMTDsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwotI2VuZGlmCi0gICAgICAgIC8vIElmIHRoZXJlIGlz
IG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgotICAgICAg
ICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKLQotICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFjZTsK
LSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dDb2xv
clNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9y
U3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOwotI2Vsc2UKLSAgICAgICAgZGlzcGxh
eVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICB9KTsKLSAg
ICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKLX0KLQogc3RhdGljIEludGVycG9sYXRpb25R
dWFsaXR5IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0ludGVycG9sYXRpb25RdWFsaXR5
IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJ
KHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCwgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDMzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yU3Bh
Y2VDRy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCi10eXBlZGVmIHN0cnVjdCBD
R0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1X
RUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKLVdFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7Ci1X
RUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwot
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsK
LQogQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYpOwogCi1z
dGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29s
b3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xv
clNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJl
dHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotfQotCiBjbGFzcyBDR0Nv
bnRleHRTdGF0ZVNhdmVyIHsKIHB1YmxpYzoKICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkK
</data>
<flag name="commit-queue"
          id="434371"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416765</attachid>
            <date>2020-12-25 18:49:58 -0800</date>
            <delta_ts>2020-12-25 20:12:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225184957.patch</filename>
            <type>text/plain</type>
            <size>38931</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViU3lzdGVtQmFjawogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlZpZGVvQ29udGFpbmVyTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDM0LDYgKzQwMzQsNyBAQAogCQlCQ0FCNDE4MjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBQ0YzQkQxMDcy
OTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkIxMDcyOTIxQTAwQzBDOEEzIC8q
IFVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDQUUxRkE3MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmlt
YXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi87IH07CisJ
CUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUZFREIyMjU5NjhEMEIwMDMwRTZB
QSAvKiBDb2xvclNwYWNlQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0IxNkMxODA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QkZGMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzFBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
ICovOyB9OwogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzAzMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDExMyw2ICsxNDExNCw4IEBACiAJCUJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDQUQxODA5MTMxQzdBMEQwMDk5MDQwNiAvKiBlbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlCQ0FFMUZBNTEyOTM5
REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2xvclNwYWNlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNB
RkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2xvclNwYWNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Ix
NkJGRTA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCMTZCRkYwOTc5QzNCRDAwNDY3NzQxIC8qIE1lbW9yeUNhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMwMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjQx
Nyw2ICsyNjQyMCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCAqLywKKwkJCQlCQ0FGRURC
MzI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmNwcCAqLywKKwkJCQlCQ0FGRURCMjI1
OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi8sCiAJCQkJQjI3NTM1MkIwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKIAkJCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRTaXplQ0cuY3BwICovLApAQCAtMzQ4MDgsNiArMzQ4MTMsNyBAQAogCQkJCUIy
MjI3OUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUxpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5RjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlGNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDIyNDE5NDEwN0U3OEE3
MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5RkEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjc5RkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAog
ICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9hdD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9y
KGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0
ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBDb2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFs
dWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVk
Q29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xvcihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9p
ZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mKTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0
IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAz
PGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQg
c2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRDb2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0Fz
U2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGluZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRp
Y0lubGluZUNvbG9yQml0OyB9CkBAIC0yMjAsNiArMjE2LDIxIEBAIFdFQkNPUkVfRVhQT1JUIENH
Q29sb3JSZWYgY2FjaGVkQ0dDb2xvcigKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBDb2xvciYpOwogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3Bh
Y2UpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBkZWNsdHlwZShh
dXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGNvbXBvbmVu
dHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7CisgICAgc3dp
dGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICBy
ZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JB
KGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAg
cmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5l
YXJTUkdCQShjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Cisg
ICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IGFzRGlzcGxheVAzKGNvbXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0
b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKK30KKwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCiB7CiAgICAgaWYgKGEuaXNFeHRlbmRlZCgp
IHx8IGIuaXNFeHRlbmRlZCgpKQpAQCAtMjc2LDMwICsyODcsMTIgQEAgaW5saW5lIENvbG9yOjpD
b2xvcihPcHRpb25hbDxTUkdCQTx1aW50OAogCiBpbmxpbmUgQ29sb3I6OkNvbG9yKENvbG9yQ29t
cG9uZW50czxmbG9hdD4gY29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAg
IHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgc2V0Q29sb3IoYXNTUkdCQShjb21wb25lbnRzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgc2V0Q29sb3IoYXNMaW5lYXJTUkdC
QShjb21wb25lbnRzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRp
c3BsYXlQMzoKLSAgICAgICAgc2V0Q29sb3IoYXNEaXNwbGF5UDMoY29tcG9uZW50cykpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi1pbmxpbmUgQ29sb3I6OkNvbG9yKGNvbnN0IFNSR0JB
PGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29sb3IoY29sb3IpOwotfQotCi1pbmxpbmUgQ29s
b3I6OkNvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0Q29s
b3IoY29sb3IpOworICAgIGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2Us
IFsmXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAgc2V0Q29sb3IoY29sb3IpOworICAg
IH0pOwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9yKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNv
bG9yKQordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gaW5s
aW5lIENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBz
ZXRDb2xvcihjb2xvcik7CiB9CkBAIC00MDIsMTcgKzM5NSw3IEBAIGlubGluZSB2b2lkIENvbG9y
OjpzZXRDb2xvcihTUkdCQTx1aW50OF8KICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKLWlubGluZSB2
b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNl
dEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGlu
ZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQot
ewotICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19
Ci0KLWlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBj
b2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZv
aWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mIGNvbG9yKQogewogICAg
IHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVy
c2lvbi5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcg
QEAgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYQogICAgIH07CiB9CiAK
LXN0YXRpYyBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0
PiYgY29sb3IpCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZs
b2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JH
QgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JH
Ql9YWVpfTWF0cml4Lmh0bWwKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgTGluZWFyU1JHQkE8
ZmxvYXQ+IHRvTGluZWFyU1JHQkEoCiAgICAgcmV0dXJuIGFzTGluZWFyU1JHQkEoeHl6VG9MaW5l
YXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyU1JH
QkE8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxm
bG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NS
R0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9S
R0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+
IHRvWFlaKGNvbnN0IExpbmVhclNSRwogICAgIHJldHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFla
TWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9y
KSkpOwogfQogCi1zdGF0aWMgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQ
Myhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGlu
ZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXggewpA
QCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFy
RGkKICAgICByZXR1cm4gYXNMaW5lYXJEaXNwbGF5UDMoeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRy
aXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7
CiB9CiAKLXN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJEaXNwbGF5UDM8Zmxv
YXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJEaXNwbGF5UDM8Zmxv
YXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9y
LyNjb2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4g
bGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXggewpAQCAtMTM0LDE2ICsxMzQsNiBAQCBzdGF0aWMg
WFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyRGlzCiAgICAgcmV0dXJuIGFzWFlaQShsaW5l
YXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9y
Q29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlz
cGxheVAzPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdC
QSh0b1hZWih0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpKSk7Ci19Ci0KLURpc3BsYXlQMzxmbG9h
dD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4g
dG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDModG9YWVoodG9MaW5lYXJTUkdCQShjb2xvcikp
KSk7Ci19Ci0KIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQog
ewogICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgpA
QCAtMjM5LDQgKzIyOSw1OCBAQCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9h
dD4mCiAgICAgcmV0dXJuIHsgciwgZywgYiwgYSB9OwogfQogCitDTVlLQTxmbG9hdD4gdG9DTVlL
QShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0g
Y29sb3I7CisKKyAgICBhdXRvIGsgPSAxLjBmIC0gc3RkOjptYXgoeyByLCBnLCBiIH0pOworICAg
IGlmIChrID09IDEuMGYpCisgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDEuMGYsIGEgfTsKKyAg
ICAKKyAgICBhdXRvIGMgPSAoMS4wZiAtIHIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgYXV0byBt
ID0gKDEuMGYgLSBnIC0gaykgLyAoMS4wZiAtIGspOworICAgIGF1dG8geSA9ICgxLjBmIC0gYiAt
IGspIC8gKDEuMGYgLSBrKTsKKyAgICByZXR1cm4geyBjLCBtLCB5LCBrLCBhIH07Cit9CisKK1hZ
WkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVy
biB0b1hZWkEodG9MaW5lYXJTUkdCQShjb2xvcikpOworfQorCitTUkdCQTxmbG9hdD4gdG9TUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5l
YXJTUkdCQShjb2xvcikpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAz
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhckRpc3BsYXlQMyhj
b2xvcikpOworfQorCitEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMo
Y29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvU1JHQkEoY29sb3IpKTsKK30KKworSFNMQTxmbG9h
dD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xB
KHRvU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZs
b2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisK
K0NNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBy
ZXR1cm4gdG9DTVlLQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjcgKzMz
LDEwMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9u
ZW50KGZsb2F0KTsKIGZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOwogCisK
Ky8vIEFsbCBjb2xvciB0eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5n
IGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgorLy8gICAgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKKy8vICAgIENvbG9yVHlw
ZTxmbG9hdD4gdG9Db2xvclR5cGUoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vCisvLyBBbnkgYWRk
aXRpb25hbCBjb252ZXJzaW9ucyBjYW4gYmUgdGhvdWdodCBvZiBhcyBvcHRpbWl6YXRpb25zLCBz
aG9ydGN1dHRpbmcgdW5uZWNlc3Nhcnkgc3RlcHMsIHRob3VnaAorLy8gc29tZSBtYXkgYmUgaW50
ZWdyYWwgdG8gdGhlIGJhc2UgY29udmVyc2lvbi4KKworCisvLyBTUkdCQQorV0VCQ09SRV9FWFBP
UlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9u
cwogV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3Qg
U1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3Qg
U1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25z
dCBTUkdCQTxmbG9hdD4mKTsKKworLy8gTGluZWFyU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JU
IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7Cisv
LyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExp
bmVhclNSR0JBPGZsb2F0PiYpOwogCisKKy8vIERpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JU
IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFk
ZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRp
c3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CisKKworLy8gTGluZWFyRGlzcGxheVAz
CitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAz
PGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VY
UE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxm
bG9hdD4mKTsKIAotV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlz
cGxheVAzPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3Bs
YXlQMyhjb25zdCBTUkdCQTxmbG9hdD4mKTsKIAotV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4g
dG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworLy8gSFNMQQorV0VCQ09SRV9FWFBPUlQgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBIU0xB
PGZsb2F0PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09S
RV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKIAotU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKKy8vIENNWUtBCitXRUJD
T1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CitXRUJD
T1JFX0VYUE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8g
QWRkaXRpb25zCitXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlL
QTxmbG9hdD4mKTsKIAotLy8gSWRlbnRpdHkgY29udmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJp
YyBjb250ZXh0cykKKworLy8gSWRlbnRpdHkgY29udmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJp
YyBjb250ZXh0cykuCiAKIGNvbnN0ZXhwciBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdC
QTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIExpbmVhclNSR0JB
PGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhw
ciBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IExpbmVhckRp
c3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIEhTTEE8
ZmxvYXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9
Citjb25zdGV4cHIgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgQ01ZS0E8ZmxvYXQ+JiBjb2xv
cikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorCisKKy8vIEZhbGxiYWNrIGNv
bnZlcnNpb25zLgorCisvLyBBbGwgdHlwZXMgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYSBjb252ZXJz
aW9uIHRvIFhZWkEsIHNvIHRoZXNlIGFyZSBndWFyYW50ZWVkIHRvIHdvcmsgaWYKKy8vIGFub3Ro
ZXIgb3ZlcmxvYWQgaXMgbm90IGFscmVhZHkgcHJvdmlkZWQuCisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0
b1NSR0JBKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxm
bG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5l
YXJTUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8
ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0Rpc3Bs
YXlQMyh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0xp
bmVhckRpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
U1JHQkE8ZmxvYXQ+IHRvSFNMQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xB
KHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4g
dG9DTVlLQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9DTVlLQSh0b1hZWkEoY29s
b3IpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkocmV2aXNpb24gMjcxMDc0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw2ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBUZXh0U3RyZWFtOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xh
c3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29s
b3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTMzLDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwotCiBmbG9hdCBsaWdo
dG5lc3MoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFuY2UoY29uc3QgU1JHQkE8
ZmxvYXQ+Jik7CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JBPGZsb2F0PiYsIGNvbnN0
IFNSR0JBPGZsb2F0PiYpOwpAQCAtMTQ3LDEyICsxNDYsMTIgQEAgdGVtcGxhdGU8dGVtcGxhdGU8
dHlwZW5hbWU+IHR5cGVuYW1lIENvbAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5
cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21w
b25lbnQoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYmIGZ1bmN0b3IpCiB7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUgdG8gd29yayB3aXRoIGNvbG9ycyB0aGF0IGRv
bid0IHVzZSB0aGUgbmFtZXMgcmVkLCBncmVlbiwgYW5kIGJsdWUgZm9yIHRoZWlyIGNoYW5uZWxz
LgotICAgIGF1dG8gY29weSA9IGNvbG9yOwotICAgIGNvcHkucmVkID0gc3RkOjppbnZva2UoZnVu
Y3RvciwgY29sb3IucmVkKTsKLSAgICBjb3B5LmdyZWVuID0gc3RkOjppbnZva2UoZnVuY3Rvciwg
Y29sb3IuZ3JlZW4pOwotICAgIGNvcHkuYmx1ZSA9IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxG
dW5jdG9yPihmdW5jdG9yKSwgY29sb3IuYmx1ZSk7Ci0gICAgcmV0dXJuIGNvcHk7CisgICAgYXV0
byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOworICAgIGF1dG8gY29weSA9
IGNvbXBvbmVudHM7CisgICAgY29weVswXSA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbXBvbmVu
dHNbMF0pOworICAgIGNvcHlbMV0gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb21wb25lbnRzWzFd
KTsKKyAgICBjb3B5WzJdID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0
b3IpLCBjb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4geyBjb3B5WzBdLCBjb3B5WzFdLCBjb3B5
WzJdLCBjb3B5WzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3Rl
eHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmIGNv
bG9yLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDE3ICs4Miw3IEBAIGlubGluZSBFeHRlbmRlZENvbG9yOjpFeHRlbmRlZENv
bG9yKENvbG8KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykgRXh0
ZW5kZWRDb2xvcjo6Y2FsbE9uVW5kZXJseWluZ1R5cGUoRnVuY3RvciYmIGZ1bmN0b3IpIGNvbnN0
CiB7Ci0gICAgc3dpdGNoIChtX2NvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVu
Y3RvciksIGFzU1JHQkEobV9jb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5l
YXJSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4o
ZnVuY3RvciksIGFzTGluZWFyU1JHQkEobV9jb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNw
YWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8
RnVuY3Rvcj4oZnVuY3RvciksIGFzRGlzcGxheVAzKG1fY29tcG9uZW50cykpOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZv
cndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEobV9jb21wb25lbnRzKSk7CisgICAgcmV0
dXJuIGNhbGxXaXRoQ29sb3JUeXBlKG1fY29tcG9uZW50cywgbV9jb2xvclNwYWNlLCBzdGQ6OmZv
cndhcmQ8RnVuY3Rvcj4oZnVuY3RvcikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjcxMDc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShDRykKIAotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtOTcsMjEgKzk3LDI0IEBAIENvbG9yOjpDb2xvcihDR0Nv
bG9yUmVmIGNvbG9yLCBTZW1hbnRpY1QKIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9
IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgYXV0byBbciwgZywgYiwgYV0g
PSBjb21wb25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBi
LCBhIH07CiAKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6
OlNSR0I6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCks
IGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAg
ICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpLCBjZ0Zs
b2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAg
IC8vIEZJWE1FOiBEbyB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9yUmVmcyBpbiB0aGVzZSBzcGFjZXM/
IEl0IG1heSBvbmx5IGJlIEltYWdlQnVmZmVycy4KLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOworICAgIGF1dG8gY2dD
b2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOworCisgICAgLy8gU29t
ZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFu
ZCByZXR1cm4KKyAgICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1bnN1cHBvcnRlZCBjb2xv
ciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZQorICAgIC8vIG5lZWQgdG8gZWFnZXJseSBhbmQg
cG90ZW50aWFsbHkgbG9zc2lseSBjb252ZXJ0IHRoZSBjb2xvciBpbnRvIHNSR0IKKyAgICAvLyBv
dXJzZWx2ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIGlmIChjb2xvclNw
YWNlICE9IENvbG9yU3BhY2U6OlNSR0IgJiYgY2dDb2xvclNwYWNlID09IHNSR0JDb2xvclNwYWNl
UmVmKCkpIHsKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENv
bG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsK
KyAgICAgICAgICAgIHJldHVybiB0b1NSR0JBKGNvbG9yKTsKKyAgICAgICAgfSk7CisgICAgICAg
IGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOwog
ICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwor
ICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxvYXRD
b21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OworCisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CiB9CiAKIENHQ29sb3JSZWYgY2FjaGVk
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKworI2lmIFVTRShDRykKKworI2lu
Y2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5z
dGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBh
dm9pZHMKKyAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMu
IFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKKyAgICAgICAgLy8gaXMg
c1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KKyAgICAgICAgLy8gRklYTUU6IElzIHRo
aXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCisgICAg
ICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpOworICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQorICAgICAgICAgICAgc1JH
QkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyNlbHNlCisgICAg
ICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpOworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyAgICB9KTsKKyAgICByZXR1cm4g
c1JHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNl
UmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2U7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhNRTogV2lu
ZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJhY2tlZCBi
eSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNl
ID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAgIGxpbmVhclJHQkNvbG9yU3Bh
Y2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFyU1JHQik7
CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKK30KKwor
Q0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOworI2Vsc2UKKyAgICAgICAg
ZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9
KTsKKyAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVm
IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VS
ZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZUV4dGVuZGVkU1JHQik7CisjZW5kaWYKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9y
dCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0IuCisgICAgICAgIGlmICghY29s
b3JTcGFjZSkKKyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwor
CisgICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOworICAgIH0pOwor
ICAgIHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworfQorCit9CisKKyNlbmRpZiAvLyBV
U0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvclNwYWNlQ0cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CisKK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29s
b3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNv
bG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDND
b2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRT
UkdCQ29sb3JTcGFjZVJlZigpOworCitzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNo
ZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIHN3aXRjaCAoY29s
b3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNS
R0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAg
ICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNl
OjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDczICs3MSw2IEBAIGlubGluZSBDR0FmZmluZVRy
YW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1QKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Db25j
YXQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0Nv
bnRleHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzUkdCQ29s
b3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFj
ZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIE91dC1vZi1k
YXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRo
aXMgbG9naWMgYXZvaWRzCi0gICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBj
b25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCi0gICAg
ICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCi0gICAgICAgIC8vIEZJ
WE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZp
eGVkLgotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKTsKLSAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKLSAgICAg
ICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0j
ZWxzZQotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKTsKLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0gICAgfSk7Ci0g
ICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdC
Q29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JD
b2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8g
RklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlz
IHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAgICAgICAgbGluZWFyUkdC
Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICBsaW5lYXJS
R0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxp
bmVhclNSR0IpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3Bh
Y2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKLXsK
LSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci0gICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gTlVMTDsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwotI2VuZGlmCi0gICAgICAgIC8v
IElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBz
UkdCLgotICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgICAgICBjb2xvclNwYWNlID0g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKLQotICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0g
Y29sb3JTcGFjZTsKLSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsK
LX0KLQotQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQotewotICAgIHN0
YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOwotI2Vsc2UKLSAg
ICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYK
LSAgICB9KTsKLSAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKLX0KLQogc3RhdGljIElu
dGVycG9sYXRpb25RdWFsaXR5IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0ludGVycG9s
YXRpb25RdWFsaXR5IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCwg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDMzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCi10eXBl
ZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JT
cGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9y
U3BhY2VSZWYoKTsKLQogQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRl
eHRSZWYpOwogCi1zdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3Bh
Y2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNl
UmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBs
aW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6
Ci0gICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0gICAgfQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotfQot
CiBjbGFzcyBDR0NvbnRleHRTdGF0ZVNhdmVyIHsKIHB1YmxpYzoKICAgICBDR0NvbnRleHRTdGF0
ZVNhdmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkK
</data>
<flag name="commit-queue"
          id="434372"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416766</attachid>
            <date>2020-12-25 19:03:22 -0800</date>
            <delta_ts>2020-12-25 19:57:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225190321.patch</filename>
            <type>text/plain</type>
            <size>35221</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViU3lzdGVtQmFjawogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlZpZGVvQ29udGFpbmVyTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDM0LDYgKzQwMzQsNyBAQAogCQlCQ0FCNDE4MjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBQ0YzQkQxMDcy
OTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkIxMDcyOTIxQTAwQzBDOEEzIC8q
IFVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDQUUxRkE3MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmlt
YXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi87IH07CisJ
CUJDQUZFREI0MjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNlQ0cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUZFREIyMjU5NjhEMEIwMDMwRTZB
QSAvKiBDb2xvclNwYWNlQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0IxNkMxODA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QkZGMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzFBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
ICovOyB9OwogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzAzMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDExMyw2ICsxNDExNCw4IEBACiAJCUJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDQUQxODA5MTMxQzdBMEQwMDk5MDQwNiAvKiBlbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlCQ0FFMUZBNTEyOTM5
REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2xvclNwYWNlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNB
RkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2xvclNwYWNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Ix
NkJGRTA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCMTZCRkYwOTc5QzNCRDAwNDY3NzQxIC8qIE1lbW9yeUNhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMwMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjQx
Nyw2ICsyNjQyMCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCAqLywKKwkJCQlCQ0FGRURC
MzI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmNwcCAqLywKKwkJCQlCQ0FGRURCMjI1
OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi8sCiAJCQkJQjI3NTM1MkIwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKIAkJCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRTaXplQ0cuY3BwICovLApAQCAtMzQ4MDgsNiArMzQ4MTMsNyBAQAogCQkJCUIy
MjI3OUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUxpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5RjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlGNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDIyNDE5NDEwN0U3OEE3
MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5RkEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjc5RkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzEwNzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5
UDMoY29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyU1JHQkE8ZmxvYXQ+
IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBz
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGlu
ZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMDAsNyAr
MTAwLDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKAogICAgIHJl
dHVybiBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9y
Q29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIFhZWkE8
ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0
PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRw
czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxp
bmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTEyLDcg
KzExMiw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkcKICAgICBy
ZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9u
ZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIExpbmVhckRpc3Bs
YXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQor
TGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0
PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8j
Y29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5
elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxh
eVAzKHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRz
KGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9Y
WVooY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZ
WkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAg
Y29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsK
QEAgLTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVh
ckRpcwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNm
b3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVNS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAg
IHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29s
b3IpKSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZs
b2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAz
KHRvWFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBIU0xBPGZsb2F0PiB0b0hTTEEo
Y29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0ICsyMjksNTggQEAgU1JHQkE8Zmxv
YXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAgIHJldHVybiB7IHIsIGcsIGIsIGEg
fTsKIH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikK
K3sKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOworCisgICAgYXV0byBrID0gMS4wZiAt
IHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9PSAxLjBmKQorICAgICAgICByZXR1
cm4geyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAgYXV0byBjID0gKDEuMGYgLSByIC0g
aykgLyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBmIC0gZyAtIGspIC8gKDEuMGYgLSBr
KTsKKyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgcmV0dXJu
IHsgYywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29sb3Ip
KTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQor
eworICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVy
biB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworRGlzcGxheVAzPGZsb2F0
PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
RGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRv
WFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NS
R0JBKGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0
b1hZWkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBY
WVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9TUkdCQShjb2xvcikp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcxMDc0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBhdCBs
ZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUg
WFlaQSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+IHRvQ29sb3JUeXBlKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwgY29udmVyc2lvbnMgY2FuIGJlIHRo
b3VnaHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0aW5nIHVubmVjZXNzYXJ5IHN0ZXBz
LCB0aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRvIHRoZSBiYXNlIGNvbnZlcnNpb24u
CisKKworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBT
UkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JB
PGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIExpbmVh
clNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JH
QkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJT
UkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBT
UkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIAorCisvLyBE
aXNwbGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5
UDM8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAz
KGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0
PiYpOworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4g
dG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExp
bmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4m
KTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3Bs
YXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFNS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQ
T1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAK
LVdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mKTsK
Ky8vIEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8Zmxv
YXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JB
KGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtB
PGZsb2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpB
KGNvbnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01Z
S0EoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKLS8vIElkZW50aXR5IGNv
bnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpCisKKy8vIElkZW50aXR5IGNv
bnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBM
aW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIERp
c3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3Ip
IHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xp
bmVhckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1
cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9h
dD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIENNWUtBPGZsb2F0PiB0b0NN
WUtBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4
cHIgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKworLy8gQWxsIHR5cGVzIGFy
ZSByZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3Vh
cmFudGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHBy
b3ZpZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25z
dCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYg
Y29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3QgVCYg
Y29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7Cisg
ICAgcmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNw
YWNlLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3By
YWdtYSBvbmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNv
bG9yVHlwZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CkBAIC0z
Myw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBTUkdCQTsKLQogZmxvYXQgbGlnaHRuZXNzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwog
ZmxvYXQgbHVtaW5hbmNlKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogZmxvYXQgY29udHJhc3RSYXRp
byhjb25zdCBTUkdCQTxmbG9hdD4mLCBjb25zdCBTUkdCQTxmbG9hdD4mKTsKQEAgLTE0NywxMiAr
MTQ2LDEyIEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2wKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29s
b3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYgY29sb3Is
IEZ1bmN0b3ImJiBmdW5jdG9yKQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRl
IHRvIHdvcmsgd2l0aCBjb2xvcnMgdGhhdCBkb24ndCB1c2UgdGhlIG5hbWVzIHJlZCwgZ3JlZW4s
IGFuZCBibHVlIGZvciB0aGVpciBjaGFubmVscy4KLSAgICBhdXRvIGNvcHkgPSBjb2xvcjsKLSAg
ICBjb3B5LnJlZCA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbG9yLnJlZCk7Ci0gICAgY29weS5n
cmVlbiA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbG9yLmdyZWVuKTsKLSAgICBjb3B5LmJsdWUg
PSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGNvbG9yLmJsdWUp
OwotICAgIHJldHVybiBjb3B5OworICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25l
bnRzKGNvbG9yKTsKKyAgICBhdXRvIGNvcHkgPSBjb21wb25lbnRzOworICAgIGNvcHlbMF0gPSBz
dGQ6Omludm9rZShmdW5jdG9yLCBjb21wb25lbnRzWzBdKTsKKyAgICBjb3B5WzFdID0gc3RkOjpp
bnZva2UoZnVuY3RvciwgY29tcG9uZW50c1sxXSk7CisgICAgY29weVsyXSA9IHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29tcG9uZW50c1syXSk7CisgICAgcmV0
dXJuIHsgY29weVswXSwgY29weVsxXSwgY29weVsyXSwgY29weVszXSB9OwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgY29sb3JXaXRoT3ZlcnJp
ZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFscGhhKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBV
U0UoQ0cpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkNvbG9y
U3BhY2VDRy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTQxLDYgKzQxLDIx
IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG8KIAogbmFtZXNwYWNl
IFdURiB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IHN0YXRpYyBk
ZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4m
IGNvbXBvbmVudHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7
CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgor
ICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3Ip
LCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoK
KyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9y
KSwgYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNw
bGF5UDM6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4o
ZnVuY3RvciksIGFzRGlzcGxheVAzKGNvbXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0
b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKK30KKwogdGVtcGxhdGU8PgogUmV0
YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0
YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yKQogewpAQCAtOTcsMjEgKzExMiwyNCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJl
ZiBjb2xvciwgU2VtYW50aWNUCiBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xv
ci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29t
cG9uZW50czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9
OwogCi0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdC
OgotICAgICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zs
b2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAg
IHJldHVybiBDR0NvbG9yQ3JlYXRlKGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENv
bXBvbmVudHMpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICAvLyBG
SVhNRTogRG8gd2UgZXZlciBjcmVhdGUgQ0dDb2xvclJlZnMgaW4gdGhlc2Ugc3BhY2VzPyBJdCBt
YXkgb25seSBiZSBJbWFnZUJ1ZmZlcnMuCi0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNS
R0JDb2xvclNwYWNlUmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKKyAgICBhdXRvIGNnQ29sb3JT
cGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKKworICAgIC8vIFNvbWUgQ0cg
cG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0
dXJuCisgICAgLy8gc1JHQkNvbG9yU3BhY2VSZWYoKSBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3Bh
Y2VzLiBJbiB0aG9zZSBjYXNlcywgd2UKKyAgICAvLyBuZWVkIHRvIGVhZ2VybHkgYW5kIHBvdGVu
dGlhbGx5IGxvc3NpbHkgY29udmVydCB0aGUgY29sb3IgaW50byBzUkdCCisgICAgLy8gb3Vyc2Vs
dmVzIGJlZm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICBpZiAoY29sb3JTcGFjZSAh
PSBDb2xvclNwYWNlOjpTUkdCICYmIGNnQ29sb3JTcGFjZSA9PSBzUkdCQ29sb3JTcGFjZVJlZigp
KSB7CisgICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5
cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAg
ICAgICAgICByZXR1cm4gdG9TUkdCQShjb2xvcik7CisgICAgICAgIH0pOworICAgICAgICBjb21w
b25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsKICAgICB9
CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBh
dXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9u
ZW50c1s0XSB7IHIsIGcsIGIsIGEgfTsKKworICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGNnQ29s
b3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMpOwogfQogCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRl
IDxtdXRleD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0NHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7
CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKKyNpZiBQTEFURk9STShXSU4pCisgICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxh
dGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRz
CisgICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5j
ZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0Is
IHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0
aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBz
UkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VT
UkdCKTsKKyAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBz
UkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VT
UkdCKTsKKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCisgICAgfSk7CisgICAgcmV0dXJuIHNSR0JD
b2xvclNwYWNlOworfQorCitDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigp
Cit7CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mg
c2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0
cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KKyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNS
R0JDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0g
Q0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOworI2Vu
ZGlmCisgICAgfSk7CisgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29s
b3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKKyNlbHNlCisgICAgICAgIGRpc3Bs
YXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisgICAgfSk7Cisg
ICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBleHRl
bmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAg
Y29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRl
bmRlZFNSR0IpOworI2VuZGlmCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9y
IGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgorICAgICAgICBpZiAoIWNvbG9yU3Bh
Y2UpCisgICAgICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAg
ICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JTcGFjZUNHLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCit0
eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNw
YWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JT
cGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKKworc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dD
b2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3Bh
Y2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29s
b3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICBy
ZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlz
cGxheVAzOgorICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw3MyArNzEsNiBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zv
cm0gZ2V0VXNlclRvQmFzZUNUCiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KENH
Q29udGV4dEdldENUTShjb250ZXh0KSwgQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0
R2V0QmFzZUNUTShjb250ZXh0KSkpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3Bh
Y2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Ci0g
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBPdXQtb2YtZGF0ZSBD
RyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxv
Z2ljIGF2b2lkcwotICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0
aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwotICAgICAgICAv
LyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAgICAgICAvLyBGSVhNRTog
SXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4K
LSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCi0gICAgICAgICAg
ICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotI2Vsc2UK
LSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlU1JHQik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotICAgIH0pOwotICAgIHJl
dHVybiBzUkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9y
U3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JT
cGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIEZJWE1F
OiBXaW5kb3dzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFj
a2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvODAwMDAuCi0gICAgICAgIGxpbmVhclJHQkNvbG9y
U3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJT
UkdCKTsKLSNlbmRpZgotICAgIH0pOwotICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwot
fQotCi1DR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKLSNlbmRpZgotICAgICAgICAvLyBJZiB0
aGVyZSBpcyBubyBzdXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4K
LSAgICAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JD
b2xvclNwYWNlUmVmKCk7Ci0KLSAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9y
U3BhY2U7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci19Ci0K
LUNHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMg
Q0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3Bh
Y2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAg
IGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAg
fSk7Ci0gICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci19Ci0KIHN0YXRpYyBJbnRlcnBv
bGF0aW9uUXVhbGl0eSBjb252ZXJ0SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9u
UXVhbGl0eSBxdWFsaXR5KQogewogICAgIHN3aXRjaCAocXVhbGl0eSkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwzMyArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
b2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAotdHlwZWRlZiBz
dHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3BhY2VSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7
Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VS
ZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNl
UmVmKCk7Ci0KIENHQWZmaW5lVHJhbnNmb3JtIGdldFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVm
KTsKIAotc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBj
YXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigp
OwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gbGluZWFy
UkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAg
ICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotICAgIH0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogY2xh
c3MgQ0dDb250ZXh0U3RhdGVTYXZlciB7CiBwdWJsaWM6CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZl
cihDR0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBzYXZlQW5kUmVzdG9yZSA9IHRydWUpCg==
</data>
<flag name="commit-queue"
          id="434369"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416768</attachid>
            <date>2020-12-25 19:57:22 -0800</date>
            <delta_ts>2020-12-25 20:45:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225195721.patch</filename>
            <type>text/plain</type>
            <size>43683</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMCAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBjYWxsV2l0aENvbG9yVHlw
ZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbJl0gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAg
ICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICB9KTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1l
PiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JUeXBl
PGZsb2F0PiYgY29sb3IpCiB7CiAgICAgc2V0Q29sb3IoY29sb3IpOwogfQpAQCAtNDAyLDE3ICsz
NzksNyBAQCBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoU1JHQkE8dWludDhfCiAgICAgdGFn
QXNWYWxpZCgpOwogfQogCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNy
ZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgTGlu
ZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVk
Q29sb3I6OmNyZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3Io
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6
OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJs
b29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKAogICAgIHJldHVy
biBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRi
bG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTEyLDcgKzEx
Miw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkcKICAgICByZXR1
cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29s
b3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRv
TGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAz
KHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVoo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29u
c3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKQEAg
LTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRp
cwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKHRv
WFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBIU0xBPGZsb2F0PiB0b0hTTEEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+
IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsK
IH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sK
KyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOworCisgICAgYXV0byBrID0gMS4wZiAtIHN0
ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9PSAxLjBmKQorICAgICAgICByZXR1cm4g
eyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAgYXV0byBjID0gKDEuMGYgLSByIC0gaykg
LyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBmIC0gZyAtIGspIC8gKDEuMGYgLSBrKTsK
KyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgcmV0dXJuIHsg
YywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsK
K30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0
b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworRGlzcGxheVAzPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRGlz
cGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZ
WkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9TUkdCQShjb2xvcikpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcxMDc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZmxv
YXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBhdCBsZWFz
dCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUgWFla
QSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDb2xvclR5cGU8
ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwgY29udmVyc2lvbnMgY2FuIGJlIHRob3Vn
aHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0
aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRvIHRoZSBiYXNlIGNvbnZlcnNpb24uCisK
KworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZs
b2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
SFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
Q01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNS
R0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIAorCisvLyBEaXNw
bGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckRp
c3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYp
OworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsK
Ky8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdF
QkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKy8v
IEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+
Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZs
b2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKLS8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpCisKKy8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4m
IGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIENNWUtBPGZsb2F0PiB0b0NNWUtB
KGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKworLy8gQWxsIHR5cGVzIGFyZSBy
ZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFu
dGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHByb3Zp
ZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xv
clNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgdHMgPDwgIkRp
c3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJ
KHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKQEAgLTMzLDQg
KzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgRGlzcGxheVAz
CiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlz
aW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IENvbXBvbmVudFRyYWl0czsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRz
PHVpbnQ4X3Q+IHsKQEAgLTM1Myw2ICszNTQsMjAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29u
c3RleHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBkZWNsdHlwZShhdXRvKSBjYWxsV2l0
aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGNvbXBvbmVudHMsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7CisgICAgc3dpdGNoIChjb2xvclNw
YWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gc3RkOjpp
bnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMp
KTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdCQShjb21w
b25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVy
biBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzRGlzcGxheVAz
KGNvbXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JB
KGNvbXBvbmVudHMpKTsKK30KIAogLy8gUGFja2VkIENvbG9yIEZvcm1hdHMKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShy
ZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBl
cy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTMzLDggKzM0
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IFNSR0JBOwotCiBmbG9hdCBsaWdodG5lc3MoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBs
dW1pbmFuY2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0
IFNSR0JBPGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZsb2F0PiYpOwpAQCAtMTQ3LDEyICsxNDYsMTIg
QEAgdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbAogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9k
aWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgRnVuY3Rv
ciYmIGZ1bmN0b3IpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUgdG8gd29y
ayB3aXRoIGNvbG9ycyB0aGF0IGRvbid0IHVzZSB0aGUgbmFtZXMgcmVkLCBncmVlbiwgYW5kIGJs
dWUgZm9yIHRoZWlyIGNoYW5uZWxzLgotICAgIGF1dG8gY29weSA9IGNvbG9yOwotICAgIGNvcHku
cmVkID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29sb3IucmVkKTsKLSAgICBjb3B5LmdyZWVuID0g
c3RkOjppbnZva2UoZnVuY3RvciwgY29sb3IuZ3JlZW4pOwotICAgIGNvcHkuYmx1ZSA9IHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29sb3IuYmx1ZSk7Ci0gICAg
cmV0dXJuIGNvcHk7CisgICAgYXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29s
b3IpOworICAgIGF1dG8gY29weSA9IGNvbXBvbmVudHM7CisgICAgY29weVswXSA9IHN0ZDo6aW52
b2tlKGZ1bmN0b3IsIGNvbXBvbmVudHNbMF0pOworICAgIGNvcHlbMV0gPSBzdGQ6Omludm9rZShm
dW5jdG9yLCBjb21wb25lbnRzWzFdKTsKKyAgICBjb3B5WzJdID0gc3RkOjppbnZva2Uoc3RkOjpm
b3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4geyBj
b3B5WzBdLCBjb3B5WzFdLCBjb3B5WzJdLCBjb3B5WzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBo
YShjb25zdCBDb2xvclR5cGUmIGNvbG9yLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCShy
ZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw3IEBAIGlubGluZSBFeHRl
bmRlZENvbG9yOjpFeHRlbmRlZENvbG9yKENvbG8KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gZGVjbHR5cGUoYXV0bykgRXh0ZW5kZWRDb2xvcjo6Y2FsbE9uVW5kZXJseWluZ1R5cGUoRnVu
Y3RvciYmIGZ1bmN0b3IpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtX2NvbG9yU3BhY2UpIHsKLSAg
ICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6
OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEobV9jb21wb25lbnRzKSk7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShz
dGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzTGluZWFyU1JHQkEobV9jb21wb25lbnRz
KSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6
Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzRGlzcGxheVAzKG1fY29t
cG9uZW50cykpOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEobV9j
b21wb25lbnRzKSk7CisgICAgcmV0dXJuIGNhbGxXaXRoQ29sb3JUeXBlKG1fY29tcG9uZW50cywg
bV9jb2xvclNwYWNlLCBzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvcikpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVT
RShDRykKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiQ29sb3JT
cGFjZUNHLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtOTcsMjEgKzk3LDI0
IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBTZW1hbnRpY1QKIHN0YXRpYyBDR0Nv
bG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBhdXRvIFtjb2xv
clNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0g
ICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENv
bXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CiAKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRl
KHNSR0JDb2xvclNwYWNlUmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoZGlzcGxheVAz
Q29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNl
OjpMaW5lYXJSR0I6Ci0gICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9y
UmVmcyBpbiB0aGVzZSBzcGFjZXM/IEl0IG1heSBvbmx5IGJlIEltYWdlQnVmZmVycy4KLSAgICAg
ICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBv
bmVudHMpOworICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9y
U3BhY2UpOworCisgICAgLy8gU29tZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29s
b3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KKyAgICAvLyBzUkdCQ29sb3JTcGFjZVJlZigp
IGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZQorICAgIC8v
IG5lZWQgdG8gZWFnZXJseSBhbmQgcG90ZW50aWFsbHkgbG9zc2lseSBjb252ZXJ0IHRoZSBjb2xv
ciBpbnRvIHNSR0IKKyAgICAvLyBvdXJzZWx2ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9y
UmVmLgorICAgIGlmIChjb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OlNSR0IgJiYgY2dDb2xvclNw
YWNlID09IHNSR0JDb2xvclNwYWNlUmVmKCkpIHsKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRl
ZFRvU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAo
Y29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAgICAgIHJldHVybiB0b1NSR0JBKGNvbG9yKTsK
KyAgICAgICAgfSk7CisgICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xv
ckNvbnZlcnRlZFRvU1JHQkEpOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsK
KyAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OworCisgICAg
cmV0dXJuIENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CiB9
CiAKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIK
KworI2lmIFVTRShDRykKKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0dDb2xvclNwYWNl
UmVmIHNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNS
R0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAg
Ly8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNw
YWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9pZHMKKyAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVu
ZGVyIHRob3NlIGNvbmRpdGlvbnMuIFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdp
bmRvd3MKKyAgICAgICAgLy8gaXMgc1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KKyAg
ICAgICAgLy8gRklYTUU6IElzIHRoaXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIx
MzUxNSB3YXMgZml4ZWQuCisgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOworICAgICAgICBpZiAoIXNSR0JDb2xvclNw
YWNlKQorICAgICAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZp
Y2VSR0IoKTsKKyNlbHNlCisgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpOworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikK
KyAgICB9KTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJl
ZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IGxpbmVhclJHQkNvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQor
ICAgICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNS
R0IsIHRoaXMgaXMgdHJhY2tlZCBieSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgorICAgICAg
ICBsaW5lYXJSR0JDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAg
ICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlTGluZWFyU1JHQik7CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gbGluZWFy
UkdCQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VS
ZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgZGlzcGxheVAzQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5
UDMpOworI2Vsc2UKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNl
UmVmKCk7CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsK
K30KKworQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQoreworICAg
IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKKyAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBudWxscHRyOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRl
V2l0aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVkU1JHQik7CisjZW5kaWYKKyAgICAgICAgLy8g
SWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNS
R0IuCisgICAgICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBz
UkdCQ29sb3JTcGFjZVJlZigpOworCisgICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBj
b2xvclNwYWNlOworICAgIH0pOworICAgIHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwor
fQorCit9CisKKyNlbmRpZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb2xvclNwYWNlLmgiCisKK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dD
b2xvclNwYWNlUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIENH
Q29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29s
b3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0Nv
bG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOworCitzdGF0aWMgaW5saW5l
IENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JH
QjoKKyAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNw
YWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7
CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBkaXNwbGF5
UDNDb2xvclNwYWNlUmVmKCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDczICs3MSw2
IEBAIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1QKICAgICByZXR1cm4g
Q0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmlu
ZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLUNH
Q29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4p
Ci0gICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Ig
a0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCi0gICAgICAgIC8vIGNhdXNpbmcg
YSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBz
cGFjZSBpbiBXaW5kb3dzCi0gICAgICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBu
aWNlbHkuCi0gICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3By
b2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKLSAgICAgICAgaWYgKCFz
UkdCQ29sb3JTcGFjZSkKLSAgICAgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlRGV2aWNlUkdCKCk7Ci0jZWxzZQotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKLSNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCi0gICAgfSk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOwotfQotCi1DR0Nv
bG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRG
T1JNKFdJTikKLSAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNl
IGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAw
MC4KLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0j
ZWxzZQotICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0
dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNS
R0JDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVk
U1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlID0gTlVMTDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgY29sb3JTcGFj
ZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0Ip
OwotI2VuZGlmCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVk
IHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgotICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAg
ICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLQotICAgICAgICBleHRl
bmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICB9KTsKLSAgICByZXR1cm4gZXh0
ZW5kZWRTUkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9y
U3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JT
cGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZGlzcGxh
eVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VE
aXNwbGF5UDMpOwotI2Vsc2UKLSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xv
clNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICB9KTsKLSAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JT
cGFjZTsKLX0KLQogc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5IGNvbnZlcnRJbnRlcnBvbGF0
aW9uUXVhbGl0eShDR0ludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNo
IChxdWFsaXR5KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAxMCwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDMzICsyNSwxMyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogCi10eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFj
ZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3Bh
Y2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJl
ZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3Bh
Y2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNw
YWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKLQogQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0
VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYpOwogCi1zdGF0aWMgaW5saW5lIENHQ29sb3JTcGFj
ZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3
aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAg
cmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJS
R0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBD
b2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNl
UmVmKCk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdC
Q29sb3JTcGFjZVJlZigpOwotfQotCiBjbGFzcyBDR0NvbnRleHRTdGF0ZVNhdmVyIHsKIHB1Ymxp
YzoKICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHNh
dmVBbmRSZXN0b3JlID0gdHJ1ZSkK
</data>
<flag name="commit-queue"
          id="434373"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416769</attachid>
            <date>2020-12-25 20:07:02 -0800</date>
            <delta_ts>2020-12-25 20:53:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225200701.patch</filename>
            <type>text/plain</type>
            <size>44374</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMCAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBjYWxsV2l0aENvbG9yVHlw
ZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbJl0gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAg
ICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICB9KTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1l
PiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JUeXBl
PGZsb2F0PiYgY29sb3IpCiB7CiAgICAgc2V0Q29sb3IoY29sb3IpOwogfQpAQCAtNDAyLDE3ICsz
NzksNyBAQCBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoU1JHQkE8dWludDhfCiAgICAgdGFn
QXNWYWxpZCgpOwogfQogCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNy
ZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgTGlu
ZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVk
Q29sb3I6OmNyZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3Io
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6
OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJs
b29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKAogICAgIHJldHVy
biBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRi
bG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTEyLDcgKzEx
Miw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkcKICAgICByZXR1
cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29s
b3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRv
TGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAz
KHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVoo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29u
c3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKQEAg
LTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRp
cwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKHRv
WFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBIU0xBPGZsb2F0PiB0b0hTTEEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+
IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsK
IH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sK
KyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOworCisgICAgYXV0byBrID0gMS4wZiAtIHN0
ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9PSAxLjBmKQorICAgICAgICByZXR1cm4g
eyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAgYXV0byBjID0gKDEuMGYgLSByIC0gaykg
LyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBmIC0gZyAtIGspIC8gKDEuMGYgLSBrKTsK
KyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgcmV0dXJuIHsg
YywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsK
K30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0
b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworRGlzcGxheVAzPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRGlz
cGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZ
WkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9TUkdCQShjb2xvcikpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcxMDc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZmxv
YXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBhdCBsZWFz
dCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUgWFla
QSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDb2xvclR5cGU8
ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwgY29udmVyc2lvbnMgY2FuIGJlIHRob3Vn
aHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0
aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRvIHRoZSBiYXNlIGNvbnZlcnNpb24uCisK
KworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZs
b2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
SFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
Q01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNS
R0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIAorCisvLyBEaXNw
bGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckRp
c3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYp
OworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsK
Ky8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdF
QkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKy8v
IEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+
Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZs
b2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKLS8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpCisKKy8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4m
IGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIENNWUtBPGZsb2F0PiB0b0NNWUtB
KGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKworLy8gQWxsIHR5cGVzIGFyZSBy
ZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFu
dGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHByb3Zp
ZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xv
clNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgdHMgPDwgIkRp
c3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJ
KHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKQEAgLTMzLDQg
KzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgRGlzcGxheVAz
CiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlz
aW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IENvbXBvbmVudFRyYWl0czsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRz
PHVpbnQ4X3Q+IHsKQEAgLTM1Myw3ICszNTQsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotCiAvLyBQYWNrZWQg
Q29sb3IgRm9ybWF0cwogCiBuYW1lc3BhY2UgUGFja2VkQ29sb3IgewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lv
biAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTMzLDggKzM0LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JB
OwotCiBmbG9hdCBsaWdodG5lc3MoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFu
Y2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JB
PGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZsb2F0PiYpOwpAQCAtNzQsNiArNzMsOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yVHlwZSBpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xv
clR5cGU+IGNvbnN0ZXhwciBib29sIGlzQmxhY2soY29uc3QgQ29sb3JUeXBlJik7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgQ29sb3JU
eXBlJik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhw
ciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8
VD4mLCBDb2xvclNwYWNlLCBGdW5jdG9yJiYpOworCiBjb25zdGV4cHIgdWludDE2X3QgZmFzdE11
bHRpcGx5QnkyNTUodWludDE2X3QpOwogY29uc3RleHByIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1
NSh1aW50MTZfdCk7CiAKQEAgLTE0NywxMiArMTQ4LDEyIEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5
cGVuYW1lPiB0eXBlbmFtZSBDb2wKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBl
bmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9u
ZW50KGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIEZ1bmN0b3ImJiBmdW5jdG9yKQogewotICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIHRvIHdvcmsgd2l0aCBjb2xvcnMgdGhhdCBkb24n
dCB1c2UgdGhlIG5hbWVzIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGZvciB0aGVpciBjaGFubmVscy4K
LSAgICBhdXRvIGNvcHkgPSBjb2xvcjsKLSAgICBjb3B5LnJlZCA9IHN0ZDo6aW52b2tlKGZ1bmN0
b3IsIGNvbG9yLnJlZCk7Ci0gICAgY29weS5ncmVlbiA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNv
bG9yLmdyZWVuKTsKLSAgICBjb3B5LmJsdWUgPSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVu
Y3Rvcj4oZnVuY3RvciksIGNvbG9yLmJsdWUpOwotICAgIHJldHVybiBjb3B5OworICAgIGF1dG8g
Y29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsKKyAgICBhdXRvIGNvcHkgPSBj
b21wb25lbnRzOworICAgIGNvcHlbMF0gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb21wb25lbnRz
WzBdKTsKKyAgICBjb3B5WzFdID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29tcG9uZW50c1sxXSk7
CisgICAgY29weVsyXSA9IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9y
KSwgY29tcG9uZW50c1syXSk7CisgICAgcmV0dXJuIHsgY29weVswXSwgY29weVsxXSwgY29weVsy
XSwgY29weVszXSB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhw
ciBDb2xvclR5cGUgY29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiBjb2xv
ciwgdWludDhfdCBvdmVycmlkZUFscGhhKQpAQCAtMjA0LDYgKzIwNSwyMSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBiCiAgICAgcmV0dXJuIGMxID09IG1heCAmJiBj
MiA9PSBtYXggJiYgYzMgPT0gbWF4ICYmIGFscGhhID09IG1heDsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxX
aXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cywgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKK3sKKyAgICBzd2l0Y2ggKGNvbG9y
U3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzdGQ6
Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEoY29tcG9uZW50
cykpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gc3Rk
OjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0xpbmVhclNSR0JBKGNv
bXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0
dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5
UDMoY29tcG9uZW50cykpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JH
QkEoY29tcG9uZW50cykpOworfQorCiBjb25zdGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5Qnky
NTUodWludDE2X3QgdmFsdWUpCiB7CiAgICAgcmV0dXJuICh2YWx1ZSA8PCA4KSAtIHZhbHVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5kZWRDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsNyBAQCBpbmxp
bmUgRXh0ZW5kZWRDb2xvcjo6RXh0ZW5kZWRDb2xvcihDb2xvCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IGRlY2x0eXBlKGF1dG8pIEV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdU
eXBlKEZ1bmN0b3ImJiBmdW5jdG9yKSBjb25zdAogewotICAgIHN3aXRjaCAobV9jb2xvclNwYWNl
KSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZv
a2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKG1fY29tcG9uZW50cykp
OwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gc3RkOjpp
bnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0xpbmVhclNSR0JBKG1fY29t
cG9uZW50cykpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1
cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0Rpc3BsYXlQ
MyhtX2NvbXBvbmVudHMpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NS
R0JBKG1fY29tcG9uZW50cykpOworICAgIHJldHVybiBjYWxsV2l0aENvbG9yVHlwZShtX2NvbXBv
bmVudHMsIG1fY29sb3JTcGFjZSwgc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpKTsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBVU0UoQ0cpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUg
IkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTk3LDIx
ICs5NywyNCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgU2VtYW50aWNUCiBzdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0
byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50
cygpOwotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBDR0Zsb2F0IGNn
RmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgc3dpdGNoIChjb2xvclNw
YWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7Ci0gICAgY2Fz
ZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGRp
c3BsYXlQM0NvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOwotICAgIGNhc2UgQ29s
b3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICAvLyBGSVhNRTogRG8gd2UgZXZlciBjcmVhdGUg
Q0dDb2xvclJlZnMgaW4gdGhlc2Ugc3BhY2VzPyBJdCBtYXkgb25seSBiZSBJbWFnZUJ1ZmZlcnMu
Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNnRmxv
YXRDb21wb25lbnRzKTsKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFj
ZShjb2xvclNwYWNlKTsKKworICAgIC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwg
dGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJuCisgICAgLy8gc1JHQkNvbG9yU3Bh
Y2VSZWYoKSBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UK
KyAgICAvLyBuZWVkIHRvIGVhZ2VybHkgYW5kIHBvdGVudGlhbGx5IGxvc3NpbHkgY29udmVydCB0
aGUgY29sb3IgaW50byBzUkdCCisgICAgLy8gb3Vyc2VsdmVzIGJlZm9yZSBjcmVhdGluZyB0aGUg
Q0dDb2xvclJlZi4KKyAgICBpZiAoY29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCICYmIGNn
Q29sb3JTcGFjZSA9PSBzUkdCQ29sb3JTcGFjZVJlZigpKSB7CisgICAgICAgIGF1dG8gY29sb3JD
b252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFj
ZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gdG9TUkdCQShj
b2xvcik7CisgICAgICAgIH0pOworICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVu
dHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBv
bmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIsIGcsIGIsIGEgfTsK
KworICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBvbmVu
dHMpOwogfQogCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFj
ZUNHLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NHQ29s
b3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JTcGFj
ZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShXSU4pCisg
ICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NH
Q29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCisgICAgICAgIC8vIGNhdXNpbmcgYSBj
cmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFj
ZSBpbiBXaW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNl
bHkuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2Js
ZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAgaWYgKCFzUkdC
Q29sb3JTcGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyNlbmRpZiAvLyBQTEFURk9S
TShXSU4pCisgICAgfSk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOworfQorCitDR0NvbG9y
U3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworI2lmIFBMQVRGT1JN
KFdJTikKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxp
bmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4K
KyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZWxz
ZQorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5h
bWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJu
IGxpbmVhclJHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xv
clNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9y
U3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIGRpc3Bs
YXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNl
RGlzcGxheVAzKTsKKyNlbHNlCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29s
b3JTcGFjZVJlZigpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9y
U3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkK
K3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gbnVsbHB0
cjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2VuZGlmCisgICAg
ICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFj
ayB0byBzUkdCLgorICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAgICAgICAgICBjb2xvclNw
YWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNw
YWNlID0gY29sb3JTcGFjZTsKKyAgICB9KTsKKyAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JT
cGFjZTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCit0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3Bh
Y2UgKkNHQ29sb3JTcGFjZVJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JU
IENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9S
VCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKKworc3RhdGlj
IGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3Bh
Y2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2Ug
Q29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICByZXR1cm4g
ZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30KKworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3
MyArNzEsNiBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUCiAgICAg
cmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KENHQ29udGV4dEdldENUTShjb250ZXh0KSwg
Q0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0QmFzZUNUTShjb250ZXh0KSkpOwog
fQogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZP
Uk0oV0lOKQotICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90
IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcwotICAgICAgICAvLyBj
YXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQg
Y29sb3Igc3BhY2UgaW4gV2luZG93cwotICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3Jr
cyBvdXQgbmljZWx5LgotICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJk
YXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KLSAgICAgICAgc1JHQkNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0gICAgICAg
IGlmICghc1JHQkNvbG9yU3BhY2UpCi0gICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotI2Vsc2UKLSAgICAgICAgc1JHQkNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oV0lOKQotICAgIH0pOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZTsKLX0K
LQotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRp
YyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSNp
ZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCBiZSBhYmxl
IHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3Jn
L2IvODAwMDAuCi0gICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJl
ZigpOwotI2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsKLSNlbmRpZgotICAgIH0pOwot
ICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgZXh0
ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5k
ZWRTUkdCKTsKLSNlbmRpZgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBl
eHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KLSAgICAgICAgaWYgKCFjb2xvclNwYWNl
KQotICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAgICAg
ICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0gICAgfSk7Ci0gICAgcmV0
dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBkaXNwbGF5
UDNDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQ
M0NvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAg
IGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBz
UkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGRpc3BsYXlQ
M0NvbG9yU3BhY2U7Ci19Ci0KIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjb252ZXJ0SW50
ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KQogewogICAg
IHN3aXRjaCAocXVhbGl0eSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwzMyArMjUsMTMg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0Nv
bG9yU3BhY2VSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9y
U3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENH
Q29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0KIENHQWZmaW5lVHJhbnNm
b3JtIGdldFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVmKTsKIAotc3RhdGljIGlubGluZSBDR0Nv
bG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsK
LSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0g
ICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotICAg
IGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29s
b3JTcGFjZVJlZigpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogY2xhc3MgQ0dDb250ZXh0U3RhdGVTYXZlciB7
CiBwdWJsaWM6CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlcihDR0NvbnRleHRSZWYgY29udGV4dCwg
Ym9vbCBzYXZlQW5kUmVzdG9yZSA9IHRydWUpCg==
</data>
<flag name="commit-queue"
          id="434374"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416770</attachid>
            <date>2020-12-25 20:12:17 -0800</date>
            <delta_ts>2020-12-25 21:35:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225201216.patch</filename>
            <type>text/plain</type>
            <size>43693</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMCAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBjYWxsV2l0aENvbG9yVHlw
ZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbJl0gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAg
ICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICB9KTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1l
PiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JUeXBl
PGZsb2F0PiYgY29sb3IpCiB7CiAgICAgc2V0Q29sb3IoY29sb3IpOwogfQpAQCAtNDAyLDE3ICsz
NzksNyBAQCBpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoU1JHQkE8dWludDhfCiAgICAgdGFn
QXNWYWxpZCgpOwogfQogCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNy
ZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgTGlu
ZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVk
Q29sb3I6OmNyZWF0ZShjb2xvcikpOwotfQotCi1pbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3Io
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFt
ZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xvclR5
cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6
OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMo
Y29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJs
b29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKAogICAgIHJldHVy
biBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRi
bG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTEyLDcgKzEx
Miw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkcKICAgICByZXR1
cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29s
b3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRv
TGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAz
KHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVoo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29u
c3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKQEAg
LTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRp
cwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKHRv
WFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBIU0xBPGZsb2F0PiB0b0hTTEEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+
IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsK
IH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sK
KyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOworCisgICAgYXV0byBrID0gMS4wZiAtIHN0
ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9PSAxLjBmKQorICAgICAgICByZXR1cm4g
eyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAgYXV0byBjID0gKDEuMGYgLSByIC0gaykg
LyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBmIC0gZyAtIGspIC8gKDEuMGYgLSBrKTsK
KyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgcmV0dXJuIHsg
YywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsK
K30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0
b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworRGlzcGxheVAzPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRGlz
cGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZ
WkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9TUkdCQShjb2xvcikpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcxMDc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZmxv
YXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBhdCBsZWFz
dCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUgWFla
QSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDb2xvclR5cGU8
ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwgY29udmVyc2lvbnMgY2FuIGJlIHRob3Vn
aHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0
aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRvIHRoZSBiYXNlIGNvbnZlcnNpb24uCisK
KworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhclNSR0JBPGZs
b2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
SFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
Q01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNS
R0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIAorCisvLyBEaXNw
bGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckRp
c3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYp
OworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
ckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsK
Ky8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQ
Myhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdF
QkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKKy8v
IEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+
Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZs
b2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKLS8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpCisKKy8vIElkZW50aXR5IGNvbnZl
cnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVh
ckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4m
IGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIENNWUtBPGZsb2F0PiB0b0NNWUtB
KGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKworLy8gQWxsIHR5cGVzIGFyZSBy
ZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFu
dGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHByb3Zp
ZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBUJiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3QgVCYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xv
clNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgdHMgPDwgIkRp
c3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJ
KHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKQEAgLTMzLDQg
KzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgRGlzcGxheVAz
CiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlz
aW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IENvbXBvbmVudFRyYWl0czsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRz
PHVpbnQ4X3Q+IHsKQEAgLTM1Myw3ICszNTQsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotCiAvLyBQYWNrZWQg
Q29sb3IgRm9ybWF0cwogCiBuYW1lc3BhY2UgUGFja2VkQ29sb3IgewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lv
biAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTMzLDggKzM0LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JB
OwotCiBmbG9hdCBsaWdodG5lc3MoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFu
Y2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JB
PGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZsb2F0PiYpOwpAQCAtMTQ3LDEyICsxNDYsMTIgQEAgdGVt
cGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZpbmdF
YWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYmIGZ1
bmN0b3IpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUgdG8gd29yayB3aXRo
IGNvbG9ycyB0aGF0IGRvbid0IHVzZSB0aGUgbmFtZXMgcmVkLCBncmVlbiwgYW5kIGJsdWUgZm9y
IHRoZWlyIGNoYW5uZWxzLgotICAgIGF1dG8gY29weSA9IGNvbG9yOwotICAgIGNvcHkucmVkID0g
c3RkOjppbnZva2UoZnVuY3RvciwgY29sb3IucmVkKTsKLSAgICBjb3B5LmdyZWVuID0gc3RkOjpp
bnZva2UoZnVuY3RvciwgY29sb3IuZ3JlZW4pOwotICAgIGNvcHkuYmx1ZSA9IHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29sb3IuYmx1ZSk7Ci0gICAgcmV0dXJu
IGNvcHk7CisgICAgYXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOwor
ICAgIGF1dG8gY29weSA9IGNvbXBvbmVudHM7CisgICAgY29weVswXSA9IHN0ZDo6aW52b2tlKGZ1
bmN0b3IsIGNvbXBvbmVudHNbMF0pOworICAgIGNvcHlbMV0gPSBzdGQ6Omludm9rZShmdW5jdG9y
LCBjb21wb25lbnRzWzFdKTsKKyAgICBjb3B5WzJdID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJk
PEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4geyBjb3B5WzBd
LCBjb3B5WzFdLCBjb3B5WzJdLCBjb3B5WzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25z
dCBDb2xvclR5cGUmIGNvbG9yLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCShyZXZpc2lv
biAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENv
bG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDE5ICs4MCwyNCBAQCBpbmxpbmUgRXh0ZW5kZWRD
b2xvcjo6RXh0ZW5kZWRDb2xvcihDb2xvCiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IGRlY2x0eXBlKGF1dG8pIEV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKEZ1
bmN0b3ImJiBmdW5jdG9yKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVu
Y3Rvcj4gY29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENv
bG9yQ29tcG9uZW50czxUPiYgY29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5j
dG9yJiYgZnVuY3RvcikKIHsKLSAgICBzd2l0Y2ggKG1fY29sb3JTcGFjZSkgeworICAgIHN3aXRj
aCAoY29sb3JTcGFjZSkgewogICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQSht
X2NvbXBvbmVudHMpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxG
dW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShjb21wb25lbnRzKSk7CiAgICAgY2FzZSBDb2xvclNw
YWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8
RnVuY3Rvcj4oZnVuY3RvciksIGFzTGluZWFyU1JHQkEobV9jb21wb25lbnRzKSk7CisgICAgICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzTGlu
ZWFyU1JHQkEoY29tcG9uZW50cykpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgot
ICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3Ip
LCBhc0Rpc3BsYXlQMyhtX2NvbXBvbmVudHMpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tl
KHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5UDMoY29tcG9uZW50cykp
OwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omlu
dm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEobV9jb21wb25lbnRz
KSk7CisgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9y
KSwgYXNTUkdCQShjb21wb25lbnRzKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IGRlY2x0eXBlKGF1dG8pIEV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKEZ1bmN0
b3ImJiBmdW5jdG9yKSBjb25zdAoreworICAgIHJldHVybiBjYWxsV2l0aENvbG9yVHlwZShtX2Nv
bXBvbmVudHMsIG1fY29sb3JTcGFjZSwgc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpKTsK
IH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpZiBVU0UoQ0cpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1
ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTk3
LDIxICs5NywyNCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgU2VtYW50aWNUCiBz
dGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
YXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9u
ZW50cygpOwotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBDR0Zsb2F0
IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgc3dpdGNoIChjb2xv
clNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gQ0dD
b2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRl
KGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOwotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICAvLyBGSVhNRTogRG8gd2UgZXZlciBjcmVh
dGUgQ0dDb2xvclJlZnMgaW4gdGhlc2Ugc3BhY2VzPyBJdCBtYXkgb25seSBiZSBJbWFnZUJ1ZmZl
cnMuCi0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNn
RmxvYXRDb21wb25lbnRzKTsKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JT
cGFjZShjb2xvclNwYWNlKTsKKworICAgIC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBh
bGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJuCisgICAgLy8gc1JHQkNvbG9y
U3BhY2VSZWYoKSBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywg
d2UKKyAgICAvLyBuZWVkIHRvIGVhZ2VybHkgYW5kIHBvdGVudGlhbGx5IGxvc3NpbHkgY29udmVy
dCB0aGUgY29sb3IgaW50byBzUkdCCisgICAgLy8gb3Vyc2VsdmVzIGJlZm9yZSBjcmVhdGluZyB0
aGUgQ0dDb2xvclJlZi4KKyAgICBpZiAoY29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCICYm
IGNnQ29sb3JTcGFjZSA9PSBzUkdCQ29sb3JTcGFjZVJlZigpKSB7CisgICAgICAgIGF1dG8gY29s
b3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JT
cGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gdG9TUkdC
QShjb2xvcik7CisgICAgICAgIH0pOworICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBv
bmVudHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNv
bXBvbmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIsIGcsIGIsIGEg
fTsKKworICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBv
bmVudHMpOwogfQogCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvclNwYWNlQ0cuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JT
cGFjZUNHLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NH
Q29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShXSU4p
CisgICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Ig
a0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCisgICAgICAgIC8vIGNhdXNpbmcg
YSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBz
cGFjZSBpbiBXaW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBu
aWNlbHkuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3By
b2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAgaWYgKCFz
UkdCQ29sb3JTcGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlRGV2aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCisgICAgfSk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOworfQorCitDR0Nv
bG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworI2lmIFBMQVRG
T1JNKFdJTikKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNl
IGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAw
MC4KKyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Cisj
ZWxzZQorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0
dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDND
b2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0Nv
bG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIGRp
c3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlRGlzcGxheVAzKTsKKyNlbHNlCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBzUkdC
Q29sb3JTcGFjZVJlZigpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJuIGRpc3BsYXlQM0Nv
bG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVm
KCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gbnVs
bHB0cjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2VuZGlmCisg
ICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwg
YmFjayB0byBzUkdCLgorICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAgICAgICAgICBjb2xv
clNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgICAgICBleHRlbmRlZFNSR0JDb2xv
clNwYWNlID0gY29sb3JTcGFjZTsKKyAgICB9KTsKKyAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29s
b3JTcGFjZTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNH
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCit0eXBlZGVmIHN0cnVjdCBDR0NvbG9y
U3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9F
WFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKKworc3Rh
dGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9y
U3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNh
c2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JT
cGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICByZXR1
cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30KKworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw3MyArNzEsNiBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUCiAg
ICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KENHQ29udGV4dEdldENUTShjb250ZXh0
KSwgQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0QmFzZUNUTShjb250ZXh0KSkp
OwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRp
YyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExB
VEZPUk0oV0lOKQotICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwg
bm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcwotICAgICAgICAv
LyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1
bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwotICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3
b3JrcyBvdXQgbmljZWx5LgotICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/
IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KLSAgICAgICAgc1JHQkNvbG9yU3Bh
Y2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0gICAg
ICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCi0gICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENH
Q29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotI2Vsc2UKLSAgICAgICAgc1JHQkNvbG9yU3Bh
Y2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0jZW5k
aWYgLy8gUExBVEZPUk0oV0lOKQotICAgIH0pOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZTsK
LX0KLQotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0
YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
LSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCBiZSBh
YmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5IGh0dHA6Ly93ZWJraXQu
b3JnL2IvODAwMDAuCi0gICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFj
ZVJlZigpOwotI2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsKLSNlbmRpZgotICAgIH0p
OwotICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYg
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJl
ZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAg
IGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0
ZW5kZWRTUkdCKTsKLSNlbmRpZgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzdXBwb3J0IGZv
ciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KLSAgICAgICAgaWYgKCFjb2xvclNw
YWNlKQotICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAg
ICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0gICAgfSk7Ci0gICAg
cmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBkaXNw
bGF5UDNDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpc3Bs
YXlQM0NvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
ICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2Ug
PSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGRpc3Bs
YXlQM0NvbG9yU3BhY2U7Ci19Ci0KIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjb252ZXJ0
SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KQogewog
ICAgIHN3aXRjaCAocXVhbGl0eSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiAyNzEw
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwzMyArMjUs
MTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpD
R0NvbG9yU3BhY2VSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV0VCQ09SRV9FWFBPUlQg
Q0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0Nv
bG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQg
Q0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JU
IENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0KIENHQWZmaW5lVHJh
bnNmb3JtIGdldFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVmKTsKIAotc3RhdGljIGlubGluZSBD
R0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
LXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6
Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwot
ICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gZGlzcGxheVAz
Q29sb3JTcGFjZVJlZigpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogY2xhc3MgQ0dDb250ZXh0U3RhdGVTYXZl
ciB7CiBwdWJsaWM6CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlcihDR0NvbnRleHRSZWYgY29udGV4
dCwgYm9vbCBzYXZlQW5kUmVzdG9yZSA9IHRydWUpCg==
</data>
<flag name="commit-queue"
          id="434376"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416771</attachid>
            <date>2020-12-25 20:18:23 -0800</date>
            <delta_ts>2020-12-25 20:18:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225201822.patch</filename>
            <type>text/plain</type>
            <size>40530</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTgsNyArMjE4LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRD
R0NvbG9yKAogI2VuZGlmCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwog
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgs
NyArODgsNyBAQCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhCiAgICAg
fTsKIH0KIAotc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZ
WkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0
IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRt
bD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBMaW5l
YXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQSgKICAgICByZXR1cm4gYXNMaW5lYXJTUkdCQSh4
eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNv
bXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLXN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBM
aW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVh
clNSR0JBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvU1JHQgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0
bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgWFla
QTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyU1JHCiAgICAgcmV0dXJuIGFzWFlaQShsaW5lYXJT
UkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IpKSk7CiB9CiAKLXN0YXRpYyBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFy
RGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckRpc3BsYXlQMzxmbG9h
dD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8v
IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29k
ZQogICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhckRpc3BsYXlQM01h
dHJpeCB7CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4g
dG9MaW5lYXJEaQogICAgIHJldHVybiBhc0xpbmVhckRpc3BsYXlQMyh4eXpUb0xpbmVhckRpc3Bs
YXlQM01hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhj
b2xvcikpKTsKIH0KIAotc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpc3Bs
YXlQMzxmbG9hdD4mIGNvbG9yKQorWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3Bs
YXlQMzxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQogICAgIGNvbnN0ZXhwciBDb2xvck1hdHJp
eDwzLCAzPiBsaW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeCB7CkBAIC0xMzQsMTYgKzEzNCw2IEBA
IHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJEaXMKICAgICByZXR1cm4gYXNY
WVpBKGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRz
KGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gdG9TUkdCQSh0b0xp
bmVhclNSR0JBKHRvWFlaKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSkpKTsKLX0KLQotRGlzcGxh
eVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAg
IHJldHVybiB0b0Rpc3BsYXlQMyh0b0xpbmVhckRpc3BsYXlQMyh0b1hZWih0b0xpbmVhclNSR0JB
KGNvbG9yKSkpKTsKLX0KLQogSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfY29sb3Jf
c3BhY2UuCkBAIC0yMzksNCArMjI5LDU4IEBAIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENN
WUtBPGZsb2F0PiYKICAgICByZXR1cm4geyByLCBnLCBiLCBhIH07CiB9CiAKK0NNWUtBPGZsb2F0
PiB0b0NNWUtBKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCit7CisgICAgYXV0byBbciwgZywg
YiwgYV0gPSBjb2xvcjsKKworICAgIGF1dG8gayA9IDEuMGYgLSBzdGQ6Om1heCh7IHIsIGcsIGIg
fSk7CisgICAgaWYgKGsgPT0gMS4wZikKKyAgICAgICAgcmV0dXJuIHsgMCwgMCwgMCwgMS4wZiwg
YSB9OworICAgIAorICAgIGF1dG8gYyA9ICgxLjBmIC0gciAtIGspIC8gKDEuMGYgLSBrKTsKKyAg
ICBhdXRvIG0gPSAoMS4wZiAtIGcgLSBrKSAvICgxLjBmIC0gayk7CisgICAgYXV0byB5ID0gKDEu
MGYgLSBiIC0gaykgLyAoMS4wZiAtIGspOworICAgIHJldHVybiB7IGMsIG0sIHksIGssIGEgfTsK
K30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCit7Cisg
ICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhclNSR0JBKGNvbG9yKSk7Cit9CisKK1NSR0JBPGZsb2F0
PiB0b1NSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdC
QSh0b0xpbmVhclNSR0JBKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBE
aXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyRGlz
cGxheVAzKGNvbG9yKSk7Cit9CisKK0Rpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b0xpbmVhckRp
c3BsYXlQMyhjb2xvcikpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9h
dD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9TUkdCQShjb2xvcikpOworfQorCitI
U0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVy
biB0b0hTTEEodG9TUkdCQShjb2xvcikpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
Q01ZS0E8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvU1JHQkEoY29sb3Ip
KTsKK30KKworQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQor
eworICAgIHJldHVybiB0b0NNWUtBKHRvU1JHQkEoY29sb3IpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywyNyArMzMsMTAyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGZsb2F0IGxpbmVhclRvUkdCQ29s
b3JDb21wb25lbnQoZmxvYXQpOwogZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9h
dCk7CiAKKworLy8gQWxsIGNvbG9yIHR5cGVzIG11c3QgYXQgbGVhc3QgaW1wbGVtZW50IHRoZSBm
b2xsb3dpbmcgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gdGhlIFhZWkEgY29sb3Igc3BhY2U6Cisv
LyAgICBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworLy8gICAg
Q29sb3JUeXBlPGZsb2F0PiB0b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8KKy8v
IEFueSBhZGRpdGlvbmFsIGNvbnZlcnNpb25zIGNhbiBiZSB0aG91Z2h0IG9mIGFzIG9wdGltaXph
dGlvbnMsIHNob3J0Y3V0dGluZyB1bm5lY2Vzc2FyeSBzdGVwcywgdGhvdWdoCisvLyBzb21lIG1h
eSBiZSBpbnRlZ3JhbCB0byB0aGUgYmFzZSBjb252ZXJzaW9uLgorCisKKy8vIFNSR0JBCitXRUJD
T1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitXRUJD
T1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8g
QWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdC
QShjb25zdCBTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNM
QShjb25zdCBTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIENNWUtBPGZsb2F0PiB0b0NN
WUtBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworCisvLyBMaW5lYXJTUkdCQQorV0VCQ09SRV9FWFBP
UlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOworV0VCQ09S
RV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9h
dD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEo
Y29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CiAKKworLy8gRGlzcGxheVAzCitXRUJDT1JFX0VY
UE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworV0VCQ09S
RV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYp
OworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRv
TGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKKworCisvLyBMaW5lYXJE
aXNwbGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJE
aXNwbGF5UDM8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+
IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdF
QkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlz
cGxheVAzPGZsb2F0PiYpOwogCi1XRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShj
b25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogCi1XRUJDT1JFX0VYUE9SVCBIU0xB
PGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisvLyBIU0xBCitXRUJDT1JFX0VY
UE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQ
T1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25z
CiBXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYp
OwogCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKIAorLy8gQ01Z
S0EKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4m
KTsKK1dFQkNPUkVfRVhQT1JUIENNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IFhZWkE8ZmxvYXQ+
Jik7CisvLyBBZGRpdGlvbnMKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IENNWUtBPGZsb2F0PiYpOwogCi0vLyBJZGVudGl0eSBjb252ZXJzaW9ucyAodXNlZnVsIGZv
ciBnZW5lcmljIGNvbnRleHRzKQorCisvLyBJZGVudGl0eSBjb252ZXJzaW9ucyAodXNlZnVsIGZv
ciBnZW5lcmljIGNvbnRleHRzKS4KIAogY29uc3RleHByIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGlu
ZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBj
b2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlz
cGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQog
Y29uc3RleHByIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
TGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4
cHIgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KK2NvbnN0ZXhwciBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBDTVlLQTxmbG9h
dD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CisKKworLy8gRmFs
bGJhY2sgY29udmVyc2lvbnMuCisKKy8vIEFsbCB0eXBlcyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBh
IGNvbnZlcnNpb24gdG8gWFlaQSwgc28gdGhlc2UgYXJlIGd1YXJhbnRlZWQgdG8gd29yayBpZgor
Ly8gYW5vdGhlciBvdmVybG9hZCBpcyBub3QgYWxyZWFkeSBwcm92aWRlZC4KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgVCYgY29sb3IpCit7CisgICAg
cmV0dXJuIHRvU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IFNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVy
biB0b0xpbmVhclNSR0JBKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBTUkdCQTxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvRGlzcGxheVAzKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBT
UkdCQTxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0
dXJuIHRvTGluZWFyRGlzcGxheVAzKHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVy
biB0b0hTTEEodG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JB
PGZsb2F0PiB0b0NNWUtBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0NNWUtBKHRv
WFlaQShjb2xvcikpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgc3dpdGNo
IChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICB0cyA8
PCAic1JHQiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdC
OgorICAgICAgICB0cyA8PCAiTGluZWFyUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCit9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCituYW1lc3BhY2Ug
V1RGIHsKK2NsYXNzIFRleHRTdHJlYW07Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CkBAIC0zMyw0ICszNyw2IEBAIGVudW0gY2xh
c3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewogICAgIERpc3BsYXlQMwogfTsKIAorV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9y
U3BhY2UpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9y
Q29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yQ29tcG9uZW50czsKIHRlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRzOwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBDb21wb25lbnRUcmFpdHM8dWludDhfdD4gewpAQCAtMzUzLDcgKzM1Myw2IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXIKICAgICByZXR1cm4gIShhID09IGIpOwog
fQogCi0KIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKIG5hbWVzcGFjZSBQYWNrZWRDb2xvciB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKICNpbmNsdWRl
ICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgpA
QCAtMzMsOCArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgU1JHQkE7Ci0KIGZsb2F0IGxpZ2h0bmVzcyhjb25zdCBTUkdCQTxmbG9hdD4m
KTsKIGZsb2F0IGx1bWluYW5jZShjb25zdCBTUkdCQTxmbG9hdD4mKTsKIGZsb2F0IGNvbnRyYXN0
UmF0aW8oY29uc3QgU1JHQkE8ZmxvYXQ+JiwgY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CkBAIC0xNDcs
MTIgKzE0NiwxMiBAQCB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBl
IGNvbG9yQnlNb2RpZmluZ0VhY2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmIGNv
bG9yLCBGdW5jdG9yJiYgZnVuY3RvcikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
bWFkZSB0byB3b3JrIHdpdGggY29sb3JzIHRoYXQgZG9uJ3QgdXNlIHRoZSBuYW1lcyByZWQsIGdy
ZWVuLCBhbmQgYmx1ZSBmb3IgdGhlaXIgY2hhbm5lbHMuCi0gICAgYXV0byBjb3B5ID0gY29sb3I7
Ci0gICAgY29weS5yZWQgPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb2xvci5yZWQpOwotICAgIGNv
cHkuZ3JlZW4gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb2xvci5ncmVlbik7Ci0gICAgY29weS5i
bHVlID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb2xvci5i
bHVlKTsKLSAgICByZXR1cm4gY29weTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29t
cG9uZW50cyhjb2xvcik7CisgICAgYXV0byBjb3B5ID0gY29tcG9uZW50czsKKyAgICBjb3B5WzBd
ID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29tcG9uZW50c1swXSk7CisgICAgY29weVsxXSA9IHN0
ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbXBvbmVudHNbMV0pOworICAgIGNvcHlbMl0gPSBzdGQ6Omlu
dm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGNvbXBvbmVudHNbMl0pOworICAg
IHJldHVybiB7IGNvcHlbMF0sIGNvcHlbMV0sIGNvcHlbMl0sIGNvcHlbM10gfTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlIGNvbG9yV2l0aE92
ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBo
YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAj
aWYgVVNFKENHKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJD
b2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC01MSw2ICs1
MSwyMSBAQCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gVGlueUxSVUNhY2hlUG9saWN5CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4g
Y29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29t
cG9uZW50czxUPiYgY29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYg
ZnVuY3RvcikKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3Bh
Y2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rv
cj4oZnVuY3RvciksIGFzU1JHQkEoY29tcG9uZW50cykpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6
TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0
b3I+KGZ1bmN0b3IpLCBhc0xpbmVhclNSR0JBKGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2Fy
ZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNEaXNwbGF5UDMoY29tcG9uZW50cykpOworICAgIH0KKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZv
cndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzU1JHQkEoY29tcG9uZW50cykpOworfQorCiBzdGF0
aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koQ0dD
b2xvclJlZiBjb2xvcikKIHsKICAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRv
IGhhbmRsZSBjb2xvciBzcGFjZXMuCkBAIC05NywyMSArMTEyLDI0IEBAIENvbG9yOjpDb2xvcihD
R0NvbG9yUmVmIGNvbG9yLCBTZW1hbnRpY1QKIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRz
XSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgYXV0byBbciwgZywgYiwg
YV0gPSBjb21wb25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBn
LCBiLCBhIH07CiAKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3Bh
Y2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVm
KCksIGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoK
LSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpLCBj
Z0Zsb2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIC8vIEZJWE1FOiBEbyB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9yUmVmcyBpbiB0aGVzZSBzcGFj
ZXM/IEl0IG1heSBvbmx5IGJlIEltYWdlQnVmZmVycy4KLSAgICAgICAgcmV0dXJuIENHQ29sb3JD
cmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOworICAgIGF1dG8g
Y2dDb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOworCisgICAgLy8g
U29tZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVk
IGFuZCByZXR1cm4KKyAgICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1bnN1cHBvcnRlZCBj
b2xvciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZQorICAgIC8vIG5lZWQgdG8gZWFnZXJseSBh
bmQgcG90ZW50aWFsbHkgbG9zc2lseSBjb252ZXJ0IHRoZSBjb2xvciBpbnRvIHNSR0IKKyAgICAv
LyBvdXJzZWx2ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIGlmIChjb2xv
clNwYWNlICE9IENvbG9yU3BhY2U6OlNSR0IgJiYgY2dDb2xvclNwYWNlID09IHNSR0JDb2xvclNw
YWNlUmVmKCkpIHsKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0
aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3Ip
IHsKKyAgICAgICAgICAgIHJldHVybiB0b1NSR0JBKGNvbG9yKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEp
OwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRy
OworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxv
YXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OworCisgICAgcmV0dXJuIENHQ29sb3JDcmVh
dGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CiB9CiAKIENHQ29sb3JSZWYgY2Fj
aGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKworI2lmIFVTRShDRykKKwor
I2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNl
UmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cg
aW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dp
YyBhdm9pZHMKKyAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlv
bnMuIFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKKyAgICAgICAgLy8g
aXMgc1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KKyAgICAgICAgLy8gRklYTUU6IElz
IHRoaXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCisg
ICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZVNSR0IpOworICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQorICAgICAgICAgICAg
c1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyNlbHNlCisg
ICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZVNSR0IpOworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyAgICB9KTsKKyAgICByZXR1
cm4gc1JHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNw
YWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3Bh
Y2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhNRTog
V2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJhY2tl
ZCBieSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgorICAgICAgICBsaW5lYXJSR0JDb2xvclNw
YWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAgIGxpbmVhclJHQkNvbG9y
U3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFyU1JH
Qik7CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKK30K
KworQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRp
YyBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOworI2Vsc2UKKyAgICAg
ICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAg
ICB9KTsKKyAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNl
UmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3Bh
Y2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZUV4dGVuZGVkU1JHQik7CisjZW5kaWYKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3Vw
cG9ydCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0IuCisgICAgICAgIGlmICgh
Y29sb3JTcGFjZSkKKyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigp
OworCisgICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOworICAgIH0p
OworICAgIHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworfQorCit9CisKKyNlbmRpZiAv
LyBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvclNwYWNlQ0cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvclNwYWNl
LmgiCisKK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdC
Q29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJH
QkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5
UDNDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZVJlZigpOworCitzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBj
YWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIHN3aXRjaCAo
Y29sb3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJu
IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Cisg
ICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNw
YWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JT
cGFjZVJlZigpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNzEw
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDczICs3MSw2IEBAIGlubGluZSBDR0FmZmlu
ZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1QKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1D
b25jYXQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChD
R0NvbnRleHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzUkdC
Q29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIE91dC1v
Zi1kYXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0Iu
IFRoaXMgbG9naWMgYXZvaWRzCi0gICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9z
ZSBjb25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCi0g
ICAgICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCi0gICAgICAgIC8v
IEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2Fz
IGZpeGVkLgotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKLSAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKLSAg
ICAgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7
Ci0jZWxzZQotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0gICAgfSk7
Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgbGluZWFy
UkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJS
R0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAg
Ly8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlz
IGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAgICAgICAgbGluZWFy
UkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICBsaW5l
YXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZUxpbmVhclNSR0IpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGxpbmVhclJHQkNvbG9y
U3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkK
LXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci0g
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gTlVMTDsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwotI2VuZGlmCi0gICAgICAg
IC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0
byBzUkdCLgotICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgICAgICBjb2xvclNwYWNl
ID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLQotICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNl
ID0gY29sb3JTcGFjZTsKLSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFj
ZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQotewotICAg
IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENH
Q29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOwotI2Vsc2UK
LSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5k
aWYKLSAgICB9KTsKLSAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKLX0KLQogc3RhdGlj
IEludGVycG9sYXRpb25RdWFsaXR5IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0ludGVy
cG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAx
MCwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDMzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCi10
eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xv
clNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29s
b3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNv
bG9yU3BhY2VSZWYoKTsKLQogQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0Nv
bnRleHRSZWYpOwogCi1zdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9y
U3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkg
ewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVy
biBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5
UDM6Ci0gICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0gICAgfQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwot
fQotCiBjbGFzcyBDR0NvbnRleHRTdGF0ZVNhdmVyIHsKIHB1YmxpYzoKICAgICBDR0NvbnRleHRT
dGF0ZVNhdmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1
ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416772</attachid>
            <date>2020-12-25 20:45:25 -0800</date>
            <delta_ts>2020-12-25 21:39:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225204524.patch</filename>
            <type>text/plain</type>
            <size>42853</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMCAr
MjcxLDEwIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBzZXRFeHRlbmRlZENvbG9y
KEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb21wb25lbnRzLCBjb2xvclNwYWNlKSk7CiB9CiAKLWlu
bGluZSBDb2xvcjo6Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxpbmUgQ29sb3I6OkNv
bG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mIGNvbG9yKQogewogICAgIHNldENvbG9yKGNvbG9y
KTsKIH0KQEAgLTQwMiwxNyArMzc3LDcgQEAgaW5saW5lIHZvaWQgQ29sb3I6OnNldENvbG9yKFNS
R0JBPHVpbnQ4XwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIAotaW5saW5lIHZvaWQgQ29sb3I6OnNl
dENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0RXh0ZW5kZWRDb2xv
cihFeHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpKTsKLX0KLQotaW5saW5lIHZvaWQgQ29sb3I6
OnNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0RXh0
ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpKTsKLX0KLQotaW5saW5lIHZv
aWQgQ29sb3I6OnNldENvbG9yKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQordGVtcGxh
dGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIHZvaWQgQ29s
b3I6OnNldENvbG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mIGNvbG9yKQogewogICAgIHNldEV4
dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHAJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgRGlz
cGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYQogICAgIH07CiB9CiAKLXN0YXRp
YyBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgogICAg
IC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpf
TWF0cml4Lmh0bWwKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+
IHRvTGluZWFyU1JHQkEoCiAgICAgcmV0dXJuIGFzTGluZWFyU1JHQkEoeHl6VG9MaW5lYXJTUkdC
TWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9y
KSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyU1JHQkE8Zmxv
YXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4m
IGNvbG9yKQogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAg
ICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFla
X01hdHJpeC5odG1sCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFla
KGNvbnN0IExpbmVhclNSRwogICAgIHJldHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwog
fQogCi1zdGF0aWMgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25z
dCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlz
cGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKICAgICBjb25zdGV4
cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXggewpAQCAtMTIz
LDcgKzEyMyw3IEBAIHN0YXRpYyBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGkKICAg
ICByZXR1cm4gYXNMaW5lYXJEaXNwbGF5UDMoeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJh
bnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAK
LXN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBj
b2xvcikKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBj
b2xvcikKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xv
ci1jb252ZXJzaW9uLWNvZGUKICAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFy
RGlzcGxheVAzVG9YWVpNYXRyaXggewpAQCAtMTM0LDE2ICsxMzQsNiBAQCBzdGF0aWMgWFlaQTxm
bG9hdD4gdG9YWVooY29uc3QgTGluZWFyRGlzCiAgICAgcmV0dXJuIGFzWFlaQShsaW5lYXJEaXNw
bGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9u
ZW50cyhjb2xvcikpKTsKIH0KIAotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAz
PGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQSh0b1hZ
Wih0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpKSk7Ci19Ci0KLURpc3BsYXlQMzxmbG9hdD4gdG9E
aXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gdG9EaXNw
bGF5UDModG9MaW5lYXJEaXNwbGF5UDModG9YWVoodG9MaW5lYXJTUkdCQShjb2xvcikpKSk7Ci19
Ci0KIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAg
IC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgpAQCAtMjM5
LDQgKzIyOSw1OCBAQCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mCiAg
ICAgcmV0dXJuIHsgciwgZywgYiwgYSB9OwogfQogCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25z
dCBTUkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29sb3I7
CisKKyAgICBhdXRvIGsgPSAxLjBmIC0gc3RkOjptYXgoeyByLCBnLCBiIH0pOworICAgIGlmIChr
ID09IDEuMGYpCisgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDEuMGYsIGEgfTsKKyAgICAKKyAg
ICBhdXRvIGMgPSAoMS4wZiAtIHIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgYXV0byBtID0gKDEu
MGYgLSBnIC0gaykgLyAoMS4wZiAtIGspOworICAgIGF1dG8geSA9ICgxLjBmIC0gYiAtIGspIC8g
KDEuMGYgLSBrKTsKKyAgICByZXR1cm4geyBjLCBtLCB5LCBrLCBhIH07Cit9CisKK1hZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZ
WkEodG9MaW5lYXJTUkdCQShjb2xvcikpOworfQorCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25z
dCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdC
QShjb2xvcikpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRGlzcGxheVAzPGZsb2F0
PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikp
OworfQorCitEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+JiBj
b2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEhTTEE8ZmxvYXQ+JiBjb2xvcikKK3sK
KyAgICByZXR1cm4gdG9YWVpBKHRvU1JHQkEoY29sb3IpKTsKK30KKworSFNMQTxmbG9hdD4gdG9I
U0xBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xBKHRvU1JH
QkEoY29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZsb2F0PiYg
Y29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK0NNWUtB
PGZsb2F0PiB0b0NNWUtBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4g
dG9DTVlLQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVy
c2lvbi5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjcgKzMzLDEwMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZs
b2F0KTsKIGZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOwogCisKKy8vIEFs
bCBjb2xvciB0eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbnZl
cnNpb25zIHRvIGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgorLy8gICAgWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKKy8vICAgIENvbG9yVHlwZTxmbG9h
dD4gdG9Db2xvclR5cGUoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vCisvLyBBbnkgYWRkaXRpb25h
bCBjb252ZXJzaW9ucyBjYW4gYmUgdGhvdWdodCBvZiBhcyBvcHRpbWl6YXRpb25zLCBzaG9ydGN1
dHRpbmcgdW5uZWNlc3Nhcnkgc3RlcHMsIHRob3VnaAorLy8gc29tZSBtYXkgYmUgaW50ZWdyYWwg
dG8gdGhlIGJhc2UgY29udmVyc2lvbi4KKworCisvLyBTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VC
Q09SRV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8
ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKKworLy8gTGluZWFyU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
clNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRp
dGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNS
R0JBPGZsb2F0PiYpOwogCisKKy8vIERpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9u
cwogV0VCQ09SRV9FWFBPUlQgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQ
Myhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CisKKworLy8gTGluZWFyRGlzcGxheVAzCitXRUJD
T1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3Bs
YXlQMyhjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBE
aXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4m
KTsKIAotV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgRGlzcGxheVAz
PGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhj
b25zdCBTUkdCQTxmbG9hdD4mKTsKIAotV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xB
KGNvbnN0IFNSR0JBPGZsb2F0PiYpOworLy8gSFNMQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0
PiB0b0hTTEEoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBP
UlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKIAotU1JHQkE8Zmxv
YXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKKy8vIENNWUtBCitXRUJDT1JFX0VY
UE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CitXRUJDT1JFX0VY
UE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRp
b25zCitXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9h
dD4mKTsKIAotLy8gSWRlbnRpdHkgY29udmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250
ZXh0cykKKworLy8gSWRlbnRpdHkgY29udmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250
ZXh0cykuCiAKIGNvbnN0ZXhwciBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9h
dD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIExpbmVhclNSR0JBPGZsb2F0
PiB0b0xpbmVhclNSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJu
IGNvbG9yOyB9CiBjb25zdGV4cHIgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBE
aXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBMaW5l
YXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQ
MzxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIEhTTEE8ZmxvYXQ+
IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25z
dGV4cHIgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgQ01ZS0E8ZmxvYXQ+JiBjb2xvcikgeyBy
ZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgWFlaQTxm
bG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorCisKKy8vIEZhbGxiYWNrIGNvbnZlcnNp
b25zLgorCisvLyBBbGwgdHlwZXMgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYSBjb252ZXJzaW9uIHRv
IFhZWkEsIHNvIHRoZXNlIGFyZSBndWFyYW50ZWVkIHRvIHdvcmsgaWYKKy8vIGFub3RoZXIgb3Zl
cmxvYWQgaXMgbm90IGFscmVhZHkgcHJvdmlkZWQuCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b1NSR0JB
KHRvWFlaQShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJTUkdC
QSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0
b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0xpbmVhckRp
c3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8
ZmxvYXQ+IHRvSFNMQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9IU0xBKHRvWFla
QShjb2xvcikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9DTVlL
QShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9DTVlLQSh0b1hZWkEoY29sb3IpKTsK
K30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkg
eworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgdHMgPDwgInNSR0IiOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgdHMg
PDwgIkxpbmVhclJHQiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlz
cGxheVAzOgorICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIHJldHVybiB0czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw2ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBU
ZXh0U3RyZWFtOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgQ29sb3JT
cGFjZSA6IHVpbnQ4X3QgewpAQCAtMzMsNCArMzcsNiBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2Ug
OiB1aW50OF90IHsKICAgICBEaXNwbGF5UDMKIH07CiAKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSAr
MjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIK
ICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IENvbXBvbmVudFRyYWl0czsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJh
aXRzPHVpbnQ4X3Q+IHsKQEAgLTM1Myw3ICszNTMsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotCiAvLyBQYWNr
ZWQgQ29sb3IgRm9ybWF0cwogCiBuYW1lc3BhY2UgUGFja2VkQ29sb3IgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZp
c2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTMzLDggKzM0LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNS
R0JBOwotCiBmbG9hdCBsaWdodG5lc3MoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1p
bmFuY2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNS
R0JBPGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZsb2F0PiYpOwpAQCAtMTQ3LDEyICsxNDYsMTIgQEAg
dGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZp
bmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYm
IGZ1bmN0b3IpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUgdG8gd29yayB3
aXRoIGNvbG9ycyB0aGF0IGRvbid0IHVzZSB0aGUgbmFtZXMgcmVkLCBncmVlbiwgYW5kIGJsdWUg
Zm9yIHRoZWlyIGNoYW5uZWxzLgotICAgIGF1dG8gY29weSA9IGNvbG9yOwotICAgIGNvcHkucmVk
ID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29sb3IucmVkKTsKLSAgICBjb3B5LmdyZWVuID0gc3Rk
OjppbnZva2UoZnVuY3RvciwgY29sb3IuZ3JlZW4pOwotICAgIGNvcHkuYmx1ZSA9IHN0ZDo6aW52
b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29sb3IuYmx1ZSk7Ci0gICAgcmV0
dXJuIGNvcHk7CisgICAgYXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
OworICAgIGF1dG8gY29weSA9IGNvbXBvbmVudHM7CisgICAgY29weVswXSA9IHN0ZDo6aW52b2tl
KGZ1bmN0b3IsIGNvbXBvbmVudHNbMF0pOworICAgIGNvcHlbMV0gPSBzdGQ6Omludm9rZShmdW5j
dG9yLCBjb21wb25lbnRzWzFdKTsKKyAgICBjb3B5WzJdID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4geyBjb3B5
WzBdLCBjb3B5WzFdLCBjb3B5WzJdLCBjb3B5WzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShj
b25zdCBDb2xvclR5cGUmIGNvbG9yLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNp
b24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShDRykKIAot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtNTEsNiArNTEsMjEgQEAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNs
dHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGNv
bXBvbmVudHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7Cisg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAg
ICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBh
c1NSR0JBKGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwg
YXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5
UDM6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVu
Y3RvciksIGFzRGlzcGxheVAzKGNvbXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKK30KKwogc3RhdGljIE9wdGlvbmFsPFNS
R0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29sb3Ip
CiB7CiAgICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUgY29sb3Ig
c3BhY2VzLgpAQCAtOTcsMjEgKzExMiwyNCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xv
ciwgU2VtYW50aWNUCiBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xv
clNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50
czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0g
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAg
ICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29t
cG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVy
biBDR0NvbG9yQ3JlYXRlKGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVu
dHMpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICAvLyBGSVhNRTog
RG8gd2UgZXZlciBjcmVhdGUgQ0dDb2xvclJlZnMgaW4gdGhlc2Ugc3BhY2VzPyBJdCBtYXkgb25s
eSBiZSBJbWFnZUJ1ZmZlcnMuCi0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xv
clNwYWNlUmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9
IGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKKworICAgIC8vIFNvbWUgQ0cgcG9ydHMg
ZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJuCisg
ICAgLy8gc1JHQkNvbG9yU3BhY2VSZWYoKSBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJ
biB0aG9zZSBjYXNlcywgd2UKKyAgICAvLyBuZWVkIHRvIGVhZ2VybHkgYW5kIHBvdGVudGlhbGx5
IGxvc3NpbHkgY29udmVydCB0aGUgY29sb3IgaW50byBzUkdCCisgICAgLy8gb3Vyc2VsdmVzIGJl
Zm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICBpZiAoY29sb3JTcGFjZSAhPSBDb2xv
clNwYWNlOjpTUkdCICYmIGNnQ29sb3JTcGFjZSA9PSBzUkdCQ29sb3JTcGFjZVJlZigpKSB7Cisg
ICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29t
cG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAg
ICByZXR1cm4gdG9TUkdCQShjb2xvcik7CisgICAgICAgIH0pOworICAgICAgICBjb21wb25lbnRz
ID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsKICAgICB9CiAKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIFty
LCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0
XSB7IHIsIGcsIGIsIGEgfTsKKworICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFj
ZSwgY2dGbG9hdENvbXBvbmVudHMpOwogfQogCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlIDxtdXRl
eD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0NHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMg
d2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCisgICAg
ICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUg
ZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0IsIHRoaXMg
YWxsIHdvcmtzIG91dCBuaWNlbHkuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5l
ZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBzUkdCQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsK
KyAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBzUkdCQ29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsK
KyNlbmRpZiAvLyBQTEFURk9STShXSU4pCisgICAgfSk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNw
YWNlOworfQorCitDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCit7Cisg
ICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxk
IGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dl
YmtpdC5vcmcvYi84MDAwMC4KKyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xv
clNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOworI2VuZGlmCisg
ICAgfSk7CisgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFj
ZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNl
UmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKKyNlbHNlCisgICAgICAgIGRpc3BsYXlQM0Nv
bG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0
dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNS
R0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVk
U1JHQkNvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgY29sb3JT
cGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNS
R0IpOworI2VuZGlmCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVu
ZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgorICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCisg
ICAgICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgICAgICBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKKyAgICB9KTsKKyAgICByZXR1cm4g
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCit0eXBlZGVm
IHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYo
KTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVm
KCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJl
ZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKKworc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNw
YWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4g
bGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAz
OgorICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3MyArNzEsNiBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0
VXNlclRvQmFzZUNUCiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KENHQ29udGV4
dEdldENUTShjb250ZXh0KSwgQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0QmFz
ZUNUTShjb250ZXh0KSkpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYo
KQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Ci0gICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0
YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2
b2lkcwotICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4g
U2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwotICAgICAgICAvLyBpcyBz
UkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAgICAgICAvLyBGSVhNRTogSXMgdGhp
cyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KLSAgICAg
ICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlU1JHQik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCi0gICAgICAgICAgICBzUkdC
Q29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotI2Vsc2UKLSAgICAg
ICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlU1JHQik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotICAgIH0pOwotICAgIHJldHVybiBz
UkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VS
ZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsK
LSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIEZJWE1FOiBXaW5k
b3dzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5
IGh0dHA6Ly93ZWJraXQub3JnL2IvODAwMDAuCi0gICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2Ug
PSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFj
ZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsK
LSNlbmRpZgotICAgIH0pOwotICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwotfQotCi1D
R0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewot
ICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKLSNlbmRpZgotICAgICAgICAvLyBJZiB0aGVyZSBp
cyBubyBzdXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KLSAgICAg
ICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0KLSAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7
Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29s
b3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3Bs
YXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAgfSk7Ci0g
ICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci19Ci0KIHN0YXRpYyBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb252ZXJ0SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0
eSBxdWFsaXR5KQogewogICAgIHN3aXRjaCAocXVhbGl0eSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNSwzMyArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvclNw
YWNlQ0cuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAotdHlwZWRlZiBzdHJ1Y3Qg
Q0dDb2xvclNwYWNlICpDR0NvbG9yU3BhY2VSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJD
T1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwot
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsK
LVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7
Ci0KIENHQWZmaW5lVHJhbnNmb3JtIGdldFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVmKTsKIAot
c3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENv
bG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29s
b3JTcGFjZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICBy
ZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogY2xhc3MgQ0dD
b250ZXh0U3RhdGVTYXZlciB7CiBwdWJsaWM6CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlcihDR0Nv
bnRleHRSZWYgY29udGV4dCwgYm9vbCBzYXZlQW5kUmVzdG9yZSA9IHRydWUpCg==
</data>
<flag name="commit-queue"
          id="434378"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416773</attachid>
            <date>2020-12-25 20:51:44 -0800</date>
            <delta_ts>2020-12-25 22:00:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225205143.patch</filename>
            <type>text/plain</type>
            <size>43092</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMiAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBzZXRFeHRlbmRlZENvbG9y
KEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb21wb25lbnRzLCBjb2xvclNwYWNlKSk7CiB9CiAKLWlu
bGluZSBDb2xvcjo6Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxpbmUgQ29sb3I6OkNv
bG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mIGNvbG9yKQogewotICAgIHNldENvbG9yKGNvbG9y
KTsKKyAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb2xvcikpOwog
fQogCiBpbmxpbmUgQ29sb3I6OkNvbG9yKFJlZjxFeHRlbmRlZENvbG9yPiYmIGV4dGVuZGVkQ29s
b3IpCkBAIC00MDIsMTcgKzM3Nyw3IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihTUkdC
QTx1aW50OF8KICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKLWlubGluZSB2b2lkIENvbG9yOjpzZXRD
b2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3Io
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpz
ZXRDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVu
ZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lk
IENvbG9yOjpzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRl
PHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSB2b2lkIENvbG9y
OjpzZXRDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRl
bmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3Bw
CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMg
TGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9y
KQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNv
bG9yKQogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAv
LyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01h
dHJpeC5odG1sCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0
b0xpbmVhclNSR0JBKAogICAgIHJldHVybiBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikp
KTsKIH0KIAotc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBj
b2xvcikKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAg
Ly8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9N
YXRyaXguaHRtbApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihj
b25zdCBMaW5lYXJTUkcKICAgICByZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0K
IAotc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3Bs
YXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHBy
IENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAg
cmV0dXJuIGFzTGluZWFyRGlzcGxheVAzKHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5z
Zm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1z
dGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3It
Y29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRp
c3BsYXlQM1RvWFlaTWF0cml4IHsKQEAgLTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpcwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxh
eVAzVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IpKSk7CiB9CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mIGNvbG9yKQotewotICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoo
dG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlz
cGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxh
eVAzKHRvTGluZWFyRGlzcGxheVAzKHRvWFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQot
CiBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAv
LyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0
ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAg
IHJldHVybiB7IHIsIGcsIGIsIGEgfTsKIH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3Qg
U1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOwor
CisgICAgYXV0byBrID0gMS4wZiAtIHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9
PSAxLjBmKQorICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAg
YXV0byBjID0gKDEuMGYgLSByIC0gaykgLyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBm
IC0gZyAtIGspIC8gKDEuMGYgLSBrKTsKKyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgx
LjBmIC0gayk7CisgICAgcmV0dXJuIHsgYywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0
PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpB
KHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEo
Y29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4m
IGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsK
K30KKworRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7
Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7Cisg
ICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNM
QShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNv
bG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxm
bG9hdD4gdG9DTVlLQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
Q01ZS0EodG9TUkdCQShjb2xvcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9h
dCk7CiBmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwg
Y29sb3IgdHlwZXMgbXVzdCBhdCBsZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJz
aW9ucyB0byBhbmQgZnJvbSB0aGUgWFlaQSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+
IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwg
Y29udmVyc2lvbnMgY2FuIGJlIHRob3VnaHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0
aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRv
IHRoZSBiYXNlIGNvbnZlcnNpb24uCisKKworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNP
UkVfRVhQT1JUIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8
ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJT
UkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRp
b25zCiBXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mKTsKIAorCisvLyBEaXNwbGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5
UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMK
IFdFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09S
RV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4m
KTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5
UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlz
cGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7
CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShj
b25zdCBTUkdCQTxmbG9hdD4mKTsKKy8vIEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4g
dG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JU
IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0
PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZsb2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBP
UlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9u
cworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+
Jik7CiAKLS8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4
dHMpCisKKy8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4
dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+
JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBj
b2xvcjsgfQogY29uc3RleHByIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlz
cGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8
ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0
b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3Rl
eHByIENNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0
dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8Zmxv
YXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9u
cy4KKworLy8gQWxsIHR5cGVzIGFyZSByZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBY
WVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFudGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJs
b2FkIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0
b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEo
dG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9Y
WVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xp
bmVhckRpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNw
bGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZs
b2F0PiB0b0hTTEEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEo
Y29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29sb3JTcGFjZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8
ICJMaW5lYXJSR0IiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKKyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4
dFN0cmVhbTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKQEAgLTMzLDQgKzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDog
dWludDhfdCB7CiAgICAgRGlzcGxheVAzCiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yQ29tcG9u
ZW50cy5oIgogI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8Y21hdGg+CkBAIC0zMyw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsKLQogZmxvYXQgbGlnaHRuZXNzKGNv
bnN0IFNSR0JBPGZsb2F0PiYpOwogZmxvYXQgbHVtaW5hbmNlKGNvbnN0IFNSR0JBPGZsb2F0PiYp
OwogZmxvYXQgY29udHJhc3RSYXRpbyhjb25zdCBTUkdCQTxmbG9hdD4mLCBjb25zdCBTUkdCQTxm
bG9hdD4mKTsKQEAgLTE0NywxMiArMTQ2LDEyIEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1l
PiB0eXBlbmFtZSBDb2wKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBG
dW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNv
bnN0IENvbG9yVHlwZSYgY29sb3IsIEZ1bmN0b3ImJiBmdW5jdG9yKQogewotICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBtYWRlIHRvIHdvcmsgd2l0aCBjb2xvcnMgdGhhdCBkb24ndCB1c2Ug
dGhlIG5hbWVzIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGZvciB0aGVpciBjaGFubmVscy4KLSAgICBh
dXRvIGNvcHkgPSBjb2xvcjsKLSAgICBjb3B5LnJlZCA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNv
bG9yLnJlZCk7Ci0gICAgY29weS5ncmVlbiA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbG9yLmdy
ZWVuKTsKLSAgICBjb3B5LmJsdWUgPSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4o
ZnVuY3RvciksIGNvbG9yLmJsdWUpOwotICAgIHJldHVybiBjb3B5OworICAgIGF1dG8gY29tcG9u
ZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsKKyAgICBhdXRvIGNvcHkgPSBjb21wb25l
bnRzOworICAgIGNvcHlbMF0gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb21wb25lbnRzWzBdKTsK
KyAgICBjb3B5WzFdID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29tcG9uZW50c1sxXSk7CisgICAg
Y29weVsyXSA9IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29t
cG9uZW50c1syXSk7CisgICAgcmV0dXJuIHsgY29weVswXSwgY29weVsxXSwgY29weVsyXSwgY29w
eVszXSB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xv
clR5cGUgY29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgdWlu
dDhfdCBvdmVycmlkZUFscGhhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5kZWRDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MCwxOSArODAsMjQgQEAgaW5saW5lIEV4dGVuZGVkQ29sb3I6OkV4dGVuZGVkQ29sb3IoQ29s
bwogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBkZWNsdHlwZShhdXRvKSBFeHRl
bmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlwZShGdW5jdG9yJiYgZnVuY3RvcikgY29uc3QK
K3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxs
V2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb21wb25lbnRzLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQogewotICAgIHN3aXRjaCAo
bV9jb2xvclNwYWNlKSB7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CiAgICAgY2FzZSBDb2xv
clNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1
bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKG1fY29tcG9uZW50cykpOworICAgICAgICByZXR1cm4g
c3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBv
bmVudHMpKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdC
QShtX2NvbXBvbmVudHMpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2Fy
ZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7CiAgICAgY2Fz
ZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6
OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzRGlzcGxheVAzKG1fY29tcG9uZW50cykpOwor
ICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3Ip
LCBhc0Rpc3BsYXlQMyhjb21wb25lbnRzKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgYXNTUkdCQShtX2NvbXBvbmVudHMpKTsKKyAgICByZXR1cm4gc3RkOjppbnZva2Uoc3Rk
Ojpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykgRXh0ZW5kZWRDb2xvcjo6
Y2FsbE9uVW5kZXJseWluZ1R5cGUoRnVuY3RvciYmIGZ1bmN0b3IpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNhbGxXaXRoQ29sb3JUeXBlKG1fY29tcG9uZW50cywgbV9jb2xvclNwYWNlLCBzdGQ6OmZv
cndhcmQ8RnVuY3Rvcj4oZnVuY3RvcikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjcxMDc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShDRykKIAotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtOTcsMjEgKzk3LDI0IEBAIENvbG9yOjpDb2xvcihDR0Nv
bG9yUmVmIGNvbG9yLCBTZW1hbnRpY1QKIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9
IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgYXV0byBbciwgZywgYiwgYV0g
PSBjb21wb25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBi
LCBhIH07CiAKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6
OlNSR0I6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCks
IGNnRmxvYXRDb21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAg
ICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpLCBjZ0Zs
b2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAg
IC8vIEZJWE1FOiBEbyB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9yUmVmcyBpbiB0aGVzZSBzcGFjZXM/
IEl0IG1heSBvbmx5IGJlIEltYWdlQnVmZmVycy4KLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOworICAgIGF1dG8gY2dD
b2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOworCisgICAgLy8gU29t
ZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFu
ZCByZXR1cm4KKyAgICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1bnN1cHBvcnRlZCBjb2xv
ciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZQorICAgIC8vIG5lZWQgdG8gZWFnZXJseSBhbmQg
cG90ZW50aWFsbHkgbG9zc2lseSBjb252ZXJ0IHRoZSBjb2xvciBpbnRvIHNSR0IKKyAgICAvLyBv
dXJzZWx2ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIGlmIChjb2xvclNw
YWNlICE9IENvbG9yU3BhY2U6OlNSR0IgJiYgY2dDb2xvclNwYWNlID09IHNSR0JDb2xvclNwYWNl
UmVmKCkpIHsKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENv
bG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsK
KyAgICAgICAgICAgIHJldHVybiB0b1NSR0JBKGNvbG9yKTsKKyAgICAgICAgfSk7CisgICAgICAg
IGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOwog
ICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwor
ICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxvYXRD
b21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OworCisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CiB9CiAKIENHQ29sb3JSZWYgY2FjaGVk
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKworI2lmIFVTRShDRykKKworI2lu
Y2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5z
dGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBh
dm9pZHMKKyAgICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMu
IFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKKyAgICAgICAgLy8gaXMg
c1JHQiwgdGhpcyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KKyAgICAgICAgLy8gRklYTUU6IElzIHRo
aXMgc3RpbGwgbmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCisgICAg
ICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpOworICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQorICAgICAgICAgICAgc1JH
QkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyNlbHNlCisgICAg
ICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpOworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyAgICB9KTsKKyAgICByZXR1cm4g
c1JHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNl
UmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2U7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhNRTogV2lu
ZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJhY2tlZCBi
eSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNl
ID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAgIGxpbmVhclJHQkNvbG9yU3Bh
Y2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFyU1JHQik7
CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKK30KKwor
Q0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOworI2Vsc2UKKyAgICAgICAg
ZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9
KTsKKyAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVm
IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VS
ZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZUV4dGVuZGVkU1JHQik7CisjZW5kaWYKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9y
dCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0IuCisgICAgICAgIGlmICghY29s
b3JTcGFjZSkKKyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwor
CisgICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOworICAgIH0pOwor
ICAgIHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworfQorCit9CisKKyNlbmRpZiAvLyBV
U0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvclNwYWNlQ0cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CisKK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29s
b3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNv
bG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDND
b2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRT
UkdCQ29sb3JTcGFjZVJlZigpOworCitzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNo
ZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIHN3aXRjaCAoY29s
b3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNS
R0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAg
ICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNl
OjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDczICs3MSw2IEBAIGlubGluZSBDR0FmZmluZVRy
YW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1QKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Db25j
YXQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0Nv
bnRleHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzUkdCQ29s
b3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFj
ZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIE91dC1vZi1k
YXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRo
aXMgbG9naWMgYXZvaWRzCi0gICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBj
b25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCi0gICAg
ICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCi0gICAgICAgIC8vIEZJ
WE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZp
eGVkLgotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKTsKLSAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKLSAgICAg
ICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0j
ZWxzZQotICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKTsKLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0gICAgfSk7Ci0g
ICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdC
Q29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JD
b2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8g
RklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlz
IHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAgICAgICAgbGluZWFyUkdC
Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICBsaW5lYXJS
R0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxp
bmVhclNSR0IpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3Bh
Y2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKLXsK
LSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci0gICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gTlVMTDsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwotI2VuZGlmCi0gICAgICAgIC8v
IElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBz
UkdCLgotICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgICAgICBjb2xvclNwYWNlID0g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKLQotICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0g
Y29sb3JTcGFjZTsKLSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsK
LX0KLQotQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQotewotICAgIHN0
YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOwotI2Vsc2UKLSAg
ICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYK
LSAgICB9KTsKLSAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKLX0KLQogc3RhdGljIElu
dGVycG9sYXRpb25RdWFsaXR5IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0ludGVycG9s
YXRpb25RdWFsaXR5IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCwg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDMzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCi10eXBl
ZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JT
cGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9y
U3BhY2VSZWYoKTsKLQogQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRl
eHRSZWYpOwogCi1zdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3Bh
Y2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNl
UmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBs
aW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6
Ci0gICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0gICAgfQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotfQot
CiBjbGFzcyBDR0NvbnRleHRTdGF0ZVNhdmVyIHsKIHB1YmxpYzoKICAgICBDR0NvbnRleHRTdGF0
ZVNhdmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkK
</data>
<flag name="commit-queue"
          id="434379"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416774</attachid>
            <date>2020-12-25 20:57:05 -0800</date>
            <delta_ts>2020-12-25 21:17:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225205704.patch</filename>
            <type>text/plain</type>
            <size>43482</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMiAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBzZXRFeHRlbmRlZENvbG9y
KEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb21wb25lbnRzLCBjb2xvclNwYWNlKSk7CiB9CiAKLWlu
bGluZSBDb2xvcjo6Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxpbmUgQ29sb3I6OkNv
bG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mIGNvbG9yKQogewotICAgIHNldENvbG9yKGNvbG9y
KTsKKyAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb2xvcikpOwog
fQogCiBpbmxpbmUgQ29sb3I6OkNvbG9yKFJlZjxFeHRlbmRlZENvbG9yPiYmIGV4dGVuZGVkQ29s
b3IpCkBAIC00MDIsMTcgKzM3Nyw3IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihTUkdC
QTx1aW50OF8KICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKLWlubGluZSB2b2lkIENvbG9yOjpzZXRD
b2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3Io
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpz
ZXRDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVu
ZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lk
IENvbG9yOjpzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRl
PHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSB2b2lkIENvbG9y
OjpzZXRDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRl
bmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3Bw
CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMg
TGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9y
KQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNv
bG9yKQogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAv
LyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01h
dHJpeC5odG1sCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0
b0xpbmVhclNSR0JBKAogICAgIHJldHVybiBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikp
KTsKIH0KIAotc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBj
b2xvcikKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAg
Ly8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9N
YXRyaXguaHRtbApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihj
b25zdCBMaW5lYXJTUkcKICAgICByZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0K
IAotc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3Bs
YXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHBy
IENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAg
cmV0dXJuIGFzTGluZWFyRGlzcGxheVAzKHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5z
Zm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1z
dGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3It
Y29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRp
c3BsYXlQM1RvWFlaTWF0cml4IHsKQEAgLTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpcwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxh
eVAzVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IpKSk7CiB9CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mIGNvbG9yKQotewotICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoo
dG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlz
cGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxh
eVAzKHRvTGluZWFyRGlzcGxheVAzKHRvWFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQot
CiBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAv
LyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0
ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAg
IHJldHVybiB7IHIsIGcsIGIsIGEgfTsKIH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3Qg
U1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOwor
CisgICAgYXV0byBrID0gMS4wZiAtIHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9
PSAxLjBmKQorICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAg
YXV0byBjID0gKDEuMGYgLSByIC0gaykgLyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBm
IC0gZyAtIGspIC8gKDEuMGYgLSBrKTsKKyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgx
LjBmIC0gayk7CisgICAgcmV0dXJuIHsgYywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0
PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpB
KHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEo
Y29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4m
IGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsK
K30KKworRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7
Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7Cisg
ICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNM
QShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNv
bG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxm
bG9hdD4gdG9DTVlLQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
Q01ZS0EodG9TUkdCQShjb2xvcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9h
dCk7CiBmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwg
Y29sb3IgdHlwZXMgbXVzdCBhdCBsZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJz
aW9ucyB0byBhbmQgZnJvbSB0aGUgWFlaQSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+
IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwg
Y29udmVyc2lvbnMgY2FuIGJlIHRob3VnaHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0
aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRv
IHRoZSBiYXNlIGNvbnZlcnNpb24uCisKKworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNP
UkVfRVhQT1JUIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8
ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJT
UkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRp
b25zCiBXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mKTsKIAorCisvLyBEaXNwbGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5
UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMK
IFdFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09S
RV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4m
KTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5
UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlz
cGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7
CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShj
b25zdCBTUkdCQTxmbG9hdD4mKTsKKy8vIEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4g
dG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JU
IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0
PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZsb2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBP
UlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9u
cworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+
Jik7CiAKLS8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4
dHMpCisKKy8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4
dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+
JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBj
b2xvcjsgfQogY29uc3RleHByIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlz
cGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8
ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0
b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3Rl
eHByIENNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0
dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8Zmxv
YXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9u
cy4KKworLy8gQWxsIHR5cGVzIGFyZSByZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBY
WVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFudGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJs
b2FkIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0
b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEo
dG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9Y
WVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xp
bmVhckRpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNw
bGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZs
b2F0PiB0b0hTTEEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEo
Y29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29sb3JTcGFjZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8
ICJMaW5lYXJSR0IiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKKyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4
dFN0cmVhbTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKQEAgLTMzLDQgKzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDog
dWludDhfdCB7CiAgICAgRGlzcGxheVAzCiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDYgKzM1
MywyMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyCiAgICAgcmV0
dXJuICEoYSA9PSBiKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHBy
IGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxm
bG9hdD4mIGNvbXBvbmVudHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3RvciYmIGZ1bmN0
b3IpCit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvclNwYWNlOjpT
UkdCOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1
bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVh
clJHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihm
dW5jdG9yKSwgYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNl
OjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVu
Y3Rvcj4oZnVuY3RvciksIGFzRGlzcGxheVAzKGNvbXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJk
PEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKGNvbXBvbmVudHMpKTsKK30KIAogLy8gUGFja2Vk
IENvbG9yIEZvcm1hdHMKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3JDb21wb25l
bnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDxjbWF0aD4KQEAgLTMzLDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwotCiBmbG9hdCBsaWdodG5lc3MoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFuY2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7
CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JBPGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZs
b2F0PiYpOwpAQCAtMTQ3LDEyICsxNDYsMTIgQEAgdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+
IHR5cGVuYW1lIENvbAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1
bmN0b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29u
c3QgQ29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYmIGZ1bmN0b3IpCiB7Ci0gICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIG1hZGUgdG8gd29yayB3aXRoIGNvbG9ycyB0aGF0IGRvbid0IHVzZSB0
aGUgbmFtZXMgcmVkLCBncmVlbiwgYW5kIGJsdWUgZm9yIHRoZWlyIGNoYW5uZWxzLgotICAgIGF1
dG8gY29weSA9IGNvbG9yOwotICAgIGNvcHkucmVkID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29s
b3IucmVkKTsKLSAgICBjb3B5LmdyZWVuID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29sb3IuZ3Jl
ZW4pOwotICAgIGNvcHkuYmx1ZSA9IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihm
dW5jdG9yKSwgY29sb3IuYmx1ZSk7Ci0gICAgcmV0dXJuIGNvcHk7CisgICAgYXV0byBjb21wb25l
bnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOworICAgIGF1dG8gY29weSA9IGNvbXBvbmVu
dHM7CisgICAgY29weVswXSA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbXBvbmVudHNbMF0pOwor
ICAgIGNvcHlbMV0gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb21wb25lbnRzWzFdKTsKKyAgICBj
b3B5WzJdID0gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBjb21w
b25lbnRzWzJdKTsKKyAgICByZXR1cm4geyBjb3B5WzBdLCBjb3B5WzFdLCBjb3B5WzJdLCBjb3B5
WzNdIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9y
VHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmIGNvbG9yLCB1aW50
OF90IG92ZXJyaWRlQWxwaGEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbmRlZENvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDE3ICs4Miw3IEBAIGlubGluZSBFeHRlbmRlZENvbG9yOjpFeHRlbmRlZENvbG9yKENvbG8K
IAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykgRXh0ZW5kZWRDb2xv
cjo6Y2FsbE9uVW5kZXJseWluZ1R5cGUoRnVuY3RvciYmIGZ1bmN0b3IpIGNvbnN0CiB7Ci0gICAg
c3dpdGNoIChtX2NvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAg
ICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFz
U1JHQkEobV9jb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IGFzTGluZWFyU1JHQkEobV9jb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNw
bGF5UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4o
ZnVuY3RvciksIGFzRGlzcGxheVAzKG1fY29tcG9uZW50cykpOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVu
Y3Rvcj4oZnVuY3RvciksIGFzU1JHQkEobV9jb21wb25lbnRzKSk7CisgICAgcmV0dXJuIGNhbGxX
aXRoQ29sb3JUeXBlKG1fY29tcG9uZW50cywgbV9jb2xvclNwYWNlLCBzdGQ6OmZvcndhcmQ8RnVu
Y3Rvcj4oZnVuY3RvcikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShDRykKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RpbnlM
UlVDYWNoZS5oPgpAQCAtOTcsMjEgKzk3LDI0IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNv
bG9yLCBTZW1hbnRpY1QKIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKIHsKICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNv
bG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25l
bnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CiAK
LSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0g
ICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNnRmxvYXRD
b21wb25lbnRzKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0
dXJuIENHQ29sb3JDcmVhdGUoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9u
ZW50cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIC8vIEZJWE1F
OiBEbyB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9yUmVmcyBpbiB0aGVzZSBzcGFjZXM/IEl0IG1heSBv
bmx5IGJlIEltYWdlQnVmZmVycy4KLSAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNv
bG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOworICAgIGF1dG8gY2dDb2xvclNwYWNl
ID0gY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOworCisgICAgLy8gU29tZSBDRyBwb3J0
cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4K
KyAgICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMu
IEluIHRob3NlIGNhc2VzLCB3ZQorICAgIC8vIG5lZWQgdG8gZWFnZXJseSBhbmQgcG90ZW50aWFs
bHkgbG9zc2lseSBjb252ZXJ0IHRoZSBjb2xvciBpbnRvIHNSR0IKKyAgICAvLyBvdXJzZWx2ZXMg
YmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIGlmIChjb2xvclNwYWNlICE9IENv
bG9yU3BhY2U6OlNSR0IgJiYgY2dDb2xvclNwYWNlID09IHNSR0JDb2xvclNwYWNlUmVmKCkpIHsK
KyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShj
b21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAg
ICAgIHJldHVybiB0b1NSR0JBKGNvbG9yKTsKKyAgICAgICAgfSk7CisgICAgICAgIGNvbXBvbmVu
dHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOwogICAgIH0KIAot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8g
W3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRz
WzRdIHsgciwgZywgYiwgYSB9OworCisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2dDb2xvclNw
YWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CiB9CiAKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgPG11
dGV4PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAg
ICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFsbGF0aW9u
cyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9pZHMKKyAg
ICAgICAgLy8gY2F1c2luZyBhIGNyYXNoIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuIFNpbmNlIHRo
ZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdpbmRvd3MKKyAgICAgICAgLy8gaXMgc1JHQiwgdGhp
cyBhbGwgd29ya3Mgb3V0IG5pY2VseS4KKyAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgc3RpbGwg
bmVlZGVkPyByZGFyOi8vcHJvYmxlbS8xNTIxMzUxNSB3YXMgZml4ZWQuCisgICAgICAgIHNSR0JD
b2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0Ip
OworICAgICAgICBpZiAoIXNSR0JDb2xvclNwYWNlKQorICAgICAgICAgICAgc1JHQkNvbG9yU3Bh
Y2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyNlbHNlCisgICAgICAgIHNSR0JD
b2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0Ip
OworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyAgICB9KTsKKyAgICByZXR1cm4gc1JHQkNvbG9y
U3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCkKK3sK
KyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2U7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91
bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJhY2tlZCBieSBodHRwOi8v
d2Via2l0Lm9yZy9iLzgwMDAwLgorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFyU1JHQik7CisjZW5kaWYK
KyAgICB9KTsKKyAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNw
YWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3Bh
Y2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOworI2Vsc2UKKyAgICAgICAgZGlzcGxheVAz
Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9KTsKKyAgICBy
ZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKK30KKworQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVk
U1JHQkNvbG9yU3BhY2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBjb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVk
U1JHQik7CisjZW5kaWYKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0
ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRvIHNSR0IuCisgICAgICAgIGlmICghY29sb3JTcGFjZSkK
KyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworCisgICAgICAg
IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOworICAgIH0pOworICAgIHJldHVy
biBleHRlbmRlZFNSR0JDb2xvclNwYWNlOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoQ0cpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisKK3R5cGVk
ZWYgc3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJl
ZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VS
ZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNl
UmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JT
cGFjZVJlZigpOworCitzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9y
U3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkg
eworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNw
YWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHJldHVy
biBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5
UDM6CisgICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwor
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDczICs3MSw2IEBAIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSBn
ZXRVc2VyVG9CYXNlQ1QKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoQ0dDb250
ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRC
YXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJl
ZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKLSAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGlu
c3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMg
YXZvaWRzCi0gICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25z
LiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCi0gICAgICAgIC8vIGlz
IHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCi0gICAgICAgIC8vIEZJWE1FOiBJcyB0
aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgotICAg
ICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9y
U3BhY2VTUkdCKTsKLSAgICAgICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKLSAgICAgICAgICAgIHNS
R0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0jZWxzZQotICAg
ICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9y
U3BhY2VTUkdCKTsKLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0gICAgfSk7Ci0gICAgcmV0dXJu
IHNSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFj
ZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNl
OwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8gRklYTUU6IFdp
bmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQg
YnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFj
ZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICBsaW5lYXJSR0JDb2xvclNw
YWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0Ip
OwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Ci19Ci0K
LUNHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0
aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gTlVMTDsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwotI2VuZGlmCi0gICAgICAgIC8vIElmIHRoZXJl
IGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgotICAg
ICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9y
U3BhY2VSZWYoKTsKLQotICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFj
ZTsKLSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dD
b2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0Nv
bG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMpOwotI2Vsc2UKLSAgICAgICAgZGlz
cGxheVAzQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICB9KTsK
LSAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKLX0KLQogc3RhdGljIEludGVycG9sYXRp
b25RdWFsaXR5IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0ludGVycG9sYXRpb25RdWFs
aXR5IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCwgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI1LDMzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9y
U3BhY2VDRy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCi10eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKLVdF
QkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7
Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigp
OwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYo
KTsKLQogQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYpOwog
Ci1zdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0g
ICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJSR0JD
b2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAg
IHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotfQotCiBjbGFzcyBD
R0NvbnRleHRTdGF0ZVNhdmVyIHsKIHB1YmxpYzoKICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyKENH
Q29udGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkK
</data>
<flag name="commit-queue"
          id="434375"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416775</attachid>
            <date>2020-12-25 21:04:42 -0800</date>
            <delta_ts>2020-12-25 22:56:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225210441.patch</filename>
            <type>text/plain</type>
            <size>43759</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw5ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4sIFNlbWFudGljVGFnKTsKIAogICAgIENvbG9yKENvbG9yQ29tcG9uZW50czxmbG9h
dD4sIENvbG9yU3BhY2UpOwotICAgIENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIENv
bG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIENvbG9yKGNvbnN0IERpc3BsYXlQ
MzxmbG9hdD4mKTsKKyAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CiAKICAgICBleHBsaWNpdCBD
b2xvcihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKICAgICBleHBsaWNpdCBDb2xvcihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwpAQCAtMTgxLDkgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYpOwogCiAgICAgdm9pZCBzZXRDb2xv
cihTUkdCQTx1aW50OF90Pik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4m
KTsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworICAgIHRlbXBsYXRlPHRlbXBs
YXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3JUeXBlPGZsb2F0PiYpOwogICAgIHZvaWQgc2V0RXh0ZW5kZWRDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHRhZ0FzU2VtYW50aWMoKSB7IG1fY29sb3JEYXRhLmlubGlu
ZUNvbG9yQW5kRmxhZ3MgfD0gaXNTZW1hbnRpY0lubGluZUNvbG9yQml0OyB9CkBAIC0yMTgsNyAr
MjE0LDYgQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKAogI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKIHsKQEAgLTI3NiwzMiAr
MjcxLDEyIEBAIGlubGluZSBDb2xvcjo6Q29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDgKIAogaW5s
aW5lIENvbG9yOjpDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGNvbXBvbmVudHMsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHNldENvbG9yKGFzU1JHQkEoY29tcG9uZW50cykp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAg
ICAgIHNldENvbG9yKGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHNldENvbG9yKGFzRGlz
cGxheVAzKGNvbXBvbmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldENvbG9y
KGNvbG9yKTsKLX0KLQotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIHNldENvbG9yKGNvbG9yKTsKKyAgICBzZXRFeHRlbmRlZENvbG9y
KEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb21wb25lbnRzLCBjb2xvclNwYWNlKSk7CiB9CiAKLWlu
bGluZSBDb2xvcjo6Q29sb3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxpbmUgQ29sb3I6OkNv
bG9yKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mIGNvbG9yKQogewotICAgIHNldENvbG9yKGNvbG9y
KTsKKyAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb2xvcikpOwog
fQogCiBpbmxpbmUgQ29sb3I6OkNvbG9yKFJlZjxFeHRlbmRlZENvbG9yPiYmIGV4dGVuZGVkQ29s
b3IpCkBAIC00MDIsMTcgKzM3Nyw3IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihTUkdC
QTx1aW50OF8KICAgICB0YWdBc1ZhbGlkKCk7CiB9CiAKLWlubGluZSB2b2lkIENvbG9yOjpzZXRD
b2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVuZGVkQ29sb3Io
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lkIENvbG9yOjpz
ZXRDb2xvcihjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIHNldEV4dGVu
ZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KLWlubGluZSB2b2lk
IENvbG9yOjpzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK3RlbXBsYXRl
PHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGlubGluZSB2b2lkIENvbG9y
OjpzZXRDb2xvcihjb25zdCBDb2xvclR5cGU8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBzZXRFeHRl
bmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjb2xvcikpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3Bw
CShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3Bs
YXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMg
TGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9y
KQorTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNv
bG9yKQogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAv
LyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01h
dHJpeC5odG1sCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0
b0xpbmVhclNSR0JBKAogICAgIHJldHVybiBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikp
KTsKIH0KIAotc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBj
b2xvcikKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAg
Ly8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9N
YXRyaXguaHRtbApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihj
b25zdCBMaW5lYXJTUkcKICAgICByZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0K
IAotc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3Bs
YXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHBy
IENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBzdGF0aWMgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAg
cmV0dXJuIGFzTGluZWFyRGlzcGxheVAzKHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5z
Zm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1z
dGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3It
Y29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRp
c3BsYXlQM1RvWFlaTWF0cml4IHsKQEAgLTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8Zmxv
YXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpcwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxh
eVAzVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IpKSk7CiB9CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mIGNvbG9yKQotewotICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoo
dG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlz
cGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxh
eVAzKHRvTGluZWFyRGlzcGxheVAzKHRvWFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQot
CiBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAv
LyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0
ICsyMjksNTggQEAgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAg
IHJldHVybiB7IHIsIGcsIGIsIGEgfTsKIH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3Qg
U1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOwor
CisgICAgYXV0byBrID0gMS4wZiAtIHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9
PSAxLjBmKQorICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAg
YXV0byBjID0gKDEuMGYgLSByIC0gaykgLyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBm
IC0gZyAtIGspIC8gKDEuMGYgLSBrKTsKKyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgx
LjBmIC0gayk7CisgICAgcmV0dXJuIHsgYywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0
PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpB
KHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEo
Y29sb3IpKTsKK30KKworWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4m
IGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsK
K30KKworRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7
Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7Cisg
ICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNM
QShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JB
KGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNv
bG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxm
bG9hdD4gdG9DTVlLQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
Q01ZS0EodG9TUkdCQShjb2xvcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9h
dCk7CiBmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwg
Y29sb3IgdHlwZXMgbXVzdCBhdCBsZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJz
aW9ucyB0byBhbmQgZnJvbSB0aGUgWFlaQSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBDb2xvclR5cGU8ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+
IHRvQ29sb3JUeXBlKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwg
Y29udmVyc2lvbnMgY2FuIGJlIHRob3VnaHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0
aW5nIHVubmVjZXNzYXJ5IHN0ZXBzLCB0aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRv
IHRoZSBiYXNlIGNvbnZlcnNpb24uCisKKworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNP
UkVfRVhQT1JUIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8
ZmxvYXQ+Jik7CisKKy8vIExpbmVhclNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJT
UkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRp
b25zCiBXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdC
QTxmbG9hdD4mKTsKIAorCisvLyBEaXNwbGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5
UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMK
IFdFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09S
RV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4m
KTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5
UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlz
cGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7
CiAKLVdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxm
bG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShj
b25zdCBTUkdCQTxmbG9hdD4mKTsKKy8vIEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4g
dG9IU0xBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JU
IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0
PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZsb2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBP
UlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9u
cworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+
Jik7CiAKLS8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4
dHMpCisKKy8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4
dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+
JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBj
b2xvcjsgfQogY29uc3RleHByIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlz
cGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8
ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0
b0hTTEEoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3Rl
eHByIENNWUtBPGZsb2F0PiB0b0NNWUtBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0
dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8Zmxv
YXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9u
cy4KKworLy8gQWxsIHR5cGVzIGFyZSByZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBY
WVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFudGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJs
b2FkIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdC
QTxmbG9hdD4gdG9TUkdCQShjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0
b1hZWkEoY29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRv
TGluZWFyU1JHQkEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEo
dG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0
b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9Y
WVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xp
bmVhckRpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNw
bGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZs
b2F0PiB0b0hTTEEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEo
Y29sb3IpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0Eo
Y29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29sb3JTcGFjZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8
ICJMaW5lYXJSR0IiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKKyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4
dFN0cmVhbTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKQEAgLTMzLDQgKzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDog
dWludDhfdCB7CiAgICAgRGlzcGxheVAzCiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1
LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAj
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7
CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbXBvbmVudFRyYWl0czsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRzPHVpbnQ4X3Q+IHsKQEAgLTM1Myw2ICszNTQsMjAgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEg
PT0gYik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlw
ZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBj
b21wb25lbnRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQorewor
ICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwg
YXNTUkdCQShjb21wb25lbnRzKSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Cisg
ICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IGFzTGluZWFyU1JHQkEoY29tcG9uZW50cykpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgorICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1
bmN0b3IpLCBhc0Rpc3BsYXlQMyhjb21wb25lbnRzKSk7CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9y
PihmdW5jdG9yKSwgYXNTUkdCQShjb21wb25lbnRzKSk7Cit9CiAKIC8vIFBhY2tlZCBDb2xvciBG
b3JtYXRzCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgog
I2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
Y21hdGg+CkBAIC0zMyw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdCQTsKLQogZmxvYXQgbGlnaHRuZXNzKGNvbnN0IFNSR0JB
PGZsb2F0PiYpOwogZmxvYXQgbHVtaW5hbmNlKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogZmxvYXQg
Y29udHJhc3RSYXRpbyhjb25zdCBTUkdCQTxmbG9hdD4mLCBjb25zdCBTUkdCQTxmbG9hdD4mKTsK
QEAgLTE0NywxMiArMTQ2LDEyIEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFt
ZSBDb2wKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBD
b2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNvbnN0IENvbG9y
VHlwZSYgY29sb3IsIEZ1bmN0b3ImJiBmdW5jdG9yKQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBtYWRlIHRvIHdvcmsgd2l0aCBjb2xvcnMgdGhhdCBkb24ndCB1c2UgdGhlIG5hbWVz
IHJlZCwgZ3JlZW4sIGFuZCBibHVlIGZvciB0aGVpciBjaGFubmVscy4KLSAgICBhdXRvIGNvcHkg
PSBjb2xvcjsKLSAgICBjb3B5LnJlZCA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbG9yLnJlZCk7
Ci0gICAgY29weS5ncmVlbiA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbG9yLmdyZWVuKTsKLSAg
ICBjb3B5LmJsdWUgPSBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rvciks
IGNvbG9yLmJsdWUpOwotICAgIHJldHVybiBjb3B5OworICAgIGF1dG8gY29tcG9uZW50cyA9IGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKTsKKyAgICBhdXRvIGNvcHkgPSBjb21wb25lbnRzOworICAg
IGNvcHlbMF0gPSBzdGQ6Omludm9rZShmdW5jdG9yLCBjb21wb25lbnRzWzBdKTsKKyAgICBjb3B5
WzFdID0gc3RkOjppbnZva2UoZnVuY3RvciwgY29tcG9uZW50c1sxXSk7CisgICAgY29weVsyXSA9
IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29tcG9uZW50c1sy
XSk7CisgICAgcmV0dXJuIHsgY29weVswXSwgY29weVsxXSwgY29weVsyXSwgY29weVszXSB9Owog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgY29s
b3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVy
cmlkZUFscGhhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5k
ZWRDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuZGVkQ29sb3IuaAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyAr
ODIsNyBAQCBpbmxpbmUgRXh0ZW5kZWRDb2xvcjo6RXh0ZW5kZWRDb2xvcihDb2xvCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGRlY2x0eXBlKGF1dG8pIEV4dGVuZGVkQ29sb3I6OmNhbGxP
blVuZGVybHlpbmdUeXBlKEZ1bmN0b3ImJiBmdW5jdG9yKSBjb25zdAogewotICAgIHN3aXRjaCAo
bV9jb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1
cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKG1f
Y29tcG9uZW50cykpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICBy
ZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0xpbmVh
clNSR0JBKG1fY29tcG9uZW50cykpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgot
ICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3Ip
LCBhc0Rpc3BsYXlQMyhtX2NvbXBvbmVudHMpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1
bmN0b3IpLCBhc1NSR0JBKG1fY29tcG9uZW50cykpOworICAgIHJldHVybiBjYWxsV2l0aENvbG9y
VHlwZShtX2NvbXBvbmVudHMsIG1fY29sb3JTcGFjZSwgc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1
bmN0b3IpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBVU0UoQ0cpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5o
IgorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUu
aD4KQEAgLTk3LDIxICs5NywyNCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgU2Vt
YW50aWNUCiBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNl
QW5kQ29tcG9uZW50cygpOwotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAg
ICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgc3dp
dGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICBy
ZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50
cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBDR0Nv
bG9yQ3JlYXRlKGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOwot
ICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICAvLyBGSVhNRTogRG8gd2Ug
ZXZlciBjcmVhdGUgQ0dDb2xvclJlZnMgaW4gdGhlc2Ugc3BhY2VzPyBJdCBtYXkgb25seSBiZSBJ
bWFnZUJ1ZmZlcnMuCi0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNl
UmVmKCksIGNnRmxvYXRDb21wb25lbnRzKTsKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hl
ZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKKworICAgIC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qg
c3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJuCisgICAgLy8g
c1JHQkNvbG9yU3BhY2VSZWYoKSBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9z
ZSBjYXNlcywgd2UKKyAgICAvLyBuZWVkIHRvIGVhZ2VybHkgYW5kIHBvdGVudGlhbGx5IGxvc3Np
bHkgY29udmVydCB0aGUgY29sb3IgaW50byBzUkdCCisgICAgLy8gb3Vyc2VsdmVzIGJlZm9yZSBj
cmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICBpZiAoY29sb3JTcGFjZSAhPSBDb2xvclNwYWNl
OjpTUkdCICYmIGNnQ29sb3JTcGFjZSA9PSBzUkdCQ29sb3JTcGFjZVJlZigpKSB7CisgICAgICAg
IGF1dG8gY29sb3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50
cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1
cm4gdG9TUkdCQShjb2xvcik7CisgICAgICAgIH0pOworICAgICAgICBjb21wb25lbnRzID0gYXND
b2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsKICAgICB9CiAKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIFtyLCBnLCBi
LCBhXSA9IGNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIs
IGcsIGIsIGEgfTsKKworICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dG
bG9hdENvbXBvbmVudHMpOwogfQogCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JTcGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29sb3JTcGFjZUNHLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlIDxtdXRleD4KKyNp
bmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0NHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFU
Rk9STShXSU4pCisgICAgICAgIC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBu
b3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCisgICAgICAgIC8v
IGNhdXNpbmcgYSBjcmFzaCB1bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVs
dCBjb2xvciBzcGFjZSBpbiBXaW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdv
cmtzIG91dCBuaWNlbHkuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8g
cmRhcjovL3Byb2JsZW0vMTUyMTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBzUkdCQ29sb3JTcGFj
ZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyAgICAg
ICAgaWYgKCFzUkdCQ29sb3JTcGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dD
b2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBzUkdCQ29sb3JTcGFj
ZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyNlbmRp
ZiAvLyBQTEFURk9STShXSU4pCisgICAgfSk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOwor
fQorCitDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3Rh
dGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFi
bGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5v
cmcvYi84MDAwMC4KKyAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNl
UmVmKCk7CisjZWxzZQorICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOworI2VuZGlmCisgICAgfSk7
CisgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBk
aXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRp
c3BsYXlQM0NvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlRGlzcGxheVAzKTsKKyNlbHNlCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJuIGRp
c3BsYXlQM0NvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xv
clNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgY29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwor
I2VuZGlmCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNS
R0IsIGZhbGwgYmFjayB0byBzUkdCLgorICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAgICAg
ICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgICAgICBleHRlbmRl
ZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKKyAgICB9KTsKKyAgICByZXR1cm4gZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCit0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK1dF
QkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CitX
RUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwor
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYo
KTsKKworc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBj
YXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigp
OworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gbGluZWFy
UkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAg
ICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3MyArNzEsNiBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRv
QmFzZUNUCiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KENHQ29udGV4dEdldENU
TShjb250ZXh0KSwgQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0QmFzZUNUTShj
b250ZXh0KSkpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQotewot
ICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRp
b25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcwot
ICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gU2luY2Ug
dGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwotICAgICAgICAvLyBpcyBzUkdCLCB0
aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdGls
bCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KLSAgICAgICAgc1JH
QkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JH
Qik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCi0gICAgICAgICAgICBzUkdCQ29sb3JT
cGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotI2Vsc2UKLSAgICAgICAgc1JH
QkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JH
Qik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotICAgIH0pOwotICAgIHJldHVybiBzUkdCQ29s
b3JTcGFjZTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQot
ewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsKLSAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFtdIHsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNo
b3VsZCBiZSBhYmxlIHRvIHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5IGh0dHA6
Ly93ZWJraXQub3JnL2IvODAwMDAuCi0gICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBzUkdC
Q29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IENH
Q29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsKLSNlbmRp
ZgotICAgIH0pOwotICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9y
U3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAg
ICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlRXh0ZW5kZWRTUkdCKTsKLSNlbmRpZgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBz
dXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KLSAgICAgICAgaWYg
KCFjb2xvclNwYWNlKQotICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVm
KCk7Ci0KLSAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0gICAg
fSk7Ci0gICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFj
ZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNl
UmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3BsYXlQM0Nv
bG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0
dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7Ci19Ci0KIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBjb252ZXJ0SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFs
aXR5KQogewogICAgIHN3aXRjaCAocXVhbGl0eSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZp
c2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NSwzMyArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xv
clNwYWNlICpDR0NvbG9yU3BhY2VSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV0VCQ09S
RV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VY
UE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09S
RV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLVdFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0KIENH
QWZmaW5lVHJhbnNmb3JtIGdldFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVmKTsKIAotc3RhdGlj
IGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3Bh
Y2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFj
ZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4g
ZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogY2xhc3MgQ0dDb250ZXh0
U3RhdGVTYXZlciB7CiBwdWJsaWM6CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlcihDR0NvbnRleHRS
ZWYgY29udGV4dCwgYm9vbCBzYXZlQW5kUmVzdG9yZSA9IHRydWUpCg==
</data>
<flag name="commit-queue"
          id="434381"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416776</attachid>
            <date>2020-12-25 21:09:04 -0800</date>
            <delta_ts>2020-12-26 09:43:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220146-20201225210903.patch</filename>
            <type>text/plain</type>
            <size>43285</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMi0yNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgYWRkaW5nIG5ldyBj
b2xvciBzcGFjZXMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyBvbmUgbmVlZHMgdG8gdG91
Y2ggd2hlbiBhZGRpbmcgbmV3IGNvbG9yIHR5cGVzIHRvOgorCisgICAgICAgICAgICAtIENvbG9y
VHlwZXMuaAorICAgICAgICAgICAgLSBDb2xvckNvbnZlcnNpb24uaC9jcHAKKyAgICAgICAgICAg
IC0gQ29sb3JTcGFjZS5oL2NwcCAob25seSBuZWVkZWQgaWYgc3VwcG9ydCBpbiBDb2xvciBpcyBy
ZXF1aXJlZCkuCisgICAgICAgICAgICAtIENvbG9yU2VyaWFsaXphdGlvbi5oIChvbmx5IG5lZWRl
ZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVkKS4KKyAgICAgICAgICAgIC0gQ29sb3JT
cGFjZUNHLmgvY3BwIChvbmx5IG5lZWRlZCBpZiBzdXBwb3J0IGluIENvbG9yIGlzIHJlcXVpcmVk
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIENvbG9yU3BhY2UuY3BwLCBDb2xvclNwYWNl
Q0cuaCBhbmQgQ29sb3JTcGFjZUNHLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXRD
b2xvcik6CisgICAgICAgIFJlcGxhY2Ugc3BlY2lmaWMgb3ZlcmxvYWRzIG9mIHRoZSBjb250cnVj
dG9yIGFuZCBzZXRDb2xvciB3aXRoIHRlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRv
IHRoZSBzYW1lIHRoaW5ncy4gVGhlc2UgYXJlIHNhZmUgdG8gbWFrZSBhcyBpZiBhIG5vbi1zdXBw
b3J0ZWQgY29sb3IgdHlwZQorICAgICAgICAob25lIHRoYXQgZG9lc24ndCBoYXZlIGEgY29sb3JT
cGFjZSBtZW1iZXIpIGlzIHBhc3NlZCBpdCB3aWxsIGZhaWwgdG8gY29tcGlsZSBkdWUKKyAgICAg
ICAgdG8gdXNlIGJlbmVhdGggRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgQWxz
byBtb3ZlcyBXVEY6OlRleHRTdHJlYW0gb3BlcmF0b3I8PCBvdmVybG9hZCBmb3IgQ29sb3JTcGFj
ZSBvdXQgYW5kIGludG8KKyAgICAgICAgQ29sb3JTcGFjZS5jcHAgd2hlcmUgaXQgbWFrZXMgbW9y
ZSBzZW5zZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAg
ICAgIFJlLW9yZGVyIGFuZCBleHBsaWNpdGx5IGNvbW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMg
dG8gYmUgbW9yZSBjbGVhci4KKyAgICAgICAgCisgICAgICAgIEFzIHRoZSBjb21tZW50IGluZGlj
YXRlcywgYWxsIGNvbG9yIHR5cGVzIG11c3QgaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBmb2xsb3dp
bmcKKyAgICAgICAgY29udmVyc2lvbnM6CisgICAgICAgICAgICBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgQ29sb3JUeXBlPGZsb2F0PiYpOworICAgICAgICAgICAgQ29sb3JUeXBlPGZsb2F0PiB0
b0NvbG9yVHlwZShjb25zdCBYWVpBPGZsb2F0PiYpOworCisgICAgICAgIFRoaXMgYWxsb3dzIGdl
bmVyaWMgZmFsbGJhY2sgY29kZSwgaW5saW5lIGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlciwg
dG8KKyAgICAgICAgc3VwcG9ydCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGFueSBzZXQgb2YgY29s
b3JzLiBBZGRpdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zCisgICAgICAgIGFyZSB1c2VmdWwg
Zm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1hbCBvciBiYXNlIGNvbnZlcnNpb24gaXMgbm90
IHRocm91Z2ggWFlaCisgICAgICAgIHN1Y2ggYXMgZnJvbSBTUkdCQSB0byBMaW5lYXJTUkdCQS4K
KworICAgICAgICBUbyBhbGxvdyB0aGlzIHRvIHdvcmsgYSBmZXcgYWRkaXRpb25hbCBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHdoaWNoIGp1c3QKKyAgICAgICAgY29tYmluZSBleGlz
dGluZyBjb252ZXJzaW9ucyB0b2dldGhlciBhbmQgb25lIHdhcyBhZGRlZCBmb3IgU1JHQkEgdG8g
Q01ZS0Egd2hpY2gKKyAgICAgICAgd2FzIG1pc3NpbmcsIHRob3VnaCBjdXJyZW50bHkgdW51c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oOgorICAgICAgICBNb3ZlZCBmcm9tIENvbG9yLmgKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxX
aXRoQ29sb3JUeXBlKToKKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIEV4dGVu
ZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKCkgdGhhdCBhbHNvCisgICAgICAgIGhhcyB0
aGUgYmVuZWZpdCBvZiBub3cgYmVpbmcgaW4gdGhlIHNhbWUgZmlsZSBhcyB0aGUgY29sb3IgdHlw
ZSBkZWZpbml0aW9ucywKKyAgICAgICAgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBmaWxlcyBwZW9w
bGUgbmVlZCB0byB0b3VjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFD
b21wb25lbnQpOgorICAgICAgICBVcGRhdGUgdG8gbm90IGFzc3VtZSB0aGF0IGNvbG9ycyB1c2Ug
dGhlIG5hbWVzIHJlZC9ncmVlbi9ibHVlIGZvciBub24tYWxwaGEKKyAgICAgICAgY29tcG9uZW50
cy4gVGhpcyBtYWtlcyBpdCB3b3JrIGdlbmVyaWNhbGx5IGZvciBhbGwgZm91ciBjb21wb25lbnQg
Y29sb3IgdHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjYWxsT25VbmRlcmx5aW5nVHlw
ZSBjb25zdCk6CisgICAgICAgIFVzZSBnZW5lcmFsaXplZCBmb3JtLCBjYWxsV2l0aENvbG9yVHlw
ZSB0byBhdm9pZCByZXF1aXJpbmcgbW9kaWZ0eWluZyB0aGlzCisgICAgICAgIHdoZW4gbmV3IGNv
bG9yIHR5cGVzIGFyZSBhZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorICAgICAgICBXaGVu
IGdvaW5nIHRvIGdlbmVyYWxpemUgdGhpcyAod2UgY291bGQgaGF2ZSBzaW1wbHkgY2FsbGVkIAor
ICAgICAgICBgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjZ0Zsb2F0Q29tcG9uZW50cykpYAorICAgICAgICBJIG5vdGljZWQgdGhpcyB3YXMgbm90
IGRvaW5nIHRoZSByaWdodCB0aGluZyBmb3IgQ0cgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0Cisg
ICAgICAgIGFsbCB0aGUgY29sb3Igc3BhY2VzIFdlYkNvcmUgcmVxdWlyZXMgKHN1Y2ggYXMgV2lu
ZG93cykuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpIGp1
c3QgcmV0dXJucyBzUkdCQ29sb3JTcGFjZVJlZigpIG9uIHdpbmRvd3MsIG1lYW5pbmcKKyAgICAg
ICAgd2Ugd291bGQgYmUgdGFraW5nIHNvbWUgRGlzcGxheVAzIGNvbXBvbmVudHMgYW5kIGhhdmlu
ZyBDRyBpbnRlcnByZXQgdGhlbSBhcworICAgICAgICBzUkdCLiBUbyBhdm9pZCB0aGlzLCB3ZSBu
b3cgY2hlY2sgaWYgdGhlIGNvbG9yIHNwYWNlIHJldHVybmVkIGlzIHRoZSBmYWxsYmFjaworICAg
ICAgICBjb2xvciBzcGFjZSwgc1JHQiwgYW5kIGRvIG91ciBvd24gY29udmVyc2lvbiB0byBzUkdC
IHVzaW5nIENvbG9yQ29udmVyc2lvbgorICAgICAgICBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbG9y
LgorCisgICAgICAgIFRoaXMgYWxzbyByZXNvbHZlcyBhIGxvbmcgc3RhbmRpbmcgYnVnIC8gRklY
TUUgYXJvdW5kIExpbmVhclJHQiB3aGVyZSB3ZSB3ZXJlCisgICAgICAgIHVzaW5nIHNSR0JDb2xv
clNwYWNlUmVmKCkgZm9yIHRoZW0uIEluIHByYWN0aWNlLCB3ZSBkb24ndCBhY3R1YWxseSBldmVy
IGNyZWF0ZQorICAgICAgICBMaW5lYXJSR0IgQ0dDb2xvclJlZnMgcmlnaHQgbm93LCBidXQgaWYg
d2UgZXZlciBkbyBpbiB0aGUgZnV0dXJlLCBtYWtlcyBzZW5zZQorICAgICAgICB0byB1c2UgdGhl
IHJpZ2h0IGNvbG9yIHNwYWNlLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5UDNDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bGluZWFyUkdCQ29sb3JTcGFjZVJlZik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCBjb2xvciBzcGFj
ZSBzcGVjaWZpYyBDRyBjb2RlIHRvIGl0cyBvd24gZmlsZXMgdG8gbWFrZSBpdCBtb3JlIGNsZWFy
CisgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlbS4KKwogMjAyMC0xMi0yNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRmFzdCB2ZXJ0aWNhbCBh
bGlnbm1lbnQgc2hvdWxkIHdvcmsgd2l0aCBsaW5lLWhlaWdodApJbmRleDogU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyNzEwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcg
QEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAKQEAgLTE4Miw2ICsxODMsNyBAQCBlbHNlICgpCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdENsaWVudC5oCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAogCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
NzEwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCkBAIC01NDQsNiArNTQ1LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6
YXRpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjcxMDc0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMy
Nyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2sKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRmxvYXRSZWN0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAzNCw2ICs0MDM0LDcgQEAK
IAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUNGM0JEMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUNGM0JCMTA3
MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRv
ck1hYy5oICovOyB9OworCQlCQ0FGRURCNDI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FGRURC
MjI1OTY4RDBCMDAzMEU2QUEgLyogQ29sb3JTcGFjZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMxQTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMTMsNiArMTQxMTQsOSBA
QAogCQlCQ0FDRjNCQjEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FEMTgwOTEzMUM3QTBEMDA5OTA0MDYg
LyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJQkNBRTFGQTUxMjkzOURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xvclNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMjI1OTY4RDBCMDAzMEU2
QUEgLyogQ29sb3JTcGFjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FGRURCMzI1OTY4RDBCMDAzMEU2QUEgLyogQ29s
b3JTcGFjZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yU3BhY2VDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1v
cnlDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkJGRjA5NzlDM0JE
MDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzAw
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDE3LDYgKzI2NDIxLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8q
IENvbG9yQ0cuY3BwICovLAorCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuY3BwICovLAorCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNwYWNl
Q0cuaCAqLywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNw
cCAqLywKIAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICov
LAogCQkJCUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBA
IC0yNjUyMiw2ICsyNjUyOCw3IEBACiAJCQkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENv
bG9yTWF0cml4LmggKi8sCiAJCQkJN0NEMUU2OTIyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9yU2Vy
aWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJN0NEMUU2OTEyNEFCRjYyNDAwODlDNDE5IC8qIENvbG9y
U2VyaWFsaXphdGlvbi5oICovLAorCQkJCUJDQUZFREFGMjU5NjZEMDUwMDMwRTZBQSAvKiBDb2xv
clNwYWNlLmNwcCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oICovLAogCQkJCTdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi8s
CiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywK
QEAgLTM0ODA4LDYgKzM0ODE1LDcgQEAKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
RjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNBRkVEQjQyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9yU3BhY2VDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUZEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9u
IDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsxNjUsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0dXJuIHRzIDw8IHNlcmlhbGl6YXRpb25Gb3JSZW5k
ZXJUcmVlQXNUZXh0KGNvbG9yKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclJHQiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsOSArMTgxLDYgQEAgcHJpdmF0ZToKICAgICBDb2xvcihSZWY8RXh0ZW5kZWRD
b2xvcj4mJik7CiAKICAgICB2b2lkIHNldENvbG9yKFNSR0JBPHVpbnQ4X3Q+KTsKLSAgICB2b2lk
IHNldENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotICAgIHZvaWQgc2V0Q29sb3IoY29uc3Qg
TGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBEaXNwbGF5UDM8
ZmxvYXQ+Jik7CiAgICAgdm9pZCBzZXRFeHRlbmRlZENvbG9yKFJlZjxFeHRlbmRlZENvbG9yPiYm
KTsKIAogICAgIHZvaWQgdGFnQXNTZW1hbnRpYygpIHsgbV9jb2xvckRhdGEuaW5saW5lQ29sb3JB
bmRGbGFncyB8PSBpc1NlbWFudGljSW5saW5lQ29sb3JCaXQ7IH0KQEAgLTIxOCw3ICsyMTUsNiBA
QCBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoCiAjZW5kaWYKIAogV0VC
Q09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IGNvbnN0IENvbG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQogewpAQCAtMjc2LDMyICsyNzIsMjIg
QEAgaW5saW5lIENvbG9yOjpDb2xvcihPcHRpb25hbDxTUkdCQTx1aW50OAogCiBpbmxpbmUgQ29s
b3I6OkNvbG9yKENvbG9yQ29tcG9uZW50czxmbG9hdD4gY29tcG9uZW50cywgQ29sb3JTcGFjZSBj
b2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JT
cGFjZTo6U1JHQjoKLSAgICAgICAgc2V0Q29sb3IoYXNTUkdCQShjb21wb25lbnRzKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKLSAgICAgICAgc2V0
Q29sb3IoYXNMaW5lYXJTUkdCQShjb21wb25lbnRzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgc2V0Q29sb3IoYXNEaXNwbGF5UDMo
Y29tcG9uZW50cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHNldEV4dGVuZGVkQ29s
b3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UpKTsKIH0KIAog
aW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIHNl
dENvbG9yKGNvbG9yKTsKKyAgICBzZXRFeHRlbmRlZENvbG9yKEV4dGVuZGVkQ29sb3I6OmNyZWF0
ZShjb2xvcikpOwogfQogCiBpbmxpbmUgQ29sb3I6OkNvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZs
b2F0PiYgY29sb3IpCiB7Ci0gICAgc2V0Q29sb3IoY29sb3IpOworICAgIHNldEV4dGVuZGVkQ29s
b3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7CiB9CiAKIGlubGluZSBDb2xvcjo6Q29s
b3IoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgc2V0Q29sb3IoY29sb3Ip
OworICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7CiB9
CiAKIGlubGluZSBDb2xvcjo6Q29sb3IoUmVmPEV4dGVuZGVkQ29sb3I+JiYgZXh0ZW5kZWRDb2xv
cikKQEAgLTQwMiwyMSArMzg4LDYgQEAgaW5saW5lIHZvaWQgQ29sb3I6OnNldENvbG9yKFNSR0JB
PHVpbnQ4XwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIAotaW5saW5lIHZvaWQgQ29sb3I6OnNldENv
bG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0RXh0ZW5kZWRDb2xvcihF
eHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpKTsKLX0KLQotaW5saW5lIHZvaWQgQ29sb3I6OnNl
dENvbG9yKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgc2V0RXh0ZW5k
ZWRDb2xvcihFeHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpKTsKLX0KLQotaW5saW5lIHZvaWQg
Q29sb3I6OnNldENvbG9yKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHNl
dEV4dGVuZGVkQ29sb3IoRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKGNvbG9yKSk7Ci19Ci0KIGlubGlu
ZSB2b2lkIENvbG9yOjpzZXRFeHRlbmRlZENvbG9yKFJlZjxFeHRlbmRlZENvbG9yPiYmIGV4dGVu
ZGVkQ29sb3IpCiB7CiAgICAgLy8gWmVybyB0aGUgdW5pb24sIGp1c3QgaW4gY2FzZSBhIDMyLWJp
dCBzeXN0ZW0gb25seSBhc3NpZ25zIHRoZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzEwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNw
bGF5UDMoY29uc3QgTGluZWEKICAgICB9OwogfQogCi1zdGF0aWMgTGluZWFyU1JHQkE8ZmxvYXQ+
IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTGluZWFyU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIC8vIGh0
dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNl
bGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCkBAIC0xMDAs
NyArMTAwLDcgQEAgc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKAogICAg
IHJldHVybiBhc0xpbmVhclNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENv
bG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIFhZ
WkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpCitYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBo
dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVj
ZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbApAQCAtMTEy
LDcgKzExMiw3IEBAIHN0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkcKICAg
ICByZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotc3RhdGljIExpbmVhckRp
c3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9y
KQorTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZs
b2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xv
ci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+
IHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMg
TGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpCiAgICAgcmV0dXJuIGFzTGluZWFyRGlz
cGxheVAzKHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1zdGF0aWMgWFlaQTxmbG9hdD4g
dG9YWVooY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgLy8gaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCiAg
ICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4
IHsKQEAgLTEzNCwxNiArMTM0LDYgQEAgc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExp
bmVhckRpcwogICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJh
bnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAK
LVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewot
ICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMo
Y29sb3IpKSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JB
PGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxh
eVAzKHRvWFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBIU0xBPGZsb2F0PiB0b0hT
TEEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICAvLyBodHRwOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KQEAgLTIzOSw0ICsyMjksNTggQEAgU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JgogICAgIHJldHVybiB7IHIsIGcsIGIs
IGEgfTsKIH0KIAorQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xv
cikKK3sKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOworCisgICAgYXV0byBrID0gMS4w
ZiAtIHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKKyAgICBpZiAoayA9PSAxLjBmKQorICAgICAgICBy
ZXR1cm4geyAwLCAwLCAwLCAxLjBmLCBhIH07CisgICAgCisgICAgYXV0byBjID0gKDEuMGYgLSBy
IC0gaykgLyAoMS4wZiAtIGspOworICAgIGF1dG8gbSA9ICgxLjBmIC0gZyAtIGspIC8gKDEuMGYg
LSBrKTsKKyAgICBhdXRvIHkgPSAoMS4wZiAtIGIgLSBrKSAvICgxLjBmIC0gayk7CisgICAgcmV0
dXJuIHsgYywgbSwgeSwgaywgYSB9OworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JH
QkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29s
b3IpKTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9y
KQoreworICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKK30KKworWFla
QTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQoreworICAgIHJl
dHVybiB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKK30KKworRGlzcGxheVAzPGZs
b2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7Cit9CisKK1hZWkE8ZmxvYXQ+
IHRvWFlaQShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvWFlaQSh0
b1NSR0JBKGNvbG9yKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0
PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7Cit9CisKK1hZ
WkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDTVlLQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVy
biB0b1hZWkEodG9TUkdCQShjb2xvcikpOworfQorCitDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25z
dCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvQ01ZS0EodG9TUkdCQShjb2xv
cikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcx
MDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDI3ICszMywxMDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xp
bmVhckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIAorCisvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBh
dCBsZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0
aGUgWFlaQSBjb2xvciBzcGFjZToKKy8vICAgIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBDb2xv
clR5cGU8ZmxvYXQ+Jik7CisvLyAgICBDb2xvclR5cGU8ZmxvYXQ+IHRvQ29sb3JUeXBlKGNvbnN0
IFhZWkE8ZmxvYXQ+Jik7CisvLworLy8gQW55IGFkZGl0aW9uYWwgY29udmVyc2lvbnMgY2FuIGJl
IHRob3VnaHQgb2YgYXMgb3B0aW1pemF0aW9ucywgc2hvcnRjdXR0aW5nIHVubmVjZXNzYXJ5IHN0
ZXBzLCB0aG91Z2gKKy8vIHNvbWUgbWF5IGJlIGludGVncmFsIHRvIHRoZSBiYXNlIGNvbnZlcnNp
b24uCisKKworLy8gU1JHQkEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25z
dCBTUkdCQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhclNS
R0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CisKKy8vIExp
bmVhclNSR0JBCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFy
U1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5l
YXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCiBXRUJDT1JFX0VYUE9S
VCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIAorCisv
LyBEaXNwbGF5UDMKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNw
bGF5UDM8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxh
eVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExp
bmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZs
b2F0PiYpOworCisKKy8vIExpbmVhckRpc3BsYXlQMworV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JU
IExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9h
dD4mKTsKKy8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rp
c3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+Jik7CiAKLVdFQkNPUkVfRVhQT1JU
IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNPUkVf
RVhQT1JUIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7
CiAKLVdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4m
KTsKKy8vIEhTTEEKK1dFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBIU0xB
PGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgSFNMQTxmbG9hdD4gdG9IU0xBKGNvbnN0IFhZWkE8
ZmxvYXQ+Jik7CisvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NS
R0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IENN
WUtBPGZsb2F0PiYpOwogCisvLyBDTVlLQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IENNWUtBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgQ01ZS0E8ZmxvYXQ+IHRv
Q01ZS0EoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQg
U1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8ZmxvYXQ+Jik7CiAKLS8vIElkZW50aXR5
IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpCisKKy8vIElkZW50aXR5
IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIg
U1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4g
Y29sb3I7IH0KIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25z
dCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHBy
IERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0
b0xpbmVhckRpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyBy
ZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxm
bG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQorY29uc3RleHByIENNWUtBPGZsb2F0PiB0
b0NNWUtBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25z
dGV4cHIgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1
cm4gY29sb3I7IH0KKworCisvLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKworLy8gQWxsIHR5cGVz
IGFyZSByZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUg
Z3VhcmFudGVlZCB0byB3b3JrIGlmCisvLyBhbm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5
IHByb3ZpZGVkLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxmbG9hdD4gdG9TUkdCQShj
b25zdCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3Qg
VCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBU
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25z
dCBUJiBjb2xvcikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDModG9YWVpBKGNvbG9y
KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b0hTTEEoY29uc3Qg
VCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvSFNMQSh0b1hZWkEoY29sb3IpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8ZmxvYXQ+IHRvQ01ZS0EoY29uc3QgVCYgY29sb3IpCit7
CisgICAgcmV0dXJuIHRvQ01ZS0EodG9YWVpBKGNvbG9yKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3Bh
Y2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJzUkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgdHMg
PDwgIkRpc3BsYXlQMyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNw
YWNlLmgJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsMTAgQEAKIAogI3By
YWdtYSBvbmNlCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKQEAg
LTMzLDQgKzM3LDYgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgRGlz
cGxheVAzCiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJ
KHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVt
cGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IENvbXBvbmVudFRyYWl0czsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50
VHJhaXRzPHVpbnQ4X3Q+IHsKQEAgLTM1Myw2ICszNTQsMjAgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY29uc3RleHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENv
bG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb21wb25lbnRzLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQoreworICAgIHN3aXRjaCAoY29sb3JT
cGFjZSkgeworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdCQShjb21wb25lbnRz
KSk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIHJldHVybiBzdGQ6
Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGFzTGluZWFyU1JHQkEoY29t
cG9uZW50cykpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICByZXR1
cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0Rpc3BsYXlQ
Myhjb21wb25lbnRzKSk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgYXNTUkdC
QShjb21wb25lbnRzKSk7Cit9CiAKIC8vIFBhY2tlZCBDb2xvciBGb3JtYXRzCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAko
cmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNvbG9yVHlw
ZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CkBAIC0zMyw4ICsz
NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBTUkdCQTsKLQogZmxvYXQgbGlnaHRuZXNzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogZmxvYXQg
bHVtaW5hbmNlKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogZmxvYXQgY29udHJhc3RSYXRpbyhjb25z
dCBTUkdCQTxmbG9hdD4mLCBjb25zdCBTUkdCQTxmbG9hdD4mKTsKQEAgLTE0NywxMiArMTQ2LDEy
IEBAIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2wKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1v
ZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIEZ1bmN0
b3ImJiBmdW5jdG9yKQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIHRvIHdv
cmsgd2l0aCBjb2xvcnMgdGhhdCBkb24ndCB1c2UgdGhlIG5hbWVzIHJlZCwgZ3JlZW4sIGFuZCBi
bHVlIGZvciB0aGVpciBjaGFubmVscy4KLSAgICBhdXRvIGNvcHkgPSBjb2xvcjsKLSAgICBjb3B5
LnJlZCA9IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbG9yLnJlZCk7Ci0gICAgY29weS5ncmVlbiA9
IHN0ZDo6aW52b2tlKGZ1bmN0b3IsIGNvbG9yLmdyZWVuKTsKLSAgICBjb3B5LmJsdWUgPSBzdGQ6
Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIGNvbG9yLmJsdWUpOwotICAg
IHJldHVybiBjb3B5OworICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNv
bG9yKTsKKyAgICBhdXRvIGNvcHkgPSBjb21wb25lbnRzOworICAgIGNvcHlbMF0gPSBzdGQ6Omlu
dm9rZShmdW5jdG9yLCBjb21wb25lbnRzWzBdKTsKKyAgICBjb3B5WzFdID0gc3RkOjppbnZva2Uo
ZnVuY3RvciwgY29tcG9uZW50c1sxXSk7CisgICAgY29weVsyXSA9IHN0ZDo6aW52b2tlKHN0ZDo6
Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgY29tcG9uZW50c1syXSk7CisgICAgcmV0dXJuIHsg
Y29weVswXSwgY29weVsxXSwgY29weVsyXSwgY29weVszXSB9OwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgY29sb3JXaXRoT3ZlcnJpZGVuQWxw
aGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFscGhhKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAko
cmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5kZWRDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsNyBAQCBpbmxpbmUgRXh0
ZW5kZWRDb2xvcjo6RXh0ZW5kZWRDb2xvcihDb2xvCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IGRlY2x0eXBlKGF1dG8pIEV4dGVuZGVkQ29sb3I6OmNhbGxPblVuZGVybHlpbmdUeXBlKEZ1
bmN0b3ImJiBmdW5jdG9yKSBjb25zdAogewotICAgIHN3aXRjaCAobV9jb2xvclNwYWNlKSB7Ci0g
ICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3Rk
Ojpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKG1fY29tcG9uZW50cykpOwotICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0xpbmVhclNSR0JBKG1fY29tcG9uZW50
cykpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gc3Rk
OjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc0Rpc3BsYXlQMyhtX2Nv
bXBvbmVudHMpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBhc1NSR0JBKG1f
Y29tcG9uZW50cykpOworICAgIHJldHVybiBjYWxsV2l0aENvbG9yVHlwZShtX2NvbXBvbmVudHMs
IG1fY29sb3JTcGFjZSwgc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpKTsKIH0KIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAJKHJldmlzaW9uIDI3MTA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBV
U0UoQ0cpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkNvbG9y
U3BhY2VDRy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KQEAgLTk3LDIxICs5Nywy
NCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgU2VtYW50aWNUCiBzdGF0aWMgQ0dD
b2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29s
b3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwot
ICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRD
b21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gQ0dDb2xvckNyZWF0
ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Zsb2F0Q29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xv
clNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGRpc3BsYXlQ
M0NvbG9yU3BhY2VSZWYoKSwgY2dGbG9hdENvbXBvbmVudHMpOwotICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyUkdCOgotICAgICAgICAvLyBGSVhNRTogRG8gd2UgZXZlciBjcmVhdGUgQ0dDb2xv
clJlZnMgaW4gdGhlc2Ugc3BhY2VzPyBJdCBtYXkgb25seSBiZSBJbWFnZUJ1ZmZlcnMuCi0gICAg
ICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNnRmxvYXRDb21w
b25lbnRzKTsKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShjb2xv
clNwYWNlKTsKKworICAgIC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNv
bG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJuCisgICAgLy8gc1JHQkNvbG9yU3BhY2VSZWYo
KSBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UKKyAgICAv
LyBuZWVkIHRvIGVhZ2VybHkgYW5kIHBvdGVudGlhbGx5IGxvc3NpbHkgY29udmVydCB0aGUgY29s
b3IgaW50byBzUkdCCisgICAgLy8gb3Vyc2VsdmVzIGJlZm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xv
clJlZi4KKyAgICBpZiAoY29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCICYmIGNnQ29sb3JT
cGFjZSA9PSBzUkdCQ29sb3JTcGFjZVJlZigpKSB7CisgICAgICAgIGF1dG8gY29sb3JDb252ZXJ0
ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10g
KGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gdG9TUkdCQShjb2xvcik7
CisgICAgICAgIH0pOworICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29s
b3JDb252ZXJ0ZWRUb1NSR0JBKTsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7
CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIsIGcsIGIsIGEgfTsKKworICAg
IHJldHVybiBDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMpOwog
fQogCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNl
Q0cuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgi
CisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDxwYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NHQ29sb3JTcGFj
ZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBz
UkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBQTEFURk9STShXSU4pCisgICAgICAg
IC8vIE91dC1vZi1kYXRlIENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JT
cGFjZVNSR0IuIFRoaXMgbG9naWMgYXZvaWRzCisgICAgICAgIC8vIGNhdXNpbmcgYSBjcmFzaCB1
bmRlciB0aG9zZSBjb25kaXRpb25zLiBTaW5jZSB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZSBpbiBX
aW5kb3dzCisgICAgICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCisg
ICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5lZWRlZD8gcmRhcjovL3Byb2JsZW0vMTUy
MTM1MTUgd2FzIGZpeGVkLgorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAgaWYgKCFzUkdCQ29sb3JT
cGFjZSkKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCk7CisjZWxzZQorICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKKyNlbmRpZiAvLyBQTEFURk9STShXSU4p
CisgICAgfSk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOworfQorCitDR0NvbG9yU3BhY2VS
ZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJl
ZiBsaW5lYXJSR0JDb2xvclNwYWNlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworI2lmIFBMQVRGT1JNKFdJTikK
KyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBz
UkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KKyAgICAg
ICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAg
ICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NH
Q29sb3JTcGFjZUxpbmVhclNSR0IpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJuIGxpbmVh
clJHQkNvbG9yU3BhY2U7Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNl
UmVmKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIGRpc3BsYXlQM0Nv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRGlzcGxh
eVAzKTsKKyNlbHNlCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFj
ZVJlZigpOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2U7
Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAg
ICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gbnVsbHB0cjsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2VuZGlmCisgICAgICAgIC8v
IElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBz
UkdCLgorICAgICAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAgICAgICAgICBjb2xvclNwYWNlID0g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0g
Y29sb3JTcGFjZTsKKyAgICB9KTsKKyAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZTsK
K30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorCit0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNH
Q29sb3JTcGFjZVJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29s
b3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBDR0Nv
bG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKKworc3RhdGljIGlubGlu
ZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgQ29sb3JT
cGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigp
OworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAgICByZXR1cm4gZGlzcGxh
eVAzQ29sb3JTcGFjZVJlZigpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAkocmV2aXNpb24gMjcxMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3MyArNzEs
NiBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUCiAgICAgcmV0dXJu
IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KENHQ29udGV4dEdldENUTShjb250ZXh0KSwgQ0dBZmZp
bmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0QmFzZUNUTShjb250ZXh0KSkpOwogfQogCi1D
R0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9y
U3BhY2VSZWYgc1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lO
KQotICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9y
IGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcwotICAgICAgICAvLyBjYXVzaW5n
IGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Ig
c3BhY2UgaW4gV2luZG93cwotICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQg
bmljZWx5LgotICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9w
cm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGlmICgh
c1JHQkNvbG9yU3BhY2UpCi0gICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpOwotI2Vsc2UKLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0jZW5kaWYgLy8gUExB
VEZPUk0oV0lOKQotICAgIH0pOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZTsKLX0KLQotQ0dD
b2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0Nv
bG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFU
Rk9STShXSU4pCi0gICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCBiZSBhYmxlIHRvIHVz
ZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvODAw
MDAuCi0gICAgICAgIGxpbmVhclJHQkNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwot
I2Vsc2UKLSAgICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCKTsKLSNlbmRpZgotICAgIH0pOwotICAgIHJl
dHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRT
UkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBleHRlbmRl
ZFNSR0JDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGNvbG9yU3Bh
Y2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdC
KTsKLSNlbmRpZgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBleHRlbmRl
ZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JHQi4KLSAgICAgICAgaWYgKCFjb2xvclNwYWNlKQotICAg
ICAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAgICAgICAgZXh0
ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2U7Ci19Ci0KLUNHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xv
clNwYWNlUmVmKCkKLXsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9y
U3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGRpc3Bs
YXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNl
RGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29s
b3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9y
U3BhY2U7Ci19Ci0KIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjb252ZXJ0SW50ZXJwb2xh
dGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KQogewogICAgIHN3aXRj
aCAocXVhbGl0eSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiAyNzEwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwzMyArMjUsMTMgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3Bh
Y2VSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNw
YWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VS
ZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNw
YWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JT
cGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7Ci0KIENHQWZmaW5lVHJhbnNmb3JtIGdl
dFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVmKTsKIAotc3RhdGljIGlubGluZSBDR0NvbG9yU3Bh
Y2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBz
d2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAg
IHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFy
UkdCOgotICAgICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFj
ZVJlZigpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JH
QkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogY2xhc3MgQ0dDb250ZXh0U3RhdGVTYXZlciB7CiBwdWJs
aWM6CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlcihDR0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBz
YXZlQW5kUmVzdG9yZSA9IHRydWUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>