<?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>116581</bug_id>
          
          <creation_ts>2013-05-21 16:19:31 -0700</creation_ts>
          <short_desc>[css] Update ETextDecorations enum to TextDecorations (incl. enumeration values)</short_desc>
          <delta_ts>2013-05-24 15:08:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (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="Bruno Abinader (history only)">bruno.abinader</reporter>
          <assigned_to name="Bruno Abinader (history only)">bruno.abinader</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>menard</cc>
    
    <cc>schenney</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>892046</commentid>
    <comment_count>0</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-05-21 16:19:31 -0700</bug_when>
    <thetext>Currently, ETextDecorations enum uses a C-like coding style for its enumeration values, as well as a &apos;E&apos; prefix that surely had some meaning in the past, but not nowadays.

This issue has already been fixed in Blink: https://code.google.com/p/chromium/issues/detail?id=242591 - I am intending to backport the patch to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892049</commentid>
    <comment_count>1</comment_count>
      <attachid>202477</attachid>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-05-21 16:34:25 -0700</bug_when>
    <thetext>Created attachment 202477
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892060</commentid>
    <comment_count>2</comment_count>
      <attachid>202477</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-21 17:11:37 -0700</bug_when>
    <thetext>Comment on attachment 202477
Proposed patch

Attachment 202477 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/338347</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892072</commentid>
    <comment_count>3</comment_count>
      <attachid>202477</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-21 17:42:38 -0700</bug_when>
    <thetext>Comment on attachment 202477
Proposed patch

Attachment 202477 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/372231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892076</commentid>
    <comment_count>4</comment_count>
      <attachid>202486</attachid>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-05-21 18:30:48 -0700</bug_when>
    <thetext>Created attachment 202486
Proposed patch

Fixed a typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892387</commentid>
    <comment_count>5</comment_count>
      <attachid>202486</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-22 10:48:55 -0700</bug_when>
    <thetext>Comment on attachment 202486
Proposed patch

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

r=me. This looks way better!

&gt; Source/WebCore/rendering/style/RenderStyleConstants.h:344
&gt; +    TextDecorationNone = 0x0 , TextDecorationUnderline = 0x1, TextDecorationOverline = 0x2, TextDecorationLineThrough= 0x4, TextDecorationBlink = 0x8

Missing space after TextDecorationLineThrough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892390</commentid>
    <comment_count>6</comment_count>
      <attachid>202573</attachid>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-05-22 10:55:31 -0700</bug_when>
    <thetext>Created attachment 202573
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892467</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-22 11:36:46 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 202573:

svg/batik/text/smallFonts.svg bug 115040 (author: oliver@apple.com)
svg/batik/text/textAnchor.svg bug 116285 (authors: darin@apple.com and zimmermann@kde.org)
svg/batik/paints/patternRegions.svg bug 116380 (author: zimmermann@kde.org)
svg/dom/SVGScriptElement/script-load-and-error-events.svg bug 114279 (authors: fmalita@chromium.org, yurys@chromium.org, and zimmermann@kde.org)
transitions/color-transition-rounding.html bug 114182 (author: simon.fraser@apple.com)
transitions/cubic-bezier-overflow-svg-length.html bug 114183 (author: peter@chromium.org)
transitions/interrupt-zero-duration.html bug 114184 (authors: cmarrin@apple.com, rniwa@webkit.org, and simon.fraser@apple.com)
transitions/multiple-background-transitions.html bug 114185 (author: simon.fraser@apple.com)
transitions/cubic-bezier-overflow-color.html bug 114186 (author: peter@chromium.org)
transitions/mismatched-shadow-transitions.html bug 114188 (author: simon.fraser@apple.com)
transitions/color-transition-all.html bug 114189 (authors: ossy@webkit.org and simon.fraser@apple.com)
transitions/cubic-bezier-overflow-shadow.html bug 114191 (author: peter@chromium.org)
transitions/min-max-width-height-transitions.html bug 114192 (author: simon.fraser@apple.com)
transitions/cancel-transition.html bug 114193 (authors: ojan@chromium.org, rniwa@webkit.org, and simon.fraser@apple.com)
transitions/border-radius-transition.html bug 114194 (author: simon.fraser@apple.com)
transitions/flex-transitions.html bug 114195 (author: tony@chromium.org)
transitions/mixed-type.html bug 114196 (author: mikelawther@chromium.org)
transitions/color-transition-premultiplied.html bug 114198 (author: simon.fraser@apple.com)
transitions/mismatched-shadow-styles.html bug 114199 (author: simon.fraser@apple.com)
transitions/mask-transitions.html bug 114200 (authors: ojan@chromium.org, oliver@apple.com, and simon.fraser@apple.com)
transitions/cubic-bezier-overflow-length.html bug 114201 (author: peter@chromium.org)
transitions/multiple-background-size-transitions.html bug 114202 (authors: mitz@webkit.org and simon.fraser@apple.com)
transitions/clip-transition.html bug 114203 (authors: dglazkov@chromium.org, krit@webkit.org, and simon.fraser@apple.com)
transitions/cubic-bezier-overflow-transform.html bug 114204 (author: peter@chromium.org)
transitions/interrupted-accelerated-transition.html bug 56242 (authors: rniwa@webkit.org, simon.fraser@apple.com, and tonyg@chromium.org)
transitions/background-transitions.html bug 114206 (author: simon.fraser@apple.com)
http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html bug 114208 (authors: abarth@webkit.org and rniwa@webkit.org)
http/tests/inspector/appcache/appcache-manifest-with-non-existing-file.html bug 114209 (author: vsevik@chromium.org)
fast/loader/javascript-url-in-object.html bug 114210 (authors: rniwa@webkit.org and sam@webkit.org)
platform/mac/editing/deleting/deletionUI-single-instance.html bug 114181 (author: rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892468</commentid>
    <comment_count>8</comment_count>
      <attachid>202573</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-22 11:37:44 -0700</bug_when>
    <thetext>Comment on attachment 202573
Proposed patch

Clearing flags on attachment: 202573

Committed r150525: &lt;http://trac.webkit.org/changeset/150525&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202477</attachid>
            <date>2013-05-21 16:34:25 -0700</date>
            <delta_ts>2013-05-21 18:30:40 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-116581-20130521193312.patch</filename>
            <type>text/plain</type>
            <size>33219</size>
            <attacher name="Bruno Abinader (history only)">bruno.abinader</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwNDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEwYzA1OGU1MDgwNTZm
ZTNkZDdjZTc1OTM0MTEyNzlmNTcyYTgyMC4uMzc3YTI5NmY4NGYyNDIwM2MyNTZhYWVkZDQwMzA0
NWQ0NmFjODM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA1LTIxICBCcnVu
byBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFiaW5hZGVyQGJhc3lza29tLmNvbT4KKwor
ICAgICAgICBbY3NzXSBVcGRhdGUgRVRleHREZWNvcmF0aW9ucyBlbnVtIHRvIFRleHREZWNvcmF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Vy
cmVudGx5LCBFVGV4dERlY29yYXRpb25zIGVudW0gdXNlcyBhIEMtbGlrZSBjb2Rpbmcgc3R5bGUg
Zm9yIGl0cworICAgICAgICBlbnVtZXJhdGlvbiB2YWx1ZXMsIGFzIHdlbGwgYXMgYSAnRScgcHJl
Zml4IHRoYXQgc3VyZWx5IGhhZCBzb21lIG1lYW5pbmcKKyAgICAgICAgaW4gdGhlIHBhc3QsIGJ1
dCBub3Qgbm93YWRheXMuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlcywgY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpoYXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aGFzVW5kZXJsaW5lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRBdHRyaWJ1dGVT
ZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZSk6Cisg
ICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGVjb3JhdGlvbik6CisgICAgICAg
ICogY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlUZXh0RGVjb3JhdGlvbjo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250
QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSFRN
TENvbnZlcnRlci5tbToKKyAgICAgICAgKCtbV2ViSFRNTENvbnZlcnRlciBlZGl0aW5nQXR0cmli
dXRlZFN0cmluZ0Zyb21SYW5nZTpdKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9u
Q29sb3JzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yfCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcnw9KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmg6CisgICAgICAgIChTdHlsZVZp
c3VhbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
dGhpY2tuZXNzRm9yRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUmVuZGVyT2Jq
ZWN0RGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHSW5saW5lVGV4dEJveC5oOgorCiAyMDEzLTA1LTIxICBIdWdvIFBhcmVudGUgTGltYSAg
PGh1Z28ubGltYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtFRkxdIEFkZCBtaXNzaW5nICNp
ZiBndWFyZHMgb24gZHJhZyBzdXBwb3J0IG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDFlZThhOTBiM2I4NzU0MTM4MGY5NzRiZGEzOWE1MmY3NDQ3M2M4NTMuLjcxMTY1NGU0ZTRkY2Vl
MWU4OWYzMjMzZWEyNzIzZGU3ZjFiMTdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzIz
NCw3ICszMjM0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNQbGFpblRl
eHQoKSBjb25zdAogICAgIAogICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2Vp
Z2h0KCkgPT0gRm9udFdlaWdodE5vcm1hbAogICAgICAgICAmJiBzdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkuaXRhbGljKCkgPT0gRm9udEl0YWxpY09mZgotICAgICAgICAmJiBzdHlsZS0+dGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKSA9PSBURE5PTkU7CisgICAgICAgICYmIHN0eWxlLT50ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCgpID09IFRleHREZWNvcmF0aW9uTm9uZTsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdApAQCAtMzI2Niw3ICszMjY2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoYXNVbmRlcmxpbmUoKSBjb25zdAogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpLT50ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVU5ERVJMSU5FOworICAgIHJldHVybiBtX3JlbmRlcmVy
LT5zdHlsZSgpLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4dERlY29yYXRpb25VbmRl
cmxpbmU7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpuYW1lRm9yTVNB
QSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggN2MyMDNl
NGNlMzhjNjRiMzUyNzE2M2ZhZDNkOGE1NzZiYzZjNmIyYy4uN2M4M2U2MTY0OGNlYTU2ZDc4MGE0
MDIyYzQ0YzE2MzU5MTI1YzQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cApAQCAtMzEyLDExICszMTIsMTEgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmli
dXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXQKICAgICAgICAg
cmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVf
Z2V0X25hbWUoQVRLX1RFWFRfQVRUUl9KVVNUSUZJQ0FUSU9OKSwgImZpbGwiKTsKICAgICB9CiAK
LSAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJp
YnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1VOREVSTElORSksIChzdHlsZS0+dGV4dERlY29y
YXRpb24oKSAmIFVOREVSTElORSkgPyAic2luZ2xlIiA6ICJub25lIik7CisgICAgcmVzdWx0ID0g
YWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUo
QVRLX1RFWFRfQVRUUl9UZXh0RGVjb3JhdGlvblVuZGVybGluZSksIChzdHlsZS0+dGV4dERlY29y
YXRpb24oKSAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSA/ICJzaW5nbGUiIDogIm5vbmUiKTsK
IAogICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0
cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU1RZTEUpLCBzdHlsZS0+Zm9udCgpLml0YWxp
YygpID8gIml0YWxpYyIgOiAibm9ybWFsIik7CiAKLSAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJp
YnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRS
X1NUUklLRVRIUk9VR0gpLCAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBMSU5FX1RIUk9VR0gp
ID8gInRydWUiIDogImZhbHNlIik7CisgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQo
cmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9TVFJJS0VU
SFJPVUdIKSwgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVGV4dERlY29yYXRpb25MaW5lVGhy
b3VnaCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAogICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmli
dXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJf
SU5WSVNJQkxFKSwgKHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gSElEREVOKSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDQ3
ZGUxNjhjNDBhYTZkOTkzMTZiMGUyOTVjMGY5Njc3ZDUwYzhkY2MuLjc3MmMxOTk2NmEzMzIzNTRh
NjRjOTdjNDhlMzZiMjEzNGRhMTVkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCkBAIC0xNTA0LDEzICsxNTA0LDEzIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVu
CiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRGb250KGF0dHJTdHJpbmcsIHN0eWxlLT5mb250KCku
cHJpbWFyeUZvbnQoKS0+Z2V0R1NGb250KCksIHJhbmdlKTsKICAgICAgICAgICAgICAgICAKICAg
ICBpbnQgZGVjb3IgPSBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAo
KGRlY29yICYgKFVOREVSTElORSB8IExJTkVfVEhST1VHSCkpICE9IDApIHsKKyAgICBpZiAoKGRl
Y29yICYgKFRleHREZWNvcmF0aW9uVW5kZXJsaW5lIHwgVGV4dERlY29yYXRpb25MaW5lVGhyb3Vn
aCkpICE9IDApIHsKICAgICAgICAgLy8gZmluZCBjb2xvcnMgdXNpbmcgcXVpcmsgbW9kZSBhcHBy
b2FjaCAoc3RyaWN0IG1vZGUgd291bGQgdXNlIGN1cnJlbnQKICAgICAgICAgLy8gY29sb3IgZm9y
IGFsbCBidXQgdGhlIHJvb3QgbGluZSBib3gsIHdoaWNoIHdvdWxkIHVzZSBnZXRUZXh0RGVjb3Jh
dGlvbkNvbG9ycykKICAgICAgICAgQ29sb3IgdW5kZXJsaW5lLCBvdmVybGluZSwgbGluZXRocm91
Z2g7CiAgICAgICAgIHJlbmRlcmVyLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhkZWNvciwgdW5k
ZXJsaW5lLCBvdmVybGluZSwgbGluZXRocm91Z2gpOwogICAgICAgICAKLSAgICAgICAgaWYgKGRl
Y29yICYgVU5ERVJMSU5FKQorICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvblVuZGVy
bGluZSkKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcs
IFVJQWNjZXNzaWJpbGl0eVRva2VuVW5kZXJsaW5lLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
WUVTXSwgcmFuZ2UpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KaW5kZXggYzRkMGYxNjQ5ODJiMWVjZjViY2Y0NjIyOTk0YzQ3MGU0YTBlYzZmNC4uMjll
MGQxNjdhZDU5MjJiNGMyY2JlMjQzNDZjODc3Nzc0M2JjNDc4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTY3MiwyOCArNjcyLDI4IEBAIHN0YXRpYyB2b2lk
IEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clN0cmluZywgUmVuCiAgICAgCiAgICAgLy8gc2V0IHVuZGVybGluZSBhbmQgc3RyaWtldGhyb3Vn
aAogICAgIGludCBkZWNvciA9IHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAg
IGlmICgoZGVjb3IgJiBVTkRFUkxJTkUpID09IDApIHsKKyAgICBpZiAoKGRlY29yICYgVGV4dERl
Y29yYXRpb25VbmRlcmxpbmUpID09IDApIHsKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0
cmlidXRlOk5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2Vd
OwogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5VW5k
ZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICB9CiAgICAgCi0gICAg
aWYgKChkZWNvciAmIExJTkVfVEhST1VHSCkgPT0gMCkgeworICAgIGlmICgoZGVjb3IgJiBUZXh0
RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSA9PSAwKSB7CiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92
ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSByYW5n
ZTpyYW5nZV07CiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2li
aWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICB9
CiAgICAgCi0gICAgaWYgKChkZWNvciAmIChVTkRFUkxJTkUgfCBMSU5FX1RIUk9VR0gpKSAhPSAw
KSB7CisgICAgaWYgKChkZWNvciAmIChUZXh0RGVjb3JhdGlvblVuZGVybGluZSB8IFRleHREZWNv
cmF0aW9uTGluZVRocm91Z2gpKSAhPSAwKSB7CiAgICAgICAgIC8vIGZpbmQgY29sb3JzIHVzaW5n
IHF1aXJrIG1vZGUgYXBwcm9hY2ggKHN0cmljdCBtb2RlIHdvdWxkIHVzZSBjdXJyZW50CiAgICAg
ICAgIC8vIGNvbG9yIGZvciBhbGwgYnV0IHRoZSByb290IGxpbmUgYm94LCB3aGljaCB3b3VsZCB1
c2UgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMpCiAgICAgICAgIENvbG9yIHVuZGVybGluZSwgb3Zl
cmxpbmUsIGxpbmV0aHJvdWdoOwogICAgICAgICByZW5kZXJlci0+Z2V0VGV4dERlY29yYXRpb25D
b2xvcnMoZGVjb3IsIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoKTsKICAgICAgICAg
Ci0gICAgICAgIGlmICgoZGVjb3IgJiBVTkRFUkxJTkUpICE9IDApIHsKKyAgICAgICAgaWYgKChk
ZWNvciAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSAhPSAwKSB7CiAgICAgICAgICAgICBBWEF0
dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxp
bmVUZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwog
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vz
c2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lKSwg
cmFuZ2UpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoKGRlY29yICYgTElORV9U
SFJPVUdIKSAhPSAwKSB7CisgICAgICAgIGlmICgoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmVU
aHJvdWdoKSAhPSAwKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwgW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKICAgICAgICAgICAgIEFYQXR0cmli
dXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3Vn
aENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihsaW5ldGhyb3VnaCksIHJhbmdlKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCA2NjRmMWFjMzc3MGQ3ZjU3ZmUwMTYzYTU2YWVlNmJmOWJiODVkNTkzLi5h
YzBmNGE2OTVkNzlkZGI0MjJiNjdkZmI5ZDliY2Y5MDdkZGU3ZmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTMzNSwx
MSArMTMzNSwxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29y
YXRpb25GbGFnc1RvQ1NTVmFsdWUoaW50IHRleHREZWNvcmF0aQogewogICAgIC8vIEJsaW5rIHZh
bHVlIGlzIGlnbm9yZWQuCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiBV
TkRFUkxJTkUpCisgICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25VbmRlcmxp
bmUpCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpKTsKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiBPVkVS
TElORSkKKyAgICBpZiAodGV4dERlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQog
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlT3ZlcmxpbmUpKTsKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiBMSU5FX1RIUk9V
R0gpCisgICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkK
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZUxpbmVUaHJvdWdoKSk7CiAKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggZGVm
ODdjZGUxNjY0MTIwYTkxZTQ4OTEwZWU4YzhjZWRkODlhYzcyOC4uNGZkNmNkYjE3OGJiODdlZmY1
OGI3ZmY0N2YzMGRiNzQ4MTM2YmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC0yNDExLDIzICsyNDExLDIzIEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0SnVzdGlmeSgpIGNvbnN0CiB9
CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFVGV4dERlY29yYXRpb24oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHREZWNvcmF0aW9uKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAg
ICAgcmV0dXJuIFRETk9ORTsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTm9uZTsKICAg
ICBjYXNlIENTU1ZhbHVlVW5kZXJsaW5lOgotICAgICAgICByZXR1cm4gVU5ERVJMSU5FOworICAg
ICAgICByZXR1cm4gVGV4dERlY29yYXRpb25VbmRlcmxpbmU7CiAgICAgY2FzZSBDU1NWYWx1ZU92
ZXJsaW5lOgotICAgICAgICByZXR1cm4gT1ZFUkxJTkU7CisgICAgICAgIHJldHVybiBUZXh0RGVj
b3JhdGlvbk92ZXJsaW5lOwogICAgIGNhc2UgQ1NTVmFsdWVMaW5lVGhyb3VnaDoKLSAgICAgICAg
cmV0dXJuIExJTkVfVEhST1VHSDsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTGluZVRo
cm91Z2g7CiAgICAgY2FzZSBDU1NWYWx1ZUJsaW5rOgotICAgICAgICByZXR1cm4gQkxJTks7Cisg
ICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbkJsaW5rOwogICAgIH0KIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBURE5PTkU7CisgICAgcmV0dXJuIFRleHREZWNvcmF0
aW9uTm9uZTsKIH0KIAogI2lmIEVOQUJMRShDU1MzX1RFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggMTY0ODM0MTk3YzNjOGJhN2EyNjcw
MDA5MjNhMjBkYmY0ZTUxYzVjNC4uNDEyNDQ1YmFmZDg0ZGM2YzFkNTFhZWQwN2FmYmExMGEyNzdi
ZWZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNw
cApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgY2xhc3MgQXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0aW9u
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQsIFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIEVUZXh0RGVjb3JhdGlvbiB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlv
bigpOworICAgICAgICBUZXh0RGVjb3JhdGlvbiB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0
RGVjb3JhdGlvbigpOwogICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUp
OyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVt
ID0gaS52YWx1ZSgpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKQEAgLTEyNjEsNyArMTI2MSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAg
ICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1
bHRCYXNlPEVUZXh0RGVjb3JhdGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbiwgRVRl
eHREZWNvcmF0aW9uLCAmUmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uLCBFVGV4dERlY29y
YXRpb24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uPjo6Y3JlYXRlSGFuZGxl
cigpOworICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZh
dWx0QmFzZTxUZXh0RGVjb3JhdGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbiwgVGV4
dERlY29yYXRpb24sICZSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb24sIFRleHREZWNvcmF0
aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbj46OmNyZWF0ZUhhbmRsZXIo
KTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlv
bigpLCBoYW5kbGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA4MThhNTJlNDQ4ZWYz
ZDIzZGY1OGRjODE5ZGVjYzQwOWE5YjIzYjRkLi42NmZiZDEwNzEyOGViYjMxMDI5NWJiYWEyODc4
NzY1ODY5NDYyNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBA
IC0yMDcsNyArMjA3LDcgQEAgTlNEaWN0aW9uYXJ5KiBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9y
U2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIH0KIAogICAgIGludCBkZWNvcmF0aW9uID0gc3R5
bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7Ci0gICAgaWYgKGRlY29yYXRpb24gJiBMSU5F
X1RIUk9VR0gpCisgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdo
KQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpOU1Vu
ZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVO
YW1lXTsKIAogICAgIGludCBzdXBlcnNjcmlwdEludCA9IDA7CkBAIC0yMzEsNyArMjMxLDcgQEAg
TlNEaWN0aW9uYXJ5KiBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBj
b25zdAogICAgIGlmIChzdXBlcnNjcmlwdEludCkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c3VwZXJzY3JpcHRJbnRdIGZvcktleTpOU1N1cGVyc2Ny
aXB0QXR0cmlidXRlTmFtZV07CiAKLSAgICBpZiAoZGVjb3JhdGlvbiAmIFVOREVSTElORSkKKyAg
ICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAgICBbcmVz
dWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpOU1VuZGVybGluZVN0eWxlU2lu
Z2xlXSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwogCiAgICAgaWYgKG5v
ZGVUb1JlbW92ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1M
Q29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIu
bW0KaW5kZXggNGUyMjViNzM2ZGZkYmYyMWU2MTcyYzFiYjZmNjNmNTcyZDMwYjZiYi4uMTA2ODMz
MzRmNjVlZTI4MDc4NzBmNGVhYjNlMjg3YjUyZGZlZjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTE2OTIsNyArMTY5Miw3IEBAICsgKE5T
QXR0cmlidXRlZFN0cmluZyAqKWVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlOihSYW5n
ZSopcmFuZ2UKICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAg
aWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVU5ERVJMSU5FKQorICAgICAg
ICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvblVu
ZGVybGluZSkKICAgICAgICAgICAgIFthdHRycy5nZXQoKSBzZXRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZvcktleTpOU1VuZGVybGlu
ZVN0eWxlQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGlmIChOU0ZvbnQgKmZvbnQgPSBzdHlsZS0+
Zm9udCgpLnByaW1hcnlGb250KCktPmdldE5TRm9udCgpKQogICAgICAgICAgICAgW2F0dHJzLmdl
dCgpIHNldE9iamVjdDpmb250IGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzNjVkMDJlYjZlNjg3NjZh
NTllZDNjYzNhZTAyNzA1MzExODgyMjNlLi45N2UzYzE2Yzc4MGY2YTUyNDU1MmRkYzczNjcxMzMz
ZTlhZWU4NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CkBAIC03NzksOCArNzc5LDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIH0KIAogICAg
IC8vIFBhaW50IGRlY29yYXRpb25zCi0gICAgRVRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9u
cyA9IHN0eWxlVG9Vc2UtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7Ci0gICAgaWYgKHRleHRE
ZWNvcmF0aW9ucyAhPSBURE5PTkUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxl
Y3Rpb24pIHsKKyAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBzdHlsZVRvVXNl
LT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworICAgIGlmICh0ZXh0RGVjb3JhdGlvbnMgIT0g
VGV4dERlY29yYXRpb25Ob25lICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0
aW9uKSB7CiAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCB0ZXh0RmlsbENv
bG9yLCB0ZXh0U3Ryb2tlQ29sb3IsIHRleHRTdHJva2VXaWR0aCwgc3R5bGVUb1VzZS0+Y29sb3JT
cGFjZSgpKTsKICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKICAgICAgICAgICAgIGNvbnRleHQt
PmNvbmNhdENUTShyb3RhdGlvbihib3hSZWN0LCBDbG9ja3dpc2UpKTsKQEAgLTExMTksNyArMTEx
OSw3IEBAIHN0YXRpYyB2b2lkIHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIEZsb2F0UG9pbnQmIHAxLCBGCiB9CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAK
LXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBFVGV4dERlY29yYXRpb24gZGVjbywg
VGV4dERlY29yYXRpb25TdHlsZSBkZWNvcmF0aW9uU3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvdykKK3ZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBUZXh0RGVjb3JhdGlvbiBk
ZWNvLCBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHlsZSwgY29uc3QgU2hhZG93RGF0
YSogc2hhZG93KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW1wcm92ZSB0aGlzIHJ1bGUg
YW5kIG5vdCBhbHdheXMganVzdCBhc3N1bWUgMS4KICAgICBjb25zdCBmbG9hdCB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyA9IDEuZjsKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYKICAgICBib29sIGlzUHJpbnRpbmcgPSB0ZXh0UmVuZGVyZXIoKS0+ZG9jdW1lbnQo
KS0+cHJpbnRpbmcoKTsKICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3ModGV4dERlY29y
YXRpb25UaGlja25lc3MpOwogCi0gICAgYm9vbCBsaW5lc0FyZU9wYXF1ZSA9ICFpc1ByaW50aW5n
ICYmICghKGRlY28gJiBVTkRFUkxJTkUpIHx8IHVuZGVybGluZS5hbHBoYSgpID09IDI1NSkgJiYg
KCEoZGVjbyAmIE9WRVJMSU5FKSB8fCBvdmVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVj
byAmIExJTkVfVEhST1VHSCkgfHwgbGluZXRocm91Z2guYWxwaGEoKSA9PSAyNTUpOworICAgIGJv
b2wgbGluZXNBcmVPcGFxdWUgPSAhaXNQcmludGluZyAmJiAoIShkZWNvICYgVGV4dERlY29yYXRp
b25VbmRlcmxpbmUpIHx8IHVuZGVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVjbyAmIFRl
eHREZWNvcmF0aW9uT3ZlcmxpbmUpIHx8IG92ZXJsaW5lLmFscGhhKCkgPT0gMjU1KSAmJiAoIShk
ZWNvICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgfHwgbGluZXRocm91Z2guYWxwaGEoKSA9
PSAyNTUpOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJlcigpLT5zdHls
ZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgIGludCBiYXNlbGluZSA9IHN0eWxlVG9Vc2UtPmZv
bnRNZXRyaWNzKCkuYXNjZW50KCk7CkBAIC0xMTk0LDcgKzExOTQsNyBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UG9pbnQmCiAgICAgICAgIGZsb2F0IGRvdWJsZU9mZnNldCA9IHRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzICsgMS5mOwogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShkZWNvcmF0aW9uU3R5
bGUpKTsKLSAgICAgICAgaWYgKGRlY28gJiBVTkRFUkxJTkUpIHsKKyAgICAgICAgaWYgKGRlY28g
JiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkgewogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IodW5kZXJsaW5lLCBjb2xvclNwYWNlKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQog
ICAgICAgICAgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uID0gc3R5
bGVUb1VzZS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKCk7CkBAIC0xMjE4LDcgKzEyMTgsNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRl
eHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIGJhc2VsaW5l
ICsgMSksIHdpZHRoLCBpc1ByaW50aW5nKTsKICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAg
fQotICAgICAgICBpZiAoZGVjbyAmIE9WRVJMSU5FKSB7CisgICAgICAgIGlmIChkZWNvICYgVGV4
dERlY29yYXRpb25PdmVybGluZSkgewogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3Iob3ZlcmxpbmUsIGNvbG9yU3BhY2UpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAg
ICAgICBzd2l0Y2ggKGRlY29yYXRpb25TdHlsZSkgewpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVAog
ICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvICYgTElORV9USFJPVUdIKSB7CisgICAgICAgIGlm
IChkZWNvICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgewogICAgICAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2gsIGNvbG9yU3BhY2UpOwogI2lmIEVOQUJMRShD
U1MzX1RFWFQpCiAgICAgICAgICAgICBzd2l0Y2ggKGRlY29yYXRpb25TdHlsZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggM2YxZDYzOWZjY2EwNWY5OTRj
MTgyNmFkNjE4ZTZjYmY5MWNhMTdkMi4uYTFjOWQ5MzBiZTFlNzk5ZGNkZmM0NGY0YWFkMzg0ZjQy
NDVlZmM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0x
ODQsNyArMTg0LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3Jp
Z2luLCBFVGV4dERlY29yYXRpb24sIFRleHREZWNvcmF0aW9uU3R5bGUsIGNvbnN0IFNoYWRvd0Rh
dGEqKTsKKyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHREZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxl
LCBjb25zdCBTaGFkb3dEYXRhKik7CiAgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlclN0eWxlKiwgY29uc3Qg
Rm9udCYsIENvbG9yIHRleHRDb2xvcik7CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgRG9jdW1lbnRNYXJr
ZXIqLCBSZW5kZXJTdHlsZSosIGNvbnN0IEZvbnQmLCBib29sIGdyYW1tYXIpOwogICAgIHZvaWQg
cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYg
Ym94T3JpZ2luLCBEb2N1bWVudE1hcmtlciosIFJlbmRlclN0eWxlKiwgY29uc3QgRm9udCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1YjVkZWE0ZjU0
ODdlZDc5ZmExMjI2ZTA5YTRiMmQ5Y2NlMDE1M2QyLi4zNTg5Njg1MDdkOTdjNjEyY2I1ODE2YmY5
MWM2N2JhY2ZmYTJiYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtMjgxNCw3ICsyODE0LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNv
cmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ28KIHsKICAg
ICBSZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlzOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNl
ID0gMDsKLSAgICBFVGV4dERlY29yYXRpb24gY3VyckRlY3MgPSBURE5PTkU7CisgICAgVGV4dERl
Y29yYXRpb24gY3VyckRlY3MgPSBUZXh0RGVjb3JhdGlvbk5vbmU7CiAgICAgQ29sb3IgcmVzdWx0
Q29sb3I7CiAgICAgZG8gewogICAgICAgICBzdHlsZVRvVXNlID0gY3Vyci0+c3R5bGUoZmlyc3Rs
aW5lU3R5bGUpOwpAQCAtMjgyMiwxNiArMjgyMiwxNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0
VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lLCBD
bwogICAgICAgICByZXN1bHRDb2xvciA9IGRlY29yYXRpb25Db2xvcihzdHlsZVRvVXNlKTsKICAg
ICAgICAgLy8gUGFyYW1ldGVyICdkZWNvcmF0aW9ucycgaXMgY2FzdCBhcyBhbiBpbnQgdG8gZW5h
YmxlIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgYmVsb3cuCiAgICAgICAgIGlmIChjdXJyRGVjcykg
ewotICAgICAgICAgICAgaWYgKGN1cnJEZWNzICYgVU5ERVJMSU5FKSB7Ci0gICAgICAgICAgICAg
ICAgZGVjb3JhdGlvbnMgJj0gflVOREVSTElORTsKKyAgICAgICAgICAgIGlmIChjdXJyRGVjcyAm
IFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB7CisgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMg
Jj0gflRleHREZWNvcmF0aW9uVW5kZXJsaW5lOwogICAgICAgICAgICAgICAgIHVuZGVybGluZSA9
IHJlc3VsdENvbG9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGN1cnJEZWNzICYg
T1ZFUkxJTkUpIHsKLSAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAmPSB+T1ZFUkxJTkU7Cisg
ICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7CisgICAg
ICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gflRleHREZWNvcmF0aW9uT3ZlcmxpbmU7CiAgICAg
ICAgICAgICAgICAgb3ZlcmxpbmUgPSByZXN1bHRDb2xvcjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChjdXJyRGVjcyAmIExJTkVfVEhST1VHSCkgewotICAgICAgICAgICAgICAgIGRl
Y29yYXRpb25zICY9IH5MSU5FX1RIUk9VR0g7CisgICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBU
ZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSB7CisgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMg
Jj0gflRleHREZWNvcmF0aW9uTGluZVRocm91Z2g7CiAgICAgICAgICAgICAgICAgbGluZXRocm91
Z2ggPSByZXN1bHRDb2xvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjg0NywxMSAr
Mjg0NywxMSBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50
IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lLCBDbwogICAgIGlmIChkZWNvcmF0aW9ucyAm
JiBjdXJyKSB7CiAgICAgICAgIHN0eWxlVG9Vc2UgPSBjdXJyLT5zdHlsZShmaXJzdGxpbmVTdHls
ZSk7CiAgICAgICAgIHJlc3VsdENvbG9yID0gZGVjb3JhdGlvbkNvbG9yKHN0eWxlVG9Vc2UpOwot
ICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBVTkRFUkxJTkUpCisgICAgICAgIGlmIChkZWNvcmF0
aW9ucyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAgICAgICAgdW5kZXJsaW5lID0g
cmVzdWx0Q29sb3I7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIE9WRVJMSU5FKQorICAgICAg
ICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQogICAgICAgICAgICAg
b3ZlcmxpbmUgPSByZXN1bHRDb2xvcjsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgTElORV9U
SFJPVUdIKQorICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJv
dWdoKQogICAgICAgICAgICAgbGluZXRocm91Z2ggPSByZXN1bHRDb2xvcjsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGMyOWI3
NWIyYzJlY2FlNTZiZjRmNzJkN2EyMDhhODcyNTA1NjYwNzkuLjJjZDg3NDVkMjU2OWNjNzQzYTA5
Yjk1NGNjZjJkOWIwZGQ1ZWVhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCkBAIC0xODksNyArMTg5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB1
bnNpZ25lZCBfdmlzaWJpbGl0eSA6IDI7IC8vIEVWaXNpYmlsaXR5CiAgICAgICAgIHVuc2lnbmVk
IF90ZXh0X2FsaWduIDogNDsgLy8gRVRleHRBbGlnbgogICAgICAgICB1bnNpZ25lZCBfdGV4dF90
cmFuc2Zvcm0gOiAyOyAvLyBFVGV4dFRyYW5zZm9ybQotICAgICAgICB1bnNpZ25lZCBfdGV4dF9k
ZWNvcmF0aW9ucyA6IEVUZXh0RGVjb3JhdGlvbkJpdHM7CisgICAgICAgIHVuc2lnbmVkIF90ZXh0
X2RlY29yYXRpb25zIDogVGV4dERlY29yYXRpb25CaXRzOwogICAgICAgICB1bnNpZ25lZCBfY3Vy
c29yX3N0eWxlIDogNjsgLy8gRUN1cnNvcgogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkK
ICAgICAgICAgdW5zaWduZWQgbV9jdXJzb3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJp
bGl0eQpAQCAtNTc0LDggKzU3NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIEVUZXh0QWxpZ24g
dGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRBbGlnbj4oaW5oZXJp
dGVkX2ZsYWdzLl90ZXh0X2FsaWduKTsgfQogICAgIEVUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFRyYW5zZm9ybT4oaW5oZXJpdGVk
X2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSk7IH0KLSAgICBFVGV4dERlY29yYXRpb24gdGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dERlY29yYXRp
b24+KGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyk7IH0KLSAgICBFVGV4dERlY29y
YXRpb24gdGV4dERlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dERl
Y29yYXRpb24+KHZpc3VhbC0+dGV4dERlY29yYXRpb24pOyB9CisgICAgVGV4dERlY29yYXRpb24g
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
RGVjb3JhdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zKTsgfQorICAgIFRl
eHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
VGV4dERlY29yYXRpb24+KHZpc3VhbC0+dGV4dERlY29yYXRpb24pOyB9CiAjaWYgRU5BQkxFKENT
UzNfVEVYVCkKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQogICAgIFRleHRBbGlnbkxhc3Qg
dGV4dEFsaWduTGFzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbkxhc3Q+
KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRBbGlnbkxhc3QpOyB9CkBAIC0xMTQzLDkgKzExNDMs
OSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHNldFRleHRBbGlnbihFVGV4dEFsaWduIHYp
IHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduID0gdjsgfQogICAgIHZvaWQgc2V0VGV4dFRy
YW5zZm9ybShFVGV4dFRyYW5zZm9ybSB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zv
cm0gPSB2OyB9Ci0gICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KEVUZXh0RGVj
b3JhdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8PSB2OyB9Ci0g
ICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChFVGV4dERlY29yYXRpb24gdikgeyBp
bmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgPSB2OyB9Ci0gICAgdm9pZCBzZXRUZXh0
RGVjb3JhdGlvbihFVGV4dERlY29yYXRpb24gdikgeyBTRVRfVkFSKHZpc3VhbCwgdGV4dERlY29y
YXRpb24sIHYpOyB9CisgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHRE
ZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zIHw9IHY7IH0K
KyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsg
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zID0gdjsgfQorICAgIHZvaWQgc2V0VGV4
dERlY29yYXRpb24oVGV4dERlY29yYXRpb24gdikgeyBTRVRfVkFSKHZpc3VhbCwgdGV4dERlY29y
YXRpb24sIHYpOyB9CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICB2b2lkIHNldFRleHREZWNv
cmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fdGV4dERlY29yYXRpb25TdHlsZSwgdik7IH0KICAgICB2b2lkIHNldFRleHRB
bGlnbkxhc3QoVGV4dEFsaWduTGFzdCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1f
dGV4dEFsaWduTGFzdCwgdik7IH0KQEAgLTE2MjgsNyArMTYyOCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIExl
bmd0aCBpbml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjAsIFBlcmNlbnQp
OyB9CiAgICAgc3RhdGljIEVUZXh0QWxpZ24gaW5pdGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRB
U1RBUlQ7IH0KLSAgICBzdGF0aWMgRVRleHREZWNvcmF0aW9uIGluaXRpYWxUZXh0RGVjb3JhdGlv
bigpIHsgcmV0dXJuIFRETk9ORTsgfQorICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvbiBpbml0aWFs
VGV4dERlY29yYXRpb24oKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvbk5vbmU7IH0KICNpZiBFTkFC
TEUoQ1NTM19URVhUKQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRpYWxUZXh0
RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZVNvbGlkOyB9CiAg
ICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBU
ZXh0QWxpZ25MYXN0QXV0bzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCA1ODgzNDk5YjUyMzk0OWI5YTE0NmVi
MTc1NjZlM2ZkZThiMzk0MzQwLi42ZjUxYjkyMzA1ODdkODM5ZTFhOWMwZDNiOGIwOWViMTE0NWVj
NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaApAQCAtMzM5LDEyICszMzksMTIgQEAgZW51bSBFVGV4dFRyYW5zZm9y
bSB7CiAgICAgQ0FQSVRBTElaRSwgVVBQRVJDQVNFLCBMT1dFUkNBU0UsIFRUTk9ORQogfTsKIAot
c3RhdGljIGNvbnN0IHNpemVfdCBFVGV4dERlY29yYXRpb25CaXRzID0gNDsKLWVudW0gRVRleHRE
ZWNvcmF0aW9uIHsKLSAgICBURE5PTkUgPSAweDAgLCBVTkRFUkxJTkUgPSAweDEsIE9WRVJMSU5F
ID0gMHgyLCBMSU5FX1RIUk9VR0g9IDB4NCwgQkxJTksgPSAweDgKK3N0YXRpYyBjb25zdCBzaXpl
X3QgVGV4dERlY29yYXRpb25CaXRzID0gNDsKK2VudW0gVGV4dERlY29yYXRpb24geworICAgIFRl
eHREZWNvcmF0aW9uTm9uZSA9IDB4MCAsIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lID0gMHgxLCBU
ZXh0RGVjb3JhdGlvbk92ZXJsaW5lID0gMHgyLCBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoPSAw
eDQsIFRleHREZWNvcmF0aW9uQmxpbmsgPSAweDgKIH07Ci1pbmxpbmUgRVRleHREZWNvcmF0aW9u
IG9wZXJhdG9yfChFVGV4dERlY29yYXRpb24gYSwgRVRleHREZWNvcmF0aW9uIGIpIHsgcmV0dXJu
IEVUZXh0RGVjb3JhdGlvbihpbnQoYSkgfCBpbnQoYikpOyB9Ci1pbmxpbmUgRVRleHREZWNvcmF0
aW9uJiBvcGVyYXRvcnw9KEVUZXh0RGVjb3JhdGlvbiYgYSwgRVRleHREZWNvcmF0aW9uIGIpIHsg
cmV0dXJuIGEgPSBhIHwgYjsgfQoraW5saW5lIFRleHREZWNvcmF0aW9uIG9wZXJhdG9yfCAoVGV4
dERlY29yYXRpb24gYSwgVGV4dERlY29yYXRpb24gYikgeyByZXR1cm4gVGV4dERlY29yYXRpb24o
aW50KGEpIHwgaW50KGIpKTsgfQoraW5saW5lIFRleHREZWNvcmF0aW9uJiBvcGVyYXRvcnw9IChU
ZXh0RGVjb3JhdGlvbiYgYSwgVGV4dERlY29yYXRpb24gYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9
CiAKIGVudW0gVGV4dERlY29yYXRpb25TdHlsZSB7CiAgICAgVGV4dERlY29yYXRpb25TdHlsZVNv
bGlkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlz
dWFsRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0
YS5oCmluZGV4IGI1MTQwYTc4ZGVhZWNjMmU3NGE1Y2ZjNThhYTU4NzAzMGRhNDBiNmIuLjExN2Nm
ZjFhYWZiZmQ2M2VmMDc2OTRiNDVlZDRlOTAwZjg3N2VhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogCiAgICAgTGVuZ3RoQm94IGNsaXA7CiAgICAgYm9vbCBoYXNDbGlwIDogMTsKLSAg
ICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbiA6IEVUZXh0RGVjb3JhdGlvbkJpdHM7IC8vIFRleHQg
ZGVjb3JhdGlvbnMgZGVmaW5lZCAqb25seSogYnkgdGhpcyBlbGVtZW50LgorICAgIHVuc2lnbmVk
IHRleHREZWNvcmF0aW9uIDogVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29yYXRpb25z
IGRlZmluZWQgKm9ubHkqIGJ5IHRoaXMgZWxlbWVudC4KIAogI2lmIEVOQUJMRShURVhUX0FVVE9T
SVpJTkcpCiAgICAgZmxvYXQgbV90ZXh0QXV0b3NpemluZ011bHRpcGxpZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA3ODY0
ZDRlZThhMmQwMTA3OTVlMDQwNzA4NjBkNTdiODZkODNkNGJmLi4wOGE5ZTE0YzdhN2IyMzUzMmNk
Yzg4YjQ4Y2RiODY1NmZiNjU3ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTMxOCwxMCArMzE4LDEwIEBAIHZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiwgTGF5b3V0VW5pCiAKICAgICAgICAgLy8gU3BlYzogQWxsIHRleHQgZGVjb3JhdGlvbnMg
ZXhjZXB0IGxpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYmVmb3JlIHRoZSB0ZXh0IGlzIGZp
bGxlZCBhbmQgc3Ryb2tlZDsgdGh1cywgdGhlIHRleHQgaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRo
ZXNlIGRlY29yYXRpb25zLgogICAgICAgICBpbnQgZGVjb3JhdGlvbnMgPSBzdHlsZS0+dGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVU5ERVJMSU5F
KQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBVTkRFUkxJ
TkUsIGZyYWdtZW50KTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgT1ZFUkxJTkUpCi0gICAg
ICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQsIE9WRVJMSU5FLCBmcmFn
bWVudCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5l
KQorICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVj
b3JhdGlvblVuZGVybGluZSwgZnJhZ21lbnQpOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBU
ZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQorICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50
SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAg
ICAgLy8gRmlsbCB0ZXh0CiAgICAgICAgIGlmIChoYXNGaWxsKSB7CkBAIC0zMzYsOCArMzM2LDgg
QEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbmkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNwZWM6
IExpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgdGhlIHRleHQgaXMgZmlsbGVkIGFu
ZCBzdHJva2VkOyB0aHVzLCB0aGUgbGluZS10aHJvdWdoIGlzIHJlbmRlcmVkIG9uIHRvcCBvZiB0
aGUgdGV4dC4KLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgTElORV9USFJPVUdIKQotICAgICAg
ICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBMSU5FX1RIUk9VR0gsIGZy
YWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lVGhy
b3VnaCkKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwgVGV4
dERlY29yYXRpb25MaW5lVGhyb3VnaCwgZnJhZ21lbnQpOwogCiAgICAgICAgIG1fcGFpbnRpbmdS
ZXNvdXJjZU1vZGUgPSBBcHBseVRvRGVmYXVsdE1vZGU7CiAgICAgfQpAQCAtNDc4LDIyICs0Nzgs
MjIgQEAgYm9vbCBTVkdJbmxpbmVUZXh0Qm94OjptYXBTdGFydEVuZFBvc2l0aW9uc0ludG9GcmFn
bWVudENvb3JkaW5hdGVzKGNvbnN0IFNWR1RleHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIGlubGluZSBmbG9hdCBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24oRVRleHREZWNvcmF0
aW9uIGRlY29yYXRpb24sIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgZmxvYXQgdGhp
Y2tuZXNzKQorc3RhdGljIGlubGluZSBmbG9hdCBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24o
VGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNz
LCBmbG9hdCB0aGlja25lc3MpCiB7CiAgICAgLy8gRklYTUU6IEZvciBTVkcgRm9udHMgd2UgbmVl
ZCB0byB1c2UgdGhlIGF0dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgPGZvbnQtZmFjZT4gaWYgc3Bl
Y2lmaWVkLgogICAgIC8vIENvbXBhdGlibGUgd2l0aCBCYXRpay9PcGVyYS4KLSAgICBpZiAoZGVj
b3JhdGlvbiA9PSBVTkRFUkxJTkUpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRp
b25VbmRlcmxpbmUpCiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpICsg
dGhpY2tuZXNzICogMS41ZjsKLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBPVkVSTElORSkKKyAgICBp
ZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQogICAgICAgICByZXR1cm4g
dGhpY2tuZXNzOwotICAgIGlmIChkZWNvcmF0aW9uID09IExJTkVfVEhST1VHSCkKKyAgICBpZiAo
ZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQogICAgICAgICByZXR1cm4g
Zm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSAqIDUgLyA4LjBmOwogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgdGhp
Y2tuZXNzRm9yRGVjb3JhdGlvbihFVGV4dERlY29yYXRpb24sIGNvbnN0IEZvbnQmIGZvbnQpCitz
dGF0aWMgaW5saW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oVGV4dERlY29yYXRpb24s
IGNvbnN0IEZvbnQmIGZvbnQpCiB7CiAgICAgLy8gRklYTUU6IEZvciBTVkcgRm9udHMgd2UgbmVl
ZCB0byB1c2UgdGhlIGF0dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgPGZvbnQtZmFjZT4gaWYgc3Bl
Y2lmaWVkLgogICAgIC8vIENvbXBhdGlibGUgd2l0aCBCYXRpay9PcGVyYQpAQCAtNTA3LDcgKzUw
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaW5kUmVuZGVyT2JqZWN0RGVmaW5p
bmluZ1RleHREZWNvcmF0aW9uKElubGluZUZsb3dCCiAgICAgd2hpbGUgKHBhcmVudEJveCkgewog
ICAgICAgICByZW5kZXJlciA9IHBhcmVudEJveC0+cmVuZGVyZXIoKTsKIAotICAgICAgICBpZiAo
cmVuZGVyZXItPnN0eWxlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCktPnRleHREZWNvcmF0aW9uKCkg
IT0gVEROT05FKQorICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkgJiYgcmVuZGVyZXItPnN0
eWxlKCktPnRleHREZWNvcmF0aW9uKCkgIT0gVGV4dERlY29yYXRpb25Ob25lKQogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgcGFyZW50Qm94ID0gcGFyZW50Qm94LT5wYXJlbnQoKTsKQEAg
LTUxNyw5ICs1MTcsOSBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogZmluZFJlbmRlck9i
amVjdERlZmluaW5pbmdUZXh0RGVjb3JhdGlvbihJbmxpbmVGbG93QgogICAgIHJldHVybiByZW5k
ZXJlcjsKIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBFVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZH
VGV4dEZyYWdtZW50JiBmcmFnbWVudCkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNv
cmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlv
biwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkKIHsKLSAgICBpZiAodGV4dFJlbmRl
cmVyKCktPnN0eWxlKCktPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgPT0gVEROT05FKQorICAg
IGlmICh0ZXh0UmVuZGVyZXIoKS0+c3R5bGUoKS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSA9
PSBUZXh0RGVjb3JhdGlvbk5vbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZpbmQgb3V0
IHdoaWNoIHJlbmRlciBzdHlsZSBkZWZpbmVkIHRoZSB0ZXh0LWRlY29yYXRpb24sIGFzIGl0cyBm
aWxsL3N0cm9rZSBwcm9wZXJ0aWVzIGhhdmUgdG8gYmUgdXNlZCBmb3IgZHJhd2luZyBpbnN0ZWFk
IG9mIG91cnMuCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBFVGV4dERlY29yYXRpb24KICAg
ICB9CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxl
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgRVRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNv
bnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIFJlbmRlck9iamVjdCogZGVjb3JhdGlvblJl
bmRlcmVyKQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5kZXJPYmplY3QqIGRlY29yYXRpb25SZW5k
ZXJlcikKIHsKICAgICBBU1NFUlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7CiAgICAgQVNTRVJUKG1f
cGFpbnRpbmdSZXNvdXJjZU1vZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKaW5kZXggMmRiMThkMTZl
NDhkOTI5MGI3YjcyNzcxYzYyMGIxMjcwZjNmM2IyMy4uMGQ1ODQzN2QwMjdiOTg2N2QxZmFmZmI0
MGVlOGViODZhMTk0ZjE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVUZXh0Qm94LmgKQEAgLTc0LDggKzc0LDggQEAgcHJpdmF0ZToKICAgICBib29sIHBy
ZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYsIGZs
b2F0IHNjYWxpbmdGYWN0b3IsIFRleHRSdW4mLCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVz
dG9yZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBU
ZXh0UnVuJik7CiAKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBF
VGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYpOwotICAgIHZvaWQgcGFpbnRE
ZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCosIEVUZXh0RGVjb3JhdGlvbiwgY29u
c3QgU1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyT2JqZWN0KiBkZWNvcmF0aW9uUmVuZGVyZXIpOwor
ICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCosIFRleHREZWNvcmF0aW9u
LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKTsKKyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhT
dHlsZShHcmFwaGljc0NvbnRleHQqLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdt
ZW50JiwgUmVuZGVyT2JqZWN0KiBkZWNvcmF0aW9uUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRU
ZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBUZXh0UnVuJiwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlv
bik7CiAgICAgdm9pZCBwYWludFRleHQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBS
ZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGJvb2wg
aGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202486</attachid>
            <date>2013-05-21 18:30:48 -0700</date>
            <delta_ts>2013-05-22 10:48:54 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-116581-20130521212934.patch</filename>
            <type>text/plain</type>
            <size>33205</size>
            <attacher name="Bruno Abinader (history only)">bruno.abinader</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwNDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEwYzA1OGU1MDgwNTZm
ZTNkZDdjZTc1OTM0MTEyNzlmNTcyYTgyMC4uMzc3YTI5NmY4NGYyNDIwM2MyNTZhYWVkZDQwMzA0
NWQ0NmFjODM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA1LTIxICBCcnVu
byBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFiaW5hZGVyQGJhc3lza29tLmNvbT4KKwor
ICAgICAgICBbY3NzXSBVcGRhdGUgRVRleHREZWNvcmF0aW9ucyBlbnVtIHRvIFRleHREZWNvcmF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Vy
cmVudGx5LCBFVGV4dERlY29yYXRpb25zIGVudW0gdXNlcyBhIEMtbGlrZSBjb2Rpbmcgc3R5bGUg
Zm9yIGl0cworICAgICAgICBlbnVtZXJhdGlvbiB2YWx1ZXMsIGFzIHdlbGwgYXMgYSAnRScgcHJl
Zml4IHRoYXQgc3VyZWx5IGhhZCBzb21lIG1lYW5pbmcKKyAgICAgICAgaW4gdGhlIHBhc3QsIGJ1
dCBub3Qgbm93YWRheXMuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlcywgY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpoYXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aGFzVW5kZXJsaW5lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRBdHRyaWJ1dGVT
ZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZSk6Cisg
ICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGVjb3JhdGlvbik6CisgICAgICAg
ICogY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlUZXh0RGVjb3JhdGlvbjo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250
QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSFRN
TENvbnZlcnRlci5tbToKKyAgICAgICAgKCtbV2ViSFRNTENvbnZlcnRlciBlZGl0aW5nQXR0cmli
dXRlZFN0cmluZ0Zyb21SYW5nZTpdKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9u
Q29sb3JzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yfCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcnw9KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmg6CisgICAgICAgIChTdHlsZVZp
c3VhbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
dGhpY2tuZXNzRm9yRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUmVuZGVyT2Jq
ZWN0RGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHSW5saW5lVGV4dEJveC5oOgorCiAyMDEzLTA1LTIxICBIdWdvIFBhcmVudGUgTGltYSAg
PGh1Z28ubGltYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtFRkxdIEFkZCBtaXNzaW5nICNp
ZiBndWFyZHMgb24gZHJhZyBzdXBwb3J0IG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDFlZThhOTBiM2I4NzU0MTM4MGY5NzRiZGEzOWE1MmY3NDQ3M2M4NTMuLjcxMTY1NGU0ZTRkY2Vl
MWU4OWYzMjMzZWEyNzIzZGU3ZjFiMTdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzIz
NCw3ICszMjM0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNQbGFpblRl
eHQoKSBjb25zdAogICAgIAogICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2Vp
Z2h0KCkgPT0gRm9udFdlaWdodE5vcm1hbAogICAgICAgICAmJiBzdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkuaXRhbGljKCkgPT0gRm9udEl0YWxpY09mZgotICAgICAgICAmJiBzdHlsZS0+dGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKSA9PSBURE5PTkU7CisgICAgICAgICYmIHN0eWxlLT50ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCgpID09IFRleHREZWNvcmF0aW9uTm9uZTsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdApAQCAtMzI2Niw3ICszMjY2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoYXNVbmRlcmxpbmUoKSBjb25zdAogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpLT50ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVU5ERVJMSU5FOworICAgIHJldHVybiBtX3JlbmRlcmVy
LT5zdHlsZSgpLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4dERlY29yYXRpb25VbmRl
cmxpbmU7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpuYW1lRm9yTVNB
QSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggN2MyMDNl
NGNlMzhjNjRiMzUyNzE2M2ZhZDNkOGE1NzZiYzZjNmIyYy4uYTlmNTNhZDAzZGYxMjNlMzRiZDNl
NTUyM2FmM2NlZGZjYzJjOTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cApAQCAtMzEyLDExICszMTIsMTEgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmli
dXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXQKICAgICAgICAg
cmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVf
Z2V0X25hbWUoQVRLX1RFWFRfQVRUUl9KVVNUSUZJQ0FUSU9OKSwgImZpbGwiKTsKICAgICB9CiAK
LSAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJp
YnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1VOREVSTElORSksIChzdHlsZS0+dGV4dERlY29y
YXRpb24oKSAmIFVOREVSTElORSkgPyAic2luZ2xlIiA6ICJub25lIik7CisgICAgcmVzdWx0ID0g
YWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUo
QVRLX1RFWFRfQVRUUl9VTkRFUkxJTkUpLCAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBUZXh0
RGVjb3JhdGlvblVuZGVybGluZSkgPyAic2luZ2xlIiA6ICJub25lIik7CiAKICAgICByZXN1bHQg
PSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFt
ZShBVEtfVEVYVF9BVFRSX1NUWUxFKSwgc3R5bGUtPmZvbnQoKS5pdGFsaWMoKSA/ICJpdGFsaWMi
IDogIm5vcm1hbCIpOwogCi0gICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0
LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9TVFJJS0VUSFJPVUdI
KSwgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgTElORV9USFJPVUdIKSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOworICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3Rl
eHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU1RSSUtFVEhST1VHSCksIChzdHls
ZS0+dGV4dERlY29yYXRpb24oKSAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpID8gInRydWUi
IDogImZhbHNlIik7CiAKICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQs
IGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0lOVklTSUJMRSksIChz
dHlsZS0+dmlzaWJpbGl0eSgpID09IEhJRERFTikgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA0N2RlMTY4YzQwYWE2ZDk5
MzE2YjBlMjk1YzBmOTY3N2Q1MGM4ZGNjLi43NzJjMTk5NjZhMzMyMzU0YTY0Yzk3YzQ4ZTM2YjIx
MzRkYTE1ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAt
MTUwNCwxMyArMTUwNCwxMyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxl
KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJlbgogICAgIEFYQXR0cmli
dXRlU3RyaW5nU2V0Rm9udChhdHRyU3RyaW5nLCBzdHlsZS0+Zm9udCgpLnByaW1hcnlGb250KCkt
PmdldEdTRm9udCgpLCByYW5nZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgaW50IGRlY29yID0g
c3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7Ci0gICAgaWYgKChkZWNvciAmIChVTkRF
UkxJTkUgfCBMSU5FX1RIUk9VR0gpKSAhPSAwKSB7CisgICAgaWYgKChkZWNvciAmIChUZXh0RGVj
b3JhdGlvblVuZGVybGluZSB8IFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpKSAhPSAwKSB7CiAg
ICAgICAgIC8vIGZpbmQgY29sb3JzIHVzaW5nIHF1aXJrIG1vZGUgYXBwcm9hY2ggKHN0cmljdCBt
b2RlIHdvdWxkIHVzZSBjdXJyZW50CiAgICAgICAgIC8vIGNvbG9yIGZvciBhbGwgYnV0IHRoZSBy
b290IGxpbmUgYm94LCB3aGljaCB3b3VsZCB1c2UgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMpCiAg
ICAgICAgIENvbG9yIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoOwogICAgICAgICBy
ZW5kZXJlci0+Z2V0VGV4dERlY29yYXRpb25Db2xvcnMoZGVjb3IsIHVuZGVybGluZSwgb3Zlcmxp
bmUsIGxpbmV0aHJvdWdoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChkZWNvciAmIFVOREVSTElO
RSkKKyAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpCiAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBVSUFjY2Vzc2liaWxp
dHlUb2tlblVuZGVybGluZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGM0
ZDBmMTY0OTgyYjFlY2Y1YmNmNDYyMjk5NGM0NzBlNGEwZWM2ZjQuLjI5ZTBkMTY3YWQ1OTIyYjRj
MmNiZTI0MzQ2Yzg3Nzc3NDNiYzQ3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC02NzIsMjggKzY3MiwyOCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0
cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJlbgog
ICAgIAogICAgIC8vIHNldCB1bmRlcmxpbmUgYW5kIHN0cmlrZXRocm91Z2gKICAgICBpbnQgZGVj
b3IgPSBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAoKGRlY29yICYg
VU5ERVJMSU5FKSA9PSAwKSB7CisgICAgaWYgKChkZWNvciAmIFRleHREZWNvcmF0aW9uVW5kZXJs
aW5lKSA9PSAwKSB7CiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vz
c2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICAgICAgW2F0
dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNvbG9yVGV4
dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAgfQogICAgIAotICAgIGlmICgoZGVjb3IgJiBM
SU5FX1RIUk9VR0gpID09IDApIHsKKyAgICBpZiAoKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5l
VGhyb3VnaCkgPT0gMCkgewogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNB
Y2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogICAg
ICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhy
b3VnaENvbG9yVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAgfQogICAgIAotICAgIGlm
ICgoZGVjb3IgJiAoVU5ERVJMSU5FIHwgTElORV9USFJPVUdIKSkgIT0gMCkgeworICAgIGlmICgo
ZGVjb3IgJiAoVGV4dERlY29yYXRpb25VbmRlcmxpbmUgfCBUZXh0RGVjb3JhdGlvbkxpbmVUaHJv
dWdoKSkgIT0gMCkgewogICAgICAgICAvLyBmaW5kIGNvbG9ycyB1c2luZyBxdWlyayBtb2RlIGFw
cHJvYWNoIChzdHJpY3QgbW9kZSB3b3VsZCB1c2UgY3VycmVudAogICAgICAgICAvLyBjb2xvciBm
b3IgYWxsIGJ1dCB0aGUgcm9vdCBsaW5lIGJveCwgd2hpY2ggd291bGQgdXNlIGdldFRleHREZWNv
cmF0aW9uQ29sb3JzKQogICAgICAgICBDb2xvciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhy
b3VnaDsKICAgICAgICAgcmVuZGVyZXItPmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY29yLCB1
bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCk7CiAgICAgICAgIAotICAgICAgICBpZiAo
KGRlY29yICYgVU5ERVJMSU5FKSAhPSAwKSB7CisgICAgICAgIGlmICgoZGVjb3IgJiBUZXh0RGVj
b3JhdGlvblVuZGVybGluZSkgIT0gMCkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0
ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKICAgICAgICAgICAgIEFY
QXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJs
aW5lQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKHVuZGVybGluZSksIHJhbmdlKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKChkZWNvciAmIExJTkVfVEhST1VHSCkgIT0gMCkg
eworICAgICAgICBpZiAoKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgIT0gMCkg
ewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDpZRVNdLCByYW5nZSk7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENv
bG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRy
aWJ1dGUsIG5zQ29sb3IobGluZXRocm91Z2gpLCByYW5nZSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXgg
NjY0ZjFhYzM3NzBkN2Y1N2ZlMDE2M2E1NmFlZTZiZjliYjg1ZDU5My4uYWMwZjRhNjk1ZDc5ZGRi
NDIyYjY3ZGZiOWQ5YmNmOTA3ZGRlN2ZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEzMzUsMTEgKzEzMzUsMTEgQEAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NT
U1ZhbHVlKGludCB0ZXh0RGVjb3JhdGkKIHsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVk
LgogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgVU5ERVJMSU5FKQorICAg
IGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
VW5kZXJsaW5lKSk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgT1ZFUkxJTkUpCisgICAgaWYg
KHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25PdmVybGluZSkKICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU92ZXJs
aW5lKSk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgTElORV9USFJPVUdIKQorICAgIGlmICh0
ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpCiAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5l
VGhyb3VnaCkpOwogCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IGRlZjg3Y2RlMTY2NDEyMGE5
MWU0ODkxMGVlOGM4Y2VkZDg5YWM3MjguLjRmZDZjZGIxNzhiYjg3ZWZmNThiN2ZmNDdmMzBkYjc0
ODEzNmJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaApAQCAtMjQxMSwyMyArMjQxMSwyMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dEp1c3RpZnkoKSBjb25zdAogfQogI2VuZGlmIC8vIENT
UzNfVEVYVAogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVRleHREZWNvcmF0aW9uKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBUZXh0RGVjb3JhdGlvbigpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3Zh
bHVlLmlkZW50KSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBURE5P
TkU7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbk5vbmU7CiAgICAgY2FzZSBDU1NWYWx1
ZVVuZGVybGluZToKLSAgICAgICAgcmV0dXJuIFVOREVSTElORTsKKyAgICAgICAgcmV0dXJuIFRl
eHREZWNvcmF0aW9uVW5kZXJsaW5lOwogICAgIGNhc2UgQ1NTVmFsdWVPdmVybGluZToKLSAgICAg
ICAgcmV0dXJuIE9WRVJMSU5FOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25PdmVybGlu
ZTsKICAgICBjYXNlIENTU1ZhbHVlTGluZVRocm91Z2g6Ci0gICAgICAgIHJldHVybiBMSU5FX1RI
Uk9VR0g7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoOwogICAgIGNh
c2UgQ1NTVmFsdWVCbGluazoKLSAgICAgICAgcmV0dXJuIEJMSU5LOworICAgICAgICByZXR1cm4g
VGV4dERlY29yYXRpb25CbGluazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVEROT05FOworICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbk5vbmU7CiB9CiAK
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Rl
cHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXIuY3BwCmluZGV4IDE2NDgzNDE5N2MzYzhiYTdhMjY3MDAwOTIzYTIwZGJmNGU1
MWM1YzQuLjQxMjQ0NWJhZmQ4NGRjNmMxZDUxYWVkMDdhZmJhMTBhMjc3YmVmYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTEyNTEsNyAr
MTI1MSw3IEBAIGNsYXNzIEFwcGx5UHJvcGVydHlUZXh0RGVjb3JhdGlvbiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewotICAgICAgICBFVGV4dERlY29y
YXRpb24gdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKTsKKyAgICAgICAg
VGV4dERlY29yYXRpb24gdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKTsK
ICAgICAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBpKHZhbHVlKTsgaS5oYXNNb3JlKCk7
IGkuYWR2YW5jZSgpKSB7CiAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGkudmFsdWUoKTsK
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGl0ZW0tPmlzUHJp
bWl0aXZlVmFsdWUoKSk7CkBAIC0xMjYxLDcgKzEyNjEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAgewotICAgICAgICBQ
cm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxFVGV4dERl
Y29yYXRpb24sICZSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24sIEVUZXh0RGVjb3JhdGlvbiwg
JlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvbiwgRVRleHREZWNvcmF0aW9uLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAgICAg
UHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8VGV4dERl
Y29yYXRpb24sICZSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24sIFRleHREZWNvcmF0aW9uLCAm
UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvbiwgJlJlbmRlclN0
eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24+OjpjcmVhdGVIYW5kbGVyKCk7CiAgICAgICAgIHJl
dHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5p
bml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggODE4YTUyZTQ0OGVmM2QyM2RmNThkYzgxOWRl
Y2M0MDlhOWIyM2I0ZC4uNjZmYmQxMDcxMjhlYmIzMTAyOTViYmFhMjg3ODc2NTg2OTQ2MjQyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMjA3LDcgKzIwNyw3
IEBAIE5TRGljdGlvbmFyeSogRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0
KCkgY29uc3QKICAgICB9CiAKICAgICBpbnQgZGVjb3JhdGlvbiA9IHN0eWxlLT50ZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCgpOwotICAgIGlmIChkZWNvcmF0aW9uICYgTElORV9USFJPVUdIKQorICAg
IGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkKICAgICAgICAgW3Jl
c3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6TlNVbmRlcmxpbmVTdHlsZVNp
bmdsZV0gZm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07CiAKICAgICBp
bnQgc3VwZXJzY3JpcHRJbnQgPSAwOwpAQCAtMjMxLDcgKzIzMSw3IEBAIE5TRGljdGlvbmFyeSog
RWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAo
c3VwZXJzY3JpcHRJbnQpCiAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoSW50OnN1cGVyc2NyaXB0SW50XSBmb3JLZXk6TlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5h
bWVdOwogCi0gICAgaWYgKGRlY29yYXRpb24gJiBVTkRFUkxJTkUpCisgICAgaWYgKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9yS2V5Ok5T
VW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKIAogICAgIGlmIChub2RlVG9SZW1vdmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29udmVydGVyLm1tCmluZGV4IDRlMjI1
YjczNmRmZGJmMjFlNjE3MmMxYmI2ZjYzZjU3MmQzMGI2YmIuLjEwNjgzMzM0ZjY1ZWUyODA3ODcw
ZjRlYWIzZTI4N2I1MmRmZWY2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9I
VE1MQ29udmVydGVyLm1tCkBAIC0xNjkyLDcgKzE2OTIsNyBAQCArIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKillZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZTooUmFuZ2UqKXJhbmdlCiAgICAg
ICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUmVuZGVy
U3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElORSkKKyAgICAgICAgaWYgKHN0eWxlLT50
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpCiAgICAg
ICAgICAgICBbYXR0cnMuZ2V0KCkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdl
cjpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0
ZU5hbWVdOwogICAgICAgICBpZiAoTlNGb250ICpmb250ID0gc3R5bGUtPmZvbnQoKS5wcmltYXJ5
Rm9udCgpLT5nZXROU0ZvbnQoKSkKICAgICAgICAgICAgIFthdHRycy5nZXQoKSBzZXRPYmplY3Q6
Zm9udCBmb3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMzY1ZDAyZWI2ZTY4NzY2YTU5ZWQzY2MzYWUwMjcw
NTMxMTg4MjIzZS4uOTdlM2MxNmM3ODBmNmE1MjQ1NTJkZGM3MzY3MTMzM2U5YWVlODU0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNzc5LDggKzc3
OSw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICB9CiAKICAgICAvLyBQYWludCBkZWNv
cmF0aW9ucwotICAgIEVUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBzdHlsZVRvVXNl
LT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIGlmICh0ZXh0RGVjb3JhdGlvbnMgIT0g
VEROT05FICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKSB7CisgICAg
VGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25zID0gc3R5bGVUb1VzZS0+dGV4dERlY29yYXRp
b25zSW5FZmZlY3QoKTsKKyAgICBpZiAodGV4dERlY29yYXRpb25zICE9IFRleHREZWNvcmF0aW9u
Tm9uZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbikgewogICAgICAg
ICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgdGV4dEZpbGxDb2xvciwgdGV4dFN0cm9r
ZUNvbG9yLCB0ZXh0U3Ryb2tlV2lkdGgsIHN0eWxlVG9Vc2UtPmNvbG9yU3BhY2UoKSk7CiAgICAg
ICAgIGlmIChjb21iaW5lZFRleHQpCiAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90
YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7CkBAIC0xMTE5LDcgKzExMTksNyBAQCBzdGF0aWMg
dm9pZCBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBG
bG9hdFBvaW50JiBwMSwgRgogfQogI2VuZGlmIC8vIENTUzNfVEVYVAogCi12b2lkIElubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UG9pbnQmIGJveE9yaWdpbiwgRVRleHREZWNvcmF0aW9uIGRlY28sIFRleHREZWNvcmF0aW9u
U3R5bGUgZGVjb3JhdGlvblN0eWxlLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCit2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgVGV4dERlY29yYXRpb24gZGVjbywgVGV4dERlY29y
YXRpb25TdHlsZSBkZWNvcmF0aW9uU3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKIHsK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGltcHJvdmUgdGhpcyBydWxlIGFuZCBub3QgYWx3YXlz
IGp1c3QgYXNzdW1lIDEuCiAgICAgY29uc3QgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3Mg
PSAxLmY7CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVj
b3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAg
Ym9vbCBpc1ByaW50aW5nID0gdGV4dFJlbmRlcmVyKCktPmRvY3VtZW50KCktPnByaW50aW5nKCk7
CiAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KTsKIAotICAgIGJvb2wgbGluZXNBcmVPcGFxdWUgPSAhaXNQcmludGluZyAmJiAoIShkZWNvICYg
VU5ERVJMSU5FKSB8fCB1bmRlcmxpbmUuYWxwaGEoKSA9PSAyNTUpICYmICghKGRlY28gJiBPVkVS
TElORSkgfHwgb3ZlcmxpbmUuYWxwaGEoKSA9PSAyNTUpICYmICghKGRlY28gJiBMSU5FX1RIUk9V
R0gpIHx8IGxpbmV0aHJvdWdoLmFscGhhKCkgPT0gMjU1KTsKKyAgICBib29sIGxpbmVzQXJlT3Bh
cXVlID0gIWlzUHJpbnRpbmcgJiYgKCEoZGVjbyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB8
fCB1bmRlcmxpbmUuYWxwaGEoKSA9PSAyNTUpICYmICghKGRlY28gJiBUZXh0RGVjb3JhdGlvbk92
ZXJsaW5lKSB8fCBvdmVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVjbyAmIFRleHREZWNv
cmF0aW9uTGluZVRocm91Z2gpIHx8IGxpbmV0aHJvdWdoLmFscGhhKCkgPT0gMjU1KTsKIAogICAg
IFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gcmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVT
dHlsZSgpKTsKICAgICBpbnQgYmFzZWxpbmUgPSBzdHlsZVRvVXNlLT5mb250TWV0cmljcygpLmFz
Y2VudCgpOwpAQCAtMTE5NCw3ICsxMTk0LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERl
Y29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAg
ICAgICBmbG9hdCBkb3VibGVPZmZzZXQgPSB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyArIDEuZjsK
ICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUodGV4
dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoZGVjb3JhdGlvblN0eWxlKSk7Ci0gICAgICAg
IGlmIChkZWNvICYgVU5ERVJMSU5FKSB7CisgICAgICAgIGlmIChkZWNvICYgVGV4dERlY29yYXRp
b25VbmRlcmxpbmUpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHVuZGVy
bGluZSwgY29sb3JTcGFjZSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAgIFRl
eHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiA9IHN0eWxlVG9Vc2UtPnRleHRV
bmRlcmxpbmVQb3NpdGlvbigpOwpAQCAtMTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JgogICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQo
bG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwg
aXNQcmludGluZyk7CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGRlY28gJiBPVkVSTElORSkgeworICAgICAgICBpZiAoZGVjbyAmIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lLCBj
b2xvclNwYWNlKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAgc3dpdGNoIChk
ZWNvcmF0aW9uU3R5bGUpIHsKQEAgLTEyMzcsNyArMTIzNyw3IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQ
b2ludCYKICAgICAgICAgICAgIH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQotICAg
ICAgICBpZiAoZGVjbyAmIExJTkVfVEhST1VHSCkgeworICAgICAgICBpZiAoZGVjbyAmIFRleHRE
ZWNvcmF0aW9uTGluZVRocm91Z2gpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKGxpbmV0aHJvdWdoLCBjb2xvclNwYWNlKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAg
ICAgICAgICAgc3dpdGNoIChkZWNvcmF0aW9uU3R5bGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDNmMWQ2MzlmY2NhMDVmOTk0YzE4MjZhZDYxOGU2Y2Jm
OTFjYTE3ZDIuLmExYzlkOTMwYmUxZTc5OWRjZGZjNDRmNGFhZDM4NGY0MjQ1ZWZjNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMTg0LDcgKzE4NCw3IEBA
IHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgcGFpbnREZWNvcmF0aW9u
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgRVRleHREZWNv
cmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxlLCBjb25zdCBTaGFkb3dEYXRhKik7CisgICAgdm9p
ZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94
T3JpZ2luLCBUZXh0RGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSwgY29uc3QgU2hhZG93
RGF0YSopOwogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJTdHlsZSosIGNvbnN0IEZvbnQmLCBDb2xvciB0
ZXh0Q29sb3IpOwogICAgIHZvaWQgcGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIERvY3VtZW50TWFya2VyKiwgUmVuZGVyU3R5
bGUqLCBjb25zdCBGb250JiwgYm9vbCBncmFtbWFyKTsKICAgICB2b2lkIHBhaW50VGV4dE1hdGNo
TWFya2VyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgRG9j
dW1lbnRNYXJrZXIqLCBSZW5kZXJTdHlsZSosIGNvbnN0IEZvbnQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNWI1ZGVhNGY1NDg3ZWQ3OWZhMTIyNmUw
OWE0YjJkOWNjZTAxNTNkMi4uMzU4OTY4NTA3ZDk3YzYxMmNiNTgxNmJmOTFjNjdiYWNmZmEyYmM0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTI4MTQs
NyArMjgxNCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhp
bnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmUsIENvCiB7CiAgICAgUmVuZGVyT2JqZWN0
KiBjdXJyID0gdGhpczsKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IDA7Ci0gICAgRVRl
eHREZWNvcmF0aW9uIGN1cnJEZWNzID0gVEROT05FOworICAgIFRleHREZWNvcmF0aW9uIGN1cnJE
ZWNzID0gVGV4dERlY29yYXRpb25Ob25lOwogICAgIENvbG9yIHJlc3VsdENvbG9yOwogICAgIGRv
IHsKICAgICAgICAgc3R5bGVUb1VzZSA9IGN1cnItPnN0eWxlKGZpcnN0bGluZVN0eWxlKTsKQEAg
LTI4MjIsMTYgKzI4MjIsMTYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9u
Q29sb3JzKGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ28KICAgICAgICAgcmVz
dWx0Q29sb3IgPSBkZWNvcmF0aW9uQ29sb3Ioc3R5bGVUb1VzZSk7CiAgICAgICAgIC8vIFBhcmFt
ZXRlciAnZGVjb3JhdGlvbnMnIGlzIGNhc3QgYXMgYW4gaW50IHRvIGVuYWJsZSB0aGUgYml0d2lz
ZSBvcGVyYXRpb25zIGJlbG93LgogICAgICAgICBpZiAoY3VyckRlY3MpIHsKLSAgICAgICAgICAg
IGlmIChjdXJyRGVjcyAmIFVOREVSTElORSkgewotICAgICAgICAgICAgICAgIGRlY29yYXRpb25z
ICY9IH5VTkRFUkxJTkU7CisgICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBUZXh0RGVjb3JhdGlv
blVuZGVybGluZSkgeworICAgICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5UZXh0RGVjb3Jh
dGlvblVuZGVybGluZTsKICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgPSByZXN1bHRDb2xvcjsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIE9WRVJMSU5FKSB7Ci0g
ICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gfk9WRVJMSU5FOworICAgICAgICAgICAgaWYg
KGN1cnJEZWNzICYgVGV4dERlY29yYXRpb25PdmVybGluZSkgeworICAgICAgICAgICAgICAgIGRl
Y29yYXRpb25zICY9IH5UZXh0RGVjb3JhdGlvbk92ZXJsaW5lOwogICAgICAgICAgICAgICAgIG92
ZXJsaW5lID0gcmVzdWx0Q29sb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY3Vy
ckRlY3MgJiBMSU5FX1RIUk9VR0gpIHsKLSAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAmPSB+
TElORV9USFJPVUdIOworICAgICAgICAgICAgaWYgKGN1cnJEZWNzICYgVGV4dERlY29yYXRpb25M
aW5lVGhyb3VnaCkgeworICAgICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5UZXh0RGVjb3Jh
dGlvbkxpbmVUaHJvdWdoOwogICAgICAgICAgICAgICAgIGxpbmV0aHJvdWdoID0gcmVzdWx0Q29s
b3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI4NDcsMTEgKzI4NDcsMTEgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywg
Q29sb3ImIHVuZGVybGluZSwgQ28KICAgICBpZiAoZGVjb3JhdGlvbnMgJiYgY3VycikgewogICAg
ICAgICBzdHlsZVRvVXNlID0gY3Vyci0+c3R5bGUoZmlyc3RsaW5lU3R5bGUpOwogICAgICAgICBy
ZXN1bHRDb2xvciA9IGRlY29yYXRpb25Db2xvcihzdHlsZVRvVXNlKTsKLSAgICAgICAgaWYgKGRl
Y29yYXRpb25zICYgVU5ERVJMSU5FKQorICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVj
b3JhdGlvblVuZGVybGluZSkKICAgICAgICAgICAgIHVuZGVybGluZSA9IHJlc3VsdENvbG9yOwot
ICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBPVkVSTElORSkKKyAgICAgICAgaWYgKGRlY29yYXRp
b25zICYgVGV4dERlY29yYXRpb25PdmVybGluZSkKICAgICAgICAgICAgIG92ZXJsaW5lID0gcmVz
dWx0Q29sb3I7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIExJTkVfVEhST1VHSCkKKyAgICAg
ICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkKICAgICAgICAg
ICAgIGxpbmV0aHJvdWdoID0gcmVzdWx0Q29sb3I7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBjMjliNzViMmMyZWNhZTU2YmY0
ZjcyZDdhMjA4YTg3MjUwNTY2MDc5Li4yY2Q4NzQ1ZDI1NjljYzc0M2EwOWI5NTRjY2YyZDliMGRk
NWVlYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aApAQCAtMTg5LDcgKzE4OSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdW5zaWduZWQgX3Zpc2li
aWxpdHkgOiAyOyAvLyBFVmlzaWJpbGl0eQogICAgICAgICB1bnNpZ25lZCBfdGV4dF9hbGlnbiA6
IDQ7IC8vIEVUZXh0QWxpZ24KICAgICAgICAgdW5zaWduZWQgX3RleHRfdHJhbnNmb3JtIDogMjsg
Ly8gRVRleHRUcmFuc2Zvcm0KLSAgICAgICAgdW5zaWduZWQgX3RleHRfZGVjb3JhdGlvbnMgOiBF
VGV4dERlY29yYXRpb25CaXRzOworICAgICAgICB1bnNpZ25lZCBfdGV4dF9kZWNvcmF0aW9ucyA6
IFRleHREZWNvcmF0aW9uQml0czsKICAgICAgICAgdW5zaWduZWQgX2N1cnNvcl9zdHlsZSA6IDY7
IC8vIEVDdXJzb3IKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCiAgICAgICAgIHVuc2ln
bmVkIG1fY3Vyc29yVmlzaWJpbGl0eSA6IDE7IC8vIEN1cnNvclZpc2liaWxpdHkKQEAgLTU3NCw4
ICs1NzQsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBFVGV4dEFsaWduIHRleHRBbGlnbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0QWxpZ24+KGluaGVyaXRlZF9mbGFncy5fdGV4
dF9hbGlnbik7IH0KICAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KGluaGVyaXRlZF9mbGFncy5fdGV4dF90
cmFuc2Zvcm0pOyB9Ci0gICAgRVRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHREZWNvcmF0aW9uPihpbmhlcml0ZWRf
ZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMpOyB9Ci0gICAgRVRleHREZWNvcmF0aW9uIHRleHREZWNv
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHREZWNvcmF0aW9uPih2aXN1
YWwtPnRleHREZWNvcmF0aW9uKTsgfQorICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9u
c0luRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KGlu
aGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyk7IH0KKyAgICBUZXh0RGVjb3JhdGlvbiB0
ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9u
Pih2aXN1YWwtPnRleHREZWNvcmF0aW9uKTsgfQogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAg
VGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb25TdHlsZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dGV4dERlY29yYXRpb25TdHlsZSk7IH0KICAgICBUZXh0QWxpZ25MYXN0IHRleHRBbGlnbkxhc3Qo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QWxpZ25MYXN0PihyYXJlSW5oZXJpdGVk
RGF0YS0+bV90ZXh0QWxpZ25MYXN0KTsgfQpAQCAtMTE0Myw5ICsxMTQzLDkgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2KSB7IGluaGVyaXRlZF9m
bGFncy5fdGV4dF9hbGlnbiA9IHY7IH0KICAgICB2b2lkIHNldFRleHRUcmFuc2Zvcm0oRVRleHRU
cmFuc2Zvcm0gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtID0gdjsgfQotICAg
IHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChFVGV4dERlY29yYXRpb24gdikgeyBp
bmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgfD0gdjsgfQotICAgIHZvaWQgc2V0VGV4
dERlY29yYXRpb25zSW5FZmZlY3QoRVRleHREZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdz
Ll90ZXh0X2RlY29yYXRpb25zID0gdjsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb24oRVRl
eHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUih2aXN1YWwsIHRleHREZWNvcmF0aW9uLCB2KTsgfQor
ICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7
IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8PSB2OyB9CisgICAgdm9pZCBzZXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFn
cy5fdGV4dF9kZWNvcmF0aW9ucyA9IHY7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKFRl
eHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUih2aXN1YWwsIHRleHREZWNvcmF0aW9uLCB2KTsgfQog
I2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRl
eHREZWNvcmF0aW9uU3R5bGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Rl
eHREZWNvcmF0aW9uU3R5bGUsIHYpOyB9CiAgICAgdm9pZCBzZXRUZXh0QWxpZ25MYXN0KFRleHRB
bGlnbkxhc3QgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRBbGlnbkxhc3Qs
IHYpOyB9CkBAIC0xNjI4LDcgKzE2MjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNob3J0IGlu
aXRpYWxPcnBoYW5zKCkgeyByZXR1cm4gMjsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbExp
bmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wLCBQZXJjZW50KTsgfQogICAgIHN0YXRp
YyBFVGV4dEFsaWduIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBUQVNUQVJUOyB9Ci0gICAg
c3RhdGljIEVUZXh0RGVjb3JhdGlvbiBpbml0aWFsVGV4dERlY29yYXRpb24oKSB7IHJldHVybiBU
RE5PTkU7IH0KKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb24gaW5pdGlhbFRleHREZWNvcmF0aW9u
KCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25Ob25lOyB9CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkK
ICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25TdHlsZSBpbml0aWFsVGV4dERlY29yYXRpb25TdHls
ZSgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDsgfQogICAgIHN0YXRpYyBUZXh0
QWxpZ25MYXN0IGluaXRpYWxUZXh0QWxpZ25MYXN0KCkgeyByZXR1cm4gVGV4dEFsaWduTGFzdEF1
dG87IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKaW5kZXggNTg4MzQ5OWI1MjM5NDliOWExNDZlYjE3NTY2ZTNmZGU4YjM5
NDM0MC4uNmY1MWI5MjMwNTg3ZDgzOWUxYTljMGQzYjhiMDllYjExNDVlYzYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgKQEAgLTMzOSwxMiArMzM5LDEyIEBAIGVudW0gRVRleHRUcmFuc2Zvcm0gewogICAgIENBUElU
QUxJWkUsIFVQUEVSQ0FTRSwgTE9XRVJDQVNFLCBUVE5PTkUKIH07CiAKLXN0YXRpYyBjb25zdCBz
aXplX3QgRVRleHREZWNvcmF0aW9uQml0cyA9IDQ7Ci1lbnVtIEVUZXh0RGVjb3JhdGlvbiB7Ci0g
ICAgVEROT05FID0gMHgwICwgVU5ERVJMSU5FID0gMHgxLCBPVkVSTElORSA9IDB4MiwgTElORV9U
SFJPVUdIPSAweDQsIEJMSU5LID0gMHg4CitzdGF0aWMgY29uc3Qgc2l6ZV90IFRleHREZWNvcmF0
aW9uQml0cyA9IDQ7CitlbnVtIFRleHREZWNvcmF0aW9uIHsKKyAgICBUZXh0RGVjb3JhdGlvbk5v
bmUgPSAweDAgLCBUZXh0RGVjb3JhdGlvblVuZGVybGluZSA9IDB4MSwgVGV4dERlY29yYXRpb25P
dmVybGluZSA9IDB4MiwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaD0gMHg0LCBUZXh0RGVjb3Jh
dGlvbkJsaW5rID0gMHg4CiB9OwotaW5saW5lIEVUZXh0RGVjb3JhdGlvbiBvcGVyYXRvcnwoRVRl
eHREZWNvcmF0aW9uIGEsIEVUZXh0RGVjb3JhdGlvbiBiKSB7IHJldHVybiBFVGV4dERlY29yYXRp
b24oaW50KGEpIHwgaW50KGIpKTsgfQotaW5saW5lIEVUZXh0RGVjb3JhdGlvbiYgb3BlcmF0b3J8
PShFVGV4dERlY29yYXRpb24mIGEsIEVUZXh0RGVjb3JhdGlvbiBiKSB7IHJldHVybiBhID0gYSB8
IGI7IH0KK2lubGluZSBUZXh0RGVjb3JhdGlvbiBvcGVyYXRvcnwgKFRleHREZWNvcmF0aW9uIGEs
IFRleHREZWNvcmF0aW9uIGIpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uKGludChhKSB8IGludChi
KSk7IH0KK2lubGluZSBUZXh0RGVjb3JhdGlvbiYgb3BlcmF0b3J8PSAoVGV4dERlY29yYXRpb24m
IGEsIFRleHREZWNvcmF0aW9uIGIpIHsgcmV0dXJuIGEgPSBhIHwgYjsgfQogCiBlbnVtIFRleHRE
ZWNvcmF0aW9uU3R5bGUgewogICAgIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaAppbmRleCBiNTE0
MGE3OGRlYWVjYzJlNzRhNWNmYzU4YWE1ODcwMzBkYTQwYjZiLi4xMTdjZmYxYWFmYmZkNjNlZjA3
Njk0YjQ1ZWQ0ZTkwMGY4NzdlYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAg
IExlbmd0aEJveCBjbGlwOwogICAgIGJvb2wgaGFzQ2xpcCA6IDE7Ci0gICAgdW5zaWduZWQgdGV4
dERlY29yYXRpb24gOiBFVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29yYXRpb25zIGRl
ZmluZWQgKm9ubHkqIGJ5IHRoaXMgZWxlbWVudC4KKyAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlv
biA6IFRleHREZWNvcmF0aW9uQml0czsgLy8gVGV4dCBkZWNvcmF0aW9ucyBkZWZpbmVkICpvbmx5
KiBieSB0aGlzIGVsZW1lbnQuCiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZs
b2F0IG1fdGV4dEF1dG9zaXppbmdNdWx0aXBsaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNzg2NGQ0ZWU4YTJkMDEwNzk1
ZTA0MDcwODYwZDU3Yjg2ZDgzZDRiZi4uMDhhOWUxNGM3YTdiMjM1MzJjZGM4OGI0OGNkYjg2NTZm
YjY1N2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCkBAIC0zMTgsMTAgKzMxOCwxMCBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVu
aQogCiAgICAgICAgIC8vIFNwZWM6IEFsbCB0ZXh0IGRlY29yYXRpb25zIGV4Y2VwdCBsaW5lLXRo
cm91Z2ggc2hvdWxkIGJlIGRyYXduIGJlZm9yZSB0aGUgdGV4dCBpcyBmaWxsZWQgYW5kIHN0cm9r
ZWQ7IHRodXMsIHRoZSB0ZXh0IGlzIHJlbmRlcmVkIG9uIHRvcCBvZiB0aGVzZSBkZWNvcmF0aW9u
cy4KICAgICAgICAgaW50IGRlY29yYXRpb25zID0gc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFVOREVSTElORSkKLSAgICAgICAgICAg
IHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwgVU5ERVJMSU5FLCBmcmFnbWVudCk7
Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIE9WRVJMSU5FKQotICAgICAgICAgICAgcGFpbnRE
ZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBPVkVSTElORSwgZnJhZ21lbnQpOworICAgICAg
ICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKKyAgICAgICAgICAg
IHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwgVGV4dERlY29yYXRpb25VbmRlcmxp
bmUsIGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25P
dmVybGluZSkKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwg
VGV4dERlY29yYXRpb25PdmVybGluZSwgZnJhZ21lbnQpOwogCiAgICAgICAgIC8vIEZpbGwgdGV4
dAogICAgICAgICBpZiAoaGFzRmlsbCkgewpAQCAtMzM2LDggKzMzNiw4IEBAIHZvaWQgU1ZHSW5s
aW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiwgTGF5b3V0VW5pCiAgICAgICAgIH0KIAogICAgICAgICAvLyBTcGVjOiBMaW5lLXRocm91Z2gg
c2hvdWxkIGJlIGRyYXduIGFmdGVyIHRoZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tlZDsgdGh1
cywgdGhlIGxpbmUtdGhyb3VnaCBpcyByZW5kZXJlZCBvbiB0b3Agb2YgdGhlIHRleHQuCi0gICAg
ICAgIGlmIChkZWNvcmF0aW9ucyAmIExJTkVfVEhST1VHSCkKLSAgICAgICAgICAgIHBhaW50RGVj
b3JhdGlvbihwYWludEluZm8uY29udGV4dCwgTElORV9USFJPVUdILCBmcmFnbWVudCk7CisgICAg
ICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpCisgICAgICAg
ICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQsIFRleHREZWNvcmF0aW9uTGlu
ZVRocm91Z2gsIGZyYWdtZW50KTsKIAogICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0g
QXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTQ3OCwyMiArNDc4LDIyIEBAIGJvb2wgU1ZH
SW5saW5lVGV4dEJveDo6bWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRl
cyhjb25zdCBTVkdUZXh0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxv
YXQgcG9zaXRpb25PZmZzZXRGb3JEZWNvcmF0aW9uKEVUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9u
LCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGZsb2F0IHRoaWNrbmVzcykKK3N0YXRp
YyBpbmxpbmUgZmxvYXQgcG9zaXRpb25PZmZzZXRGb3JEZWNvcmF0aW9uKFRleHREZWNvcmF0aW9u
IGRlY29yYXRpb24sIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgZmxvYXQgdGhpY2tu
ZXNzKQogewogICAgIC8vIEZJWE1FOiBGb3IgU1ZHIEZvbnRzIHdlIG5lZWQgdG8gdXNlIHRoZSBh
dHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIDxmb250LWZhY2U+IGlmIHNwZWNpZmllZC4KICAgICAv
LyBDb21wYXRpYmxlIHdpdGggQmF0aWsvT3BlcmEuCi0gICAgaWYgKGRlY29yYXRpb24gPT0gVU5E
RVJMSU5FKQorICAgIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQog
ICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSArIHRoaWNrbmVzcyAqIDEu
NWY7Ci0gICAgaWYgKGRlY29yYXRpb24gPT0gT1ZFUkxJTkUpCisgICAgaWYgKGRlY29yYXRpb24g
PT0gVGV4dERlY29yYXRpb25PdmVybGluZSkKICAgICAgICAgcmV0dXJuIHRoaWNrbmVzczsKLSAg
ICBpZiAoZGVjb3JhdGlvbiA9PSBMSU5FX1RIUk9VR0gpCisgICAgaWYgKGRlY29yYXRpb24gPT0g
VGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmZs
b2F0QXNjZW50KCkgKiA1IC8gOC4wZjsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiAwLjBmOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRlY29y
YXRpb24oRVRleHREZWNvcmF0aW9uLCBjb25zdCBGb250JiBmb250KQorc3RhdGljIGlubGluZSBm
bG9hdCB0aGlja25lc3NGb3JEZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uLCBjb25zdCBGb250JiBm
b250KQogewogICAgIC8vIEZJWE1FOiBGb3IgU1ZHIEZvbnRzIHdlIG5lZWQgdG8gdXNlIHRoZSBh
dHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIDxmb250LWZhY2U+IGlmIHNwZWNpZmllZC4KICAgICAv
LyBDb21wYXRpYmxlIHdpdGggQmF0aWsvT3BlcmEKQEAgLTUwNyw3ICs1MDcsNyBAQCBzdGF0aWMg
aW5saW5lIFJlbmRlck9iamVjdCogZmluZFJlbmRlck9iamVjdERlZmluaW5pbmdUZXh0RGVjb3Jh
dGlvbihJbmxpbmVGbG93QgogICAgIHdoaWxlIChwYXJlbnRCb3gpIHsKICAgICAgICAgcmVuZGVy
ZXIgPSBwYXJlbnRCb3gtPnJlbmRlcmVyKCk7CiAKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHls
ZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpLT50ZXh0RGVjb3JhdGlvbigpICE9IFRETk9ORSkKKyAg
ICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpLT50ZXh0RGVj
b3JhdGlvbigpICE9IFRleHREZWNvcmF0aW9uTm9uZSkKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIHBhcmVudEJveCA9IHBhcmVudEJveC0+cGFyZW50KCk7CkBAIC01MTcsOSArNTE3LDkg
QEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGZpbmRSZW5kZXJPYmplY3REZWZpbmluaW5n
VGV4dERlY29yYXRpb24oSW5saW5lRmxvd0IKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKLXZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgRVRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYg
ZnJhZ21lbnQpCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbnQpCiB7Ci0gICAgaWYgKHRleHRSZW5kZXJlcigpLT5zdHlsZSgp
LT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpID09IFRETk9ORSkKKyAgICBpZiAodGV4dFJlbmRl
cmVyKCktPnN0eWxlKCktPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgPT0gVGV4dERlY29yYXRp
b25Ob25lKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaW5kIG91dCB3aGljaCByZW5kZXIg
c3R5bGUgZGVmaW5lZCB0aGUgdGV4dC1kZWNvcmF0aW9uLCBhcyBpdHMgZmlsbC9zdHJva2UgcHJv
cGVydGllcyBoYXZlIHRvIGJlIHVzZWQgZm9yIGRyYXdpbmcgaW5zdGVhZCBvZiBvdXJzLgpAQCAt
NTQ3LDcgKzU0Nyw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgRVRleHREZWNvcmF0aW9uCiAgICAgfQogfQogCi12b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIEVUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJh
Z21lbnQmIGZyYWdtZW50LCBSZW5kZXJPYmplY3QqIGRlY29yYXRpb25SZW5kZXJlcikKK3ZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdt
ZW50JiBmcmFnbWVudCwgUmVuZGVyT2JqZWN0KiBkZWNvcmF0aW9uUmVuZGVyZXIpCiB7CiAgICAg
QVNTRVJUKCFtX3BhaW50aW5nUmVzb3VyY2UpOwogICAgIEFTU0VSVChtX3BhaW50aW5nUmVzb3Vy
Y2VNb2RlICE9IEFwcGx5VG9EZWZhdWx0TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IDJkYjE4ZDE2ZTQ4ZDkyOTBiN2I3Mjc3
MWM2MjBiMTI3MGYzZjNiMjMuLjBkNTg0MzdkMDI3Yjk4NjdkMWZhZmZiNDBlZThlYjg2YTE5NGYx
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5oCkBAIC03NCw4ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwcmVwYXJlR3JhcGhpY3ND
b250ZXh0Rm9yVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBmbG9hdCBzY2FsaW5nRmFj
dG9yLCBUZXh0UnVuJiwgUmVuZGVyU3R5bGUqKTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGljc0Nv
bnRleHRBZnRlclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJiwgVGV4dFJ1biYpOwogCi0g
ICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiwgRVRleHREZWNvcmF0aW9u
LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKTsKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhT
dHlsZShHcmFwaGljc0NvbnRleHQqLCBFVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYsIFJlbmRlck9iamVjdCogZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50
RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4
dEZyYWdtZW50Jik7CisgICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3ND
b250ZXh0KiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJlbmRlck9i
amVjdCogZGVjb3JhdGlvblJlbmRlcmVyKTsKICAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dz
KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlclN0eWxlKiwgVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRG
cmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pOwogICAgIHZvaWQg
cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHNl
bGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwg
Ym9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCg==
</data>
<flag name="review"
          id="223906"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202573</attachid>
            <date>2013-05-22 10:55:31 -0700</date>
            <delta_ts>2013-05-22 11:37:44 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-116581-20130522135416.patch</filename>
            <type>text/plain</type>
            <size>33204</size>
            <attacher name="Bruno Abinader (history only)">bruno.abinader</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwNDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEwYzA1OGU1MDgwNTZm
ZTNkZDdjZTc1OTM0MTEyNzlmNTcyYTgyMC4uMjNhMjBkNjk0ZTY4OTk1MTBmZmNjMmI1MzQ3MDg5
NjNhMDFiYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA1LTIxICBCcnVu
byBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFiaW5hZGVyQGJhc3lza29tLmNvbT4KKwor
ICAgICAgICBbY3NzXSBVcGRhdGUgRVRleHREZWNvcmF0aW9ucyBlbnVtIHRvIFRleHREZWNvcmF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBDdXJy
ZW50bHksIEVUZXh0RGVjb3JhdGlvbnMgZW51bSB1c2VzIGEgQy1saWtlIGNvZGluZyBzdHlsZSBm
b3IgaXRzCisgICAgICAgIGVudW1lcmF0aW9uIHZhbHVlcywgYXMgd2VsbCBhcyBhICdFJyBwcmVm
aXggdGhhdCBzdXJlbHkgaGFkIHNvbWUgbWVhbmluZworICAgICAgICBpbiB0aGUgcGFzdCwgYnV0
IG5vdCBub3dhZGF5cy4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2VzLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Omhhc1BsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpoYXNVbmRlcmxpbmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdldEF0dHJpYnV0ZVNl
dEZvckFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVT
dHJpbmdTZXRTdHlsZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0
eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHREZWNvcmF0aW9uKToKKyAgICAgICAg
KiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5VGV4dERlY29yYXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRB
dHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9IVE1M
Q29udmVydGVyLm1tOgorICAgICAgICAoK1tXZWJIVE1MQ29udmVydGVyIGVkaXRpbmdBdHRyaWJ1
dGVkU3RyaW5nRnJvbVJhbmdlOl0pOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25D
b2xvcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3J8KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yfD0pOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaDoKKyAgICAgICAgKFN0eWxlVmlz
dWFsRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnBvc2l0aW9uT2Zmc2V0Rm9yRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0
aGlja25lc3NGb3JEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRSZW5kZXJPYmpl
Y3REZWZpbmluaW5nVGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5l
VGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbldpdGhTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94Lmg6CisKIDIwMTMtMDUtMjEgIEh1Z28gUGFyZW50ZSBMaW1hICA8
aHVnby5saW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0VGTF0gQWRkIG1pc3NpbmcgI2lm
IGd1YXJkcyBvbiBkcmFnIHN1cHBvcnQgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
MWVlOGE5MGIzYjg3NTQxMzgwZjk3NGJkYTM5YTUyZjc0NDczYzg1My4uNzExNjU0ZTRlNGRjZWUx
ZTg5ZjMyMzNlYTI3MjNkZTdmMWIxN2M2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMjM0
LDcgKzMyMzQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1BsYWluVGV4
dCgpIGNvbnN0CiAgICAgCiAgICAgcmV0dXJuIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWln
aHQoKSA9PSBGb250V2VpZ2h0Tm9ybWFsCiAgICAgICAgICYmIHN0eWxlLT5mb250RGVzY3JpcHRp
b24oKS5pdGFsaWMoKSA9PSBGb250SXRhbGljT2ZmCi0gICAgICAgICYmIHN0eWxlLT50ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCgpID09IFRETk9ORTsKKyAgICAgICAgJiYgc3R5bGUtPnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCkgPT0gVGV4dERlY29yYXRpb25Ob25lOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1NhbWVGb250KFJlbmRlck9iamVjdCogcmVuZGVyZXIp
IGNvbnN0CkBAIC0zMjY2LDcgKzMyNjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Omhhc1VuZGVybGluZSgpIGNvbnN0CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPnRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBVTkRFUkxJTkU7CisgICAgcmV0dXJuIG1fcmVuZGVyZXIt
PnN0eWxlKCktPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvblVuZGVy
bGluZTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om5hbWVGb3JNU0FB
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCA3YzIwM2U0
Y2UzOGM2NGIzNTI3MTYzZmFkM2Q4YTU3NmJjNmM2YjJjLi5hOWY1M2FkMDNkZjEyM2UzNGJkM2U1
NTIzYWYzY2VkZmNjMmM5MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
CkBAIC0zMTIsMTEgKzMxMiwxMSBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1
dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdAogICAgICAgICBy
ZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9n
ZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAiZmlsbCIpOwogICAgIH0KIAot
ICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmli
dXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfVU5ERVJMSU5FKSwgKHN0eWxlLT50ZXh0RGVjb3Jh
dGlvbigpICYgVU5ERVJMSU5FKSA/ICJzaW5nbGUiIDogIm5vbmUiKTsKKyAgICByZXN1bHQgPSBh
ZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShB
VEtfVEVYVF9BVFRSX1VOREVSTElORSksIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIFRleHRE
ZWNvcmF0aW9uVW5kZXJsaW5lKSA/ICJzaW5nbGUiIDogIm5vbmUiKTsKIAogICAgIHJlc3VsdCA9
IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1l
KEFUS19URVhUX0FUVFJfU1RZTEUpLCBzdHlsZS0+Zm9udCgpLml0YWxpYygpID8gIml0YWxpYyIg
OiAibm9ybWFsIik7CiAKLSAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQs
IGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1NUUklLRVRIUk9VR0gp
LCAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBMSU5FX1RIUk9VR0gpID8gInRydWUiIDogImZh
bHNlIik7CisgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4
dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9TVFJJS0VUSFJPVUdIKSwgKHN0eWxl
LT50ZXh0RGVjb3JhdGlvbigpICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKIAogICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwg
YXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSU5WSVNJQkxFKSwgKHN0
eWxlLT52aXNpYmlsaXR5KCkgPT0gSElEREVOKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDQ3ZGUxNjhjNDBhYTZkOTkz
MTZiMGUyOTVjMGY5Njc3ZDUwYzhkY2MuLjc3MmMxOTk2NmEzMzIzNTRhNjRjOTdjNDhlMzZiMjEz
NGRhMTVkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0x
NTA0LDEzICsxNTA0LDEzIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUo
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAgICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRGb250KGF0dHJTdHJpbmcsIHN0eWxlLT5mb250KCkucHJpbWFyeUZvbnQoKS0+
Z2V0R1NGb250KCksIHJhbmdlKTsKICAgICAgICAgICAgICAgICAKICAgICBpbnQgZGVjb3IgPSBz
dHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAoKGRlY29yICYgKFVOREVS
TElORSB8IExJTkVfVEhST1VHSCkpICE9IDApIHsKKyAgICBpZiAoKGRlY29yICYgKFRleHREZWNv
cmF0aW9uVW5kZXJsaW5lIHwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkpICE9IDApIHsKICAg
ICAgICAgLy8gZmluZCBjb2xvcnMgdXNpbmcgcXVpcmsgbW9kZSBhcHByb2FjaCAoc3RyaWN0IG1v
ZGUgd291bGQgdXNlIGN1cnJlbnQKICAgICAgICAgLy8gY29sb3IgZm9yIGFsbCBidXQgdGhlIHJv
b3QgbGluZSBib3gsIHdoaWNoIHdvdWxkIHVzZSBnZXRUZXh0RGVjb3JhdGlvbkNvbG9ycykKICAg
ICAgICAgQ29sb3IgdW5kZXJsaW5lLCBvdmVybGluZSwgbGluZXRocm91Z2g7CiAgICAgICAgIHJl
bmRlcmVyLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhkZWNvciwgdW5kZXJsaW5lLCBvdmVybGlu
ZSwgbGluZXRocm91Z2gpOwogICAgICAgICAKLSAgICAgICAgaWYgKGRlY29yICYgVU5ERVJMSU5F
KQorICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKICAgICAgICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIFVJQWNjZXNzaWJpbGl0
eVRva2VuVW5kZXJsaW5lLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggYzRk
MGYxNjQ5ODJiMWVjZjViY2Y0NjIyOTk0YzQ3MGU0YTBlYzZmNC4uMjllMGQxNjdhZDU5MjJiNGMy
Y2JlMjQzNDZjODc3Nzc0M2JjNDc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTY3MiwyOCArNjcyLDI4IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3Ry
aW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAg
ICAgCiAgICAgLy8gc2V0IHVuZGVybGluZSBhbmQgc3RyaWtldGhyb3VnaAogICAgIGludCBkZWNv
ciA9IHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIGlmICgoZGVjb3IgJiBV
TkRFUkxJTkUpID09IDApIHsKKyAgICBpZiAoKGRlY29yICYgVGV4dERlY29yYXRpb25VbmRlcmxp
bmUpID09IDApIHsKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNz
aWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogICAgICAgICBbYXR0
clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lQ29sb3JUZXh0
QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICB9CiAgICAgCi0gICAgaWYgKChkZWNvciAmIExJ
TkVfVEhST1VHSCkgPT0gMCkgeworICAgIGlmICgoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmVU
aHJvdWdoKSA9PSAwKSB7CiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0Fj
Y2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAg
ICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJv
dWdoQ29sb3JUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICB9CiAgICAgCi0gICAgaWYg
KChkZWNvciAmIChVTkRFUkxJTkUgfCBMSU5FX1RIUk9VR0gpKSAhPSAwKSB7CisgICAgaWYgKChk
ZWNvciAmIChUZXh0RGVjb3JhdGlvblVuZGVybGluZSB8IFRleHREZWNvcmF0aW9uTGluZVRocm91
Z2gpKSAhPSAwKSB7CiAgICAgICAgIC8vIGZpbmQgY29sb3JzIHVzaW5nIHF1aXJrIG1vZGUgYXBw
cm9hY2ggKHN0cmljdCBtb2RlIHdvdWxkIHVzZSBjdXJyZW50CiAgICAgICAgIC8vIGNvbG9yIGZv
ciBhbGwgYnV0IHRoZSByb290IGxpbmUgYm94LCB3aGljaCB3b3VsZCB1c2UgZ2V0VGV4dERlY29y
YXRpb25Db2xvcnMpCiAgICAgICAgIENvbG9yIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJv
dWdoOwogICAgICAgICByZW5kZXJlci0+Z2V0VGV4dERlY29yYXRpb25Db2xvcnMoZGVjb3IsIHVu
ZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoKTsKICAgICAgICAgCi0gICAgICAgIGlmICgo
ZGVjb3IgJiBVTkRFUkxJTkUpICE9IDApIHsKKyAgICAgICAgaWYgKChkZWNvciAmIFRleHREZWNv
cmF0aW9uVW5kZXJsaW5lKSAhPSAwKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRl
LCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwogICAgICAgICAgICAgQVhB
dHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxp
bmVDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lKSwgcmFuZ2UpOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBpZiAoKGRlY29yICYgTElORV9USFJPVUdIKSAhPSAwKSB7
CisgICAgICAgIGlmICgoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSAhPSAwKSB7
CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0Fj
Y2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10sIHJhbmdlKTsKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29s
b3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJp
YnV0ZSwgbnNDb2xvcihsaW5ldGhyb3VnaCksIHJhbmdlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA2
NjRmMWFjMzc3MGQ3ZjU3ZmUwMTYzYTU2YWVlNmJmOWJiODVkNTkzLi5hYzBmNGE2OTVkNzlkZGI0
MjJiNjdkZmI5ZDliY2Y5MDdkZGU3ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTMzNSwxMSArMTMzNSwxMSBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NT
VmFsdWUoaW50IHRleHREZWNvcmF0aQogewogICAgIC8vIEJsaW5rIHZhbHVlIGlzIGlnbm9yZWQu
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiBVTkRFUkxJTkUpCisgICAg
aWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpCiAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVV
bmRlcmxpbmUpKTsKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiBPVkVSTElORSkKKyAgICBpZiAo
dGV4dERlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQogICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT3Zlcmxp
bmUpKTsKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiBMSU5FX1RIUk9VR0gpCisgICAgaWYgKHRl
eHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkKICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVU
aHJvdWdoKSk7CiAKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggZGVmODdjZGUxNjY0MTIwYTkx
ZTQ4OTEwZWU4YzhjZWRkODlhYzcyOC4uNGZkNmNkYjE3OGJiODdlZmY1OGI3ZmY0N2YzMGRiNzQ4
MTM2YmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCkBAIC0yNDExLDIzICsyNDExLDIzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0SnVzdGlmeSgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQ1NT
M19URVhUCiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBF
VGV4dERlY29yYXRpb24oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIFRleHREZWNvcmF0aW9uKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdmFs
dWUuaWRlbnQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIFRETk9O
RTsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTm9uZTsKICAgICBjYXNlIENTU1ZhbHVl
VW5kZXJsaW5lOgotICAgICAgICByZXR1cm4gVU5ERVJMSU5FOworICAgICAgICByZXR1cm4gVGV4
dERlY29yYXRpb25VbmRlcmxpbmU7CiAgICAgY2FzZSBDU1NWYWx1ZU92ZXJsaW5lOgotICAgICAg
ICByZXR1cm4gT1ZFUkxJTkU7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5l
OwogICAgIGNhc2UgQ1NTVmFsdWVMaW5lVGhyb3VnaDoKLSAgICAgICAgcmV0dXJuIExJTkVfVEhS
T1VHSDsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2g7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUJsaW5rOgotICAgICAgICByZXR1cm4gQkxJTks7CisgICAgICAgIHJldHVybiBU
ZXh0RGVjb3JhdGlvbkJsaW5rOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBURE5PTkU7CisgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTm9uZTsKIH0KIAog
I2lmIEVOQUJMRShDU1MzX1RFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0
eWxlQnVpbGRlci5jcHAKaW5kZXggMTY0ODM0MTk3YzNjOGJhN2EyNjcwMDA5MjNhMjBkYmY0ZTUx
YzVjNC4uNDEyNDQ1YmFmZDg0ZGM2YzFkNTFhZWQwN2FmYmExMGEyNzdiZWZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtMTI1MSw3ICsx
MjUxLDcgQEAgY2xhc3MgQXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEVUZXh0RGVjb3Jh
dGlvbiB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOworICAgICAgICBU
ZXh0RGVjb3JhdGlvbiB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwog
ICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUpOyBpLmhhc01vcmUoKTsg
aS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52YWx1ZSgpOwog
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXRlbS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKTsKQEAgLTEyNjEsNyArMTI2MSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
c3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7Ci0gICAgICAgIFBy
b3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPEVUZXh0RGVj
b3JhdGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbiwgRVRleHREZWNvcmF0aW9uLCAm
UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uLCBFVGV4dERlY29yYXRpb24sICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOworICAgICAgICBQ
cm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxUZXh0RGVj
b3JhdGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb24sICZS
ZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb24sIFRleHREZWNvcmF0aW9uLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKICAgICAgICAgcmV0
dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5kbGVyLmlu
aXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA4MThhNTJlNDQ4ZWYzZDIzZGY1OGRjODE5ZGVj
YzQwOWE5YjIzYjRkLi42NmZiZDEwNzEyOGViYjMxMDI5NWJiYWEyODc4NzY1ODY5NDYyNDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yMDcsNyArMjA3LDcg
QEAgTlNEaWN0aW9uYXJ5KiBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQo
KSBjb25zdAogICAgIH0KIAogICAgIGludCBkZWNvcmF0aW9uID0gc3R5bGUtPnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCk7Ci0gICAgaWYgKGRlY29yYXRpb24gJiBMSU5FX1RIUk9VR0gpCisgICAg
aWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQogICAgICAgICBbcmVz
dWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpOU1VuZGVybGluZVN0eWxlU2lu
Z2xlXSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXTsKIAogICAgIGlu
dCBzdXBlcnNjcmlwdEludCA9IDA7CkBAIC0yMzEsNyArMjMxLDcgQEAgTlNEaWN0aW9uYXJ5KiBF
ZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIGlmIChz
dXBlcnNjcmlwdEludCkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6c3VwZXJzY3JpcHRJbnRdIGZvcktleTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFt
ZV07CiAKLSAgICBpZiAoZGVjb3JhdGlvbiAmIFVOREVSTElORSkKKyAgICBpZiAoZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNV
bmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwogCiAgICAgaWYgKG5vZGVUb1JlbW92ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggNGUyMjVi
NzM2ZGZkYmYyMWU2MTcyYzFiYjZmNjNmNTcyZDMwYjZiYi4uMTA2ODMzMzRmNjVlZTI4MDc4NzBm
NGVhYjNlMjg3YjUyZGZlZjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hU
TUxDb252ZXJ0ZXIubW0KQEAgLTE2OTIsNyArMTY5Miw3IEBAICsgKE5TQXR0cmlidXRlZFN0cmlu
ZyAqKWVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlOihSYW5nZSopcmFuZ2UKICAgICAg
ICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBSZW5kZXJT
dHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLT50ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVU5ERVJMSU5FKQorICAgICAgICBpZiAoc3R5bGUtPnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKICAgICAg
ICAgICAgIFthdHRycy5nZXQoKSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2Vy
Ok5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRl
TmFtZV07CiAgICAgICAgIGlmIChOU0ZvbnQgKmZvbnQgPSBzdHlsZS0+Zm9udCgpLnByaW1hcnlG
b250KCktPmdldE5TRm9udCgpKQogICAgICAgICAgICAgW2F0dHJzLmdldCgpIHNldE9iamVjdDpm
b250IGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzNjVkMDJlYjZlNjg3NjZhNTllZDNjYzNhZTAyNzA1
MzExODgyMjNlLi45N2UzYzE2Yzc4MGY2YTUyNDU1MmRkYzczNjcxMzMzZTlhZWU4NTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC03NzksOCArNzc5
LDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIH0KIAogICAgIC8vIFBhaW50IGRlY29y
YXRpb25zCi0gICAgRVRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9ucyA9IHN0eWxlVG9Vc2Ut
PnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9ucyAhPSBU
RE5PTkUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pIHsKKyAgICBU
ZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBzdHlsZVRvVXNlLT50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpOworICAgIGlmICh0ZXh0RGVjb3JhdGlvbnMgIT0gVGV4dERlY29yYXRpb25O
b25lICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKSB7CiAgICAgICAg
IHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCB0ZXh0RmlsbENvbG9yLCB0ZXh0U3Ryb2tl
Q29sb3IsIHRleHRTdHJva2VXaWR0aCwgc3R5bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsKICAgICAg
ICAgaWYgKGNvbWJpbmVkVGV4dCkKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3Rh
dGlvbihib3hSZWN0LCBDbG9ja3dpc2UpKTsKQEAgLTExMTksNyArMTExOSw3IEBAIHN0YXRpYyB2
b2lkIHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEZs
b2F0UG9pbnQmIHAxLCBGCiB9CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAKLXZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYgYm94T3JpZ2luLCBFVGV4dERlY29yYXRpb24gZGVjbywgVGV4dERlY29yYXRpb25T
dHlsZSBkZWNvcmF0aW9uU3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKK3ZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBUZXh0RGVjb3JhdGlvbiBkZWNvLCBUZXh0RGVjb3Jh
dGlvblN0eWxlIGRlY29yYXRpb25TdHlsZSwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQogewog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW1wcm92ZSB0aGlzIHJ1bGUgYW5kIG5vdCBhbHdheXMg
anVzdCBhc3N1bWUgMS4KICAgICBjb25zdCBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9
IDEuZjsKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNv
cmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICBi
b29sIGlzUHJpbnRpbmcgPSB0ZXh0UmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKTsK
ICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3ModGV4dERlY29yYXRpb25UaGlja25lc3Mp
OwogCi0gICAgYm9vbCBsaW5lc0FyZU9wYXF1ZSA9ICFpc1ByaW50aW5nICYmICghKGRlY28gJiBV
TkRFUkxJTkUpIHx8IHVuZGVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVjbyAmIE9WRVJM
SU5FKSB8fCBvdmVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVjbyAmIExJTkVfVEhST1VH
SCkgfHwgbGluZXRocm91Z2guYWxwaGEoKSA9PSAyNTUpOworICAgIGJvb2wgbGluZXNBcmVPcGFx
dWUgPSAhaXNQcmludGluZyAmJiAoIShkZWNvICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpIHx8
IHVuZGVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVjbyAmIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUpIHx8IG92ZXJsaW5lLmFscGhhKCkgPT0gMjU1KSAmJiAoIShkZWNvICYgVGV4dERlY29y
YXRpb25MaW5lVGhyb3VnaCkgfHwgbGluZXRocm91Z2guYWxwaGEoKSA9PSAyNTUpOwogCiAgICAg
UmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0
eWxlKCkpOwogICAgIGludCBiYXNlbGluZSA9IHN0eWxlVG9Vc2UtPmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCk7CkBAIC0xMTk0LDcgKzExOTQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVj
b3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAg
ICAgIGZsb2F0IGRvdWJsZU9mZnNldCA9IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzICsgMS5mOwog
I2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZSh0ZXh0
RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShkZWNvcmF0aW9uU3R5bGUpKTsKLSAgICAgICAg
aWYgKGRlY28gJiBVTkRFUkxJTkUpIHsKKyAgICAgICAgaWYgKGRlY28gJiBUZXh0RGVjb3JhdGlv
blVuZGVybGluZSkgewogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodW5kZXJs
aW5lLCBjb2xvclNwYWNlKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAgVGV4
dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uID0gc3R5bGVUb1VzZS0+dGV4dFVu
ZGVybGluZVBvc2l0aW9uKCk7CkBAIC0xMjE4LDcgKzEyMTgsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UG9pbnQmCiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChs
b2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIGJhc2VsaW5lICsgMSksIHdpZHRoLCBp
c1ByaW50aW5nKTsKICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQotICAgICAgICBpZiAo
ZGVjbyAmIE9WRVJMSU5FKSB7CisgICAgICAgIGlmIChkZWNvICYgVGV4dERlY29yYXRpb25PdmVy
bGluZSkgewogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iob3ZlcmxpbmUsIGNv
bG9yU3BhY2UpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICBzd2l0Y2ggKGRl
Y29yYXRpb25TdHlsZSkgewpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBv
aW50JgogICAgICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICB9Ci0gICAg
ICAgIGlmIChkZWNvICYgTElORV9USFJPVUdIKSB7CisgICAgICAgIGlmIChkZWNvICYgVGV4dERl
Y29yYXRpb25MaW5lVGhyb3VnaCkgewogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IobGluZXRocm91Z2gsIGNvbG9yU3BhY2UpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAg
ICAgICAgICBzd2l0Y2ggKGRlY29yYXRpb25TdHlsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggM2YxZDYzOWZjY2EwNWY5OTRjMTgyNmFkNjE4ZTZjYmY5
MWNhMTdkMi4uYTFjOWQ5MzBiZTFlNzk5ZGNkZmM0NGY0YWFkMzg0ZjQyNDVlZmM1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0xODQsNyArMTg0LDcgQEAg
cHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludERlY29yYXRpb24o
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBFVGV4dERlY29y
YXRpb24sIFRleHREZWNvcmF0aW9uU3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqKTsKKyAgICB2b2lk
IHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50JiBib3hP
cmlnaW4sIFRleHREZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxlLCBjb25zdCBTaGFkb3dE
YXRhKik7CiAgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlclN0eWxlKiwgY29uc3QgRm9udCYsIENvbG9yIHRl
eHRDb2xvcik7CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgRG9jdW1lbnRNYXJrZXIqLCBSZW5kZXJTdHls
ZSosIGNvbnN0IEZvbnQmLCBib29sIGdyYW1tYXIpOwogICAgIHZvaWQgcGFpbnRUZXh0TWF0Y2hN
YXJrZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBEb2N1
bWVudE1hcmtlciosIFJlbmRlclN0eWxlKiwgY29uc3QgRm9udCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1YjVkZWE0ZjU0ODdlZDc5ZmExMjI2ZTA5
YTRiMmQ5Y2NlMDE1M2QyLi4zNTg5Njg1MDdkOTdjNjEyY2I1ODE2YmY5MWM2N2JhY2ZmYTJiYzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjgxNCw3
ICsyODE0LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGlu
dCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ28KIHsKICAgICBSZW5kZXJPYmplY3Qq
IGN1cnIgPSB0aGlzOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gMDsKLSAgICBFVGV4
dERlY29yYXRpb24gY3VyckRlY3MgPSBURE5PTkU7CisgICAgVGV4dERlY29yYXRpb24gY3VyckRl
Y3MgPSBUZXh0RGVjb3JhdGlvbk5vbmU7CiAgICAgQ29sb3IgcmVzdWx0Q29sb3I7CiAgICAgZG8g
ewogICAgICAgICBzdHlsZVRvVXNlID0gY3Vyci0+c3R5bGUoZmlyc3RsaW5lU3R5bGUpOwpAQCAt
MjgyMiwxNiArMjgyMiwxNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25D
b2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lLCBDbwogICAgICAgICByZXN1
bHRDb2xvciA9IGRlY29yYXRpb25Db2xvcihzdHlsZVRvVXNlKTsKICAgICAgICAgLy8gUGFyYW1l
dGVyICdkZWNvcmF0aW9ucycgaXMgY2FzdCBhcyBhbiBpbnQgdG8gZW5hYmxlIHRoZSBiaXR3aXNl
IG9wZXJhdGlvbnMgYmVsb3cuCiAgICAgICAgIGlmIChjdXJyRGVjcykgewotICAgICAgICAgICAg
aWYgKGN1cnJEZWNzICYgVU5ERVJMSU5FKSB7Ci0gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMg
Jj0gflVOREVSTElORTsKKyAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFRleHREZWNvcmF0aW9u
VW5kZXJsaW5lKSB7CisgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gflRleHREZWNvcmF0
aW9uVW5kZXJsaW5lOwogICAgICAgICAgICAgICAgIHVuZGVybGluZSA9IHJlc3VsdENvbG9yOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGN1cnJEZWNzICYgT1ZFUkxJTkUpIHsKLSAg
ICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAmPSB+T1ZFUkxJTkU7CisgICAgICAgICAgICBpZiAo
Y3VyckRlY3MgJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7CisgICAgICAgICAgICAgICAgZGVj
b3JhdGlvbnMgJj0gflRleHREZWNvcmF0aW9uT3ZlcmxpbmU7CiAgICAgICAgICAgICAgICAgb3Zl
cmxpbmUgPSByZXN1bHRDb2xvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjdXJy
RGVjcyAmIExJTkVfVEhST1VHSCkgewotICAgICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5M
SU5FX1RIUk9VR0g7CisgICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBUZXh0RGVjb3JhdGlvbkxp
bmVUaHJvdWdoKSB7CisgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gflRleHREZWNvcmF0
aW9uTGluZVRocm91Z2g7CiAgICAgICAgICAgICAgICAgbGluZXRocm91Z2ggPSByZXN1bHRDb2xv
cjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjg0NywxMSArMjg0NywxMSBAQCB2b2lk
IFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRpb25zLCBD
b2xvciYgdW5kZXJsaW5lLCBDbwogICAgIGlmIChkZWNvcmF0aW9ucyAmJiBjdXJyKSB7CiAgICAg
ICAgIHN0eWxlVG9Vc2UgPSBjdXJyLT5zdHlsZShmaXJzdGxpbmVTdHlsZSk7CiAgICAgICAgIHJl
c3VsdENvbG9yID0gZGVjb3JhdGlvbkNvbG9yKHN0eWxlVG9Vc2UpOwotICAgICAgICBpZiAoZGVj
b3JhdGlvbnMgJiBVTkRFUkxJTkUpCisgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNv
cmF0aW9uVW5kZXJsaW5lKQogICAgICAgICAgICAgdW5kZXJsaW5lID0gcmVzdWx0Q29sb3I7Ci0g
ICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIE9WRVJMSU5FKQorICAgICAgICBpZiAoZGVjb3JhdGlv
bnMgJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQogICAgICAgICAgICAgb3ZlcmxpbmUgPSByZXN1
bHRDb2xvcjsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgTElORV9USFJPVUdIKQorICAgICAg
ICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQogICAgICAgICAg
ICAgbGluZXRocm91Z2ggPSByZXN1bHRDb2xvcjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGMyOWI3NWIyYzJlY2FlNTZiZjRm
NzJkN2EyMDhhODcyNTA1NjYwNzkuLjJjZDg3NDVkMjU2OWNjNzQzYTA5Yjk1NGNjZjJkOWIwZGQ1
ZWVhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CkBAIC0xODksNyArMTg5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB1bnNpZ25lZCBfdmlzaWJp
bGl0eSA6IDI7IC8vIEVWaXNpYmlsaXR5CiAgICAgICAgIHVuc2lnbmVkIF90ZXh0X2FsaWduIDog
NDsgLy8gRVRleHRBbGlnbgogICAgICAgICB1bnNpZ25lZCBfdGV4dF90cmFuc2Zvcm0gOiAyOyAv
LyBFVGV4dFRyYW5zZm9ybQotICAgICAgICB1bnNpZ25lZCBfdGV4dF9kZWNvcmF0aW9ucyA6IEVU
ZXh0RGVjb3JhdGlvbkJpdHM7CisgICAgICAgIHVuc2lnbmVkIF90ZXh0X2RlY29yYXRpb25zIDog
VGV4dERlY29yYXRpb25CaXRzOwogICAgICAgICB1bnNpZ25lZCBfY3Vyc29yX3N0eWxlIDogNjsg
Ly8gRUN1cnNvcgogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKICAgICAgICAgdW5zaWdu
ZWQgbV9jdXJzb3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJpbGl0eQpAQCAtNTc0LDgg
KzU3NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRBbGlnbj4oaW5oZXJpdGVkX2ZsYWdzLl90ZXh0
X2FsaWduKTsgfQogICAgIEVUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFVGV4dFRyYW5zZm9ybT4oaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3Ry
YW5zZm9ybSk7IH0KLSAgICBFVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dERlY29yYXRpb24+KGluaGVyaXRlZF9m
bGFncy5fdGV4dF9kZWNvcmF0aW9ucyk7IH0KLSAgICBFVGV4dERlY29yYXRpb24gdGV4dERlY29y
YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dERlY29yYXRpb24+KHZpc3Vh
bC0+dGV4dERlY29yYXRpb24pOyB9CisgICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25z
SW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4oaW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zKTsgfQorICAgIFRleHREZWNvcmF0aW9uIHRl
eHREZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+
KHZpc3VhbC0+dGV4dERlY29yYXRpb24pOyB9CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBU
ZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQogICAgIFRleHRBbGlnbkxhc3QgdGV4dEFsaWduTGFzdCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbkxhc3Q+KHJhcmVJbmhlcml0ZWRE
YXRhLT5tX3RleHRBbGlnbkxhc3QpOyB9CkBAIC0xMTQzLDkgKzExNDMsOSBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB2b2lkIHNldFRleHRBbGlnbihFVGV4dEFsaWduIHYpIHsgaW5oZXJpdGVkX2Zs
YWdzLl90ZXh0X2FsaWduID0gdjsgfQogICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShFVGV4dFRy
YW5zZm9ybSB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gPSB2OyB9Ci0gICAg
dm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KEVUZXh0RGVjb3JhdGlvbiB2KSB7IGlu
aGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8PSB2OyB9Ci0gICAgdm9pZCBzZXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdChFVGV4dERlY29yYXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3Mu
X3RleHRfZGVjb3JhdGlvbnMgPSB2OyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihFVGV4
dERlY29yYXRpb24gdikgeyBTRVRfVkFSKHZpc3VhbCwgdGV4dERlY29yYXRpb24sIHYpOyB9Cisg
ICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsg
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zIHw9IHY7IH0KKyAgICB2b2lkIHNldFRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdz
Ll90ZXh0X2RlY29yYXRpb25zID0gdjsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb24oVGV4
dERlY29yYXRpb24gdikgeyBTRVRfVkFSKHZpc3VhbCwgdGV4dERlY29yYXRpb24sIHYpOyB9CiAj
aWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU3R5bGUoVGV4
dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4
dERlY29yYXRpb25TdHlsZSwgdik7IH0KICAgICB2b2lkIHNldFRleHRBbGlnbkxhc3QoVGV4dEFs
aWduTGFzdCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGV4dEFsaWduTGFzdCwg
dik7IH0KQEAgLTE2MjgsNyArMTYyOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2hvcnQgaW5p
dGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTGlu
ZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjAsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGlj
IEVUZXh0QWxpZ24gaW5pdGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRBU1RBUlQ7IH0KLSAgICBz
dGF0aWMgRVRleHREZWNvcmF0aW9uIGluaXRpYWxUZXh0RGVjb3JhdGlvbigpIHsgcmV0dXJuIFRE
Tk9ORTsgfQorICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvbiBpbml0aWFsVGV4dERlY29yYXRpb24o
KSB7IHJldHVybiBUZXh0RGVjb3JhdGlvbk5vbmU7IH0KICNpZiBFTkFCTEUoQ1NTM19URVhUKQog
ICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxl
KCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZVNvbGlkOyB9CiAgICAgc3RhdGljIFRleHRB
bGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25MYXN0QXV0
bzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGVDb25zdGFudHMuaAppbmRleCA1ODgzNDk5YjUyMzk0OWI5YTE0NmViMTc1NjZlM2ZkZThiMzk0
MzQwLi5kNmIzODQ5NTE1Y2E5MTBkYzM5YTFkOWZlM2Q3N2IxOWRiZGRhMjExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
aApAQCAtMzM5LDEyICszMzksMTIgQEAgZW51bSBFVGV4dFRyYW5zZm9ybSB7CiAgICAgQ0FQSVRB
TElaRSwgVVBQRVJDQVNFLCBMT1dFUkNBU0UsIFRUTk9ORQogfTsKIAotc3RhdGljIGNvbnN0IHNp
emVfdCBFVGV4dERlY29yYXRpb25CaXRzID0gNDsKLWVudW0gRVRleHREZWNvcmF0aW9uIHsKLSAg
ICBURE5PTkUgPSAweDAgLCBVTkRFUkxJTkUgPSAweDEsIE9WRVJMSU5FID0gMHgyLCBMSU5FX1RI
Uk9VR0g9IDB4NCwgQkxJTksgPSAweDgKK3N0YXRpYyBjb25zdCBzaXplX3QgVGV4dERlY29yYXRp
b25CaXRzID0gNDsKK2VudW0gVGV4dERlY29yYXRpb24geworICAgIFRleHREZWNvcmF0aW9uTm9u
ZSA9IDB4MCwgVGV4dERlY29yYXRpb25VbmRlcmxpbmUgPSAweDEsIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUgPSAweDIsIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2ggPSAweDQsIFRleHREZWNvcmF0
aW9uQmxpbmsgPSAweDgKIH07Ci1pbmxpbmUgRVRleHREZWNvcmF0aW9uIG9wZXJhdG9yfChFVGV4
dERlY29yYXRpb24gYSwgRVRleHREZWNvcmF0aW9uIGIpIHsgcmV0dXJuIEVUZXh0RGVjb3JhdGlv
bihpbnQoYSkgfCBpbnQoYikpOyB9Ci1pbmxpbmUgRVRleHREZWNvcmF0aW9uJiBvcGVyYXRvcnw9
KEVUZXh0RGVjb3JhdGlvbiYgYSwgRVRleHREZWNvcmF0aW9uIGIpIHsgcmV0dXJuIGEgPSBhIHwg
YjsgfQoraW5saW5lIFRleHREZWNvcmF0aW9uIG9wZXJhdG9yfCAoVGV4dERlY29yYXRpb24gYSwg
VGV4dERlY29yYXRpb24gYikgeyByZXR1cm4gVGV4dERlY29yYXRpb24oaW50KGEpIHwgaW50KGIp
KTsgfQoraW5saW5lIFRleHREZWNvcmF0aW9uJiBvcGVyYXRvcnw9IChUZXh0RGVjb3JhdGlvbiYg
YSwgVGV4dERlY29yYXRpb24gYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9CiAKIGVudW0gVGV4dERl
Y29yYXRpb25TdHlsZSB7CiAgICAgVGV4dERlY29yYXRpb25TdHlsZVNvbGlkLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCmluZGV4IGI1MTQw
YTc4ZGVhZWNjMmU3NGE1Y2ZjNThhYTU4NzAzMGRhNDBiNmIuLjExN2NmZjFhYWZiZmQ2M2VmMDc2
OTRiNDVlZDRlOTAwZjg3N2VhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAg
TGVuZ3RoQm94IGNsaXA7CiAgICAgYm9vbCBoYXNDbGlwIDogMTsKLSAgICB1bnNpZ25lZCB0ZXh0
RGVjb3JhdGlvbiA6IEVUZXh0RGVjb3JhdGlvbkJpdHM7IC8vIFRleHQgZGVjb3JhdGlvbnMgZGVm
aW5lZCAqb25seSogYnkgdGhpcyBlbGVtZW50LgorICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9u
IDogVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29yYXRpb25zIGRlZmluZWQgKm9ubHkq
IGJ5IHRoaXMgZWxlbWVudC4KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgZmxv
YXQgbV90ZXh0QXV0b3NpemluZ011bHRpcGxpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA3ODY0ZDRlZThhMmQwMTA3OTVl
MDQwNzA4NjBkNTdiODZkODNkNGJmLi4wOGE5ZTE0YzdhN2IyMzUzMmNkYzg4YjQ4Y2RiODY1NmZi
NjU3ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAKQEAgLTMxOCwxMCArMzE4LDEwIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5p
CiAKICAgICAgICAgLy8gU3BlYzogQWxsIHRleHQgZGVjb3JhdGlvbnMgZXhjZXB0IGxpbmUtdGhy
b3VnaCBzaG91bGQgYmUgZHJhd24gYmVmb3JlIHRoZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tl
ZDsgdGh1cywgdGhlIHRleHQgaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZXNlIGRlY29yYXRpb25z
LgogICAgICAgICBpbnQgZGVjb3JhdGlvbnMgPSBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVU5ERVJMSU5FKQotICAgICAgICAgICAg
cGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBVTkRFUkxJTkUsIGZyYWdtZW50KTsK
LSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgT1ZFUkxJTkUpCi0gICAgICAgICAgICBwYWludERl
Y29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQsIE9WRVJMSU5FLCBmcmFnbWVudCk7CisgICAgICAg
IGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQorICAgICAgICAgICAg
cGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvblVuZGVybGlu
ZSwgZnJhZ21lbnQpOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbk92
ZXJsaW5lKQorICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBU
ZXh0RGVjb3JhdGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAgLy8gRmlsbCB0ZXh0
CiAgICAgICAgIGlmIChoYXNGaWxsKSB7CkBAIC0zMzYsOCArMzM2LDggQEAgdm9pZCBTVkdJbmxp
bmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
LCBMYXlvdXRVbmkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNwZWM6IExpbmUtdGhyb3VnaCBz
aG91bGQgYmUgZHJhd24gYWZ0ZXIgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVz
LCB0aGUgbGluZS10aHJvdWdoIGlzIHJlbmRlcmVkIG9uIHRvcCBvZiB0aGUgdGV4dC4KLSAgICAg
ICAgaWYgKGRlY29yYXRpb25zICYgTElORV9USFJPVUdIKQotICAgICAgICAgICAgcGFpbnREZWNv
cmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBMSU5FX1RIUk9VR0gsIGZyYWdtZW50KTsKKyAgICAg
ICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkKKyAgICAgICAg
ICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwgVGV4dERlY29yYXRpb25MaW5l
VGhyb3VnaCwgZnJhZ21lbnQpOwogCiAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBB
cHBseVRvRGVmYXVsdE1vZGU7CiAgICAgfQpAQCAtNDc4LDIyICs0NzgsMjIgQEAgYm9vbCBTVkdJ
bmxpbmVUZXh0Qm94OjptYXBTdGFydEVuZFBvc2l0aW9uc0ludG9GcmFnbWVudENvb3JkaW5hdGVz
KGNvbnN0IFNWR1RleHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBmbG9h
dCBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24oRVRleHREZWNvcmF0aW9uIGRlY29yYXRpb24s
IGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgZmxvYXQgdGhpY2tuZXNzKQorc3RhdGlj
IGlubGluZSBmbG9hdCBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24oVGV4dERlY29yYXRpb24g
ZGVjb3JhdGlvbiwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBmbG9hdCB0aGlja25l
c3MpCiB7CiAgICAgLy8gRklYTUU6IEZvciBTVkcgRm9udHMgd2UgbmVlZCB0byB1c2UgdGhlIGF0
dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgPGZvbnQtZmFjZT4gaWYgc3BlY2lmaWVkLgogICAgIC8v
IENvbXBhdGlibGUgd2l0aCBCYXRpay9PcGVyYS4KLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBVTkRF
UkxJTkUpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25VbmRlcmxpbmUpCiAg
ICAgICAgIHJldHVybiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpICsgdGhpY2tuZXNzICogMS41
ZjsKLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBPVkVSTElORSkKKyAgICBpZiAoZGVjb3JhdGlvbiA9
PSBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQogICAgICAgICByZXR1cm4gdGhpY2tuZXNzOwotICAg
IGlmIChkZWNvcmF0aW9uID09IExJTkVfVEhST1VHSCkKKyAgICBpZiAoZGVjb3JhdGlvbiA9PSBU
ZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQogICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuZmxv
YXRBc2NlbnQoKSAqIDUgLyA4LjBmOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIDAuMGY7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgdGhpY2tuZXNzRm9yRGVjb3Jh
dGlvbihFVGV4dERlY29yYXRpb24sIGNvbnN0IEZvbnQmIGZvbnQpCitzdGF0aWMgaW5saW5lIGZs
b2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oVGV4dERlY29yYXRpb24sIGNvbnN0IEZvbnQmIGZv
bnQpCiB7CiAgICAgLy8gRklYTUU6IEZvciBTVkcgRm9udHMgd2UgbmVlZCB0byB1c2UgdGhlIGF0
dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgPGZvbnQtZmFjZT4gaWYgc3BlY2lmaWVkLgogICAgIC8v
IENvbXBhdGlibGUgd2l0aCBCYXRpay9PcGVyYQpAQCAtNTA3LDcgKzUwNyw3IEBAIHN0YXRpYyBp
bmxpbmUgUmVuZGVyT2JqZWN0KiBmaW5kUmVuZGVyT2JqZWN0RGVmaW5pbmluZ1RleHREZWNvcmF0
aW9uKElubGluZUZsb3dCCiAgICAgd2hpbGUgKHBhcmVudEJveCkgewogICAgICAgICByZW5kZXJl
ciA9IHBhcmVudEJveC0+cmVuZGVyZXIoKTsKIAotICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxl
KCkgJiYgcmVuZGVyZXItPnN0eWxlKCktPnRleHREZWNvcmF0aW9uKCkgIT0gVEROT05FKQorICAg
ICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCktPnRleHREZWNv
cmF0aW9uKCkgIT0gVGV4dERlY29yYXRpb25Ob25lKQogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgcGFyZW50Qm94ID0gcGFyZW50Qm94LT5wYXJlbnQoKTsKQEAgLTUxNyw5ICs1MTcsOSBA
QCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogZmluZFJlbmRlck9iamVjdERlZmluaW5pbmdU
ZXh0RGVjb3JhdGlvbihJbmxpbmVGbG93QgogICAgIHJldHVybiByZW5kZXJlcjsKIH0KIAotdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBFVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBm
cmFnbWVudCkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4
dEZyYWdtZW50JiBmcmFnbWVudCkKIHsKLSAgICBpZiAodGV4dFJlbmRlcmVyKCktPnN0eWxlKCkt
PnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgPT0gVEROT05FKQorICAgIGlmICh0ZXh0UmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSA9PSBUZXh0RGVjb3JhdGlv
bk5vbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZpbmQgb3V0IHdoaWNoIHJlbmRlciBz
dHlsZSBkZWZpbmVkIHRoZSB0ZXh0LWRlY29yYXRpb24sIGFzIGl0cyBmaWxsL3N0cm9rZSBwcm9w
ZXJ0aWVzIGhhdmUgdG8gYmUgdXNlZCBmb3IgZHJhd2luZyBpbnN0ZWFkIG9mIG91cnMuCkBAIC01
NDcsNyArNTQ3LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBFVGV4dERlY29yYXRpb24KICAgICB9CiB9CiAKLXZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgRVRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYgZnJhZ21lbnQsIFJlbmRlck9iamVjdCogZGVjb3JhdGlvblJlbmRlcmVyKQordm9pZCBT
VkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmIGZyYWdtZW50LCBSZW5kZXJPYmplY3QqIGRlY29yYXRpb25SZW5kZXJlcikKIHsKICAgICBB
U1NFUlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7CiAgICAgQVNTRVJUKG1fcGFpbnRpbmdSZXNvdXJj
ZU1vZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKaW5kZXggMmRiMThkMTZlNDhkOTI5MGI3YjcyNzcx
YzYyMGIxMjcwZjNmM2IyMy4uMGQ1ODQzN2QwMjdiOTg2N2QxZmFmZmI0MGVlOGViODZhMTk0ZjE4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmgKQEAgLTc0LDggKzc0LDggQEAgcHJpdmF0ZToKICAgICBib29sIHByZXBhcmVHcmFwaGljc0Nv
bnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYsIGZsb2F0IHNjYWxpbmdGYWN0
b3IsIFRleHRSdW4mLCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVzdG9yZUdyYXBoaWNzQ29u
dGV4dEFmdGVyVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBUZXh0UnVuJik7CiAKLSAg
ICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBFVGV4dERlY29yYXRpb24s
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYpOwotICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0
eWxlKEdyYXBoaWNzQ29udGV4dCosIEVUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdt
ZW50JiwgUmVuZGVyT2JqZWN0KiBkZWNvcmF0aW9uUmVuZGVyZXIpOworICAgIHZvaWQgcGFpbnRE
ZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCosIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0
RnJhZ21lbnQmKTsKKyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0Nv
bnRleHQqLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyT2Jq
ZWN0KiBkZWNvcmF0aW9uUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
R3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZy
YWdtZW50JiwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbik7CiAgICAgdm9pZCBw
YWludFRleHQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogc2Vs
ZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGJvb2wgaGFzU2VsZWN0aW9uLCBi
b29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>