<?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>150256</bug_id>
          
          <creation_ts>2015-10-16 14:36:33 -0700</creation_ts>
          <short_desc>Make TextStream the canonical way to log classes in WebCore</short_desc>
          <delta_ts>2015-10-17 08:48:11 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1134054</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-16 14:36:33 -0700</bug_when>
    <thetext>Make TextStream the canonical way to log classes in WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134058</commentid>
    <comment_count>1</comment_count>
      <attachid>263333</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-16 14:46:34 -0700</bug_when>
    <thetext>Created attachment 263333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134062</commentid>
    <comment_count>2</comment_count>
      <attachid>263336</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-16 15:02:28 -0700</bug_when>
    <thetext>Created attachment 263336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134185</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-17 08:47:51 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/191216</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263333</attachid>
            <date>2015-10-16 14:46:34 -0700</date>
            <delta_ts>2015-10-16 15:02:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150256-20151016144555.patch</filename>
            <type>text/plain</type>
            <size>38768</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1YmY2OWQ2NTc2MGE2
Y2QzZDUwZWE2OThlOTM1ODNlMTFjYTlmMi4uYjc5OTRhM2E5MjIxOGIzM2NlZTkzZmU3ZDA4MTRi
NTg5ZDYyYTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE1LTEwLTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVGV4dFN0
cmVhbSB0aGUgY2Fub25pY2FsIHdheSB0byBsb2cgY2xhc3NlcyBpbiBXZWJDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAyNTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB2YWNpbGxhdGVkIGJl
dHdlZW4gUHJpbnRTdHJlYW0gYW5kIFRleHRTdHJlYW0gYXMgYmVpbmcgdGhlIGNhbm9uaWNhbCB3
YXkKKyAgICAgICAgdG8gc3RyaW5naWZ5IFdlYkNvcmUgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlzIHBh
dGNoIHNvbGlkaWZpZXMgVGV4dFN0cmVhbQorICAgICAgICBhcyB0aGUgc29sdXRpb24sIHNpbmNl
IGl0IGhhcyBjb252ZW5pZW50IHN0cmVhbSBzeW50YXgsIGFuZCBpcyB3aGF0IHdlCisgICAgICAg
IHVzZSBmb3IgcmVuZGVyIHRyZWUgZHVtcHMuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgVGV4
dFN0cmVhbSBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgb3V0cHV0IG5vbi1zaW1wbGUgc3RydWN0cwor
ICAgICAgICAoc2l6ZXMsIHBvaW50cyBhbmQgcmVjdHMpLCByZXBsYWNpbmcgdGhlbSB3aXRoIGZy
ZWUgb3BlcmF0b3I8PCBmdW5jdGlvbnMKKyAgICAgICAgaW4gdGhlIC5jcHAgZmlsZSBmb3IgdGhl
IHJlbGV2YW50IGNsYXNzLiBGb3JtYXR0aW5nIGlzIGN1cnJlbnRseSBjb25zaXN0ZW50CisgICAg
ICAgIHdpdGggUmVuZGVyVHJlZUFzVGV4dCBvdXRwdXQsIHRvIGF2b2lkIGJyZWFraW5nIHRlc3Rz
LgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlIGN1c3RvbSBGbG9hdFJlY3Qgb3V0cHV0dGluZyBp
biBTVkcgYW5kIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50OjpkdW1wKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSZWN0OjpkdW1wKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRT
aXplOjpGbG9hdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdFNpemU6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBv
aW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50UG9pbnQ6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFBvaW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6
OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6SW50U2l6ZTo6ZHVtcCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5
b3V0U2l6ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBE
ZWxldGVkLgorCiAyMDE1LTEwLTE1ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIENTUyAndW5zZXQnIGtleXdvcmQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZTQwZjlkODhiZjdhZGFlMzgzZWE4M2IzMTBhYjMwYzRjYzRhYjllNi4uMmVjZTFhZDJl
YjE5OTNmY2JhZmEzYWE4NzZkNDQ5ZTJjMGZiYWRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDE1LTEwLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgVGV4dFN0cmVhbSB0aGUgY2Fub25pY2FsIHdheSB0byBsb2cgY2xhc3Nl
cyBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAyNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFdlIHZhY2lsbGF0ZWQgYmV0d2VlbiBQcmludFN0cmVhbSBhbmQgVGV4dFN0
cmVhbSBhcyBiZWluZyB0aGUgY2Fub25pY2FsIHdheQorICAgICAgICB0byBzdHJpbmdpZnkgV2Vi
Q29yZSBkYXRhIHN0cnVjdHVyZXMuIFRoaXMgcGF0Y2ggc29saWRpZmllcyBUZXh0U3RyZWFtCisg
ICAgICAgIGFzIHRoZSBzb2x1dGlvbiwgc2luY2UgaXQgaGFzIGNvbnZlbmllbnQgc3RyZWFtIHN5
bnRheCwgYW5kIGlzIHdoYXQgd2UKKyAgICAgICAgdXNlIGZvciByZW5kZXIgdHJlZSBkdW1wcy4K
KyAgICAgICAgCisgICAgICAgIFJlbW92ZSBUZXh0U3RyZWFtIG1lbWJlciBmdW5jdGlvbnMgdGhh
dCBvdXRwdXQgbm9uLXNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIChzaXplcywgcG9pbnRzIGFuZCBy
ZWN0cyksIHJlcGxhY2luZyB0aGVtIHdpdGggZnJlZSBvcGVyYXRvcjw8IGZ1bmN0aW9ucworICAg
ICAgICBpbiB0aGUgLmNwcCBmaWxlIGZvciB0aGUgcmVsZXZhbnQgY2xhc3MuIEZvcm1hdHRpbmcg
aXMgY3VycmVudGx5IGNvbnNpc3RlbnQKKyAgICAgICAgd2l0aCBSZW5kZXJUcmVlQXNUZXh0IG91
dHB1dCwgdG8gYXZvaWQgYnJlYWtpbmcgdGVzdHMuCisgICAgICAgIAorICAgICAgICBSZW1vdmUg
Y3VzdG9tIEZsb2F0UmVjdCBvdXRwdXR0aW5nIGluIFNWRyBhbmQgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uCisKKyAgICAgICAgKiBTaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6IERlbGV0ZWQuCisKIDIwMTUtMTAt
MTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBN
aWdyYXRlIHRvIENHQ29udGV4dFNldEJhc2VDVE0oKSBhbmQgQ0dDb250ZXh0UmVzZXRDbGlwKCkg
ZnJvbSBXS1NJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdkYjM1YWU3N2I2OTE1OTVkNDExYTBm
YTczOWQ5NGVkMWU4ZmExMjMuLjZkNzM2ZDQ4NjdlNWNjNjAzZDljOThkOGI0NjFkMjMyZGRlMGQ4
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjE0LDcgKzIyMTQsOSBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0xheW91dFJlY3QuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhY2M0YmRiOWZhNDMxMTE4ZjgyMmY0NDY3MmQyYWJhOWNmZTZmMjc0
Li4wNTdlMTQzMjZkZWJjYzFlNDZmNTFiMDcyMDE0MzM2ZGU5YmY2OWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODAsNiAr
NDgwLDEwIEBACiAJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUVENUEx
QjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNzc0ODAxMzc4Qjc3MjAwOURBNzZBIC8q
IFNjcm9sbEFuaW1hdG9ySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjE3NzQ3RTEzNzhCNzcxMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1Mu
aCAqLzsgfTsKIAkJMEYxNzc0ODExMzc4Qjc3MjAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNzc0
N0YxMzc4Qjc3MjAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9TLm1tICovOyB9OworCQkwRjM2
RTczNDFCRDA3Q0Q3MDAyREI4OTEgLyogTG9nZ2luZ1RleHRTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNkU3MzIxQkQwN0NENzAwMkRC
ODkxIC8qIExvZ2dpbmdUZXh0U3RyZWFtLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9
ICgpOyB9OyB9OworCQkwRjM2RTczNTFCRDA3Q0Q3MDAyREI4OTEgLyogTG9nZ2luZ1RleHRTdHJl
YW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzZF
NzMzMUJEMDdDRDcwMDJEQjg5MSAvKiBMb2dnaW5nVGV4dFN0cmVhbS5oICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTBGMzZFNzM3MUJEMTgzN0EwMDJEQjg5MSAvKiBM
YXlvdXRQb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjM2RTczNjFCRDE4MzdBMDAyREI4OTEgLyogTGF5b3V0UG9pbnQuY3BwICovOyBzZXR0
aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTBGMzZFNzM5MUJEMTg0QjkwMDJEQjg5
MSAvKiBMYXlvdXRTaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzZFNzM4MUJEMTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNwcCAqLzsg
c2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQkwRjNDNzI1RTE5NzQ4NzRCMDBB
RUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzQzcyNUQxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNw
cCAqLzsgfTsKIAkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzREQ0NEQxMkY1
RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICovOyB9OwogCQkwRjNERDQ1MDEyRjVFQTFC
MDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAq
LzsgfTsKQEAgLTc3MTEsNiArNzcxNSwxMCBAQAogCQkwRjE1RUQ1QTFCN0VDN0M1MDBFRERGRUIg
LyogV2lsbENoYW5nZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ls
bENoYW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNzc0N0UxMzc4
Qjc3MTAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMTc3NDdGMTM3OEI3NzIwMDlEQTc2QSAvKiBTY3JvbGxBbmltYXRvcklPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9ySU9T
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjM2RTczMjFCRDA3Q0Q3MDAyREI4
OTEgLyogTG9nZ2luZ1RleHRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTG9nZ2luZ1RleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjM2RTczMzFCRDA3Q0Q3MDAyREI4OTEgLyogTG9nZ2luZ1RleHRTdHJlYW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZ1RleHRTdHJlYW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzNkU3MzYxQkQxODM3QTAwMkRCODkxIC8qIExheW91
dFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFBv
aW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzNkU3MzgxQkQxODRCOTAw
MkRCODkxIC8qIExheW91dFNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGF5b3V0U2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0M3
MjVEMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFnZVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd0JsdXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93
Qmx1ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dCbHVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQzNSw5ICsyMTQ0MywxMSBAQAogCQkJCTA3
QUM0NkZGMTk1MjEwMjEwMEVFOTcyMyAvKiBJU09WVFRDdWUuY3BwICovLAogCQkJCTA3QUM0NzAw
MTk1MjEwMjEwMEVFOTcyMyAvKiBJU09WVFRDdWUuaCAqLywKIAkJCQk2NUNDNkJFRDE2MDE0RUMw
MDAwRUQyN0QgLyogTGF0aW4xVGV4dEl0ZXJhdG9yLmggKi8sCisJCQkJMEYzNkU3MzYxQkQxODM3
QTAwMkRCODkxIC8qIExheW91dFBvaW50LmNwcCAqLywKIAkJCQkxNDFEQzA0QjE2NDgzNEI5MDAz
NzFFNUEgLyogTGF5b3V0UG9pbnQuaCAqLywKIAkJCQkxNDFEQzA0QzE2NDgzNEI5MDAzNzFFNUEg
LyogTGF5b3V0UmVjdC5jcHAgKi8sCiAJCQkJMTQxREMwNEQxNjQ4MzRCOTAwMzcxRTVBIC8qIExh
eW91dFJlY3QuaCAqLywKKwkJCQkwRjM2RTczODFCRDE4NEI5MDAyREI4OTEgLyogTGF5b3V0U2l6
ZS5jcHAgKi8sCiAJCQkJMTQxREMwNEUxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCAq
LywKIAkJCQkwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5o
ICovLAogCQkJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q2xpZW50LmggKi8sCkBAIC0yMjM0MCw2ICsyMjM1MCw4IEBACiAJCQkJOTM1MjA3QkQwOUJENDEw
QTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLywKIAkJCQlBODIzOURGRTA5QjNDRjhB
MDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJQTgyMzlERkYwOUIzQ0Y4QTAwQjYwNjQx
IC8qIExvZ2dpbmcuaCAqLywKKwkJCQkwRjM2RTczMjFCRDA3Q0Q3MDAyREI4OTEgLyogTG9nZ2lu
Z1RleHRTdHJlYW0uY3BwICovLAorCQkJCTBGMzZFNzMzMUJEMDdDRDcwMDJEQjg5MSAvKiBMb2dn
aW5nVGV4dFN0cmVhbS5oICovLAogCQkJCUNERjJCMDAzMTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRp
YURlc2NyaXB0aW9uLmggKi8sCiAJCQkJQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlh
U2FtcGxlLmggKi8sCiAJCQkJNjU3RURBMDYxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNz
dXJlSGFuZGxlci5jcHAgKi8sCkBAIC0yNDM5OCw2ICsyNDQxMCw3IEBACiAJCQkJRkQzMTYwQkQx
MkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZEMzE2MDA4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODAxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2Vy
bmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM2RTczNTFCRDA3Q0Q3MDAyREI4OTEgLyogTG9n
Z2luZ1RleHRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgyMTJCMDI2RjcwMEMx
QTM1OSAvKiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwODMxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q1NTk2OTIxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yOTM3OCw2ICsyOTM5MSw3IEBACiAJCQkJRTE1N0E4RTAxODE3MzMx
QzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU4
MTgxODRDNjcwMDlGODIxRCAvKiBKU0NyeXB0b0tleUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUY4MEI4RDE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGMzZFNzM5MUJEMTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxRjgwQjhBMTgzMTcyQTIwMDc4ODVDMyAvKiBKU0NyeXB0
b0tleVBhaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NTExODI4M0E1NjAw
RDg0Q0Q5IC8qIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMTI1RjgzRDE4MjQxMUU3MDBEODRDRDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjk0MjQsNiArMjk0MzgsNyBAQAogCQkJCTY1OUREQzgyMDlF
MTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdC
QThEMTA0MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNDk0RURFMEExMjNGNEMwMEZEQUZDMSAvKiBKU0RvY3VtZW50RnJhZ21lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEYzNkU3MzcxQkQxODM3QTAwMkRCODkxIC8qIExheW91dFBv
aW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMzNGMzYyMUI0QTA1MDQwMDUwMkNBRiAvKiBK
U0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxRjUw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTRG9jdW1lbnRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDMzNGMzVFMUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMwNzAzLDYgKzMwNzE4LDcgQEAKIAkJCQk5MzMwOUUxMTA5OUU2NDky
MDA1NkU1ODEgLyogU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUUxMzA5OUU2NDkyMDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTMzMDlFMTUwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVD
b250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzNkU3MzQx
QkQwN0NENzAwMkRCODkxIC8qIExvZ2dpbmdUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTdCQzZBM0UxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEV4Y2VwdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJFNkU3QTBDQzU1NkQ1MDA0QTIwNjIgLyogU1FMaXRl
QXV0aG9yaXplci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5jcHAKaW5kZXggOTViZmVhMzgxNGFlOGU1ZTIyYzMzMTky
ZjcxYWEwMzI1MjYxZDNlOC4uM2MzNjdmYjU1MWE4OGRmZmU0MzgwYjI4MWVkZDI5NzI5ZmJjYjRh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5j
cHAKQEAgLTMwLDEwICszMCwxMCBAQAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCw5ICs4MCw5IEBAIEZsb2F0UG9p
bnQgRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9uKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICBy
ZXR1cm4gRmxvYXRQb2ludChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHgpLCBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHkpKTsKIH0KIAotdm9pZCBGbG9hdFBvaW50OjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBG
bG9hdFBvaW50JiBwKQogewotICAgIG91dC5wcmludGYoIiglZiwgJWYpIiwgeCgpLCB5KCkpOwor
ICAgIHJldHVybiB0cyA8PCAiKCIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGlu
Z0ludGVnZXJzKHAueCgpKSA8PCAiLCIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVj
dGluZ0ludGVnZXJzKHAueSgpKSA8PCAiKSI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCBjNDFkOWUxZmRiYTNlZTQ2OTgwOTQy
M2M3YmJmOGI1NWI2MmJmOTAxLi4yNDYzZGZiNjNjNjVlNjE2NjFiMGEwNGFmMzhmMzRlZTFlNDZk
NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5o
CkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIFRyYW5zZm9y
bWF0aW9uTWF0cml4OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOworY2xhc3MgVGV4
dFN0cmVhbTsKIAogY2xhc3MgRmxvYXRQb2ludCB7CiBwdWJsaWM6CkBAIC0xNDgsOCArMTQ5LDYg
QEAgcHVibGljOgogICAgIEZsb2F0UG9pbnQgbWF0cml4VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBtYXRyaXhUcmFuc2Zvcm0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7CiAKLSAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0
cmVhbSYgb3V0KSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBmbG9hdCBtX3gsIG1feTsKIH07CkBA
IC0yNTksNiArMjU4LDggQEAgaW5saW5lIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChjb25zdCBG
bG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFBvaW50JiBiKQogICAgIHJldHVybiBXVEY6OmFyZUVz
c2VudGlhbGx5RXF1YWwoYS54KCksIGIueCgpKSAmJiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwo
YS55KCksIGIueSgpKTsKIH0KIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRmxvYXRQb2ludCYpOworCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKaW5kZXggNDJmZWVl
MjM2ZTBiMGI5MGMyYmJhYzU2MWE2OGFhYWY0N2QwMmMwNi4uMjU1ZWUwODJiNTM3MzUzYTNmZTVk
YmRkMDUzNTU2MWM4YzYwYjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFJlY3QuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTIyNiw5ICsyMjYsMTAgQEAgSW50UmVjdCByb3VuZGVkSW50UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIEludFJlY3Qocm91bmRlZEludFBv
aW50KHJlY3QubG9jYXRpb24oKSksIHJvdW5kZWRJbnRTaXplKHJlY3Quc2l6ZSgpKSk7CiB9CiAK
LXZvaWQgRmxvYXRSZWN0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGbG9hdFJlY3QgJnIpCiB7Ci0gICAg
b3V0LnByaW50KGxvY2F0aW9uKCksICIgIiwgc2l6ZSgpKTsKKyAgICByZXR1cm4gdHMgPDwgImF0
ICgiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhyLngoKSkg
PDwgIiwiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhyLnko
KSkKKyAgICAgICAgPDwgIikgc2l6ZSAiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycyhyLndpZHRoKCkpIDw8ICJ4IiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1i
ZXJSZXNwZWN0aW5nSW50ZWdlcnMoci5oZWlnaHQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKaW5kZXggNTVkMjYxMzI4OTViNDVlZjFm
ZTE1YmE1MTdhZjBmMTNiY2JhMWE0ZS4uMjkzNmI5MDU3ZGFkMzAyMWUzY2U5ZmY4MTU4MWQyY2I0
YWRkMTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBUZXh0U3RyZWFtOwogCiBjbGFzcyBGbG9hdFJlY3Qg
ewogcHVibGljOgpAQCAtMTgxLDggKzE4Miw2IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBjYWly
b19yZWN0YW5nbGVfdCgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2b2lkIGR1bXAoV1RGOjpQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKLQogICAgIHN0YXRpYyBGbG9hdFJlY3QgaW5maW5pdGVSZWN0
KCk7CiAgICAgYm9vbCBpc0luZmluaXRlKCkgY29uc3Q7CiAKQEAgLTI1Miw2ICsyNTEsOCBAQCBX
RUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyhjb25zdCBG
bG9hdFJlY3QmLCBmbG9hdCBkZXZpYwogV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJ
bnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogV0VCQ09SRV9FWFBPUlQgSW50UmVjdCByb3VuZGVk
SW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmxvYXRSZWN0Jik7CisKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcAppbmRl
eCBlN2ViNDJkMzYyOGMxN2NiYTYxMGM1NDFiNzY3ZDA2YjE0YWE4OTY4Li41ZDY2OTA4ZDFkNWY3
OTdiMDViNDcyZGJiYTU2ZTg2ZjA3YzVkMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKQEAgLTI5LDEzICsyOSwxNSBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZsb2F0U2l6
ZTo6RmxvYXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIDogbV93aWR0aChzaXplLndpZHRoKCkp
LCBtX2hlaWdodChzaXplLmhlaWdodCgpKQorRmxvYXRTaXplOjpGbG9hdFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKKyAgICA6IG1fd2lkdGgoc2l6ZS53aWR0aCgpKQorICAgICwgbV9oZWlnaHQo
c2l6ZS5oZWlnaHQoKSkKIHsKIH0KIApAQCAtNTksOSArNjEsMTAgQEAgRmxvYXRTaXplIEZsb2F0
U2l6ZTo6bmFycm93UHJlY2lzaW9uKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKICAgICBy
ZXR1cm4gRmxvYXRTaXplKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQod2lkdGgpLCBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KGhlaWdodCkpOwogfQogCi12b2lkIEZsb2F0U2l6ZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogewotICAgIG91dC5wcmludGYoIiglZiB4ICVmKSIsIHdp
ZHRoKCksIGhlaWdodCgpKTsKKyAgICByZXR1cm4gdHMgPDwgIndpZHRoPSIgPDwgVGV4dFN0cmVh
bTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKHNpemUud2lkdGgoKSkKKyAgICAgICAg
PDwgIiBoZWlnaHQ9IiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdl
cnMoc2l6ZS5oZWlnaHQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKaW5kZXggZjI4ZmQ2YjNhZDI5OGUwZjA5NjFkYzU0NjkyMmQwZDVj
NGNjNDcxZS4uNTIxM2M5YWFjZTM1NmE1ZmYxZTgzNTZhNGU1YTIzYjJjNDExM2M0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTUwLDYgKzUw
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TU2l6ZSBOU1NpemU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEludFNpemU7CitjbGFzcyBUZXh0U3RyZWFtOwogCiBjbGFzcyBGbG9hdFNpemUg
ewogcHVibGljOgpAQCAtMTE4LDEwICsxMTksOSBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgTlNT
aXplKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJiBv
dXQpIGNvbnN0OwotCiBwcml2YXRlOgotICAgIGZsb2F0IG1fd2lkdGgsIG1faGVpZ2h0OworICAg
IGZsb2F0IG1fd2lkdGg7CisgICAgZmxvYXQgbV9oZWlnaHQ7CiB9OwogCiBpbmxpbmUgRmxvYXRT
aXplJiBvcGVyYXRvcis9KEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQpAQCAtMjA4
LDYgKzIwOCw4IEBAIGlubGluZSBJbnRQb2ludCBmbG9vcmVkSW50UG9pbnQoY29uc3QgRmxvYXRT
aXplJiBwKQogICAgIHJldHVybiBJbnRQb2ludChjbGFtcFRvSW50ZWdlcihmbG9vcmYocC53aWR0
aCgpKSksIGNsYW1wVG9JbnRlZ2VyKGZsb29yZihwLmhlaWdodCgpKSkpOwogfQogCitXRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGbG9hdFNp
emUmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRmxvYXRTaXplX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcAppbmRleCBm
YTQyMjBhZTM5MzAyZTA2OWZkMWQ2YjgwNjI4MmVkYzY5NTMwMGE3Li4yMjY0YTQyOWI4ZDQ1ZjYz
ZTg1MWVhMTcwNWM0ZGQ1ZjViY2U2Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UG9pbnQuY3BwCkBAIC0yNywxOSArMjcsMTkgQEAKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIEludFBvaW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0
LnByaW50ZigiKCVkLCAlZCkiLCB4KCksIHkoKSk7Ci19Ci0KIEludFBvaW50OjpJbnRQb2ludChj
b25zdCBGbG9hdFBvaW50JiBwKQogICAgIDogbV94KGNsYW1wVG9JbnRlZ2VyKHAueCgpKSkKICAg
ICAsIG1feShjbGFtcFRvSW50ZWdlcihwLnkoKSkpCiB7CiB9CiAKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEludFBvaW50JiBwKQoreworICAgIHJldHVybiB0
cyA8PCAiKCIgPDwgcC54KCkgPDwgIiwiIDw8IHAueSgpIDw8ICIpIjsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKaW5kZXggZTNlYzhhMmQxNGZk
ODI4NzE1ZDY4YTk0MTIyOTA1NjRlNjljMzdlMC4uYTJiYzMzMWM0ODhkOTUzNmQ2YjM4NTA2NzU0
ZTA4NjI1ZGU2YmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludC5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYgc3RydWN0IHRhZ1BPSU5UUyBQT0lOVFM7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBUZXh0U3Ry
ZWFtOwogCiBjbGFzcyBJbnRQb2ludCB7CiBwdWJsaWM6CkBAIC0xMjcsOCArMTI4LDYgQEAgcHVi
bGljOgogICAgIG9wZXJhdG9yIEV2YXNfUG9pbnQoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9p
ZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgaW50
IG1feCwgbV95OwogfTsKQEAgLTE5MCw2ICsxODksOCBAQCBpbmxpbmUgaW50IEludFBvaW50Ojpk
aXN0YW5jZVNxdWFyZWRUb1BvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKICAgICBy
ZXR1cm4gKCgqdGhpcykgLSBwb2ludCkuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCk7CiB9CiAKK1dF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IElu
dFBvaW50Jik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEludFBvaW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKaW5kZXgg
NzhlMGQ1N2E2ODg5N2E3YmM5OGQ3ZTUzZTZmOGRkNmUwY2E0OTJjNC4uZjJlMDkyNjQwZjA5OWFh
NDAzOWJlY2U2NzE0MDU1YTg5ZGFjOWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0Niw5ICsxNDYsOSBAQCBJbnRTaXplIEludFJlY3Q6
OmRpZmZlcmVuY2VUb1BvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKICAgICByZXR1
cm4gSW50U2l6ZSh4ZGlzdGFuY2UsIHlkaXN0YW5jZSk7CiB9CiAKLXZvaWQgSW50UmVjdDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBvdXQucHJpbnQobG9jYXRpb24oKSwg
IiAiLCBzaXplKCkpOworICAgIHJldHVybiB0cyA8PCAiYXQgKCIgPDwgci54KCkgPDwgIiwiIDw8
IHIueSgpIDw8ICIpIHNpemUgIiA8PCByLndpZHRoKCkgPDwgIngiIDw8IHIuaGVpZ2h0KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFJlY3QuaAppbmRleCBhYzU3NDlmMDQzMmMxZmRjMjg2ZTFjNWU3NDY3ZTU5NWQ4MWU3
Y2I0Li41NDM5MmFjMDExNWUwNzQ0N2VhMjY1MjE0Nzg5OTQyNmNhNTk4ZmRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCkBAIC01OSw2ICs1OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgTGF5b3V0UmVjdDsK
K2NsYXNzIFRleHRTdHJlYW07CiAKIGNsYXNzIEludFJlY3QgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtMTg1LDggKzE4Niw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBvcGVyYXRvciBOU1JlY3QoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBkdW1wKFdURjo6
UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9sb2Nh
dGlvbjsKICAgICBJbnRTaXplIG1fc2l6ZTsKQEAgLTIzNiw2ICsyMzUsOCBAQCBXRUJDT1JFX0VY
UE9SVCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgQ0dSZWN0Jik7CiBXRUJDT1JFX0VY
UE9SVCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTlNSZWN0Jik7CiAjZW5kaWYKIAor
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
SW50UmVjdCYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnRSZWN0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKaW5kZXgg
Mzg1ODkxYzAxMjNhOTNmMjcyOWViNGJkYTliNzA0ZjA4Y2M4OTMxZS4uNDE5MmQ5YTBlODgxOGFl
ZDc4YzhiZTFlZTdlNDkxNDI3YjA5NTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5jcHAKQEAgLTI3LDE5ICsyNywxOSBAQAogI2luY2x1ZGUgIkludFNp
emUuaCIKIAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIEludFNpemU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJp
bnRmKCIoJWQgeCAlZCkiLCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci19Ci0KIEludFNpemU6OkludFNp
emUoY29uc3QgRmxvYXRTaXplJiBzKQogICAgIDogbV93aWR0aChjbGFtcFRvSW50ZWdlcihzLndp
ZHRoKCkpKQogICAgICwgbV9oZWlnaHQoY2xhbXBUb0ludGVnZXIocy5oZWlnaHQoKSkpCiB7CiB9
CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEludFNpemUm
IHNpemUpCit7CisgICAgcmV0dXJuIHRzIDw8ICJ3aWR0aD0iIDw8IHNpemUud2lkdGgoKSA8PCAi
IGhlaWdodD0iIDw8IHNpemUuaGVpZ2h0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRleCAxODk1YjU5NDA0MWNiY2Y0NTZmNTA3MDUzMjRl
MDRlMGZjMzUyNmMxLi44MzJiNmZmMDI3MjE1YTY1NTdiZTA3M2NmODlkYTlkZjkzN2ViN2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCkBAIC01NSwxMyAr
NTUsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TU2l6ZSBOU1NpemU7CiB0eXBlZGVmIHN0cnVjdCB0
YWdTSVpFIFNJWkU7CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBQcmludFN0cmVh
bTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBU
ZXh0U3RyZWFtOwogCiBjbGFzcyBJbnRTaXplIHsKIHB1YmxpYzoKQEAgLTE1Niw4ICsxNTMsNiBA
QCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgU0laRSgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2b2lk
IGR1bXAoV1RGOjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBpbnQg
bV93aWR0aCwgbV9oZWlnaHQ7CiB9OwpAQCAtMjAxLDYgKzE5Niw4IEBAIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKICAgICByZXR1cm4g
YS53aWR0aCgpICE9IGIud2lkdGgoKSB8fCBhLmhlaWdodCgpICE9IGIuaGVpZ2h0KCk7CiB9CiAK
K1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IEludFNpemUmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW50U2l6
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQ
b2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2ludC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTc3MDdiNDdmZjNiNDdkMTU2MTlmYzMyODQ1NGRjNjdiMWEzZTgyZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFBvaW50LmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRQ
b2ludC5oIgorCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExheW91dFBv
aW50JiBwKQoreworICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHJpbnRlZCBhcyBmbG9h
dHMuIEtlZXBpbmcgdGhlbSBpbnRzIGZvciBjb25zaXN0ZW5jeSB3aXRoIHBlcnZpb3VzIHRlc3Qg
ZXhwZWN0YXRpb25zLgorICAgIHJldHVybiB0cyA8PCAiKCIgPDwgcC54KCkudG9JbnQoKSA8PCAi
LCIgPDwgcC55KCkudG9JbnQoKSA8PCAiKSI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2ludC5oCmluZGV4
IDI0MDg3YWQzMDgwODMyZDg1NWVmODY4N2U0Zjk5Njc1OTQ0OTdlNGMuLmUxMGQ1ODMzNDBiZGEz
Yjc4ODg4OGRiYmJjYzQyY2FlMGQ3MTM3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaApAQCAtMjEyLDYgKzIxMiw4IEBAIGlubGluZSBGbG9h
dFNpemUgc25hcFNpemVUb0RldmljZVBpeGVsKGNvbnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0
IExheW91dFBvaW50CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShzbmFwKHNpemUud2lkdGgoKSwgbG9j
YXRpb24ueCgpKSwgc25hcChzaXplLmhlaWdodCgpLCBsb2NhdGlvbi55KCkpKTsKIH0KIAorVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gTGF5b3V0UG9pbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAppbmRleCA5MWM1
MDMyYjA1MWYyMGM1YzQ5NjQ0MjIzYjBlZGIyOGVmYWZhODljLi5kYTVmN2VmYTRiM2FlNGVkMmVj
YjRlZTk4OWZmMWQyNDRjYmMyZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9MYXlvdXRSZWN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKIAorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1Myw0ICsx
NTQsMTAgQEAgRmxvYXRSZWN0IGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHMoY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCwgZmxvYXQgcGl4ZWxTbmFwcGluZ0YKICAgICByZXR1cm4gRmxvYXRSZWN0KGxv
Y2F0aW9uLCBtYXhQb2ludCAtIGxvY2F0aW9uKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGF5b3V0UmVjdCYgcikKK3sKKyAgICAvLyBGSVhNRTog
VGhlc2Ugc2hvdWxkIGJlIHByaW50ZWQgYXMgZmxvYXRzLiBLZWVwaW5nIHRoZW0gaW50cyBmb3Ig
Y29uc2lzdGVuY3kgd2l0aCBwcmV2aW91cyB0ZXN0IGV4cGVjdGF0aW9ucy4KKyAgICByZXR1cm4g
dHMgPDwgc25hcHBlZEludFJlY3Qocik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAppbmRleCBmNWMx
ZThlNDU4OGZkYjIxZmM1NGM3OGQ1ZDhmNDk4Yzk1YmUxODBlLi41YzZlZGY4NjU1NjE1MTZmOTEz
OWQ1NmJmOGNhZWUxNjZhMmYyYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5oCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgVGV4dFN0cmVhbTsKKwogY2xhc3MgTGF5b3V0UmVjdCB7CiBwdWJsaWM6CiAg
ICAgTGF5b3V0UmVjdCgpIHsgfQpAQCAtMjM1LDYgKzIzNyw4IEBAIGlubGluZSBGbG9hdFJlY3Qg
c25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKGNvbnN0IExheW91dFJl
Y3QmIHJlCiAKIEZsb2F0UmVjdCBlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKGNvbnN0IExheW91
dFJlY3QmLCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKTsKIAorVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTGF5b3V0UmVjdCYpOworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBMYXlvdXRSZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E3Y2M1YTM2MjNkZTRk
YTMzZDdiMTY5NmEyZDA4NGEzMjdlNzljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkxheW91dFNpemUuaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQoreworICAgIHJldHVybiB0cyA8PCAi
d2lkdGg9IiA8PCBzaXplLndpZHRoKCkudG9GbG9hdCgpIDw8ICIgaGVpZ2h0PSIgPDwgc2l6ZS5o
ZWlnaHQoKS50b0Zsb2F0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAppbmRleCBjZDMyOGFlNTVm
NzYxMTNhYThkNTNhMmQ1NjAyZmMwNGJmODU4NzAzLi41ZWIxZGI3NmVlYjA0NjcwZmJkNzdmZGMz
NTBkYmVlZWZjZGRjMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MYXlvdXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0U2l6ZS5oCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIExheW91dFBvaW50OworY2xhc3MgVGV4dFN0cmVhbTsKIAogZW51bSBBc3BlY3RSYXRpb0Zp
dCB7CiAgICAgQXNwZWN0UmF0aW9GaXRTaHJpbmssCkBAIC0xODgsNiArMTg5LDggQEAgaW5saW5l
IEZsb2F0U2l6ZSBmbG9vclNpemVUb0RldmljZVBpeGVscyhjb25zdCBMYXlvdXRTaXplJiBzaXpl
LCBmbG9hdCBwaXhlbFNuYXAKICAgICByZXR1cm4gRmxvYXRTaXplKGZsb29yVG9EZXZpY2VQaXhl
bChzaXplLndpZHRoKCksIHBpeGVsU25hcHBpbmdGYWN0b3IpLCBmbG9vclRvRGV2aWNlUGl4ZWwo
c2l6ZS5oZWlnaHQoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvcikpOwogfQogCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBMYXlvdXRTaXplJik7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIExheW91dFNpemVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCA4ZDg2MDlk
ZTdlMzkzMWEzZDRlMTgxOGI1ZDM2NjA4MWMyYmVkMTA4Li5lZmZiZDcxNjRhMzJmYjZmNmU1NDU4
MmEwYjJmZWY1OGM3MWNlNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTA2LDcgKzUwNiw3IEBAIEZsb2F0U2l6
ZSBNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblNpemUoKSBjb25zdAogCiB2b2lkIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91
dC5wcmludCgie1BUUygiLCBwcmVzZW50YXRpb25UaW1lKCksICIpLCBEVFMoIiwgZGVjb2RlVGlt
ZSgpLCAiKSwgZHVyYXRpb24oIiwgZHVyYXRpb24oKSwgIiksIGZsYWdzKCIsIChpbnQpZmxhZ3Mo
KSwgIiksIHByZXNlbnRhdGlvblNpemUoIiwgcHJlc2VudGF0aW9uU2l6ZSgpLCAiKX0iKTsKKyAg
ICBvdXQucHJpbnQoIntQVFMoIiwgcHJlc2VudGF0aW9uVGltZSgpLCAiKSwgRFRTKCIsIGRlY29k
ZVRpbWUoKSwgIiksIGR1cmF0aW9uKCIsIGR1cmF0aW9uKCksICIpLCBmbGFncygiLCAoaW50KWZs
YWdzKCksICIpLCBwcmVzZW50YXRpb25TaXplKCIsIHByZXNlbnRhdGlvblNpemUoKS53aWR0aCgp
LCAieCIsIHByZXNlbnRhdGlvblNpemUoKS5oZWlnaHQoKSwgIil9Iik7CiB9CiAKIHZvaWQgTWVk
aWFTYW1wbGVBVkZPYmpDOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZz
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAppbmRleCBh
MDM1MDcxNDg0ZGYxYThkY2NjZjM5YjBjZmE2OWZiNmM0MTc1YzgyLi5jZDI0ZGJjMGY4YmQ1Y2Fj
NzMzOTBmMTgxZWY3YzY2MDE0MjJiNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dFN0cmVhbS5jcHAKQEAgLTI3LDkgKzI3LDcgQEAKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5
b3V0UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgpAQCAtMTI5LDQ1ICsxMjcsMTEgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PChjb25zdCBGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMmIG51bWJlclQKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKLVRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwo
Y29uc3QgSW50UG9pbnQmIHApCi17Ci0gICAgcmV0dXJuICp0aGlzIDw8ICIoIiA8PCBwLngoKSA8
PCAiLCIgPDwgcC55KCkgPDwgIikiOwotfQotCi1UZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVy
YXRvcjw8KGNvbnN0IEludFJlY3QmIHIpCi17Ci0gICAgcmV0dXJuICp0aGlzICA8PCAiYXQgKCIg
PDwgci54KCkgPDwgIiwiIDw8IHIueSgpIDw8ICIpIHNpemUgIiA8PCByLndpZHRoKCkgPDwgIngi
IDw8IHIuaGVpZ2h0KCk7Ci19Ci0KLVRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwo
Y29uc3QgRmxvYXRQb2ludCYgcCkKLXsKLSAgICByZXR1cm4gKnRoaXMgPDwgIigiIDw8IFRleHRT
dHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhwLngoKSkKLSAgICAgICAgPDwg
IiwiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhwLnkoKSkg
PDwgIikiOwotfQotCi1UZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IEZs
b2F0U2l6ZSYgcykKLXsKLSAgICByZXR1cm4gKnRoaXMgPDwgIndpZHRoPSIgPDwgVGV4dFN0cmVh
bTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKHMud2lkdGgoKSkKLSAgICAgICAgPDwg
IiBoZWlnaHQ9IiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMo
cy5oZWlnaHQoKSk7Ci19Ci0KLVRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29u
c3QgTGF5b3V0VW5pdCYgdikKK1RleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoTGF5
b3V0VW5pdCB2KQogewogICAgIHJldHVybiAqdGhpcyA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1i
ZXJSZXNwZWN0aW5nSW50ZWdlcnModi50b0Zsb2F0KCkpOwogfQogCi1UZXh0U3RyZWFtJiBUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IExheW91dFBvaW50JiBwKQotewotICAgIC8vIEZJWE1F
OiBUaGVzZSBzaG91bGQgYmUgcHJpbnRlZCBhcyBmbG9hdHMuIEtlZXBpbmcgdGhlbSBpbnRzIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIHBlcnZpb3VzIHRlc3QgZXhwZWN0YXRpb25zLgotICAgIHJldHVy
biAqdGhpcyA8PCAiKCIgPDwgcC54KCkudG9JbnQoKSA8PCAiLCIgPDwgcC55KCkudG9JbnQoKSA8
PCAiKSI7Ci19Ci0KLVRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgTGF5
b3V0UmVjdCYgcikKLXsKLSAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHByaW50ZWQgYXMg
ZmxvYXRzLiBLZWVwaW5nIHRoZW0gaW50cyBmb3IgY29uc2lzdGVuY3kgd2l0aCBwcmV2aW91cyB0
ZXN0IGV4cGVjdGF0aW9ucy4KLSAgICByZXR1cm4gKnRoaXMgPDwgc25hcHBlZEludFJlY3Qocik7
Ci19Ci0KIFN0cmluZyBUZXh0U3RyZWFtOjpyZWxlYXNlKCkKIHsKICAgICBTdHJpbmcgcmVzdWx0
ID0gbV90ZXh0LnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0
cmVhbS5oCmluZGV4IDhmZWMxMTQxMTExMDI0ZjE1NmMwZTFmZDJlODY1NzA2MWVmZTMyOWYuLmE1
MzQ1NTY3NzQ1ZTIzZjk1MThkMDlhZjhlMTRmOGRlZTlkNzk0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oCkBAIC0zMSwxMCArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEludFBvaW50OwotY2xhc3MgSW50UmVjdDsKIGNsYXNzIEZs
b2F0UG9pbnQ7Ci1jbGFzcyBGbG9hdFNpemU7CitjbGFzcyBJbnRQb2ludDsKIGNsYXNzIExheW91
dFBvaW50OwogY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIExheW91dFVuaXQ7CkBAIC02MCwxMyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChjb25zdCBTdHJpbmcmKTsKICAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZvcm1h
dE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChjb25zdCBJbnRQb2ludCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgSW50UmVjdCYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRmxvYXRQb2ludCYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBMYXlvdXRVbml0Jik7Ci0gICAgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoY29uc3QgTGF5b3V0UmVjdCYpOworICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoTGF5b3V0
VW5pdCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgogICAgIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoY29uc3QgVmVjdG9yPEl0ZW0+JiB2ZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA1NmMwMzc1
ODAzNmZiOWJmM2JlMmI3MTFjODQwODliNjUzODY4ZTU4Li4xY2I2OTU3NDY2YjUyMGYzZTA0MjZj
NGIyMjBhODE3NzA2NTI0ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTExOCwxNSArMTE4LDYgQEAgc3RhdGlj
IHZvaWQgd3JpdGVJZk5vdERlZmF1bHQoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IGNoYXIqIG5hbWUs
IFZhbHVlVHlwZSB2YWx1ZSwKICAgICAgICAgd3JpdGVOYW1lVmFsdWVQYWlyKHRzLCBuYW1lLCB2
YWx1ZSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEZsb2F0UmVjdCYgcikKLXsKLSAgICB0cyA8PCAiYXQgKCIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0
TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKHIueCgpKTsKLSAgICB0cyA8PCAiLCIgPDwgVGV4dFN0
cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKHIueSgpKTsKLSAgICB0cyA8PCAi
KSBzaXplICIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKHIu
d2lkdGgoKSk7Ci0gICAgdHMgPDwgIngiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycyhyLmhlaWdodCgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtKQogewogICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggZjE2YmYxMWU2ZjM4NDM1
OGU3NGY0ZTA5ODMwNGQ5ZjQ4OTE2OTJjMC4uNWFiNWM2NGE3YWQ5NmFlYzg5ODM0MDNiOGYyZDU2
ODQyMmMxMDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwCkBAIC00NjMsNyArNDYzLDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBS
ZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChGbG9hdFJlY3QpOwogICAg
IFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFNjcm9sbGluZ05vZGVU
eXBlKTsKIAogICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNv
bnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJik7CkBAIC01MDYsMTMgKzUwNSw2
IEBAIHN0YXRpYyB2b2lkIGR1bXBQcm9wZXJ0eShSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVh
bSYgdHMsIFN0cmluZyBuYW1lLCBUIHZhbHVlCiAgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKIH0K
IAotUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0mIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KEZsb2F0UmVjdCByZWN0KQotewotICAgIFJlbW90ZVNjcm9sbGlu
Z1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotICAgIHRzIDw8IHJlY3QueCgpIDw8ICIgIiA8
PCByZWN0LnkoKSA8PCAiICIgPDwgcmVjdC53aWR0aCgpIDw8ICIgIiA8PCByZWN0LmhlaWdodCgp
OwotICAgIHJldHVybiB0czsKLX0KLQogUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0mIFJl
bW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KFNjcm9sbGluZ05vZGVUeXBl
IG5vZGVUeXBlKQogewogICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0
aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggOGZmNGE2MjZjNmI5NDRiZDczOGUxYTlhNWRiMjA4YmIy
NWFlNzQ2ZC4uMGE3ZmY2MDJiN2U3M2NhOWVhNzA4OGRmNWI1OTEyMGZhZDVlMTgxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCkBAIC02NjIsNyArNjYyLDYgQEAgcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJl
ZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwogICAgIFJl
bW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoRmxvYXRQb2ludDNEKTsKICAgICBS
ZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KENvbG9yKTsKLSAgICBSZW1vdGVM
YXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KEZsb2F0UmVjdCk7CiAgICAgUmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBWZWN0b3I8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiYpOwogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoY29uc3QgRmlsdGVyT3BlcmF0aW9uJik7CiAgICAgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CkBAIC0x
MDU5LDEzICsxMDU4LDYgQEAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChDb2xvciBjb2xvcikKICAgICByZXR1cm4gdHM7CiB9
CiAKLVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06
Om9wZXJhdG9yPDwoRmxvYXRSZWN0IHJlY3QpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0
cmVhbSYgdHMgPSAqdGhpczsKLSAgICB0cyA8PCByZWN0LngoKSA8PCAiICIgPDwgcmVjdC55KCkg
PDwgIiAiIDw8IHJlY3Qud2lkdGgoKSA8PCAiICIgPDwgcmVjdC5oZWlnaHQoKTsKLSAgICByZXR1
cm4gdHM7Ci19Ci0KIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRl
eHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRD4mIGxheWVycykKIHsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9
ICp0aGlzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263336</attachid>
            <date>2015-10-16 15:02:28 -0700</date>
            <delta_ts>2015-10-17 08:48:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150256-20151016150149.patch</filename>
            <type>text/plain</type>
            <size>36504</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1YmY2OWQ2NTc2MGE2
Y2QzZDUwZWE2OThlOTM1ODNlMTFjYTlmMi4uYjc5OTRhM2E5MjIxOGIzM2NlZTkzZmU3ZDA4MTRi
NTg5ZDYyYTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE1LTEwLTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVGV4dFN0
cmVhbSB0aGUgY2Fub25pY2FsIHdheSB0byBsb2cgY2xhc3NlcyBpbiBXZWJDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAyNTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB2YWNpbGxhdGVkIGJl
dHdlZW4gUHJpbnRTdHJlYW0gYW5kIFRleHRTdHJlYW0gYXMgYmVpbmcgdGhlIGNhbm9uaWNhbCB3
YXkKKyAgICAgICAgdG8gc3RyaW5naWZ5IFdlYkNvcmUgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlzIHBh
dGNoIHNvbGlkaWZpZXMgVGV4dFN0cmVhbQorICAgICAgICBhcyB0aGUgc29sdXRpb24sIHNpbmNl
IGl0IGhhcyBjb252ZW5pZW50IHN0cmVhbSBzeW50YXgsIGFuZCBpcyB3aGF0IHdlCisgICAgICAg
IHVzZSBmb3IgcmVuZGVyIHRyZWUgZHVtcHMuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgVGV4
dFN0cmVhbSBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgb3V0cHV0IG5vbi1zaW1wbGUgc3RydWN0cwor
ICAgICAgICAoc2l6ZXMsIHBvaW50cyBhbmQgcmVjdHMpLCByZXBsYWNpbmcgdGhlbSB3aXRoIGZy
ZWUgb3BlcmF0b3I8PCBmdW5jdGlvbnMKKyAgICAgICAgaW4gdGhlIC5jcHAgZmlsZSBmb3IgdGhl
IHJlbGV2YW50IGNsYXNzLiBGb3JtYXR0aW5nIGlzIGN1cnJlbnRseSBjb25zaXN0ZW50CisgICAg
ICAgIHdpdGggUmVuZGVyVHJlZUFzVGV4dCBvdXRwdXQsIHRvIGF2b2lkIGJyZWFraW5nIHRlc3Rz
LgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlIGN1c3RvbSBGbG9hdFJlY3Qgb3V0cHV0dGluZyBp
biBTVkcgYW5kIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50OjpkdW1wKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSZWN0OjpkdW1wKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRT
aXplOjpGbG9hdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdFNpemU6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBv
aW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50UG9pbnQ6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFBvaW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6
OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6SW50U2l6ZTo6ZHVtcCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5
b3V0U2l6ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBE
ZWxldGVkLgorCiAyMDE1LTEwLTE1ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIENTUyAndW5zZXQnIGtleXdvcmQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZTQwZjlkODhiZjdhZGFlMzgzZWE4M2IzMTBhYjMwYzRjYzRhYjllNi4uMmVjZTFhZDJl
YjE5OTNmY2JhZmEzYWE4NzZkNDQ5ZTJjMGZiYWRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDE1LTEwLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgVGV4dFN0cmVhbSB0aGUgY2Fub25pY2FsIHdheSB0byBsb2cgY2xhc3Nl
cyBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAyNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFdlIHZhY2lsbGF0ZWQgYmV0d2VlbiBQcmludFN0cmVhbSBhbmQgVGV4dFN0
cmVhbSBhcyBiZWluZyB0aGUgY2Fub25pY2FsIHdheQorICAgICAgICB0byBzdHJpbmdpZnkgV2Vi
Q29yZSBkYXRhIHN0cnVjdHVyZXMuIFRoaXMgcGF0Y2ggc29saWRpZmllcyBUZXh0U3RyZWFtCisg
ICAgICAgIGFzIHRoZSBzb2x1dGlvbiwgc2luY2UgaXQgaGFzIGNvbnZlbmllbnQgc3RyZWFtIHN5
bnRheCwgYW5kIGlzIHdoYXQgd2UKKyAgICAgICAgdXNlIGZvciByZW5kZXIgdHJlZSBkdW1wcy4K
KyAgICAgICAgCisgICAgICAgIFJlbW92ZSBUZXh0U3RyZWFtIG1lbWJlciBmdW5jdGlvbnMgdGhh
dCBvdXRwdXQgbm9uLXNpbXBsZSBzdHJ1Y3RzCisgICAgICAgIChzaXplcywgcG9pbnRzIGFuZCBy
ZWN0cyksIHJlcGxhY2luZyB0aGVtIHdpdGggZnJlZSBvcGVyYXRvcjw8IGZ1bmN0aW9ucworICAg
ICAgICBpbiB0aGUgLmNwcCBmaWxlIGZvciB0aGUgcmVsZXZhbnQgY2xhc3MuIEZvcm1hdHRpbmcg
aXMgY3VycmVudGx5IGNvbnNpc3RlbnQKKyAgICAgICAgd2l0aCBSZW5kZXJUcmVlQXNUZXh0IG91
dHB1dCwgdG8gYXZvaWQgYnJlYWtpbmcgdGVzdHMuCisgICAgICAgIAorICAgICAgICBSZW1vdmUg
Y3VzdG9tIEZsb2F0UmVjdCBvdXRwdXR0aW5nIGluIFNWRyBhbmQgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uCisKKyAgICAgICAgKiBTaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6IERlbGV0ZWQuCisKIDIwMTUtMTAt
MTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBN
aWdyYXRlIHRvIENHQ29udGV4dFNldEJhc2VDVE0oKSBhbmQgQ0dDb250ZXh0UmVzZXRDbGlwKCkg
ZnJvbSBXS1NJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdkYjM1YWU3N2I2OTE1OTVkNDExYTBm
YTczOWQ5NGVkMWU4ZmExMjMuLjZkNzM2ZDQ4NjdlNWNjNjAzZDljOThkOGI0NjFkMjMyZGRlMGQ4
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjE0LDcgKzIyMTQsOSBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0xheW91dFJlY3QuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhY2M0YmRiOWZhNDMxMTE4ZjgyMmY0NDY3MmQyYWJhOWNmZTZmMjc0
Li41NWZlYmQzM2VlNDFkYjAzNzIxNTQ3MjAwOGZkMjc3ZGIwZTkzOGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODAsNiAr
NDgwLDggQEAKIAkJMEYxNUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RUQ1QTFC
N0VDN0M1MDBFRERGRUIgLyogV2lsbENoYW5nZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE3NzQ4MDEzNzhCNzcyMDA5REE3NkEgLyog
U2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMTc3NDdFMTM3OEI3NzEwMDlEQTc2QSAvKiBTY3JvbGxBbmltYXRvcklPUy5o
ICovOyB9OwogCQkwRjE3NzQ4MTEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE3NzQ3
RjEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gKi87IH07CisJCTBGMzZF
NzM3MUJEMTgzN0EwMDJEQjg5MSAvKiBMYXlvdXRQb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM2RTczNjFCRDE4MzdBMDAyREI4OTEgLyog
TGF5b3V0UG9pbnQuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJ
CTBGMzZFNzM5MUJEMTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzZFNzM4MUJEMTg0QjkwMDJEQjg5
MSAvKiBMYXlvdXRTaXplLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9
OwogCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQzcyNUQxOTc0ODc0QjAw
QUVERDBDIC8qIEltYWdlU291cmNlLmNwcCAqLzsgfTsKIAkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5
MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzREQ0NEQxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICov
OyB9OwogCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzREQ0NEUxMkY1RUExQjAw
MEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLzsgfTsKQEAgLTc3MTEsNiArNzcxMyw4IEBACiAJCTBG
MTVFRDVBMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXaWxsQ2hhbmdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjE3NzQ3RTEzNzhCNzcxMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JJT1MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNzc0N0YxMzc4Qjc3MjAwOURBNzZBIC8q
IFNjcm9sbEFuaW1hdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2Nyb2xsQW5pbWF0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzZFNzM2MUJEMTgzN0EwMDJEQjg5MSAvKiBMYXlvdXRQb2ludC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMzZFNzM4MUJEMTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFNpemUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNDNzI1RDE5NzQ4NzRCMDBBRUREMEMgLyog
SW1hZ2VTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1h
Z2VTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNERDQ0RDEyRjVF
QTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFkb3dCbHVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Qmx1ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjE0MzUsOSArMjE0MzksMTEgQEAKIAkJCQkwN0FDNDZGRjE5NTIxMDIxMDBFRTk3MjMg
LyogSVNPVlRUQ3VlLmNwcCAqLywKIAkJCQkwN0FDNDcwMDE5NTIxMDIxMDBFRTk3MjMgLyogSVNP
VlRUQ3VlLmggKi8sCiAJCQkJNjVDQzZCRUQxNjAxNEVDMDAwMEVEMjdEIC8qIExhdGluMVRleHRJ
dGVyYXRvci5oICovLAorCQkJCTBGMzZFNzM2MUJEMTgzN0EwMDJEQjg5MSAvKiBMYXlvdXRQb2lu
dC5jcHAgKi8sCiAJCQkJMTQxREMwNEIxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFBvaW50Lmgg
Ki8sCiAJCQkJMTQxREMwNEMxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFJlY3QuY3BwICovLAog
CQkJCTE0MURDMDREMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRSZWN0LmggKi8sCisJCQkJMEYz
NkU3MzgxQkQxODRCOTAwMkRCODkxIC8qIExheW91dFNpemUuY3BwICovLAogCQkJCTE0MURDMDRF
MTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRTaXplLmggKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2
NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXQuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2
MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oICovLApAQCAtMjkzNzgs
NiArMjkzODQsNyBAQAogCQkJCUUxNTdBOEUwMTgxNzMzMUMwMDlGODIxRCAvKiBKU0NyeXB0b0tl
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3QThFODE4MTg0QzY3MDA5RjgyMUQgLyogSlND
cnlwdG9LZXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGODBCOEQxODMxNzJCNTAw
Nzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjM2RTcz
OTFCRDE4NEI5MDAyREI4OTEgLyogTGF5b3V0U2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUY4MEI4QTE4MzE3MkEyMDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxMjVGODUxMTgyODNBNTYwMEQ4NENEOSAvKiBKU0NyeXB0b0tleVNl
cmlhbGl6YXRpb25KV0suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4M0QxODI0MTFFNzAw
RDg0Q0Q5IC8qIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
NDI0LDYgKzI5NDMxLDcgQEAKIAkJCQk2NTlEREM4MjA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3QkE4RDEwNDJGNUIxMDAwOUQ0NDcgLyog
SlNEb2N1bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTQ5NEVERTBBMTIzRjRD
MDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
MzZFNzM3MUJEMTgzN0EwMDJEQjg5MSAvKiBMYXlvdXRQb2ludC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzMzRjM2MjFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUY1MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0Rv
Y3VtZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzMzRjM1RTFCNEEwNENFMDA1MDJD
QUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwCmluZGV4IDk1YmZlYTM4
MTRhZThlNWUyMmMzMzE5MmY3MWFhMDMyNTI2MWQzZTguLjNjMzY3ZmI1NTFhODhkZmZlNDM4MGIy
ODFlZGQyOTcyOWZiY2I0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQuY3BwCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODAsOSAr
ODAsOSBAQCBGbG9hdFBvaW50IEZsb2F0UG9pbnQ6Om5hcnJvd1ByZWNpc2lvbihkb3VibGUgeCwg
ZG91YmxlIHkpCiAgICAgcmV0dXJuIEZsb2F0UG9pbnQobmFycm93UHJlY2lzaW9uVG9GbG9hdCh4
KSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5KSk7CiB9CiAKLXZvaWQgRmxvYXRQb2ludDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRmxvYXRQb2ludCYgcCkKIHsKLSAgICBvdXQucHJpbnRmKCIoJWYsICVm
KSIsIHgoKSwgeSgpKTsKKyAgICByZXR1cm4gdHMgPDwgIigiIDw8IFRleHRTdHJlYW06OkZvcm1h
dE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhwLngoKSkgPDwgIiwiIDw8IFRleHRTdHJlYW06OkZv
cm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhwLnkoKSkgPDwgIikiOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKaW5kZXggYzQxZDll
MWZkYmEzZWU0Njk4MDk0MjNjN2JiZjhiNTViNjJiZjkwMS4uMjQ2M2RmYjYzYzY1ZTYxNjYxYjBh
MDRhZjM4ZjM0ZWUxZTQ2ZDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50
U2l6ZTsKK2NsYXNzIFRleHRTdHJlYW07CiAKIGNsYXNzIEZsb2F0UG9pbnQgewogcHVibGljOgpA
QCAtMTQ4LDggKzE0OSw2IEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IG1hdHJpeFRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgbWF0
cml4VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0OwogCi0gICAgdm9pZCBk
dW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZmxvYXQg
bV94LCBtX3k7CiB9OwpAQCAtMjU5LDYgKzI1OCw4IEBAIGlubGluZSBib29sIGFyZUVzc2VudGlh
bGx5RXF1YWwoY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKICAgICBy
ZXR1cm4gV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGEueCgpLCBiLngoKSkgJiYgV1RGOjphcmVF
c3NlbnRpYWxseUVxdWFsKGEueSgpLCBiLnkoKSk7CiB9CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3Qu
Y3BwCmluZGV4IDQyZmVlZTIzNmUwYjBiOTBjMmJiYWM1NjFhNjhhYWFmNDdkMDJjMDYuLjI1NWVl
MDgyYjUzNzM1M2EzZmU1ZGJkZDA1MzU1NjFjOGM2MGI3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAK
ICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtYXRo
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMjYsOSArMjI2LDEwIEBAIEludFJl
Y3Qgcm91bmRlZEludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHJldHVybiBJbnRS
ZWN0KHJvdW5kZWRJbnRQb2ludChyZWN0LmxvY2F0aW9uKCkpLCByb3VuZGVkSW50U2l6ZShyZWN0
LnNpemUoKSkpOwogfQogCi12b2lkIEZsb2F0UmVjdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmxvYXRS
ZWN0ICZyKQogewotICAgIG91dC5wcmludChsb2NhdGlvbigpLCAiICIsIHNpemUoKSk7CisgICAg
cmV0dXJuIHRzIDw8ICJhdCAoIiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5n
SW50ZWdlcnMoci54KCkpIDw8ICIsIiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0
aW5nSW50ZWdlcnMoci55KCkpCisgICAgICAgIDw8ICIpIHNpemUgIiA8PCBUZXh0U3RyZWFtOjpG
b3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMoci53aWR0aCgpKSA8PCAieCIgPDwgVGV4dFN0
cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKHIuaGVpZ2h0KCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCmluZGV4IDU1
ZDI2MTMyODk1YjQ1ZWYxZmUxNWJhNTE3YWYwZjEzYmNiYTFhNGUuLjI5MzZiOTA1N2RhZDMwMjFl
M2NlOWZmODE1ODFkMmNiNGFkZDE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UmVjdC5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFBvaW50OworY2xhc3MgVGV4dFN0cmVhbTsKIAog
Y2xhc3MgRmxvYXRSZWN0IHsKIHB1YmxpYzoKQEAgLTE4MSw4ICsxODIsNiBAQCBwdWJsaWM6CiAg
ICAgb3BlcmF0b3IgY2Fpcm9fcmVjdGFuZ2xlX3QoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9p
ZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KICAgICBzdGF0aWMgRmxvYXRS
ZWN0IGluZmluaXRlUmVjdCgpOwogICAgIGJvb2wgaXNJbmZpbml0ZSgpIGNvbnN0OwogCkBAIC0y
NTIsNiArMjUxLDggQEAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGVuY2xvc2VSZWN0VG9EZXZp
Y2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgZGV2aWMKIFdFQkNPUkVfRVhQT1JUIElu
dFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIFdFQkNPUkVfRVhQT1JU
IEludFJlY3Qgcm91bmRlZEludFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKK1dFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0UmVjdCYp
OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5jcHAKaW5kZXggZTdlYjQyZDM2MjhjMTdjYmE2MTBjNTQxYjc2N2QwNmIxNGFhODk2
OC4uNWQ2NjkwOGQxZDVmNzk3YjA1YjQ3MmRiYmE1NmU4NmYwN2M1ZDFkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwCkBAIC0yOSwxMyArMjks
MTUgQEAKIAogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUg
PG1hdGguaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1GbG9hdFNpemU6OkZsb2F0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSA6IG1fd2lk
dGgoc2l6ZS53aWR0aCgpKSwgbV9oZWlnaHQoc2l6ZS5oZWlnaHQoKSkKK0Zsb2F0U2l6ZTo6Rmxv
YXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCisgICAgOiBtX3dpZHRoKHNpemUud2lkdGgoKSkK
KyAgICAsIG1faGVpZ2h0KHNpemUuaGVpZ2h0KCkpCiB7CiB9CiAKQEAgLTU5LDkgKzYxLDEwIEBA
IEZsb2F0U2l6ZSBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihkb3VibGUgd2lkdGgsIGRvdWJs
ZSBoZWlnaHQpCiAgICAgcmV0dXJuIEZsb2F0U2l6ZShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHdp
ZHRoKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChoZWlnaHQpKTsKIH0KIAotdm9pZCBGbG9hdFNp
emU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBvdXQucHJpbnRm
KCIoJWYgeCAlZikiLCB3aWR0aCgpLCBoZWlnaHQoKSk7CisgICAgcmV0dXJuIHRzIDw8ICJ3aWR0
aD0iIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhzaXplLndp
ZHRoKCkpCisgICAgICAgIDw8ICIgaGVpZ2h0PSIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVy
UmVzcGVjdGluZ0ludGVnZXJzKHNpemUuaGVpZ2h0KCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCmluZGV4IGYyOGZkNmIzYWQyOThlMGYw
OTYxZGM1NDY5MjJkMGQ1YzRjYzQ3MWUuLjUyMTNjOWFhY2UzNTZhNWZmMWU4MzU2YTRlNWEyM2Iy
YzQxMTNjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6
ZS5oCkBAIC01MCw2ICs1MCw3IEBAIHR5cGVkZWYgc3RydWN0IF9OU1NpemUgTlNTaXplOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOworY2xhc3MgVGV4dFN0cmVhbTsKIAog
Y2xhc3MgRmxvYXRTaXplIHsKIHB1YmxpYzoKQEAgLTExOCwxMCArMTE5LDkgQEAgcHVibGljOgog
ICAgIG9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2b2lkIGR1bXAoV1RG
OjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQogcHJpdmF0ZToKLSAgICBmbG9hdCBtX3dpZHRo
LCBtX2hlaWdodDsKKyAgICBmbG9hdCBtX3dpZHRoOworICAgIGZsb2F0IG1faGVpZ2h0OwogfTsK
IAogaW5saW5lIEZsb2F0U2l6ZSYgb3BlcmF0b3IrPShGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0
U2l6ZSYgYikKQEAgLTIwOCw2ICsyMDgsOCBAQCBpbmxpbmUgSW50UG9pbnQgZmxvb3JlZEludFBv
aW50KGNvbnN0IEZsb2F0U2l6ZSYgcCkKICAgICByZXR1cm4gSW50UG9pbnQoY2xhbXBUb0ludGVn
ZXIoZmxvb3JmKHAud2lkdGgoKSkpLCBjbGFtcFRvSW50ZWdlcihmbG9vcmYocC5oZWlnaHQoKSkp
KTsKIH0KIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgRmxvYXRTaXplJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEZsb2F0U2l6ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludC5jcHAKaW5kZXggZmE0MjIwYWUzOTMwMmUwNjlmZDFkNmI4MDYyODJlZGM2OTUzMDBhNy4u
MjI2NGE0MjliOGQ0NWY2M2U4NTFlYTE3MDVjNGRkNWY1YmNlNjM5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApAQCAtMjcsMTkgKzI3LDE5IEBA
CiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJbnRQb2ludDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAotewotICAgIG91dC5wcmludGYoIiglZCwgJWQpIiwgeCgpLCB5KCkpOwotfQotCiBJbnRQ
b2ludDo6SW50UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCkKICAgICA6IG1feChjbGFtcFRvSW50
ZWdlcihwLngoKSkpCiAgICAgLCBtX3koY2xhbXBUb0ludGVnZXIocC55KCkpKQogewogfQogCitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJbnRQb2ludCYgcCkK
K3sKKyAgICByZXR1cm4gdHMgPDwgIigiIDw8IHAueCgpIDw8ICIsIiA8PCBwLnkoKSA8PCAiKSI7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCmlu
ZGV4IGUzZWM4YTJkMTRmZDgyODcxNWQ2OGE5NDEyMjkwNTY0ZTY5YzM3ZTAuLmEyYmMzMzFjNDg4
ZDk1MzZkNmIzODUwNjc1NGUwODYyNWRlNmJmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UG9pbnQuaApAQCAtNTYsNiArNTYsNyBAQCB0eXBlZGVmIHN0cnVjdCB0
YWdQT0lOVFMgUE9JTlRTOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50
OworY2xhc3MgVGV4dFN0cmVhbTsKIAogY2xhc3MgSW50UG9pbnQgewogcHVibGljOgpAQCAtMTI3
LDggKzEyOCw2IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBFdmFzX1BvaW50KCkgY29uc3Q7CiAj
ZW5kaWYKIAotICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwotCiBw
cml2YXRlOgogICAgIGludCBtX3gsIG1feTsKIH07CkBAIC0xOTAsNiArMTg5LDggQEAgaW5saW5l
IGludCBJbnRQb2ludDo6ZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChjb25zdCBJbnRQb2ludCYgcG9p
bnQpIGNvbnN0CiAgICAgcmV0dXJuICgoKnRoaXMpIC0gcG9pbnQpLmRpYWdvbmFsTGVuZ3RoU3F1
YXJlZCgpOwogfQogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBJbnRQb2ludCYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBJbnRQb2ludF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3QuY3BwCmluZGV4IDc4ZTBkNTdhNjg4OTdhN2JjOThkN2U1M2U2ZjhkZDZlMGNhNDkyYzQu
LmYyZTA5MjY0MGYwOTlhYTQwMzliZWNlNjcxNDA1NWE4OWRhYzliOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDYsOSArMTQ2LDkgQEAg
SW50U2l6ZSBJbnRSZWN0OjpkaWZmZXJlbmNlVG9Qb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQp
IGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUoeGRpc3RhbmNlLCB5ZGlzdGFuY2UpOwogfQogCi12
b2lkIEludFJlY3Q6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgb3V0LnBy
aW50KGxvY2F0aW9uKCksICIgIiwgc2l6ZSgpKTsKKyAgICByZXR1cm4gdHMgPDwgImF0ICgiIDw8
IHIueCgpIDw8ICIsIiA8PCByLnkoKSA8PCAiKSBzaXplICIgPDwgci53aWR0aCgpIDw8ICJ4IiA8
PCByLmhlaWdodCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKaW5kZXggYWM1NzQ5ZjA0MzJjMWZkYzI4NmUx
YzVlNzQ2N2U1OTVkODFlN2NiNC4uNTQzOTJhYzAxMTVlMDc0NDdlYTI2NTIxNDc4OTk0MjZjYTU5
OGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAt
NTksNiArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKIGNs
YXNzIExheW91dFJlY3Q7CitjbGFzcyBUZXh0U3RyZWFtOwogCiBjbGFzcyBJbnRSZWN0IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE4NSw4ICsxODYsNiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNSZWN0KCkgY29uc3Q7CiAjZW5kaWYKIAotICAg
IHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IEludFBvaW50IG1fbG9jYXRpb247CiAgICAgSW50U2l6ZSBtX3NpemU7CkBAIC0yMzYsNiArMjM1
LDggQEAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IENHUmVj
dCYpOwogV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IE5TUmVj
dCYpOwogI2VuZGlmCiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEludFJlY3QmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gSW50UmVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRTaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuY3BwCmluZGV4IDM4NTg5MWMwMTIzYTkzZjI3MjllYjRiZGE5YjcwNGYwOGNjODkzMWUu
LjQxOTJkOWEwZTg4MThhZWQ3OGM4YmUxZWU3ZTQ5MTQyN2IwOTUzNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCkBAIC0yNywxOSArMjcsMTkgQEAK
ICNpbmNsdWRlICJJbnRTaXplLmgiCiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKLSNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBJbnRTaXplOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Ci17Ci0gICAgb3V0LnByaW50ZigiKCVkIHggJWQpIiwgd2lkdGgoKSwgaGVpZ2h0KCkpOwotfQot
CiBJbnRTaXplOjpJbnRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcykKICAgICA6IG1fd2lkdGgoY2xh
bXBUb0ludGVnZXIocy53aWR0aCgpKSkKICAgICAsIG1faGVpZ2h0KGNsYW1wVG9JbnRlZ2VyKHMu
aGVpZ2h0KCkpKQogewogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHJldHVybiB0cyA8PCAid2lkdGg9IiA8PCBz
aXplLndpZHRoKCkgPDwgIiBoZWlnaHQ9IiA8PCBzaXplLmhlaWdodCgpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggMTg5NWI1OTQwNDFj
YmNmNDU2ZjUwNzA1MzI0ZTA0ZTBmYzM1MjZjMS4uODMyYjZmZjAyNzIxNWE2NTU3YmUwNzNjZjg5
ZGE5ZGY5MzdlYjdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNp
emUuaApAQCAtNTUsMTMgKzU1LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9OU1NpemUgTlNTaXplOwog
dHlwZWRlZiBzdHJ1Y3QgdGFnU0laRSBTSVpFOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBXVEYgewot
Y2xhc3MgUHJpbnRTdHJlYW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxv
YXRTaXplOworY2xhc3MgVGV4dFN0cmVhbTsKIAogY2xhc3MgSW50U2l6ZSB7CiBwdWJsaWM6CkBA
IC0xNTYsOCArMTUzLDYgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIFNJWkUoKSBjb25zdDsKICNl
bmRpZgogCi0gICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KIHBy
aXZhdGU6CiAgICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0OwogfTsKQEAgLTIwMSw2ICsxOTYsOCBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUm
IGIpCiAgICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAhPSBi
LmhlaWdodCgpOwogfQogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBJbnRTaXplJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEludFNpemVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0UG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTGF5b3V0UG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NzA3YjQ3ZmYzYjQ3ZDE1NjE5ZmMzMjg0
NTRkYzY3YjFhM2U4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9MYXlvdXRQb2ludC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBMYXlvdXRQb2ludCYgcCkKK3sKKyAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJl
IHByaW50ZWQgYXMgZmxvYXRzLiBLZWVwaW5nIHRoZW0gaW50cyBmb3IgY29uc2lzdGVuY3kgd2l0
aCBwZXJ2aW91cyB0ZXN0IGV4cGVjdGF0aW9ucy4KKyAgICByZXR1cm4gdHMgPDwgIigiIDw8IHAu
eCgpLnRvSW50KCkgPDwgIiwiIDw8IHAueSgpLnRvSW50KCkgPDwgIikiOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MYXlvdXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5
b3V0UG9pbnQuaAppbmRleCAyNDA4N2FkMzA4MDgzMmQ4NTVlZjg2ODdlNGY5OTY3NTk0NDk3ZTRj
Li5lMTBkNTgzMzQwYmRhM2I3ODg4ODhkYmJiY2M0MmNhZTBkNzEzN2IzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2ludC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmgKQEAgLTIxMiw2ICsyMTIs
OCBAQCBpbmxpbmUgRmxvYXRTaXplIHNuYXBTaXplVG9EZXZpY2VQaXhlbChjb25zdCBMYXlvdXRT
aXplJiBzaXplLCBjb25zdCBMYXlvdXRQb2ludAogICAgIHJldHVybiBGbG9hdFNpemUoc25hcChz
aXplLndpZHRoKCksIGxvY2F0aW9uLngoKSksIHNuYXAoc2l6ZS5oZWlnaHQoKSwgbG9jYXRpb24u
eSgpKSk7CiB9CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IExh
eW91dFBvaW50Jik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIExheW91
dFBvaW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xh
eW91dFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVj
dC5jcHAKaW5kZXggOTFjNTAzMmIwNTFmMjBjNWM0OTY0NDIyM2IwZWRiMjhlZmFmYTg5Yy4uZGE1
ZjdlZmE0YjNhZTRlZDJlY2I0ZWU5ODlmZjFkMjQ0Y2JjMmRmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAKKyNpbmNsdWRl
ICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xNTMsNCArMTU0LDEwIEBAIEZsb2F0UmVjdCBlbmNsb3NlUmVjdFRvRGV2aWNlUGl4
ZWxzKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGCiAgICAgcmV0
dXJuIEZsb2F0UmVjdChsb2NhdGlvbiwgbWF4UG9pbnQgLSBsb2NhdGlvbik7CiB9CiAKK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExheW91dFJlY3QmIHIpCit7
CisgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwcmludGVkIGFzIGZsb2F0cy4gS2VlcGlu
ZyB0aGVtIGludHMgZm9yIGNvbnNpc3RlbmN5IHdpdGggcHJldmlvdXMgdGVzdCBleHBlY3RhdGlv
bnMuCisgICAgcmV0dXJuIHRzIDw8IHNuYXBwZWRJbnRSZWN0KHIpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9MYXlvdXRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRS
ZWN0LmgKaW5kZXggZjVjMWU4ZTQ1ODhmZGIyMWZjNTRjNzhkNWQ4ZjQ5OGM5NWJlMTgwZS4uNWM2
ZWRmODY1NTYxNTE2ZjkxMzlkNTZiZjhjYWVlMTY2YTJmMmFmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaApAQCAtMzksNiArMzksOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRleHRTdHJlYW07CisKIGNsYXNzIExheW91dFJl
Y3QgewogcHVibGljOgogICAgIExheW91dFJlY3QoKSB7IH0KQEAgLTIzNSw2ICsyMzcsOCBAQCBp
bmxpbmUgRmxvYXRSZWN0IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlv
bihjb25zdCBMYXlvdXRSZWN0JiByZQogCiBGbG9hdFJlY3QgZW5jbG9zZVJlY3RUb0RldmljZVBp
eGVscyhjb25zdCBMYXlvdXRSZWN0JiwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7CiAKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IExheW91dFJlY3QmKTsKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gTGF5b3V0UmVjdF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNhN2NjNWEzNjIzZGU0ZGEzM2Q3YjE2OTZhMmQwODRhMzI3ZTc5Y2UKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmNwcApAQCAt
MCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCisKKyNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAg
ICByZXR1cm4gdHMgPDwgIndpZHRoPSIgPDwgc2l6ZS53aWR0aCgpLnRvRmxvYXQoKSA8PCAiIGhl
aWdodD0iIDw8IHNpemUuaGVpZ2h0KCkudG9GbG9hdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgK
aW5kZXggY2QzMjhhZTU1Zjc2MTEzYWE4ZDUzYTJkNTYwMmZjMDRiZjg1ODcwMy4uNWViMWRiNzZl
ZWIwNDY3MGZiZDc3ZmRjMzUwZGJlZWVmY2RkYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBMYXlvdXRQb2ludDsKK2NsYXNzIFRleHRTdHJlYW07CiAKIGVu
dW0gQXNwZWN0UmF0aW9GaXQgewogICAgIEFzcGVjdFJhdGlvRml0U2hyaW5rLApAQCAtMTg4LDYg
KzE4OSw4IEBAIGlubGluZSBGbG9hdFNpemUgZmxvb3JTaXplVG9EZXZpY2VQaXhlbHMoY29uc3Qg
TGF5b3V0U2l6ZSYgc2l6ZSwgZmxvYXQgcGl4ZWxTbmFwCiAgICAgcmV0dXJuIEZsb2F0U2l6ZShm
bG9vclRvRGV2aWNlUGl4ZWwoc2l6ZS53aWR0aCgpLCBwaXhlbFNuYXBwaW5nRmFjdG9yKSwgZmxv
b3JUb0RldmljZVBpeGVsKHNpemUuaGVpZ2h0KCksIHBpeGVsU25hcHBpbmdGYWN0b3IpKTsKIH0K
IAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTGF5b3V0U2l6ZSYp
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBMYXlvdXRTaXplX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KaW5kZXggOGQ4NjA5ZGU3ZTM5MzFhM2Q0ZTE4MThiNWQzNjYwODFjMmJlZDEwOC4uZWZmYmQ3
MTY0YTMyZmI2ZjZlNTQ1ODJhMGIyZmVmNThjNzFjZTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTUwNiw3ICs1
MDYsNyBAQCBGbG9hdFNpemUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpb25TaXplKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKLSAgICBvdXQucHJpbnQoIntQVFMoIiwgcHJlc2VudGF0aW9uVGltZSgpLCAiKSwg
RFRTKCIsIGRlY29kZVRpbWUoKSwgIiksIGR1cmF0aW9uKCIsIGR1cmF0aW9uKCksICIpLCBmbGFn
cygiLCAoaW50KWZsYWdzKCksICIpLCBwcmVzZW50YXRpb25TaXplKCIsIHByZXNlbnRhdGlvblNp
emUoKSwgIil9Iik7CisgICAgb3V0LnByaW50KCJ7UFRTKCIsIHByZXNlbnRhdGlvblRpbWUoKSwg
IiksIERUUygiLCBkZWNvZGVUaW1lKCksICIpLCBkdXJhdGlvbigiLCBkdXJhdGlvbigpLCAiKSwg
ZmxhZ3MoIiwgKGludClmbGFncygpLCAiKSwgcHJlc2VudGF0aW9uU2l6ZSgiLCBwcmVzZW50YXRp
b25TaXplKCkud2lkdGgoKSwgIngiLCBwcmVzZW50YXRpb25TaXplKCkuaGVpZ2h0KCksICIpfSIp
OwogfQogCiB2b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0
IE1lZGlhVGltZSYgb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0
cmVhbS5jcHAKaW5kZXggYTAzNTA3MTQ4NGRmMWE4ZGNjY2YzOWIwY2ZhNjlmYjZjNDE3NWM4Mi4u
Y2QyNGRiYzBmOGJkNWNhYzczMzkwZjE4MWVmN2M2NjAxNDIyYjc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCkBAIC0yNyw5ICsyNyw3IEBACiAjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTEyOSw0NSArMTI3LDExIEBAIFRleHRTdHJlYW0m
IFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVn
ZXJzJiBudW1iZXJUCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1UZXh0U3RyZWFtJiBUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KGNvbnN0IEludFBvaW50JiBwKQotewotICAgIHJldHVybiAqdGhpcyA8
PCAiKCIgPDwgcC54KCkgPDwgIiwiIDw8IHAueSgpIDw8ICIpIjsKLX0KLQotVGV4dFN0cmVhbSYg
VGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBJbnRSZWN0JiByKQotewotICAgIHJldHVybiAq
dGhpcyAgPDwgImF0ICgiIDw8IHIueCgpIDw8ICIsIiA8PCByLnkoKSA8PCAiKSBzaXplICIgPDwg
ci53aWR0aCgpIDw8ICJ4IiA8PCByLmhlaWdodCgpOwotfQotCi1UZXh0U3RyZWFtJiBUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KGNvbnN0IEZsb2F0UG9pbnQmIHApCi17Ci0gICAgcmV0dXJuICp0aGlz
IDw8ICIoIiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMocC54
KCkpCi0gICAgICAgIDw8ICIsIiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5n
SW50ZWdlcnMocC55KCkpIDw8ICIpIjsKLX0KLQotVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PChjb25zdCBGbG9hdFNpemUmIHMpCi17Ci0gICAgcmV0dXJuICp0aGlzIDw8ICJ3aWR0
aD0iIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhzLndpZHRo
KCkpCi0gICAgICAgIDw8ICIgaGVpZ2h0PSIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVz
cGVjdGluZ0ludGVnZXJzKHMuaGVpZ2h0KCkpOwotfQotCi1UZXh0U3RyZWFtJiBUZXh0U3RyZWFt
OjpvcGVyYXRvcjw8KGNvbnN0IExheW91dFVuaXQmIHYpCitUZXh0U3RyZWFtJiBUZXh0U3RyZWFt
OjpvcGVyYXRvcjw8KExheW91dFVuaXQgdikKIHsKICAgICByZXR1cm4gKnRoaXMgPDwgVGV4dFN0
cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKHYudG9GbG9hdCgpKTsKIH0KIAot
VGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBMYXlvdXRQb2ludCYgcCkK
LXsKLSAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHByaW50ZWQgYXMgZmxvYXRzLiBLZWVw
aW5nIHRoZW0gaW50cyBmb3IgY29uc2lzdGVuY3kgd2l0aCBwZXJ2aW91cyB0ZXN0IGV4cGVjdGF0
aW9ucy4KLSAgICByZXR1cm4gKnRoaXMgPDwgIigiIDw8IHAueCgpLnRvSW50KCkgPDwgIiwiIDw8
IHAueSgpLnRvSW50KCkgPDwgIikiOwotfQotCi1UZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVy
YXRvcjw8KGNvbnN0IExheW91dFJlY3QmIHIpCi17Ci0gICAgLy8gRklYTUU6IFRoZXNlIHNob3Vs
ZCBiZSBwcmludGVkIGFzIGZsb2F0cy4gS2VlcGluZyB0aGVtIGludHMgZm9yIGNvbnNpc3RlbmN5
IHdpdGggcHJldmlvdXMgdGVzdCBleHBlY3RhdGlvbnMuCi0gICAgcmV0dXJuICp0aGlzIDw8IHNu
YXBwZWRJbnRSZWN0KHIpOwotfQotCiBTdHJpbmcgVGV4dFN0cmVhbTo6cmVsZWFzZSgpCiB7CiAg
ICAgU3RyaW5nIHJlc3VsdCA9IG1fdGV4dC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRTdHJlYW0uaAppbmRleCA4ZmVjMTE0MTExMTAyNGYxNTZjMGUxZmQyZTg2
NTcwNjFlZmUzMjlmLi5hNTM0NTU2Nzc0NWUyM2Y5NTE4ZDA5YWY4ZTE0ZjhkZWU5ZDc5NGJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaApAQCAtMzEsMTAgKzMx
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnRQb2ludDsKLWNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBGbG9hdFBvaW50OwotY2xhc3MgRmxvYXRTaXplOworY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBMYXlvdXRQb2ludDsKIGNsYXNzIExheW91dFJlY3Q7CiBjbGFzcyBMYXlvdXRV
bml0OwpAQCAtNjAsMTMgKzU4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgU3RyaW5nJik7CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChjb25zdCBGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMmKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgSW50UG9pbnQmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEludFJlY3QmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZsb2F0UG9pbnQm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZsb2F0
U2l6ZSYpOwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgTGF5b3V0VW5pdCYpOwot
ICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IExheW91dFJlY3QmKTsKKyAgICBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KExheW91dFVuaXQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KICAg
ICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxJdGVtPiYgdmVjdG9yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAKaW5kZXggNTZjMDM3NTgwMzZmYjliZjNiZTJiNzExYzg0MDg5YjY1Mzg2OGU1OC4uMWNiNjk1
NzQ2NmI1MjBmM2UwNDI2YzRiMjIwYTgxNzcwNjUyNGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0xMTgsMTUg
KzExOCw2IEBAIHN0YXRpYyB2b2lkIHdyaXRlSWZOb3REZWZhdWx0KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBjaGFyKiBuYW1lLCBWYWx1ZVR5cGUgdmFsdWUsCiAgICAgICAgIHdyaXRlTmFtZVZhbHVl
UGFpcih0cywgbmFtZSwgdmFsdWUpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGbG9hdFJlY3QmIHIpCi17Ci0gICAgdHMgPDwgImF0ICgiIDw8IFRl
eHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhyLngoKSk7Ci0gICAgdHMg
PDwgIiwiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhyLnko
KSk7Ci0gICAgdHMgPDwgIikgc2l6ZSAiIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycyhyLndpZHRoKCkpOwotICAgIHRzIDw8ICJ4IiA8PCBUZXh0U3RyZWFtOjpG
b3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMoci5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIHRz
OwotfQotCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKICAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4
IGYxNmJmMTFlNmYzODQzNThlNzRmNGUwOTgzMDRkOWY0ODkxNjkyYzAuLjVhYjVjNjRhN2FkOTZh
ZWM4OTgzNDAzYjhmMmQ1Njg0MjJjMTA3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtNDYzLDcgKzQ2Myw2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
RmxvYXRSZWN0KTsKICAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChTY3JvbGxpbmdOb2RlVHlwZSk7CiAKICAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYpOwpA
QCAtNTA2LDEzICs1MDUsNiBAQCBzdGF0aWMgdm9pZCBkdW1wUHJvcGVydHkoUmVtb3RlU2Nyb2xs
aW5nVHJlZVRleHRTdHJlYW0mIHRzLCBTdHJpbmcgbmFtZSwgVCB2YWx1ZQogICAgIHRzLmRlY3Jl
YXNlSW5kZW50KCk7CiB9CiAKLVJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiBSZW1vdGVT
Y3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChGbG9hdFJlY3QgcmVjdCkKLXsKLSAg
ICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLSAgICB0cyA8PCBy
ZWN0LngoKSA8PCAiICIgPDwgcmVjdC55KCkgPDwgIiAiIDw8IHJlY3Qud2lkdGgoKSA8PCAiICIg
PDwgcmVjdC5oZWlnaHQoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIFJlbW90ZVNjcm9sbGluZ1Ry
ZWVUZXh0U3RyZWFtJiBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChT
Y3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSkKIHsKICAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4
dFN0cmVhbSYgdHMgPSAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDhmZjRhNjI2YzZiOTQ0YmQ3
MzhlMWE5YTVkYjIwOGJiMjVhZTc0NmQuLjBhN2ZmNjAyYjdlNzNjYTllYTcwODhkZjViNTkxMjBm
YWQ1ZTE4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtNjYyLDcgKzY2Miw2IEBAIHB1YmxpYzoKICAg
ICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmKTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KEZsb2F0
UG9pbnQzRCk7CiAgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChDb2xv
cik7Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChGbG9hdFJlY3Qp
OwogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4mKTsKICAgICBSZW1vdGVM
YXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpOwog
ICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYpOwpAQCAtMTA1OSwxMyArMTA1OCw2IEBAIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoQ29sb3IgY29sb3IpCiAg
ICAgcmV0dXJuIHRzOwogfQogCi1SZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXll
clRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KEZsb2F0UmVjdCByZWN0KQotewotICAgIFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgdHMgPDwgcmVjdC54KCkgPDwg
IiAiIDw8IHJlY3QueSgpIDw8ICIgIiA8PCByZWN0LndpZHRoKCkgPDwgIiAiIDw8IHJlY3QuaGVp
Z2h0KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBS
ZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+JiBsYXllcnMpCiB7CiAgICAgUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbSYgdHMgPSAqdGhpczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>