<?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>227446</bug_id>
          
          <creation_ts>2021-06-28 06:07:50 -0700</creation_ts>
          <short_desc>Enable Probabilistic Guard Malloc for RuleData and RuleFeature vectors</short_desc>
          <delta_ts>2021-09-15 15:13:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>228770</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1773040</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-28 06:07:50 -0700</bug_when>
    <thetext>Help with bug catching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773041</commentid>
    <comment_count>1</comment_count>
      <attachid>432387</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-28 06:09:46 -0700</bug_when>
    <thetext>Created attachment 432387
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773044</commentid>
    <comment_count>2</comment_count>
      <attachid>432388</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-28 06:12:10 -0700</bug_when>
    <thetext>Created attachment 432388
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773148</commentid>
    <comment_count>3</comment_count>
      <attachid>432412</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-28 12:03:10 -0700</bug_when>
    <thetext>Created attachment 432412
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773322</commentid>
    <comment_count>4</comment_count>
      <attachid>432412</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-28 22:11:52 -0700</bug_when>
    <thetext>Comment on attachment 432412
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773337</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-29 00:19:36 -0700</bug_when>
    <thetext>Committed r279365 (239231@main): &lt;https://commits.webkit.org/239231@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432412.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773338</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-29 00:20:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/79901905&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432387</attachid>
            <date>2021-06-28 06:09:46 -0700</date>
            <delta_ts>2021-06-28 06:12:10 -0700</delta_ts>
            <desc>wip</desc>
            <filename>pgm-rules.patch</filename>
            <type>text/plain</type>
            <size>12921</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVj
dG9yLmgKaW5kZXggMjAzNjI1ZWNlZGQyLi5jZDE0NzQ0MTFjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03ODQs
OCArNzg0LDggQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxXQVlTX0lO
TElORSB2b2lkIGFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQ8RmFpbHVy
ZUFjdGlvbjo6Q3Jhc2g+KHUsIHNpemUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxX
QVlTX0lOTElORSBib29sIHRyeUFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYXBwZW5kPEZhaWx1cmVBY3Rpb246OlJlcG9ydD4odSwgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29u
c3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHk+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwg
c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxVLCBvdGhlckNh
cGFjaXR5PiYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0
eSwgdHlwZW5hbWUgT3RoZXJPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFjaXR5
LCB0eXBlbmFtZSBPdGhlck1hbGxvYz4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUs
IG90aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBP
dGhlck1hbGxvYz4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBh
Y2l0eSwgdHlwZW5hbWUgT3RoZXJPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFj
aXR5LCB0eXBlbmFtZSBPdGhlck1hbGxvYz4gdm9pZCBhcHBlbmRWZWN0b3IoVmVjdG9yPFUsIG90
aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBPdGhl
ck1hbGxvYz4mJik7CiAKICAgICB2b2lkIGluc2VydChzaXplX3QgcG9zaXRpb24sIFZhbHVlVHlw
ZSYmIHZhbHVlKSB7IGluc2VydDxWYWx1ZVR5cGU+KHBvc2l0aW9uLCBzdGQ6OmZvcndhcmQ8VmFs
dWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBpbnNlcnQo
c2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiwgc2l6ZV90KTsKQEAgLTEzODMsMTUgKzEzODMsMTUg
QEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgotdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90
aGVyQ2FwYWNpdHk+Ci1pbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmFwcGVuZFZlY3Rvcihjb25zdCBWZWN0
b3I8VSwgb3RoZXJDYXBhY2l0eT4mIHZhbCkKK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBv
dGhlckNhcGFjaXR5LCB0eXBlbmFtZSBPdGhlck92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG90aGVy
TWluQ2FwYWNpdHksIHR5cGVuYW1lIE90aGVyTWFsbG9jPgoraW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojph
cHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dI
YW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBPdGhlck1hbGxvYz4mIHZhbCkKIHsKICAgICBhcHBl
bmQodmFsLmJlZ2luKCksIHZhbC5zaXplKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qg
b3RoZXJDYXBhY2l0eT4KLWlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6YXBwZW5kVmVjdG9yKFZlY3RvcjxV
LCBvdGhlckNhcGFjaXR5PiYmIHZhbCkKK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBvdGhl
ckNhcGFjaXR5LCB0eXBlbmFtZSBPdGhlck92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG90aGVyTWlu
Q2FwYWNpdHksIHR5cGVuYW1lIE90aGVyTWFsbG9jPgoraW5saW5lIHZvaWQgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBl
bmRWZWN0b3IoVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBv
dGhlck1pbkNhcGFjaXR5LCBPdGhlck1hbGxvYz4mJiB2YWwpCiB7CiAgICAgc2l6ZV90IG5ld1Np
emUgPSBtX3NpemUgKyB2YWwuc2l6ZSgpOwogICAgIGlmIChuZXdTaXplID4gY2FwYWNpdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAppbmRleCAxMjQwMjdhMWNiNzcuLjhkYzJi
YjQ2OTM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtMTg2LDcgKzE4
Niw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0
YSYgcnVsZURhdGEpCiAKICAgICBmb3IgKGF1dG8mIG5hbWVBbmRNYXRjaCA6IHNlbGVjdG9yRmVh
dHVyZXMuY2xhc3NlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVuc3VyZShuYW1lQW5kTWF0Y2gu
Zmlyc3QsIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVh
dHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSdWxlRmVhdHVyZVZlY3Rv
cj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwgbmFt
ZUFuZE1hdGNoLnNlY29uZCB9KTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0g
TWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRk
KG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICB9CiAg
ICAgZm9yIChhdXRvJiBrZXlBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVyZXMucHNldWRvQ2xhc3Nl
cykgewogICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShrZXlBbmRNYXRjaC5maXJzdCwg
W10gewotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJ1bGVGZWF0dXJlVmVjdG9yPigpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZCh7IHJ1bGVEYXRhLCBrZXlBbmRNYXRj
aC5zZWNvbmQgfSk7CiAgICAgICAgIGlmIChrZXlBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVt
ZW50OjpIb3N0KQogICAgICAgICAgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKGtl
eUFuZE1hdGNoLmZpcnN0KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0
OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmlidXRl
UnVsZXMuYXBwZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIGZv
ciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBjbGFz
c1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UnVsZUZlYXR1cmVWZWN0b3I+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KICAgICBjbGFzc2Vz
QWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3Ro
ZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
UnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCiAKICAgICBm
b3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLnBzZXVkb0NsYXNzUnVsZXMpIHsKICAgICAg
ICAgcHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJ1bGVGZWF0dXJlVmVjdG9yPigpOwogICAgICAgICB9KS5p
dGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9
CiAgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLnBzZXVkb0NsYXNzZXNB
ZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmVu
ZCgpKTsKQEAgLTI4MSw1ICsyODEsNTUgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6c2hyaW5rVG9G
aXQoKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IFBMQVRGT1JNKE1BQykKKy8vIEl0IGlzIHJlYWxseSBqdXN0IHRoZSBzeXN0
ZW0gbWFsbG9jLgordm9pZCogUHJvYmFiaWxpc3RpY0d1YXJkTWFsbG9jOjptYWxsb2Moc2l6ZV90
IHNpemUpCit7CisgICAgYXV0byogcmVzdWx0ID0gOjptYWxsb2Moc2l6ZSk7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIENSQVNIKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCog
UHJvYmFiaWxpc3RpY0d1YXJkTWFsbG9jOjp0cnlNYWxsb2Moc2l6ZV90IHNpemUpCit7CisgICAg
cmV0dXJuIDo6bWFsbG9jKHNpemUpOworfQorCit2b2lkKiBQcm9iYWJpbGlzdGljR3VhcmRNYWxs
b2M6Onplcm9lZE1hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvKiByZXN1bHQgPSA6Om1h
bGxvYyhzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBtZW1z
ZXQocmVzdWx0LCAwLCBzaXplKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkKiBQcm9i
YWJpbGlzdGljR3VhcmRNYWxsb2M6OnRyeVplcm9lZE1hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAg
ICBhdXRvKiByZXN1bHQgPSA6Om1hbGxvYyhzaXplKTsKKyAgICBtZW1zZXQocmVzdWx0LCAwLCBz
aXplKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkKiBQcm9iYWJpbGlzdGljR3VhcmRN
YWxsb2M6OnJlYWxsb2Modm9pZCogcCwgc2l6ZV90IHNpemUpCit7CisgICAgYXV0byogcmVzdWx0
ID0gOjpyZWFsbG9jKHAsIHNpemUpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBDUkFTSCgp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqIFByb2JhYmlsaXN0aWNHdWFyZE1hbGxv
Yzo6dHJ5UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gOjpyZWFs
bG9jKHAsIHNpemUpOworfQorCit2b2lkIFByb2JhYmlsaXN0aWNHdWFyZE1hbGxvYzo6ZnJlZSh2
b2lkKiBwKQoreworICAgIDo6ZnJlZShwKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBT
dHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgK
aW5kZXggY2E1NjNhZTc2YzQzLi5jMTFjNTk4ZTNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZl
YXR1cmUuaApAQCAtMzksNiArMzksMjMgQEAgY2xhc3MgUnVsZURhdGE7CiBlbnVtIGNsYXNzIE1h
dGNoRWxlbWVudCA6IHVpbnQ4X3QgeyBTdWJqZWN0LCBQYXJlbnQsIEFuY2VzdG9yLCBEaXJlY3RT
aWJsaW5nLCBJbmRpcmVjdFNpYmxpbmcsIEFueVNpYmxpbmcsIFBhcmVudFNpYmxpbmcsIEFuY2Vz
dG9yU2libGluZywgSG9zdCB9OwogY29uc3RleHByIHVuc2lnbmVkIG1hdGNoRWxlbWVudENvdW50
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1hdGNoRWxlbWVudDo6SG9zdCkgKyAxOwogCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFDKQorLy8gSGVscCBmaW5kaW5nIHJk
YXI6Ly83NzQ1MDkwMAorc3RydWN0IFByb2JhYmlsaXN0aWNHdWFyZE1hbGxvYyB7CisgICAgc3Rh
dGljIHZvaWQqIG1hbGxvYyhzaXplX3QpOworICAgIHN0YXRpYyB2b2lkKiB0cnlNYWxsb2Moc2l6
ZV90KTsKKyAgICBzdGF0aWMgdm9pZCogemVyb2VkTWFsbG9jKHNpemVfdCk7CisgICAgc3RhdGlj
IHZvaWQqIHRyeVplcm9lZE1hbGxvYyhzaXplX3QpOworICAgIHN0YXRpYyB2b2lkKiByZWFsbG9j
KHZvaWQqLCBzaXplX3QpOworICAgIHN0YXRpYyB2b2lkKiB0cnlSZWFsbG9jKHZvaWQqLCBzaXpl
X3QpOworICAgIHN0YXRpYyB2b2lkIGZyZWUodm9pZCopOworfTsKKwordXNpbmcgUnVsZU1hbGxv
YyA9IFByb2JhYmlsaXN0aWNHdWFyZE1hbGxvYzsKKyNlbHNlCit1c2luZyBSdWxlTWFsbG9jID0g
RmFzdE1hbGxvYzsKKyNlbmRpZgorCiBzdHJ1Y3QgUnVsZUZlYXR1cmUgewogICAgIFJ1bGVGZWF0
dXJlKGNvbnN0IFJ1bGVEYXRhJiwgc3RkOjpvcHRpb25hbDxNYXRjaEVsZW1lbnQ+ID0gc3RkOjpu
dWxsb3B0KTsKIApAQCAtNTgsNiArNzUsOCBAQCBzdHJ1Y3QgUnVsZUZlYXR1cmVXaXRoSW52YWxp
ZGF0aW9uU2VsZWN0b3IgOiBwdWJsaWMgUnVsZUZlYXR1cmUgewogICAgIGNvbnN0IENTU1NlbGVj
dG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvciB7IG51bGxwdHIgfTsKIH07CiAKK3VzaW5nIFJ1bGVG
ZWF0dXJlVmVjdG9yID0gVmVjdG9yPFJ1bGVGZWF0dXJlLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDE2
LCBSdWxlTWFsbG9jPjsKKwogc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICB2b2lkIGFkZChj
b25zdCBSdWxlRmVhdHVyZVNldCYpOwogICAgIHZvaWQgY2xlYXIoKTsKQEAgLTcwLDEyICs4OSwx
MiBAQCBzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQgewogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gYXR0
cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5n
PiBhdHRyaWJ1dGVMb2NhbE5hbWVzSW5SdWxlczsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGNv
bnRlbnRBdHRyaWJ1dGVOYW1lc0luUnVsZXM7Ci0gICAgVmVjdG9yPFJ1bGVGZWF0dXJlPiBzaWJs
aW5nUnVsZXM7Ci0gICAgVmVjdG9yPFJ1bGVGZWF0dXJlPiB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVz
OworICAgIFJ1bGVGZWF0dXJlVmVjdG9yIHNpYmxpbmdSdWxlczsKKyAgICBSdWxlRmVhdHVyZVZl
Y3RvciB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzOwogICAgIAotICAgIEhhc2hNYXA8QXRvbVN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZT4+PiBjbGFzc1J1bGVzOworICAg
IEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFJ1bGVGZWF0dXJlVmVjdG9yPj4g
Y2xhc3NSdWxlczsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8UnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0b3I+Pj4gYXR0cmlidXRlUnVsZXM7
Ci0gICAgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4sIFdURjo6SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NUeXBlPj4gcHNldWRvQ2xhc3NSdWxlczsKKyAgICBIYXNoTWFwPENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc1R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rvcj4sIFdURjo6
SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFz
aFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3NSdWxlczsK
ICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGNsYXNzZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hT
ZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Q7CiAgICAgSGFzaFNldDxDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNl
dC5oCmluZGV4IDZmMzcwYWE2ZWE0My4uNjZiYWY0NzY4OTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNl
dC5oCkBAIC02NywxMyArNjcsMTMgQEAgcHVibGljOgogCiAgICAgflJ1bGVTZXQoKTsKIAotICAg
IHR5cGVkZWYgVmVjdG9yPFJ1bGVEYXRhLCAxPiBSdWxlRGF0YVZlY3RvcjsKKyAgICB0eXBlZGVm
IFZlY3RvcjxSdWxlRGF0YSwgMSwgQ3Jhc2hPbk92ZXJmbG93LCAxNiwgUnVsZU1hbGxvYz4gUnVs
ZURhdGFWZWN0b3I7CiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxSdWxlRGF0YVZlY3Rvcj4+IEF0b21SdWxlTWFwOwogCiAgICAgc3RydWN0IER5bmFtaWNN
ZWRpYVF1ZXJ5UnVsZXMgewogICAgICAgICBWZWN0b3I8UmVmPGNvbnN0IE1lZGlhUXVlcnlTZXQ+
PiBtZWRpYVF1ZXJ5U2V0czsKICAgICAgICAgVmVjdG9yPHNpemVfdD4gYWZmZWN0ZWRSdWxlUG9z
aXRpb25zOwotICAgICAgICBWZWN0b3I8UnVsZUZlYXR1cmU+IHJ1bGVGZWF0dXJlczsKKyAgICAg
ICAgUnVsZUZlYXR1cmVWZWN0b3IgcnVsZUZlYXR1cmVzOwogICAgICAgICBib29sIHJlcXVpcmVz
RnVsbFJlc2V0IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCByZXN1bHQgeyB0cnVlIH07CiAgICAg
ICAgIApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0cnVjdCBEeW5hbWljQ29u
dGV4dCB7CiAgICAgICAgICAgICBSZWY8Y29uc3QgTWVkaWFRdWVyeVNldD4gc2V0OwogICAgICAg
ICAgICAgVmVjdG9yPHNpemVfdD4gYWZmZWN0ZWRSdWxlUG9zaXRpb25zIHsgfTsKLSAgICAgICAg
ICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gcnVsZUZlYXR1cmVzIHsgfTsKKyAgICAgICAgICAgIFJ1
bGVGZWF0dXJlVmVjdG9yIHJ1bGVGZWF0dXJlcyB7IH07CiAgICAgICAgIH07CiAgICAgICAgIFZl
Y3RvcjxEeW5hbWljQ29udGV4dD4gZHluYW1pY0NvbnRleHRTdGFjayB7IH07CiAKQEAgLTE1NCw3
ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBDb2xsZWN0ZWRNZWRpYVF1ZXJ5Q2hhbmdl
cyB7CiAgICAgICAgIGJvb2wgcmVxdWlyZWRGdWxsUmVzZXQgeyBmYWxzZSB9OwogICAgICAgICBW
ZWN0b3I8c2l6ZV90PiBjaGFuZ2VkUXVlcnlJbmRleGVzIHsgfTsKLSAgICAgICAgVmVjdG9yPGNv
bnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4qPiBydWxlRmVhdHVyZXMgeyB9OworICAgICAgICBWZWN0
b3I8UnVsZUZlYXR1cmVWZWN0b3IqPiBydWxlRmVhdHVyZXMgeyB9OwogICAgIH07CiAgICAgQ29s
bGVjdGVkTWVkaWFRdWVyeUNoYW5nZXMgZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNv
bnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBzaXplX3Qgc3RhcnRJbmRleCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCmluZGV4IGE5YmE2NzMyMzZjZS4u
MWFiNGE5OWQzZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0
cy5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNjb3BlUnVsZVNldHM6OmNvbGxlY3RSdWxl
c0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZQogICAgIH0K
IH0KIAotc3RhdGljIFJlZlB0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVs
ZUZlYXR1cmU+JiBydWxlcykKK3N0YXRpYyBSZWZQdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29u
c3QgUnVsZUZlYXR1cmVWZWN0b3ImIHJ1bGVzKQogewogICAgIHNpemVfdCBzaXplID0gcnVsZXMu
c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKQEAgLTIxOSw4ICsyMTksOCBAQCB2b2lkIFNjb3BlUnVs
ZVNldHM6OmNvbGxlY3RGZWF0dXJlcygpIGNvbnN0CiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0Zp
dCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBSdWxlRmVhdHVy
ZVR5cGUsIHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIEhhc2hUcmFpdHM+Ci1zdGF0aWMgVmVjdG9y
PEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBL
ZXlUeXBlJiBrZXksIEhhc2hNYXA8S2V5VHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0Pj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBydWxlU2V0TWFwLCBjb25zdCBI
YXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVUeXBlPj4s
IEhhc2gsIEhhc2hUcmFpdHM+JiBydWxlRmVhdHVyZXMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlU
eXBlLCB0eXBlbmFtZSBSdWxlRmVhdHVyZVZlY3RvclR5cGUsIHR5cGVuYW1lIEhhc2gsIHR5cGVu
YW1lIEhhc2hUcmFpdHM+CitzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1
cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBLZXlUeXBlJiBrZXksIEhhc2hNYXA8S2V5VHlw
ZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4sIEhhc2gsIEhh
c2hUcmFpdHM+JiBydWxlU2V0TWFwLCBjb25zdCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVl
X3B0cjxSdWxlRmVhdHVyZVZlY3RvclR5cGU+LCBIYXNoLCBIYXNoVHJhaXRzPiYgcnVsZUZlYXR1
cmVzKQogewogICAgIHJldHVybiBydWxlU2V0TWFwLmVuc3VyZShrZXksIFsmXSAoKSAtPiBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PiB7CiAgICAgICAgIGF1dG8q
IGZlYXR1cmVzID0gcnVsZUZlYXR1cmVzLmdldChrZXkpOwpAQCAtMjMwLDEyICsyMzAsMTUgQEAg
c3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVs
ZVNldHMoY29uc3QgS2V5VHlwZSYga2UKICAgICAgICAgc3RkOjphcnJheTxSZWZQdHI8UnVsZVNl
dD4sIG1hdGNoRWxlbWVudENvdW50PiBtYXRjaEVsZW1lbnRBcnJheTsKICAgICAgICAgc3RkOjph
cnJheTxWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiwgbWF0Y2hFbGVtZW50Q291bnQ+IGludmFs
aWRhdGlvblNlbGVjdG9yQXJyYXk7CiAgICAgICAgIGZvciAoYXV0byYgZmVhdHVyZSA6ICpmZWF0
dXJlcykgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmVhdHVyZS5tYXRjaEVsZW1lbnQp
OwogICAgICAgICAgICAgYXV0byBhcnJheUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpm
ZWF0dXJlLm1hdGNoRWxlbWVudCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJheUlu
ZGV4IDwgbWF0Y2hFbGVtZW50QXJyYXkuc2l6ZSgpKTsKKwogICAgICAgICAgICAgYXV0byYgcnVs
ZVNldCA9IG1hdGNoRWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwogICAgICAgICAgICAgaWYgKCFy
dWxlU2V0KQogICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoKmZlYXR1cmUuc3R5bGVSdWxlLCBmZWF0dXJlLnNl
bGVjdG9ySW5kZXgsIGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwotICAgICAgICAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX3NhbWU8UnVsZUZlYXR1cmVUeXBlLCBSdWxlRmVhdHVyZVdpdGhJ
bnZhbGlkYXRpb25TZWxlY3Rvcj46OnZhbHVlKSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBSdWxlRmVhdHVyZVZlY3RvclR5cGU6OlZhbHVlVHlwZSwg
UnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0b3I+Ojp2YWx1ZSkgewogICAgICAgICAg
ICAgICAgIGlmIChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAg
ICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0dXJl
LmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432388</attachid>
            <date>2021-06-28 06:12:10 -0700</date>
            <delta_ts>2021-06-28 12:03:10 -0700</delta_ts>
            <desc>wip</desc>
            <filename>pgm-rules-2.patch</filename>
            <type>text/plain</type>
            <size>12964</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVj
dG9yLmgKaW5kZXggMjAzNjI1ZWNlZGQyLi5jZDE0NzQ0MTFjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03ODQs
OCArNzg0LDggQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxXQVlTX0lO
TElORSB2b2lkIGFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQ8RmFpbHVy
ZUFjdGlvbjo6Q3Jhc2g+KHUsIHNpemUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxX
QVlTX0lOTElORSBib29sIHRyeUFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYXBwZW5kPEZhaWx1cmVBY3Rpb246OlJlcG9ydD4odSwgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29u
c3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHk+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwg
c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxVLCBvdGhlckNh
cGFjaXR5PiYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0
eSwgdHlwZW5hbWUgT3RoZXJPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFjaXR5
LCB0eXBlbmFtZSBPdGhlck1hbGxvYz4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUs
IG90aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBP
dGhlck1hbGxvYz4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBh
Y2l0eSwgdHlwZW5hbWUgT3RoZXJPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFj
aXR5LCB0eXBlbmFtZSBPdGhlck1hbGxvYz4gdm9pZCBhcHBlbmRWZWN0b3IoVmVjdG9yPFUsIG90
aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBPdGhl
ck1hbGxvYz4mJik7CiAKICAgICB2b2lkIGluc2VydChzaXplX3QgcG9zaXRpb24sIFZhbHVlVHlw
ZSYmIHZhbHVlKSB7IGluc2VydDxWYWx1ZVR5cGU+KHBvc2l0aW9uLCBzdGQ6OmZvcndhcmQ8VmFs
dWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBpbnNlcnQo
c2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiwgc2l6ZV90KTsKQEAgLTEzODMsMTUgKzEzODMsMTUg
QEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgotdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90
aGVyQ2FwYWNpdHk+Ci1pbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmFwcGVuZFZlY3Rvcihjb25zdCBWZWN0
b3I8VSwgb3RoZXJDYXBhY2l0eT4mIHZhbCkKK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBv
dGhlckNhcGFjaXR5LCB0eXBlbmFtZSBPdGhlck92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG90aGVy
TWluQ2FwYWNpdHksIHR5cGVuYW1lIE90aGVyTWFsbG9jPgoraW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojph
cHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dI
YW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBPdGhlck1hbGxvYz4mIHZhbCkKIHsKICAgICBhcHBl
bmQodmFsLmJlZ2luKCksIHZhbC5zaXplKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qg
b3RoZXJDYXBhY2l0eT4KLWlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6YXBwZW5kVmVjdG9yKFZlY3RvcjxV
LCBvdGhlckNhcGFjaXR5PiYmIHZhbCkKK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBvdGhl
ckNhcGFjaXR5LCB0eXBlbmFtZSBPdGhlck92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG90aGVyTWlu
Q2FwYWNpdHksIHR5cGVuYW1lIE90aGVyTWFsbG9jPgoraW5saW5lIHZvaWQgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBl
bmRWZWN0b3IoVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHksIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBv
dGhlck1pbkNhcGFjaXR5LCBPdGhlck1hbGxvYz4mJiB2YWwpCiB7CiAgICAgc2l6ZV90IG5ld1Np
emUgPSBtX3NpemUgKyB2YWwuc2l6ZSgpOwogICAgIGlmIChuZXdTaXplID4gY2FwYWNpdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAppbmRleCAxMjQwMjdhMWNiNzcuLjYwYTVl
NjM0MWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtMTg2LDcgKzE4
Niw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0
YSYgcnVsZURhdGEpCiAKICAgICBmb3IgKGF1dG8mIG5hbWVBbmRNYXRjaCA6IHNlbGVjdG9yRmVh
dHVyZXMuY2xhc3NlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVuc3VyZShuYW1lQW5kTWF0Y2gu
Zmlyc3QsIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVh
dHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSdWxlRmVhdHVyZVZlY3Rv
cj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwgbmFt
ZUFuZE1hdGNoLnNlY29uZCB9KTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0g
TWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRk
KG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICB9CiAg
ICAgZm9yIChhdXRvJiBrZXlBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVyZXMucHNldWRvQ2xhc3Nl
cykgewogICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShrZXlBbmRNYXRjaC5maXJzdCwg
W10gewotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJ1bGVGZWF0dXJlVmVjdG9yPigpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZCh7IHJ1bGVEYXRhLCBrZXlBbmRNYXRj
aC5zZWNvbmQgfSk7CiAgICAgICAgIGlmIChrZXlBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVt
ZW50OjpIb3N0KQogICAgICAgICAgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKGtl
eUFuZE1hdGNoLmZpcnN0KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0
OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmlidXRl
UnVsZXMuYXBwZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIGZv
ciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBjbGFz
c1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UnVsZUZlYXR1cmVWZWN0b3I+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KICAgICBjbGFzc2Vz
QWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3Ro
ZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
UnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCiAKICAgICBm
b3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLnBzZXVkb0NsYXNzUnVsZXMpIHsKICAgICAg
ICAgcHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJ1bGVGZWF0dXJlVmVjdG9yPigpOwogICAgICAgICB9KS5p
dGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9
CiAgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLnBzZXVkb0NsYXNzZXNB
ZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmVu
ZCgpKTsKQEAgLTI4MSw1ICsyODEsNTcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6c2hyaW5rVG9G
aXQoKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IFBMQVRGT1JNKE1BQykKKy8vIEl0IGlzIHJlYWxseSBqdXN0IHRoZSBzeXN0
ZW0gbWFsbG9jLgordm9pZCogUHJvYmFiaWxpc3RpY0d1YXJkTWFsbG9jOjptYWxsb2Moc2l6ZV90
IHNpemUpCit7CisgICAgYXV0byogcmVzdWx0ID0gOjptYWxsb2Moc2l6ZSk7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIENSQVNIKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCog
UHJvYmFiaWxpc3RpY0d1YXJkTWFsbG9jOjp0cnlNYWxsb2Moc2l6ZV90IHNpemUpCit7CisgICAg
cmV0dXJuIDo6bWFsbG9jKHNpemUpOworfQorCit2b2lkKiBQcm9iYWJpbGlzdGljR3VhcmRNYWxs
b2M6Onplcm9lZE1hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvKiByZXN1bHQgPSA6Om1h
bGxvYyhzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBtZW1z
ZXQocmVzdWx0LCAwLCBzaXplKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkKiBQcm9i
YWJpbGlzdGljR3VhcmRNYWxsb2M6OnRyeVplcm9lZE1hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAg
ICBhdXRvKiByZXN1bHQgPSA6Om1hbGxvYyhzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZCogUHJvYmFiaWxpc3RpY0d1YXJkTWFsbG9jOjpyZWFsbG9j
KHZvaWQqIHAsIHNpemVfdCBzaXplKQoreworICAgIGF1dG8qIHJlc3VsdCA9IDo6cmVhbGxvYyhw
LCBzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkKiBQcm9iYWJpbGlzdGljR3VhcmRNYWxsb2M6OnRyeVJlYWxsb2Mo
dm9pZCogcCwgc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIDo6cmVhbGxvYyhwLCBzaXplKTsK
K30KKwordm9pZCBQcm9iYWJpbGlzdGljR3VhcmRNYWxsb2M6OmZyZWUodm9pZCogcCkKK3sKKyAg
ICA6OmZyZWUocCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0
dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCmluZGV4IGNhNTYzYWU3
NmM0My4uYzExYzU5OGUzYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
RmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTM5
LDYgKzM5LDIzIEBAIGNsYXNzIFJ1bGVEYXRhOwogZW51bSBjbGFzcyBNYXRjaEVsZW1lbnQgOiB1
aW50OF90IHsgU3ViamVjdCwgUGFyZW50LCBBbmNlc3RvciwgRGlyZWN0U2libGluZywgSW5kaXJl
Y3RTaWJsaW5nLCBBbnlTaWJsaW5nLCBQYXJlbnRTaWJsaW5nLCBBbmNlc3RvclNpYmxpbmcsIEhv
c3QgfTsKIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXRjaEVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihNYXRjaEVsZW1lbnQ6Okhvc3QpICsgMTsKIAorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IFBMQVRGT1JNKE1BQykKKy8vIEhlbHAgZmluZGluZyByZGFyOi8vNzc0NTA5MDAK
K3N0cnVjdCBQcm9iYWJpbGlzdGljR3VhcmRNYWxsb2MgeworICAgIHN0YXRpYyB2b2lkKiBtYWxs
b2Moc2l6ZV90KTsKKyAgICBzdGF0aWMgdm9pZCogdHJ5TWFsbG9jKHNpemVfdCk7CisgICAgc3Rh
dGljIHZvaWQqIHplcm9lZE1hbGxvYyhzaXplX3QpOworICAgIHN0YXRpYyB2b2lkKiB0cnlaZXJv
ZWRNYWxsb2Moc2l6ZV90KTsKKyAgICBzdGF0aWMgdm9pZCogcmVhbGxvYyh2b2lkKiwgc2l6ZV90
KTsKKyAgICBzdGF0aWMgdm9pZCogdHJ5UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0
aWMgdm9pZCBmcmVlKHZvaWQqKTsKK307CisKK3VzaW5nIFJ1bGVNYWxsb2MgPSBQcm9iYWJpbGlz
dGljR3VhcmRNYWxsb2M7CisjZWxzZQordXNpbmcgUnVsZU1hbGxvYyA9IEZhc3RNYWxsb2M7Cisj
ZW5kaWYKKwogc3RydWN0IFJ1bGVGZWF0dXJlIHsKICAgICBSdWxlRmVhdHVyZShjb25zdCBSdWxl
RGF0YSYsIHN0ZDo6b3B0aW9uYWw8TWF0Y2hFbGVtZW50PiA9IHN0ZDo6bnVsbG9wdCk7CiAKQEAg
LTU4LDYgKzc1LDggQEAgc3RydWN0IFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9y
IDogcHVibGljIFJ1bGVGZWF0dXJlIHsKICAgICBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0
aW9uU2VsZWN0b3IgeyBudWxscHRyIH07CiB9OwogCit1c2luZyBSdWxlRmVhdHVyZVZlY3RvciA9
IFZlY3RvcjxSdWxlRmVhdHVyZSwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAxNiwgUnVsZU1hbGxvYz47
CisKIHN0cnVjdCBSdWxlRmVhdHVyZVNldCB7CiAgICAgdm9pZCBhZGQoY29uc3QgUnVsZUZlYXR1
cmVTZXQmKTsKICAgICB2b2lkIGNsZWFyKCk7CkBAIC03MCwxMiArODksMTIgQEAgc3RydWN0IFJ1
bGVGZWF0dXJlU2V0IHsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGF0dHJpYnV0ZUNhbm9uaWNh
bExvY2FsTmFtZXNJblJ1bGVzOwogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlTG9j
YWxOYW1lc0luUnVsZXM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBjb250ZW50QXR0cmlidXRl
TmFtZXNJblJ1bGVzOwotICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gc2libGluZ1J1bGVzOwotICAg
IFZlY3RvcjxSdWxlRmVhdHVyZT4gdW5jb21tb25BdHRyaWJ1dGVSdWxlczsKKyAgICBSdWxlRmVh
dHVyZVZlY3RvciBzaWJsaW5nUnVsZXM7CisgICAgUnVsZUZlYXR1cmVWZWN0b3IgdW5jb21tb25B
dHRyaWJ1dGVSdWxlczsKICAgICAKLSAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4gY2xhc3NSdWxlczsKKyAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rvcj4+IGNsYXNzUnVsZXM7CiAg
ICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJl
V2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0ZVJ1bGVzOwotICAgIEhhc2hNYXA8
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxl
RmVhdHVyZT4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdU
Rjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IHBz
ZXVkb0NsYXNzUnVsZXM7CisgICAgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBl
LCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+LCBXVEY6OkludEhhc2g8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzUnVsZXM7CiAgICAgSGFzaFNldDxB
dG9tU3RyaW5nPiBjbGFzc2VzQWZmZWN0aW5nSG9zdDsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+
IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hTZXQ8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZSwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBw
c2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAppbmRleCA2ZjM3
MGFhNmVhNDMuLjY2YmFmNDc2ODkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApAQCAtNjcsMTMg
KzY3LDEzIEBAIHB1YmxpYzoKIAogICAgIH5SdWxlU2V0KCk7CiAKLSAgICB0eXBlZGVmIFZlY3Rv
cjxSdWxlRGF0YSwgMT4gUnVsZURhdGFWZWN0b3I7CisgICAgdHlwZWRlZiBWZWN0b3I8UnVsZURh
dGEsIDEsIENyYXNoT25PdmVyZmxvdywgMTYsIFJ1bGVNYWxsb2M+IFJ1bGVEYXRhVmVjdG9yOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZURhdGFW
ZWN0b3I+PiBBdG9tUnVsZU1hcDsKIAogICAgIHN0cnVjdCBEeW5hbWljTWVkaWFRdWVyeVJ1bGVz
IHsKICAgICAgICAgVmVjdG9yPFJlZjxjb25zdCBNZWRpYVF1ZXJ5U2V0Pj4gbWVkaWFRdWVyeVNl
dHM7CiAgICAgICAgIFZlY3RvcjxzaXplX3Q+IGFmZmVjdGVkUnVsZVBvc2l0aW9uczsKLSAgICAg
ICAgVmVjdG9yPFJ1bGVGZWF0dXJlPiBydWxlRmVhdHVyZXM7CisgICAgICAgIFJ1bGVGZWF0dXJl
VmVjdG9yIHJ1bGVGZWF0dXJlczsKICAgICAgICAgYm9vbCByZXF1aXJlc0Z1bGxSZXNldCB7IGZh
bHNlIH07CiAgICAgICAgIGJvb2wgcmVzdWx0IHsgdHJ1ZSB9OwogICAgICAgICAKQEAgLTk0LDcg
Kzk0LDcgQEAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgRHluYW1pY0NvbnRleHQgewogICAgICAg
ICAgICAgUmVmPGNvbnN0IE1lZGlhUXVlcnlTZXQ+IHNldDsKICAgICAgICAgICAgIFZlY3Rvcjxz
aXplX3Q+IGFmZmVjdGVkUnVsZVBvc2l0aW9ucyB7IH07Ci0gICAgICAgICAgICBWZWN0b3I8UnVs
ZUZlYXR1cmU+IHJ1bGVGZWF0dXJlcyB7IH07CisgICAgICAgICAgICBSdWxlRmVhdHVyZVZlY3Rv
ciBydWxlRmVhdHVyZXMgeyB9OwogICAgICAgICB9OwogICAgICAgICBWZWN0b3I8RHluYW1pY0Nv
bnRleHQ+IGR5bmFtaWNDb250ZXh0U3RhY2sgeyB9OwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJp
dmF0ZToKICAgICBzdHJ1Y3QgQ29sbGVjdGVkTWVkaWFRdWVyeUNoYW5nZXMgewogICAgICAgICBi
b29sIHJlcXVpcmVkRnVsbFJlc2V0IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPHNpemVfdD4g
Y2hhbmdlZFF1ZXJ5SW5kZXhlcyB7IH07Ci0gICAgICAgIFZlY3Rvcjxjb25zdCBWZWN0b3I8UnVs
ZUZlYXR1cmU+Kj4gcnVsZUZlYXR1cmVzIHsgfTsKKyAgICAgICAgVmVjdG9yPFJ1bGVGZWF0dXJl
VmVjdG9yKj4gcnVsZUZlYXR1cmVzIHsgfTsKICAgICB9OwogICAgIENvbGxlY3RlZE1lZGlhUXVl
cnlDaGFuZ2VzIGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yJiwgc2l6ZV90IHN0YXJ0SW5kZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZVJ1bGVTZXRzLmNwcAppbmRleCBhOWJhNjczMjM2Y2UuLjFhYjRhOTlkM2Y3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCkBAIC0xMTcs
NyArMTE3LDcgQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjpjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxl
U2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGUKICAgICB9CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVs
ZXMpCitzdGF0aWMgUmVmUHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFJ1bGVGZWF0dXJl
VmVjdG9yJiBydWxlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAgICBp
ZiAoIXNpemUpCkBAIC0yMTksOCArMjE5LDggQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjpjb2xsZWN0
RmVhdHVyZXMoKSBjb25zdAogICAgIG1fZmVhdHVyZXMuc2hyaW5rVG9GaXQoKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgUnVsZUZlYXR1cmVUeXBlLCB0eXBlbmFt
ZSBIYXNoLCB0eXBlbmFtZSBIYXNoVHJhaXRzPgotc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25S
dWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgS2V5VHlwZSYga2V5LCBI
YXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNl
dD4+LCBIYXNoLCBIYXNoVHJhaXRzPiYgcnVsZVNldE1hcCwgY29uc3QgSGFzaE1hcDxLZXlUeXBl
LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlVHlwZT4+LCBIYXNoLCBIYXNoVHJh
aXRzPiYgcnVsZUZlYXR1cmVzKQordGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUg
UnVsZUZlYXR1cmVWZWN0b3JUeXBlLCB0eXBlbmFtZSBIYXNoLCB0eXBlbmFtZSBIYXNoVHJhaXRz
Pgorc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9u
UnVsZVNldHMoY29uc3QgS2V5VHlwZSYga2V5LCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+LCBIYXNoLCBIYXNoVHJhaXRzPiYgcnVs
ZVNldE1hcCwgY29uc3QgSGFzaE1hcDxLZXlUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZUZlYXR1
cmVWZWN0b3JUeXBlPiwgSGFzaCwgSGFzaFRyYWl0cz4mIHJ1bGVGZWF0dXJlcykKIHsKICAgICBy
ZXR1cm4gcnVsZVNldE1hcC5lbnN1cmUoa2V5LCBbJl0gKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4gewogICAgICAgICBhdXRvKiBmZWF0dXJlcyA9IHJ1
bGVGZWF0dXJlcy5nZXQoa2V5KTsKQEAgLTIzMCwxMiArMjMwLDE1IEBAIHN0YXRpYyBWZWN0b3I8
SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEtl
eVR5cGUmIGtlCiAgICAgICAgIHN0ZDo6YXJyYXk8UmVmUHRyPFJ1bGVTZXQ+LCBtYXRjaEVsZW1l
bnRDb3VudD4gbWF0Y2hFbGVtZW50QXJyYXk7CiAgICAgICAgIHN0ZDo6YXJyYXk8VmVjdG9yPGNv
bnN0IENTU1NlbGVjdG9yKj4sIG1hdGNoRWxlbWVudENvdW50PiBpbnZhbGlkYXRpb25TZWxlY3Rv
ckFycmF5OwogICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiAqZmVhdHVyZXMpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGZlYXR1cmUubWF0Y2hFbGVtZW50KTsKICAgICAgICAgICAg
IGF1dG8gYXJyYXlJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigqZmVhdHVyZS5tYXRjaEVs
ZW1lbnQpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXlJbmRleCA8IG1hdGNoRWxl
bWVudEFycmF5LnNpemUoKSk7CisKICAgICAgICAgICAgIGF1dG8mIHJ1bGVTZXQgPSBtYXRjaEVs
ZW1lbnRBcnJheVthcnJheUluZGV4XTsKICAgICAgICAgICAgIGlmICghcnVsZVNldCkKICAgICAg
ICAgICAgICAgICBydWxlU2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBydWxl
U2V0LT5hZGRSdWxlKCpmZWF0dXJlLnN0eWxlUnVsZSwgZmVhdHVyZS5zZWxlY3RvckluZGV4LCBm
ZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19zYW1lPFJ1bGVGZWF0dXJlVHlwZSwgUnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2Vs
ZWN0b3I+Ojp2YWx1ZSkgeworICAgICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8
dHlwZW5hbWUgUnVsZUZlYXR1cmVWZWN0b3JUeXBlOjpWYWx1ZVR5cGUsIFJ1bGVGZWF0dXJlV2l0
aEludmFsaWRhdGlvblNlbGVjdG9yPjo6dmFsdWUpIHsKICAgICAgICAgICAgICAgICBpZiAoZmVh
dHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0
aW9uU2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25T
ZWxlY3Rvcik7CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432412</attachid>
            <date>2021-06-28 12:03:10 -0700</date>
            <delta_ts>2021-06-29 00:19:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pgm-rules-4.patch</filename>
            <type>text/plain</type>
            <size>19195</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMmYwYWM2ODUyZmQxLi5iNzYyNjViZmRmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIw
MjEtMDYtMjggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEVu
YWJsZSBQcm9iYWJpbGlzdGljIEd1YXJkIE1hbGxvYyBmb3IgUnVsZURhdGEgYW5kIFJ1bGVGZWF0
dXJlIHZlY3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBTeXN0ZW1NYWxsb2MgdHlwZSB0aGF0IGNhbiBiZSB1c2VkIHdpdGggY29udGFpbmVy
cyBsaWtlIFZlY3RvciBhbmQKKyAgICAgICAgUHJvYmFiaWxpc3RpY0d1YXJkTWFsbG9jIGFsaWFz
IGZvciBpdCBvbiBNYWMvaU9TIHBsYXRmb3Jtcy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiB3dGYvU3lzdGVtTWFsbG9jLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTeXN0ZW1NYWxsb2M6
Om1hbGxvYyk6CisgICAgICAgIChXVEY6OlN5c3RlbU1hbGxvYzo6dHJ5TWFsbG9jKToKKyAgICAg
ICAgKFdURjo6U3lzdGVtTWFsbG9jOjp6ZXJvZWRNYWxsb2MpOgorICAgICAgICAoV1RGOjpTeXN0
ZW1NYWxsb2M6OnRyeVplcm9lZE1hbGxvYyk6CisgICAgICAgIChXVEY6OlN5c3RlbU1hbGxvYzo6
cmVhbGxvYyk6CisgICAgICAgIChXVEY6OlN5c3RlbU1hbGxvYzo6dHJ5UmVhbGxvYyk6CisgICAg
ICAgIChXVEY6OlN5c3RlbU1hbGxvYzo6ZnJlZSk6CisgICAgICAgICogd3RmL1ZlY3Rvci5oOgor
ICAgICAgICAoV1RGOjpNYWxsb2M+OjphcHBlbmRWZWN0b3IpOgorCisgICAgICAgIEluY2x1ZGUg
YWxsIHRlbXBsYXRlIHBhcmFtZXRlcnMgZm9yIHRoZSBhcHBlbmRWZWN0b3IgYXJndW1lbnQuCisK
IDIwMjEtMDYtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGp1c3QgYGZldGNoYCBwb3J0IGJsb2NraW5nIGZvciBwb3J0cyA5OTAsIDk4OQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjUwYTJmNDZhZjc5Li41ZmVjM2Fj
NWQ1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzU4
LDYgKzc1OCw3IEBACiAJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdv
cmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8q
IFdvcmtRdWV1ZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtRdWV1ZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREMkFF
NEQyNjhBNEM3RjAwREZFQTAyIC8qIFN5c3RlbU1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0
ZW1NYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyQzg2RDgyNjdCMjc1
QzAwNTJDQjlBIC8qIENQVVRpbWVQT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDUFVUaW1lUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFQjYxRURDNjI0MDlDQ0MwMDAxRUZFMzYgLyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5c3RlbVRyYWNpbmdDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAv
KiBCeXRlT3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZU9yZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjg5LDYgKzEyOTAsNyBAQAogCQkJ
CTBGRERCRkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oICovLAogCQkJ
CTU1OTdGODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmggKi8s
CiAJCQkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLywKKwkJCQlF
NEQyQUU0RDI2OEE0QzdGMDBERkVBMDIgLyogU3lzdGVtTWFsbG9jLmggKi8sCiAJCQkJMEZCMzE3
QzMxQzQ4ODAwMTAwN0UzOTVBIC8qIFN5c3RlbVRyYWNpbmcuaCAqLywKIAkJCQlERUY3RkU1RjIy
NTgxQUM4MDBDMTUxMjkgLyogVGFnZ2VkQXJyYXlTdG9yYWdlUHRyLmggKi8sCiAJCQkJN0IyNzM5
RjEyNjMyQTg5NDAwNDBGMTgyIC8qIFRocmVhZEFzc2VydGlvbnMuaCAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKaW5kZXggZmVhZWFjNTVhYWY5Li4wZmEwOGI3ODdlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CkBAIC0yNjQsNiArMjY0LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFN0cmlu
Z1ByaW50U3RyZWFtLmgKICAgICBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmgKICAgICBTeXN0ZW1G
cmVlLmgKKyAgICBTeXN0ZW1NYWxsb2MuaAogICAgIFN5c3RlbVRyYWNpbmcuaAogICAgIFRhZ2dl
ZEFycmF5U3RvcmFnZVB0ci5oCiAgICAgVGhyZWFkQXNzZXJ0aW9ucy5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9TeXN0ZW1NYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL1N5c3RlbU1hbGxv
Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWM2M2YwMzhjYTRm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU3lzdGVtTWFsbG9jLmgKQEAgLTAs
MCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorLy8gUHJvYmFiaWxpc3RpYyBHdWFyZCBNYWxsb2Mg
aXMgbm90IHJlYWxseSBlbmFibGVkIG9uIG9sZGVyIHBsYXRmb3JtcyBidXQgb3B0IHRob3NlIHRv
IHN5c3RlbSBtYWxsb2MgdG9vIGZvciBjb25zaXN0ZW5jeS4KKyNkZWZpbmUgSEFWRV9QUk9CQUJJ
TElTVElDX0dVQVJEX01BTExPQyAxCisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVj
dCBTeXN0ZW1NYWxsb2MgeworICAgIHN0YXRpYyB2b2lkKiBtYWxsb2Moc2l6ZV90IHNpemUpCisg
ICAgeworICAgICAgICBhdXRvKiByZXN1bHQgPSA6Om1hbGxvYyhzaXplKTsKKyAgICAgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkKiB0cnlNYWxsb2Moc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICByZXR1cm4gOjptYWxsb2Moc2l6ZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQq
IHplcm9lZE1hbGxvYyhzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGF1dG8qIHJlc3VsdCA9
IDo6bWFsbG9jKHNpemUpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgIG1lbXNldChyZXN1bHQsIDAsIHNpemUpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkKiB0cnlaZXJvZWRNYWxsb2Moc2l6ZV90IHNp
emUpCisgICAgeworICAgICAgICBhdXRvKiByZXN1bHQgPSA6Om1hbGxvYyhzaXplKTsKKyAgICAg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbWVt
c2V0KHJlc3VsdCwgMCwgc2l6ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgc3RhdGljIHZvaWQqIHJlYWxsb2Modm9pZCogcCwgc2l6ZV90IHNpemUpCisgICAgeworICAg
ICAgICBhdXRvKiByZXN1bHQgPSA6OnJlYWxsb2MocCwgc2l6ZSk7CisgICAgICAgIGlmICghcmVz
dWx0KQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCogdHJ5UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgc2l6ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiA6OnJlYWxsb2MocCwgc2l6ZSk7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgZnJlZSh2b2lkKiBwKQorICAgIHsKKyAgICAgICAgOjpmcmVlKHApOworICAgIH0K
K307CisKKyNpZiBIQVZFKFBST0JBQklMSVNUSUNfR1VBUkRfTUFMTE9DKQordXNpbmcgUHJvYmFi
aWxpc3RpY0d1YXJkTWFsbG9jID0gU3lzdGVtTWFsbG9jOworI2VuZGlmCisKK30KKwordXNpbmcg
V1RGOjpTeXN0ZW1NYWxsb2M7CisjaWYgSEFWRShQUk9CQUJJTElTVElDX0dVQVJEX01BTExPQykK
K3VzaW5nIFdURjo6UHJvYmFiaWxpc3RpY0d1YXJkTWFsbG9jOworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4
IDIwMzYyNWVjZWRkMi4uY2QxNDc0NDExY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9W
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNzg0LDggKzc4NCw4IEBA
IHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUgdm9pZCBh
cHBlbmQoY29uc3QgVSogdSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kPEZhaWx1cmVBY3Rpb246OkNy
YXNoPih1LCBzaXplKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUg
Ym9vbCB0cnlBcHBlbmQoY29uc3QgVSogdSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFwcGVuZDxG
YWlsdXJlQWN0aW9uOjpSZXBvcnQ+KHUsIHNpemUpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxV
LCBvdGhlckNhcGFjaXR5PiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBvdGhl
ckNhcGFjaXR5PiB2b2lkIGFwcGVuZFZlY3RvcihWZWN0b3I8VSwgb3RoZXJDYXBhY2l0eT4mJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5cGVuYW1l
IE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwgdHlwZW5hbWUg
T3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFj
aXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxsb2M+
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5cGVu
YW1lIE90aGVyT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qgb3RoZXJNaW5DYXBhY2l0eSwgdHlwZW5h
bWUgT3RoZXJNYWxsb2M+IHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5
LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxsb2M+JiYp
OwogCiAgICAgdm9pZCBpbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBWYWx1ZVR5cGUmJiB2YWx1ZSkg
eyBpbnNlcnQ8VmFsdWVUeXBlPihwb3NpdGlvbiwgc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odmFs
dWUpKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3Np
dGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0xMzgzLDE1ICsxMzgzLDE1IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5
cGVuYW1lIE1hbGxvYz4KLXRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBvdGhlckNhcGFjaXR5
PgotaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUsIG90aGVy
Q2FwYWNpdHk+JiB2YWwpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0
eSwgdHlwZW5hbWUgT3RoZXJPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFjaXR5
LCB0eXBlbmFtZSBPdGhlck1hbGxvYz4KK2lubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6YXBwZW5kVmVjdG9y
KGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3Ro
ZXJNaW5DYXBhY2l0eSwgT3RoZXJNYWxsb2M+JiB2YWwpCiB7CiAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwg
dHlwZW5hbWUgTWFsbG9jPgotdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNp
dHk+Ci1pbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmFwcGVuZFZlY3RvcihWZWN0b3I8VSwgb3RoZXJDYXBh
Y2l0eT4mJiB2YWwpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eSwg
dHlwZW5hbWUgT3RoZXJPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFjaXR5LCB0
eXBlbmFtZSBPdGhlck1hbGxvYz4KK2lubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6YXBwZW5kVmVjdG9yKFZl
Y3RvcjxVLCBvdGhlckNhcGFjaXR5LCBPdGhlck92ZXJmbG93SGFuZGxlciwgb3RoZXJNaW5DYXBh
Y2l0eSwgT3RoZXJNYWxsb2M+JiYgdmFsKQogewogICAgIHNpemVfdCBuZXdTaXplID0gbV9zaXpl
ICsgdmFsLnNpemUoKTsKICAgICBpZiAobmV3U2l6ZSA+IGNhcGFjaXR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNzY5OWVmOWE1NDM2Li4yMzE3N2YzZTVhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAyMS0wNi0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5hYmxlIFByb2JhYmlsaXN0aWMgR3VhcmQgTWFsbG9jIGZvciBSdWxlRGF0YSBhbmQgUnVs
ZUZlYXR1cmUgdmVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSGVscCBmb3IgY2F0Y2hpbmcgYSBjcmFzaC4KKworICAgICAgICAqIHN0eWxlL1J1
bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6
Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5oOgorICAgICAgICAqIHN0eWxl
L1J1bGVTZXQuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyk6CisKIDIwMjEtMDYtMjIgIEZyw6lkw6ly
aWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgTnVsbHB0ciBjcmFzaCBpbiBu
dWxsIHB0ciBkZXJlZiBpbiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50
U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
Y3BwCmluZGV4IDEyNDAyN2ExY2I3Ny4uOTYyMzUxOTU2NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZUZlYXR1cmUuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6
Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIAogICAgIGZvciAoYXV0
byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAgIGNs
YXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewotICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJ1bGVGZWF0dXJlVmVjdG9yPigpOwogICAgICAgICB9KS5pdGVyYXRvci0+
dmFsdWUtPmFwcGVuZCh7IHJ1bGVEYXRhLCBuYW1lQW5kTWF0Y2guc2Vjb25kIH0pOwogICAgICAg
ICBpZiAobmFtZUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAg
ICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQobmFtZUFuZE1hdGNoLmZpcnN0KTsKQEAgLTIw
Miw3ICsyMDIsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3Qg
UnVsZURhdGEmIHJ1bGVEYXRhKQogICAgIH0KICAgICBmb3IgKGF1dG8mIGtleUFuZE1hdGNoIDog
c2VsZWN0b3JGZWF0dXJlcy5wc2V1ZG9DbGFzc2VzKSB7CiAgICAgICAgIHBzZXVkb0NsYXNzUnVs
ZXMuZW5zdXJlKGtleUFuZE1hdGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UnVsZUZlYXR1cmVWZWN0b3I+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kKHsgcnVsZURhdGEsIGtleUFuZE1hdGNoLnNlY29uZCB9KTsKICAgICAgICAgaWYgKGtl
eUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBwc2V1
ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQoa2V5QW5kTWF0Y2guZmlyc3QpOwpAQCAtMjIwLDcg
KzIyMCw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYg
b3RoZXIpCiAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIudW5j
b21tb25BdHRyaWJ1dGVSdWxlcyk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhl
ci5jbGFzc1J1bGVzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5r
ZXksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVy
ZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSdWxlRmVhdHVyZVZlY3Rvcj4o
KTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFp
ci52YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFz
c2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQo
KSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1
bGVGZWF0dXJlU2V0JiBvdGhlcikKIAogICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3Ro
ZXIucHNldWRvQ2xhc3NSdWxlcykgewogICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShr
ZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UnVsZUZl
YXR1cmVWZWN0b3I+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9y
KCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KICAgICBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5n
SG9zdC5hZGQob3RoZXIucHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIu
cHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0
dXJlLmgKaW5kZXggY2E1NjNhZTc2YzQzLi4yM2NjY2E1MTE1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZUZlYXR1cmUuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9TeXN0ZW1NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIApAQCAtMzksNiArNDAs
MTMgQEAgY2xhc3MgUnVsZURhdGE7CiBlbnVtIGNsYXNzIE1hdGNoRWxlbWVudCA6IHVpbnQ4X3Qg
eyBTdWJqZWN0LCBQYXJlbnQsIEFuY2VzdG9yLCBEaXJlY3RTaWJsaW5nLCBJbmRpcmVjdFNpYmxp
bmcsIEFueVNpYmxpbmcsIFBhcmVudFNpYmxpbmcsIEFuY2VzdG9yU2libGluZywgSG9zdCB9Owog
Y29uc3RleHByIHVuc2lnbmVkIG1hdGNoRWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE1hdGNoRWxlbWVudDo6SG9zdCkgKyAxOwogCisjaWYgSEFWRShQUk9CQUJJTElTVElDX0dV
QVJEX01BTExPQykKKy8vIEhlbHAgZmluZGluZyByZGFyOi8vNzc0NTA5MDAKK3VzaW5nIFJ1bGVN
YWxsb2MgPSBQcm9iYWJpbGlzdGljR3VhcmRNYWxsb2M7CisjZWxzZQordXNpbmcgUnVsZU1hbGxv
YyA9IEZhc3RNYWxsb2M7CisjZW5kaWYKKwogc3RydWN0IFJ1bGVGZWF0dXJlIHsKICAgICBSdWxl
RmVhdHVyZShjb25zdCBSdWxlRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TWF0Y2hFbGVtZW50PiA9IHN0
ZDo6bnVsbG9wdCk7CiAKQEAgLTU4LDYgKzY2LDggQEAgc3RydWN0IFJ1bGVGZWF0dXJlV2l0aElu
dmFsaWRhdGlvblNlbGVjdG9yIDogcHVibGljIFJ1bGVGZWF0dXJlIHsKICAgICBjb25zdCBDU1NT
ZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0b3IgeyBudWxscHRyIH07CiB9OwogCit1c2luZyBS
dWxlRmVhdHVyZVZlY3RvciA9IFZlY3RvcjxSdWxlRmVhdHVyZSwgMCwgQ3Jhc2hPbk92ZXJmbG93
LCAxNiwgUnVsZU1hbGxvYz47CisKIHN0cnVjdCBSdWxlRmVhdHVyZVNldCB7CiAgICAgdm9pZCBh
ZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmKTsKICAgICB2b2lkIGNsZWFyKCk7CkBAIC03MCwxMiAr
ODAsMTIgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+
IGF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZXNJblJ1bGVzOwogICAgIEhhc2hTZXQ8QXRvbVN0
cmluZz4gYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5n
PiBjb250ZW50QXR0cmlidXRlTmFtZXNJblJ1bGVzOwotICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4g
c2libGluZ1J1bGVzOwotICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gdW5jb21tb25BdHRyaWJ1dGVS
dWxlczsKKyAgICBSdWxlRmVhdHVyZVZlY3RvciBzaWJsaW5nUnVsZXM7CisgICAgUnVsZUZlYXR1
cmVWZWN0b3IgdW5jb21tb25BdHRyaWJ1dGVSdWxlczsKICAgICAKLSAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4gY2xhc3NSdWxlczsK
KyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rv
cj4+IGNsYXNzUnVsZXM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0ZVJ1
bGVzOwotICAgIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZT4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzUnVsZXM7CisgICAgSGFzaE1hcDxDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+LCBX
VEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzUnVs
ZXM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBjbGFzc2VzQWZmZWN0aW5nSG9zdDsKICAgICBI
YXNoU2V0PEF0b21TdHJpbmc+IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hTZXQ8
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc1R5cGU+PiBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVTZXQuaAppbmRleCA2ZjM3MGFhNmVhNDMuLjY2YmFmNDc2ODkyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVTZXQuaApAQCAtNjcsMTMgKzY3LDEzIEBAIHB1YmxpYzoKIAogICAgIH5SdWxlU2V0KCk7CiAK
LSAgICB0eXBlZGVmIFZlY3RvcjxSdWxlRGF0YSwgMT4gUnVsZURhdGFWZWN0b3I7CisgICAgdHlw
ZWRlZiBWZWN0b3I8UnVsZURhdGEsIDEsIENyYXNoT25PdmVyZmxvdywgMTYsIFJ1bGVNYWxsb2M+
IFJ1bGVEYXRhVmVjdG9yOwogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8UnVsZURhdGFWZWN0b3I+PiBBdG9tUnVsZU1hcDsKIAogICAgIHN0cnVjdCBEeW5h
bWljTWVkaWFRdWVyeVJ1bGVzIHsKICAgICAgICAgVmVjdG9yPFJlZjxjb25zdCBNZWRpYVF1ZXJ5
U2V0Pj4gbWVkaWFRdWVyeVNldHM7CiAgICAgICAgIFZlY3RvcjxzaXplX3Q+IGFmZmVjdGVkUnVs
ZVBvc2l0aW9uczsKLSAgICAgICAgVmVjdG9yPFJ1bGVGZWF0dXJlPiBydWxlRmVhdHVyZXM7Cisg
ICAgICAgIFJ1bGVGZWF0dXJlVmVjdG9yIHJ1bGVGZWF0dXJlczsKICAgICAgICAgYm9vbCByZXF1
aXJlc0Z1bGxSZXNldCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgcmVzdWx0IHsgdHJ1ZSB9Owog
ICAgICAgICAKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgRHluYW1p
Y0NvbnRleHQgewogICAgICAgICAgICAgUmVmPGNvbnN0IE1lZGlhUXVlcnlTZXQ+IHNldDsKICAg
ICAgICAgICAgIFZlY3RvcjxzaXplX3Q+IGFmZmVjdGVkUnVsZVBvc2l0aW9ucyB7IH07Ci0gICAg
ICAgICAgICBWZWN0b3I8UnVsZUZlYXR1cmU+IHJ1bGVGZWF0dXJlcyB7IH07CisgICAgICAgICAg
ICBSdWxlRmVhdHVyZVZlY3RvciBydWxlRmVhdHVyZXMgeyB9OwogICAgICAgICB9OwogICAgICAg
ICBWZWN0b3I8RHluYW1pY0NvbnRleHQ+IGR5bmFtaWNDb250ZXh0U3RhY2sgeyB9OwogCkBAIC0x
NTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ29sbGVjdGVkTWVkaWFRdWVyeUNo
YW5nZXMgewogICAgICAgICBib29sIHJlcXVpcmVkRnVsbFJlc2V0IHsgZmFsc2UgfTsKICAgICAg
ICAgVmVjdG9yPHNpemVfdD4gY2hhbmdlZFF1ZXJ5SW5kZXhlcyB7IH07Ci0gICAgICAgIFZlY3Rv
cjxjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+Kj4gcnVsZUZlYXR1cmVzIHsgfTsKKyAgICAgICAg
VmVjdG9yPFJ1bGVGZWF0dXJlVmVjdG9yKj4gcnVsZUZlYXR1cmVzIHsgfTsKICAgICB9OwogICAg
IENvbGxlY3RlZE1lZGlhUXVlcnlDaGFuZ2VzIGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxl
cyhjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgc2l6ZV90IHN0YXJ0SW5kZXgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAppbmRleCBhOWJhNjczMjM2
Y2UuLjFhYjRhOTlkM2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZVJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVs
ZVNldHMuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjpjb2xsZWN0
UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGUKICAg
ICB9CiB9CiAKLXN0YXRpYyBSZWZQdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9y
PFJ1bGVGZWF0dXJlPiYgcnVsZXMpCitzdGF0aWMgUmVmUHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0
KGNvbnN0IFJ1bGVGZWF0dXJlVmVjdG9yJiBydWxlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHJ1
bGVzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCkBAIC0yMTksOCArMjE5LDggQEAgdm9pZCBTY29w
ZVJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBjb25zdAogICAgIG1fZmVhdHVyZXMuc2hyaW5r
VG9GaXQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgUnVsZUZl
YXR1cmVUeXBlLCB0eXBlbmFtZSBIYXNoLCB0eXBlbmFtZSBIYXNoVHJhaXRzPgotc3RhdGljIFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29u
c3QgS2V5VHlwZSYga2V5LCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
SW52YWxpZGF0aW9uUnVsZVNldD4+LCBIYXNoLCBIYXNoVHJhaXRzPiYgcnVsZVNldE1hcCwgY29u
c3QgSGFzaE1hcDxLZXlUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlVHlw
ZT4+LCBIYXNoLCBIYXNoVHJhaXRzPiYgcnVsZUZlYXR1cmVzKQordGVtcGxhdGU8dHlwZW5hbWUg
S2V5VHlwZSwgdHlwZW5hbWUgUnVsZUZlYXR1cmVWZWN0b3JUeXBlLCB0eXBlbmFtZSBIYXNoLCB0
eXBlbmFtZSBIYXNoVHJhaXRzPgorc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Piog
ZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgS2V5VHlwZSYga2V5LCBIYXNoTWFwPEtl
eVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+LCBIYXNo
LCBIYXNoVHJhaXRzPiYgcnVsZVNldE1hcCwgY29uc3QgSGFzaE1hcDxLZXlUeXBlLCBzdGQ6OnVu
aXF1ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3JUeXBlPiwgSGFzaCwgSGFzaFRyYWl0cz4mIHJ1bGVG
ZWF0dXJlcykKIHsKICAgICByZXR1cm4gcnVsZVNldE1hcC5lbnN1cmUoa2V5LCBbJl0gKCkgLT4g
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4gewogICAgICAgICBh
dXRvKiBmZWF0dXJlcyA9IHJ1bGVGZWF0dXJlcy5nZXQoa2V5KTsKQEAgLTIzMCwxMiArMjMwLDE1
IEBAIHN0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlv
blJ1bGVTZXRzKGNvbnN0IEtleVR5cGUmIGtlCiAgICAgICAgIHN0ZDo6YXJyYXk8UmVmUHRyPFJ1
bGVTZXQ+LCBtYXRjaEVsZW1lbnRDb3VudD4gbWF0Y2hFbGVtZW50QXJyYXk7CiAgICAgICAgIHN0
ZDo6YXJyYXk8VmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4sIG1hdGNoRWxlbWVudENvdW50PiBp
bnZhbGlkYXRpb25TZWxlY3RvckFycmF5OwogICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiAq
ZmVhdHVyZXMpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZlYXR1cmUubWF0Y2hFbGVt
ZW50KTsKICAgICAgICAgICAgIGF1dG8gYXJyYXlJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PigqZmVhdHVyZS5tYXRjaEVsZW1lbnQpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJy
YXlJbmRleCA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKSk7CisKICAgICAgICAgICAgIGF1dG8m
IHJ1bGVTZXQgPSBtYXRjaEVsZW1lbnRBcnJheVthcnJheUluZGV4XTsKICAgICAgICAgICAgIGlm
ICghcnVsZVNldCkKICAgICAgICAgICAgICAgICBydWxlU2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKCpmZWF0dXJlLnN0eWxlUnVsZSwgZmVhdHVy
ZS5zZWxlY3RvckluZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKLSAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPFJ1bGVGZWF0dXJlVHlwZSwgUnVsZUZlYXR1cmVX
aXRoSW52YWxpZGF0aW9uU2VsZWN0b3I+Ojp2YWx1ZSkgeworICAgICAgICAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgUnVsZUZlYXR1cmVWZWN0b3JUeXBlOjpWYWx1ZVR5
cGUsIFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPjo6dmFsdWUpIHsKICAgICAg
ICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAgICAg
ICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVh
dHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>