<?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>130294</bug_id>
          
          <creation_ts>2014-03-15 10:22:25 -0700</creation_ts>
          <short_desc>Move BorderEdge class to its own file.</short_desc>
          <delta_ts>2014-03-15 21:57:36 -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>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>990872</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-15 10:22:25 -0700</bug_when>
    <thetext>This is in preparation to have better encapsulation for border box decoration painting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990885</commentid>
    <comment_count>1</comment_count>
      <attachid>226826</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-15 13:04:45 -0700</bug_when>
    <thetext>Created attachment 226826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990912</commentid>
    <comment_count>2</comment_count>
      <attachid>226826</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-03-15 18:33:15 -0700</bug_when>
    <thetext>Comment on attachment 226826
Patch

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

&gt; Source/WebCore/rendering/BorderEdge.h:49
&gt; +    BorderEdge(LayoutUnit edgeWidth, const Color&amp; edgeColor, EBorderStyle edgeStyle, bool edgeIsTransparent, bool edgeIsPresent, float devicePixelRatio);

I wonder how much sense it makes to pass Color by reference (rather than by value) these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990915</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-15 18:51:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 226826 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226826&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/BorderEdge.h:49
&gt; &gt; +    BorderEdge(LayoutUnit edgeWidth, const Color&amp; edgeColor, EBorderStyle edgeStyle, bool edgeIsTransparent, bool edgeIsPresent, float devicePixelRatio);
&gt; 
&gt; I wonder how much sense it makes to pass Color by reference (rather than by value) these days.

Good point. I&apos;ll make that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990917</commentid>
    <comment_count>4</comment_count>
      <attachid>226830</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-15 19:50:08 -0700</bug_when>
    <thetext>Created attachment 226830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990918</commentid>
    <comment_count>5</comment_count>
      <attachid>226830</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-15 19:50:25 -0700</bug_when>
    <thetext>Comment on attachment 226830
Patch

EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990924</commentid>
    <comment_count>6</comment_count>
      <attachid>226830</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-15 21:57:31 -0700</bug_when>
    <thetext>Comment on attachment 226830
Patch

Clearing flags on attachment: 226830

Committed r165689: &lt;http://trac.webkit.org/changeset/165689&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990925</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-15 21:57:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226826</attachid>
            <date>2014-03-15 13:04:45 -0700</date>
            <delta_ts>2014-03-15 19:50:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130294-20140315130419.patch</filename>
            <type>text/plain</type>
            <size>43625</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4M2FhMWIyNTc3OGIz
ZDUwZjY1ODUxZmQyYmUwNjU5YmM2MzY0ZS4uMGE5ZGU3MzMzNWMwYTRmNmRiNDUxODM1NDdmOGVi
ZDFhZTc2YTZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTAzLTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCb3JkZXJFZGdlIGNs
YXNzIHRvIGl0cyBvd24gZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMDI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gdG8gaGF2ZSBiZXR0ZXIgZW5jYXBz
dWxhdGlvbiBmb3IgYm9yZGVyIGJveCBkZWNvcmF0aW9uIHBhaW50aW5nLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcmVuZGVyaW5nL0JvcmRlckVkZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJvcmRlckVkZ2U6OkJvcmRlckVkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVy
RWRnZTo6Z2V0Qm9yZGVyRWRnZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6
aW5jbHVkZXNBZGphY2VudEVkZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckVkZ2U6Om9i
c2N1cmVzQmFja2dyb3VuZEVkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6b2Jz
Y3VyZXNCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckVkZ2U6OmdldERvdWJs
ZUJvcmRlclN0cmlwZVdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL0JvcmRlckVkZ2UuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJFZGdlOjplZGdlRmxhZ0ZvclNpZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6aW5jbHVkZXNFZGdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkJvcmRlckVkZ2U6OmVkZ2VzU2hhcmVDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpC
b3JkZXJFZGdlOjpoYXNWaXNpYmxlQ29sb3JBbmRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpC
b3JkZXJFZGdlOjpzaG91bGRSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6
cHJlc2VudEJ1dEludmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJFZGdlOjp3aWR0
aEZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckVkZ2U6OmJvcmRlcldpZHRo
SW5EZXZpY2VQaXhlbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclN0eWxlSGFzVW5tYXRjaGVkQ29sb3JzQXRD
b3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JzTWF0Y2hBdENvcm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpjb2xvck5lZWRzQW50aUFsaWFzQXRDb3JuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6d2lsbEJlT3ZlcmRyYXduKToKKyAgICAgICAgKFdlYkNvcmU6OmpvaW5SZXF1aXJlc01pdHJl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNp
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5z
bHVjZW50Qm9yZGVyU2lkZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
Ojpib3JkZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0Ojpib3JkZXJPYnNjdXJlc0JhY2tncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorCiAyMDE0LTAzLTE0ICBNYXJrIFJvd2Ug
IDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBwcm9kdWN0aW9uIGJ1aWxkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxN2JlNDM3ZmQyZDc1ZDE3Yzk0ZDljNWQ5YmMwZmMxYjM0
YjQ4ZDhkLi41ZDAyM2Q5OTdmZjVkNjU1MTZhNTE4ZmMwMjA2ZGU0N2RlMDFmMWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjA4Miw2ICsyMDgyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
CiAgICAgcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKICAgICByZW5kZXJpbmcvQmlkaVJ1
bi5jcHAKKyAgICByZW5kZXJpbmcvQm9yZGVyRWRnZS5jcHAKICAgICByZW5kZXJpbmcvQ291bnRl
ck5vZGUuY3BwCiAgICAgcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAogICAgIHJlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDgyNDE1MmJkNjliM2U0MTM5NzgwYTA3MGI0ZTk4NzMwYmNhMjQ1OTguLjExNmIxMzJkOTRlYzBm
OTI3NmQ4MzBhZTgzZWE3N2NiYWZkZWZhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNDI2MCw2ICs0MjYwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CaWRpUnVuLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaCBc
CisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRlckVkZ2UuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
YnJlYWtfbGluZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDNm
NDE0MzA2MTMwYWM3MmFkZDhiMGNmZjZiYzhkY2U3YTYwYjA3YS4uMDNmOWIxMzJlYjljNzNkMDFk
NmEzODE3ZGFmNzM4OGNmOGFkODljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC05NTMzLDYgKzk1MzMsMjAgQEAKICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcQm9yZGVyRWRnZS5jcHAi
PgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGJyZWFr
X2xpbmVzLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CkBAIC0xOTY2Nyw2ICsxOTY4MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3Nq
aXRcU3RhY2tBbGxvY2F0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRl
cmluZ1xBdXRvVGFibGVMYXlvdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xCaWRpUnVuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcQm9yZGVyRWRnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5n
XGJyZWFrX2xpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
Q291bnRlck5vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xF
bGxpcHNpc0JveC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDJjYWY1ODc2NzFiODA3MjE2MWQ2YWYx
NGI4YTUzZjUwOTgyMDEzZmQuLjVmNTEyMDg4NzY3NWNmZjYzODZjODExNzEzMWQzOWU2ZGFkMDQ2
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTIzMjgsNiArMjMyOCw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcQmlkaVJ1bi5jcHAiPgogICAgICAgPEZpbHRlcj5yZW5kZXJp
bmc8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xCb3JkZXJFZGdlLmNwcCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXGJyZWFrX2xpbmVzLmNwcCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGI0MTFhNDA1ZTliMTk2ODI2YTAyODcyZDNkMmIxNTk3YTYy
OTk5YWUuLjRlY2QzODU5MzljZmE2ZDNkNDM2YTZhYTc5NzczM2E3ZWRlZjczNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5
OTAsNiArMTk5MCw4IEBACiAJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlz
dHJpYnV0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0NGNDk3NDE0RUUz
NkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2Vy
dGlvblBvaW50LmNwcCAqLzsgfTsKIAkJNTdDRjQ5NzUxNEVFMzZENzAwRUNGRjE0IC8qIEluc2Vy
dGlvblBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0NGNDk3MzE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuaCAqLzsgfTsKKwkJ
NTg5NTU2RUQxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4OTU1NkVDMThENEE0NDAwMDc2NEIwMyAv
KiBCb3JkZXJFZGdlLmggKi87IH07CisJCTU4QUVFMkY0MThENEJDQ0YwMDIyRTdGRSAvKiBCb3Jk
ZXJFZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU4QUVFMkYzMThENEJDQ0YwMDIyRTdGRSAvKiBCb3JkZXJFZGdlLmNwcCAqLzsgfTsKIAkJNTkw
NUFEQkYxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRG
IC8qIFhNTFRyZWVWaWV3ZXIuY3BwICovOyB9OwogCQk1OTA1QURDMDEzMDJGM0NFMDBGMTE2REYg
LyogWE1MVHJlZVZpZXdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLzsg
fTsKIAkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNDgx
MUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04OTQ3LDYgKzg5NDksOCBAQAog
CQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnREaXN0cmlidXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0
aW9uUG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zZXJ0
aW9uUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0NGNDk3MzE0RUUz
NkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zZXJ0aW9uUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTg5NTU2RUMxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQm9yZGVyRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1OEFFRTJGMzE4RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRnZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCb3JkZXJFZGdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVHJlZVZpZXdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJFMTMwMkYzQ0UwMEYx
MTZERiAvKiBYTUxUcmVlVmlld2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhNTFRyZWVWaWV3ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwRTFCNDgx
MUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzI3LDYgKzIxNzMxLDggQEAKIAkJCQlBOENGRjA0OTBBMTU0
RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmggKi8sCiAJCQkJQkNFNzg5OEExMTIwRTgw
MjAwNjBFQ0U1IC8qIEJpZGlSdW4uY3BwICovLAogCQkJCUJDRTc4OTg1MTEyMEU3QTYwMDYwRUNF
NSAvKiBCaWRpUnVuLmggKi8sCisJCQkJNThBRUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRl
ckVkZ2UuY3BwICovLAorCQkJCTU4OTU1NkVDMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdl
LmggKi8sCiAJCQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAq
LywKIAkJCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCAqLywKIAkJ
CQlCQ0RENDU0RDEyMzZDOTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oICovLApAQCAtMjQ0Nzgs
NiArMjQ0ODQsNyBAQAogCQkJCUIyRkEzRDU5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NpcmNs
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVCMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0NsaXBQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENUQwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ29sb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTU4OTU1NkVE
MThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZB
M0Q1RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHQ3Vyc29yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjMwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHRGVmc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjkzMjUsNiAr
MjkzMzIsNyBAQAogCQkJCTkzRjE5QjAzMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xTdHlsZVNoZWV0
TGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUYxRTgyRjBDM0MyQkI5MDA2REIzOTEg
LyogWFNMVEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlCMDQwODI0NUU1
OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNThBRUUy
RjQxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQm9yZGVyRWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVy
RWRnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmZWE1ZTkwN2RkODZkZmZjZTQ0Y2ZhZTdjZmNhYTllOWUy
YzE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJF
ZGdlLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkJvcmRlckVkZ2UuaCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiTGF5
b3V0VW5pdC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclN0
eWxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQm9yZGVyRWRnZTo6Qm9yZGVyRWRnZShM
YXlvdXRVbml0IGVkZ2VXaWR0aCwgY29uc3QgQ29sb3ImIGVkZ2VDb2xvciwgRUJvcmRlclN0eWxl
IGVkZ2VTdHlsZSwgYm9vbCBlZGdlSXNUcmFuc3BhcmVudCwgYm9vbCBlZGdlSXNQcmVzZW50LCBm
bG9hdCBkZXZpY2VQaXhlbFJhdGlvKQorICAgIDogbV93aWR0aChlZGdlV2lkdGgpCisgICAgLCBt
X2NvbG9yKGVkZ2VDb2xvcikKKyAgICAsIG1fc3R5bGUoZWRnZVN0eWxlKQorICAgICwgbV9pc1Ry
YW5zcGFyZW50KGVkZ2VJc1RyYW5zcGFyZW50KQorICAgICwgbV9pc1ByZXNlbnQoZWRnZUlzUHJl
c2VudCkKKyAgICAsIG1fZGV2aWNlUGl4ZWxSYXRpbyhkZXZpY2VQaXhlbFJhdGlvKQoreworICAg
IGlmIChlZGdlU3R5bGUgPT0gRE9VQkxFICYmIGVkZ2VXaWR0aCAgPCBib3JkZXJXaWR0aEluRGV2
aWNlUGl4ZWwoMykpCisgICAgICAgIG1fc3R5bGUgPSBTT0xJRDsKKyAgICBtX2Zsb29yZWRUb0Rl
dmljZVBpeGVsV2lkdGggPSBmbG9vclRvRGV2aWNlUGl4ZWwoZWRnZVdpZHRoLCBkZXZpY2VQaXhl
bFJhdGlvKTsKK30KKworQm9yZGVyRWRnZTo6Qm9yZGVyRWRnZSgpCisgICAgOiBtX3dpZHRoKExh
eW91dFVuaXQ6OmZyb21QaXhlbCgwKSkKKyAgICAsIG1fc3R5bGUoQkhJRERFTikKKyAgICAsIG1f
aXNUcmFuc3BhcmVudChmYWxzZSkKKyAgICAsIG1faXNQcmVzZW50KGZhbHNlKQorICAgICwgbV9m
bG9vcmVkVG9EZXZpY2VQaXhlbFdpZHRoKDApCisgICAgLCBtX2RldmljZVBpeGVsUmF0aW8oMSkK
K3sKK30KKwordm9pZCBCb3JkZXJFZGdlOjpnZXRCb3JkZXJFZGdlSW5mbyhCb3JkZXJFZGdlIGVk
Z2VzW10sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Is
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSkKK3sKKyAgICBib29sIGhvcml6b250YWwgPSBzdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpOworCisgICAgZWRnZXNbQlNUb3BdID0gQm9yZGVyRWRnZShzdHlsZS5ib3JkZXJUb3BXaWR0
aCgpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xv
ciksIHN0eWxlLmJvcmRlclRvcFN0eWxlKCksIHN0eWxlLmJvcmRlclRvcElzVHJhbnNwYXJlbnQo
KSwKKyAgICAgICAgaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBkZXZpY2VT
Y2FsZUZhY3Rvcik7CisgICAgZWRnZXNbQlNSaWdodF0gPSBCb3JkZXJFZGdlKHN0eWxlLmJvcmRl
clJpZ2h0V2lkdGgoKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRDb2xvciksIHN0eWxlLmJvcmRlclJpZ2h0U3R5bGUoKSwgc3R5bGUuYm9yZGVyUmln
aHRJc1RyYW5zcGFyZW50KCksCisgICAgICAgICFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgZWRnZXNbQlNCb3R0b21dID0gQm9y
ZGVyRWRnZShzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciksIHN0eWxlLmJvcmRlckJvdHRvbVN0
eWxlKCksIHN0eWxlLmJvcmRlckJvdHRvbUlzVHJhbnNwYXJlbnQoKSwKKyAgICAgICAgaG9yaXpv
bnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAg
IGVkZ2VzW0JTTGVmdF0gPSBCb3JkZXJFZGdlKHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCBzdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpLCBzdHls
ZS5ib3JkZXJMZWZ0U3R5bGUoKSwgc3R5bGUuYm9yZGVyTGVmdElzVHJhbnNwYXJlbnQoKSwKKyAg
ICAgICAgIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgZGV2aWNlU2NhbGVG
YWN0b3IpOworICAgIH0KKworYm9vbCBCb3JkZXJFZGdlOjpvYnNjdXJlc0JhY2tncm91bmRFZGdl
KGZsb2F0IHNjYWxlKSBjb25zdAoreworICAgIGlmICghbV9pc1ByZXNlbnQgfHwgbV9pc1RyYW5z
cGFyZW50IHx8IChtX3dpZHRoICogc2NhbGUpIDwgYm9yZGVyV2lkdGhJbkRldmljZVBpeGVsKDIp
IHx8IG1fY29sb3IuaGFzQWxwaGEoKSB8fCBtX3N0eWxlID09IEJISURERU4pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX3N0eWxlID09IERPVFRFRCB8fCBtX3N0eWxlID09IERB
U0hFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fc3R5bGUgPT0gRE9VQkxF
KQorICAgICAgICByZXR1cm4gbV93aWR0aCA+PSBzY2FsZSAqIGJvcmRlcldpZHRoSW5EZXZpY2VQ
aXhlbCg1KTsgLy8gVGhlIG91dGVyIGJhbmQgbmVlZHMgdG8gYmUgPj0gMnB4IHdpZGUgYXQgdW5p
dCBzY2FsZS4KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJvcmRlckVkZ2U6Om9ic2N1
cmVzQmFja2dyb3VuZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzUHJlc2VudCB8fCBtX2lzVHJh
bnNwYXJlbnQgfHwgbV9jb2xvci5oYXNBbHBoYSgpIHx8IG1fc3R5bGUgPT0gQkhJRERFTikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fc3R5bGUgPT0gRE9UVEVEIHx8IG1fc3R5
bGUgPT0gREFTSEVEIHx8IG1fc3R5bGUgPT0gRE9VQkxFKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKK3ZvaWQgQm9yZGVyRWRnZTo6Z2V0RG91Ymxl
Qm9yZGVyU3RyaXBlV2lkdGhzKExheW91dFVuaXQgb3V0ZXJXaWR0aCwgTGF5b3V0VW5pdCBpbm5l
cldpZHRoKSBjb25zdAoreworICAgIExheW91dFVuaXQgZnVsbFdpZHRoID0gd2lkdGhGb3JQYWlu
dGluZygpOworICAgIGlubmVyV2lkdGggPSBjZWlsVG9EZXZpY2VQaXhlbChmdWxsV2lkdGggKiAy
IC8gMywgbV9kZXZpY2VQaXhlbFJhdGlvKTsKKyAgICBvdXRlcldpZHRoID0gZmxvb3JUb0Rldmlj
ZVBpeGVsKGZ1bGxXaWR0aCAvIDMsIG1fZGV2aWNlUGl4ZWxSYXRpbyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3Jk
ZXJFZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcyOTMxMDg2MGRjZjg1ODZiMWVmOWMxNTI1MGUzMTBjZWQ5NjFiMTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5oCkBAIC0wLDAgKzEs
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQm9yZGVyRWRnZV9oCisjZGVmaW5lIEJvcmRlckVkZ2VfaAor
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlw
ZWRlZiB1bnNpZ25lZCBCb3JkZXJFZGdlRmxhZ3M7CisKK2NsYXNzIFJlbmRlclN0eWxlOworY2xh
c3MgTGF5b3V0VW5pdDsKKyAgICAKK2NsYXNzIEJvcmRlckVkZ2UgeworcHVibGljOgorICAgIGVu
dW0gQm9yZGVyRWRnZUZsYWcgeworICAgICAgICBUb3BCb3JkZXJFZGdlID0gMSA8PCBCU1RvcCwK
KyAgICAgICAgUmlnaHRCb3JkZXJFZGdlID0gMSA8PCBCU1JpZ2h0LAorICAgICAgICBCb3R0b21C
b3JkZXJFZGdlID0gMSA8PCBCU0JvdHRvbSwKKyAgICAgICAgTGVmdEJvcmRlckVkZ2UgPSAxIDw8
IEJTTGVmdCwKKyAgICAgICAgQWxsQm9yZGVyRWRnZXMgPSBUb3BCb3JkZXJFZGdlIHwgQm90dG9t
Qm9yZGVyRWRnZSB8IExlZnRCb3JkZXJFZGdlIHwgUmlnaHRCb3JkZXJFZGdlCisgICAgfTsKKwor
ICAgIEJvcmRlckVkZ2UoKTsKKyAgICBCb3JkZXJFZGdlKExheW91dFVuaXQgZWRnZVdpZHRoLCBj
b25zdCBDb2xvciYgZWRnZUNvbG9yLCBFQm9yZGVyU3R5bGUgZWRnZVN0eWxlLCBib29sIGVkZ2VJ
c1RyYW5zcGFyZW50LCBib29sIGVkZ2VJc1ByZXNlbnQsIGZsb2F0IGRldmljZVBpeGVsUmF0aW8p
OworCisgICAgc3RhdGljIHZvaWQgZ2V0Qm9yZGVyRWRnZUluZm8oQm9yZGVyRWRnZSBlZGdlc1td
LCBjb25zdCBSZW5kZXJTdHlsZSYsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0g
dHJ1ZSk7CisKKyAgICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxl
OyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgYm9v
bCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYW5zcGFyZW50OyB9CisgICAg
Ym9vbCBpc1ByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJlc2VudDsgfQorCisgICAgaW5s
aW5lIGJvb2wgaGFzVmlzaWJsZUNvbG9yQW5kU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxl
ID4gQkhJRERFTiAmJiAhbV9pc1RyYW5zcGFyZW50OyB9CisgICAgaW5saW5lIGJvb2wgc2hvdWxk
UmVuZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pc1ByZXNlbnQgJiYgd2lkdGhGb3JQYWludGluZygp
ICYmIGhhc1Zpc2libGVDb2xvckFuZFN0eWxlKCk7IH0KKyAgICBpbmxpbmUgYm9vbCBwcmVzZW50
QnV0SW52aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gd2lkdGhGb3JQYWludGluZygpICYmICFoYXNW
aXNpYmxlQ29sb3JBbmRTdHlsZSgpOyB9CisgICAgaW5saW5lIGZsb2F0IHdpZHRoRm9yUGFpbnRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzUHJlc2VudCA/ICBtX2Zsb29yZWRUb0RldmljZVBpeGVs
V2lkdGggOiAwOyB9CisgICAgdm9pZCBnZXREb3VibGVCb3JkZXJTdHJpcGVXaWR0aHMoTGF5b3V0
VW5pdCBvdXRlcldpZHRoLCBMYXlvdXRVbml0IGlubmVyV2lkdGgpIGNvbnN0OworICAgIGJvb2wg
b2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShmbG9hdCBzY2FsZSkgY29uc3Q7CisgICAgYm9vbCBvYnNj
dXJlc0JhY2tncm91bmQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBpbmxpbmUgZmxvYXQgYm9y
ZGVyV2lkdGhJbkRldmljZVBpeGVsKGludCBsb2dpY2FsUGl4ZWxzKSBjb25zdCB7IHJldHVybiBM
YXlvdXRVbml0KGxvZ2ljYWxQaXhlbHMgLyBtX2RldmljZVBpeGVsUmF0aW8pLnRvRmxvYXQoKTsg
fQorICAgIAorICAgIExheW91dFVuaXQgbV93aWR0aDsKKyAgICBDb2xvciBtX2NvbG9yOworICAg
IEVCb3JkZXJTdHlsZSBtX3N0eWxlOworICAgIGJvb2wgbV9pc1RyYW5zcGFyZW50OworICAgIGJv
b2wgbV9pc1ByZXNlbnQ7CisgICAgZmxvYXQgbV9mbG9vcmVkVG9EZXZpY2VQaXhlbFdpZHRoOwor
ICAgIGZsb2F0IG1fZGV2aWNlUGl4ZWxSYXRpbzsKK307CisKK2lubGluZSBib29sIGVkZ2VzU2hh
cmVDb2xvcihjb25zdCBCb3JkZXJFZGdlJiBmaXJzdEVkZ2UsIGNvbnN0IEJvcmRlckVkZ2UmIHNl
Y29uZEVkZ2UpIHsgcmV0dXJuIGZpcnN0RWRnZS5jb2xvcigpID09IHNlY29uZEVkZ2UuY29sb3Io
KTsgfQoraW5saW5lIEJvcmRlckVkZ2U6OkJvcmRlckVkZ2VGbGFnIGVkZ2VGbGFnRm9yU2lkZShC
b3hTaWRlIHNpZGUpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJvcmRlckVkZ2U6OkJvcmRlckVkZ2VG
bGFnPigxIDw8IHNpZGUpOyB9CitpbmxpbmUgYm9vbCBpbmNsdWRlc0VkZ2UoQm9yZGVyRWRnZUZs
YWdzIGZsYWdzLCBCb3hTaWRlIHNpZGUpIHsgcmV0dXJuIGZsYWdzICYgZWRnZUZsYWdGb3JTaWRl
KHNpZGUpOyB9CitpbmxpbmUgYm9vbCBpbmNsdWRlc0FkamFjZW50RWRnZXMoQm9yZGVyRWRnZUZs
YWdzIGZsYWdzKQoreworICAgIHJldHVybiAoZmxhZ3MgJiAoQm9yZGVyRWRnZTo6VG9wQm9yZGVy
RWRnZSB8IEJvcmRlckVkZ2U6OlJpZ2h0Qm9yZGVyRWRnZSkpID09IChCb3JkZXJFZGdlOjpUb3BC
b3JkZXJFZGdlIHwgQm9yZGVyRWRnZTo6UmlnaHRCb3JkZXJFZGdlKQorICAgICAgICB8fCAoZmxh
Z3MgJiAoQm9yZGVyRWRnZTo6UmlnaHRCb3JkZXJFZGdlIHwgQm9yZGVyRWRnZTo6Qm90dG9tQm9y
ZGVyRWRnZSkpID09IChCb3JkZXJFZGdlOjpSaWdodEJvcmRlckVkZ2UgfCBCb3JkZXJFZGdlOjpC
b3R0b21Cb3JkZXJFZGdlKQorICAgICAgICB8fCAoZmxhZ3MgJiAoQm9yZGVyRWRnZTo6Qm90dG9t
Qm9yZGVyRWRnZSB8IEJvcmRlckVkZ2U6OkxlZnRCb3JkZXJFZGdlKSkgPT0gKEJvcmRlckVkZ2U6
OkJvdHRvbUJvcmRlckVkZ2UgfCBCb3JkZXJFZGdlOjpMZWZ0Qm9yZGVyRWRnZSkKKyAgICAgICAg
fHwgKGZsYWdzICYgKEJvcmRlckVkZ2U6OkxlZnRCb3JkZXJFZGdlIHwgQm9yZGVyRWRnZTo6VG9w
Qm9yZGVyRWRnZSkpID09IChCb3JkZXJFZGdlOjpMZWZ0Qm9yZGVyRWRnZSB8IEJvcmRlckVkZ2U6
OlRvcEJvcmRlckVkZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBCb3JkZXJFZGdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCmluZGV4IDNhNTgyMTAyMDcxYzlhZjhlMGEyOTQzZWU5ZGEwYmE3ZTU5
NWMzZGUuLmNiOWU3OWFiMWVhYTYwMTI4ZWM3MDU5YmZhZDAzOTEyYzQwZjgwZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckJveE1v
ZGVsT2JqZWN0LmgiCiAKKyNpbmNsdWRlICJCb3JkZXJFZGdlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
b3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC0xNDAxLDgwICsxNDAyLDYgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRO
aW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotY2xhc3MgQm9yZGVyRWRnZSB7Ci1wdWJsaWM6Ci0gICAgQm9yZGVyRWRn
ZShMYXlvdXRVbml0IGVkZ2VXaWR0aCwgY29uc3QgQ29sb3ImIGVkZ2VDb2xvciwgRUJvcmRlclN0
eWxlIGVkZ2VTdHlsZSwgYm9vbCBlZGdlSXNUcmFuc3BhcmVudCwgYm9vbCBlZGdlSXNQcmVzZW50
LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQotICAgICAgICA6IHdpZHRoKGVkZ2VXaWR0aCkKLSAg
ICAgICAgLCBjb2xvcihlZGdlQ29sb3IpCi0gICAgICAgICwgc3R5bGUoZWRnZVN0eWxlKQotICAg
ICAgICAsIGlzVHJhbnNwYXJlbnQoZWRnZUlzVHJhbnNwYXJlbnQpCi0gICAgICAgICwgaXNQcmVz
ZW50KGVkZ2VJc1ByZXNlbnQpCi0gICAgICAgICwgZGV2aWNlUGl4ZWxSYXRpbyhkZXZpY2VQaXhl
bFJhdGlvKQotICAgIHsKLSAgICAgICAgaWYgKHN0eWxlID09IERPVUJMRSAmJiB3aWR0aCAgPCBi
b3JkZXJXaWR0aEluRGV2aWNlUGl4ZWwoMykpCi0gICAgICAgICAgICBzdHlsZSA9IFNPTElEOwot
ICAgICAgICBmbG9vcmVkVG9EZXZpY2VQaXhlbFdpZHRoID0gZmxvb3JUb0RldmljZVBpeGVsKHdp
ZHRoLCBkZXZpY2VQaXhlbFJhdGlvKTsKLSAgICB9Ci0gICAgCi0gICAgQm9yZGVyRWRnZSgpCi0g
ICAgICAgIDogd2lkdGgoTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDApKQotICAgICAgICAsIHN0eWxl
KEJISURERU4pCi0gICAgICAgICwgaXNUcmFuc3BhcmVudChmYWxzZSkKLSAgICAgICAgLCBpc1By
ZXNlbnQoZmFsc2UpCi0gICAgICAgICwgZmxvb3JlZFRvRGV2aWNlUGl4ZWxXaWR0aCgwKQotICAg
ICAgICAsIGRldmljZVBpeGVsUmF0aW8oMSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
aGFzVmlzaWJsZUNvbG9yQW5kU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdHlsZSA+IEJISURERU4g
JiYgIWlzVHJhbnNwYXJlbnQ7IH0KLSAgICBib29sIHNob3VsZFJlbmRlcigpIGNvbnN0IHsgcmV0
dXJuIGlzUHJlc2VudCAmJiB3aWR0aEZvclBhaW50aW5nKCkgJiYgaGFzVmlzaWJsZUNvbG9yQW5k
U3R5bGUoKTsgfQotICAgIGJvb2wgcHJlc2VudEJ1dEludmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJu
IHdpZHRoRm9yUGFpbnRpbmcoKSAmJiAhaGFzVmlzaWJsZUNvbG9yQW5kU3R5bGUoKTsgfQotICAg
IGJvb2wgb2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShmbG9hdCBzY2FsZSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGlmICghaXNQcmVzZW50IHx8IGlzVHJhbnNwYXJlbnQgfHwgKHdpZHRoICogc2NhbGUp
IDwgYm9yZGVyV2lkdGhJbkRldmljZVBpeGVsKDIpIHx8IGNvbG9yLmhhc0FscGhhKCkgfHwgc3R5
bGUgPT0gQkhJRERFTikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAo
c3R5bGUgPT0gRE9UVEVEIHx8IHN0eWxlID09IERBU0hFRCkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBpZiAoc3R5bGUgPT0gRE9VQkxFKQotICAgICAgICAgICAgcmV0dXJu
IHdpZHRoID49IHNjYWxlICogYm9yZGVyV2lkdGhJbkRldmljZVBpeGVsKDUpOyAvLyBUaGUgb3V0
ZXIgYmFuZCBuZWVkcyB0byBiZSA+PSAycHggd2lkZSBhdCB1bml0IHNjYWxlLgotCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICBib29sIG9ic2N1cmVzQmFja2dyb3VuZCgpIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAoIWlzUHJlc2VudCB8fCBpc1RyYW5zcGFyZW50IHx8IGNvbG9y
Lmhhc0FscGhhKCkgfHwgc3R5bGUgPT0gQkhJRERFTikKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBpZiAoc3R5bGUgPT0gRE9UVEVEIHx8IHN0eWxlID09IERBU0hFRCB8fCBz
dHlsZSA9PSBET1VCTEUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgZmxvYXQgd2lkdGhGb3JQYWludGluZygpIGNvbnN0IHsg
cmV0dXJuIGlzUHJlc2VudCA/ICBmbG9vcmVkVG9EZXZpY2VQaXhlbFdpZHRoIDogMDsgfQotICAg
IAotICAgIHZvaWQgZ2V0RG91YmxlQm9yZGVyU3RyaXBlV2lkdGhzKExheW91dFVuaXQmIG91dGVy
V2lkdGgsIExheW91dFVuaXQmIGlubmVyV2lkdGgpIGNvbnN0Ci0gICAgewotICAgICAgICBMYXlv
dXRVbml0IGZ1bGxXaWR0aCA9IHdpZHRoRm9yUGFpbnRpbmcoKTsKLSAgICAgICAgaW5uZXJXaWR0
aCA9IGNlaWxUb0RldmljZVBpeGVsKGZ1bGxXaWR0aCAqIDIgLyAzLCBkZXZpY2VQaXhlbFJhdGlv
KTsKLSAgICAgICAgb3V0ZXJXaWR0aCA9IGZsb29yVG9EZXZpY2VQaXhlbChmdWxsV2lkdGggLyAz
LCBkZXZpY2VQaXhlbFJhdGlvKTsKLSAgICB9Ci0gICAgCi0gICAgTGF5b3V0VW5pdCB3aWR0aDsK
LSAgICBDb2xvciBjb2xvcjsKLSAgICBFQm9yZGVyU3R5bGUgc3R5bGU7Ci0gICAgYm9vbCBpc1Ry
YW5zcGFyZW50OwotICAgIGJvb2wgaXNQcmVzZW50OwotCi1wcml2YXRlOgotICAgIGZsb2F0IGJv
cmRlcldpZHRoSW5EZXZpY2VQaXhlbChpbnQgbG9naWNhbFBpeGVscykgY29uc3QgeyByZXR1cm4g
TGF5b3V0VW5pdChsb2dpY2FsUGl4ZWxzIC8gZGV2aWNlUGl4ZWxSYXRpbykudG9GbG9hdCgpOyB9
Ci0KLSAgICBmbG9hdCBmbG9vcmVkVG9EZXZpY2VQaXhlbFdpZHRoOwotICAgIGZsb2F0IGRldmlj
ZVBpeGVsUmF0aW87Ci19OwotCiBzdGF0aWMgYm9vbCBhbGxDb3JuZXJzQ2xpcHBlZE91dChjb25z
dCBSb3VuZGVkUmVjdCYgYm9yZGVyLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKIHsKICAg
ICBMYXlvdXRSZWN0IGJvdW5kaW5nUmVjdCA9IGJvcmRlci5yZWN0KCk7CkBAIC0xNTExLDM3ICsx
NDM4LDYgQEAgc3RhdGljIGJvb2wgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShjb25zdCBMYXlvdXRT
aXplJiBmaXJzdFJhZGl1cywgY29uc3QgRmxvYXRTaXoKICAgICByZXR1cm4gIWZpcnN0UmFkaXVz
LmlzWmVybygpIHx8ICFzZWNvbmRSYWRpdXMuaXNaZXJvKCk7CiB9CiAKLWVudW0gQm9yZGVyRWRn
ZUZsYWcgewotICAgIFRvcEJvcmRlckVkZ2UgPSAxIDw8IEJTVG9wLAotICAgIFJpZ2h0Qm9yZGVy
RWRnZSA9IDEgPDwgQlNSaWdodCwKLSAgICBCb3R0b21Cb3JkZXJFZGdlID0gMSA8PCBCU0JvdHRv
bSwKLSAgICBMZWZ0Qm9yZGVyRWRnZSA9IDEgPDwgQlNMZWZ0LAotICAgIEFsbEJvcmRlckVkZ2Vz
ID0gVG9wQm9yZGVyRWRnZSB8IEJvdHRvbUJvcmRlckVkZ2UgfCBMZWZ0Qm9yZGVyRWRnZSB8IFJp
Z2h0Qm9yZGVyRWRnZQotfTsKLQotc3RhdGljIGlubGluZSBCb3JkZXJFZGdlRmxhZyBlZGdlRmxh
Z0ZvclNpZGUoQm94U2lkZSBzaWRlKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxCb3JkZXJF
ZGdlRmxhZz4oMSA8PCBzaWRlKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGluY2x1ZGVzRWRn
ZShCb3JkZXJFZGdlRmxhZ3MgZmxhZ3MsIEJveFNpZGUgc2lkZSkKLXsKLSAgICByZXR1cm4gZmxh
Z3MgJiBlZGdlRmxhZ0ZvclNpZGUoc2lkZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpbmNs
dWRlc0FkamFjZW50RWRnZXMoQm9yZGVyRWRnZUZsYWdzIGZsYWdzKQotewotICAgIHJldHVybiAo
ZmxhZ3MgJiAoVG9wQm9yZGVyRWRnZSB8IFJpZ2h0Qm9yZGVyRWRnZSkpID09IChUb3BCb3JkZXJF
ZGdlIHwgUmlnaHRCb3JkZXJFZGdlKQotICAgICAgICB8fCAoZmxhZ3MgJiAoUmlnaHRCb3JkZXJF
ZGdlIHwgQm90dG9tQm9yZGVyRWRnZSkpID09IChSaWdodEJvcmRlckVkZ2UgfCBCb3R0b21Cb3Jk
ZXJFZGdlKQotICAgICAgICB8fCAoZmxhZ3MgJiAoQm90dG9tQm9yZGVyRWRnZSB8IExlZnRCb3Jk
ZXJFZGdlKSkgPT0gKEJvdHRvbUJvcmRlckVkZ2UgfCBMZWZ0Qm9yZGVyRWRnZSkKLSAgICAgICAg
fHwgKGZsYWdzICYgKExlZnRCb3JkZXJFZGdlIHwgVG9wQm9yZGVyRWRnZSkpID09IChMZWZ0Qm9y
ZGVyRWRnZSB8IFRvcEJvcmRlckVkZ2UpOwotfQotCi1pbmxpbmUgYm9vbCBlZGdlc1NoYXJlQ29s
b3IoY29uc3QgQm9yZGVyRWRnZSYgZmlyc3RFZGdlLCBjb25zdCBCb3JkZXJFZGdlJiBzZWNvbmRF
ZGdlKQotewotICAgIHJldHVybiBmaXJzdEVkZ2UuY29sb3IgPT0gc2Vjb25kRWRnZS5jb2xvcjsK
LX0KLQogaW5saW5lIGJvb2wgc3R5bGVSZXF1aXJlc0NsaXBQb2x5Z29uKEVCb3JkZXJTdHlsZSBz
dHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGUgPT0gRE9UVEVEIHx8IHN0eWxlID09IERBU0hFRDsg
Ly8gVGhlc2UgYXJlIGRyYXduIHdpdGggYSBzdHJva2UsIHNvIHdlIGhhdmUgdG8gY2xpcCB0byBn
ZXQgY29ybmVyIG1pdGVycy4KQEAgLTE1ODUsMTMgKzE0ODEsMTMgQEAgc3RhdGljIGlubGluZSBi
b29sIGNvbG9yc01hdGNoQXRDb3JuZXIoQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lk
ZSwgY29uc3QKICAgICBpZiAoIWVkZ2VzU2hhcmVDb2xvcihlZGdlc1tzaWRlXSwgZWRnZXNbYWRq
YWNlbnRTaWRlXSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiAhYm9yZGVy
U3R5bGVIYXNVbm1hdGNoZWRDb2xvcnNBdENvcm5lcihlZGdlc1tzaWRlXS5zdHlsZSwgc2lkZSwg
YWRqYWNlbnRTaWRlKTsKKyAgICByZXR1cm4gIWJvcmRlclN0eWxlSGFzVW5tYXRjaGVkQ29sb3Jz
QXRDb3JuZXIoZWRnZXNbc2lkZV0uc3R5bGUoKSwgc2lkZSwgYWRqYWNlbnRTaWRlKTsKIH0KIAog
CiBzdGF0aWMgaW5saW5lIGJvb2wgY29sb3JOZWVkc0FudGlBbGlhc0F0Q29ybmVyKEJveFNpZGUg
c2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSkKIHsK
LSAgICBpZiAoIWVkZ2VzW3NpZGVdLmNvbG9yLmhhc0FscGhhKCkpCisgICAgaWYgKCFlZGdlc1tz
aWRlXS5jb2xvcigpLmhhc0FscGhhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChlZGdlc1tzaWRlXS5zaG91bGRSZW5kZXIoKSAhPSBlZGdlc1thZGphY2VudFNpZGVdLnNob3Vs
ZFJlbmRlcigpKQpAQCAtMTYwMCw3ICsxNDk2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNvbG9y
TmVlZHNBbnRpQWxpYXNBdENvcm5lcihCb3hTaWRlIHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWQK
ICAgICBpZiAoIWVkZ2VzU2hhcmVDb2xvcihlZGdlc1tzaWRlXSwgZWRnZXNbYWRqYWNlbnRTaWRl
XSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGJvcmRlclN0eWxlSGFzVW5t
YXRjaGVkQ29sb3JzQXRDb3JuZXIoZWRnZXNbc2lkZV0uc3R5bGUsIHNpZGUsIGFkamFjZW50U2lk
ZSk7CisgICAgcmV0dXJuIGJvcmRlclN0eWxlSGFzVW5tYXRjaGVkQ29sb3JzQXRDb3JuZXIoZWRn
ZXNbc2lkZV0uc3R5bGUoKSwgc2lkZSwgYWRqYWNlbnRTaWRlKTsKIH0KIAogLy8gVGhpcyBhc3N1
bWVzIHRoYXQgd2UgZHJhdyBpbiBvcmRlcjogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LgpAQCAt
MTYxMiwxMCArMTUwOCwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgd2lsbEJlT3ZlcmRyYXduKEJv
eFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNvbnN0IEJvcgogICAgICAgICBpZiAo
ZWRnZXNbYWRqYWNlbnRTaWRlXS5wcmVzZW50QnV0SW52aXNpYmxlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFlZGdlc1NoYXJlQ29sb3IoZWRnZXNbc2lkZV0s
IGVkZ2VzW2FkamFjZW50U2lkZV0pICYmIGVkZ2VzW2FkamFjZW50U2lkZV0uY29sb3IuaGFzQWxw
aGEoKSkKKyAgICAgICAgaWYgKCFlZGdlc1NoYXJlQ29sb3IoZWRnZXNbc2lkZV0sIGVkZ2VzW2Fk
amFjZW50U2lkZV0pICYmIGVkZ2VzW2FkamFjZW50U2lkZV0uY29sb3IoKS5oYXNBbHBoYSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKCFib3JkZXJT
dHlsZUZpbGxzQm9yZGVyQXJlYShlZGdlc1thZGphY2VudFNpZGVdLnN0eWxlKSkKKyAgICAgICAg
aWYgKCFib3JkZXJTdHlsZUZpbGxzQm9yZGVyQXJlYShlZGdlc1thZGphY2VudFNpZGVdLnN0eWxl
KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTY0NCw3ICsxNTQwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGJvcmRlclN0eWxlc1JlcXVp
cmVNaXRyZShCb3hTaWRlIHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlLAogCiBzdGF0aWMgYm9v
bCBqb2luUmVxdWlyZXNNaXRyZShCb3hTaWRlIHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlLCBj
b25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGJvb2wgYWxsb3dPdmVyZHJhdykKIHsKLSAgICBpZiAo
KGVkZ2VzW3NpZGVdLmlzVHJhbnNwYXJlbnQgJiYgZWRnZXNbYWRqYWNlbnRTaWRlXS5pc1RyYW5z
cGFyZW50KSB8fCAhZWRnZXNbYWRqYWNlbnRTaWRlXS5pc1ByZXNlbnQpCisgICAgaWYgKChlZGdl
c1tzaWRlXS5pc1RyYW5zcGFyZW50KCkgJiYgZWRnZXNbYWRqYWNlbnRTaWRlXS5pc1RyYW5zcGFy
ZW50KCkpIHx8ICFlZGdlc1thZGphY2VudFNpZGVdLmlzUHJlc2VudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoYWxsb3dPdmVyZHJhdyAmJiB3aWxsQmVPdmVyZHJhd24oc2lk
ZSwgYWRqYWNlbnRTaWRlLCBlZGdlcykpCkBAIC0xNjUzLDcgKzE1NDksNyBAQCBzdGF0aWMgYm9v
bCBqb2luUmVxdWlyZXNNaXRyZShCb3hTaWRlIHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlLCBj
b25zdCBCb3JkZXJFZAogICAgIGlmICghZWRnZXNTaGFyZUNvbG9yKGVkZ2VzW3NpZGVdLCBlZGdl
c1thZGphY2VudFNpZGVdKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoYm9yZGVy
U3R5bGVzUmVxdWlyZU1pdHJlKHNpZGUsIGFkamFjZW50U2lkZSwgZWRnZXNbc2lkZV0uc3R5bGUs
IGVkZ2VzW2FkamFjZW50U2lkZV0uc3R5bGUpKQorICAgIGlmIChib3JkZXJTdHlsZXNSZXF1aXJl
TWl0cmUoc2lkZSwgYWRqYWNlbnRTaWRlLCBlZGdlc1tzaWRlXS5zdHlsZSgpLCBlZGdlc1thZGph
Y2VudFNpZGVdLnN0eWxlKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNjc0LDcgKzE1NzAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAg
ICAgYm9vbCBhZGphY2VudFNpZGUxU3R5bGVzTWF0Y2ggPSBjb2xvcnNNYXRjaEF0Q29ybmVyKHNp
ZGUsIGFkamFjZW50U2lkZTEsIGVkZ2VzKTsKICAgICBib29sIGFkamFjZW50U2lkZTJTdHlsZXNN
YXRjaCA9IGNvbG9yc01hdGNoQXRDb3JuZXIoc2lkZSwgYWRqYWNlbnRTaWRlMiwgZWRnZXMpOwog
Ci0gICAgY29uc3QgQ29sb3ImIGNvbG9yVG9QYWludCA9IG92ZXJyaWRlQ29sb3IgPyAqb3ZlcnJp
ZGVDb2xvciA6IGVkZ2VUb1JlbmRlci5jb2xvcjsKKyAgICBjb25zdCBDb2xvciYgY29sb3JUb1Bh
aW50ID0gb3ZlcnJpZGVDb2xvciA/ICpvdmVycmlkZUNvbG9yIDogZWRnZVRvUmVuZGVyLmNvbG9y
KCk7CiAKICAgICBpZiAocGF0aCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7CkBAIC0xNjg0LDkgKzE1ODAsOSBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJ
bm5lclBhdGgoZ3JhcGhpY3NDb250ZXh0LCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIHNpZGUs
IGVkZ2VzKTsKICAgICAgICAgZmxvYXQgdGhpY2tuZXNzID0gc3RkOjptYXgoc3RkOjptYXgoZWRn
ZVRvUmVuZGVyLndpZHRoRm9yUGFpbnRpbmcoKSwgYWRqYWNlbnRFZGdlMS53aWR0aEZvclBhaW50
aW5nKCkpLCBhZGphY2VudEVkZ2UyLndpZHRoRm9yUGFpbnRpbmcoKSk7CiAgICAgICAgIGRyYXdC
b3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBvdXRlckJvcmRlci5yZWN0KCksICpwYXRo
LCBlZGdlcywgZWRnZVRvUmVuZGVyLndpZHRoRm9yUGFpbnRpbmcoKSwgdGhpY2tuZXNzLCBzaWRl
LCBzdHlsZSwKLSAgICAgICAgICAgIGNvbG9yVG9QYWludCwgZWRnZVRvUmVuZGVyLnN0eWxlLCBi
bGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOworICAgICAgICAgICAgY29sb3JUb1BhaW50LCBlZGdlVG9SZW5kZXIuc3R5bGUoKSwg
YmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKICAgICB9IGVsc2UgewotICAgICAgICBib29sIGNsaXBGb3JTdHlsZSA9IHN0eWxl
UmVxdWlyZXNDbGlwUG9seWdvbihlZGdlVG9SZW5kZXIuc3R5bGUpICYmIChtaXRyZUFkamFjZW50
U2lkZTEgfHwgbWl0cmVBZGphY2VudFNpZGUyKTsKKyAgICAgICAgYm9vbCBjbGlwRm9yU3R5bGUg
PSBzdHlsZVJlcXVpcmVzQ2xpcFBvbHlnb24oZWRnZVRvUmVuZGVyLnN0eWxlKCkpICYmIChtaXRy
ZUFkamFjZW50U2lkZTEgfHwgbWl0cmVBZGphY2VudFNpZGUyKTsKICAgICAgICAgYm9vbCBjbGlw
QWRqYWNlbnRTaWRlMSA9IGNvbG9yTmVlZHNBbnRpQWxpYXNBdENvcm5lcihzaWRlLCBhZGphY2Vu
dFNpZGUxLCBlZGdlcykgJiYgbWl0cmVBZGphY2VudFNpZGUxOwogICAgICAgICBib29sIGNsaXBB
ZGphY2VudFNpZGUyID0gY29sb3JOZWVkc0FudGlBbGlhc0F0Q29ybmVyKHNpZGUsIGFkamFjZW50
U2lkZTIsIGVkZ2VzKSAmJiBtaXRyZUFkamFjZW50U2lkZTI7CiAgICAgICAgIGJvb2wgc2hvdWxk
Q2xpcCA9IGNsaXBGb3JTdHlsZSB8fCBjbGlwQWRqYWNlbnRTaWRlMSB8fCBjbGlwQWRqYWNlbnRT
aWRlMjsKQEAgLTE3MDEsNyArMTU5Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAg
ICAgICAgIG1pdHJlQWRqYWNlbnRTaWRlMiA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzaWRlUmVjdC54KCks
IHNpZGVSZWN0LnkoKSwgc2lkZVJlY3QubWF4WCgpLCBzaWRlUmVjdC5tYXhZKCksIHNpZGUsIGNv
bG9yVG9QYWludCwgZWRnZVRvUmVuZGVyLnN0eWxlLAorICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCBzaWRlUmVjdC54KCksIHNpZGVSZWN0LnkoKSwgc2lkZVJlY3Qu
bWF4WCgpLCBzaWRlUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yVG9QYWludCwgZWRnZVRvUmVuZGVy
LnN0eWxlKCksCiAgICAgICAgICAgICBtaXRyZUFkamFjZW50U2lkZTEgPyBhZGphY2VudEVkZ2Ux
LndpZHRoRm9yUGFpbnRpbmcoKSA6IDAsIG1pdHJlQWRqYWNlbnRTaWRlMiA/IGFkamFjZW50RWRn
ZTIud2lkdGhGb3JQYWludGluZygpIDogMCwgYW50aWFsaWFzKTsKICAgICB9CiB9CkBAIC0xNzQy
LDcgKzE2MzgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVz
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjbwogICAgICAgICBMYXlvdXRSZWN0
IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICBzaWRlUmVjdC5zZXRIZWln
aHQoZWRnZXNbQlNUb3BdLndpZHRoRm9yUGFpbnRpbmcoKSArIGlubmVyQm9yZGVyQWRqdXN0bWVu
dC55KCkpOwogCi0gICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJT
dHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTVG9wXS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lu
bmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWko
KS50b3BSaWdodCgpKSk7CisgICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChi
b3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTVG9wXS5zdHlsZSgpKSB8fCBib3JkZXJX
aWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBpbm5lckJvcmRl
ci5yYWRpaSgpLnRvcFJpZ2h0KCkpKTsKICAgICAgICAgcGFpbnRPbmVCb3JkZXJTaWRlKGdyYXBo
aWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZVJlY3QsIEJT
VG9wLCBCU0xlZnQsIEJTUmlnaHQsIGVkZ2VzLCB1c2VQYXRoID8gJnJvdW5kZWRQYXRoIDogMCwg
YmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlLCBhbnRpYWxpYXMsIG92ZXJyaWRlQ29sb3IpOwogICAgIH0KIApAQCAtMTc1MCw3ICsx
NjQ2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICAgICAgTGF5b3V0UmVjdCBzaWRl
UmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2hpZnRZRWRnZVRv
KHNpZGVSZWN0Lm1heFkoKSAtIGVkZ2VzW0JTQm90dG9tXS53aWR0aEZvclBhaW50aW5nKCkgLSBp
bm5lckJvcmRlckFkanVzdG1lbnQueSgpKTsKIAotICAgICAgICBib29sIHVzZVBhdGggPSByZW5k
ZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU0JvdHRvbV0uc3R5
bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21M
ZWZ0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOworICAgICAgICBib29s
IHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdl
c1tCU0JvdHRvbV0uc3R5bGUoKSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRl
ci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgp
KSk7CiAgICAgICAgIHBhaW50T25lQm9yZGVyU2lkZShncmFwaGljc0NvbnRleHQsIHN0eWxlLCBv
dXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIHNpZGVSZWN0LCBCU0JvdHRvbSwgQlNMZWZ0LCBCU1Jp
Z2h0LCBlZGdlcywgdXNlUGF0aCA/ICZyb3VuZGVkUGF0aCA6IDAsIGJsZWVkQXZvaWRhbmNlLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFz
LCBvdmVycmlkZUNvbG9yKTsKICAgICB9CiAKQEAgLTE3NTgsNyArMTY1NCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvCiAgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRl
ci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNldFdpZHRoKGVkZ2VzW0JTTGVmdF0ud2lkdGhG
b3JQYWludGluZygpICsgaW5uZXJCb3JkZXJBZGp1c3RtZW50LngoKSk7CiAKLSAgICAgICAgYm9v
bCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJEZXRhaWwoZWRn
ZXNbQlNMZWZ0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5y
YWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BMZWZ0KCkpKTsKKyAg
ICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJE
ZXRhaWwoZWRnZXNbQlNMZWZ0XS5zdHlsZSgpKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlu
bmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcExl
ZnQoKSkpOwogICAgICAgICBwYWludE9uZUJvcmRlclNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzdHls
ZSwgb3V0ZXJCb3JkZXIsIGlubmVyQm9yZGVyLCBzaWRlUmVjdCwgQlNMZWZ0LCBCU1RvcCwgQlNC
b3R0b20sIGVkZ2VzLCB1c2VQYXRoID8gJnJvdW5kZWRQYXRoIDogMCwgYmxlZWRBdm9pZGFuY2Us
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxp
YXMsIG92ZXJyaWRlQ29sb3IpOwogICAgIH0KIApAQCAtMTc2Niw3ICsxNjYyLDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY28KICAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9y
ZGVyLnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2hpZnRYRWRnZVRvKHNpZGVSZWN0Lm1heFgo
KSAtIGVkZ2VzW0JTUmlnaHRdLndpZHRoRm9yUGFpbnRpbmcoKSAtIGlubmVyQm9yZGVyQWRqdXN0
bWVudC54KCkpOwogCi0gICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3Jk
ZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTUmlnaHRdLnN0eWxlKSB8fCBib3JkZXJXaWxs
QXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgaW5uZXJCb3Jk
ZXIucmFkaWkoKS50b3BSaWdodCgpKSk7CisgICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJh
ZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTUmlnaHRdLnN0eWxlKCkp
IHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21SaWdo
dCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkpKTsKICAgICAgICAgcGFpbnRPbmVC
b3JkZXJTaWRlKGdyYXBoaWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRl
ciwgc2lkZVJlY3QsIEJTUmlnaHQsIEJTVG9wLCBCU0JvdHRvbSwgZWRnZXMsIHVzZVBhdGggPyAm
cm91bmRlZFBhdGggOiAwLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGFudGlhbGlhcywgb3ZlcnJpZGVDb2xvcik7CiAgICAg
fQogfQpAQCAtMTc5MCwxMCArMTY4NiwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljcwogCiAg
ICAgICAgICAgICBib29sIGluY2x1ZGVFZGdlOwogICAgICAgICAgICAgaWYgKCFjb21tb25Db2xv
ckVkZ2VTZXQpIHsKLSAgICAgICAgICAgICAgICBjb21tb25Db2xvciA9IGVkZ2VzW2N1cnJTaWRl
XS5jb2xvcjsKKyAgICAgICAgICAgICAgICBjb21tb25Db2xvciA9IGVkZ2VzW2N1cnJTaWRlXS5j
b2xvcigpOwogICAgICAgICAgICAgICAgIGluY2x1ZGVFZGdlID0gdHJ1ZTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIGluY2x1ZGVFZGdlID0gZWRnZXNbY3VyclNpZGVdLmNv
bG9yID09IGNvbW1vbkNvbG9yOworICAgICAgICAgICAgICAgIGluY2x1ZGVFZGdlID0gZWRnZXNb
Y3VyclNpZGVdLmNvbG9yKCkgPT0gY29tbW9uQ29sb3I7CiAKICAgICAgICAgICAgIGlmIChpbmNs
dWRlRWRnZSkKICAgICAgICAgICAgICAgICBjb21tb25Db2xvckVkZ2VTZXQgfD0gZWRnZUZsYWdG
b3JTaWRlKGN1cnJTaWRlKTsKQEAgLTE4MjYsNyArMTcyMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UmVjdCYKICAgICAgICAgcmV0dXJuOwogCiAgICAgQm9yZGVyRWRnZSBlZGdlc1s0XTsKLSAgICBn
ZXRCb3JkZXJFZGdlSW5mbyhlZGdlcywgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICBCb3JkZXJFZGdlOjpnZXRCb3JkZXJFZGdlSW5m
byhlZGdlcywgc3R5bGUsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIFJvdW5kZWRSZWN0
IG91dGVyQm9yZGVyID0gc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihyZWN0LCAmdmlldygpLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgUm91
bmRlZFJlY3QgaW5uZXJCb3JkZXIgPSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9y
ZGVySW5uZXJSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZSgqZ3JhcGhpY3NDb250ZXh0LCBy
ZWN0LCBibGVlZEF2b2lkYW5jZSksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKIApAQCAtMTg1NywxNiArMTc1MywxNiBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91
dFJlY3QmCiAKICAgICAgICAgaWYgKGZpcnN0VmlzaWJsZUVkZ2UgPT0gLTEpCiAgICAgICAgICAg
ICBmaXJzdFZpc2libGVFZGdlID0gaTsKLSAgICAgICAgZWxzZSBpZiAoY3VyckVkZ2UuY29sb3Ig
IT0gZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IpCisgICAgICAgIGVsc2UgaWYgKGN1cnJF
ZGdlLmNvbG9yKCkgIT0gZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSkKICAgICAgICAg
ICAgIGFsbEVkZ2VzU2hhcmVDb2xvciA9IGZhbHNlOwogCi0gICAgICAgIGlmIChjdXJyRWRnZS5j
b2xvci5oYXNBbHBoYSgpKQorICAgICAgICBpZiAoY3VyckVkZ2UuY29sb3IoKS5oYXNBbHBoYSgp
KQogICAgICAgICAgICAgaGF2ZUFscGhhQ29sb3IgPSB0cnVlOwogICAgICAgICAKLSAgICAgICAg
aWYgKGN1cnJFZGdlLnN0eWxlICE9IFNPTElEKQorICAgICAgICBpZiAoY3VyckVkZ2Uuc3R5bGUo
KSAhPSBTT0xJRCkKICAgICAgICAgICAgIGhhdmVBbGxTb2xpZEVkZ2VzID0gZmFsc2U7CiAKLSAg
ICAgICAgaWYgKGN1cnJFZGdlLnN0eWxlICE9IERPVUJMRSkKKyAgICAgICAgaWYgKGN1cnJFZGdl
LnN0eWxlKCkgIT0gRE9VQkxFKQogICAgICAgICAgICAgaGF2ZUFsbERvdWJsZUVkZ2VzID0gZmFs
c2U7CiAgICAgfQogCkBAIC0xOTM1LDcgKzE4MzEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3Qm
CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KHBpeGVsU25hcHBlZElubmVyQm9yZGVyLnJl
Y3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Rmls
bFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Rmls
bENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RW
aXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0gCkBAIC0xOTUyLDcgKzE4NDgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbFJ1bGUoUlVM
RV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGVk
Z2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRn
ZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTIzNjMsNDQgKzIyNTksMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCogZ3IKICAgICBncmFwaGlj
c0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNhbGN1bGF0ZUFk
anVzdGVkSW5uZXJCb3JkZXIoaW5uZXJCb3JkZXIsIHNpZGUpKSk7CiB9CiAKLXZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmdldEJvcmRlckVkZ2VJbmZvKEJvcmRlckVkZ2UgZWRnZXNbXSwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0Ci17Ci0gICAgYm9vbCBob3Jpem9udGFsID0g
c3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKLQotICAgIGVkZ2VzW0JTVG9w
XSA9IEJvcmRlckVkZ2Uoc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSwKLSAgICAgICAgc3R5bGUudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLAotICAgICAgICBz
dHlsZS5ib3JkZXJUb3BTdHlsZSgpLAotICAgICAgICBzdHlsZS5ib3JkZXJUb3BJc1RyYW5zcGFy
ZW50KCksCi0gICAgICAgIGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwKLSAg
ICAgICAgZGV2aWNlU2NhbGVGYWN0b3IpOwotCi0gICAgZWRnZXNbQlNSaWdodF0gPSBCb3JkZXJF
ZGdlKHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwKLSAgICAgICAgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciksCi0gICAgICAgIHN0eWxlLmJv
cmRlclJpZ2h0U3R5bGUoKSwKLSAgICAgICAgc3R5bGUuYm9yZGVyUmlnaHRJc1RyYW5zcGFyZW50
KCksCi0gICAgICAgICFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLAotICAg
ICAgICBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBlZGdlc1tCU0JvdHRvbV0gPSBCb3JkZXJF
ZGdlKHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCksCi0gICAgICAgIHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKSwKLSAgICAgICAgc3R5bGUu
Ym9yZGVyQm90dG9tU3R5bGUoKSwKLSAgICAgICAgc3R5bGUuYm9yZGVyQm90dG9tSXNUcmFuc3Bh
cmVudCgpLAotICAgICAgICBob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLAot
ICAgICAgICBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBlZGdlc1tCU0xlZnRdID0gQm9yZGVy
RWRnZShzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwKLSAgICAgICAgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSwKLSAgICAgICAgc3R5bGUuYm9y
ZGVyTGVmdFN0eWxlKCksCi0gICAgICAgIHN0eWxlLmJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCks
Ci0gICAgICAgICFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsCi0gICAgICAg
IGRldmljZVNjYWxlRmFjdG9yKTsKLX0KLQogYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym9y
ZGVyT2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShjb25zdCBGbG9hdFNpemUmIGNvbnRleHRTY2FsZSkg
Y29uc3QKIHsKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwotICAgIGdldEJvcmRlckVkZ2VJbmZv
KGVkZ2VzLCBzdHlsZSgpKTsKKyAgICBCb3JkZXJFZGdlOjpnZXRCb3JkZXJFZGdlSW5mbyhlZGdl
cywgc3R5bGUoKSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIGZvciAo
aW50IGkgPSBCU1RvcDsgaSA8PSBCU0xlZnQ7ICsraSkgewogICAgICAgICBjb25zdCBCb3JkZXJF
ZGdlJiBjdXJyRWRnZSA9IGVkZ2VzW2ldOwpAQCAtMjQyMyw3ICsyMjg1LDcgQEAgYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Ym9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5kKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQm9yZGVyRWRnZSBlZGdlc1s0XTsKLSAgICBnZXRCb3Jk
ZXJFZGdlSW5mbyhlZGdlcywgc3R5bGUoKSk7CisgICAgQm9yZGVyRWRnZTo6Z2V0Qm9yZGVyRWRn
ZUluZm8oZWRnZXMsIHN0eWxlKCksIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAK
ICAgICBmb3IgKGludCBpID0gQlNUb3A7IGkgPD0gQlNMZWZ0OyArK2kpIHsKICAgICAgICAgY29u
c3QgQm9yZGVyRWRnZSYgY3VyckVkZ2UgPSBlZGdlc1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggOWE5YmIxYzM0ODVhYmE0NWQx
YTk5YmQ5MmQwODgyNTliZjMwMjgwZS4uZjQ0MGYzNmY3NmE4NzZiN2ZiNjgxNDcyZTkzMjFjMzky
Y2U2YTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBDb250ZW50Q2hhbmdlVHlwZSB7CiAgICAg
RnVsbFNjcmVlbkNoYW5nZWQKIH07CiAKK2NsYXNzIEJvcmRlckVkZ2U7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIGNsYXNzIElubGluZUZsb3dCb3g7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CkBAIC0yNjQs
NyArMjY1LDYgQEAgcHJvdGVjdGVkOgogICAgIExheW91dFBvaW50IGFkanVzdGVkUG9zaXRpb25S
ZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKICAgICB2
b2lkIGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHBhaW50Q29udGFpbmVyLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRS
ZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5JiwgUmVuZGVyRWxlbWVudCog
PSAwKSBjb25zdDsKLSAgICB2b2lkIGdldEJvcmRlckVkZ2VJbmZvKGNsYXNzIEJvcmRlckVkZ2Vb
XSwgY29uc3QgUmVuZGVyU3R5bGUmLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVl
LCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAgICAgYm9vbCBi
b3JkZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxl
KSBjb25zdDsKICAgICBib29sIGJvcmRlck9ic2N1cmVzQmFja2dyb3VuZCgpIGNvbnN0OwogICAg
IFJvdW5kZWRSZWN0IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFu
Y2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRC
bGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCosIGNvbnN0IExheW91dFNpemUmLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0
OwpAQCAtMzI5LDE2ICszMjksMTYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xpcEJvcmRlclNp
ZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRl
ciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJveFNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdl
TWF0Y2hlcyk7Ci0gICAgdm9pZCBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYsIEJv
eFNpZGUsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSk7CisgICAgdm9pZCBjbGlwQm9yZGVyU2lk
ZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3Qm
LCBjb25zdCBSb3VuZGVkUmVjdCYsIEJveFNpZGUsIGNvbnN0IEJvcmRlckVkZ2VbXSk7CiAgICAg
dm9pZCBwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBp
bm5lckJvcmRlciwKLSAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUs
IEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25zdCBjbGFz
cyBCb3JkZXJFZGdlW10sCisgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHNpZGVSZWN0LCBCb3hT
aWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3Qg
Qm9yZGVyRWRnZVtdLAogICAgICAgICBjb25zdCBQYXRoKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9IDApOwog
ICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBS
b3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVz
dG1lbnQsCi0gICAgICAgIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdz
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7Cisg
ICAgICAgIGNvbnN0IEJvcmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7CiAgICAgdm9pZCBwYWludEJv
cmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91
bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCi0g
ICAgICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IGNsYXNz
IEJvcmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Us
CisgICAgICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IEJv
cmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsCiAg
ICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSwgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29s
b3IgPSAwKTsKLSAgICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10s
CisgICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExh
eW91dFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3QgQm9yZGVyRWRnZVtdLAogICAgICAgICBmbG9h
dCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25lc3MsIEJveFNpZGUsIGNvbnN0IFJlbmRlclN0
eWxlJiwKICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogICAgIHZvaWQgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqLCBj
b25zdCBJbnRSZWN0JiwgSW5saW5lRmxvd0JveCosIGNvbnN0IExheW91dFJlY3QmLCBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226830</attachid>
            <date>2014-03-15 19:50:08 -0700</date>
            <delta_ts>2014-03-15 21:57:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130294-20140315194939.patch</filename>
            <type>text/plain</type>
            <size>44102</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4M2FhMWIyNTc3OGIz
ZDUwZjY1ODUxZmQyYmUwNjU5YmM2MzY0ZS4uZGFlMjhiNGRiN2VhMjQ2NWZhNzM1ZjNlMjc4NTdk
NDllNzc3ZDBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTAzLTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCb3JkZXJFZGdlIGNs
YXNzIHRvIGl0cyBvd24gZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMDI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiB0byBoYXZlIGJldHRlciBlbmNhcHN1bGF0
aW9uIGZvciBib3JkZXIgYm94IGRlY29yYXRpb24gcGFpbnRpbmcuCisKKyAgICAgICAgTm8gY2hh
bmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiByZW5kZXJpbmcvQm9yZGVyRWRnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Qm9yZGVyRWRnZTo6Qm9yZGVyRWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJFZGdl
OjpnZXRCb3JkZXJFZGdlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJFZGdlOjppbmNs
dWRlc0FkamFjZW50RWRnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6b2JzY3Vy
ZXNCYWNrZ3JvdW5kRWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJFZGdlOjpvYnNjdXJl
c0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6Z2V0RG91YmxlQm9y
ZGVyU3RyaXBlV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvQm9yZGVyRWRnZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckVkZ2U6OmVkZ2VGbGFnRm9yU2lkZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCb3JkZXJFZGdlOjppbmNsdWRlc0VkZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Qm9yZGVyRWRnZTo6ZWRnZXNTaGFyZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRl
ckVkZ2U6Omhhc1Zpc2libGVDb2xvckFuZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRl
ckVkZ2U6OnNob3VsZFJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJFZGdlOjpwcmVz
ZW50QnV0SW52aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckVkZ2U6OndpZHRoRm9y
UGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6Ym9yZGVyV2lkdGhJbkRl
dmljZVBpeGVsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyU3R5bGVIYXNVbm1hdGNoZWRDb2xvcnNBdENvcm5l
cik6CisgICAgICAgIChXZWJDb3JlOjpjb2xvcnNNYXRjaEF0Q29ybmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbG9yTmVlZHNBbnRpQWxpYXNBdENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjp3
aWxsQmVPdmVyZHJhd24pOgorICAgICAgICAoV2ViQ29yZTo6am9pblJlcXVpcmVzTWl0cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNl
bnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJv
cmRlck9ic2N1cmVzQmFja2dyb3VuZEVkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OmJvcmRlck9ic2N1cmVzQmFja2dyb3VuZCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisKIDIwMTQtMDMtMTQgIE1hcmsgUm93ZSAgPG1y
b3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIHByb2R1Y3Rpb24gYnVpbGQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDE3YmU0MzdmZDJkNzVkMTdjOTRkOWM1ZDliYzBmYzFiMzRiNDhk
OGQuLjVkMDIzZDk5N2ZmNWQ2NTUxNmE1MThmYzAyMDZkZTQ3ZGUwMWYxZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0yMDgyLDYgKzIwODIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAg
ICByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAogICAgIHJlbmRlcmluZy9CaWRpUnVuLmNw
cAorICAgIHJlbmRlcmluZy9Cb3JkZXJFZGdlLmNwcAogICAgIHJlbmRlcmluZy9Db3VudGVyTm9k
ZS5jcHAKICAgICByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCiAgICAgcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODI0
MTUyYmQ2OWIzZTQxMzk3ODBhMDcwYjRlOTg3MzBiY2EyNDU5OC4uMTE2YjEzMmQ5NGVjMGY5Mjc2
ZDgzMGFlODNlYTc3Y2JhZmRlZmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00MjYwLDYgKzQyNjAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0JpZGlSdW4uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Cb3JkZXJFZGdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVh
a19saW5lcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA0M2Y0MTQz
MDYxMzBhYzcyYWRkOGIwY2ZmNmJjOGRjZTdhNjBiMDdhLi4wM2Y5YjEzMmViOWM3M2QwMWQ2YTM4
MTdkYWY3Mzg4Y2Y4YWQ4OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKQEAgLTk1MzMsNiArOTUzMywyMCBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xCb3JkZXJFZGdlLmNwcCI+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcYnJlYWtfbGlu
ZXMuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAg
LTE5NjY3LDYgKzE5NjgxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc2ppdFxT
dGFja0FsbG9jYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5n
XEF1dG9UYWJsZUxheW91dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXEJpZGlSdW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xC
b3JkZXJFZGdlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcYnJl
YWtfbGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xDb3Vu
dGVyTm9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXEVsbGlw
c2lzQm94LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggMmNhZjU4NzY3MWI4MDcyMTYxZDZhZjE0Yjhh
NTNmNTA5ODIwMTNmZC4uNWY1MTIwODg3Njc1Y2ZmNjM4NmM4MTE3MTMxZDM5ZTZkYWQwNDZkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwpAQCAtMjMyOCw2ICsyMzI4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xCaWRpUnVuLmNwcCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXEJvcmRlckVkZ2UuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
YnJlYWtfbGluZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjQxMWE0MDVlOWIxOTY4MjZhMDI4NzJkM2QyYjE1OTdhNjI5OTlh
ZS4uNGVjZDM4NTkzOWNmYTZkM2Q0MzZhNmFhNzk3NzMzYTdlZGVmNzM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTk5MCw2
ICsxOTkwLDggQEAKIAkJNTdCNzkxQTQxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmli
dXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdC
NzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3Q0Y0OTc0MTRFRTM2RDcw
MEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9u
UG9pbnQuY3BwICovOyB9OwogCQk1N0NGNDk3NTE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9u
UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
Q0Y0OTczMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovOyB9OworCQk1ODk1
NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg5NTU2RUMxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJv
cmRlckVkZ2UuaCAqLzsgfTsKKwkJNThBRUUyRjQxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVk
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThB
RUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwICovOyB9OwogCQk1OTA1QURC
RjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyog
WE1MVHJlZVZpZXdlci5jcHAgKi87IH07CiAJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBY
TUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovOyB9Owog
CQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb25EYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0ODExRTRF
RjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg5NDcsNiArODk0OSw4IEBACiAJCTU3
Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudERpc3RyaWJ1dG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3Q0Y0OTcyMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Q
b2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNlcnRpb25Q
b2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Q0Y0OTczMTRFRTM2RDcw
MEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNlcnRpb25Qb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1ODk1
NTZFQzE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCb3JkZXJFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU4QUVFMkYzMThENEJDQ0YwMDIyRTdGRSAvKiBCb3JkZXJFZGdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJvcmRlckVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRG
IC8qIFhNTFRyZWVWaWV3ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1M
VHJlZVZpZXdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRF
RjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjE3MjcsNiArMjE3MzEsOCBAQAogCQkJCUE4Q0ZGMDQ5MEExNTRGMDkw
MDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCAqLywKIAkJCQlCQ0U3ODk4QTExMjBFODAyMDA2
MEVDRTUgLyogQmlkaVJ1bi5jcHAgKi8sCiAJCQkJQkNFNzg5ODUxMTIwRTdBNjAwNjBFQ0U1IC8q
IEJpZGlSdW4uaCAqLywKKwkJCQk1OEFFRTJGMzE4RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRn
ZS5jcHAgKi8sCisJCQkJNTg5NTU2RUMxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAq
LywKIAkJCQlCQ0VBNDgxNTA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuY3BwICovLAog
CQkJCUJDRUE0ODE2MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oICovLAogCQkJCUJD
REQ0NTREMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggKi8sCkBAIC0yNDQ3OCw2ICsy
NDQ4NCw3IEBACiAJCQkJQjJGQTNENTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2lyY2xlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHQ2xpcFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1RDBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdDb2xvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTg5NTU2RUQxOEQ0
QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVG
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdD
dXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MzBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTMyNSw2ICsyOTMz
Miw3IEBACiAJCQkJOTNGMTlCMDMwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFN0eWxlU2hlZXRMaWJ4
c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRjFFODJGMEMzQzJCQjkwMDZEQjM5MSAvKiBY
U0xURXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUIwNDA4MjQ1RTU5MDAx
RTlBQkMgLyogWFNMVFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1OEFFRTJGNDE4
RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0Yx
OUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVk
aXRvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Cb3JkZXJFZGdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJFZGdl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNDc1YWY4YmVjYzA1ZWYxZGM1NmIwMjlkZDIwMmM1YWM2MjkzN2U0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRlckVkZ2Uu
Y3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQm9yZGVyRWRnZS5oIgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJMYXlvdXRV
bml0LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCb3JkZXJFZGdlOjpCb3JkZXJFZGdlKExheW91
dFVuaXQgZWRnZVdpZHRoLCBDb2xvciBlZGdlQ29sb3IsIEVCb3JkZXJTdHlsZSBlZGdlU3R5bGUs
IGJvb2wgZWRnZUlzVHJhbnNwYXJlbnQsIGJvb2wgZWRnZUlzUHJlc2VudCwgZmxvYXQgZGV2aWNl
UGl4ZWxSYXRpbykKKyAgICA6IG1fd2lkdGgoZWRnZVdpZHRoKQorICAgICwgbV9jb2xvcihlZGdl
Q29sb3IpCisgICAgLCBtX3N0eWxlKGVkZ2VTdHlsZSkKKyAgICAsIG1faXNUcmFuc3BhcmVudChl
ZGdlSXNUcmFuc3BhcmVudCkKKyAgICAsIG1faXNQcmVzZW50KGVkZ2VJc1ByZXNlbnQpCisgICAg
LCBtX2RldmljZVBpeGVsUmF0aW8oZGV2aWNlUGl4ZWxSYXRpbykKK3sKKyAgICBpZiAoZWRnZVN0
eWxlID09IERPVUJMRSAmJiBlZGdlV2lkdGggIDwgYm9yZGVyV2lkdGhJbkRldmljZVBpeGVsKDMp
KQorICAgICAgICBtX3N0eWxlID0gU09MSUQ7CisgICAgbV9mbG9vcmVkVG9EZXZpY2VQaXhlbFdp
ZHRoID0gZmxvb3JUb0RldmljZVBpeGVsKGVkZ2VXaWR0aCwgZGV2aWNlUGl4ZWxSYXRpbyk7Cit9
CisKK0JvcmRlckVkZ2U6OkJvcmRlckVkZ2UoKQorICAgIDogbV93aWR0aChMYXlvdXRVbml0Ojpm
cm9tUGl4ZWwoMCkpCisgICAgLCBtX3N0eWxlKEJISURERU4pCisgICAgLCBtX2lzVHJhbnNwYXJl
bnQoZmFsc2UpCisgICAgLCBtX2lzUHJlc2VudChmYWxzZSkKKyAgICAsIG1fZmxvb3JlZFRvRGV2
aWNlUGl4ZWxXaWR0aCgwKQorICAgICwgbV9kZXZpY2VQaXhlbFJhdGlvKDEpCit7Cit9CisKK3Zv
aWQgQm9yZGVyRWRnZTo6Z2V0Qm9yZGVyRWRnZUluZm8oQm9yZGVyRWRnZSBlZGdlc1tdLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit7CisgICAg
Ym9vbCBob3Jpem9udGFsID0gc3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKKworICAg
IGVkZ2VzW0JTVG9wXSA9IEJvcmRlckVkZ2Uoc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSwgc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5i
b3JkZXJUb3BTdHlsZSgpLCBzdHlsZS5ib3JkZXJUb3BJc1RyYW5zcGFyZW50KCksCisgICAgICAg
IGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIGVkZ2VzW0JTUmlnaHRdID0gQm9yZGVyRWRnZShzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29s
b3IpLCBzdHlsZS5ib3JkZXJSaWdodFN0eWxlKCksIHN0eWxlLmJvcmRlclJpZ2h0SXNUcmFuc3Bh
cmVudCgpLAorICAgICAgICAhaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwg
ZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGVkZ2VzW0JTQm90dG9tXSA9IEJvcmRlckVkZ2Uoc3R5
bGUuYm9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpLCBzdHlsZS5ib3JkZXJCb3R0b21TdHlsZSgpLCBzdHls
ZS5ib3JkZXJCb3R0b21Jc1RyYW5zcGFyZW50KCksCisgICAgICAgIGhvcml6b250YWwgfHwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBlZGdlc1tCU0xl
ZnRdID0gQm9yZGVyRWRnZShzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSwgc3R5bGUuYm9yZGVyTGVm
dFN0eWxlKCksIHN0eWxlLmJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCksCisgICAgICAgICFob3Jp
em9udGFsIHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAg
ICB9CisKK2Jvb2wgQm9yZGVyRWRnZTo6b2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShmbG9hdCBzY2Fs
ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNQcmVzZW50IHx8IG1faXNUcmFuc3BhcmVudCB8fCAo
bV93aWR0aCAqIHNjYWxlKSA8IGJvcmRlcldpZHRoSW5EZXZpY2VQaXhlbCgyKSB8fCBtX2NvbG9y
Lmhhc0FscGhhKCkgfHwgbV9zdHlsZSA9PSBCSElEREVOKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAobV9zdHlsZSA9PSBET1RURUQgfHwgbV9zdHlsZSA9PSBEQVNIRUQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3N0eWxlID09IERPVUJMRSkKKyAgICAgICAg
cmV0dXJuIG1fd2lkdGggPj0gc2NhbGUgKiBib3JkZXJXaWR0aEluRGV2aWNlUGl4ZWwoNSk7IC8v
IFRoZSBvdXRlciBiYW5kIG5lZWRzIHRvIGJlID49IDJweCB3aWRlIGF0IHVuaXQgc2NhbGUuCisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCb3JkZXJFZGdlOjpvYnNjdXJlc0JhY2tncm91
bmQoKSBjb25zdAoreworICAgIGlmICghbV9pc1ByZXNlbnQgfHwgbV9pc1RyYW5zcGFyZW50IHx8
IG1fY29sb3IuaGFzQWxwaGEoKSB8fCBtX3N0eWxlID09IEJISURERU4pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChtX3N0eWxlID09IERPVFRFRCB8fCBtX3N0eWxlID09IERBU0hF
RCB8fCBtX3N0eWxlID09IERPVUJMRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgQm9yZGVyRWRnZTo6Z2V0RG91YmxlQm9yZGVyU3RyaXBlV2lk
dGhzKExheW91dFVuaXQgb3V0ZXJXaWR0aCwgTGF5b3V0VW5pdCBpbm5lcldpZHRoKSBjb25zdAor
eworICAgIExheW91dFVuaXQgZnVsbFdpZHRoID0gd2lkdGhGb3JQYWludGluZygpOworICAgIGlu
bmVyV2lkdGggPSBjZWlsVG9EZXZpY2VQaXhlbChmdWxsV2lkdGggKiAyIC8gMywgbV9kZXZpY2VQ
aXhlbFJhdGlvKTsKKyAgICBvdXRlcldpZHRoID0gZmxvb3JUb0RldmljZVBpeGVsKGZ1bGxXaWR0
aCAvIDMsIG1fZGV2aWNlUGl4ZWxSYXRpbyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJFZGdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMjczNWI5NjBk
NDVlZWQ4Zjk0YzFmZjQwY2Q1NzNmMzI5OTFlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQm9yZGVyRWRnZV9oCisjZGVmaW5lIEJvcmRlckVkZ2VfaAorCisjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiB1bnNpZ25lZCBC
b3JkZXJFZGdlRmxhZ3M7CisKK2NsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgTGF5b3V0VW5pdDsK
KworY2xhc3MgQm9yZGVyRWRnZSB7CitwdWJsaWM6CisgICAgZW51bSBCb3JkZXJFZGdlRmxhZyB7
CisgICAgICAgIFRvcEJvcmRlckVkZ2UgPSAxIDw8IEJTVG9wLAorICAgICAgICBSaWdodEJvcmRl
ckVkZ2UgPSAxIDw8IEJTUmlnaHQsCisgICAgICAgIEJvdHRvbUJvcmRlckVkZ2UgPSAxIDw8IEJT
Qm90dG9tLAorICAgICAgICBMZWZ0Qm9yZGVyRWRnZSA9IDEgPDwgQlNMZWZ0LAorICAgICAgICBB
bGxCb3JkZXJFZGdlcyA9IFRvcEJvcmRlckVkZ2UgfCBCb3R0b21Cb3JkZXJFZGdlIHwgTGVmdEJv
cmRlckVkZ2UgfCBSaWdodEJvcmRlckVkZ2UKKyAgICB9OworCisgICAgQm9yZGVyRWRnZSgpOwor
ICAgIEJvcmRlckVkZ2UoTGF5b3V0VW5pdCBlZGdlV2lkdGgsIENvbG9yIGVkZ2VDb2xvciwgRUJv
cmRlclN0eWxlIGVkZ2VTdHlsZSwgYm9vbCBlZGdlSXNUcmFuc3BhcmVudCwgYm9vbCBlZGdlSXNQ
cmVzZW50LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKTsKKworICAgIHN0YXRpYyB2b2lkIGdldEJv
cmRlckVkZ2VJbmZvKEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUmVuZGVyU3R5bGUmLCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOworCisgICAgRUJvcmRlclN0eWxl
IHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZTsgfQorICAgIENvbG9yIGNvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNUcmFuc3BhcmVudDsgfQorICAgIGJvb2wgaXNQcmVzZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1ByZXNlbnQ7IH0KKworICAgIGlubGluZSBib29sIGhhc1Zpc2libGVDb2xvckFu
ZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZSA+IEJISURERU4gJiYgIW1faXNUcmFuc3Bh
cmVudDsgfQorICAgIGlubGluZSBib29sIHNob3VsZFJlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNQcmVzZW50ICYmIHdpZHRoRm9yUGFpbnRpbmcoKSAmJiBoYXNWaXNpYmxlQ29sb3JBbmRTdHls
ZSgpOyB9CisgICAgaW5saW5lIGJvb2wgcHJlc2VudEJ1dEludmlzaWJsZSgpIGNvbnN0IHsgcmV0
dXJuIHdpZHRoRm9yUGFpbnRpbmcoKSAmJiAhaGFzVmlzaWJsZUNvbG9yQW5kU3R5bGUoKTsgfQor
ICAgIGlubGluZSBmbG9hdCB3aWR0aEZvclBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1By
ZXNlbnQgPyAgbV9mbG9vcmVkVG9EZXZpY2VQaXhlbFdpZHRoIDogMDsgfQorICAgIHZvaWQgZ2V0
RG91YmxlQm9yZGVyU3RyaXBlV2lkdGhzKExheW91dFVuaXQgb3V0ZXJXaWR0aCwgTGF5b3V0VW5p
dCBpbm5lcldpZHRoKSBjb25zdDsKKyAgICBib29sIG9ic2N1cmVzQmFja2dyb3VuZEVkZ2UoZmxv
YXQgc2NhbGUpIGNvbnN0OworICAgIGJvb2wgb2JzY3VyZXNCYWNrZ3JvdW5kKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgaW5saW5lIGZsb2F0IGJvcmRlcldpZHRoSW5EZXZpY2VQaXhlbChpbnQg
bG9naWNhbFBpeGVscykgY29uc3QgeyByZXR1cm4gTGF5b3V0VW5pdChsb2dpY2FsUGl4ZWxzIC8g
bV9kZXZpY2VQaXhlbFJhdGlvKS50b0Zsb2F0KCk7IH0KKworICAgIExheW91dFVuaXQgbV93aWR0
aDsKKyAgICBDb2xvciBtX2NvbG9yOworICAgIEVCb3JkZXJTdHlsZSBtX3N0eWxlOworICAgIGJv
b2wgbV9pc1RyYW5zcGFyZW50OworICAgIGJvb2wgbV9pc1ByZXNlbnQ7CisgICAgZmxvYXQgbV9m
bG9vcmVkVG9EZXZpY2VQaXhlbFdpZHRoOworICAgIGZsb2F0IG1fZGV2aWNlUGl4ZWxSYXRpbzsK
K307CisKK2lubGluZSBib29sIGVkZ2VzU2hhcmVDb2xvcihjb25zdCBCb3JkZXJFZGdlJiBmaXJz
dEVkZ2UsIGNvbnN0IEJvcmRlckVkZ2UmIHNlY29uZEVkZ2UpIHsgcmV0dXJuIGZpcnN0RWRnZS5j
b2xvcigpID09IHNlY29uZEVkZ2UuY29sb3IoKTsgfQoraW5saW5lIEJvcmRlckVkZ2U6OkJvcmRl
ckVkZ2VGbGFnIGVkZ2VGbGFnRm9yU2lkZShCb3hTaWRlIHNpZGUpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEJvcmRlckVkZ2U6OkJvcmRlckVkZ2VGbGFnPigxIDw8IHNpZGUpOyB9CitpbmxpbmUgYm9v
bCBpbmNsdWRlc0VkZ2UoQm9yZGVyRWRnZUZsYWdzIGZsYWdzLCBCb3hTaWRlIHNpZGUpIHsgcmV0
dXJuIGZsYWdzICYgZWRnZUZsYWdGb3JTaWRlKHNpZGUpOyB9CitpbmxpbmUgYm9vbCBpbmNsdWRl
c0FkamFjZW50RWRnZXMoQm9yZGVyRWRnZUZsYWdzIGZsYWdzKQoreworICAgIHJldHVybiAoZmxh
Z3MgJiAoQm9yZGVyRWRnZTo6VG9wQm9yZGVyRWRnZSB8IEJvcmRlckVkZ2U6OlJpZ2h0Qm9yZGVy
RWRnZSkpID09IChCb3JkZXJFZGdlOjpUb3BCb3JkZXJFZGdlIHwgQm9yZGVyRWRnZTo6UmlnaHRC
b3JkZXJFZGdlKQorICAgICAgICB8fCAoZmxhZ3MgJiAoQm9yZGVyRWRnZTo6UmlnaHRCb3JkZXJF
ZGdlIHwgQm9yZGVyRWRnZTo6Qm90dG9tQm9yZGVyRWRnZSkpID09IChCb3JkZXJFZGdlOjpSaWdo
dEJvcmRlckVkZ2UgfCBCb3JkZXJFZGdlOjpCb3R0b21Cb3JkZXJFZGdlKQorICAgICAgICB8fCAo
ZmxhZ3MgJiAoQm9yZGVyRWRnZTo6Qm90dG9tQm9yZGVyRWRnZSB8IEJvcmRlckVkZ2U6OkxlZnRC
b3JkZXJFZGdlKSkgPT0gKEJvcmRlckVkZ2U6OkJvdHRvbUJvcmRlckVkZ2UgfCBCb3JkZXJFZGdl
OjpMZWZ0Qm9yZGVyRWRnZSkKKyAgICAgICAgfHwgKGZsYWdzICYgKEJvcmRlckVkZ2U6OkxlZnRC
b3JkZXJFZGdlIHwgQm9yZGVyRWRnZTo6VG9wQm9yZGVyRWRnZSkpID09IChCb3JkZXJFZGdlOjpM
ZWZ0Qm9yZGVyRWRnZSB8IEJvcmRlckVkZ2U6OlRvcEJvcmRlckVkZ2UpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBCb3JkZXJFZGdlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDNhNTgyMTAy
MDcxYzlhZjhlMGEyOTQzZWU5ZGEwYmE3ZTU5NWMzZGUuLmNiOWU3OWFiMWVhYTYwMTI4ZWM3MDU5
YmZhZDAzOTEyYzQwZjgwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAKKyNpbmNsdWRlICJCb3Jk
ZXJFZGdlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC0xNDAxLDgwICsxNDAyLDYgQEAgYm9vbCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3MgQm9yZGVyRWRn
ZSB7Ci1wdWJsaWM6Ci0gICAgQm9yZGVyRWRnZShMYXlvdXRVbml0IGVkZ2VXaWR0aCwgY29uc3Qg
Q29sb3ImIGVkZ2VDb2xvciwgRUJvcmRlclN0eWxlIGVkZ2VTdHlsZSwgYm9vbCBlZGdlSXNUcmFu
c3BhcmVudCwgYm9vbCBlZGdlSXNQcmVzZW50LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQotICAg
ICAgICA6IHdpZHRoKGVkZ2VXaWR0aCkKLSAgICAgICAgLCBjb2xvcihlZGdlQ29sb3IpCi0gICAg
ICAgICwgc3R5bGUoZWRnZVN0eWxlKQotICAgICAgICAsIGlzVHJhbnNwYXJlbnQoZWRnZUlzVHJh
bnNwYXJlbnQpCi0gICAgICAgICwgaXNQcmVzZW50KGVkZ2VJc1ByZXNlbnQpCi0gICAgICAgICwg
ZGV2aWNlUGl4ZWxSYXRpbyhkZXZpY2VQaXhlbFJhdGlvKQotICAgIHsKLSAgICAgICAgaWYgKHN0
eWxlID09IERPVUJMRSAmJiB3aWR0aCAgPCBib3JkZXJXaWR0aEluRGV2aWNlUGl4ZWwoMykpCi0g
ICAgICAgICAgICBzdHlsZSA9IFNPTElEOwotICAgICAgICBmbG9vcmVkVG9EZXZpY2VQaXhlbFdp
ZHRoID0gZmxvb3JUb0RldmljZVBpeGVsKHdpZHRoLCBkZXZpY2VQaXhlbFJhdGlvKTsKLSAgICB9
Ci0gICAgCi0gICAgQm9yZGVyRWRnZSgpCi0gICAgICAgIDogd2lkdGgoTGF5b3V0VW5pdDo6ZnJv
bVBpeGVsKDApKQotICAgICAgICAsIHN0eWxlKEJISURERU4pCi0gICAgICAgICwgaXNUcmFuc3Bh
cmVudChmYWxzZSkKLSAgICAgICAgLCBpc1ByZXNlbnQoZmFsc2UpCi0gICAgICAgICwgZmxvb3Jl
ZFRvRGV2aWNlUGl4ZWxXaWR0aCgwKQotICAgICAgICAsIGRldmljZVBpeGVsUmF0aW8oMSkKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaGFzVmlzaWJsZUNvbG9yQW5kU3R5bGUoKSBjb25z
dCB7IHJldHVybiBzdHlsZSA+IEJISURERU4gJiYgIWlzVHJhbnNwYXJlbnQ7IH0KLSAgICBib29s
IHNob3VsZFJlbmRlcigpIGNvbnN0IHsgcmV0dXJuIGlzUHJlc2VudCAmJiB3aWR0aEZvclBhaW50
aW5nKCkgJiYgaGFzVmlzaWJsZUNvbG9yQW5kU3R5bGUoKTsgfQotICAgIGJvb2wgcHJlc2VudEJ1
dEludmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHdpZHRoRm9yUGFpbnRpbmcoKSAmJiAhaGFzVmlz
aWJsZUNvbG9yQW5kU3R5bGUoKTsgfQotICAgIGJvb2wgb2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShm
bG9hdCBzY2FsZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghaXNQcmVzZW50IHx8IGlzVHJh
bnNwYXJlbnQgfHwgKHdpZHRoICogc2NhbGUpIDwgYm9yZGVyV2lkdGhJbkRldmljZVBpeGVsKDIp
IHx8IGNvbG9yLmhhc0FscGhhKCkgfHwgc3R5bGUgPT0gQkhJRERFTikKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc3R5bGUgPT0gRE9UVEVEIHx8IHN0eWxlID09IERB
U0hFRCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc3R5bGUgPT0g
RE9VQkxFKQotICAgICAgICAgICAgcmV0dXJuIHdpZHRoID49IHNjYWxlICogYm9yZGVyV2lkdGhJ
bkRldmljZVBpeGVsKDUpOyAvLyBUaGUgb3V0ZXIgYmFuZCBuZWVkcyB0byBiZSA+PSAycHggd2lk
ZSBhdCB1bml0IHNjYWxlLgotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBib29s
IG9ic2N1cmVzQmFja2dyb3VuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIWlzUHJlc2Vu
dCB8fCBpc1RyYW5zcGFyZW50IHx8IGNvbG9yLmhhc0FscGhhKCkgfHwgc3R5bGUgPT0gQkhJRERF
TikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc3R5bGUgPT0gRE9U
VEVEIHx8IHN0eWxlID09IERBU0hFRCB8fCBzdHlsZSA9PSBET1VCTEUpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgZmxvYXQg
d2lkdGhGb3JQYWludGluZygpIGNvbnN0IHsgcmV0dXJuIGlzUHJlc2VudCA/ICBmbG9vcmVkVG9E
ZXZpY2VQaXhlbFdpZHRoIDogMDsgfQotICAgIAotICAgIHZvaWQgZ2V0RG91YmxlQm9yZGVyU3Ry
aXBlV2lkdGhzKExheW91dFVuaXQmIG91dGVyV2lkdGgsIExheW91dFVuaXQmIGlubmVyV2lkdGgp
IGNvbnN0Ci0gICAgewotICAgICAgICBMYXlvdXRVbml0IGZ1bGxXaWR0aCA9IHdpZHRoRm9yUGFp
bnRpbmcoKTsKLSAgICAgICAgaW5uZXJXaWR0aCA9IGNlaWxUb0RldmljZVBpeGVsKGZ1bGxXaWR0
aCAqIDIgLyAzLCBkZXZpY2VQaXhlbFJhdGlvKTsKLSAgICAgICAgb3V0ZXJXaWR0aCA9IGZsb29y
VG9EZXZpY2VQaXhlbChmdWxsV2lkdGggLyAzLCBkZXZpY2VQaXhlbFJhdGlvKTsKLSAgICB9Ci0g
ICAgCi0gICAgTGF5b3V0VW5pdCB3aWR0aDsKLSAgICBDb2xvciBjb2xvcjsKLSAgICBFQm9yZGVy
U3R5bGUgc3R5bGU7Ci0gICAgYm9vbCBpc1RyYW5zcGFyZW50OwotICAgIGJvb2wgaXNQcmVzZW50
OwotCi1wcml2YXRlOgotICAgIGZsb2F0IGJvcmRlcldpZHRoSW5EZXZpY2VQaXhlbChpbnQgbG9n
aWNhbFBpeGVscykgY29uc3QgeyByZXR1cm4gTGF5b3V0VW5pdChsb2dpY2FsUGl4ZWxzIC8gZGV2
aWNlUGl4ZWxSYXRpbykudG9GbG9hdCgpOyB9Ci0KLSAgICBmbG9hdCBmbG9vcmVkVG9EZXZpY2VQ
aXhlbFdpZHRoOwotICAgIGZsb2F0IGRldmljZVBpeGVsUmF0aW87Ci19OwotCiBzdGF0aWMgYm9v
bCBhbGxDb3JuZXJzQ2xpcHBlZE91dChjb25zdCBSb3VuZGVkUmVjdCYgYm9yZGVyLCBjb25zdCBM
YXlvdXRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBMYXlvdXRSZWN0IGJvdW5kaW5nUmVjdCA9IGJv
cmRlci5yZWN0KCk7CkBAIC0xNTExLDM3ICsxNDM4LDYgQEAgc3RhdGljIGJvb2wgYm9yZGVyV2ls
bEFyY0lubmVyRWRnZShjb25zdCBMYXlvdXRTaXplJiBmaXJzdFJhZGl1cywgY29uc3QgRmxvYXRT
aXoKICAgICByZXR1cm4gIWZpcnN0UmFkaXVzLmlzWmVybygpIHx8ICFzZWNvbmRSYWRpdXMuaXNa
ZXJvKCk7CiB9CiAKLWVudW0gQm9yZGVyRWRnZUZsYWcgewotICAgIFRvcEJvcmRlckVkZ2UgPSAx
IDw8IEJTVG9wLAotICAgIFJpZ2h0Qm9yZGVyRWRnZSA9IDEgPDwgQlNSaWdodCwKLSAgICBCb3R0
b21Cb3JkZXJFZGdlID0gMSA8PCBCU0JvdHRvbSwKLSAgICBMZWZ0Qm9yZGVyRWRnZSA9IDEgPDwg
QlNMZWZ0LAotICAgIEFsbEJvcmRlckVkZ2VzID0gVG9wQm9yZGVyRWRnZSB8IEJvdHRvbUJvcmRl
ckVkZ2UgfCBMZWZ0Qm9yZGVyRWRnZSB8IFJpZ2h0Qm9yZGVyRWRnZQotfTsKLQotc3RhdGljIGlu
bGluZSBCb3JkZXJFZGdlRmxhZyBlZGdlRmxhZ0ZvclNpZGUoQm94U2lkZSBzaWRlKQotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxCb3JkZXJFZGdlRmxhZz4oMSA8PCBzaWRlKTsKLX0KLQotc3Rh
dGljIGlubGluZSBib29sIGluY2x1ZGVzRWRnZShCb3JkZXJFZGdlRmxhZ3MgZmxhZ3MsIEJveFNp
ZGUgc2lkZSkKLXsKLSAgICByZXR1cm4gZmxhZ3MgJiBlZGdlRmxhZ0ZvclNpZGUoc2lkZSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpbmNsdWRlc0FkamFjZW50RWRnZXMoQm9yZGVyRWRnZUZs
YWdzIGZsYWdzKQotewotICAgIHJldHVybiAoZmxhZ3MgJiAoVG9wQm9yZGVyRWRnZSB8IFJpZ2h0
Qm9yZGVyRWRnZSkpID09IChUb3BCb3JkZXJFZGdlIHwgUmlnaHRCb3JkZXJFZGdlKQotICAgICAg
ICB8fCAoZmxhZ3MgJiAoUmlnaHRCb3JkZXJFZGdlIHwgQm90dG9tQm9yZGVyRWRnZSkpID09IChS
aWdodEJvcmRlckVkZ2UgfCBCb3R0b21Cb3JkZXJFZGdlKQotICAgICAgICB8fCAoZmxhZ3MgJiAo
Qm90dG9tQm9yZGVyRWRnZSB8IExlZnRCb3JkZXJFZGdlKSkgPT0gKEJvdHRvbUJvcmRlckVkZ2Ug
fCBMZWZ0Qm9yZGVyRWRnZSkKLSAgICAgICAgfHwgKGZsYWdzICYgKExlZnRCb3JkZXJFZGdlIHwg
VG9wQm9yZGVyRWRnZSkpID09IChMZWZ0Qm9yZGVyRWRnZSB8IFRvcEJvcmRlckVkZ2UpOwotfQot
Ci1pbmxpbmUgYm9vbCBlZGdlc1NoYXJlQ29sb3IoY29uc3QgQm9yZGVyRWRnZSYgZmlyc3RFZGdl
LCBjb25zdCBCb3JkZXJFZGdlJiBzZWNvbmRFZGdlKQotewotICAgIHJldHVybiBmaXJzdEVkZ2Uu
Y29sb3IgPT0gc2Vjb25kRWRnZS5jb2xvcjsKLX0KLQogaW5saW5lIGJvb2wgc3R5bGVSZXF1aXJl
c0NsaXBQb2x5Z29uKEVCb3JkZXJTdHlsZSBzdHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGUgPT0g
RE9UVEVEIHx8IHN0eWxlID09IERBU0hFRDsgLy8gVGhlc2UgYXJlIGRyYXduIHdpdGggYSBzdHJv
a2UsIHNvIHdlIGhhdmUgdG8gY2xpcCB0byBnZXQgY29ybmVyIG1pdGVycy4KQEAgLTE1ODUsMTMg
KzE0ODEsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGNvbG9yc01hdGNoQXRDb3JuZXIoQm94U2lk
ZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZSwgY29uc3QKICAgICBpZiAoIWVkZ2VzU2hhcmVD
b2xvcihlZGdlc1tzaWRlXSwgZWRnZXNbYWRqYWNlbnRTaWRlXSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHJldHVybiAhYm9yZGVyU3R5bGVIYXNVbm1hdGNoZWRDb2xvcnNBdENvcm5l
cihlZGdlc1tzaWRlXS5zdHlsZSwgc2lkZSwgYWRqYWNlbnRTaWRlKTsKKyAgICByZXR1cm4gIWJv
cmRlclN0eWxlSGFzVW5tYXRjaGVkQ29sb3JzQXRDb3JuZXIoZWRnZXNbc2lkZV0uc3R5bGUoKSwg
c2lkZSwgYWRqYWNlbnRTaWRlKTsKIH0KIAogCiBzdGF0aWMgaW5saW5lIGJvb2wgY29sb3JOZWVk
c0FudGlBbGlhc0F0Q29ybmVyKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNv
bnN0IEJvcmRlckVkZ2UgZWRnZXNbXSkKIHsKLSAgICBpZiAoIWVkZ2VzW3NpZGVdLmNvbG9yLmhh
c0FscGhhKCkpCisgICAgaWYgKCFlZGdlc1tzaWRlXS5jb2xvcigpLmhhc0FscGhhKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChlZGdlc1tzaWRlXS5zaG91bGRSZW5kZXIoKSAh
PSBlZGdlc1thZGphY2VudFNpZGVdLnNob3VsZFJlbmRlcigpKQpAQCAtMTYwMCw3ICsxNDk2LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGNvbG9yTmVlZHNBbnRpQWxpYXNBdENvcm5lcihCb3hTaWRl
IHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWQKICAgICBpZiAoIWVkZ2VzU2hhcmVDb2xvcihlZGdl
c1tzaWRlXSwgZWRnZXNbYWRqYWNlbnRTaWRlXSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgcmV0dXJuIGJvcmRlclN0eWxlSGFzVW5tYXRjaGVkQ29sb3JzQXRDb3JuZXIoZWRnZXNbc2lk
ZV0uc3R5bGUsIHNpZGUsIGFkamFjZW50U2lkZSk7CisgICAgcmV0dXJuIGJvcmRlclN0eWxlSGFz
VW5tYXRjaGVkQ29sb3JzQXRDb3JuZXIoZWRnZXNbc2lkZV0uc3R5bGUoKSwgc2lkZSwgYWRqYWNl
bnRTaWRlKTsKIH0KIAogLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgZHJhdyBpbiBvcmRlcjogdG9w
LCBib3R0b20sIGxlZnQsIHJpZ2h0LgpAQCAtMTYxMiwxMCArMTUwOCwxMCBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgd2lsbEJlT3ZlcmRyYXduKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNp
ZGUsIGNvbnN0IEJvcgogICAgICAgICBpZiAoZWRnZXNbYWRqYWNlbnRTaWRlXS5wcmVzZW50QnV0
SW52aXNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFl
ZGdlc1NoYXJlQ29sb3IoZWRnZXNbc2lkZV0sIGVkZ2VzW2FkamFjZW50U2lkZV0pICYmIGVkZ2Vz
W2FkamFjZW50U2lkZV0uY29sb3IuaGFzQWxwaGEoKSkKKyAgICAgICAgaWYgKCFlZGdlc1NoYXJl
Q29sb3IoZWRnZXNbc2lkZV0sIGVkZ2VzW2FkamFjZW50U2lkZV0pICYmIGVkZ2VzW2FkamFjZW50
U2lkZV0uY29sb3IoKS5oYXNBbHBoYSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAKLSAgICAgICAgaWYgKCFib3JkZXJTdHlsZUZpbGxzQm9yZGVyQXJlYShlZGdlc1thZGph
Y2VudFNpZGVdLnN0eWxlKSkKKyAgICAgICAgaWYgKCFib3JkZXJTdHlsZUZpbGxzQm9yZGVyQXJl
YShlZGdlc1thZGphY2VudFNpZGVdLnN0eWxlKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTY0NCw3ICsxNTQwLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGJvcmRlclN0eWxlc1JlcXVpcmVNaXRyZShCb3hTaWRlIHNpZGUsIEJveFNpZGUg
YWRqYWNlbnRTaWRlLAogCiBzdGF0aWMgYm9vbCBqb2luUmVxdWlyZXNNaXRyZShCb3hTaWRlIHNp
ZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGJvb2wg
YWxsb3dPdmVyZHJhdykKIHsKLSAgICBpZiAoKGVkZ2VzW3NpZGVdLmlzVHJhbnNwYXJlbnQgJiYg
ZWRnZXNbYWRqYWNlbnRTaWRlXS5pc1RyYW5zcGFyZW50KSB8fCAhZWRnZXNbYWRqYWNlbnRTaWRl
XS5pc1ByZXNlbnQpCisgICAgaWYgKChlZGdlc1tzaWRlXS5pc1RyYW5zcGFyZW50KCkgJiYgZWRn
ZXNbYWRqYWNlbnRTaWRlXS5pc1RyYW5zcGFyZW50KCkpIHx8ICFlZGdlc1thZGphY2VudFNpZGVd
LmlzUHJlc2VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYWxsb3dPdmVy
ZHJhdyAmJiB3aWxsQmVPdmVyZHJhd24oc2lkZSwgYWRqYWNlbnRTaWRlLCBlZGdlcykpCkBAIC0x
NjUzLDcgKzE1NDksNyBAQCBzdGF0aWMgYm9vbCBqb2luUmVxdWlyZXNNaXRyZShCb3hTaWRlIHNp
ZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlLCBjb25zdCBCb3JkZXJFZAogICAgIGlmICghZWRnZXNT
aGFyZUNvbG9yKGVkZ2VzW3NpZGVdLCBlZGdlc1thZGphY2VudFNpZGVdKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoYm9yZGVyU3R5bGVzUmVxdWlyZU1pdHJlKHNpZGUsIGFkamFj
ZW50U2lkZSwgZWRnZXNbc2lkZV0uc3R5bGUsIGVkZ2VzW2FkamFjZW50U2lkZV0uc3R5bGUpKQor
ICAgIGlmIChib3JkZXJTdHlsZXNSZXF1aXJlTWl0cmUoc2lkZSwgYWRqYWNlbnRTaWRlLCBlZGdl
c1tzaWRlXS5zdHlsZSgpLCBlZGdlc1thZGphY2VudFNpZGVdLnN0eWxlKCkpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjc0LDcgKzE1NzAsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgYm9vbCBhZGphY2VudFNpZGUxU3R5bGVzTWF0
Y2ggPSBjb2xvcnNNYXRjaEF0Q29ybmVyKHNpZGUsIGFkamFjZW50U2lkZTEsIGVkZ2VzKTsKICAg
ICBib29sIGFkamFjZW50U2lkZTJTdHlsZXNNYXRjaCA9IGNvbG9yc01hdGNoQXRDb3JuZXIoc2lk
ZSwgYWRqYWNlbnRTaWRlMiwgZWRnZXMpOwogCi0gICAgY29uc3QgQ29sb3ImIGNvbG9yVG9QYWlu
dCA9IG92ZXJyaWRlQ29sb3IgPyAqb3ZlcnJpZGVDb2xvciA6IGVkZ2VUb1JlbmRlci5jb2xvcjsK
KyAgICBjb25zdCBDb2xvciYgY29sb3JUb1BhaW50ID0gb3ZlcnJpZGVDb2xvciA/ICpvdmVycmlk
ZUNvbG9yIDogZWRnZVRvUmVuZGVyLmNvbG9yKCk7CiAKICAgICBpZiAocGF0aCkgewogICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7
CkBAIC0xNjg0LDkgKzE1ODAsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9u
ZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAg
ICBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoZ3JhcGhpY3NDb250ZXh0LCBvdXRl
ckJvcmRlciwgaW5uZXJCb3JkZXIsIHNpZGUsIGVkZ2VzKTsKICAgICAgICAgZmxvYXQgdGhpY2tu
ZXNzID0gc3RkOjptYXgoc3RkOjptYXgoZWRnZVRvUmVuZGVyLndpZHRoRm9yUGFpbnRpbmcoKSwg
YWRqYWNlbnRFZGdlMS53aWR0aEZvclBhaW50aW5nKCkpLCBhZGphY2VudEVkZ2UyLndpZHRoRm9y
UGFpbnRpbmcoKSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0
LCBvdXRlckJvcmRlci5yZWN0KCksICpwYXRoLCBlZGdlcywgZWRnZVRvUmVuZGVyLndpZHRoRm9y
UGFpbnRpbmcoKSwgdGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwKLSAgICAgICAgICAgIGNvbG9yVG9Q
YWludCwgZWRnZVRvUmVuZGVyLnN0eWxlLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY29sb3JUb1Bh
aW50LCBlZGdlVG9SZW5kZXIuc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBib29sIGNsaXBGb3JTdHlsZSA9IHN0eWxlUmVxdWlyZXNDbGlwUG9seWdvbihlZGdlVG9SZW5k
ZXIuc3R5bGUpICYmIChtaXRyZUFkamFjZW50U2lkZTEgfHwgbWl0cmVBZGphY2VudFNpZGUyKTsK
KyAgICAgICAgYm9vbCBjbGlwRm9yU3R5bGUgPSBzdHlsZVJlcXVpcmVzQ2xpcFBvbHlnb24oZWRn
ZVRvUmVuZGVyLnN0eWxlKCkpICYmIChtaXRyZUFkamFjZW50U2lkZTEgfHwgbWl0cmVBZGphY2Vu
dFNpZGUyKTsKICAgICAgICAgYm9vbCBjbGlwQWRqYWNlbnRTaWRlMSA9IGNvbG9yTmVlZHNBbnRp
QWxpYXNBdENvcm5lcihzaWRlLCBhZGphY2VudFNpZGUxLCBlZGdlcykgJiYgbWl0cmVBZGphY2Vu
dFNpZGUxOwogICAgICAgICBib29sIGNsaXBBZGphY2VudFNpZGUyID0gY29sb3JOZWVkc0FudGlB
bGlhc0F0Q29ybmVyKHNpZGUsIGFkamFjZW50U2lkZTIsIGVkZ2VzKSAmJiBtaXRyZUFkamFjZW50
U2lkZTI7CiAgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGNsaXBGb3JTdHlsZSB8fCBjbGlwQWRq
YWNlbnRTaWRlMSB8fCBjbGlwQWRqYWNlbnRTaWRlMjsKQEAgLTE3MDEsNyArMTU5Nyw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIG1pdHJlQWRqYWNlbnRTaWRlMiA9IGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCBzaWRlUmVjdC54KCksIHNpZGVSZWN0LnkoKSwgc2lkZVJlY3QubWF4WCgp
LCBzaWRlUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yVG9QYWludCwgZWRnZVRvUmVuZGVyLnN0eWxl
LAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzaWRlUmVjdC54
KCksIHNpZGVSZWN0LnkoKSwgc2lkZVJlY3QubWF4WCgpLCBzaWRlUmVjdC5tYXhZKCksIHNpZGUs
IGNvbG9yVG9QYWludCwgZWRnZVRvUmVuZGVyLnN0eWxlKCksCiAgICAgICAgICAgICBtaXRyZUFk
amFjZW50U2lkZTEgPyBhZGphY2VudEVkZ2UxLndpZHRoRm9yUGFpbnRpbmcoKSA6IDAsIG1pdHJl
QWRqYWNlbnRTaWRlMiA/IGFkamFjZW50RWRnZTIud2lkdGhGb3JQYWludGluZygpIDogMCwgYW50
aWFsaWFzKTsKICAgICB9CiB9CkBAIC0xNzQyLDcgKzE2MzgsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjbwogICAgICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgp
OwogICAgICAgICBzaWRlUmVjdC5zZXRIZWlnaHQoZWRnZXNbQlNUb3BdLndpZHRoRm9yUGFpbnRp
bmcoKSArIGlubmVyQm9yZGVyQWRqdXN0bWVudC55KCkpOwogCi0gICAgICAgIGJvb2wgdXNlUGF0
aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTVG9w
XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLnRv
cExlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BSaWdodCgpKSk7CisgICAgICAgIGJvb2wg
dXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2Vz
W0JTVG9wXS5zdHlsZSgpKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJh
ZGlpKCkudG9wTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkpKTsKICAgICAg
ICAgcGFpbnRPbmVCb3JkZXJTaWRlKGdyYXBoaWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVy
LCBpbm5lckJvcmRlciwgc2lkZVJlY3QsIEJTVG9wLCBCU0xlZnQsIEJTUmlnaHQsIGVkZ2VzLCB1
c2VQYXRoID8gJnJvdW5kZWRQYXRoIDogMCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMsIG92ZXJyaWRlQ29s
b3IpOwogICAgIH0KIApAQCAtMTc1MCw3ICsxNjQ2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y28KICAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAg
ICAgICAgc2lkZVJlY3Quc2hpZnRZRWRnZVRvKHNpZGVSZWN0Lm1heFkoKSAtIGVkZ2VzW0JTQm90
dG9tXS53aWR0aEZvclBhaW50aW5nKCkgLSBpbm5lckJvcmRlckFkanVzdG1lbnQueSgpKTsKIAot
ICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5l
ckRldGFpbChlZGdlc1tCU0JvdHRvbV0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2Uo
aW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkuYm90
dG9tUmlnaHQoKSkpOworICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9y
ZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU0JvdHRvbV0uc3R5bGUoKSkgfHwgYm9yZGVy
V2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJC
b3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CiAgICAgICAgIHBhaW50T25lQm9yZGVyU2lk
ZShncmFwaGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIHNpZGVS
ZWN0LCBCU0JvdHRvbSwgQlNMZWZ0LCBCU1JpZ2h0LCBlZGdlcywgdXNlUGF0aCA/ICZyb3VuZGVk
UGF0aCA6IDAsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzLCBvdmVycmlkZUNvbG9yKTsKICAgICB9CiAKQEAg
LTE3NTgsNyArMTY1NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVy
U2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgICAgIExheW91
dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNl
dFdpZHRoKGVkZ2VzW0JTTGVmdF0ud2lkdGhGb3JQYWludGluZygpICsgaW5uZXJCb3JkZXJBZGp1
c3RtZW50LngoKSk7CiAKLSAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJv
cmRlclN0eWxlSGFzSW5uZXJEZXRhaWwoZWRnZXNbQlNMZWZ0XS5zdHlsZSkgfHwgYm9yZGVyV2ls
bEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3Jk
ZXIucmFkaWkoKS50b3BMZWZ0KCkpKTsKKyAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFk
aWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJEZXRhaWwoZWRnZXNbQlNMZWZ0XS5zdHlsZSgpKSB8
fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgp
LCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSkpOwogICAgICAgICBwYWludE9uZUJvcmRl
clNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIsIGlubmVyQm9yZGVyLCBz
aWRlUmVjdCwgQlNMZWZ0LCBCU1RvcCwgQlNCb3R0b20sIGVkZ2VzLCB1c2VQYXRoID8gJnJvdW5k
ZWRQYXRoIDogMCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMsIG92ZXJyaWRlQ29sb3IpOwogICAgIH0KIApA
QCAtMTc2Niw3ICsxNjYyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3Jk
ZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICAgICAgTGF5
b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Qu
c2hpZnRYRWRnZVRvKHNpZGVSZWN0Lm1heFgoKSAtIGVkZ2VzW0JTUmlnaHRdLndpZHRoRm9yUGFp
bnRpbmcoKSAtIGlubmVyQm9yZGVyQWRqdXN0bWVudC54KCkpOwogCi0gICAgICAgIGJvb2wgdXNl
UGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JT
UmlnaHRdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BSaWdodCgpKSk7CisgICAg
ICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0
YWlsKGVkZ2VzW0JTUmlnaHRdLnN0eWxlKCkpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5u
ZXJCb3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcFJp
Z2h0KCkpKTsKICAgICAgICAgcGFpbnRPbmVCb3JkZXJTaWRlKGdyYXBoaWNzQ29udGV4dCwgc3R5
bGUsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZVJlY3QsIEJTUmlnaHQsIEJTVG9wLCBC
U0JvdHRvbSwgZWRnZXMsIHVzZVBhdGggPyAmcm91bmRlZFBhdGggOiAwLCBibGVlZEF2b2lkYW5j
ZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGFudGlh
bGlhcywgb3ZlcnJpZGVDb2xvcik7CiAgICAgfQogfQpAQCAtMTc5MCwxMCArMTY4NiwxMCBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljcwogCiAgICAgICAgICAgICBib29sIGluY2x1ZGVFZGdlOwog
ICAgICAgICAgICAgaWYgKCFjb21tb25Db2xvckVkZ2VTZXQpIHsKLSAgICAgICAgICAgICAgICBj
b21tb25Db2xvciA9IGVkZ2VzW2N1cnJTaWRlXS5jb2xvcjsKKyAgICAgICAgICAgICAgICBjb21t
b25Db2xvciA9IGVkZ2VzW2N1cnJTaWRlXS5jb2xvcigpOwogICAgICAgICAgICAgICAgIGluY2x1
ZGVFZGdlID0gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGluY2x1
ZGVFZGdlID0gZWRnZXNbY3VyclNpZGVdLmNvbG9yID09IGNvbW1vbkNvbG9yOworICAgICAgICAg
ICAgICAgIGluY2x1ZGVFZGdlID0gZWRnZXNbY3VyclNpZGVdLmNvbG9yKCkgPT0gY29tbW9uQ29s
b3I7CiAKICAgICAgICAgICAgIGlmIChpbmNsdWRlRWRnZSkKICAgICAgICAgICAgICAgICBjb21t
b25Db2xvckVkZ2VTZXQgfD0gZWRnZUZsYWdGb3JTaWRlKGN1cnJTaWRlKTsKQEAgLTE4MjYsNyAr
MTcyMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Qm9yZGVyRWRnZSBlZGdlc1s0XTsKLSAgICBnZXRCb3JkZXJFZGdlSW5mbyhlZGdlcywgc3R5bGUs
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICBC
b3JkZXJFZGdlOjpnZXRCb3JkZXJFZGdlSW5mbyhlZGdlcywgc3R5bGUsIGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwogICAgIFJvdW5kZWRSZWN0IG91dGVyQm9yZGVyID0gc3R5bGUuZ2V0Um91bmRl
ZEJvcmRlckZvcihyZWN0LCAmdmlldygpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgUm91bmRlZFJlY3QgaW5uZXJCb3JkZXIgPSBzdHlsZS5n
ZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVySW5uZXJSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2
b2lkYW5jZSgqZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSksIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIApAQCAtMTg1NywxNiAr
MTc1MywxNiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQ
YWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAKICAgICAgICAgaWYgKGZpcnN0Vmlz
aWJsZUVkZ2UgPT0gLTEpCiAgICAgICAgICAgICBmaXJzdFZpc2libGVFZGdlID0gaTsKLSAgICAg
ICAgZWxzZSBpZiAoY3VyckVkZ2UuY29sb3IgIT0gZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29s
b3IpCisgICAgICAgIGVsc2UgaWYgKGN1cnJFZGdlLmNvbG9yKCkgIT0gZWRnZXNbZmlyc3RWaXNp
YmxlRWRnZV0uY29sb3IoKSkKICAgICAgICAgICAgIGFsbEVkZ2VzU2hhcmVDb2xvciA9IGZhbHNl
OwogCi0gICAgICAgIGlmIChjdXJyRWRnZS5jb2xvci5oYXNBbHBoYSgpKQorICAgICAgICBpZiAo
Y3VyckVkZ2UuY29sb3IoKS5oYXNBbHBoYSgpKQogICAgICAgICAgICAgaGF2ZUFscGhhQ29sb3Ig
PSB0cnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKGN1cnJFZGdlLnN0eWxlICE9IFNPTElEKQor
ICAgICAgICBpZiAoY3VyckVkZ2Uuc3R5bGUoKSAhPSBTT0xJRCkKICAgICAgICAgICAgIGhhdmVB
bGxTb2xpZEVkZ2VzID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKGN1cnJFZGdlLnN0eWxlICE9IERP
VUJMRSkKKyAgICAgICAgaWYgKGN1cnJFZGdlLnN0eWxlKCkgIT0gRE9VQkxFKQogICAgICAgICAg
ICAgaGF2ZUFsbERvdWJsZUVkZ2VzID0gZmFsc2U7CiAgICAgfQogCkBAIC0xOTM1LDcgKzE4MzEs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0
KHBpeGVsU25hcHBlZElubmVyQm9yZGVyLnJlY3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2Vd
LmNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgocGF0aCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gCkBAIC0xOTUyLDcgKzE4NDgsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxs
Q29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgp
KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIzNjMsNDQgKzIyNTksMTAgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBo
aWNzQ29udGV4dCogZ3IKICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIoaW5uZXJCb3JkZXIs
IHNpZGUpKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJvcmRlckVkZ2VJ
bmZvKEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0
Ci17Ci0gICAgYm9vbCBob3Jpem9udGFsID0gc3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKTsKLQotICAgIGVkZ2VzW0JTVG9wXSA9IEJvcmRlckVkZ2Uoc3R5bGUuYm9yZGVyVG9w
V2lkdGgoKSwKLSAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3IpLAotICAgICAgICBzdHlsZS5ib3JkZXJUb3BTdHlsZSgpLAotICAgICAg
ICBzdHlsZS5ib3JkZXJUb3BJc1RyYW5zcGFyZW50KCksCi0gICAgICAgIGhvcml6b250YWwgfHwg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IpOwotCi0g
ICAgZWRnZXNbQlNSaWdodF0gPSBCb3JkZXJFZGdlKHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwK
LSAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRDb2xvciksCi0gICAgICAgIHN0eWxlLmJvcmRlclJpZ2h0U3R5bGUoKSwKLSAgICAgICAgc3R5
bGUuYm9yZGVyUmlnaHRJc1RyYW5zcGFyZW50KCksCi0gICAgICAgICFob3Jpem9udGFsIHx8IGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlLAotICAgICAgICBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAg
ICBlZGdlc1tCU0JvdHRvbV0gPSBCb3JkZXJFZGdlKHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCks
Ci0gICAgICAgIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yKSwKLSAgICAgICAgc3R5bGUuYm9yZGVyQm90dG9tU3R5bGUoKSwKLSAgICAgICAg
c3R5bGUuYm9yZGVyQm90dG9tSXNUcmFuc3BhcmVudCgpLAotICAgICAgICBob3Jpem9udGFsIHx8
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLAotICAgICAgICBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0K
LSAgICBlZGdlc1tCU0xlZnRdID0gQm9yZGVyRWRnZShzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwK
LSAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVm
dENvbG9yKSwKLSAgICAgICAgc3R5bGUuYm9yZGVyTGVmdFN0eWxlKCksCi0gICAgICAgIHN0eWxl
LmJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCksCi0gICAgICAgICFob3Jpem9udGFsIHx8IGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsCi0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yKTsKLX0KLQogYm9v
bCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShjb25z
dCBGbG9hdFNpemUmIGNvbnRleHRTY2FsZSkgY29uc3QKIHsKICAgICBCb3JkZXJFZGdlIGVkZ2Vz
WzRdOwotICAgIGdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBzdHlsZSgpKTsKKyAgICBCb3JkZXJF
ZGdlOjpnZXRCb3JkZXJFZGdlSW5mbyhlZGdlcywgc3R5bGUoKSwgZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKIAogICAgIGZvciAoaW50IGkgPSBCU1RvcDsgaSA8PSBCU0xlZnQ7ICsr
aSkgewogICAgICAgICBjb25zdCBCb3JkZXJFZGdlJiBjdXJyRWRnZSA9IGVkZ2VzW2ldOwpAQCAt
MjQyMyw3ICsyMjg1LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym9yZGVyT2JzY3Vy
ZXNCYWNrZ3JvdW5kKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQm9yZGVy
RWRnZSBlZGdlc1s0XTsKLSAgICBnZXRCb3JkZXJFZGdlSW5mbyhlZGdlcywgc3R5bGUoKSk7Cisg
ICAgQm9yZGVyRWRnZTo6Z2V0Qm9yZGVyRWRnZUluZm8oZWRnZXMsIHN0eWxlKCksIGRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKICAgICBmb3IgKGludCBpID0gQlNUb3A7IGkgPD0g
QlNMZWZ0OyArK2kpIHsKICAgICAgICAgY29uc3QgQm9yZGVyRWRnZSYgY3VyckVkZ2UgPSBlZGdl
c1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmgKaW5kZXggOWE5YmIxYzM0ODVhYmE0NWQxYTk5YmQ5MmQwODgyNTliZjMwMjgwZS4uZjQ0MGYz
NmY3NmE4NzZiN2ZiNjgxNDcyZTkzMjFjMzkyY2U2YTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51
bSBDb250ZW50Q2hhbmdlVHlwZSB7CiAgICAgRnVsbFNjcmVlbkNoYW5nZWQKIH07CiAKK2NsYXNz
IEJvcmRlckVkZ2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIElubGluZUZsb3dCb3g7CiBj
bGFzcyBLZXlmcmFtZUxpc3Q7CkBAIC0yNjQsNyArMjY1LDYgQEAgcHJvdGVjdGVkOgogICAgIExh
eW91dFBvaW50IGFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IExh
eW91dFBvaW50JikgY29uc3Q7CiAKICAgICB2b2lkIGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdl
b21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyLCBjb25z
dCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRJbWFn
ZUdlb21ldHJ5JiwgUmVuZGVyRWxlbWVudCogPSAwKSBjb25zdDsKLSAgICB2b2lkIGdldEJvcmRl
ckVkZ2VJbmZvKGNsYXNzIEJvcmRlckVkZ2VbXSwgY29uc3QgUmVuZGVyU3R5bGUmLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
ID0gdHJ1ZSkgY29uc3Q7CiAgICAgYm9vbCBib3JkZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKGNv
bnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBjb25zdDsKICAgICBib29sIGJvcmRlck9ic2N1
cmVzQmFja2dyb3VuZCgpIGNvbnN0OwogICAgIFJvdW5kZWRSZWN0IGJhY2tncm91bmRSb3VuZGVk
UmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCos
IGNvbnN0IExheW91dFNpemUmLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0OwpAQCAtMzI5LDE2ICszMjksMTYgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9y
ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJveFNpZGUsIGJvb2wgZmlyc3RF
ZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcyk7Ci0gICAgdm9pZCBjbGlwQm9yZGVy
U2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJl
Y3QmLCBjb25zdCBSb3VuZGVkUmVjdCYsIEJveFNpZGUsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2Vb
XSk7CisgICAgdm9pZCBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYsIEJveFNpZGUs
IGNvbnN0IEJvcmRlckVkZ2VbXSk7CiAgICAgdm9pZCBwYWludE9uZUJvcmRlclNpZGUoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKLSAgICAgICAgY29uc3QgTGF5
b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lk
ZSBhZGphY2VudFNpZGUyLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCisgICAgICAgIGNvbnN0
IExheW91dFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJv
eFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZVtdLAogICAgICAgICBjb25zdCBQ
YXRoKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBD
b2xvciogb3ZlcnJpZGVDb2xvciA9IDApOwogICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRl
clNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRl
ZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0
IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCi0gICAgICAgIGNvbnN0IGNsYXNzIEJv
cmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwg
Ym9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7CisgICAgICAgIGNvbnN0IEJvcmRlckVkZ2VbXSwgQm9y
ZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMg
PSBmYWxzZSk7CiAgICAgdm9pZCBwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBS
b3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCi0gICAgICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJv
cmRlckFkanVzdG1lbnQsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdz
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsCisgICAgICAgIGNvbnN0IEludFBvaW50JiBpbm5l
ckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IEJvcmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsCiAgICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxz
ZSwgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IgPSAwKTsKLSAgICB2b2lkIGRyYXdCb3hTaWRl
RnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFBhdGgm
LCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCisgICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRo
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3Qg
Qm9yZGVyRWRnZVtdLAogICAgICAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25l
c3MsIEJveFNpZGUsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgQ29sb3IsIEVCb3JkZXJT
dHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIHZvaWQgcGFpbnRNYXNrRm9y
VGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRSZWN0JiwgSW5saW5lRmxvd0JveCos
IGNvbnN0IExheW91dFJlY3QmLCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKaW5kZXggNTg2OGVlYWU3
MzExN2M5MDI1N2Q2Zjc2NzhmNmU0MzVkZjIyMmUzMy4uNjc3ZmIwZmFkZmI4MDIyYjBiNTFjYjY5
NThlNDAyZTRlODJmNmU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcmluZ0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
aW5nQWxsSW5PbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBdXRvVGFibGVM
YXlvdXQuY3BwIgogI2luY2x1ZGUgIkJpZGlSdW4uY3BwIgorI2luY2x1ZGUgIkJvcmRlckVkZ2Uu
Y3BwIgogI2luY2x1ZGUgIkNvdW50ZXJOb2RlLmNwcCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5j
cHAiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>