<?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>113062</bug_id>
          
          <creation_ts>2013-03-22 08:17:39 -0700</creation_ts>
          <short_desc>Cleanup text track selection logic</short_desc>
          <delta_ts>2013-03-22 16:40:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>113114</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>pkasting</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>webkit-unassigned</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>861485</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-22 08:17:39 -0700</bug_when>
    <thetext>Some text track selection logic has been moved from HTMLMediaElement to CaptionUserPreferences to make it easier for ports to customize. More should be moved to clean things up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861525</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-03-22 08:59:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/13483645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861624</commentid>
    <comment_count>2</comment_count>
      <attachid>194584</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-22 10:25:54 -0700</bug_when>
    <thetext>Created attachment 194584
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861632</commentid>
    <comment_count>3</comment_count>
      <attachid>194584</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-22 10:32:07 -0700</bug_when>
    <thetext>Comment on attachment 194584
Proposed patch

Attachment 194584 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17133578</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861635</commentid>
    <comment_count>4</comment_count>
      <attachid>194584</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-22 10:36:09 -0700</bug_when>
    <thetext>Comment on attachment 194584
Proposed patch

Attachment 194584 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17133581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861642</commentid>
    <comment_count>5</comment_count>
      <attachid>194584</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-22 10:39:09 -0700</bug_when>
    <thetext>Comment on attachment 194584
Proposed patch

Attachment 194584 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17240319</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861647</commentid>
    <comment_count>6</comment_count>
      <attachid>194584</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-22 10:40:12 -0700</bug_when>
    <thetext>Comment on attachment 194584
Proposed patch

Attachment 194584 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17133579</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861650</commentid>
    <comment_count>7</comment_count>
      <attachid>194584</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-22 10:42:32 -0700</bug_when>
    <thetext>Comment on attachment 194584
Proposed patch

Attachment 194584 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17133587</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861655</commentid>
    <comment_count>8</comment_count>
      <attachid>194591</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-22 10:46:14 -0700</bug_when>
    <thetext>Created attachment 194591
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861666</commentid>
    <comment_count>9</comment_count>
      <attachid>194591</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-22 10:51:25 -0700</bug_when>
    <thetext>Comment on attachment 194591
Updated patch.

Attachment 194591 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17145859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861671</commentid>
    <comment_count>10</comment_count>
      <attachid>194591</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-22 10:54:04 -0700</bug_when>
    <thetext>Comment on attachment 194591
Updated patch.

Attachment 194591 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17295054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861676</commentid>
    <comment_count>11</comment_count>
      <attachid>194591</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-22 11:01:10 -0700</bug_when>
    <thetext>Comment on attachment 194591
Updated patch.

Attachment 194591 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17187834</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861697</commentid>
    <comment_count>12</comment_count>
      <attachid>194603</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-22 11:17:38 -0700</bug_when>
    <thetext>Created attachment 194603
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861751</commentid>
    <comment_count>13</comment_count>
      <attachid>194603</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-03-22 12:17:42 -0700</bug_when>
    <thetext>Comment on attachment 194603
Updated patch.

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

r+, with a couple of nits.

&gt; Source/WebCore/page/CaptionUserPreferences.cpp:80
&gt; +        setUserPrefersCaptions(false);
&gt; +        setUserPrefersCaptions(false);

Should the second line be &quot;setUserPrefersSubtitles(false)&quot;?

&gt; Source/WebCore/page/CaptionUserPreferences.cpp:220
&gt; +    return (languages.size() - languageMatchIndex) * 10;

Why 10?  This could be a constant which explains its importance.

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:634
&gt; +        if (track-&gt;kind() == track-&gt;subtitlesKeyword())
&gt; +            trackScore = 3;
&gt; +        else {
&gt; +            if (!track-&gt;isClosedCaptions())
&gt; +                trackScore = 2;
&gt; +            else
&gt; +                trackScore = 1;
&gt; +        }
&gt; +    }

This is confusingly structured.  Could you make this an &apos;if...else if... else&apos; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861801</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-22 13:28:07 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 194603 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194603&amp;action=review
&gt; 
&gt; r+, with a couple of nits.
&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferences.cpp:80
&gt; &gt; +        setUserPrefersCaptions(false);
&gt; &gt; +        setUserPrefersCaptions(false);
&gt; 
&gt; Should the second line be &quot;setUserPrefersSubtitles(false)&quot;?
&gt; 
  Oops, thanks!

&gt; &gt; Source/WebCore/page/CaptionUserPreferences.cpp:220
&gt; &gt; +    return (languages.size() - languageMatchIndex) * 10;
&gt; 
&gt; Why 10?  This could be a constant which explains its importance.
&gt; 
  I added a comment to clarify.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:634
&gt; &gt; +        if (track-&gt;kind() == track-&gt;subtitlesKeyword())
&gt; &gt; +            trackScore = 3;
&gt; &gt; +        else {
&gt; &gt; +            if (!track-&gt;isClosedCaptions())
&gt; &gt; +                trackScore = 2;
&gt; &gt; +            else
&gt; &gt; +                trackScore = 1;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; This is confusingly structured.  Could you make this an &apos;if...else if... else&apos; instead?
&gt;
  Fixed

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861802</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-22 13:28:43 -0700</bug_when>
    <thetext>https://trac.webkit.org/r146647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861967</commentid>
    <comment_count>16</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2013-03-22 16:40:07 -0700</bug_when>
    <thetext>This seems to have caused bug 113114.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194584</attachid>
            <date>2013-03-22 10:25:54 -0700</date>
            <delta_ts>2013-03-22 10:46:14 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>menu_fix_patch_6.txt</filename>
            <type>text/plain</type>
            <size>20032</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAzLTIyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgdGV4dCB0
cmFjayBzZWxlY3Rpb24gbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzA2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKTogUmVtb3Zl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNr
R3JvdXApOiBEb24ndCBsb29rIGF0IHRyYWNrIGF0dHJpYnV0ZXMgZGlyZWN0bHksCisgICAgICAg
ICAgICB1c2UgY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSB0byBj
YWxjdWxhdGUgdHJhY2sgcmFuay4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6IFNldCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hh
bmdlIGhlcmUKKyAgICAgICAgICAgIGluc3RlYWQgb2YgaW4gY2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQpOiBEb24ndCBzdXBwcmVzcyBjYWxscyB0byBzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUsCisgICAgICAgICAgICBleGlzdGluZyBjb2RlIGFscmVhZHkgbWFrZXMgc3VyZSB3ZSBk
b24ndCBkbyB1bm5lY2Vzc2FyeSB3b3JrLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSk6IERyaXZlIGJ5IGNsZWFudXAsIGRvbid0CisgICAgICAgICAgICBwcm9j
ZXNzIGluYWN0aXZlIGN1ZXMuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpjaGFuZ2Vk
Q2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KTogQ2FsbCByZXNldFRyYWNrTGlzdE1lbnUgaW5zdGVh
ZAorICAgICAgICAgICAgb2YgdXBkYXRlRGlzcGxheSBzbyB3ZSBvbmx5IG1hcmsgdGhlIG1lbnUg
YXMgbmVlZGluZyBhIHJlY2FsY3VsYXRpb24gYW5kIGRvIHRoZSB3b3JrIHdoZW4KKyAgICAgICAg
ICAgIGl0IGlzIGRpc3BsYXllZC4KKworICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzaG91
bGRTaG93Q2FwdGlvbnMpOiBXaGVuIGluIHRlc3RpbmcgbW9kZSwgcmV0dXJuIHRydWUgaWYKKyAg
ICAgICAgICAgIHRoZSBjYXB0aW9uIG9yIHN1YnRpdGxlIHByZWZlcmVuY2UgaGFzIGJlZW4gc2V0
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0U2hvdWxkU2hv
d0NhcHRpb25zKTogSW4gdGVzdGluZyBtb2RlLCBjbGVhciB0aGUgY2FwdGlvbgorICAgICAgICAg
ICAgYW5kIHN1YnRpdGxlIHByZWZlcmVuY2Ugd2hlbiBwYXNzZWQgZmFsc2UuCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6
IENhbGN1bGF0ZSB0aGUgdHJhY2sgc2NvcmUgYmFzZWQgb24KKyAgICAgICAgICAgIHRyYWNrIHR5
cGUgcHJlZmVyZW5jZSBhbmQgcHJlZmVycmVkIGxhbmd1YWdlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGV4dFRyYWNrTGFuZ3VhZ2VTZWxlY3Rpb25TY29yZSk6
IFNjb3JlIGEgdHJhY2sgYWNjb3JkaW5nIHRvCisgICAgICAgICAgICB0aGUgbGFuZ3VhZ2UgcHJl
c2VuY2UgYW5kIHBvc2l0aW9uIGluIHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGxpc3QuCisgICAg
ICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6IENhbGN1bGF0ZSB0cmFjayBsYW5ndWFnZSBz
Y29yZSAKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB1c2VyIHByZWZlcmVuY2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhPZkJl
c3RNYXRjaGluZ0xhbmd1YWdlSW5MaXN0KTogUmVwdXJwb3NlZCB0aGUgc3RhdGljIGJlc3RNYXRj
aGluZ0xhbmd1YWdlCisgICAgICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGxvY2F0aW9u
IG9mIGEgbGFuZ3VhZ2UgaW4gYSBWZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRM
YW5ndWFnZUZyb21MaXN0KTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5o
OgorCiAyMDEzLTAzLTIyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGln
aWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGggT1BFTkNMIDEuMgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzODAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDc5LDU5ICszMDc5LDI3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlclBy
ZWZlcnNDYXB0aW8KICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2FwdGlv
blByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT5zaG91bGRTaG93Q2FwdGlvbnMo
KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJh
Y2tLaW5kKFN0cmluZyBraW5kKSBjb25zdAotewotICAgIGlmIChtX2Rpc2FibGVDYXB0aW9ucykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IHBhZ2UtPmdyb3VwKCkuY2Fw
dGlvblByZWZlcmVuY2VzKCk7Ci0gICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRs
ZXMgPSBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSB8fCB1c2VyUHJlZmVyc0NhcHRpb25zKCk7Ci0K
LSAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSkKLSAgICAgICAg
cmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNTdWJ0aXRsZXMoKSB8fCB1c2Vy
UHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXM7Ci0gICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpj
YXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNl
clByZWZlcnNDYXB0aW9ucygpIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlczsKLSAg
ICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAg
cmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zKCkg
fHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0
IFRyYWNrR3JvdXAmIGdyb3VwKQogewogICAgIEFTU0VSVChncm91cC50cmFja3Muc2l6ZSgpKTsK
IAotICAgIFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5ndWFnZTsKLSAgICBpZiAoZ3JvdXAuaGFzU3Jj
TGFuZyAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gdHJh
Y2tMYW5ndWFnZXM7Ci0gICAgICAgIHRyYWNrTGFuZ3VhZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZ3JvdXAudHJhY2tzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Z3JvdXAudHJhY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgc3JjTGFuZ3Vh
Z2UgPSBncm91cC50cmFja3NbaV0tPmxhbmd1YWdlKCk7Ci0gICAgICAgICAgICBpZiAoc3JjTGFu
Z3VhZ2UubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgdHJhY2tMYW5ndWFnZXMuYXBwZW5kKHNy
Y0xhbmd1YWdlKTsKLSAgICAgICAgfQotICAgICAgICBiZXN0TWF0Y2hpbmdMYW5ndWFnZSA9IHBy
ZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QodHJhY2tMYW5ndWFnZXMsIGRvY3VtZW50KCktPnBhZ2Uo
KS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+cHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwot
ICAgIH0KKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IHBhZ2U/IHBhZ2UtPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCkgOiAwOwogCiAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIHRyYWNr
IGluIHRoZSBncm91cCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIChpZiBhbnkpLgogICAgIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrPiA+IGN1cnJlbnRseUVuYWJsZWRUcmFja3M7CiAgICAgUmVmUHRy
PFRleHRUcmFjaz4gdHJhY2tUb0VuYWJsZTsKICAgICBSZWZQdHI8VGV4dFRyYWNrPiBkZWZhdWx0
VHJhY2s7CiAgICAgUmVmUHRyPFRleHRUcmFjaz4gZmFsbGJhY2tUcmFjazsKKyAgICBpbnQgaGln
aGVzdFRyYWNrU2NvcmUgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JvdXAudHJh
Y2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9
IGdyb3VwLnRyYWNrc1tpXTsKIAogICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNo
YW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkp
CiAgICAgICAgICAgICBjdXJyZW50bHlFbmFibGVkVHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOwog
Ci0gICAgICAgIGlmICh0cmFja1RvRW5hYmxlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgaWYgKHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQodGV4dFRyYWNrLT5raW5k
KCkpKSB7CisgICAgICAgIGludCB0cmFja1Njb3JlID0gY2FwdGlvblByZWZlcmVuY2VzID8gY2Fw
dGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSh0ZXh0VHJhY2suZ2V0KCkp
IDogMDsKKyAgICAgICAgaWYgKHRyYWNrU2NvcmUpIHsKICAgICAgICAgICAgIC8vICogSWYgdGhl
IHRleHQgdHJhY2sga2luZCBpcyB7IFtzdWJ0aXRsZXMgb3IgY2FwdGlvbnNdIFtkZXNjcmlwdGlv
bnNdIH0gYW5kIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5nIGEK
ICAgICAgICAgICAgIC8vIHRyYWNrIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGtpbmQsIHRleHQgdHJh
Y2sgbGFuZ3VhZ2UsIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBu
bwogICAgICAgICAgICAgLy8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdz
IGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQgdHJhY2sga2luZCBvZiBlaXRoZXIgc3Vi
dGl0bGVzCkBAIC0zMTQxLDE3ICszMTA5LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29u
ZmlndXJlVGV4dFRyYWMKICAgICAgICAgICAgIC8vIHRvIGJlbGlldmUgaXMgYXBwcm9wcmlhdGUg
Zm9yIHRoZSB1c2VyLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVk
aWEgZWxlbWVudCdzIGxpc3Qgb2YKICAgICAgICAgICAgIC8vIHRleHQgdHJhY2tzIHdpdGggYSB0
ZXh0IHRyYWNrIGtpbmQgb2YgY2hhcHRlcnMgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dp
bmcKICAgICAgICAgICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcu
Ci0gICAgICAgICAgICBpZiAoYmVzdE1hdGNoaW5nTGFuZ3VhZ2UubGVuZ3RoKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAodGV4dFRyYWNrLT5sYW5ndWFnZSgpID09IGJlc3RNYXRjaGluZ0xhbmd1
YWdlKQotICAgICAgICAgICAgICAgICAgICB0cmFja1RvRW5hYmxlID0gdGV4dFRyYWNrOwotICAg
ICAgICAgICAgfSBlbHNlIGlmICh0ZXh0VHJhY2stPmlzRGVmYXVsdCgpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlIHVzZXIgaXMgaW50ZXJlc3RlZCBpbiB0aGlzIHR5cGUgb2YgdHJhY2ssIGJ1
dCB0aGVpciBsYW5ndWFnZSBwcmVmZXJlbmNlIGRvZXNuJ3QgbWF0Y2ggYW55IHRyYWNrIHNvIHdl
IHdpbGwKLSAgICAgICAgICAgICAgICAvLyBlbmFibGUgdGhlICdkZWZhdWx0JyB0cmFjay4KLSAg
ICAgICAgICAgICAgICBkZWZhdWx0VHJhY2sgPSB0ZXh0VHJhY2s7CisgICAgICAgICAgICBpZiAo
dHJhY2tTY29yZSA+IGhpZ2hlc3RUcmFja1Njb3JlKSB7CisgICAgICAgICAgICAgICAgaGlnaGVz
dFRyYWNrU2NvcmUgPSB0cmFja1Njb3JlOworICAgICAgICAgICAgICAgIHRyYWNrVG9FbmFibGUg
PSB0ZXh0VHJhY2s7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRo
ZSBmaXJzdCB0cmFjayB0aGF0IGRvZXNuJ3QgbWF0Y2ggbGFuZ3VhZ2Ugb3IgaGF2ZSAnZGVmYXVs
dCcgdG8gcG90ZW50aWFsbHkgdXNlIGFzIGZhbGxiYWNrLgotICAgICAgICAgICAgaWYgKCFmYWxs
YmFja1RyYWNrKQorICAgICAgICAgICAgaWYgKCFkZWZhdWx0VHJhY2sgJiYgdGV4dFRyYWNrLT5p
c0RlZmF1bHQoKSkKKyAgICAgICAgICAgICAgICBkZWZhdWx0VHJhY2sgPSB0ZXh0VHJhY2s7Cisg
ICAgICAgICAgICBpZiAoIWRlZmF1bHRUcmFjayAmJiAhZmFsbGJhY2tUcmFjaykKICAgICAgICAg
ICAgICAgICBmYWxsYmFja1RyYWNrID0gdGV4dFRyYWNrOwogICAgICAgICB9IGVsc2UgaWYgKCFn
cm91cC52aXNpYmxlVHJhY2sgJiYgIWRlZmF1bHRUcmFjayAmJiB0ZXh0VHJhY2stPmlzRGVmYXVs
dCgpKSB7CiAgICAgICAgICAgICAvLyAqIElmIHRoZSB0cmFjayBlbGVtZW50IGhhcyBhIGRlZmF1
bHQgYXR0cmlidXRlIHNwZWNpZmllZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sg
aW4gdGhlIG1lZGlhCkBAIC00MzIzLDYgKzQyODgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldENsb3NlZENhcHRpb25zCiAgICAgaWYgKCFtX3BsYXllciB8fCAhaGFzQ2xvc2VkQ2FwdGlv
bnMoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5n
ZSA9IHRydWU7CiAgICAgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUgPSBjbG9zZWRDYXB0aW9uVmlz
aWJsZTsKICAgICBtX3BsYXllci0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGNsb3NlZENhcHRp
b25WaXNpYmxlKTsKIApAQCAtNDUyOSwxMiArNDQ5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2FwdGlvblByZWZlcmVuY2UKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAg
ICBtZWRpYUNvbnRyb2xzKCktPnRleHRUcmFja1ByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0gICAg
Ym9vbCBwcmVmZXJzQ2FwdGlvbnMgPSB1c2VyUHJlZmVyc0NhcHRpb25zKCk7Ci0gICAgaWYgKG1f
ZGlzYWJsZUNhcHRpb25zID09ICFwcmVmZXJzQ2FwdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwotICAgIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShwcmVmZXJzQ2FwdGlvbnMpOworICAgIHNldENsb3NlZENhcHRpb25zVmlz
aWJsZSh1c2VyUHJlZmVyc0NhcHRpb25zKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTQ2MzgwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Miw3ICsyNzIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RG
b3VuZCgpIHsgcmV0dXJuIC0yOyB9CiAKICAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBj
b25zdDsKLSAgICBib29sIHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nKSBj
b25zdDsKICAgICBib29sIHRleHRUcmFja3NBcmVSZWFkeSgpIGNvbnN0OwogICAgIHZvaWQgY29u
ZmlndXJlVGV4dFRyYWNrRGlzcGxheSgpOwogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxh
eSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTQ2MzgwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU0
LDcgKzEyNTQsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lCiAg
ICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRhKCk7CiAKICAgICAg
ICAgQVNTRVJUKGN1ZS0+aXNBY3RpdmUoKSk7Ci0gICAgICAgIGlmICghY3VlLT50cmFjaygpIHx8
ICFjdWUtPnRyYWNrKCktPmlzUmVuZGVyZWQoKSkKKyAgICAgICAgaWYgKCFjdWUtPnRyYWNrKCkg
fHwgIWN1ZS0+dHJhY2soKS0+aXNSZW5kZXJlZCgpIHx8ICFjdWUtPmlzQWN0aXZlKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBkaXNw
bGF5Qm94ID0gY3VlLT5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcAkocmV2aXNpb24gMTQ2MzU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0FwcGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDcgKzMwNiw3IEBA
IHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpjaGFuZ2VkQ2xvc2VkQ2EKIHsKICAgICBNZWRpYUNv
bnRyb2xzOjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7CiAgICAgaWYgKG1fY2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3QpCi0gICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3Qt
PnVwZGF0ZURpc3BsYXkoKTsKKyAgICAgICAgbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC0+cmVz
ZXRUcmFja0xpc3RNZW51KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDE0NjM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDEwIEBAIENhcHRpb25V
c2VyUHJlZmVyZW5jZXM6On5DYXB0aW9uVXNlclByZWYKIAogYm9vbCBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpzaG91bGRTaG93Q2FwdGlvbnMoKSBjb25zdAogewotICAgIHJldHVybiBtX3Rlc3Rp
bmdNb2RlID8gbV9zaG91bGRTaG93Q2FwdGlvbnMgOiBmYWxzZTsKKyAgICBpZiAoIW1fdGVzdGlu
Z01vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9zaG91bGRT
aG93Q2FwdGlvbnMgfHwgdXNlclByZWZlcnNDYXB0aW9ucygpIHx8IHVzZXJQcmVmZXJzU3VidGl0
bGVzKCk7CiB9CiAKIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGltZXJGaXJlZChUaW1l
cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiopCkBAIC03Miw2ICs3NSwxMCBAQCB2b2lkIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6Om5vdGlmeSgpCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnNldFNob3VsZFNob3dDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7CiAgICAgbV9zaG91bGRT
aG93Q2FwdGlvbnMgPSBwcmVmZXJlbmNlOworICAgIGlmIChtX3Rlc3RpbmdNb2RlICYmICFwcmVm
ZXJlbmNlKSB7CisgICAgICAgIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpOworICAgICAg
ICBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGZhbHNlKTsKKyAgICB9CiAgICAgbm90aWZ5KCk7CiB9
CiAKQEAgLTE4NSw2ICsxOTIsMzQgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gQ2FwdGlv
blVzZXJQcgogICAgIHJldHVybiB0cmFja3NGb3JNZW51OwogfQogCitpbnQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaykgY29u
c3QKK3sKKyAgICBpbnQgdHJhY2tTY29yZSA9IDA7CisKKyAgICBpZiAodHJhY2stPmtpbmQoKSAh
PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cmFja1Njb3JlOworCisg
ICAgaWYgKHRyYWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYg
dXNlclByZWZlcnNTdWJ0aXRsZXMoKSkKKyAgICAgICAgdHJhY2tTY29yZSA9IDE7CisgICAgZWxz
ZSBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHVz
ZXJQcmVmZXJzQ2FwdGlvbnMoKSkKKyAgICAgICAgdHJhY2tTY29yZSA9IDE7CisgICAgCisgICAg
cmV0dXJuIHRyYWNrU2NvcmUgKyB0ZXh0VHJhY2tMYW5ndWFnZVNlbGVjdGlvblNjb3JlKHRyYWNr
KTsKK30KKworaW50IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRleHRUcmFja0xhbmd1YWdlU2Vs
ZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK3sKKyAgICBpZiAodHJhY2stPmxh
bmd1YWdlKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZlY3RvcjxTdHJp
bmc+IGxhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworICAgIHNpemVfdCBsYW5ndWFn
ZU1hdGNoSW5kZXggPSBpbmRleE9mQmVzdE1hdGNoaW5nTGFuZ3VhZ2VJbkxpc3QodHJhY2stPmxh
bmd1YWdlKCksIGxhbmd1YWdlcyk7CisgICAgaWYgKGxhbmd1YWdlTWF0Y2hJbmRleCA+PSBsYW5n
dWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAobGFuZ3VhZ2Vz
LnNpemUoKSAtIGxhbmd1YWdlTWF0Y2hJbmRleCkgKiAxMDsKK30KKwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFZJREVPX1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDE0NjM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0NhcHRpb25zKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNob3dDYXB0aW9ucyhib29sKTsKIAorICAgIHZp
cnR1YWwgaW50IHRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayopIGNvbnN0OworICAg
IHZpcnR1YWwgaW50IHRleHRUcmFja0xhbmd1YWdlU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKikg
Y29uc3Q7CisKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkocmV2
aXNpb24gMTQ2MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRTaG93Q2FwdGlvbnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wpIE9WRVJSSURFOwogCisgICAgdmly
dHVhbCBpbnQgdGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKikgY29uc3Q7CisKICAg
ICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURFOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYy5tbQkocmV2aXNpb24gMTQ2Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNiArNTk4LDQ0IEBA
IHN0YXRpYyBTdHJpbmcgbGFuZ3VhZ2VJZGVudGlmaWVyKGNvbnN0IFMKICAgICByZXR1cm4gbG93
ZXJjYXNlTGFuZ3VhZ2VDb2RlOwogfQogCisKK2ludCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZShUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAoreworICAg
IGlmICghc2hvdWxkU2hvd0NhcHRpb25zKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICh0
cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtp
bmQoKSAhPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKHRyYWNrLT5jb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKCF0cmFjay0+aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpbnQgdHJhY2tTY29yZSA9IDA7CisKKyAgICBpZiAodXNlclBy
ZWZlcnNDYXB0aW9ucygpKSB7CisgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgcHJlZmVycyBhY2Nl
c3NpYmxpdHkgdHJhY2tzLCByYW5rIGlzIFNESCwgdGhlbiBDQywgdGhlbiBzdWJ0aXRsZXMuCisg
ICAgICAgIGlmICh0cmFjay0+a2luZCgpID09IHRyYWNrLT5jYXB0aW9uc0tleXdvcmQoKSkgewor
ICAgICAgICAgICAgaWYgKCF0cmFjay0+aXNDbG9zZWRDYXB0aW9ucygpKQorICAgICAgICAgICAg
ICAgIHRyYWNrU2NvcmUgPSAzOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRy
YWNrU2NvcmUgPSAyOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAx
OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgcHJlZmVycyB0cmFuc2xh
dGlvbiB0cmFja3MsIHJhbmsgaXMgc3VidGl0bGVzLCB0aGVuIFNESCwgdGhlbiBDQyB0cmFja3Mu
CisgICAgICAgIGlmICh0cmFjay0+a2luZCgpID09IHRyYWNrLT5zdWJ0aXRsZXNLZXl3b3JkKCkp
CisgICAgICAgICAgICB0cmFja1Njb3JlID0gMzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBpZiAoIXRyYWNrLT5pc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgICAgICAgICAgdHJhY2tT
Y29yZSA9IDI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdHJhY2tTY29yZSA9
IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJhY2tTY29yZSArIHRleHRUcmFj
a0xhbmd1YWdlU2VsZWN0aW9uU2NvcmUodHJhY2spOworfQorCiBzdGF0aWMgYm9vbCB0ZXh0VHJh
Y2tDb21wYXJlKGNvbnN0IFJlZlB0cjxUZXh0VHJhY2s+JiBhLCBjb25zdCBSZWZQdHI8VGV4dFRy
YWNrPiYgYikKIHsKICAgICBTdHJpbmcgcHJlZmVycmVkTGFuZ3VhZ2VEaXNwbGF5TmFtZSA9IGRp
c3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUobGFuZ3VhZ2VJZGVudGlmaWVyKGRlZmF1bHRMYW5n
dWFnZSgpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lv
biAxNDYzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEwNSw1MCArMTA1LDQ0IEBAIHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsTGFuZ3Vh
Z2VJZGVudGlmaWUKICAgICByZXR1cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOwogfQogCi1zdGF0
aWMgU3RyaW5nIGJlc3RNYXRjaGluZ0xhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3QpCitzaXplX3QgaW5kZXhPZkJlc3RNYXRj
aGluZ0xhbmd1YWdlSW5MaXN0KGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsYW5ndWFnZUxpc3QpCiB7Ci0gICAgYm9vbCBjYW5NYXRjaExhbmd1YWdlT25seSA9
IChsYW5ndWFnZS5sZW5ndGgoKSA9PSAyIHx8IChsYW5ndWFnZS5sZW5ndGgoKSA+PSAzICYmIGxh
bmd1YWdlWzJdID09ICctJykpOwogICAgIFN0cmluZyBsYW5ndWFnZVdpdGhvdXRMb2NhbGVNYXRj
aDsKICAgICBTdHJpbmcgbGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZTsKKyAgICBzaXplX3QgbGFu
Z3VhZ2VXaXRob3V0TG9jYWxlTWF0Y2hJbmRleDsKKyAgICBzaXplX3QgbGFuZ3VhZ2VNYXRjaEJ1
dE5vdExvY2FsZU1hdGNoSW5kZXg7CisgICAgYm9vbCBjYW5NYXRjaExhbmd1YWdlT25seSA9IChs
YW5ndWFnZS5sZW5ndGgoKSA9PSAyIHx8IChsYW5ndWFnZS5sZW5ndGgoKSA+PSAzICYmIGxhbmd1
YWdlWzJdID09ICctJykpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYW5ndWFnZUxp
c3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGNhbm9uaWNhbGl6ZWRMYW5ndWFnZUZy
b21MaXN0ID0gY2Fub25pY2FsTGFuZ3VhZ2VJZGVudGlmaWVyKGxhbmd1YWdlTGlzdFtpXSk7CiAK
ICAgICAgICAgaWYgKGxhbmd1YWdlID09IGNhbm9uaWNhbGl6ZWRMYW5ndWFnZUZyb21MaXN0KQot
ICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlTGlzdFtpXTsKKyAgICAgICAgICAgIHJldHVybiBp
OwogCiAgICAgICAgIGlmIChjYW5NYXRjaExhbmd1YWdlT25seSAmJiBjYW5vbmljYWxpemVkTGFu
Z3VhZ2VGcm9tTGlzdC5sZW5ndGgoKSA+PSAyKSB7CiAgICAgICAgICAgICBpZiAobGFuZ3VhZ2Vb
MF0gPT0gY2Fub25pY2FsaXplZExhbmd1YWdlRnJvbUxpc3RbMF0gJiYgbGFuZ3VhZ2VbMV0gPT0g
Y2Fub25pY2FsaXplZExhbmd1YWdlRnJvbUxpc3RbMV0pIHsKLSAgICAgICAgICAgICAgICBpZiAo
IWxhbmd1YWdlV2l0aG91dExvY2FsZU1hdGNoLmxlbmd0aCgpICYmIGNhbm9uaWNhbGl6ZWRMYW5n
dWFnZUZyb21MaXN0Lmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICAgICAgaWYgKCFsYW5ndWFn
ZVdpdGhvdXRMb2NhbGVNYXRjaC5sZW5ndGgoKSAmJiBjYW5vbmljYWxpemVkTGFuZ3VhZ2VGcm9t
TGlzdC5sZW5ndGgoKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlV2l0aG91
dExvY2FsZU1hdGNoID0gbGFuZ3VhZ2VMaXN0W2ldOwotICAgICAgICAgICAgICAgIGlmICghbGFu
Z3VhZ2VNYXRjaEJ1dE5vdExvY2FsZS5sZW5ndGgoKSAmJiBjYW5vbmljYWxpemVkTGFuZ3VhZ2VG
cm9tTGlzdC5sZW5ndGgoKSA+PSAzKQorICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZVdpdGhv
dXRMb2NhbGVNYXRjaEluZGV4ID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKCFsYW5ndWFnZU1hdGNoQnV0Tm90TG9jYWxlLmxlbmd0aCgpICYmIGNhbm9uaWNhbGl6
ZWRMYW5ndWFnZUZyb21MaXN0Lmxlbmd0aCgpID49IDMpIHsKICAgICAgICAgICAgICAgICAgICAg
bGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZSA9IGxhbmd1YWdlTGlzdFtpXTsKKyAgICAgICAgICAg
ICAgICAgICAgbGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZU1hdGNoSW5kZXggPSBpOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIElm
IHdlIGhhdmUgYm90aCBhIGxhbmd1YWdlLW9ubHkgbWF0Y2ggYW5kIGEgbGFuZ3VnZS1idXQtbm90
LWxvY2FsZSBtYXRjaCwgcmV0dXJuIHRoZSAKKyAgICAvLyBJZiB3ZSBoYXZlIGJvdGggYSBsYW5n
dWFnZS1vbmx5IG1hdGNoIGFuZCBhIGxhbmd1Z2UtYnV0LW5vdC1sb2NhbGUgbWF0Y2gsIHJldHVy
biB0aGUKICAgICAvLyBsYW5ndWdlLW9ubHkgbWF0Y2ggYXMgaXMgY29uc2lkZXJlZCBhICJiZXR0
ZXIiIG1hdGNoLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGxpc3QKICAgICAvLyBwcm92aWRlZCBoYXMg
Ym90aCAiZW4tR0IiIGFuZCAiZW4iIGFuZCB0aGUgdXNlciBwcmVmZXJzICJlbi1VUyIgd2Ugd2ls
bCByZXR1cm4gImVuIi4KICAgICBpZiAobGFuZ3VhZ2VXaXRob3V0TG9jYWxlTWF0Y2gubGVuZ3Ro
KCkpCi0gICAgICAgIHJldHVybiBsYW5ndWFnZVdpdGhvdXRMb2NhbGVNYXRjaDsKKyAgICAgICAg
cmV0dXJuIGxhbmd1YWdlV2l0aG91dExvY2FsZU1hdGNoSW5kZXg7CiAKICAgICBpZiAobGFuZ3Vh
Z2VNYXRjaEJ1dE5vdExvY2FsZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGxhbmd1YWdlTWF0
Y2hCdXROb3RMb2NhbGU7Ci0gICAgCi0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19CisgICAg
ICAgIHJldHVybiBsYW5ndWFnZU1hdGNoQnV0Tm90TG9jYWxlTWF0Y2hJbmRleDsKIAotU3RyaW5n
IHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdl
TGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKQotewotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkTGFuZ3VhZ2VzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIFN0cmluZyBiZXN0TWF0Y2ggPSBiZXN0TWF0Y2hpbmdMYW5ndWFnZShjYW5vbmljYWxM
YW5ndWFnZUlkZW50aWZpZXIocHJlZmVycmVkTGFuZ3VhZ2VzW2ldKSwgbGFuZ3VhZ2VMaXN0KTsK
LQotICAgICAgICBpZiAoYmVzdE1hdGNoLmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIGJl
c3RNYXRjaDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4g
bGFuZ3VhZ2VMaXN0LnNpemUoKTsKIH0KIAogU3RyaW5nIGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VM
b2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGVOYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YW5ndWFnZS5oCShyZXZpc2lvbiAxNDYzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICsz
NSw3IEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNP
dmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mKTsKLVN0cmluZyBwcmVmZXJyZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IHByZWZlcnJl
ZExhbmd1YWdlcyk7CitzaXplX3QgaW5kZXhPZkJlc3RNYXRjaGluZ0xhbmd1YWdlSW5MaXN0KGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3Qp
OwogCiAvLyBUaGUgb2JzZXJ2ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBzeXN0ZW0g
bGFuZ3VhZ2UgY2hhbmdlcy4KIHR5cGVkZWYgdm9pZCAoKkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJG
dW5jdGlvbikodm9pZCogY29udGV4dCk7Cg==
</data>
<flag name="commit-queue"
          id="216356"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194591</attachid>
            <date>2013-03-22 10:46:14 -0700</date>
            <delta_ts>2013-03-22 11:17:38 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>menu_fix_patch_7.txt</filename>
            <type>text/plain</type>
            <size>20038</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAzLTIyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgdGV4dCB0
cmFjayBzZWxlY3Rpb24gbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzA2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKTogUmVtb3Zl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNr
R3JvdXApOiBEb24ndCBsb29rIGF0IHRyYWNrIGF0dHJpYnV0ZXMgZGlyZWN0bHksCisgICAgICAg
ICAgICB1c2UgY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSB0byBj
YWxjdWxhdGUgdHJhY2sgcmFuay4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6IFNldCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hh
bmdlIGhlcmUKKyAgICAgICAgICAgIGluc3RlYWQgb2YgaW4gY2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQpOiBEb24ndCBzdXBwcmVzcyBjYWxscyB0byBzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUsCisgICAgICAgICAgICBleGlzdGluZyBjb2RlIGFscmVhZHkgbWFrZXMgc3VyZSB3ZSBk
b24ndCBkbyB1bm5lY2Vzc2FyeSB3b3JrLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSk6IERyaXZlIGJ5IGNsZWFudXAsIGRvbid0CisgICAgICAgICAgICBwcm9j
ZXNzIGluYWN0aXZlIGN1ZXMuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpjaGFuZ2Vk
Q2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KTogQ2FsbCByZXNldFRyYWNrTGlzdE1lbnUgaW5zdGVh
ZAorICAgICAgICAgICAgb2YgdXBkYXRlRGlzcGxheSBzbyB3ZSBvbmx5IG1hcmsgdGhlIG1lbnUg
YXMgbmVlZGluZyBhIHJlY2FsY3VsYXRpb24gYW5kIGRvIHRoZSB3b3JrIHdoZW4KKyAgICAgICAg
ICAgIGl0IGlzIGRpc3BsYXllZC4KKworICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzaG91
bGRTaG93Q2FwdGlvbnMpOiBXaGVuIGluIHRlc3RpbmcgbW9kZSwgcmV0dXJuIHRydWUgaWYKKyAg
ICAgICAgICAgIHRoZSBjYXB0aW9uIG9yIHN1YnRpdGxlIHByZWZlcmVuY2UgaGFzIGJlZW4gc2V0
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0U2hvdWxkU2hv
d0NhcHRpb25zKTogSW4gdGVzdGluZyBtb2RlLCBjbGVhciB0aGUgY2FwdGlvbgorICAgICAgICAg
ICAgYW5kIHN1YnRpdGxlIHByZWZlcmVuY2Ugd2hlbiBwYXNzZWQgZmFsc2UuCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6
IENhbGN1bGF0ZSB0aGUgdHJhY2sgc2NvcmUgYmFzZWQgb24KKyAgICAgICAgICAgIHRyYWNrIHR5
cGUgcHJlZmVyZW5jZSBhbmQgcHJlZmVycmVkIGxhbmd1YWdlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGV4dFRyYWNrTGFuZ3VhZ2VTZWxlY3Rpb25TY29yZSk6
IFNjb3JlIGEgdHJhY2sgYWNjb3JkaW5nIHRvCisgICAgICAgICAgICB0aGUgbGFuZ3VhZ2UgcHJl
c2VuY2UgYW5kIHBvc2l0aW9uIGluIHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGxpc3QuCisgICAg
ICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6IENhbGN1bGF0ZSB0cmFjayBsYW5ndWFnZSBz
Y29yZSAKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB1c2VyIHByZWZlcmVuY2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhPZkJl
c3RNYXRjaGluZ0xhbmd1YWdlSW5MaXN0KTogUmVwdXJwb3NlZCB0aGUgc3RhdGljIGJlc3RNYXRj
aGluZ0xhbmd1YWdlCisgICAgICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGxvY2F0aW9u
IG9mIGEgbGFuZ3VhZ2UgaW4gYSBWZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRM
YW5ndWFnZUZyb21MaXN0KTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5o
OgorCiAyMDEzLTAzLTIyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGln
aWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGggT1BFTkNMIDEuMgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzODAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDc5LDU5ICszMDc5LDI3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlclBy
ZWZlcnNDYXB0aW8KICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2FwdGlv
blByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT5zaG91bGRTaG93Q2FwdGlvbnMo
KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJh
Y2tLaW5kKFN0cmluZyBraW5kKSBjb25zdAotewotICAgIGlmIChtX2Rpc2FibGVDYXB0aW9ucykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IHBhZ2UtPmdyb3VwKCkuY2Fw
dGlvblByZWZlcmVuY2VzKCk7Ci0gICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRs
ZXMgPSBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSB8fCB1c2VyUHJlZmVyc0NhcHRpb25zKCk7Ci0K
LSAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSkKLSAgICAgICAg
cmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNTdWJ0aXRsZXMoKSB8fCB1c2Vy
UHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXM7Ci0gICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpj
YXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNl
clByZWZlcnNDYXB0aW9ucygpIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlczsKLSAg
ICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAg
cmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zKCkg
fHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0
IFRyYWNrR3JvdXAmIGdyb3VwKQogewogICAgIEFTU0VSVChncm91cC50cmFja3Muc2l6ZSgpKTsK
IAotICAgIFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5ndWFnZTsKLSAgICBpZiAoZ3JvdXAuaGFzU3Jj
TGFuZyAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gdHJh
Y2tMYW5ndWFnZXM7Ci0gICAgICAgIHRyYWNrTGFuZ3VhZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZ3JvdXAudHJhY2tzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Z3JvdXAudHJhY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgc3JjTGFuZ3Vh
Z2UgPSBncm91cC50cmFja3NbaV0tPmxhbmd1YWdlKCk7Ci0gICAgICAgICAgICBpZiAoc3JjTGFu
Z3VhZ2UubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgdHJhY2tMYW5ndWFnZXMuYXBwZW5kKHNy
Y0xhbmd1YWdlKTsKLSAgICAgICAgfQotICAgICAgICBiZXN0TWF0Y2hpbmdMYW5ndWFnZSA9IHBy
ZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QodHJhY2tMYW5ndWFnZXMsIGRvY3VtZW50KCktPnBhZ2Uo
KS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+cHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwot
ICAgIH0KKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IHBhZ2U/IHBhZ2UtPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCkgOiAwOwogCiAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIHRyYWNr
IGluIHRoZSBncm91cCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIChpZiBhbnkpLgogICAgIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrPiA+IGN1cnJlbnRseUVuYWJsZWRUcmFja3M7CiAgICAgUmVmUHRy
PFRleHRUcmFjaz4gdHJhY2tUb0VuYWJsZTsKICAgICBSZWZQdHI8VGV4dFRyYWNrPiBkZWZhdWx0
VHJhY2s7CiAgICAgUmVmUHRyPFRleHRUcmFjaz4gZmFsbGJhY2tUcmFjazsKKyAgICBpbnQgaGln
aGVzdFRyYWNrU2NvcmUgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JvdXAudHJh
Y2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9
IGdyb3VwLnRyYWNrc1tpXTsKIAogICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNo
YW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkp
CiAgICAgICAgICAgICBjdXJyZW50bHlFbmFibGVkVHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOwog
Ci0gICAgICAgIGlmICh0cmFja1RvRW5hYmxlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgaWYgKHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQodGV4dFRyYWNrLT5raW5k
KCkpKSB7CisgICAgICAgIGludCB0cmFja1Njb3JlID0gY2FwdGlvblByZWZlcmVuY2VzID8gY2Fw
dGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSh0ZXh0VHJhY2suZ2V0KCkp
IDogMDsKKyAgICAgICAgaWYgKHRyYWNrU2NvcmUpIHsKICAgICAgICAgICAgIC8vICogSWYgdGhl
IHRleHQgdHJhY2sga2luZCBpcyB7IFtzdWJ0aXRsZXMgb3IgY2FwdGlvbnNdIFtkZXNjcmlwdGlv
bnNdIH0gYW5kIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5nIGEK
ICAgICAgICAgICAgIC8vIHRyYWNrIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGtpbmQsIHRleHQgdHJh
Y2sgbGFuZ3VhZ2UsIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBu
bwogICAgICAgICAgICAgLy8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdz
IGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQgdHJhY2sga2luZCBvZiBlaXRoZXIgc3Vi
dGl0bGVzCkBAIC0zMTQxLDE3ICszMTA5LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29u
ZmlndXJlVGV4dFRyYWMKICAgICAgICAgICAgIC8vIHRvIGJlbGlldmUgaXMgYXBwcm9wcmlhdGUg
Zm9yIHRoZSB1c2VyLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVk
aWEgZWxlbWVudCdzIGxpc3Qgb2YKICAgICAgICAgICAgIC8vIHRleHQgdHJhY2tzIHdpdGggYSB0
ZXh0IHRyYWNrIGtpbmQgb2YgY2hhcHRlcnMgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dp
bmcKICAgICAgICAgICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcu
Ci0gICAgICAgICAgICBpZiAoYmVzdE1hdGNoaW5nTGFuZ3VhZ2UubGVuZ3RoKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAodGV4dFRyYWNrLT5sYW5ndWFnZSgpID09IGJlc3RNYXRjaGluZ0xhbmd1
YWdlKQotICAgICAgICAgICAgICAgICAgICB0cmFja1RvRW5hYmxlID0gdGV4dFRyYWNrOwotICAg
ICAgICAgICAgfSBlbHNlIGlmICh0ZXh0VHJhY2stPmlzRGVmYXVsdCgpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlIHVzZXIgaXMgaW50ZXJlc3RlZCBpbiB0aGlzIHR5cGUgb2YgdHJhY2ssIGJ1
dCB0aGVpciBsYW5ndWFnZSBwcmVmZXJlbmNlIGRvZXNuJ3QgbWF0Y2ggYW55IHRyYWNrIHNvIHdl
IHdpbGwKLSAgICAgICAgICAgICAgICAvLyBlbmFibGUgdGhlICdkZWZhdWx0JyB0cmFjay4KLSAg
ICAgICAgICAgICAgICBkZWZhdWx0VHJhY2sgPSB0ZXh0VHJhY2s7CisgICAgICAgICAgICBpZiAo
dHJhY2tTY29yZSA+IGhpZ2hlc3RUcmFja1Njb3JlKSB7CisgICAgICAgICAgICAgICAgaGlnaGVz
dFRyYWNrU2NvcmUgPSB0cmFja1Njb3JlOworICAgICAgICAgICAgICAgIHRyYWNrVG9FbmFibGUg
PSB0ZXh0VHJhY2s7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRo
ZSBmaXJzdCB0cmFjayB0aGF0IGRvZXNuJ3QgbWF0Y2ggbGFuZ3VhZ2Ugb3IgaGF2ZSAnZGVmYXVs
dCcgdG8gcG90ZW50aWFsbHkgdXNlIGFzIGZhbGxiYWNrLgotICAgICAgICAgICAgaWYgKCFmYWxs
YmFja1RyYWNrKQorICAgICAgICAgICAgaWYgKCFkZWZhdWx0VHJhY2sgJiYgdGV4dFRyYWNrLT5p
c0RlZmF1bHQoKSkKKyAgICAgICAgICAgICAgICBkZWZhdWx0VHJhY2sgPSB0ZXh0VHJhY2s7Cisg
ICAgICAgICAgICBpZiAoIWRlZmF1bHRUcmFjayAmJiAhZmFsbGJhY2tUcmFjaykKICAgICAgICAg
ICAgICAgICBmYWxsYmFja1RyYWNrID0gdGV4dFRyYWNrOwogICAgICAgICB9IGVsc2UgaWYgKCFn
cm91cC52aXNpYmxlVHJhY2sgJiYgIWRlZmF1bHRUcmFjayAmJiB0ZXh0VHJhY2stPmlzRGVmYXVs
dCgpKSB7CiAgICAgICAgICAgICAvLyAqIElmIHRoZSB0cmFjayBlbGVtZW50IGhhcyBhIGRlZmF1
bHQgYXR0cmlidXRlIHNwZWNpZmllZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sg
aW4gdGhlIG1lZGlhCkBAIC00MzIzLDYgKzQyODgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldENsb3NlZENhcHRpb25zCiAgICAgaWYgKCFtX3BsYXllciB8fCAhaGFzQ2xvc2VkQ2FwdGlv
bnMoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5n
ZSA9IHRydWU7CiAgICAgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUgPSBjbG9zZWRDYXB0aW9uVmlz
aWJsZTsKICAgICBtX3BsYXllci0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGNsb3NlZENhcHRp
b25WaXNpYmxlKTsKIApAQCAtNDUyOSwxMiArNDQ5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2FwdGlvblByZWZlcmVuY2UKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAg
ICBtZWRpYUNvbnRyb2xzKCktPnRleHRUcmFja1ByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0gICAg
Ym9vbCBwcmVmZXJzQ2FwdGlvbnMgPSB1c2VyUHJlZmVyc0NhcHRpb25zKCk7Ci0gICAgaWYgKG1f
ZGlzYWJsZUNhcHRpb25zID09ICFwcmVmZXJzQ2FwdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwotICAgIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShwcmVmZXJzQ2FwdGlvbnMpOworICAgIHNldENsb3NlZENhcHRpb25zVmlz
aWJsZSh1c2VyUHJlZmVyc0NhcHRpb25zKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTQ2MzgwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Miw3ICsyNzIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RG
b3VuZCgpIHsgcmV0dXJuIC0yOyB9CiAKICAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBj
b25zdDsKLSAgICBib29sIHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nKSBj
b25zdDsKICAgICBib29sIHRleHRUcmFja3NBcmVSZWFkeSgpIGNvbnN0OwogICAgIHZvaWQgY29u
ZmlndXJlVGV4dFRyYWNrRGlzcGxheSgpOwogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxh
eSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTQ2MzgwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU0
LDcgKzEyNTQsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lCiAg
ICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRhKCk7CiAKICAgICAg
ICAgQVNTRVJUKGN1ZS0+aXNBY3RpdmUoKSk7Ci0gICAgICAgIGlmICghY3VlLT50cmFjaygpIHx8
ICFjdWUtPnRyYWNrKCktPmlzUmVuZGVyZWQoKSkKKyAgICAgICAgaWYgKCFjdWUtPnRyYWNrKCkg
fHwgIWN1ZS0+dHJhY2soKS0+aXNSZW5kZXJlZCgpIHx8ICFjdWUtPmlzQWN0aXZlKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBkaXNw
bGF5Qm94ID0gY3VlLT5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcAkocmV2aXNpb24gMTQ2MzU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0FwcGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDcgKzMwNiw3IEBA
IHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpjaGFuZ2VkQ2xvc2VkQ2EKIHsKICAgICBNZWRpYUNv
bnRyb2xzOjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7CiAgICAgaWYgKG1fY2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3QpCi0gICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3Qt
PnVwZGF0ZURpc3BsYXkoKTsKKyAgICAgICAgbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC0+cmVz
ZXRUcmFja0xpc3RNZW51KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDE0NjM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDEwIEBAIENhcHRpb25V
c2VyUHJlZmVyZW5jZXM6On5DYXB0aW9uVXNlclByZWYKIAogYm9vbCBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpzaG91bGRTaG93Q2FwdGlvbnMoKSBjb25zdAogewotICAgIHJldHVybiBtX3Rlc3Rp
bmdNb2RlID8gbV9zaG91bGRTaG93Q2FwdGlvbnMgOiBmYWxzZTsKKyAgICBpZiAoIW1fdGVzdGlu
Z01vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9zaG91bGRT
aG93Q2FwdGlvbnMgfHwgdXNlclByZWZlcnNDYXB0aW9ucygpIHx8IHVzZXJQcmVmZXJzU3VidGl0
bGVzKCk7CiB9CiAKIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGltZXJGaXJlZChUaW1l
cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiopCkBAIC03Miw2ICs3NSwxMCBAQCB2b2lkIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6Om5vdGlmeSgpCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnNldFNob3VsZFNob3dDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7CiAgICAgbV9zaG91bGRT
aG93Q2FwdGlvbnMgPSBwcmVmZXJlbmNlOworICAgIGlmIChtX3Rlc3RpbmdNb2RlICYmICFwcmVm
ZXJlbmNlKSB7CisgICAgICAgIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpOworICAgICAg
ICBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGZhbHNlKTsKKyAgICB9CiAgICAgbm90aWZ5KCk7CiB9
CiAKQEAgLTE4NSw2ICsxOTIsMzQgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gQ2FwdGlv
blVzZXJQcgogICAgIHJldHVybiB0cmFja3NGb3JNZW51OwogfQogCitpbnQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaykgY29u
c3QKK3sKKyAgICBpbnQgdHJhY2tTY29yZSA9IDA7CisKKyAgICBpZiAodHJhY2stPmtpbmQoKSAh
PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cmFja1Njb3JlOworCisg
ICAgaWYgKHRyYWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYg
dXNlclByZWZlcnNTdWJ0aXRsZXMoKSkKKyAgICAgICAgdHJhY2tTY29yZSA9IDE7CisgICAgZWxz
ZSBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHVz
ZXJQcmVmZXJzQ2FwdGlvbnMoKSkKKyAgICAgICAgdHJhY2tTY29yZSA9IDE7CisgICAgCisgICAg
cmV0dXJuIHRyYWNrU2NvcmUgKyB0ZXh0VHJhY2tMYW5ndWFnZVNlbGVjdGlvblNjb3JlKHRyYWNr
KTsKK30KKworaW50IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRleHRUcmFja0xhbmd1YWdlU2Vs
ZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK3sKKyAgICBpZiAodHJhY2stPmxh
bmd1YWdlKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZlY3RvcjxTdHJp
bmc+IGxhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworICAgIHNpemVfdCBsYW5ndWFn
ZU1hdGNoSW5kZXggPSBpbmRleE9mQmVzdE1hdGNoaW5nTGFuZ3VhZ2VJbkxpc3QodHJhY2stPmxh
bmd1YWdlKCksIGxhbmd1YWdlcyk7CisgICAgaWYgKGxhbmd1YWdlTWF0Y2hJbmRleCA+PSBsYW5n
dWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAobGFuZ3VhZ2Vz
LnNpemUoKSAtIGxhbmd1YWdlTWF0Y2hJbmRleCkgKiAxMDsKK30KKwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFZJREVPX1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDE0NjM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0NhcHRpb25zKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNob3dDYXB0aW9ucyhib29sKTsKIAorICAgIHZp
cnR1YWwgaW50IHRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayopIGNvbnN0OworICAg
IHZpcnR1YWwgaW50IHRleHRUcmFja0xhbmd1YWdlU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKikg
Y29uc3Q7CisKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkocmV2
aXNpb24gMTQ2MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRTaG93Q2FwdGlvbnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wpIE9WRVJSSURFOwogCisgICAgdmly
dHVhbCBpbnQgdGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKikgY29uc3Q7CisKICAg
ICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURFOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYy5tbQkocmV2aXNpb24gMTQ2Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNiArNTk4LDQzIEBA
IHN0YXRpYyBTdHJpbmcgbGFuZ3VhZ2VJZGVudGlmaWVyKGNvbnN0IFMKICAgICByZXR1cm4gbG93
ZXJjYXNlTGFuZ3VhZ2VDb2RlOwogfQogCitpbnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK3sKKyAgICBp
ZiAoIXNob3VsZFNob3dDYXB0aW9ucygpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAodHJh
Y2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5k
KCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIGlmICh0cmFjay0+Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIGlmICghdHJhY2stPmlzTWFpblByb2dyYW1Db250ZW50KCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaW50IHRyYWNrU2NvcmUgPSAwOworCisgICAgaWYgKHVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKSkgeworICAgICAgICAvLyBXaGVuIHRoZSB1c2VyIHByZWZlcnMgYWNjZXNz
aWJsaXR5IHRyYWNrcywgcmFuayBpcyBTREgsIHRoZW4gQ0MsIHRoZW4gc3VidGl0bGVzLgorICAg
ICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSB0cmFjay0+Y2FwdGlvbnNLZXl3b3JkKCkpIHsKKyAg
ICAgICAgICAgIGlmICghdHJhY2stPmlzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAgICAg
ICB0cmFja1Njb3JlID0gMzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0cmFj
a1Njb3JlID0gMjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0cmFja1Njb3JlID0gMTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBXaGVuIHRoZSB1c2VyIHByZWZlcnMgdHJhbnNsYXRp
b24gdHJhY2tzLCByYW5rIGlzIHN1YnRpdGxlcywgdGhlbiBTREgsIHRoZW4gQ0MgdHJhY2tzLgor
ICAgICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSB0cmFjay0+c3VidGl0bGVzS2V5d29yZCgpKQor
ICAgICAgICAgICAgdHJhY2tTY29yZSA9IDM7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
aWYgKCF0cmFjay0+aXNDbG9zZWRDYXB0aW9ucygpKQorICAgICAgICAgICAgICAgIHRyYWNrU2Nv
cmUgPSAyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAx
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRyYWNrU2NvcmUgKyB0ZXh0VHJhY2tM
YW5ndWFnZVNlbGVjdGlvblNjb3JlKHRyYWNrKTsKK30KKwogc3RhdGljIGJvb2wgdGV4dFRyYWNr
Q29tcGFyZShjb25zdCBSZWZQdHI8VGV4dFRyYWNrPiYgYSwgY29uc3QgUmVmUHRyPFRleHRUcmFj
az4mIGIpCiB7CiAgICAgU3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRGlzcGxheU5hbWUgPSBkaXNw
bGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGxhbmd1YWdlSWRlbnRpZmllcihkZWZhdWx0TGFuZ3Vh
Z2UoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkocmV2aXNpb24g
MTQ2MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMDUsNTAgKzEwNSw0NCBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbExhbmd1YWdl
SWRlbnRpZmllCiAgICAgcmV0dXJuIGxvd2VyY2FzZUxhbmd1YWdlQ29kZTsKIH0KIAotc3RhdGlj
IFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0KQorc2l6ZV90IGluZGV4T2ZCZXN0TWF0Y2hp
bmdMYW5ndWFnZUluTGlzdChjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFuZ3VhZ2VMaXN0KQogewotICAgIGJvb2wgY2FuTWF0Y2hMYW5ndWFnZU9ubHkgPSAo
bGFuZ3VhZ2UubGVuZ3RoKCkgPT0gMiB8fCAobGFuZ3VhZ2UubGVuZ3RoKCkgPj0gMyAmJiBsYW5n
dWFnZVsyXSA9PSAnLScpKTsKICAgICBTdHJpbmcgbGFuZ3VhZ2VXaXRob3V0TG9jYWxlTWF0Y2g7
CiAgICAgU3RyaW5nIGxhbmd1YWdlTWF0Y2hCdXROb3RMb2NhbGU7CisgICAgc2l6ZV90IGxhbmd1
YWdlV2l0aG91dExvY2FsZU1hdGNoSW5kZXggPSAwOworICAgIHNpemVfdCBsYW5ndWFnZU1hdGNo
QnV0Tm90TG9jYWxlTWF0Y2hJbmRleCA9IDA7CisgICAgYm9vbCBjYW5NYXRjaExhbmd1YWdlT25s
eSA9IChsYW5ndWFnZS5sZW5ndGgoKSA9PSAyIHx8IChsYW5ndWFnZS5sZW5ndGgoKSA+PSAzICYm
IGxhbmd1YWdlWzJdID09ICctJykpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYW5n
dWFnZUxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGNhbm9uaWNhbGl6ZWRMYW5n
dWFnZUZyb21MaXN0ID0gY2Fub25pY2FsTGFuZ3VhZ2VJZGVudGlmaWVyKGxhbmd1YWdlTGlzdFtp
XSk7CiAKICAgICAgICAgaWYgKGxhbmd1YWdlID09IGNhbm9uaWNhbGl6ZWRMYW5ndWFnZUZyb21M
aXN0KQotICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlTGlzdFtpXTsKKyAgICAgICAgICAgIHJl
dHVybiBpOwogCiAgICAgICAgIGlmIChjYW5NYXRjaExhbmd1YWdlT25seSAmJiBjYW5vbmljYWxp
emVkTGFuZ3VhZ2VGcm9tTGlzdC5sZW5ndGgoKSA+PSAyKSB7CiAgICAgICAgICAgICBpZiAobGFu
Z3VhZ2VbMF0gPT0gY2Fub25pY2FsaXplZExhbmd1YWdlRnJvbUxpc3RbMF0gJiYgbGFuZ3VhZ2Vb
MV0gPT0gY2Fub25pY2FsaXplZExhbmd1YWdlRnJvbUxpc3RbMV0pIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWxhbmd1YWdlV2l0aG91dExvY2FsZU1hdGNoLmxlbmd0aCgpICYmIGNhbm9uaWNhbGl6
ZWRMYW5ndWFnZUZyb21MaXN0Lmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICAgICAgaWYgKCFs
YW5ndWFnZVdpdGhvdXRMb2NhbGVNYXRjaC5sZW5ndGgoKSAmJiBjYW5vbmljYWxpemVkTGFuZ3Vh
Z2VGcm9tTGlzdC5sZW5ndGgoKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdl
V2l0aG91dExvY2FsZU1hdGNoID0gbGFuZ3VhZ2VMaXN0W2ldOwotICAgICAgICAgICAgICAgIGlm
ICghbGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZS5sZW5ndGgoKSAmJiBjYW5vbmljYWxpemVkTGFu
Z3VhZ2VGcm9tTGlzdC5sZW5ndGgoKSA+PSAzKQorICAgICAgICAgICAgICAgICAgICBsYW5ndWFn
ZVdpdGhvdXRMb2NhbGVNYXRjaEluZGV4ID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKCFsYW5ndWFnZU1hdGNoQnV0Tm90TG9jYWxlLmxlbmd0aCgpICYmIGNhbm9u
aWNhbGl6ZWRMYW5ndWFnZUZyb21MaXN0Lmxlbmd0aCgpID49IDMpIHsKICAgICAgICAgICAgICAg
ICAgICAgbGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZSA9IGxhbmd1YWdlTGlzdFtpXTsKKyAgICAg
ICAgICAgICAgICAgICAgbGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZU1hdGNoSW5kZXggPSBpOwor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAg
IC8vIElmIHdlIGhhdmUgYm90aCBhIGxhbmd1YWdlLW9ubHkgbWF0Y2ggYW5kIGEgbGFuZ3VnZS1i
dXQtbm90LWxvY2FsZSBtYXRjaCwgcmV0dXJuIHRoZSAKKyAgICAvLyBJZiB3ZSBoYXZlIGJvdGgg
YSBsYW5ndWFnZS1vbmx5IG1hdGNoIGFuZCBhIGxhbmd1Z2UtYnV0LW5vdC1sb2NhbGUgbWF0Y2gs
IHJldHVybiB0aGUKICAgICAvLyBsYW5ndWdlLW9ubHkgbWF0Y2ggYXMgaXMgY29uc2lkZXJlZCBh
ICJiZXR0ZXIiIG1hdGNoLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGxpc3QKICAgICAvLyBwcm92aWRl
ZCBoYXMgYm90aCAiZW4tR0IiIGFuZCAiZW4iIGFuZCB0aGUgdXNlciBwcmVmZXJzICJlbi1VUyIg
d2Ugd2lsbCByZXR1cm4gImVuIi4KICAgICBpZiAobGFuZ3VhZ2VXaXRob3V0TG9jYWxlTWF0Y2gu
bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBsYW5ndWFnZVdpdGhvdXRMb2NhbGVNYXRjaDsKKyAg
ICAgICAgcmV0dXJuIGxhbmd1YWdlV2l0aG91dExvY2FsZU1hdGNoSW5kZXg7CiAKICAgICBpZiAo
bGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGxhbmd1
YWdlTWF0Y2hCdXROb3RMb2NhbGU7Ci0gICAgCi0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19
CisgICAgICAgIHJldHVybiBsYW5ndWFnZU1hdGNoQnV0Tm90TG9jYWxlTWF0Y2hJbmRleDsKIAot
U3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
bmd1YWdlTGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKQotewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkTGFuZ3VhZ2VzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIFN0cmluZyBiZXN0TWF0Y2ggPSBiZXN0TWF0Y2hpbmdMYW5ndWFnZShjYW5v
bmljYWxMYW5ndWFnZUlkZW50aWZpZXIocHJlZmVycmVkTGFuZ3VhZ2VzW2ldKSwgbGFuZ3VhZ2VM
aXN0KTsKLQotICAgICAgICBpZiAoYmVzdE1hdGNoLmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0
dXJuIGJlc3RNYXRjaDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gbGFuZ3VhZ2VMaXN0LnNpemUoKTsKIH0KIAogU3RyaW5nIGRpc3BsYXlOYW1lRm9yTGFu
Z3VhZ2VMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGVOYW1lKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxNDYzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NSw3ICszNSw3IEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKTsKIFZlY3RvcjxTdHJpbmc+IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNPdmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKTsKLVN0cmluZyBwcmVmZXJyZWRMYW5ndWFnZUZyb21MaXN0KGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IHBy
ZWZlcnJlZExhbmd1YWdlcyk7CitzaXplX3QgaW5kZXhPZkJlc3RNYXRjaGluZ0xhbmd1YWdlSW5M
aXN0KGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFn
ZUxpc3QpOwogCiAvLyBUaGUgb2JzZXJ2ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBz
eXN0ZW0gbGFuZ3VhZ2UgY2hhbmdlcy4KIHR5cGVkZWYgdm9pZCAoKkxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXJGdW5jdGlvbikodm9pZCogY29udGV4dCk7Cg==
</data>
<flag name="commit-queue"
          id="216368"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194603</attachid>
            <date>2013-03-22 11:17:38 -0700</date>
            <delta_ts>2013-03-22 13:28:32 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>menu_fix_patch_8.txt</filename>
            <type>text/plain</type>
            <size>20173</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAzLTIyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgdGV4dCB0
cmFjayBzZWxlY3Rpb24gbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzA2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKTogUmVtb3Zl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNr
R3JvdXApOiBEb24ndCBsb29rIGF0IHRyYWNrIGF0dHJpYnV0ZXMgZGlyZWN0bHksCisgICAgICAg
ICAgICB1c2UgY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSB0byBj
YWxjdWxhdGUgdHJhY2sgcmFuay4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6IFNldCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hh
bmdlIGhlcmUKKyAgICAgICAgICAgIGluc3RlYWQgb2YgaW4gY2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQpOiBEb24ndCBzdXBwcmVzcyBjYWxscyB0byBzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUsCisgICAgICAgICAgICBleGlzdGluZyBjb2RlIGFscmVhZHkgbWFrZXMgc3VyZSB3ZSBk
b24ndCBkbyB1bm5lY2Vzc2FyeSB3b3JrLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSk6IERyaXZlIGJ5IGNsZWFudXAsIGRvbid0CisgICAgICAgICAgICBwcm9j
ZXNzIGluYWN0aXZlIGN1ZXMuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpjaGFuZ2Vk
Q2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KTogQ2FsbCByZXNldFRyYWNrTGlzdE1lbnUgaW5zdGVh
ZAorICAgICAgICAgICAgb2YgdXBkYXRlRGlzcGxheSBzbyB3ZSBvbmx5IG1hcmsgdGhlIG1lbnUg
YXMgbmVlZGluZyBhIHJlY2FsY3VsYXRpb24gYW5kIGRvIHRoZSB3b3JrIHdoZW4KKyAgICAgICAg
ICAgIGl0IGlzIGRpc3BsYXllZC4KKworICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzaG91
bGRTaG93Q2FwdGlvbnMpOiBXaGVuIGluIHRlc3RpbmcgbW9kZSwgcmV0dXJuIHRydWUgaWYKKyAg
ICAgICAgICAgIHRoZSBjYXB0aW9uIG9yIHN1YnRpdGxlIHByZWZlcmVuY2UgaGFzIGJlZW4gc2V0
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0U2hvdWxkU2hv
d0NhcHRpb25zKTogSW4gdGVzdGluZyBtb2RlLCBjbGVhciB0aGUgY2FwdGlvbgorICAgICAgICAg
ICAgYW5kIHN1YnRpdGxlIHByZWZlcmVuY2Ugd2hlbiBwYXNzZWQgZmFsc2UuCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6
IENhbGN1bGF0ZSB0aGUgdHJhY2sgc2NvcmUgYmFzZWQgb24KKyAgICAgICAgICAgIHRyYWNrIHR5
cGUgcHJlZmVyZW5jZSBhbmQgcHJlZmVycmVkIGxhbmd1YWdlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGV4dFRyYWNrTGFuZ3VhZ2VTZWxlY3Rpb25TY29yZSk6
IFNjb3JlIGEgdHJhY2sgYWNjb3JkaW5nIHRvCisgICAgICAgICAgICB0aGUgbGFuZ3VhZ2UgcHJl
c2VuY2UgYW5kIHBvc2l0aW9uIGluIHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGxpc3QuCisgICAg
ICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6IENhbGN1bGF0ZSB0cmFjayBsYW5ndWFnZSBz
Y29yZSAKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB1c2VyIHByZWZlcmVuY2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhPZkJl
c3RNYXRjaGluZ0xhbmd1YWdlSW5MaXN0KTogUmVwdXJwb3NlZCB0aGUgc3RhdGljIGJlc3RNYXRj
aGluZ0xhbmd1YWdlCisgICAgICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGxvY2F0aW9u
IG9mIGEgbGFuZ3VhZ2UgaW4gYSBWZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRM
YW5ndWFnZUZyb21MaXN0KTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5o
OgorCiAyMDEzLTAzLTIyICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjE0NjU0MD8pOiBDcmFzaGVzIGluIHN0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktYmFzaWNzLXdvcmtlcnMuaHRtbCwgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tZXJyb3IuaHRtbApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDY2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDc5LDU5ICszMDc5LDI3IEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW8KICAgICByZXR1cm4gY2FwdGlvblByZWZl
cmVuY2VzLT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2Vz
LT5zaG91bGRTaG93Q2FwdGlvbnMoKTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2Vy
SXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZyBraW5kKSBjb25zdAotewotICAgIGlm
IChtX2Rpc2FibGVDYXB0aW9ucykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNl
cyA9IHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7Ci0gICAgYm9vbCB1c2VyUHJl
ZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXMgPSBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSB8fCB1c2Vy
UHJlZmVyc0NhcHRpb25zKCk7Ci0KLSAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxl
c0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZl
cnNTdWJ0aXRsZXMoKSB8fCB1c2VyUHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXM7Ci0gICAgaWYg
KGtpbmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIGNh
cHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNDYXB0aW9ucygpIHx8IHVzZXJQcmVmZXJzQ2Fw
dGlvbnNPclN1YnRpdGxlczsKLSAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9u
c0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZl
cnNUZXh0RGVzY3JpcHRpb25zKCkgfHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwot
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3Vy
ZVRleHRUcmFja0dyb3VwKGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKQogewogICAgIEFTU0VSVChn
cm91cC50cmFja3Muc2l6ZSgpKTsKIAotICAgIFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5ndWFnZTsK
LSAgICBpZiAoZ3JvdXAuaGFzU3JjTGFuZyAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAg
ICAgVmVjdG9yPFN0cmluZz4gdHJhY2tMYW5ndWFnZXM7Ci0gICAgICAgIHRyYWNrTGFuZ3VhZ2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZ3JvdXAudHJhY2tzLnNpemUoKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JvdXAudHJhY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBTdHJpbmcgc3JjTGFuZ3VhZ2UgPSBncm91cC50cmFja3NbaV0tPmxhbmd1YWdlKCk7Ci0g
ICAgICAgICAgICBpZiAoc3JjTGFuZ3VhZ2UubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgdHJh
Y2tMYW5ndWFnZXMuYXBwZW5kKHNyY0xhbmd1YWdlKTsKLSAgICAgICAgfQotICAgICAgICBiZXN0
TWF0Y2hpbmdMYW5ndWFnZSA9IHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QodHJhY2tMYW5ndWFn
ZXMsIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+cHJl
ZmVycmVkTGFuZ3VhZ2VzKCkpOwotICAgIH0KKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+
cGFnZSgpOworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9
IHBhZ2U/IHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkgOiAwOwogCiAgICAgLy8g
Rmlyc3QsIGZpbmQgdGhlIHRyYWNrIGluIHRoZSBncm91cCB0aGF0IHNob3VsZCBiZSBlbmFibGVk
IChpZiBhbnkpLgogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IGN1cnJlbnRseUVuYWJs
ZWRUcmFja3M7CiAgICAgUmVmUHRyPFRleHRUcmFjaz4gdHJhY2tUb0VuYWJsZTsKICAgICBSZWZQ
dHI8VGV4dFRyYWNrPiBkZWZhdWx0VHJhY2s7CiAgICAgUmVmUHRyPFRleHRUcmFjaz4gZmFsbGJh
Y2tUcmFjazsKKyAgICBpbnQgaGlnaGVzdFRyYWNrU2NvcmUgPSAwOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZ3JvdXAudHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxU
ZXh0VHJhY2s+IHRleHRUcmFjayA9IGdyb3VwLnRyYWNrc1tpXTsKIAogICAgICAgICBpZiAobV9w
cm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJh
Y2s6OnNob3dpbmdLZXl3b3JkKCkpCiAgICAgICAgICAgICBjdXJyZW50bHlFbmFibGVkVHJhY2tz
LmFwcGVuZCh0ZXh0VHJhY2spOwogCi0gICAgICAgIGlmICh0cmFja1RvRW5hYmxlKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFj
a0tpbmQodGV4dFRyYWNrLT5raW5kKCkpKSB7CisgICAgICAgIGludCB0cmFja1Njb3JlID0gY2Fw
dGlvblByZWZlcmVuY2VzID8gY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tTZWxlY3Rpb25T
Y29yZSh0ZXh0VHJhY2suZ2V0KCkpIDogMDsKKyAgICAgICAgaWYgKHRyYWNrU2NvcmUpIHsKICAg
ICAgICAgICAgIC8vICogSWYgdGhlIHRleHQgdHJhY2sga2luZCBpcyB7IFtzdWJ0aXRsZXMgb3Ig
Y2FwdGlvbnNdIFtkZXNjcmlwdGlvbnNdIH0gYW5kIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4g
aW50ZXJlc3QgaW4gaGF2aW5nIGEKICAgICAgICAgICAgIC8vIHRyYWNrIHdpdGggdGhpcyB0ZXh0
IHRyYWNrIGtpbmQsIHRleHQgdHJhY2sgbGFuZ3VhZ2UsIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVu
YWJsZWQsIGFuZCB0aGVyZSBpcyBubwogICAgICAgICAgICAgLy8gb3RoZXIgdGV4dCB0cmFjayBp
biB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQgdHJh
Y2sga2luZCBvZiBlaXRoZXIgc3VidGl0bGVzCkBAIC0zMTQxLDE3ICszMTA5LDE0IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWMKICAgICAgICAgICAgIC8vIHRvIGJl
bGlldmUgaXMgYXBwcm9wcmlhdGUgZm9yIHRoZSB1c2VyLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIg
dGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YKICAgICAgICAgICAgIC8v
IHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgY2hhcHRlcnMgd2hvc2UgdGV4
dCB0cmFjayBtb2RlIGlzIHNob3dpbmcKICAgICAgICAgICAgIC8vICAgIExldCB0aGUgdGV4dCB0
cmFjayBtb2RlIGJlIHNob3dpbmcuCi0gICAgICAgICAgICBpZiAoYmVzdE1hdGNoaW5nTGFuZ3Vh
Z2UubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodGV4dFRyYWNrLT5sYW5ndWFnZSgp
ID09IGJlc3RNYXRjaGluZ0xhbmd1YWdlKQotICAgICAgICAgICAgICAgICAgICB0cmFja1RvRW5h
YmxlID0gdGV4dFRyYWNrOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXh0VHJhY2stPmlzRGVm
YXVsdCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgaXMgaW50ZXJlc3RlZCBpbiB0
aGlzIHR5cGUgb2YgdHJhY2ssIGJ1dCB0aGVpciBsYW5ndWFnZSBwcmVmZXJlbmNlIGRvZXNuJ3Qg
bWF0Y2ggYW55IHRyYWNrIHNvIHdlIHdpbGwKLSAgICAgICAgICAgICAgICAvLyBlbmFibGUgdGhl
ICdkZWZhdWx0JyB0cmFjay4KLSAgICAgICAgICAgICAgICBkZWZhdWx0VHJhY2sgPSB0ZXh0VHJh
Y2s7CisgICAgICAgICAgICBpZiAodHJhY2tTY29yZSA+IGhpZ2hlc3RUcmFja1Njb3JlKSB7Cisg
ICAgICAgICAgICAgICAgaGlnaGVzdFRyYWNrU2NvcmUgPSB0cmFja1Njb3JlOworICAgICAgICAg
ICAgICAgIHRyYWNrVG9FbmFibGUgPSB0ZXh0VHJhY2s7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIC8vIFJlbWVtYmVyIHRoZSBmaXJzdCB0cmFjayB0aGF0IGRvZXNuJ3QgbWF0Y2ggbGFu
Z3VhZ2Ugb3IgaGF2ZSAnZGVmYXVsdCcgdG8gcG90ZW50aWFsbHkgdXNlIGFzIGZhbGxiYWNrLgot
ICAgICAgICAgICAgaWYgKCFmYWxsYmFja1RyYWNrKQorICAgICAgICAgICAgaWYgKCFkZWZhdWx0
VHJhY2sgJiYgdGV4dFRyYWNrLT5pc0RlZmF1bHQoKSkKKyAgICAgICAgICAgICAgICBkZWZhdWx0
VHJhY2sgPSB0ZXh0VHJhY2s7CisgICAgICAgICAgICBpZiAoIWRlZmF1bHRUcmFjayAmJiAhZmFs
bGJhY2tUcmFjaykKICAgICAgICAgICAgICAgICBmYWxsYmFja1RyYWNrID0gdGV4dFRyYWNrOwog
ICAgICAgICB9IGVsc2UgaWYgKCFncm91cC52aXNpYmxlVHJhY2sgJiYgIWRlZmF1bHRUcmFjayAm
JiB0ZXh0VHJhY2stPmlzRGVmYXVsdCgpKSB7CiAgICAgICAgICAgICAvLyAqIElmIHRoZSB0cmFj
ayBlbGVtZW50IGhhcyBhIGRlZmF1bHQgYXR0cmlidXRlIHNwZWNpZmllZCwgYW5kIHRoZXJlIGlz
IG5vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhCkBAIC00MzI4LDYgKzQyOTMsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zCiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpIHsKKyAgICAgICAgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA9IHRy
dWU7CiAgICAgICAgIG1fZGlzYWJsZUNhcHRpb25zID0gIW1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxl
OwogCiAgICAgICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgp
OwpAQCAtNDUyOSwxMiArNDQ5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblBy
ZWZlcmVuY2UKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRy
b2xzKCktPnRleHRUcmFja1ByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0gICAgYm9vbCBwcmVmZXJz
Q2FwdGlvbnMgPSB1c2VyUHJlZmVyc0NhcHRpb25zKCk7Ci0gICAgaWYgKG1fZGlzYWJsZUNhcHRp
b25zID09ICFwcmVmZXJzQ2FwdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJvY2Vz
c2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwotICAgIHNldENsb3NlZENhcHRpb25zVmlzaWJs
ZShwcmVmZXJzQ2FwdGlvbnMpOworICAgIHNldENsb3NlZENhcHRpb25zVmlzaWJsZSh1c2VyUHJl
ZmVyc0NhcHRpb25zKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9u
QW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTQ2NjI5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw3ICsyNzIsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpIHsgcmV0
dXJuIC0yOyB9CiAKICAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdDsKLSAgICBi
b29sIHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nKSBjb25zdDsKICAgICBi
b29sIHRleHRUcmFja3NBcmVSZWFkeSgpIGNvbnN0OwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRy
YWNrRGlzcGxheSgpOwogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcAkocmV2aXNpb24gMTQ2NjI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU0LDcgKzEyNTQsNyBA
QCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lCiAgICAgICAgIFRleHRU
cmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRhKCk7CiAKICAgICAgICAgQVNTRVJUKGN1
ZS0+aXNBY3RpdmUoKSk7Ci0gICAgICAgIGlmICghY3VlLT50cmFjaygpIHx8ICFjdWUtPnRyYWNr
KCktPmlzUmVuZGVyZWQoKSkKKyAgICAgICAgaWYgKCFjdWUtPnRyYWNrKCkgfHwgIWN1ZS0+dHJh
Y2soKS0+aXNSZW5kZXJlZCgpIHx8ICFjdWUtPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBkaXNwbGF5Qm94ID0gY3Vl
LT5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAkocmV2
aXNpb24gMTQ2NjI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c0FwcGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgTWVkaWFD
b250cm9sc0FwcGxlOjpjaGFuZ2VkQ2xvc2VkQ2EKIHsKICAgICBNZWRpYUNvbnRyb2xzOjpjaGFu
Z2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7CiAgICAgaWYgKG1fY2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3QpCi0gICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnVwZGF0ZURpc3Bs
YXkoKTsKKyAgICAgICAgbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC0+cmVzZXRUcmFja0xpc3RN
ZW51KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9u
IDE0NjYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDEwIEBAIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6On5DYXB0aW9uVXNlclByZWYKIAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzaG91
bGRTaG93Q2FwdGlvbnMoKSBjb25zdAogewotICAgIHJldHVybiBtX3Rlc3RpbmdNb2RlID8gbV9z
aG91bGRTaG93Q2FwdGlvbnMgOiBmYWxzZTsKKyAgICBpZiAoIW1fdGVzdGluZ01vZGUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9zaG91bGRTaG93Q2FwdGlvbnMg
fHwgdXNlclByZWZlcnNDYXB0aW9ucygpIHx8IHVzZXJQcmVmZXJzU3VidGl0bGVzKCk7CiB9CiAK
IHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGltZXJGaXJlZChUaW1lcjxDYXB0aW9uVXNl
clByZWZlcmVuY2VzPiopCkBAIC03Miw2ICs3NSwxMCBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6Om5vdGlmeSgpCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFNob3VsZFNo
b3dDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7CiAgICAgbV9zaG91bGRTaG93Q2FwdGlvbnMg
PSBwcmVmZXJlbmNlOworICAgIGlmIChtX3Rlc3RpbmdNb2RlICYmICFwcmVmZXJlbmNlKSB7Cisg
ICAgICAgIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpOworICAgICAgICBzZXRVc2VyUHJl
ZmVyc0NhcHRpb25zKGZhbHNlKTsKKyAgICB9CiAgICAgbm90aWZ5KCk7CiB9CiAKQEAgLTE4NSw2
ICsxOTIsMzQgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gQ2FwdGlvblVzZXJQcgogICAg
IHJldHVybiB0cmFja3NGb3JNZW51OwogfQogCitpbnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6
dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK3sKKyAgICBp
bnQgdHJhY2tTY29yZSA9IDA7CisKKyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6
OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRs
ZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cmFja1Njb3JlOworCisgICAgaWYgKHRyYWNr
LT5raW5kKCkgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYgdXNlclByZWZlcnNT
dWJ0aXRsZXMoKSkKKyAgICAgICAgdHJhY2tTY29yZSA9IDE7CisgICAgZWxzZSBpZiAodHJhY2st
PmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHVzZXJQcmVmZXJzQ2Fw
dGlvbnMoKSkKKyAgICAgICAgdHJhY2tTY29yZSA9IDE7CisgICAgCisgICAgcmV0dXJuIHRyYWNr
U2NvcmUgKyB0ZXh0VHJhY2tMYW5ndWFnZVNlbGVjdGlvblNjb3JlKHRyYWNrKTsKK30KKworaW50
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRleHRUcmFja0xhbmd1YWdlU2VsZWN0aW9uU2NvcmUo
VGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK3sKKyAgICBpZiAodHJhY2stPmxhbmd1YWdlKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdl
cyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworICAgIHNpemVfdCBsYW5ndWFnZU1hdGNoSW5kZXgg
PSBpbmRleE9mQmVzdE1hdGNoaW5nTGFuZ3VhZ2VJbkxpc3QodHJhY2stPmxhbmd1YWdlKCksIGxh
bmd1YWdlcyk7CisgICAgaWYgKGxhbmd1YWdlTWF0Y2hJbmRleCA+PSBsYW5ndWFnZXMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAobGFuZ3VhZ2VzLnNpemUoKSAtIGxh
bmd1YWdlTWF0Y2hJbmRleCkgKiAxMDsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVP
X1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmgJKHJldmlzaW9uIDE0NjYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0NhcHRpb25zKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldFNob3VsZFNob3dDYXB0aW9ucyhib29sKTsKIAorICAgIHZpcnR1YWwgaW50IHRl
eHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayopIGNvbnN0OworICAgIHZpcnR1YWwgaW50
IHRleHRUcmFja0xhbmd1YWdlU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKikgY29uc3Q7CisKICAg
ICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkocmV2aXNpb24gMTQ2NjI5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiAjZW5kaWYKIAorICAgIHZp
cnR1YWwgaW50IHRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayopIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gc29ydGVkVHJhY2tM
aXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcg
ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqKSBjb25zdCBPVkVSUklERTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQko
cmV2aXNpb24gMTQ2NjI5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNiArNTk4LDQ0IEBAIHN0YXRpYyBT
dHJpbmcgbGFuZ3VhZ2VJZGVudGlmaWVyKGNvbnN0IFMKICAgICByZXR1cm4gbG93ZXJjYXNlTGFu
Z3VhZ2VDb2RlOwogfQogCisvLyAgICAgaW50IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnRl
eHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2spIGNvbnN0CitpbnQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0
cmFjaykgY29uc3QKK3sKKyAgICBpZiAoIXNob3VsZFNob3dDYXB0aW9ucygpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5
d29yZCgpICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkp
CisgICAgICAgIHJldHVybiAwOworICAgIGlmICh0cmFjay0+Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghdHJhY2stPmlzTWFpblByb2dy
YW1Db250ZW50KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50IHRyYWNrU2NvcmUgPSAw
OworCisgICAgaWYgKHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSkgeworICAgICAgICAvLyBXaGVuIHRo
ZSB1c2VyIHByZWZlcnMgYWNjZXNzaWJsaXR5IHRyYWNrcywgcmFuayBpcyBTREgsIHRoZW4gQ0Ms
IHRoZW4gc3VidGl0bGVzLgorICAgICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSB0cmFjay0+Y2Fw
dGlvbnNLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgIGlmICghdHJhY2stPmlzQ2xvc2VkQ2FwdGlv
bnMoKSkKKyAgICAgICAgICAgICAgICB0cmFja1Njb3JlID0gMzsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0cmFja1Njb3JlID0gMjsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB0cmFja1Njb3JlID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBXaGVuIHRoZSB1
c2VyIHByZWZlcnMgdHJhbnNsYXRpb24gdHJhY2tzLCByYW5rIGlzIHN1YnRpdGxlcywgdGhlbiBT
REgsIHRoZW4gQ0MgdHJhY2tzLgorICAgICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSB0cmFjay0+
c3VidGl0bGVzS2V5d29yZCgpKQorICAgICAgICAgICAgdHJhY2tTY29yZSA9IDM7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgaWYgKCF0cmFjay0+aXNDbG9zZWRDYXB0aW9ucygpKQorICAg
ICAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRyYWNrU2NvcmUgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRy
YWNrU2NvcmUgKyB0ZXh0VHJhY2tMYW5ndWFnZVNlbGVjdGlvblNjb3JlKHRyYWNrKTsKK30KKwog
c3RhdGljIGJvb2wgdGV4dFRyYWNrQ29tcGFyZShjb25zdCBSZWZQdHI8VGV4dFRyYWNrPiYgYSwg
Y29uc3QgUmVmUHRyPFRleHRUcmFjaz4mIGIpCiB7CiAgICAgU3RyaW5nIHByZWZlcnJlZExhbmd1
YWdlRGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGxhbmd1YWdlSWRl
bnRpZmllcihkZWZhdWx0TGFuZ3VhZ2UoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGFuZ3VhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xh
bmd1YWdlLmNwcAkocmV2aXNpb24gMTQ2NjI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDUsNTAgKzEwNSw0NCBAQCBzdGF0aWMgU3Ry
aW5nIGNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllCiAgICAgcmV0dXJuIGxvd2VyY2FzZUxhbmd1
YWdlQ29kZTsKIH0KIAotc3RhdGljIFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5ndWFnZShjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0KQorc2l6
ZV90IGluZGV4T2ZCZXN0TWF0Y2hpbmdMYW5ndWFnZUluTGlzdChjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0KQogewotICAgIGJvb2wgY2Fu
TWF0Y2hMYW5ndWFnZU9ubHkgPSAobGFuZ3VhZ2UubGVuZ3RoKCkgPT0gMiB8fCAobGFuZ3VhZ2Uu
bGVuZ3RoKCkgPj0gMyAmJiBsYW5ndWFnZVsyXSA9PSAnLScpKTsKICAgICBTdHJpbmcgbGFuZ3Vh
Z2VXaXRob3V0TG9jYWxlTWF0Y2g7CiAgICAgU3RyaW5nIGxhbmd1YWdlTWF0Y2hCdXROb3RMb2Nh
bGU7CisgICAgc2l6ZV90IGxhbmd1YWdlV2l0aG91dExvY2FsZU1hdGNoSW5kZXggPSAwOworICAg
IHNpemVfdCBsYW5ndWFnZU1hdGNoQnV0Tm90TG9jYWxlTWF0Y2hJbmRleCA9IDA7CisgICAgYm9v
bCBjYW5NYXRjaExhbmd1YWdlT25seSA9IChsYW5ndWFnZS5sZW5ndGgoKSA9PSAyIHx8IChsYW5n
dWFnZS5sZW5ndGgoKSA+PSAzICYmIGxhbmd1YWdlWzJdID09ICctJykpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsYW5ndWFnZUxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3Ry
aW5nIGNhbm9uaWNhbGl6ZWRMYW5ndWFnZUZyb21MaXN0ID0gY2Fub25pY2FsTGFuZ3VhZ2VJZGVu
dGlmaWVyKGxhbmd1YWdlTGlzdFtpXSk7CiAKICAgICAgICAgaWYgKGxhbmd1YWdlID09IGNhbm9u
aWNhbGl6ZWRMYW5ndWFnZUZyb21MaXN0KQotICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlTGlz
dFtpXTsKKyAgICAgICAgICAgIHJldHVybiBpOwogCiAgICAgICAgIGlmIChjYW5NYXRjaExhbmd1
YWdlT25seSAmJiBjYW5vbmljYWxpemVkTGFuZ3VhZ2VGcm9tTGlzdC5sZW5ndGgoKSA+PSAyKSB7
CiAgICAgICAgICAgICBpZiAobGFuZ3VhZ2VbMF0gPT0gY2Fub25pY2FsaXplZExhbmd1YWdlRnJv
bUxpc3RbMF0gJiYgbGFuZ3VhZ2VbMV0gPT0gY2Fub25pY2FsaXplZExhbmd1YWdlRnJvbUxpc3Rb
MV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoIWxhbmd1YWdlV2l0aG91dExvY2FsZU1hdGNoLmxl
bmd0aCgpICYmIGNhbm9uaWNhbGl6ZWRMYW5ndWFnZUZyb21MaXN0Lmxlbmd0aCgpID09IDIpCisg
ICAgICAgICAgICAgICAgaWYgKCFsYW5ndWFnZVdpdGhvdXRMb2NhbGVNYXRjaC5sZW5ndGgoKSAm
JiBjYW5vbmljYWxpemVkTGFuZ3VhZ2VGcm9tTGlzdC5sZW5ndGgoKSA9PSAyKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGxhbmd1YWdlV2l0aG91dExvY2FsZU1hdGNoID0gbGFuZ3VhZ2VMaXN0W2ld
OwotICAgICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZS5sZW5ndGgo
KSAmJiBjYW5vbmljYWxpemVkTGFuZ3VhZ2VGcm9tTGlzdC5sZW5ndGgoKSA+PSAzKQorICAgICAg
ICAgICAgICAgICAgICBsYW5ndWFnZVdpdGhvdXRMb2NhbGVNYXRjaEluZGV4ID0gaTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFsYW5ndWFnZU1hdGNoQnV0Tm90TG9j
YWxlLmxlbmd0aCgpICYmIGNhbm9uaWNhbGl6ZWRMYW5ndWFnZUZyb21MaXN0Lmxlbmd0aCgpID49
IDMpIHsKICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZSA9IGxh
bmd1YWdlTGlzdFtpXTsKKyAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VNYXRjaEJ1dE5vdExv
Y2FsZU1hdGNoSW5kZXggPSBpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KIAotICAgIC8vIElmIHdlIGhhdmUgYm90aCBhIGxhbmd1YWdlLW9ubHkg
bWF0Y2ggYW5kIGEgbGFuZ3VnZS1idXQtbm90LWxvY2FsZSBtYXRjaCwgcmV0dXJuIHRoZSAKKyAg
ICAvLyBJZiB3ZSBoYXZlIGJvdGggYSBsYW5ndWFnZS1vbmx5IG1hdGNoIGFuZCBhIGxhbmd1Z2Ut
YnV0LW5vdC1sb2NhbGUgbWF0Y2gsIHJldHVybiB0aGUKICAgICAvLyBsYW5ndWdlLW9ubHkgbWF0
Y2ggYXMgaXMgY29uc2lkZXJlZCBhICJiZXR0ZXIiIG1hdGNoLiBGb3IgZXhhbXBsZSwgaWYgdGhl
IGxpc3QKICAgICAvLyBwcm92aWRlZCBoYXMgYm90aCAiZW4tR0IiIGFuZCAiZW4iIGFuZCB0aGUg
dXNlciBwcmVmZXJzICJlbi1VUyIgd2Ugd2lsbCByZXR1cm4gImVuIi4KICAgICBpZiAobGFuZ3Vh
Z2VXaXRob3V0TG9jYWxlTWF0Y2gubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBsYW5ndWFnZVdp
dGhvdXRMb2NhbGVNYXRjaDsKKyAgICAgICAgcmV0dXJuIGxhbmd1YWdlV2l0aG91dExvY2FsZU1h
dGNoSW5kZXg7CiAKICAgICBpZiAobGFuZ3VhZ2VNYXRjaEJ1dE5vdExvY2FsZS5sZW5ndGgoKSkK
LSAgICAgICAgcmV0dXJuIGxhbmd1YWdlTWF0Y2hCdXROb3RMb2NhbGU7Ci0gICAgCi0gICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7Ci19CisgICAgICAgIHJldHVybiBsYW5ndWFnZU1hdGNoQnV0Tm90
TG9jYWxlTWF0Y2hJbmRleDsKIAotU3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlTGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4gcHJl
ZmVycmVkTGFuZ3VhZ2VzKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVk
TGFuZ3VhZ2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0cmluZyBiZXN0TWF0Y2ggPSBiZXN0
TWF0Y2hpbmdMYW5ndWFnZShjYW5vbmljYWxMYW5ndWFnZUlkZW50aWZpZXIocHJlZmVycmVkTGFu
Z3VhZ2VzW2ldKSwgbGFuZ3VhZ2VMaXN0KTsKLQotICAgICAgICBpZiAoYmVzdE1hdGNoLmxlbmd0
aCgpKQotICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gbGFuZ3VhZ2VMaXN0LnNpemUoKTsKIH0KIAogU3Ry
aW5nIGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGVOYW1l
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxNDY2MjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIw
MTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2Uo
KTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIFZlY3RvcjxTdHJp
bmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLVN0cmluZyBwcmVmZXJy
ZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3QsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcyk7CitzaXplX3QgaW5kZXhPZkJl
c3RNYXRjaGluZ0xhbmd1YWdlSW5MaXN0KGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3QpOwogCiAvLyBUaGUgb2JzZXJ2ZXIgZnVuY3Rpb24g
d2lsbCBiZSBjYWxsZWQgd2hlbiBzeXN0ZW0gbGFuZ3VhZ2UgY2hhbmdlcy4KIHR5cGVkZWYgdm9p
ZCAoKkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbikodm9pZCogY29udGV4dCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>