<?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>227031</bug_id>
          
          <creation_ts>2021-06-15 09:24:08 -0700</creation_ts>
          <short_desc>Update Media Accessibility preferences in the WebContent process from the UI process</short_desc>
          <delta_ts>2021-06-16 02:05:07 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769830</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-06-15 09:24:08 -0700</bug_when>
    <thetext>Due to stricter sandboxing in the WebContent process, Media Accessibility preferences should be updated from the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769831</commentid>
    <comment_count>1</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-06-15 09:25:19 -0700</bug_when>
    <thetext>&lt;rdar://78614882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769832</commentid>
    <comment_count>2</comment_count>
      <attachid>431447</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-06-15 09:32:44 -0700</bug_when>
    <thetext>Created attachment 431447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769857</commentid>
    <comment_count>3</comment_count>
      <attachid>431447</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-06-15 10:26:55 -0700</bug_when>
    <thetext>Comment on attachment 431447
Patch

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

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:222
&gt; +    case kMACaptionAppearanceDisplayTypeForcedOnly:
&gt; +        return ForcedOnly;
&gt; +
&gt; +    case kMACaptionAppearanceDisplayTypeAutomatic:
&gt; +        return Automatic;
&gt; +
&gt; +    case kMACaptionAppearanceDisplayTypeAlwaysOn:
&gt; +        return AlwaysOn;
&gt; +    }

I think it is a mistake to have the one method sometimes return the cached value and sometimes call the system because the caller always knows if it to do one thing or the other, so I would split this into two methods.

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:527
&gt; +    if (cachedPreferredLanguages().has_value())
&gt; +        return cachedPreferredLanguages().value();
&gt; +
&gt; +    auto captionLanguages = adoptCF(MACaptionAppearanceCopySelectedLanguages(kMACaptionAppearanceDomainUser));
&gt; +    CFIndex captionLanguagesCount = captionLanguages ? CFArrayGetCount(captionLanguages.get()) : 0;
&gt; +
&gt; +    Vector&lt;String&gt; preferredLanguages;
&gt; +    preferredLanguages.reserveInitialCapacity(captionLanguagesCount);
&gt; +    for (CFIndex i = 0; i &lt; captionLanguagesCount; i++)
&gt; +        preferredLanguages.uncheckedAppend(static_cast&lt;CFStringRef&gt;(CFArrayGetValueAtIndex(captionLanguages.get(), i)));
&gt; +
&gt; +    return preferredLanguages;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770104</commentid>
    <comment_count>4</comment_count>
      <attachid>431524</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-06-16 01:07:16 -0700</bug_when>
    <thetext>Created attachment 431524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770117</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-16 01:56:37 -0700</bug_when>
    <thetext>Committed r278927 (238858@main): &lt;https://commits.webkit.org/238858@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431524.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770118</commentid>
    <comment_count>6</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-06-16 02:05:07 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #3)
&gt; Comment on attachment 431447 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431447&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:222
&gt; &gt; +    case kMACaptionAppearanceDisplayTypeForcedOnly:
&gt; &gt; +        return ForcedOnly;
&gt; &gt; +
&gt; &gt; +    case kMACaptionAppearanceDisplayTypeAutomatic:
&gt; &gt; +        return Automatic;
&gt; &gt; +
&gt; &gt; +    case kMACaptionAppearanceDisplayTypeAlwaysOn:
&gt; &gt; +        return AlwaysOn;
&gt; &gt; +    }
&gt; 
&gt; I think it is a mistake to have the one method sometimes return the cached
&gt; value and sometimes call the system because the caller always knows if it to
&gt; do one thing or the other, so I would split this into two methods.
&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:527
&gt; &gt; +    if (cachedPreferredLanguages().has_value())
&gt; &gt; +        return cachedPreferredLanguages().value();
&gt; &gt; +
&gt; &gt; +    auto captionLanguages = adoptCF(MACaptionAppearanceCopySelectedLanguages(kMACaptionAppearanceDomainUser));
&gt; &gt; +    CFIndex captionLanguagesCount = captionLanguages ? CFArrayGetCount(captionLanguages.get()) : 0;
&gt; &gt; +
&gt; &gt; +    Vector&lt;String&gt; preferredLanguages;
&gt; &gt; +    preferredLanguages.reserveInitialCapacity(captionLanguagesCount);
&gt; &gt; +    for (CFIndex i = 0; i &lt; captionLanguagesCount; i++)
&gt; &gt; +        preferredLanguages.uncheckedAppend(static_cast&lt;CFStringRef&gt;(CFArrayGetValueAtIndex(captionLanguages.get(), i)));
&gt; &gt; +
&gt; &gt; +    return preferredLanguages;
&gt; 
&gt; Ditto.

Fixed by moving the check outside the method.

Thanks for reviewing!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431447</attachid>
            <date>2021-06-15 09:32:44 -0700</date>
            <delta_ts>2021-06-15 13:02:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227031-20210615183240.patch</filename>
            <type>text/plain</type>
            <size>19560</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA2LTE1ICBQZXIgQXJu
ZSAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBNZWRpYSBBY2Nlc3NpYmls
aXR5IHByZWZlcmVuY2VzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgVUkgcHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3
MDMxCisgICAgICAgIDxyZGFyOi8vNzg2MTQ4ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRHVlIHRvIHN0cmljdGVyIHNhbmRib3hpbmcgaW4gdGhl
IFdlYkNvbnRlbnQgcHJvY2VzcywgTWVkaWEgQWNjZXNzaWJpbGl0eSBwcmVmZXJlbmNlcyBzaG91
bGQgYmUgdXBkYXRlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICBUaGUgcHJlZmVyZW5j
ZXMgZm9yIGNhcHRpb24gZGlzcGxheSBtb2RlIGFuZCBwcmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFn
ZXMgYXJlIGJlaW5nIGNhY2hlZCwgYW5kIHRoZSBjYWNoZWQgdmFsdWUgd2lsbCBiZSB1c2VkCisg
ICAgICAgIGlmIGl0IGhhcyBiZWVuIHNldC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZENhcHRpb25EaXNwbGF5TW9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25EaXNwbGF5TW9kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZvcm1DYXB0
aW9uRGlzcGxheU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OnNldENhY2hlZENhcHRpb25EaXNwbGF5TW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6cHJlZmVycmVkTGFuZ3VhZ2VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpwbGF0
Zm9ybVByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6c2V0Q2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAg
KiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmg6CisKIDIwMjEtMDYtMTQgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBz
dXBwb3J0IGZvciBmbGV4aW5nIGNvbHVtbnMgd2hlbiB0aGUgY29udGVudCBpcyBhbHNvIGZsZXhp
bmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI3ODgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBA
CiAJCTA3OTY5REJDMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NjlEQTIx
N0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmggKi87IH07CiAJCTA3
OTY5REMyMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1N0YXRzUmVwb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk2OURBODE3RDE0MTUxMDA3RkY4
NDIgLyogSlNSVENTdGF0c1JlcG9ydC5oICovOyB9OwogCQkwNzlEMDg2ODE2MkYyMEU4MDBEQjg2
NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RDA4NjcxNjJGMjBFODAwREI4NjU4IC8qIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3OUQwODY5MTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5oICovOyB9OworCQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OUQwODY5MTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E2RDFF
QTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oICovOyB9OwogCQkw
N0FBNkI2QjE2NkQyQzA3MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0FBNkI2
QTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi87
IH07CiAJCTA3QUE2QjZDMTY2RDJDMTMwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdBQTZCNjkxNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMy
NjQ2LDcgKzMyNjQ2LDYgQEAKIAkJCQlFNEE4RDIxNjIyNTc4REI3MDBBODQ2M0MgLyogRXZlbnRS
ZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUwRkVGMzcyQjE3QzUzRUFDMUMxRkJFRSAvKiBF
dmVudFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyRURCN0IwQjMwOEE3ODAwMjcwNEI2
IC8qIEV2ZW50VGFyZ2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQlFM0NBMEJGQzI2NzNGNDdDMDA5
RkRENjcgLyogSlNET01CaW5kaW5nU2VjdXJpdHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NEIzNDlBMjIyRjg2RTc1MDBENDdCQ0YgLyogRXZlbnRUYXJnZXRDb25jcmV0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdBQTNDQTUxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVh
ZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQTNDQTYxNDUyMzdDQzAwM0UxREE2IC8qIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzQ1Myw2ICszMzQ1Miw3
IEBACiAJCQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0lu
dGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzQ1QzlENDFFM0ZDQkRGMDBB
QUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQ0Ew
QkZDMjY3M0Y0N0MwMDlGREQ2NyAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDRTE5MTczMUYyQUJFNzEwMDI3MkY3OSAvKiBKU0RPTUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGN0EgLyogSlNET01DYWNo
ZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MUM0NDE2MjYwQzM4RkQwMEZGNjY3MyAv
KiBKU0RPTUNhc3RUaGlzVmFsdWUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDI3ODgyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUg
IlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMjMsNCArMTI0LDE5IEBAIHByaXZhdGU6CiB9OwogICAgIAogfQorCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9u
RGlzcGxheU1vZGUsCisgICAgICAgIFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNh
cHRpb25EaXNwbGF5TW9kZTo6QXV0b21hdGljLAorICAgICAgICBXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGU6OkZvcmNlZE9ubHksCisgICAgICAgIFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZTo6QWx3YXlz
T24sCisgICAgICAgIFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNw
bGF5TW9kZTo6TWFudWFsCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuY3BwCShyZXZpc2lvbiAyNzg4MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDYgKzEwMCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBIQVZFKE1FRElBX0FD
Q0VTU0lCSUxJVFlfRlJBTUVXT1JLKQogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6Q2FwdGlvbkRpc3BsYXlNb2RlPiYgY2FjaGVkQ2FwdGlvbkRp
c3BsYXlNb2RlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Q2FwdGlvbkRpc3BsYXlNb2RlPj4gY2FwdGlv
bkRpc3BsYXlNb2RlOworICAgIHJldHVybiBjYXB0aW9uRGlzcGxheU1vZGU7Cit9CisKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgY2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2Vz
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4+IHByZWZlcnJlZExhbmd1YWdlczsKKyAgICByZXR1cm4gcHJlZmVycmVkTGFuZ3VhZ2Vz
OworfQorCiBzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZT
dHJpbmdSZWYsIGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtMTYwLDIwICsxNzIsNyBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
OjpDYXB0aW9uRGlzcGxheU1vCiAgICAgaWYgKGludGVybmFsTW9kZSA9PSBNYW51YWwgfHwgdGVz
dGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICByZXR1
cm4gaW50ZXJuYWxNb2RlOwogCi0gICAgTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlUeXBlIGRp
c3BsYXlUeXBlID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldERpc3BsYXlUeXBlKGtNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluVXNlcik7Ci0gICAgc3dpdGNoIChkaXNwbGF5VHlwZSkgewotICAgIGNh
c2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZUZvcmNlZE9ubHk6Ci0gICAgICAgIHJl
dHVybiBGb3JjZWRPbmx5OwotCi0gICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlU
eXBlQXV0b21hdGljOgotICAgICAgICByZXR1cm4gQXV0b21hdGljOwotCi0gICAgY2FzZSBrTUFD
YXB0aW9uQXBwZWFyYW5jZURpc3BsYXlUeXBlQWx3YXlzT246Ci0gICAgICAgIHJldHVybiBBbHdh
eXNPbjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRm9y
Y2VkT25seTsKKyAgICByZXR1cm4gcGxhdGZvcm1DYXB0aW9uRGlzcGxheU1vZGUoKTsKIH0KICAg
ICAKIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldENhcHRpb25EaXNwbGF5
TW9kZShDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgbW9kZSkKQEAg
LTIwNSw2ICsyMDQsMzIgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c2V0
QwogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXREaXNwbGF5VHlwZShrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIsIGRpc3BsYXlUeXBlKTsKIH0KIAorQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6Q2FwdGlvbkRpc3BsYXlNb2RlIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpwbGF0
Zm9ybUNhcHRpb25EaXNwbGF5TW9kZSgpCit7CisgICAgaWYgKGNhY2hlZENhcHRpb25EaXNwbGF5
TW9kZSgpLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gY2FjaGVkQ2FwdGlvbkRpc3BsYXlN
b2RlKCkudmFsdWUoKTsKKworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSBkaXNw
bGF5VHlwZSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXREaXNwbGF5VHlwZShrTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpblVzZXIpOworICAgIHN3aXRjaCAoZGlzcGxheVR5cGUpIHsKKyAgICBjYXNl
IGtNQUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGVGb3JjZWRPbmx5OgorICAgICAgICByZXR1
cm4gRm9yY2VkT25seTsKKworICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlw
ZUF1dG9tYXRpYzoKKyAgICAgICAgcmV0dXJuIEF1dG9tYXRpYzsKKworICAgIGNhc2Uga01BQ2Fw
dGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZUFsd2F5c09uOgorICAgICAgICByZXR1cm4gQWx3YXlz
T247CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZvcmNl
ZE9ubHk7Cit9CisKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldENhY2hl
ZENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uRGlzcGxheU1vZGUgY2FwdGlvbkRpc3BsYXlNb2Rl
KQoreworICAgIGNhY2hlZENhcHRpb25EaXNwbGF5TW9kZSgpID0gY2FwdGlvbkRpc3BsYXlNb2Rl
OworfQorCiBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp1c2VyUHJlZmVyc0Nh
cHRpb25zKCkgY29uc3QKIHsKICAgICBib29sIGNhcHRpb25TZXR0aW5nID0gQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucygpOwpAQCAtNDc1LDE5ICs1MDAsMzggQEAg
VmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZAogICAgIGlmICh0ZXN0aW5n
TW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBw
cmVmZXJyZWRMYW5ndWFnZXM7CiAKLSAgICBhdXRvIGNhcHRpb25MYW5ndWFnZXMgPSBhZG9wdENG
KE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMoa01BQ2FwdGlvbkFwcGVh
cmFuY2VEb21haW5Vc2VyKSk7Ci0gICAgQ0ZJbmRleCBjYXB0aW9uTGFuZ3VhZ2VzQ291bnQgPSBj
YXB0aW9uTGFuZ3VhZ2VzID8gQ0ZBcnJheUdldENvdW50KGNhcHRpb25MYW5ndWFnZXMuZ2V0KCkp
IDogMDsKLSAgICBpZiAoIWNhcHRpb25MYW5ndWFnZXNDb3VudCkKKyAgICBhdXRvIGNhcHRpb25M
YW5ndWFnZXMgPSBwbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpOworICAgIGlmICghY2FwdGlv
bkxhbmd1YWdlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBwcmVmZXJyZWRMYW5ndWFnZXM7CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBjYXB0aW9uQW5kUHJlZmVycmVkTGFuZ3VhZ2VzOwotICAgIGNh
cHRpb25BbmRQcmVmZXJyZWRMYW5ndWFnZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYXB0aW9u
TGFuZ3VhZ2VzQ291bnQgKyBwcmVmZXJyZWRMYW5ndWFnZXMuc2l6ZSgpKTsKLSAgICBmb3IgKENG
SW5kZXggaSA9IDA7IGkgPCBjYXB0aW9uTGFuZ3VhZ2VzQ291bnQ7IGkrKykKLSAgICAgICAgY2Fw
dGlvbkFuZFByZWZlcnJlZExhbmd1YWdlcy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2FwdGlvbkxhbmd1YWdlcy5nZXQoKSwg
aSkpKTsKKyAgICBjYXB0aW9uQW5kUHJlZmVycmVkTGFuZ3VhZ2VzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoY2FwdGlvbkxhbmd1YWdlcy5zaXplKCkgKyBwcmVmZXJyZWRMYW5ndWFnZXMuc2l6ZSgp
KTsKKyAgICBjYXB0aW9uQW5kUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZFZlY3RvcihXVEZNb3Zl
KGNhcHRpb25MYW5ndWFnZXMpKTsKICAgICBjYXB0aW9uQW5kUHJlZmVycmVkTGFuZ3VhZ2VzLmFw
cGVuZFZlY3RvcihXVEZNb3ZlKHByZWZlcnJlZExhbmd1YWdlcykpOwogICAgIHJldHVybiBjYXB0
aW9uQW5kUHJlZmVycmVkTGFuZ3VhZ2VzOwogfQogCitWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAg
IGlmIChjYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMoKS5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIGNhY2hlZFByZWZlcnJlZExhbmd1YWdlcygpLnZhbHVlKCk7CisKKyAgICBhdXRvIGNhcHRp
b25MYW5ndWFnZXMgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5n
dWFnZXMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKSk7CisgICAgQ0ZJbmRleCBjYXB0
aW9uTGFuZ3VhZ2VzQ291bnQgPSBjYXB0aW9uTGFuZ3VhZ2VzID8gQ0ZBcnJheUdldENvdW50KGNh
cHRpb25MYW5ndWFnZXMuZ2V0KCkpIDogMDsKKworICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJl
ZExhbmd1YWdlczsKKyAgICBwcmVmZXJyZWRMYW5ndWFnZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShjYXB0aW9uTGFuZ3VhZ2VzQ291bnQpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNh
cHRpb25MYW5ndWFnZXNDb3VudDsgaSsrKQorICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZXMudW5j
aGVja2VkQXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KGNhcHRpb25MYW5ndWFnZXMuZ2V0KCksIGkpKSk7CisKKyAgICByZXR1cm4gcHJlZmVycmVk
TGFuZ3VhZ2VzOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzZXRD
YWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExh
bmd1YWdlcykKK3sKKyAgICBjYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMoKSA9IHByZWZlcnJlZExh
bmd1YWdlczsKK30KKwogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c2V0UHJl
ZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpYyhjb25zdCBTdHJpbmcmIGNoYXJhY3RlcmlzdGljKQog
ewogICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5oCShyZXZpc2lvbiAyNzg4MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDkgQEAgcHVibGljOgogICAgIENhcHRpb25EaXNwbGF5TW9kZSBjYXB0aW9uRGlzcGxheU1vZGUo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9u
RGlzcGxheU1vZGUpIG92ZXJyaWRlOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhcHRp
b25EaXNwbGF5TW9kZSBwbGF0Zm9ybUNhcHRpb25EaXNwbGF5TW9kZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHNldENhY2hlZENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uRGlz
cGxheU1vZGUpOworCiAgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IG92ZXJyaWRlOwogCkBA
IC01NCw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1
YWdlcygpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3Rv
cjxTdHJpbmc+IHBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0Q2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+Jik7CisKICAgICB2b2lkIHNldFByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWMoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkQXVkaW9D
aGFyYWN0ZXJpc3RpY3MoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI3ODg3NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMjEtMDYtMTUgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXBkYXRlIE1lZGlhIEFjY2Vzc2liaWxpdHkgcHJlZmVyZW5jZXMgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcwMzEKKyAgICAgICAgPHJkYXI6Ly83ODYx
NDg4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
dWUgdG8gc3RyaWN0ZXIgc2FuZGJveGluZyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCBNZWRp
YSBBY2Nlc3NpYmlsaXR5IHByZWZlcmVuY2VzIHNob3VsZCBiZSB1cGRhdGVkIGZyb20gdGhlIFVJ
IHByb2Nlc3MuCisgICAgICAgIFRoZSBwcmVmZXJlbmNlcyBmb3IgY2FwdGlvbiBkaXNwbGF5IG1v
ZGUgYW5kIHByZWZlcnJlZCBjYXB0aW9uIGxhbmd1YWdlcyB3aWxsIGJlIHNlbnQgdG8gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcyBvbiBwcm9jZXNzCisgICAgICAgIHN0YXJ0dXAgYW5kIHdoZW4gdGhl
IHByZWZlcmVuY2UgaGFzIGJlZW4gY2hhbmdlZC4KKworICAgICAgICAqIFNoYXJlZC9BY2Nlc3Np
YmlsaXR5UHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYktp
dDo6QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcz46OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0FjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojph
Y2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlc0RpZENoYW5nZSk6CisKIDIwMjEtMDYt
MTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENhY2hlczo6
cmVtb3ZlQ2FjaGVFbnRyeSBzaG91bGQgY2hlY2sgZm9yIG1fc3RvcmFnZQpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuY3BwCShyZXZp
c2lvbiAyNzg4MzMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BY2Nlc3NpYmlsaXR5UHJlZmVy
ZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViS2l0OjpBY2Nlc3NpYmlsaXR5CiAgICAgZW5jb2RlciA8PCBwcmVmZXJlbmNlcy5k
YXJrZW5TeXN0ZW1Db2xvcnM7CiAgICAgZW5jb2RlciA8PCBwcmVmZXJlbmNlcy5pbnZlcnRDb2xv
cnNFbmFibGVkOwogI2VuZGlmCisjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09S
SykKKyAgICBlbmNvZGVyIDw8IHByZWZlcmVuY2VzLmNhcHRpb25EaXNwbGF5TW9kZTsKKyAgICBl
bmNvZGVyIDw8IHByZWZlcmVuY2VzLnByZWZlcnJlZExhbmd1YWdlczsKKyNlbmRpZgogfQogCiBz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzPiBBcmd1bWVudENv
ZGVyPFdlYktpdDo6QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCkBAIC01NCw2ICs1OCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6QWNjZXNzaWJp
bGl0eVByZWZlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcmVmZXJlbmNlcy5pbnZlcnRDb2xv
cnNFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgorI2lmIEhB
VkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwcmVmZXJlbmNlcy5jYXB0aW9uRGlzcGxheU1vZGUpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJlZmVyZW5jZXMucHJlZmVycmVkTGFu
Z3VhZ2VzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgogICAgIHJldHVy
biBwcmVmZXJlbmNlczsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQWNjZXNzaWJp
bGl0eVByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQWNj
ZXNzaWJpbGl0eVByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDI3ODgzMykKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNywxMCBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKIAorI2lmIEhBVkUo
TUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisjaW5jbHVkZSA8V2ViQ29yZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMgewpAQCAtMzcsNiArNDEsMTAgQEAgc3RydWN0IEFj
Y2Vzc2liaWxpdHlQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBkYXJrZW5TeXN0ZW1Db2xvcnMgeyBm
YWxzZSB9OwogICAgIGJvb2wgaW52ZXJ0Q29sb3JzRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYK
KyNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQorICAgIFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBjYXB0aW9uRGlzcGxheU1v
ZGU7CisgICAgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjc4ODMzKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvU3lzdGVt
QmF0dGVyeS5oPgogI2VuZGlmCiAKKyNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVX
T1JLKQorI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmg+CisjZW5kaWYK
KwogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvY29j
b2EvTWVkaWFUb29sYm94U29mdExpbmsuaD4KIApAQCAtMjgwLDYgKzI4NSwxMCBAQCBzdGF0aWMg
QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzIGFjY2Vzc2liCiAgICAgcHJlZmVyZW5jZXMuZGFya2Vu
U3lzdGVtQ29sb3JzID0gX0FYRGFya2VuU3lzdGVtQ29sb3JzQXBwKGFwcElkLmdldCgpKSA9PSBB
WFZhbHVlU3RhdGVPbjsKICAgICBwcmVmZXJlbmNlcy5pbnZlcnRDb2xvcnNFbmFibGVkID0gX0FY
U0ludmVydENvbG9yc0VuYWJsZWRBcHAoYXBwSWQuZ2V0KCkpID09IEFYVmFsdWVTdGF0ZU9uOwog
I2VuZGlmCisjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKKyAgICBwcmVm
ZXJlbmNlcy5jYXB0aW9uRGlzcGxheU1vZGUgPSBXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRjo6cGxhdGZvcm1DYXB0aW9uRGlzcGxheU1vZGUoKTsKKyAgICBwcmVmZXJlbmNl
cy5wcmVmZXJyZWRMYW5ndWFnZXMgPSBXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6cGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyNlbmRpZgogICAgIHJldHVybiBw
cmVmZXJlbmNlczsKIH0KIApAQCAtNTc1LDYgKzU4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmJhY2tsaWdodExldmVsRGlkQ2gKICAgICBhdXRvKiBwb29sID0gcmVpbnRlcnByZXRfY2FzdDxX
ZWJQcm9jZXNzUG9vbCo+KG9ic2VydmVyKTsKICAgICBwb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkJhY2tsaWdodExldmVsRGlkQ2hhbmdlKEJLU0Rpc3BsYXlC
cmlnaHRuZXNzR2V0Q3VycmVudCgpKSk7CiB9CisjZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6YWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrKENGTm90aWZpY2F0aW9u
Q2VudGVyUmVmLCB2b2lkICpvYnNlcnZlciwgQ0ZTdHJpbmdSZWYgbmFtZSwgY29uc3Qgdm9pZCAq
LCBDRkRpY3Rpb25hcnlSZWYgdXNlckluZm8pCiB7CkBAIC01ODIsOCArNTkyLDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6YWNjZXNzaWJpbGl0eVByZWZlcgogICAgIHBvb2wtPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzRGlk
Q2hhbmdlKGFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcygpKSk7CiB9CiAKLSNlbmRpZgotCiAjaWYg
UExBVEZPUk0oTUFDKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29sb3JQcmVmZXJlbmNlc0RpZENo
YW5nZUNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciwgdm9pZCAqb2JzZXJ2
ZXIsIENGU3RyaW5nUmVmIG5hbWUsIGNvbnN0IHZvaWQgKm9iamVjdCwgQ0ZEaWN0aW9uYXJ5UmVm
IHVzZXJJbmZvKQogewpAQCAtNzIwLDYgKzcyOCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
Z2lzdGVyTm90aWZpY2F0aW8KICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKENG
Tm90aWZpY2F0aW9uQ2VudGVyR2V0RGFyd2luTm90aWZ5Q2VudGVyKCksIHRoaXMsIGFjY2Vzc2li
aWxpdHlQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFjaywga0FYU0RhcmtlblN5c3RlbUNvbG9yc0Vu
YWJsZWROb3RpZmljYXRpb24sIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yQ29hbGVzY2UpOwogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJHZXREYXJ3aW5Ob3RpZnlDZW50ZXIoKSwgdGhpcywgYWNjZXNzaWJpbGl0
eVByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrLCBrQVhTSW52ZXJ0Q29sb3JzRW5hYmxlZE5vdGlm
aWNhdGlvbiwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNj
ZSk7CiAjZW5kaWYKKyNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQorICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRE
YXJ3aW5Ob3RpZnlDZW50ZXIoKSwgdGhpcywgYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzQ2hhbmdl
ZENhbGxiYWNrLCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRp
b24sIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOwor
I2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25P
YnNlcnZlcnMoKQpAQCAtNzYxLDYgKzc3Miw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVn
aXN0ZXJOb3RpZmljYXQKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZU9ic2VydmVyKENG
Tm90aWZpY2F0aW9uQ2VudGVyR2V0RGFyd2luTm90aWZ5Q2VudGVyKCksIHRoaXMsIGtBWFNEYXJr
ZW5TeXN0ZW1Db2xvcnNFbmFibGVkTm90aWZpY2F0aW9uLCBudWxscHRyKTsKICAgICBDRk5vdGlm
aWNhdGlvbkNlbnRlclJlbW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0RGFyd2lu
Tm90aWZ5Q2VudGVyKCksIHRoaXMsIGtBWFNJbnZlcnRDb2xvcnNFbmFibGVkTm90aWZpY2F0aW9u
LCBudWxscHRyKTsKICNlbmRpZgorI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdP
UkspCisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlmaWNhdGlv
bkNlbnRlckdldERhcndpbk5vdGlmeUNlbnRlcigpLCB0aGlzLCBrTUFYQ2FwdGlvbkFwcGVhcmFu
Y2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIG51bGxwdHIpOworI2VuZGlmCiB9CiAKIGJv
b2wgV2ViUHJvY2Vzc1Bvb2w6OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0
cmluZykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjc4ODMzKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUx
LDYgKzE1MSwxMCBAQAogI2ltcG9ydCA8b3Mvc3RhdGVfcHJpdmF0ZS5oPgogI2VuZGlmCiAKKyNp
ZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQorI2luY2x1ZGUgPFdlYkNvcmUv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaD4KKyNlbmRpZgorCiAjaW1wb3J0IDxXZWJD
b3JlL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvY2YvQXVkaW9U
b29sYm94U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlu
ay5oPgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0
eVByZWZlcmVuY2UKICAgICBpZiAoX0FYU0ludmVydENvbG9yc0VuYWJsZWRBcHAoYXBwSUQpICE9
IGludmVydENvbG9yc0VuYWJsZWQpCiAgICAgICAgIF9BWFNJbnZlcnRDb2xvcnNTZXRFbmFibGVk
QXBwKGludmVydENvbG9yc0VuYWJsZWQsIGFwcElEKTsKICNlbmRpZgorI2lmIEhBVkUoTUVESUFf
QUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisgICAgV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OnNldENhY2hlZENhcHRpb25EaXNwbGF5TW9kZShwcmVmZXJlbmNlcy5jYXB0
aW9uRGlzcGxheU1vZGUpOworICAgIFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGOjpzZXRDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMocHJlZmVyZW5jZXMucHJlZmVycmVkTGFu
Z3VhZ2VzKTsKKyNlbmRpZgogfQogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkK
</data>
<flag name="review"
          id="453233"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="453257"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431524</attachid>
            <date>2021-06-16 01:07:16 -0700</date>
            <delta_ts>2021-06-16 01:56:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227031-20210616100715.patch</filename>
            <type>text/plain</type>
            <size>19555</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA2LTE1ICBQZXIgQXJu
ZSAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBNZWRpYSBBY2Nlc3NpYmls
aXR5IHByZWZlcmVuY2VzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgVUkgcHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3
MDMxCisgICAgICAgIDxyZGFyOi8vNzg2MTQ4ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIER1ZSB0byBzdHJpY3RlciBzYW5kYm94aW5nIGluIHRoZSBX
ZWJDb250ZW50IHByb2Nlc3MsIE1lZGlhIEFjY2Vzc2liaWxpdHkgcHJlZmVyZW5jZXMgc2hvdWxk
IGJlIHVwZGF0ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgVGhlIHByZWZlcmVuY2Vz
IGZvciBjYXB0aW9uIGRpc3BsYXkgbW9kZSBhbmQgcHJlZmVycmVkIGNhcHRpb24gbGFuZ3VhZ2Vz
IGFyZSBiZWluZyBjYWNoZWQsIGFuZCB0aGUgY2FjaGVkIHZhbHVlIHdpbGwgYmUgdXNlZAorICAg
ICAgICBpZiBpdCBoYXMgYmVlbiBzZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6
CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjYWNoZWRDYXB0aW9uRGlzcGxheU1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uRGlzcGxheU1vZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnBsYXRmb3JtQ2FwdGlv
bkRpc3BsYXlNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpzZXRDYWNoZWRDYXB0aW9uRGlzcGxheU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnByZWZlcnJlZExhbmd1YWdlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZv
cm1QcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OnNldENhY2hlZFByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgICog
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5oOgorCiAyMDIxLTA2LTE0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bVEZDXSBBZGQgc3Vw
cG9ydCBmb3IgZmxleGluZyBjb2x1bW5zIHdoZW4gdGhlIGNvbnRlbnQgaXMgYWxzbyBmbGV4aW5n
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNzg4MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNyBAQAog
CQkwNzk2OURCQzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTZXNzaW9uRGVzY3JpcHRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTY5REEyMTdE
MTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oICovOyB9OwogCQkwNzk2
OURDMjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NjlEQTgxN0QxNDE1MTAwN0ZGODQy
IC8qIEpTUlRDU3RhdHNSZXBvcnQuaCAqLzsgfTsKIAkJMDc5RDA4NjgxNjJGMjBFODAwREI4NjU4
IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3OUQwODY3MTYyRjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJMDc5RDA4NkIxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzlEMDg2OTE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuaCAqLzsgfTsKKwkJMDc5RDA4NkIxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzlEMDg2OTE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwN0E2RDFFQzE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNkQxRUEx
NDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCAqLzsgfTsKIAkJMDdB
QTZCNkIxNjZEMkMwNzAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBQTZCNkEx
NjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9
OwogCQkwN0FBNkI2QzE2NkQyQzEzMDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QUE2QjY5MTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMjY0
Niw3ICszMjY0Niw2IEBACiAJCQkJRTRBOEQyMTYyMjU3OERCNzAwQTg0NjNDIC8qIEV2ZW50UmVn
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMEZFRjM3MkIxN0M1M0VBQzFDMUZCRUUgLyogRXZl
bnRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMkVEQjdCMEIzMDhBNzgwMDI3MDRCNiAv
KiBFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTNDQTBCRkMyNjczRjQ3QzAwOUZE
RDY3IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODRCMzQ5QTIyMkY4NkU3NTAwRDQ3QkNGIC8qIEV2ZW50VGFyZ2V0Q29uY3JldGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVu
dFRhcmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM0NTMsNiArMzM0NTIsNyBA
QAogCQkJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBKU0RPTUJpbmRpbmdJbnRl
cm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0NUM5RDQxRTNGQ0JERjAwQUFC
NTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0NBMEJG
QzI2NzNGNDdDMDA5RkRENjcgLyogSlNET01CaW5kaW5nU2VjdXJpdHlJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGNzkgLyogSlNET01DYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjdBIC8qIEpTRE9NQ2FjaGVT
dG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDFDNDQxNjI2MEMzOEZEMDBGRjY2NzMgLyog
SlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyNzg4MjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKICNpbmNsdWRlICJU
ZXh0VHJhY2suaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTIzLDQgKzEyNCwxOSBAQCBwcml2YXRlOgogfTsKICAgICAKIH0KKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRp
c3BsYXlNb2RlLAorICAgICAgICBXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0
aW9uRGlzcGxheU1vZGU6OkF1dG9tYXRpYywKKyAgICAgICAgV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlOjpGb3JjZWRPbmx5LAorICAgICAgICBXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGU6OkFsd2F5c09u
LAorICAgICAgICBXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxh
eU1vZGU6Ok1hbnVhbAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcAkocmV2aXNpb24gMjc4ODI1KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MCw2ICsxMDAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgSEFWRShNRURJQV9BQ0NF
U1NJQklMSVRZX0ZSQU1FV09SSykKIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUY6OkNhcHRpb25EaXNwbGF5TW9kZT4mIGNhY2hlZENhcHRpb25EaXNw
bGF5TW9kZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6b3B0aW9uYWw8Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OkNhcHRpb25EaXNwbGF5TW9kZT4+IGNhcHRpb25E
aXNwbGF5TW9kZTsKKyAgICByZXR1cm4gY2FwdGlvbkRpc3BsYXlNb2RlOworfQorCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGNhY2hlZFByZWZlcnJlZExhbmd1YWdlcygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+PiBwcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgcmV0dXJuIHByZWZlcnJlZExhbmd1YWdlczsK
K30KKwogc3RhdGljIHZvaWQgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRp
b25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3Ry
aW5nUmVmLCBjb25zdCB2b2lkICosIENGRGljdGlvbmFyeVJlZikKIHsKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKQEAgLTE2MCwyMCArMTcyLDEwIEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OkNhcHRpb25EaXNwbGF5TW8KICAgICBpZiAoaW50ZXJuYWxNb2RlID09IE1hbnVhbCB8fCB0ZXN0
aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVy
biBpbnRlcm5hbE1vZGU7CiAKLSAgICBNQUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGUgZGlz
cGxheVR5cGUgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0RGlzcGxheVR5cGUoa01BQ2FwdGlvbkFw
cGVhcmFuY2VEb21haW5Vc2VyKTsKLSAgICBzd2l0Y2ggKGRpc3BsYXlUeXBlKSB7Ci0gICAgY2Fz
ZSBrTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlUeXBlRm9yY2VkT25seToKLSAgICAgICAgcmV0
dXJuIEZvcmNlZE9ubHk7Ci0KLSAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5
cGVBdXRvbWF0aWM6Ci0gICAgICAgIHJldHVybiBBdXRvbWF0aWM7CisgICAgaWYgKGNhY2hlZENh
cHRpb25EaXNwbGF5TW9kZSgpLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gY2FjaGVkQ2Fw
dGlvbkRpc3BsYXlNb2RlKCkudmFsdWUoKTsKIAotICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFu
Y2VEaXNwbGF5VHlwZUFsd2F5c09uOgotICAgICAgICByZXR1cm4gQWx3YXlzT247Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZvcmNlZE9ubHk7CisgICAg
cmV0dXJuIHBsYXRmb3JtQ2FwdGlvbkRpc3BsYXlNb2RlKCk7CiB9CiAgICAgCiB2b2lkIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIG1vZGUpCkBAIC0yMDUsNiArMjA3LDI5
IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldEMKICAgICBNQUNhcHRp
b25BcHBlYXJhbmNlU2V0RGlzcGxheVR5cGUoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2Vy
LCBkaXNwbGF5VHlwZSk7CiB9CiAKK0NhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNw
bGF5TW9kZSBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZvcm1DYXB0aW9uRGlz
cGxheU1vZGUoKQoreworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSBkaXNwbGF5
VHlwZSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXREaXNwbGF5VHlwZShrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIpOworICAgIHN3aXRjaCAoZGlzcGxheVR5cGUpIHsKKyAgICBjYXNlIGtN
QUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGVGb3JjZWRPbmx5OgorICAgICAgICByZXR1cm4g
Rm9yY2VkT25seTsKKworICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZUF1
dG9tYXRpYzoKKyAgICAgICAgcmV0dXJuIEF1dG9tYXRpYzsKKworICAgIGNhc2Uga01BQ2FwdGlv
bkFwcGVhcmFuY2VEaXNwbGF5VHlwZUFsd2F5c09uOgorICAgICAgICByZXR1cm4gQWx3YXlzT247
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZvcmNlZE9u
bHk7Cit9CisKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldENhY2hlZENh
cHRpb25EaXNwbGF5TW9kZShDYXB0aW9uRGlzcGxheU1vZGUgY2FwdGlvbkRpc3BsYXlNb2RlKQor
eworICAgIGNhY2hlZENhcHRpb25EaXNwbGF5TW9kZSgpID0gY2FwdGlvbkRpc3BsYXlNb2RlOwor
fQorCiBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp1c2VyUHJlZmVyc0NhcHRp
b25zKCkgY29uc3QKIHsKICAgICBib29sIGNhcHRpb25TZXR0aW5nID0gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucygpOwpAQCAtNDc1LDE5ICs1MDAsMzggQEAgVmVj
dG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZAogICAgIGlmICh0ZXN0aW5nTW9k
ZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBwcmVm
ZXJyZWRMYW5ndWFnZXM7CiAKLSAgICBhdXRvIGNhcHRpb25MYW5ndWFnZXMgPSBhZG9wdENGKE1B
Q2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMoa01BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW5Vc2VyKSk7Ci0gICAgQ0ZJbmRleCBjYXB0aW9uTGFuZ3VhZ2VzQ291bnQgPSBjYXB0
aW9uTGFuZ3VhZ2VzID8gQ0ZBcnJheUdldENvdW50KGNhcHRpb25MYW5ndWFnZXMuZ2V0KCkpIDog
MDsKLSAgICBpZiAoIWNhcHRpb25MYW5ndWFnZXNDb3VudCkKKyAgICBpZiAoY2FjaGVkUHJlZmVy
cmVkTGFuZ3VhZ2VzKCkuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRQcmVmZXJy
ZWRMYW5ndWFnZXMoKS52YWx1ZSgpOworCisgICAgYXV0byBjYXB0aW9uTGFuZ3VhZ2VzID0gcGxh
dGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAoIWNhcHRpb25MYW5ndWFnZXMuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gcHJlZmVycmVkTGFuZ3VhZ2VzOwogCiAgICAgVmVjdG9yPFN0
cmluZz4gY2FwdGlvbkFuZFByZWZlcnJlZExhbmd1YWdlczsKLSAgICBjYXB0aW9uQW5kUHJlZmVy
cmVkTGFuZ3VhZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FwdGlvbkxhbmd1YWdlc0NvdW50
ICsgcHJlZmVycmVkTGFuZ3VhZ2VzLnNpemUoKSk7Ci0gICAgZm9yIChDRkluZGV4IGkgPSAwOyBp
IDwgY2FwdGlvbkxhbmd1YWdlc0NvdW50OyBpKyspCi0gICAgICAgIGNhcHRpb25BbmRQcmVmZXJy
ZWRMYW5ndWFnZXMudW5jaGVja2VkQXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGNhcHRpb25MYW5ndWFnZXMuZ2V0KCksIGkpKSk7CisgICAgY2Fw
dGlvbkFuZFByZWZlcnJlZExhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhcHRpb25M
YW5ndWFnZXMuc2l6ZSgpICsgcHJlZmVycmVkTGFuZ3VhZ2VzLnNpemUoKSk7CisgICAgY2FwdGlv
bkFuZFByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShjYXB0aW9uTGFuZ3Vh
Z2VzKSk7CiAgICAgY2FwdGlvbkFuZFByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmRWZWN0b3IoV1RG
TW92ZShwcmVmZXJyZWRMYW5ndWFnZXMpKTsKICAgICByZXR1cm4gY2FwdGlvbkFuZFByZWZlcnJl
ZExhbmd1YWdlczsKIH0KIAorVmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OnBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBhdXRvIGNhcHRpb25M
YW5ndWFnZXMgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFn
ZXMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKSk7CisgICAgQ0ZJbmRleCBjYXB0aW9u
TGFuZ3VhZ2VzQ291bnQgPSBjYXB0aW9uTGFuZ3VhZ2VzID8gQ0ZBcnJheUdldENvdW50KGNhcHRp
b25MYW5ndWFnZXMuZ2V0KCkpIDogMDsKKworICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExh
bmd1YWdlczsKKyAgICBwcmVmZXJyZWRMYW5ndWFnZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShj
YXB0aW9uTGFuZ3VhZ2VzQ291bnQpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNhcHRp
b25MYW5ndWFnZXNDb3VudDsgaSsrKQorICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZXMudW5jaGVj
a2VkQXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGNhcHRpb25MYW5ndWFnZXMuZ2V0KCksIGkpKSk7CisKKyAgICByZXR1cm4gcHJlZmVycmVkTGFu
Z3VhZ2VzOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzZXRDYWNo
ZWRQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1
YWdlcykKK3sKKyAgICBjYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMoKSA9IHByZWZlcnJlZExhbmd1
YWdlczsKK30KKwogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c2V0UHJlZmVy
cmVkQXVkaW9DaGFyYWN0ZXJpc3RpYyhjb25zdCBTdHJpbmcmIGNoYXJhY3RlcmlzdGljKQogewog
ICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWVkaWFBRi5oCShyZXZpc2lvbiAyNzg4MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkg
QEAgcHVibGljOgogICAgIENhcHRpb25EaXNwbGF5TW9kZSBjYXB0aW9uRGlzcGxheU1vZGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uRGlz
cGxheU1vZGUpIG92ZXJyaWRlOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhcHRpb25E
aXNwbGF5TW9kZSBwbGF0Zm9ybUNhcHRpb25EaXNwbGF5TW9kZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldENhY2hlZENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uRGlzcGxh
eU1vZGUpOworCiAgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC01
NCw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdl
cygpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxT
dHJpbmc+IHBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgc2V0Q2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CisKICAgICB2b2lkIHNldFByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWMoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkQXVkaW9DaGFy
YWN0ZXJpc3RpY3MoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3
ODg3NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMjEtMDYtMTUgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgVXBkYXRlIE1lZGlhIEFjY2Vzc2liaWxpdHkgcHJlZmVyZW5jZXMgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcwMzEKKyAgICAgICAgPHJkYXI6Ly83ODYxNDg4
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgRHVlIHRv
IHN0cmljdGVyIHNhbmRib3hpbmcgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywgTWVkaWEgQWNj
ZXNzaWJpbGl0eSBwcmVmZXJlbmNlcyBzaG91bGQgYmUgdXBkYXRlZCBmcm9tIHRoZSBVSSBwcm9j
ZXNzLgorICAgICAgICBUaGUgcHJlZmVyZW5jZXMgZm9yIGNhcHRpb24gZGlzcGxheSBtb2RlIGFu
ZCBwcmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZXMgd2lsbCBiZSBzZW50IHRvIHRoZSBXZWJDb250
ZW50IHByb2Nlc3Mgb24gcHJvY2VzcworICAgICAgICBzdGFydHVwIGFuZCB3aGVuIHRoZSBwcmVm
ZXJlbmNlIGhhcyBiZWVuIGNoYW5nZWQuCisKKyAgICAgICAgKiBTaGFyZWQvQWNjZXNzaWJpbGl0
eVByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkFj
Y2Vzc2liaWxpdHlQcmVmZXJlbmNlcz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViS2l0OjpBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXM+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9BY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6YWNjZXNz
aWJpbGl0eVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJl
Z2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjphY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgorCiAyMDIxLTA2LTE1ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZXM6OnJlbW92
ZUNhY2hlRW50cnkgc2hvdWxkIGNoZWNrIGZvciBtX3N0b3JhZ2UKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24g
Mjc4ODMzKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQWNjZXNzaWJpbGl0eVByZWZlcmVuY2Vz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFdlYktpdDo6QWNjZXNzaWJpbGl0eQogICAgIGVuY29kZXIgPDwgcHJlZmVyZW5jZXMuZGFya2Vu
U3lzdGVtQ29sb3JzOwogICAgIGVuY29kZXIgPDwgcHJlZmVyZW5jZXMuaW52ZXJ0Q29sb3JzRW5h
YmxlZDsKICNlbmRpZgorI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisg
ICAgZW5jb2RlciA8PCBwcmVmZXJlbmNlcy5jYXB0aW9uRGlzcGxheU1vZGU7CisgICAgZW5jb2Rl
ciA8PCBwcmVmZXJlbmNlcy5wcmVmZXJyZWRMYW5ndWFnZXM7CisjZW5kaWYKIH0KIAogc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcz4gQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQpAQCAtNTQsNiArNTgsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQ
cmVmZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJlZmVyZW5jZXMuaW52ZXJ0Q29sb3JzRW5h
YmxlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKKyNpZiBIQVZFKE1F
RElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJl
ZmVyZW5jZXMuY2FwdGlvbkRpc3BsYXlNb2RlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByZWZlcmVuY2VzLnByZWZlcnJlZExhbmd1YWdl
cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKICAgICByZXR1cm4gcHJl
ZmVyZW5jZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FjY2Vzc2liaWxpdHlQ
cmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FjY2Vzc2li
aWxpdHlQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyNzg4MzMpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsMTAgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKKyNpZiBIQVZFKE1FRElB
X0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQorI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgQWNj
ZXNzaWJpbGl0eVByZWZlcmVuY2VzIHsKQEAgLTM3LDYgKzQxLDEwIEBAIHN0cnVjdCBBY2Nlc3Np
YmlsaXR5UHJlZmVyZW5jZXMgewogICAgIGJvb2wgZGFya2VuU3lzdGVtQ29sb3JzIHsgZmFsc2Ug
fTsKICAgICBib29sIGludmVydENvbG9yc0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCisjaWYg
SEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKKyAgICBXZWJDb3JlOjpDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgY2FwdGlvbkRpc3BsYXlNb2RlOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlczsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI3ODgzMykKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTk2LDYgKzk2LDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL1N5c3RlbUJhdHRl
cnkuaD4KICNlbmRpZgogCisjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykK
KyNpbmNsdWRlIDxXZWJDb3JlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oPgorI2VuZGlmCisKICNp
bXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL2NvY29hL01l
ZGlhVG9vbGJveFNvZnRMaW5rLmg+CiAKQEAgLTI4MCw2ICsyODUsMTAgQEAgc3RhdGljIEFjY2Vz
c2liaWxpdHlQcmVmZXJlbmNlcyBhY2Nlc3NpYgogICAgIHByZWZlcmVuY2VzLmRhcmtlblN5c3Rl
bUNvbG9ycyA9IF9BWERhcmtlblN5c3RlbUNvbG9yc0FwcChhcHBJZC5nZXQoKSkgPT0gQVhWYWx1
ZVN0YXRlT247CiAgICAgcHJlZmVyZW5jZXMuaW52ZXJ0Q29sb3JzRW5hYmxlZCA9IF9BWFNJbnZl
cnRDb2xvcnNFbmFibGVkQXBwKGFwcElkLmdldCgpKSA9PSBBWFZhbHVlU3RhdGVPbjsKICNlbmRp
ZgorI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisgICAgcHJlZmVyZW5j
ZXMuY2FwdGlvbkRpc3BsYXlNb2RlID0gV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OnBsYXRmb3JtQ2FwdGlvbkRpc3BsYXlNb2RlKCk7CisgICAgcHJlZmVyZW5jZXMucHJl
ZmVycmVkTGFuZ3VhZ2VzID0gV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OnBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisjZW5kaWYKICAgICByZXR1cm4gcHJlZmVy
ZW5jZXM7CiB9CiAKQEAgLTU3NSw2ICs1ODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpiYWNr
bGlnaHRMZXZlbERpZENoCiAgICAgYXV0byogcG9vbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViUHJv
Y2Vzc1Bvb2wqPihvYnNlcnZlcik7CiAgICAgcG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpCYWNrbGlnaHRMZXZlbERpZENoYW5nZShCS1NEaXNwbGF5QnJpZ2h0
bmVzc0dldEN1cnJlbnQoKSkpOwogfQorI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFj
Y2Vzc2liaWxpdHlQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRl
clJlZiwgdm9pZCAqb2JzZXJ2ZXIsIENGU3RyaW5nUmVmIG5hbWUsIGNvbnN0IHZvaWQgKiwgQ0ZE
aWN0aW9uYXJ5UmVmIHVzZXJJbmZvKQogewpAQCAtNTgyLDggKzU5Miw2IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmFjY2Vzc2liaWxpdHlQcmVmZXIKICAgICBwb29sLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlc0RpZENoYW5n
ZShhY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMoKSkpOwogfQogCi0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNvbG9yUHJlZmVyZW5jZXNEaWRDaGFuZ2VD
YWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIsIHZvaWQgKm9ic2VydmVyLCBD
RlN0cmluZ1JlZiBuYW1lLCBjb25zdCB2b2lkICpvYmplY3QsIENGRGljdGlvbmFyeVJlZiB1c2Vy
SW5mbykKIHsKQEAgLTcyMCw2ICs3MjgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rl
ck5vdGlmaWNhdGlvCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihDRk5vdGlm
aWNhdGlvbkNlbnRlckdldERhcndpbk5vdGlmeUNlbnRlcigpLCB0aGlzLCBhY2Nlc3NpYmlsaXR5
UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2ssIGtBWFNEYXJrZW5TeXN0ZW1Db2xvcnNFbmFibGVk
Tm90aWZpY2F0aW9uLCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNv
YWxlc2NlKTsKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKENGTm90aWZpY2F0
aW9uQ2VudGVyR2V0RGFyd2luTm90aWZ5Q2VudGVyKCksIHRoaXMsIGFjY2Vzc2liaWxpdHlQcmVm
ZXJlbmNlc0NoYW5nZWRDYWxsYmFjaywga0FYU0ludmVydENvbG9yc0VuYWJsZWROb3RpZmljYXRp
b24sIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOwog
I2VuZGlmCisjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKKyAgICBDRk5v
dGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0RGFyd2lu
Tm90aWZ5Q2VudGVyKCksIHRoaXMsIGFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFjaywga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBu
dWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2
ZXJzKCkKQEAgLTc2MSw2ICs3NzIsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVy
Tm90aWZpY2F0CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlm
aWNhdGlvbkNlbnRlckdldERhcndpbk5vdGlmeUNlbnRlcigpLCB0aGlzLCBrQVhTRGFya2VuU3lz
dGVtQ29sb3JzRW5hYmxlZE5vdGlmaWNhdGlvbiwgbnVsbHB0cik7CiAgICAgQ0ZOb3RpZmljYXRp
b25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldERhcndpbk5vdGlm
eUNlbnRlcigpLCB0aGlzLCBrQVhTSW52ZXJ0Q29sb3JzRW5hYmxlZE5vdGlmaWNhdGlvbiwgbnVs
bHB0cik7CiAjZW5kaWYKKyNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQor
ICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50
ZXJHZXREYXJ3aW5Ob3RpZnlDZW50ZXIoKSwgdGhpcywga01BWENhcHRpb25BcHBlYXJhbmNlU2V0
dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBudWxscHRyKTsKKyNlbmRpZgogfQogCiBib29sIFdl
YlByb2Nlc3NQb29sOjppc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI3ODgzMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsx
NTEsMTAgQEAKICNpbXBvcnQgPG9zL3N0YXRlX3ByaXZhdGUuaD4KICNlbmRpZgogCisjaWYgSEFW
RShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKKyNpbmNsdWRlIDxXZWJDb3JlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmg+CisjZW5kaWYKKwogI2ltcG9ydCA8V2ViQ29yZS9N
ZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL2NmL0F1ZGlvVG9vbGJv
eFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4K
QEAgLTEwNTksNiArMTA2MywxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlQcmVm
ZXJlbmNlCiAgICAgaWYgKF9BWFNJbnZlcnRDb2xvcnNFbmFibGVkQXBwKGFwcElEKSAhPSBpbnZl
cnRDb2xvcnNFbmFibGVkKQogICAgICAgICBfQVhTSW52ZXJ0Q29sb3JzU2V0RW5hYmxlZEFwcChp
bnZlcnRDb2xvcnNFbmFibGVkLCBhcHBJRCk7CiAjZW5kaWYKKyNpZiBIQVZFKE1FRElBX0FDQ0VT
U0lCSUxJVFlfRlJBTUVXT1JLKQorICAgIFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpzZXRDYWNoZWRDYXB0aW9uRGlzcGxheU1vZGUocHJlZmVyZW5jZXMuY2FwdGlvbkRp
c3BsYXlNb2RlKTsKKyAgICBXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6
c2V0Q2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzKHByZWZlcmVuY2VzLnByZWZlcnJlZExhbmd1YWdl
cyk7CisjZW5kaWYKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>