<?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>57851</bug_id>
          
          <creation_ts>2011-04-05 08:17:02 -0700</creation_ts>
          <short_desc>Bundle lineLeftOffset and lineRightOffset as a class</short_desc>
          <delta_ts>2011-04-06 11:34:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>57943</dependson>
          <blocked>57779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379574</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-05 08:17:02 -0700</bug_when>
    <thetext>lineLeftOffset and lineRightOffset are always used as a pair so we should bundle them up as a class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379592</commentid>
    <comment_count>1</comment_count>
      <attachid>88241</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-05 08:36:54 -0700</bug_when>
    <thetext>Created attachment 88241
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379593</commentid>
    <comment_count>2</comment_count>
      <attachid>88242</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-05 08:39:08 -0700</bug_when>
    <thetext>Created attachment 88242
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380280</commentid>
    <comment_count>3</comment_count>
      <attachid>88242</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 05:37:21 -0700</bug_when>
    <thetext>Comment on attachment 88242
cleanup

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

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:80
&gt; +            extraWidth += borderPaddingMarginStart(toRenderBoxModelObject(parent));

I might have even added a RenderBoxModelObject* parentAsBoxModelObject local.  I wonder it that&apos;s always true for SVG Text.  I think we still use a RenderBoxModel object to hol the SVG text.  I think we have to since we haven&apos;t split LineBoxTree out into its own class.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:598
&gt; +static inline bool isWhitespace(UChar character, bool shouldPreserveNewline)

Might want a more specific name relating to what spec defines this whitespace, etc.  isCSS3WhiteSpace for example.  isCSSSkipableWhitespace, or wahtever.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2279
&gt; +bool RenderBlock::positionNewFloatOnLine(FloatingObject* newFloat, FloatingObject* lastFloatFromPreviousLine, bool firstLine, LineOffsets&amp; lineOffsets)

I would have preferred that you moved this code in a separate patch.  Makes it difficult to read this diff.

I&apos;m slightly lost in all the changes you&apos;re making.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380346</commentid>
    <comment_count>4</comment_count>
      <attachid>88413</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 07:28:56 -0700</bug_when>
    <thetext>Created attachment 88413
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380419</commentid>
    <comment_count>5</comment_count>
      <attachid>88413</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-06 08:52:51 -0700</bug_when>
    <thetext>Comment on attachment 88413
cleanup

pretty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380520</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 10:02:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 88413 [details])
&gt; pretty.

Yay! Thanks for the review.  Hopefully, I can add more high-level methods in later patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380658</commentid>
    <comment_count>7</comment_count>
      <attachid>88413</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 11:34:27 -0700</bug_when>
    <thetext>Comment on attachment 88413
cleanup

Clearing flags on attachment: 88413

Committed r83076: &lt;http://trac.webkit.org/changeset/83076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380660</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 11:34:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88241</attachid>
            <date>2011-04-05 08:36:54 -0700</date>
            <delta_ts>2011-04-05 08:38:59 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-57851-20110405183650.patch</filename>
            <type>text/plain</type>
            <size>17415</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyOTQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDQtMDUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVuZGxlIGxpbmVMZWZ0T2Zmc2V0IGFuZCBsaW5lUmlnaHRPZmZz
ZXQgYXMgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTc4NTEKKworICAgICAgICBBZGRlZCBhIG5ldyBjbGFzcyBMaW5lT2Zmc2V0cyB0byBy
ZXBsYWNlIGxpbmVMZWZ0T2Zmc2V0IGFuZCBsaW5lUmlnaHRPZmZzZXQgaW4gZmluZE5ld0xpbmVC
cmVhay4KKworICAgICAgICBCcm9rZSBnZXRCb3JkZXJQYWRkaW5nTWFyZ2luIHVwIGludG8gdHdv
IGZ1bmN0aW9ucywgYm9yZGVyUGFkZGluZ01hcmdpblN0YXJ0IGFuZCBib3JkZXJQYWRkaW5nTWFy
Z2luRW5kCisgICAgICAgIHRvIGNhbGwgaW4gZmluZE5leHRMaW5lQnJlYWsuCisgICAgICAgIAor
ICAgICAgICBBbHNvIGV4dHJhY3RlZCBpc1doaXRlc3BhY2UgdG8gYmUgY2FsbGVkIGluIAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclBhZGRpbmdNYXJnaW5TdGFydCk6IEV4dHJh
Y3RlZCBmcm9tIGdldEJvcmRlclBhZGRpbmdNYXJnaW4uCisgICAgICAgIChXZWJDb3JlOjpib3Jk
ZXJQYWRkaW5nTWFyZ2luRW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppbmxpbmVMb2dp
Y2FsV2lkdGgpOiBDYWxscyBib3JkZXJQYWRkaW5nTWFyZ2luU3RhcnQgYW5kIGJvcmRlclBhZGRp
bmdNYXJnaW5FbmQuCisgICAgICAgIChXZWJDb3JlOjppc1doaXRlc3BhY2UpOiBFeHRyYWN0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppc0NvbGxhcHNpYmxlU3BhY2UpOiBDYWxscyBpc1doaXRlc3Bh
Y2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2tpcExlYWRpbmdXaGl0ZXNwYWNl
KTogVGFrZXMgTGluZU9mZnNldHMgaW5zdGVhZCBvZiB0d28gaW50ZWdlcnMuCisgICAgICAgIChX
ZWJDb3JlOjpMaW5lT2Zmc2V0czo6TGluZU9mZnNldHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVPZmZzZXRzOjp3aWR0aCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZU9m
ZnNldHM6OnNldExlZnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVPZmZzZXRzOjpz
ZXRSaWdodCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0
TGluZUJyZWFrKTogSW5zdGFudGlhdGVzIExpbmVPZmZzZXRzOyBjYWxscyBib3JkZXJQYWRkaW5n
TWFyZ2luU3RhcnQsCisgICAgICAgIGJvcmRlclBhZGRpbmdNYXJnaW5FbmQsIGFuZCBpc1doaXRl
c3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9u
TGluZSk6IE1vdmVkIGZyb20gUmVuZGVyQmxvY2suY3BwCisgICAgICAgIGFuZCB0YWtlcyBMaW5l
T2Zmc2V0cyBpbnN0ZWFkIG9mIHR3byBpbnRlZ2Vycy4KKwogMjAxMS0wNC0wNSAgTGVhbmRybyBH
cmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU3RldmUgQmxvY2suCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAJKHJldmlzaW9uIDgyOTA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyMCw1OSArMzMyMCw2IEBAIGJvb2wg
UmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVjdCog
bmV3RmxvYXQsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBib29s
IGZpcnN0TGluZSwgaW50JiBsaW5lTGVmdE9mZnNldCwgaW50JiBsaW5lUmlnaHRPZmZzZXQpCi17
Ci0gICAgYm9vbCBkaWRQb3NpdGlvbiA9IHBvc2l0aW9uTmV3RmxvYXRzKCk7Ci0gICAgaWYgKCFk
aWRQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIGRpZFBvc2l0aW9uOwotCi0gICAgaW50IGJsb2Nr
T2Zmc2V0ID0gbG9naWNhbEhlaWdodCgpOwotICAgIGlmIChibG9ja09mZnNldCA+PSBsb2dpY2Fs
VG9wRm9yRmxvYXQobmV3RmxvYXQpICYmIGJsb2NrT2Zmc2V0IDwgbG9naWNhbEJvdHRvbUZvckZs
b2F0KG5ld0Zsb2F0KSkgewotICAgICAgICBpZiAobmV3RmxvYXQtPnR5cGUoKSA9PSBGbG9hdGlu
Z09iamVjdDo6RmxvYXRMZWZ0KQotICAgICAgICAgICAgbGluZUxlZnRPZmZzZXQgPSBsb2dpY2Fs
UmlnaHRGb3JGbG9hdChuZXdGbG9hdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxpbmVS
aWdodE9mZnNldCA9IGxvZ2ljYWxMZWZ0Rm9yRmxvYXQobmV3RmxvYXQpOwotICAgIH0KLSAgICAK
LSAgICBpZiAoIW5ld0Zsb2F0LT5tX3BhZ2luYXRpb25TdHJ1dCkKLSAgICAgICAgcmV0dXJuIGRp
ZFBvc2l0aW9uOwotICAgICAKLSAgICBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RT
ZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7Ci0gICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0
U2V0Lmxhc3QoKSA9PSBuZXdGbG9hdCk7Ci0KLSAgICBpbnQgZmxvYXRMb2dpY2FsVG9wID0gbG9n
aWNhbFRvcEZvckZsb2F0KG5ld0Zsb2F0KTsKLSAgICBpbnQgcGFnaW5hdGlvblN0cnV0ID0gbmV3
RmxvYXQtPm1fcGFnaW5hdGlvblN0cnV0OwotICAgIAotICAgIGlmIChmbG9hdExvZ2ljYWxUb3Ag
LSBwYWdpbmF0aW9uU3RydXQgIT0gbG9naWNhbEhlaWdodCgpKQotICAgICAgICByZXR1cm4gZGlk
UG9zaXRpb247Ci0KLSAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdP
YmplY3RTZXQuZW5kKCk7Ci0gICAgLS1pdDsgLy8gTGFzdCBmbG9hdCBpcyBuZXdGbG9hdCwgc2tp
cCB0aGF0IG9uZS4KLSAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGJlZ2luID0gZmxvYXRp
bmdPYmplY3RTZXQuYmVnaW4oKTsKLSAgICB3aGlsZSAoaXQgIT0gYmVnaW4pIHsKLSAgICAgICAg
LS1pdDsKLSAgICAgICAgRmxvYXRpbmdPYmplY3QqIGYgPSAqaXQ7Ci0gICAgICAgIGlmIChmID09
IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
aWYgKGxvZ2ljYWxUb3BGb3JGbG9hdChmKSA9PSBsb2dpY2FsSGVpZ2h0KCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVCghZi0+bV9wYWdpbmF0aW9uU3RydXQpOwotICAgICAgICAgICAgZi0+bV9wYWdp
bmF0aW9uU3RydXQgPSBwYWdpbmF0aW9uU3RydXQ7Ci0gICAgICAgICAgICBSZW5kZXJCb3gqIG8g
PSBmLT5tX3JlbmRlcmVyOwotICAgICAgICAgICAgc2V0TG9naWNhbFRvcEZvckNoaWxkKG8sIGxv
Z2ljYWxUb3BGb3JDaGlsZChvKSArIG1hcmdpbkJlZm9yZUZvckNoaWxkKG8pICsgcGFnaW5hdGlv
blN0cnV0KTsKLSAgICAgICAgICAgIGlmIChvLT5pc1JlbmRlckJsb2NrKCkpCi0gICAgICAgICAg
ICAgICAgdG9SZW5kZXJCbG9jayhvKS0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7
Ci0gICAgICAgICAgICBvLT5sYXlvdXRJZk5lZWRlZCgpOwotICAgICAgICAgICAgc2V0TG9naWNh
bFRvcEZvckZsb2F0KGYsIGxvZ2ljYWxUb3BGb3JGbG9hdChmKSArIGYtPm1fcGFnaW5hdGlvblN0
cnV0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAgICAgCi0gICAgc2V0TG9naWNhbEhlaWdodChi
bG9ja09mZnNldCArIHBhZ2luYXRpb25TdHJ1dCk7Ci0gICAgbGluZUxlZnRPZmZzZXQgPSBsb2dp
Y2FsTGVmdE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUpOwotICAgIGxp
bmVSaWdodE9mZnNldCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgp
LCBmaXJzdExpbmUpOwotCi0gICAgcmV0dXJuIGRpZFBvc2l0aW9uOwotfQotCiB2b2lkIFJlbmRl
ckJsb2NrOjpuZXdMaW5lKEVDbGVhciBjbGVhcikKIHsKICAgICBwb3NpdGlvbk5ld0Zsb2F0cygp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDgy
OTA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgQ29sdW1uSW5mbzsKIGNsYXNzIElubGluZUl0
ZXJhdG9yOwogY2xhc3MgTGF5b3V0U3RhdGVNYWludGFpbmVyOwogY2xhc3MgTGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOworY2xhc3MgTGluZU9mZnNldHM7CiBjbGFzcyBSZW5kZXJJbmxpbmU7CiAKIHN0
cnVjdCBCaWRpUnVuOwpAQCAtNDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBSb290SW5saW5lQm94KiYgZW5kTGluZSwgaW50JiBlbmRZUG9zLCBpbnQmIHJl
cGFpbnRCb3R0b20sIGludCYgcmVwYWludFRvcCk7CiAKICAgICB2b2lkIHNraXBUcmFpbGluZ1do
aXRlc3BhY2UoSW5saW5lSXRlcmF0b3ImLCBib29sIGlzTGluZUVtcHR5LCBib29sIHByZXZpb3Vz
TGluZUJyb2tlQ2xlYW5seSk7Ci0gICAgdm9pZCBza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5l
QmlkaVJlc29sdmVyJiwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNMaW5lRW1wdHksIGJvb2wgcHJl
dmlvdXNMaW5lQnJva2VDbGVhbmx5LCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZp
b3VzTGluZSwgaW50JiBsaW5lTGVmdE9mZnNldCwgaW50JiBsaW5lUmlnaHRPZmZzZXQpOworICAg
IHZvaWQgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGluZUJpZGlSZXNvbHZlciYsIGJvb2wgZmly
c3RMaW5lLCBib29sIGlzTGluZUVtcHR5LCBib29sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwg
RmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIExpbmVPZmZzZXRzJik7
CiAgICAgdm9pZCBmaXRCZWxvd0Zsb2F0cyhmbG9hdCB3aWR0aFRvRml0LCBmbG9hdCB0b3RhbE92
ZXJoYW5nV2lkdGgsIGJvb2wgZmlyc3RMaW5lLCBmbG9hdCYgYXZhaWxhYmxlV2lkdGgpOwogICAg
IHR5cGVkZWYgc3RkOjpwYWlyPFJlbmRlclRleHQqLCBMYXp5TGluZUJyZWFrSXRlcmF0b3I+IExp
bmVCcmVha0l0ZXJhdG9ySW5mbzsKICAgICBJbmxpbmVJdGVyYXRvciBmaW5kTmV4dExpbmVCcmVh
ayhJbmxpbmVCaWRpUmVzb2x2ZXImLCBib29sIGZpcnN0TGluZSwgYm9vbCYgaXNMaW5lRW1wdHks
IExpbmVCcmVha0l0ZXJhdG9ySW5mbyYsIGJvb2wmIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwg
Ym9vbCYgaHlwaGVuYXRlZCwKQEAgLTUyNiw3ICs1MjcsNyBAQCBwcml2YXRlOgogICAgIAogICAg
IC8vIFBvc2l0aW9ucyBuZXcgZmxvYXRzIGFuZCBhbHNvIGFkanVzdCBhbGwgZmxvYXRzIGVuY291
bnRlcmVkIG9uIHRoZSBsaW5lIGlmIGFueSBvZiB0aGVtCiAgICAgLy8gaGF2ZSB0byBtb3ZlIHRv
IHRoZSBuZXh0IHBhZ2UvY29sdW1uLgotICAgIGJvb2wgcG9zaXRpb25OZXdGbG9hdE9uTGluZShG
bG9hdGluZ09iamVjdCogbmV3RmxvYXQsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJl
dmlvdXNMaW5lLCBib29sIGZpcnN0TGluZSwgaW50JiBsaW5lTGVmdE9mZnNldCwgaW50JiBsaW5l
UmlnaHRPZmZzZXQpOworICAgIGJvb2wgcG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09i
amVjdCogbmV3RmxvYXQsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5l
LCBib29sIGZpcnN0TGluZSwgTGluZU9mZnNldHMmKTsKIAogICAgIHZvaWQgY2xlYXJGbG9hdHMo
KTsKICAgICBpbnQgZ2V0Q2xlYXJEZWx0YShSZW5kZXJCb3gqIGNoaWxkLCBpbnQgeVBvcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcAkocmV2aXNpb24gODI5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFdlIGRvbid0IGxldCBvdXIgbGluZSBib3ggdHJlZSBm
b3IgYSBzaW5nbGUgbGluZSBnZXQgYW55IGRlZXBlciB0aGFuIHRoaXMuCiBjb25zdCB1bnNpZ25l
ZCBjTWF4TGluZURlcHRoID0gMjAwOwogCi1zdGF0aWMgaW50IGdldEJvcmRlclBhZGRpbmdNYXJn
aW4oUmVuZGVyQm94TW9kZWxPYmplY3QqIGNoaWxkLCBib29sIGVuZE9mSW5saW5lKQorc3RhdGlj
IGlubGluZSBpbnQgYm9yZGVyUGFkZGluZ01hcmdpblN0YXJ0KFJlbmRlckJveE1vZGVsT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgaWYgKGVuZE9mSW5saW5lKQotICAgICAgICByZXR1cm4gY2hpbGQt
Pm1hcmdpbkVuZCgpICsgY2hpbGQtPnBhZGRpbmdFbmQoKSArIGNoaWxkLT5ib3JkZXJFbmQoKTsK
LSAgICByZXR1cm4gY2hpbGQtPm1hcmdpblN0YXJ0KCkgKyBjaGlsZC0+cGFkZGluZ1N0YXJ0KCkg
KyBjaGlsZC0+Ym9yZGVyU3RhcnQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5tYXJnaW5TdGFydCgp
ICsgb2JqZWN0LT5wYWRkaW5nU3RhcnQoKSArIG9iamVjdC0+Ym9yZGVyU3RhcnQoKTsKK30KKwor
c3RhdGljIGlubGluZSBpbnQgYm9yZGVyUGFkZGluZ01hcmdpbkVuZChSZW5kZXJCb3hNb2RlbE9i
amVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBvYmplY3QtPm1hcmdpbkVuZCgpICsgb2JqZWN0
LT5wYWRkaW5nRW5kKCkgKyBvYmplY3QtPmJvcmRlckVuZCgpOwogfQogCiBzdGF0aWMgaW50IGlu
bGluZUxvZ2ljYWxXaWR0aChSZW5kZXJPYmplY3QqIGNoaWxkLCBib29sIHN0YXJ0ID0gdHJ1ZSwg
Ym9vbCBlbmQgPSB0cnVlKQpAQCAtNzQsOSArNzcsOSBAQCBzdGF0aWMgaW50IGlubGluZUxvZ2lj
YWxXaWR0aChSZW5kZXJPYmplCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBjaGlsZC0+cGFy
ZW50KCk7CiAgICAgd2hpbGUgKHBhcmVudC0+aXNJbmxpbmUoKSAmJiAhcGFyZW50LT5pc0lubGlu
ZUJsb2NrT3JJbmxpbmVUYWJsZSgpICYmIGxpbmVEZXB0aCsrIDwgY01heExpbmVEZXB0aCkgewog
ICAgICAgICBpZiAoc3RhcnQgJiYgIWNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkKLSAgICAgICAg
ICAgIGV4dHJhV2lkdGggKz0gZ2V0Qm9yZGVyUGFkZGluZ01hcmdpbih0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHBhcmVudCksIGZhbHNlKTsKKyAgICAgICAgICAgIGV4dHJhV2lkdGggKz0gYm9yZGVy
UGFkZGluZ01hcmdpblN0YXJ0KHRvUmVuZGVyQm94TW9kZWxPYmplY3QocGFyZW50KSk7CiAgICAg
ICAgIGlmIChlbmQgJiYgIWNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgZXh0cmFX
aWR0aCArPSBnZXRCb3JkZXJQYWRkaW5nTWFyZ2luKHRvUmVuZGVyQm94TW9kZWxPYmplY3QocGFy
ZW50KSwgdHJ1ZSk7CisgICAgICAgICAgICBleHRyYVdpZHRoICs9IGJvcmRlclBhZGRpbmdNYXJn
aW5FbmQodG9SZW5kZXJCb3hNb2RlbE9iamVjdChwYXJlbnQpKTsKICAgICAgICAgY2hpbGQgPSBw
YXJlbnQ7CiAgICAgICAgIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKICAgICB9CkBAIC01OTIs
MTIgKzU5NSwxNSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tEaXJlY3Rpb25QCiAg
ICAgbGluZUJveC0+bWFya0RpcnR5KGZhbHNlKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlz
V2hpdGVzcGFjZShVQ2hhciBjaGFyYWN0ZXIsIGJvb2wgc2hvdWxkUHJlc2VydmVOZXdsaW5lKQor
eworICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJyAnIHx8IGNoYXJhY3RlciA9PSAnXHQnIHx8ICgh
c2hvdWxkUHJlc2VydmVOZXdsaW5lICYmIGNoYXJhY3RlciA9PSAnXG4nKTsKK30KKwogc3RhdGlj
IGlubGluZSBib29sIGlzQ29sbGFwc2libGVTcGFjZShVQ2hhciBjaGFyYWN0ZXIsIFJlbmRlclRl
eHQqIHJlbmRlcmVyKQogewotICAgIGlmIChjaGFyYWN0ZXIgPT0gJyAnIHx8IGNoYXJhY3RlciA9
PSAnXHQnIHx8IGNoYXJhY3RlciA9PSBzb2Z0SHlwaGVuKQorICAgIGlmIChpc1doaXRlc3BhY2Uo
Y2hhcmFjdGVyLCByZW5kZXJlci0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpIHx8IGNoYXJh
Y3RlciA9PSBzb2Z0SHlwaGVuKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2hhcmFj
dGVyID09ICdcbicpCi0gICAgICAgIHJldHVybiAhcmVuZGVyZXItPnN0eWxlKCktPnByZXNlcnZl
TmV3bGluZSgpOwogICAgIGlmIChjaGFyYWN0ZXIgPT0gbm9CcmVha1NwYWNlKQogICAgICAgICBy
ZXR1cm4gcmVuZGVyZXItPnN0eWxlKCktPm5ic3BNb2RlKCkgPT0gU1BBQ0U7CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTQ1MiwxMiArMTQ1OCwxMiBAQCB2b2lkIFJlbmRlckJsb2NrOjpza2lwVHJh
aWxpbmdXaGl0ZXNwYWNlCiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBib29sIGZpcnN0TGluZSwgYm9vbCBp
c0xpbmVFbXB0eSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVBy
ZXZpb3VzTGluZSwgaW50JiBsaW5lTGVmdE9mZnNldCwgaW50JiBsaW5lUmlnaHRPZmZzZXQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogbGFz
dEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZU9mZnNldHMmIGxpbmVPZmZzZXRzKQogewogICAg
IHdoaWxlICghcmVzb2x2ZXIucG9zaXRpb24oKS5hdEVuZCgpICYmICFyZXF1aXJlc0xpbmVCb3go
cmVzb2x2ZXIucG9zaXRpb24oKSwgaXNMaW5lRW1wdHksIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5s
eSkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZXNvbHZlci5wb3NpdGlvbigp
Lm1fb2JqOwogICAgICAgICBpZiAob2JqZWN0LT5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICBw
b3NpdGlvbk5ld0Zsb2F0T25MaW5lKGluc2VydEZsb2F0aW5nT2JqZWN0KHRvUmVuZGVyQm94KG9i
amVjdCkpLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBmaXJzdExpbmUsIGxpbmVMZWZ0T2Zm
c2V0LCBsaW5lUmlnaHRPZmZzZXQpOworICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9hdE9uTGlu
ZShpbnNlcnRGbG9hdGluZ09iamVjdCh0b1JlbmRlckJveChvYmplY3QpKSwgbGFzdEZsb2F0RnJv
bVByZXZpb3VzTGluZSwgZmlyc3RMaW5lLCBsaW5lT2Zmc2V0cyk7CiAgICAgICAgIGVsc2UgaWYg
KG9iamVjdC0+aXNQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBzZXRTdGF0aWNQb3NpdGlvbnMo
dGhpcywgdG9SZW5kZXJCb3gob2JqZWN0KSk7CiAgICAgICAgIHJlc29sdmVyLmluY3JlbWVudCgp
OwpAQCAtMTU1OCw2ICsxNTY0LDIxIEBAIHN0YXRpYyB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRl
clRleHQqIHQKICAgICBoeXBoZW5hdGVkID0gdHJ1ZTsKIH0KIAorY2xhc3MgTGluZU9mZnNldHMg
eworcHVibGljOgorICAgIExpbmVPZmZzZXRzKGludCBsZWZ0T2Zmc2V0LCBpbnQgcmlnaHRPZmZz
ZXQpCisgICAgICAgIDogbV9sZWZ0KGxlZnRPZmZzZXQpCisgICAgICAgICwgbV9yaWdodChyaWdo
dE9mZnNldCkKKyAgICB7CisgICAgfQorICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1h
eCgwLCBtX3JpZ2h0IC0gbV9sZWZ0KTsgfQorICAgIHZvaWQgc2V0TGVmdChpbnQgbGVmdCkgeyBt
X2xlZnQgPSBsZWZ0OyB9CisgICAgdm9pZCBzZXRSaWdodChpbnQgcmlnaHQpIHsgbV9yaWdodCA9
IHJpZ2h0OyB9Citwcml2YXRlOgorICAgIGludCBtX2xlZnQ7CisgICAgaW50IG1fcmlnaHQ7Cit9
OworCiBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lQnJlYWsoSW5saW5l
QmlkaVJlc29sdmVyJiByZXNvbHZlciwgYm9vbCBmaXJzdExpbmUsIGJvb2wmIGlzTGluZUVtcHR5
LCBMaW5lQnJlYWtJdGVyYXRvckluZm8mIGxpbmVCcmVha0l0ZXJhdG9ySW5mbywgYm9vbCYgcHJl
dmlvdXNMaW5lQnJva2VDbGVhbmx5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sJiBoeXBoZW5hdGVkLCBFQ2xlYXIqIGNsZWFyLCBGbG9hdGluZ09i
amVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgVmVjdG9yPFJlbmRlckJveCo+JiBwb3Np
dGlvbmVkQm94ZXMpCiB7CkBAIC0xNTY3LDEyICsxNTg4LDExIEBAIElubGluZUl0ZXJhdG9yIFJl
bmRlckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICBMaW5lTWlkcG9pbnRTdGF0ZSYgbGluZU1pZHBv
aW50U3RhdGUgPSByZXNvbHZlci5taWRwb2ludFN0YXRlKCk7CiAgICAgCiAgICAgaW50IGJsb2Nr
T2Zmc2V0ID0gbG9naWNhbEhlaWdodCgpOwotICAgIGludCBsaW5lTGVmdE9mZnNldCA9IGxvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgZmlyc3RMaW5lKTsKLSAgICBpbnQgbGlu
ZVJpZ2h0T2Zmc2V0ID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgZmly
c3RMaW5lKTsKLSAgICAKLSAgICBza2lwTGVhZGluZ1doaXRlc3BhY2UocmVzb2x2ZXIsIGZpcnN0
TGluZSwgaXNMaW5lRW1wdHksIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwgbGFzdEZsb2F0RnJv
bVByZXZpb3VzTGluZSwgbGluZUxlZnRPZmZzZXQsIGxpbmVSaWdodE9mZnNldCk7CisgICAgTGlu
ZU9mZnNldHMgbGluZU9mZnNldHMobG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0
LCBmaXJzdExpbmUpLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0LCBmaXJz
dExpbmUpKTsKKworICAgIHNraXBMZWFkaW5nV2hpdGVzcGFjZShyZXNvbHZlciwgZmlyc3RMaW5l
LCBpc0xpbmVFbXB0eSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBsYXN0RmxvYXRGcm9tUHJl
dmlvdXNMaW5lLCBsaW5lT2Zmc2V0cyk7CiAKLSAgICBmbG9hdCB3aWR0aCA9IG1heCgwLCBsaW5l
UmlnaHRPZmZzZXQgLSBsaW5lTGVmdE9mZnNldCk7CisgICAgZmxvYXQgd2lkdGggPSBsaW5lT2Zm
c2V0cy53aWR0aCgpOwogICAgIGZsb2F0IHcgPSAwOwogICAgIGZsb2F0IHRtcFcgPSAwOwogICAg
IC8vIFRoZSBhbW91bnQgYnkgd2hpY2ggfHdpZHRofCBoYXMgYmVlbiBpbmZsYXRlZCB0byBhY2Nv
dW50IGZvciBwb3NzaWJsZSBjb250cmFjdGlvbiBkdWUgdG8gcnVieSBvdmVyaGFuZy4KQEAgLTE2
NjYsOCArMTY4Niw4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmUK
ICAgICAgICAgICAgICAgICAvLyBJZiBpdCBkb2VzLCBwb3NpdGlvbiBpdCBub3csIG90aGVyd2lz
ZSwgcG9zaXRpb24KICAgICAgICAgICAgICAgICAvLyBpdCBhZnRlciBtb3ZpbmcgdG8gbmV4dCBs
aW5lIChpbiBuZXdMaW5lKCkgZnVuYykKICAgICAgICAgICAgICAgICBpZiAoZmxvYXRzRml0T25M
aW5lICYmIGxvZ2ljYWxXaWR0aEZvckZsb2F0KGYpICsgdyArIHRtcFcgPD0gd2lkdGgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9hdE9uTGluZShmLCBsYXN0RmxvYXRGcm9t
UHJldmlvdXNMaW5lLCBmaXJzdExpbmUsIGxpbmVMZWZ0T2Zmc2V0LCBsaW5lUmlnaHRPZmZzZXQp
OwotICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG1heCgwLCBsaW5lUmlnaHRPZmZzZXQgLSBs
aW5lTGVmdE9mZnNldCkgKyB0b3RhbE92ZXJoYW5nV2lkdGg7CisgICAgICAgICAgICAgICAgICAg
IHBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoZiwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgZmly
c3RMaW5lLCBsaW5lT2Zmc2V0cyk7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbGluZU9m
ZnNldHMud2lkdGgoKSArIHRvdGFsT3ZlcmhhbmdXaWR0aDsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGxCcmVhay5tX29iaiA9PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IWxCcmVhay5tX3Bvcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsQnJlYWsuaW5jcmVtZW50
KCk7CkBAIC0xNzI4LDggKzE3NDgsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6Zmlu
ZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICB0bXBXICs9IGZsb3dCb3gtPm1hcmdpblN0YXJ0KCkgKyBmbG93Qm94LT5ib3JkZXJTdGFydCgp
ICsgZmxvd0JveC0+cGFkZGluZ1N0YXJ0KCkgKwotICAgICAgICAgICAgICAgICAgICBmbG93Qm94
LT5tYXJnaW5FbmQoKSArIGZsb3dCb3gtPmJvcmRlckVuZCgpICsgZmxvd0JveC0+cGFkZGluZ0Vu
ZCgpOworICAgICAgICAgICAgdG1wVyArPSBib3JkZXJQYWRkaW5nTWFyZ2luU3RhcnQoZmxvd0Jv
eCkgKyBib3JkZXJQYWRkaW5nTWFyZ2luRW5kKGZsb3dCb3gpOwogICAgICAgICB9IGVsc2UgaWYg
KG8tPmlzUmVwbGFjZWQoKSkgewogICAgICAgICAgICAgUmVuZGVyQm94KiByZXBsYWNlZEJveCA9
IHRvUmVuZGVyQm94KG8pOwogCkBAIC0xODI4LDcgKzE4NDcsNyBAQCBJbmxpbmVJdGVyYXRvciBS
ZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgYm9vbCBwcmV2aW91c0No
YXJhY3RlcklzU3BhY2UgPSBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZTsKICAgICAgICAgICAgICAg
ICBib29sIHByZXZpb3VzQ2hhcmFjdGVySXNXUyA9IGN1cnJlbnRDaGFyYWN0ZXJJc1dTOwogICAg
ICAgICAgICAgICAgIFVDaGFyIGMgPSBzdHJbcG9zXTsKLSAgICAgICAgICAgICAgICBjdXJyZW50
Q2hhcmFjdGVySXNTcGFjZSA9IGMgPT0gJyAnIHx8IGMgPT0gJ1x0JyB8fCAoIXByZXNlcnZlTmV3
bGluZSAmJiAoYyA9PSAnXG4nKSk7CisgICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3Rlcklz
U3BhY2UgPSBpc1doaXRlc3BhY2UoYywgcHJlc2VydmVOZXdsaW5lKTsKIAogICAgICAgICAgICAg
ICAgIGlmICghY29sbGFwc2VXaGl0ZVNwYWNlIHx8ICFjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkK
ICAgICAgICAgICAgICAgICAgICAgaXNMaW5lRW1wdHkgPSBmYWxzZTsKQEAgLTIwNTYsMTIgKzIw
NzUsMTIgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAg
ICAgICAgICAgICAgICBjaGVja0ZvckJyZWFrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAg
IFJlbmRlclRleHQqIG5leHRUZXh0ID0gdG9SZW5kZXJUZXh0KG5leHQpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAobmV4dFRleHQtPnRleHRMZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgVUNoYXIgYyA9IG5leHRUZXh0LT5jaGFyYWN0ZXJzKClbMF07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnIHx8IChjID09ICdcbicgJiYgIXNo
b3VsZFByZXNlcnZlTmV3bGluZShuZXh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aXNXaGl0ZXNwYWNlKG5leHRUZXh0LT5jaGFyYWN0ZXJzKClbMF0sIHNob3VsZFByZXNlcnZlTmV3
bGluZShuZXh0KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmV4
dCBpdGVtIG9uIHRoZSBsaW5lIGlzIHRleHQsIGFuZCBpZiB3ZSBkaWQgbm90IGVuZCB3aXRoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBzcGFjZSwgdGhlbiB0aGUgbmV4dCB0ZXh0
IHJ1biBjb250aW51ZXMgb3VyIHdvcmQgKGFuZCBzbyBpdCBuZWVkcyB0bwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGtlZXAgYWRkaW5nIHRvIHx0bXBXfC4gIEp1c3QgdXBkYXRlIGFu
ZCBjb250aW51ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ZvckJyZWFrID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChuZXh0VGV4dC0+aXNXb3JkQnJlYWsoKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoZWNrRm9yQnJlYWsgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBib29sIHdpbGxGaXRP
bkxpbmUgPSB3ICsgdG1wVyA8PSB3aWR0aDsKQEAgLTIxODQsNiArMjIwMyw3IEBAIElubGluZUl0
ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAgICAgICAgIElubGluZUl0ZXJh
dG9yIGVuZE1pZCgwLCB0cmFpbGluZ1NwYWNlT2JqZWN0LCBwb3MpOwogICAgICAgICAgICAgYWRk
TWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGVuZE1pZCk7CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRyYWlsaW5nUG9zaXRpb25lZEJveGVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgSW5saW5lSXRlcmF0b3IgaWdub3JlU3RhcnQ7CiAgICAgICAgICAgICAg
ICAgaWdub3JlU3RhcnQubV9vYmogPSB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlc1tpXTsKICAgICAg
ICAgICAgICAgICBpZ25vcmVTdGFydC5tX3BvcyA9IDA7CiAgICAgICAgICAgICAgICAgYWRkTWlk
cG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RvcCBpZ25vcmluZyBz
cGFjZXMuCkBAIC0yMjU2LDQgKzIyNzYsNTggQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2hlY2tMaW5l
c0ZvclRleHRPdmVyZgogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdG
bG9hdE9uTGluZShGbG9hdGluZ09iamVjdCogbmV3RmxvYXQsIEZsb2F0aW5nT2JqZWN0KiBsYXN0
RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBib29sIGZpcnN0TGluZSwgTGluZU9mZnNldHMmIGxpbmVP
ZmZzZXRzKQoreworICAgIGJvb2wgZGlkUG9zaXRpb24gPSBwb3NpdGlvbk5ld0Zsb2F0cygpOwor
ICAgIGlmICghZGlkUG9zaXRpb24pCisgICAgICAgIHJldHVybiBkaWRQb3NpdGlvbjsKKworICAg
IGludCBibG9ja09mZnNldCA9IGxvZ2ljYWxIZWlnaHQoKTsKKyAgICBpZiAoIW5ld0Zsb2F0LT5t
X3BhZ2luYXRpb25TdHJ1dCkgeworICAgICAgICBpZiAoYmxvY2tPZmZzZXQgPj0gbG9naWNhbFRv
cEZvckZsb2F0KG5ld0Zsb2F0KSAmJiBibG9ja09mZnNldCA8IGxvZ2ljYWxCb3R0b21Gb3JGbG9h
dChuZXdGbG9hdCkpIHsKKyAgICAgICAgICAgIGlmIChuZXdGbG9hdC0+dHlwZSgpID09IEZsb2F0
aW5nT2JqZWN0OjpGbG9hdExlZnQpCisgICAgICAgICAgICAgICAgbGluZU9mZnNldHMuc2V0TGVm
dChsb2dpY2FsUmlnaHRGb3JGbG9hdChuZXdGbG9hdCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGxpbmVPZmZzZXRzLnNldFJpZ2h0KGxvZ2ljYWxMZWZ0Rm9yRmxvYXQobmV3
RmxvYXQpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkaWRQb3NpdGlvbjsKKyAgICB9
CisKKyAgICBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5n
T2JqZWN0cy0+c2V0KCk7CisgICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0U2V0Lmxhc3QoKSA9PSBu
ZXdGbG9hdCk7CisKKyAgICBpbnQgZmxvYXRMb2dpY2FsVG9wID0gbG9naWNhbFRvcEZvckZsb2F0
KG5ld0Zsb2F0KTsKKyAgICBpbnQgcGFnaW5hdGlvblN0cnV0ID0gbmV3RmxvYXQtPm1fcGFnaW5h
dGlvblN0cnV0OworCisgICAgaWYgKGZsb2F0TG9naWNhbFRvcCAtIHBhZ2luYXRpb25TdHJ1dCAh
PSBsb2dpY2FsSGVpZ2h0KCkpCisgICAgICAgIHJldHVybiBkaWRQb3NpdGlvbjsKKworICAgIEZs
b2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKKyAg
ICAtLWl0OyAvLyBMYXN0IGZsb2F0IGlzIG5ld0Zsb2F0LCBza2lwIHRoYXQgb25lLgorICAgIEZs
b2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgYmVnaW4gPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigp
OworICAgIHdoaWxlIChpdCAhPSBiZWdpbikgeworICAgICAgICAtLWl0OworICAgICAgICBGbG9h
dGluZ09iamVjdCogZiA9ICppdDsKKyAgICAgICAgaWYgKGYgPT0gbGFzdEZsb2F0RnJvbVByZXZp
b3VzTGluZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobG9naWNhbFRvcEZvckZs
b2F0KGYpID09IGxvZ2ljYWxIZWlnaHQoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFmLT5tX3Bh
Z2luYXRpb25TdHJ1dCk7CisgICAgICAgICAgICBmLT5tX3BhZ2luYXRpb25TdHJ1dCA9IHBhZ2lu
YXRpb25TdHJ1dDsKKyAgICAgICAgICAgIFJlbmRlckJveCogbyA9IGYtPm1fcmVuZGVyZXI7Cisg
ICAgICAgICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQobywgbG9naWNhbFRvcEZvckNoaWxkKG8p
ICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQobykgKyBwYWdpbmF0aW9uU3RydXQpOworICAgICAgICAg
ICAgaWYgKG8tPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgICAgICAgICB0b1JlbmRlckJsb2Nr
KG8pLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgIG8tPmxh
eW91dElmTmVlZGVkKCk7CisgICAgICAgICAgICBzZXRMb2dpY2FsVG9wRm9yRmxvYXQoZiwgbG9n
aWNhbFRvcEZvckZsb2F0KGYpICsgZi0+bV9wYWdpbmF0aW9uU3RydXQpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc2V0TG9naWNhbEhlaWdodChibG9ja09mZnNldCArIHBhZ2luYXRpb25TdHJ1
dCk7CisgICAgbGluZU9mZnNldHMuc2V0TGVmdChsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobG9n
aWNhbEhlaWdodCgpLCBmaXJzdExpbmUpKTsKKyAgICBsaW5lT2Zmc2V0cy5zZXRSaWdodChsb2dp
Y2FsUmlnaHRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lKSk7CisKKyAg
ICByZXR1cm4gZGlkUG9zaXRpb247Cit9CisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88242</attachid>
            <date>2011-04-05 08:39:08 -0700</date>
            <delta_ts>2011-04-06 07:28:45 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-57851-20110405183904.patch</filename>
            <type>text/plain</type>
            <size>17456</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyOTQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDQtMDUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVuZGxlIGxpbmVMZWZ0T2Zmc2V0IGFuZCBsaW5lUmlnaHRPZmZz
ZXQgYXMgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTc4NTEKKworICAgICAgICBBZGRlZCBhIG5ldyBjbGFzcyBMaW5lT2Zmc2V0cyB0byBy
ZXBsYWNlIGxpbmVMZWZ0T2Zmc2V0IGFuZCBsaW5lUmlnaHRPZmZzZXQgaW4gZmluZE5ld0xpbmVC
cmVhay4KKworICAgICAgICBCcm9rZSBnZXRCb3JkZXJQYWRkaW5nTWFyZ2luIHVwIGludG8gdHdv
IGZ1bmN0aW9ucywgYm9yZGVyUGFkZGluZ01hcmdpblN0YXJ0IGFuZCBib3JkZXJQYWRkaW5nTWFy
Z2luRW5kCisgICAgICAgIHRvIGNhbGwgaW4gZmluZE5leHRMaW5lQnJlYWsuCisgICAgICAgIAor
ICAgICAgICBBbHNvIGV4dHJhY3RlZCBpc1doaXRlc3BhY2UgdG8gYmUgY2FsbGVkIGluIGlzQ29s
bGFwc2libGVTcGFjZSBhbmQgZmluZE5leHRMaW5lQnJlYWsuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyUGFkZGluZ01hcmdpblN0YXJ0KTogRXh0cmFjdGVkIGZyb20gZ2V0Qm9y
ZGVyUGFkZGluZ01hcmdpbi4KKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclBhZGRpbmdNYXJnaW5F
bmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlubGluZUxvZ2ljYWxXaWR0aCk6IENhbGxz
IGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydCBhbmQgYm9yZGVyUGFkZGluZ01hcmdpbkVuZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzV2hpdGVzcGFjZSk6IEV4dHJhY3RlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmlzQ29sbGFwc2libGVTcGFjZSk6IENhbGxzIGlzV2hpdGVzcGFjZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpza2lwTGVhZGluZ1doaXRlc3BhY2UpOiBUYWtlcyBMaW5lT2Zm
c2V0cyBpbnN0ZWFkIG9mIHR3byBpbnRlZ2Vycy4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVPZmZz
ZXRzOjpMaW5lT2Zmc2V0cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZU9mZnNldHM6
OndpZHRoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lT2Zmc2V0czo6c2V0TGVmdCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZU9mZnNldHM6OnNldFJpZ2h0KTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lQnJlYWspOiBJbnN0
YW50aWF0ZXMgTGluZU9mZnNldHM7IGNhbGxzIGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydCwKKyAg
ICAgICAgYm9yZGVyUGFkZGluZ01hcmdpbkVuZCwgYW5kIGlzV2hpdGVzcGFjZS4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKTogTW92ZWQgZnJv
bSBSZW5kZXJCbG9jay5jcHAKKyAgICAgICAgYW5kIHRha2VzIExpbmVPZmZzZXRzIGluc3RlYWQg
b2YgdHdvIGludGVnZXJzLgorCiAyMDExLTA0LTA1ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFu
ZHJvZ3JhY2lhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9j
ay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNp
b24gODI5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzIwLDU5ICszMzIwLDYgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9z
aXRpb25OZXdGbG9hdHMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlbmRlckJsb2Nr
Ojpwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9hdCwgRmxvYXRp
bmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGJvb2wgZmlyc3RMaW5lLCBpbnQm
IGxpbmVMZWZ0T2Zmc2V0LCBpbnQmIGxpbmVSaWdodE9mZnNldCkKLXsKLSAgICBib29sIGRpZFBv
c2l0aW9uID0gcG9zaXRpb25OZXdGbG9hdHMoKTsKLSAgICBpZiAoIWRpZFBvc2l0aW9uKQotICAg
ICAgICByZXR1cm4gZGlkUG9zaXRpb247Ci0KLSAgICBpbnQgYmxvY2tPZmZzZXQgPSBsb2dpY2Fs
SGVpZ2h0KCk7Ci0gICAgaWYgKGJsb2NrT2Zmc2V0ID49IGxvZ2ljYWxUb3BGb3JGbG9hdChuZXdG
bG9hdCkgJiYgYmxvY2tPZmZzZXQgPCBsb2dpY2FsQm90dG9tRm9yRmxvYXQobmV3RmxvYXQpKSB7
Ci0gICAgICAgIGlmIChuZXdGbG9hdC0+dHlwZSgpID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdExl
ZnQpCi0gICAgICAgICAgICBsaW5lTGVmdE9mZnNldCA9IGxvZ2ljYWxSaWdodEZvckZsb2F0KG5l
d0Zsb2F0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGluZVJpZ2h0T2Zmc2V0ID0gbG9n
aWNhbExlZnRGb3JGbG9hdChuZXdGbG9hdCk7Ci0gICAgfQotICAgIAotICAgIGlmICghbmV3Rmxv
YXQtPm1fcGFnaW5hdGlvblN0cnV0KQotICAgICAgICByZXR1cm4gZGlkUG9zaXRpb247Ci0gICAg
IAotICAgIEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdP
YmplY3RzLT5zZXQoKTsKLSAgICBBU1NFUlQoZmxvYXRpbmdPYmplY3RTZXQubGFzdCgpID09IG5l
d0Zsb2F0KTsKLQotICAgIGludCBmbG9hdExvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wRm9yRmxvYXQo
bmV3RmxvYXQpOwotICAgIGludCBwYWdpbmF0aW9uU3RydXQgPSBuZXdGbG9hdC0+bV9wYWdpbmF0
aW9uU3RydXQ7Ci0gICAgCi0gICAgaWYgKGZsb2F0TG9naWNhbFRvcCAtIHBhZ2luYXRpb25TdHJ1
dCAhPSBsb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBkaWRQb3NpdGlvbjsKLQotICAg
IEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsK
LSAgICAtLWl0OyAvLyBMYXN0IGZsb2F0IGlzIG5ld0Zsb2F0LCBza2lwIHRoYXQgb25lLgotICAg
IEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgYmVnaW4gPSBmbG9hdGluZ09iamVjdFNldC5iZWdp
bigpOwotICAgIHdoaWxlIChpdCAhPSBiZWdpbikgewotICAgICAgICAtLWl0OwotICAgICAgICBG
bG9hdGluZ09iamVjdCogZiA9ICppdDsKLSAgICAgICAgaWYgKGYgPT0gbGFzdEZsb2F0RnJvbVBy
ZXZpb3VzTGluZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobG9naWNhbFRvcEZv
ckZsb2F0KGYpID09IGxvZ2ljYWxIZWlnaHQoKSkgewotICAgICAgICAgICAgQVNTRVJUKCFmLT5t
X3BhZ2luYXRpb25TdHJ1dCk7Ci0gICAgICAgICAgICBmLT5tX3BhZ2luYXRpb25TdHJ1dCA9IHBh
Z2luYXRpb25TdHJ1dDsKLSAgICAgICAgICAgIFJlbmRlckJveCogbyA9IGYtPm1fcmVuZGVyZXI7
Ci0gICAgICAgICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQobywgbG9naWNhbFRvcEZvckNoaWxk
KG8pICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQobykgKyBwYWdpbmF0aW9uU3RydXQpOwotICAgICAg
ICAgICAgaWYgKG8tPmlzUmVuZGVyQmxvY2soKSkKLSAgICAgICAgICAgICAgICB0b1JlbmRlckJs
b2NrKG8pLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIG8t
PmxheW91dElmTmVlZGVkKCk7Ci0gICAgICAgICAgICBzZXRMb2dpY2FsVG9wRm9yRmxvYXQoZiwg
bG9naWNhbFRvcEZvckZsb2F0KGYpICsgZi0+bV9wYWdpbmF0aW9uU3RydXQpOwotICAgICAgICB9
Ci0gICAgfQotICAgICAgICAKLSAgICBzZXRMb2dpY2FsSGVpZ2h0KGJsb2NrT2Zmc2V0ICsgcGFn
aW5hdGlvblN0cnV0KTsKLSAgICBsaW5lTGVmdE9mZnNldCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9y
TGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSk7Ci0gICAgbGluZVJpZ2h0T2Zmc2V0ID0g
bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSk7Ci0K
LSAgICByZXR1cm4gZGlkUG9zaXRpb247Ci19Ci0KIHZvaWQgUmVuZGVyQmxvY2s6Om5ld0xpbmUo
RUNsZWFyIGNsZWFyKQogewogICAgIHBvc2l0aW9uTmV3RmxvYXRzKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gODI5MDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQCBjbGFzcyBDb2x1bW5JbmZvOwogY2xhc3MgSW5saW5lSXRlcmF0b3I7CiBjbGFzcyBM
YXlvdXRTdGF0ZU1haW50YWluZXI7CiBjbGFzcyBMYXp5TGluZUJyZWFrSXRlcmF0b3I7CitjbGFz
cyBMaW5lT2Zmc2V0czsKIGNsYXNzIFJlbmRlcklubGluZTsKIAogc3RydWN0IEJpZGlSdW47CkBA
IC00OTMsNyArNDk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFJvb3RJ
bmxpbmVCb3gqJiBlbmRMaW5lLCBpbnQmIGVuZFlQb3MsIGludCYgcmVwYWludEJvdHRvbSwgaW50
JiByZXBhaW50VG9wKTsKIAogICAgIHZvaWQgc2tpcFRyYWlsaW5nV2hpdGVzcGFjZShJbmxpbmVJ
dGVyYXRvciYsIGJvb2wgaXNMaW5lRW1wdHksIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
KTsKLSAgICB2b2lkIHNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImLCBi
b29sIGZpcnN0TGluZSwgYm9vbCBpc0xpbmVFbXB0eSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNs
ZWFubHksIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBpbnQmIGxp
bmVMZWZ0T2Zmc2V0LCBpbnQmIGxpbmVSaWdodE9mZnNldCk7CisgICAgdm9pZCBza2lwTGVhZGlu
Z1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNM
aW5lRW1wdHksIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZU9mZnNldHMmKTsKICAgICB2b2lkIGZpdEJl
bG93RmxvYXRzKGZsb2F0IHdpZHRoVG9GaXQsIGZsb2F0IHRvdGFsT3ZlcmhhbmdXaWR0aCwgYm9v
bCBmaXJzdExpbmUsIGZsb2F0JiBhdmFpbGFibGVXaWR0aCk7CiAgICAgdHlwZWRlZiBzdGQ6OnBh
aXI8UmVuZGVyVGV4dCosIExhenlMaW5lQnJlYWtJdGVyYXRvcj4gTGluZUJyZWFrSXRlcmF0b3JJ
bmZvOwogICAgIElubGluZUl0ZXJhdG9yIGZpbmROZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNv
bHZlciYsIGJvb2wgZmlyc3RMaW5lLCBib29sJiBpc0xpbmVFbXB0eSwgTGluZUJyZWFrSXRlcmF0
b3JJbmZvJiwgYm9vbCYgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBib29sJiBoeXBoZW5hdGVk
LApAQCAtNTI2LDcgKzUyNyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUG9zaXRpb25zIG5l
dyBmbG9hdHMgYW5kIGFsc28gYWRqdXN0IGFsbCBmbG9hdHMgZW5jb3VudGVyZWQgb24gdGhlIGxp
bmUgaWYgYW55IG9mIHRoZW0KICAgICAvLyBoYXZlIHRvIG1vdmUgdG8gdGhlIG5leHQgcGFnZS9j
b2x1bW4uCi0gICAgYm9vbCBwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKEZsb2F0aW5nT2JqZWN0KiBu
ZXdGbG9hdCwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGJvb2wg
Zmlyc3RMaW5lLCBpbnQmIGxpbmVMZWZ0T2Zmc2V0LCBpbnQmIGxpbmVSaWdodE9mZnNldCk7Cisg
ICAgYm9vbCBwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9hdCwg
RmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lT2Zmc2V0cyYpOwogCiAgICAgdm9pZCBjbGVhckZsb2F0cygpOwogICAgIGludCBnZXRD
bGVhckRlbHRhKFJlbmRlckJveCogY2hpbGQsIGludCB5UG9zKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShyZXZpc2lv
biA4MjkwNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlv
dXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMSArNjAsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gV2UgZG9uJ3QgbGV0IG91ciBsaW5lIGJveCB0cmVlIGZvciBhIHNpbmdsZSBsaW5l
IGdldCBhbnkgZGVlcGVyIHRoYW4gdGhpcy4KIGNvbnN0IHVuc2lnbmVkIGNNYXhMaW5lRGVwdGgg
PSAyMDA7CiAKLXN0YXRpYyBpbnQgZ2V0Qm9yZGVyUGFkZGluZ01hcmdpbihSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY2hpbGQsIGJvb2wgZW5kT2ZJbmxpbmUpCitzdGF0aWMgaW5saW5lIGludCBib3Jk
ZXJQYWRkaW5nTWFyZ2luU3RhcnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKIHsKLSAg
ICBpZiAoZW5kT2ZJbmxpbmUpCi0gICAgICAgIHJldHVybiBjaGlsZC0+bWFyZ2luRW5kKCkgKyBj
aGlsZC0+cGFkZGluZ0VuZCgpICsgY2hpbGQtPmJvcmRlckVuZCgpOwotICAgIHJldHVybiBjaGls
ZC0+bWFyZ2luU3RhcnQoKSArIGNoaWxkLT5wYWRkaW5nU3RhcnQoKSArIGNoaWxkLT5ib3JkZXJT
dGFydCgpOworICAgIHJldHVybiBvYmplY3QtPm1hcmdpblN0YXJ0KCkgKyBvYmplY3QtPnBhZGRp
bmdTdGFydCgpICsgb2JqZWN0LT5ib3JkZXJTdGFydCgpOworfQorCitzdGF0aWMgaW5saW5lIGlu
dCBib3JkZXJQYWRkaW5nTWFyZ2luRW5kKFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QpCit7
CisgICAgcmV0dXJuIG9iamVjdC0+bWFyZ2luRW5kKCkgKyBvYmplY3QtPnBhZGRpbmdFbmQoKSAr
IG9iamVjdC0+Ym9yZGVyRW5kKCk7CiB9CiAKIHN0YXRpYyBpbnQgaW5saW5lTG9naWNhbFdpZHRo
KFJlbmRlck9iamVjdCogY2hpbGQsIGJvb2wgc3RhcnQgPSB0cnVlLCBib29sIGVuZCA9IHRydWUp
CkBAIC03NCw5ICs3Nyw5IEBAIHN0YXRpYyBpbnQgaW5saW5lTG9naWNhbFdpZHRoKFJlbmRlck9i
amUKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKICAgICB3aGls
ZSAocGFyZW50LT5pc0lubGluZSgpICYmICFwYXJlbnQtPmlzSW5saW5lQmxvY2tPcklubGluZVRh
YmxlKCkgJiYgbGluZURlcHRoKysgPCBjTWF4TGluZURlcHRoKSB7CiAgICAgICAgIGlmIChzdGFy
dCAmJiAhY2hpbGQtPnByZXZpb3VzU2libGluZygpKQotICAgICAgICAgICAgZXh0cmFXaWR0aCAr
PSBnZXRCb3JkZXJQYWRkaW5nTWFyZ2luKHRvUmVuZGVyQm94TW9kZWxPYmplY3QocGFyZW50KSwg
ZmFsc2UpOworICAgICAgICAgICAgZXh0cmFXaWR0aCArPSBib3JkZXJQYWRkaW5nTWFyZ2luU3Rh
cnQodG9SZW5kZXJCb3hNb2RlbE9iamVjdChwYXJlbnQpKTsKICAgICAgICAgaWYgKGVuZCAmJiAh
Y2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICBleHRyYVdpZHRoICs9IGdldEJvcmRl
clBhZGRpbmdNYXJnaW4odG9SZW5kZXJCb3hNb2RlbE9iamVjdChwYXJlbnQpLCB0cnVlKTsKKyAg
ICAgICAgICAgIGV4dHJhV2lkdGggKz0gYm9yZGVyUGFkZGluZ01hcmdpbkVuZCh0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KHBhcmVudCkpOwogICAgICAgICBjaGlsZCA9IHBhcmVudDsKICAgICAgICAg
cGFyZW50ID0gY2hpbGQtPnBhcmVudCgpOwogICAgIH0KQEAgLTU5MiwxMiArNTk1LDE1IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja0RpcmVjdGlvblAKICAgICBsaW5lQm94LT5tYXJr
RGlydHkoZmFsc2UpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFy
IGNoYXJhY3RlciwgYm9vbCBzaG91bGRQcmVzZXJ2ZU5ld2xpbmUpCit7CisgICAgcmV0dXJuIGNo
YXJhY3RlciA9PSAnICcgfHwgY2hhcmFjdGVyID09ICdcdCcgfHwgKCFzaG91bGRQcmVzZXJ2ZU5l
d2xpbmUgJiYgY2hhcmFjdGVyID09ICdcbicpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b2xsYXBzaWJsZVNwYWNlKFVDaGFyIGNoYXJhY3RlciwgUmVuZGVyVGV4dCogcmVuZGVyZXIpCiB7
Ci0gICAgaWYgKGNoYXJhY3RlciA9PSAnICcgfHwgY2hhcmFjdGVyID09ICdcdCcgfHwgY2hhcmFj
dGVyID09IHNvZnRIeXBoZW4pCisgICAgaWYgKGlzV2hpdGVzcGFjZShjaGFyYWN0ZXIsIHJlbmRl
cmVyLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgfHwgY2hhcmFjdGVyID09IHNvZnRIeXBo
ZW4pCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjaGFyYWN0ZXIgPT0gJ1xuJykKLSAg
ICAgICAgcmV0dXJuICFyZW5kZXJlci0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCk7CiAgICAg
aWYgKGNoYXJhY3RlciA9PSBub0JyZWFrU3BhY2UpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+
c3R5bGUoKS0+bmJzcE1vZGUoKSA9PSBTUEFDRTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDUy
LDEyICsxNDU4LDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNraXBUcmFpbGluZ1doaXRlc3BhY2UK
IH0KIAogdm9pZCBSZW5kZXJCbG9jazo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGluZUJpZGlS
ZXNvbHZlciYgcmVzb2x2ZXIsIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzTGluZUVtcHR5LCBib29s
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBpbnQm
IGxpbmVMZWZ0T2Zmc2V0LCBpbnQmIGxpbmVSaWdodE9mZnNldCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlv
dXNMaW5lLCBMaW5lT2Zmc2V0cyYgbGluZU9mZnNldHMpCiB7CiAgICAgd2hpbGUgKCFyZXNvbHZl
ci5wb3NpdGlvbigpLmF0RW5kKCkgJiYgIXJlcXVpcmVzTGluZUJveChyZXNvbHZlci5wb3NpdGlv
bigpLCBpc0xpbmVFbXB0eSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KSkgewogICAgICAgICBS
ZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlc29sdmVyLnBvc2l0aW9uKCkubV9vYmo7CiAgICAgICAg
IGlmIChvYmplY3QtPmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgIHBvc2l0aW9uTmV3RmxvYXRP
bkxpbmUoaW5zZXJ0RmxvYXRpbmdPYmplY3QodG9SZW5kZXJCb3gob2JqZWN0KSksIGxhc3RGbG9h
dEZyb21QcmV2aW91c0xpbmUsIGZpcnN0TGluZSwgbGluZUxlZnRPZmZzZXQsIGxpbmVSaWdodE9m
ZnNldCk7CisgICAgICAgICAgICBwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKGluc2VydEZsb2F0aW5n
T2JqZWN0KHRvUmVuZGVyQm94KG9iamVjdCkpLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBm
aXJzdExpbmUsIGxpbmVPZmZzZXRzKTsKICAgICAgICAgZWxzZSBpZiAob2JqZWN0LT5pc1Bvc2l0
aW9uZWQoKSkKICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyh0aGlzLCB0b1JlbmRlckJv
eChvYmplY3QpKTsKICAgICAgICAgcmVzb2x2ZXIuaW5jcmVtZW50KCk7CkBAIC0xNTU4LDYgKzE1
NjQsMjEgQEAgc3RhdGljIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCogdAogICAgIGh5
cGhlbmF0ZWQgPSB0cnVlOwogfQogCitjbGFzcyBMaW5lT2Zmc2V0cyB7CitwdWJsaWM6CisgICAg
TGluZU9mZnNldHMoaW50IGxlZnRPZmZzZXQsIGludCByaWdodE9mZnNldCkKKyAgICAgICAgOiBt
X2xlZnQobGVmdE9mZnNldCkKKyAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0T2Zmc2V0KQorICAgIHsK
KyAgICB9CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbWF4KDAsIG1fcmlnaHQgLSBt
X2xlZnQpOyB9CisgICAgdm9pZCBzZXRMZWZ0KGludCBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0K
KyAgICB2b2lkIHNldFJpZ2h0KGludCByaWdodCkgeyBtX3JpZ2h0ID0gcmlnaHQ7IH0KK3ByaXZh
dGU6CisgICAgaW50IG1fbGVmdDsKKyAgICBpbnQgbV9yaWdodDsKK307CisKIElubGluZUl0ZXJh
dG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyLCBib29sIGZpcnN0TGluZSwgYm9vbCYgaXNMaW5lRW1wdHksIExpbmVCcmVha0l0ZXJh
dG9ySW5mbyYgbGluZUJyZWFrSXRlcmF0b3JJbmZvLCBib29sJiBwcmV2aW91c0xpbmVCcm9rZUNs
ZWFubHksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wmIGh5cGhlbmF0ZWQsIEVDbGVhciogY2xlYXIsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRG
cm9tUHJldmlvdXNMaW5lLCBWZWN0b3I8UmVuZGVyQm94Kj4mIHBvc2l0aW9uZWRCb3hlcykKIHsK
QEAgLTE1NjcsMTIgKzE1ODgsMTEgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmRO
ZXh0TGluZQogICAgIExpbmVNaWRwb2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSA9IHJlc29s
dmVyLm1pZHBvaW50U3RhdGUoKTsKICAgICAKICAgICBpbnQgYmxvY2tPZmZzZXQgPSBsb2dpY2Fs
SGVpZ2h0KCk7Ci0gICAgaW50IGxpbmVMZWZ0T2Zmc2V0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JM
aW5lKGJsb2NrT2Zmc2V0LCBmaXJzdExpbmUpOwotICAgIGludCBsaW5lUmlnaHRPZmZzZXQgPSBs
b2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0LCBmaXJzdExpbmUpOwotICAgIAot
ICAgIHNraXBMZWFkaW5nV2hpdGVzcGFjZShyZXNvbHZlciwgZmlyc3RMaW5lLCBpc0xpbmVFbXB0
eSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBs
aW5lTGVmdE9mZnNldCwgbGluZVJpZ2h0T2Zmc2V0KTsKKyAgICBMaW5lT2Zmc2V0cyBsaW5lT2Zm
c2V0cyhsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIGZpcnN0TGluZSksIGxv
Z2ljYWxSaWdodE9mZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIGZpcnN0TGluZSkpOworCisgICAg
c2tpcExlYWRpbmdXaGl0ZXNwYWNlKHJlc29sdmVyLCBmaXJzdExpbmUsIGlzTGluZUVtcHR5LCBw
cmV2aW91c0xpbmVCcm9rZUNsZWFubHksIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGxpbmVP
ZmZzZXRzKTsKIAotICAgIGZsb2F0IHdpZHRoID0gbWF4KDAsIGxpbmVSaWdodE9mZnNldCAtIGxp
bmVMZWZ0T2Zmc2V0KTsKKyAgICBmbG9hdCB3aWR0aCA9IGxpbmVPZmZzZXRzLndpZHRoKCk7CiAg
ICAgZmxvYXQgdyA9IDA7CiAgICAgZmxvYXQgdG1wVyA9IDA7CiAgICAgLy8gVGhlIGFtb3VudCBi
eSB3aGljaCB8d2lkdGh8IGhhcyBiZWVuIGluZmxhdGVkIHRvIGFjY291bnQgZm9yIHBvc3NpYmxl
IGNvbnRyYWN0aW9uIGR1ZSB0byBydWJ5IG92ZXJoYW5nLgpAQCAtMTY2Niw4ICsxNjg2LDggQEAg
SW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICAgICAgICAg
IC8vIElmIGl0IGRvZXMsIHBvc2l0aW9uIGl0IG5vdywgb3RoZXJ3aXNlLCBwb3NpdGlvbgogICAg
ICAgICAgICAgICAgIC8vIGl0IGFmdGVyIG1vdmluZyB0byBuZXh0IGxpbmUgKGluIG5ld0xpbmUo
KSBmdW5jKQogICAgICAgICAgICAgICAgIGlmIChmbG9hdHNGaXRPbkxpbmUgJiYgbG9naWNhbFdp
ZHRoRm9yRmxvYXQoZikgKyB3ICsgdG1wVyA8PSB3aWR0aCkgewotICAgICAgICAgICAgICAgICAg
ICBwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKGYsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGZp
cnN0TGluZSwgbGluZUxlZnRPZmZzZXQsIGxpbmVSaWdodE9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHdpZHRoID0gbWF4KDAsIGxpbmVSaWdodE9mZnNldCAtIGxpbmVMZWZ0T2Zmc2V0KSAr
IHRvdGFsT3ZlcmhhbmdXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9h
dE9uTGluZShmLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBmaXJzdExpbmUsIGxpbmVPZmZz
ZXRzKTsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBsaW5lT2Zmc2V0cy53aWR0aCgpICsg
dG90YWxPdmVyaGFuZ1dpZHRoOwogICAgICAgICAgICAgICAgICAgICBpZiAobEJyZWFrLm1fb2Jq
ID09IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbEJyZWFrLm1fcG9zKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxCcmVhay5pbmNyZW1lbnQoKTsKQEAgLTE3MjgsOCAr
MTc0OCw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRtcFcgKz0gZmxvd0Jv
eC0+bWFyZ2luU3RhcnQoKSArIGZsb3dCb3gtPmJvcmRlclN0YXJ0KCkgKyBmbG93Qm94LT5wYWRk
aW5nU3RhcnQoKSArCi0gICAgICAgICAgICAgICAgICAgIGZsb3dCb3gtPm1hcmdpbkVuZCgpICsg
Zmxvd0JveC0+Ym9yZGVyRW5kKCkgKyBmbG93Qm94LT5wYWRkaW5nRW5kKCk7CisgICAgICAgICAg
ICB0bXBXICs9IGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydChmbG93Qm94KSArIGJvcmRlclBhZGRp
bmdNYXJnaW5FbmQoZmxvd0JveCk7CiAgICAgICAgIH0gZWxzZSBpZiAoby0+aXNSZXBsYWNlZCgp
KSB7CiAgICAgICAgICAgICBSZW5kZXJCb3gqIHJlcGxhY2VkQm94ID0gdG9SZW5kZXJCb3gobyk7
CiAKQEAgLTE4MjgsNyArMTg0Nyw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5k
TmV4dExpbmUKICAgICAgICAgICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVySXNTcGFjZSA9
IGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlOwogICAgICAgICAgICAgICAgIGJvb2wgcHJldmlvdXND
aGFyYWN0ZXJJc1dTID0gY3VycmVudENoYXJhY3RlcklzV1M7CiAgICAgICAgICAgICAgICAgVUNo
YXIgYyA9IHN0cltwb3NdOwotICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNl
ID0gYyA9PSAnICcgfHwgYyA9PSAnXHQnIHx8ICghcHJlc2VydmVOZXdsaW5lICYmIChjID09ICdc
bicpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSA9IGlzV2hpdGVz
cGFjZShjLCBwcmVzZXJ2ZU5ld2xpbmUpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFjb2xsYXBz
ZVdoaXRlU3BhY2UgfHwgIWN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKQogICAgICAgICAgICAgICAg
ICAgICBpc0xpbmVFbXB0eSA9IGZhbHNlOwpAQCAtMjA1NiwxMiArMjA3NSwxMiBAQCBJbmxpbmVJ
dGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrRm9yQnJlYWsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogbmV4
dFRleHQgPSB0b1JlbmRlclRleHQobmV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0
VGV4dC0+dGV4dExlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBVQ2hhciBjID0g
bmV4dFRleHQtPmNoYXJhY3RlcnMoKVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
ID09ICcgJyB8fCBjID09ICdcdCcgfHwgKGMgPT0gJ1xuJyAmJiAhc2hvdWxkUHJlc2VydmVOZXds
aW5lKG5leHQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UobmV4
dFRleHQtPmNoYXJhY3RlcnMoKVswXSwgc2hvdWxkUHJlc2VydmVOZXdsaW5lKG5leHQpKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBuZXh0IGl0ZW0gb24gdGhlIGxp
bmUgaXMgdGV4dCwgYW5kIGlmIHdlIGRpZCBub3QgZW5kIHdpdGgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhIHNwYWNlLCB0aGVuIHRoZSBuZXh0IHRleHQgcnVuIGNvbnRpbnVlcyBv
dXIgd29yZCAoYW5kIHNvIGl0IG5lZWRzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8ga2VlcCBhZGRpbmcgdG8gfHRtcFd8LiAgSnVzdCB1cGRhdGUgYW5kIGNvbnRpbnVlLgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrRm9yQnJlYWsgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5leHRUZXh0
LT5pc1dvcmRCcmVhaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tGb3JCcmVhayA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgd2lsbEZpdE9uTGluZSA9IHcgKyB0bXBX
IDw9IHdpZHRoOwpAQCAtMjE4NCw2ICsyMjAzLDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxv
Y2s6OmZpbmROZXh0TGluZQogICAgICAgICAgICAgSW5saW5lSXRlcmF0b3IgZW5kTWlkKDAsIHRy
YWlsaW5nU3BhY2VPYmplY3QsIHBvcyk7CiAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlk
cG9pbnRTdGF0ZSwgZW5kTWlkKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dHJhaWxpbmdQb3NpdGlvbmVkQm94ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBJ
bmxpbmVJdGVyYXRvciBpZ25vcmVTdGFydDsKICAgICAgICAgICAgICAgICBpZ25vcmVTdGFydC5t
X29iaiA9IHRyYWlsaW5nUG9zaXRpb25lZEJveGVzW2ldOwogICAgICAgICAgICAgICAgIGlnbm9y
ZVN0YXJ0Lm1fcG9zID0gMDsKICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9p
bnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdG9wIGlnbm9yaW5nIHNwYWNlcy4KQEAgLTIyNTYs
NCArMjI3Niw1OCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmCiAg
ICAgfQogfQogCitib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKEZsb2F0
aW5nT2JqZWN0KiBuZXdGbG9hdCwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91
c0xpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lT2Zmc2V0cyYgbGluZU9mZnNldHMpCit7CisgICAg
Ym9vbCBkaWRQb3NpdGlvbiA9IHBvc2l0aW9uTmV3RmxvYXRzKCk7CisgICAgaWYgKCFkaWRQb3Np
dGlvbikKKyAgICAgICAgcmV0dXJuIGRpZFBvc2l0aW9uOworCisgICAgaW50IGJsb2NrT2Zmc2V0
ID0gbG9naWNhbEhlaWdodCgpOworICAgIGlmICghbmV3RmxvYXQtPm1fcGFnaW5hdGlvblN0cnV0
KSB7CisgICAgICAgIGlmIChibG9ja09mZnNldCA+PSBsb2dpY2FsVG9wRm9yRmxvYXQobmV3Rmxv
YXQpICYmIGJsb2NrT2Zmc2V0IDwgbG9naWNhbEJvdHRvbUZvckZsb2F0KG5ld0Zsb2F0KSkgewor
ICAgICAgICAgICAgaWYgKG5ld0Zsb2F0LT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0
TGVmdCkKKyAgICAgICAgICAgICAgICBsaW5lT2Zmc2V0cy5zZXRMZWZ0KGxvZ2ljYWxSaWdodEZv
ckZsb2F0KG5ld0Zsb2F0KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGlu
ZU9mZnNldHMuc2V0UmlnaHQobG9naWNhbExlZnRGb3JGbG9hdChuZXdGbG9hdCkpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGRpZFBvc2l0aW9uOworICAgIH0KKworICAgIEZsb2F0aW5n
T2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsK
KyAgICBBU1NFUlQoZmxvYXRpbmdPYmplY3RTZXQubGFzdCgpID09IG5ld0Zsb2F0KTsKKworICAg
IGludCBmbG9hdExvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wRm9yRmxvYXQobmV3RmxvYXQpOworICAg
IGludCBwYWdpbmF0aW9uU3RydXQgPSBuZXdGbG9hdC0+bV9wYWdpbmF0aW9uU3RydXQ7CisKKyAg
ICBpZiAoZmxvYXRMb2dpY2FsVG9wIC0gcGFnaW5hdGlvblN0cnV0ICE9IGxvZ2ljYWxIZWlnaHQo
KSkKKyAgICAgICAgcmV0dXJuIGRpZFBvc2l0aW9uOworCisgICAgRmxvYXRpbmdPYmplY3RTZXRJ
dGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOworICAgIC0taXQ7IC8vIExhc3Qg
ZmxvYXQgaXMgbmV3RmxvYXQsIHNraXAgdGhhdCBvbmUuCisgICAgRmxvYXRpbmdPYmplY3RTZXRJ
dGVyYXRvciBiZWdpbiA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7CisgICAgd2hpbGUgKGl0
ICE9IGJlZ2luKSB7CisgICAgICAgIC0taXQ7CisgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmID0g
Kml0OworICAgICAgICBpZiAoZiA9PSBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsb2dpY2FsVG9wRm9yRmxvYXQoZikgPT0gbG9naWNh
bEhlaWdodCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoIWYtPm1fcGFnaW5hdGlvblN0cnV0KTsK
KyAgICAgICAgICAgIGYtPm1fcGFnaW5hdGlvblN0cnV0ID0gcGFnaW5hdGlvblN0cnV0OworICAg
ICAgICAgICAgUmVuZGVyQm94KiBvID0gZi0+bV9yZW5kZXJlcjsKKyAgICAgICAgICAgIHNldExv
Z2ljYWxUb3BGb3JDaGlsZChvLCBsb2dpY2FsVG9wRm9yQ2hpbGQobykgKyBtYXJnaW5CZWZvcmVG
b3JDaGlsZChvKSArIHBhZ2luYXRpb25TdHJ1dCk7CisgICAgICAgICAgICBpZiAoby0+aXNSZW5k
ZXJCbG9jaygpKQorICAgICAgICAgICAgICAgIHRvUmVuZGVyQmxvY2sobyktPnNldENoaWxkTmVl
ZHNMYXlvdXQodHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgby0+bGF5b3V0SWZOZWVkZWQoKTsK
KyAgICAgICAgICAgIHNldExvZ2ljYWxUb3BGb3JGbG9hdChmLCBsb2dpY2FsVG9wRm9yRmxvYXQo
ZikgKyBmLT5tX3BhZ2luYXRpb25TdHJ1dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRM
b2dpY2FsSGVpZ2h0KGJsb2NrT2Zmc2V0ICsgcGFnaW5hdGlvblN0cnV0KTsKKyAgICBsaW5lT2Zm
c2V0cy5zZXRMZWZ0KGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZp
cnN0TGluZSkpOworICAgIGxpbmVPZmZzZXRzLnNldFJpZ2h0KGxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUpKTsKKworICAgIHJldHVybiBkaWRQb3Np
dGlvbjsKK30KKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88413</attachid>
            <date>2011-04-06 07:28:56 -0700</date>
            <delta_ts>2011-04-06 11:34:27 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-57851-20110406172853.patch</filename>
            <type>text/plain</type>
            <size>8736</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMDQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDQtMDYgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVuZGxlIGxpbmVMZWZ0T2Zmc2V0IGFuZCBsaW5lUmlnaHRPZmZz
ZXQgYXMgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTc4NTEKKworICAgICAgICBBZGRlZCBhIG5ldyBjbGFzcyBMaW5lT2Zmc2V0cyB0aGF0
IGVuY2Fwc3VsYXRlcyBsaW5lTGVmdE9mZnNldCBhbmQgbGluZVJpZ2h0T2Zmc2V0LgorICAgICAg
ICBUaGUgcGF0Y2ggbWFrZXMgY2xlYXIgdGhhdCBsaW5lTGVmdE9mZnNldCBhbmQgbGluZVJpZ2h0
T2Zmc2V0IGFyZSBuZXZlciByZWFkIGluZGl2aWR1YWxseQorICAgICAgICBhbmQgb25seSB0aGUg
ZGlmZmVyZW5jZSBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIHdpZHRoLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2tpcExlYWRpbmdX
aGl0ZXNwYWNlKTogVGFrZXMgTGluZU9mZnNldHMgaW5zdGVhZCBvZiB0d28gaW50ZWdlcnMuCisg
ICAgICAgIChXZWJDb3JlOjpMaW5lT2Zmc2V0czo6TGluZU9mZnNldHMpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVPZmZzZXRzOjp3aWR0aCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGluZU9mZnNldHM6OnNldExlZnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVP
ZmZzZXRzOjpzZXRSaWdodCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OmZpbmROZXh0TGluZUJyZWFrKTogQ2FsbHMgc2tpcExlYWRpbmdXaGl0ZXNwYWNlIGFuZCBwb3Np
dGlvbk5ld0Zsb2F0T25MaW5lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0
aW9uTmV3RmxvYXRPbkxpbmUpOiBUYWtlcyBMaW5lT2Zmc2V0cyBpbnN0ZWFkIG9mIHR3byBpbnRl
Z2Vycy4KKwogMjAxMS0wNC0wNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDgzMDQyKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAgY2xhc3MgQ29sdW1uSW5mbzsKIGNsYXNzIElubGluZUl0ZXJhdG9yOwogY2xhc3MgTGF5b3V0
U3RhdGVNYWludGFpbmVyOwogY2xhc3MgTGF6eUxpbmVCcmVha0l0ZXJhdG9yOworY2xhc3MgTGlu
ZU9mZnNldHM7CiBjbGFzcyBSZW5kZXJJbmxpbmU7CiAKIHN0cnVjdCBCaWRpUnVuOwpAQCAtNDkz
LDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBSb290SW5saW5l
Qm94KiYgZW5kTGluZSwgaW50JiBlbmRZUG9zLCBpbnQmIHJlcGFpbnRCb3R0b20sIGludCYgcmVw
YWludFRvcCk7CiAKICAgICB2b2lkIHNraXBUcmFpbGluZ1doaXRlc3BhY2UoSW5saW5lSXRlcmF0
b3ImLCBib29sIGlzTGluZUVtcHR5LCBib29sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7Ci0g
ICAgdm9pZCBza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiwgYm9vbCBm
aXJzdExpbmUsIGJvb2wgaXNMaW5lRW1wdHksIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
LCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgaW50JiBsaW5lTGVm
dE9mZnNldCwgaW50JiBsaW5lUmlnaHRPZmZzZXQpOworICAgIHZvaWQgc2tpcExlYWRpbmdXaGl0
ZXNwYWNlKElubGluZUJpZGlSZXNvbHZlciYsIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzTGluZUVt
cHR5LCBib29sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwgRmxvYXRpbmdPYmplY3QqIGxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUsIExpbmVPZmZzZXRzJik7CiAgICAgdm9pZCBmaXRCZWxvd0Zs
b2F0cyhmbG9hdCB3aWR0aFRvRml0LCBmbG9hdCB0b3RhbE92ZXJoYW5nV2lkdGgsIGJvb2wgZmly
c3RMaW5lLCBmbG9hdCYgYXZhaWxhYmxlV2lkdGgpOwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPFJl
bmRlclRleHQqLCBMYXp5TGluZUJyZWFrSXRlcmF0b3I+IExpbmVCcmVha0l0ZXJhdG9ySW5mbzsK
ICAgICBJbmxpbmVJdGVyYXRvciBmaW5kTmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXIm
LCBib29sIGZpcnN0TGluZSwgYm9vbCYgaXNMaW5lRW1wdHksIExpbmVCcmVha0l0ZXJhdG9ySW5m
byYsIGJvb2wmIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwgYm9vbCYgaHlwaGVuYXRlZCwKQEAg
LTUyNiw3ICs1MjcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFBvc2l0aW9ucyBuZXcgZmxv
YXRzIGFuZCBhbHNvIGFkanVzdCBhbGwgZmxvYXRzIGVuY291bnRlcmVkIG9uIHRoZSBsaW5lIGlm
IGFueSBvZiB0aGVtCiAgICAgLy8gaGF2ZSB0byBtb3ZlIHRvIHRoZSBuZXh0IHBhZ2UvY29sdW1u
LgotICAgIGJvb2wgcG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVjdCogbmV3Rmxv
YXQsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBib29sIGZpcnN0
TGluZSwgaW50JiBsaW5lTGVmdE9mZnNldCwgaW50JiBsaW5lUmlnaHRPZmZzZXQpOworICAgIGJv
b2wgcG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVjdCogbmV3RmxvYXQsIEZsb2F0
aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBib29sIGZpcnN0TGluZSwgTGlu
ZU9mZnNldHMmKTsKIAogICAgIHZvaWQgY2xlYXJGbG9hdHMoKTsKICAgICBpbnQgZ2V0Q2xlYXJE
ZWx0YShSZW5kZXJCb3gqIGNoaWxkLCBpbnQgeVBvcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gODMw
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ0MiwxMiArMTQ0MiwxMiBAQCB2b2lkIFJlbmRlckJsb2Nr
Ojpza2lwVHJhaWxpbmdXaGl0ZXNwYWNlCiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnNraXBMZWFk
aW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBib29sIGZpcnN0TGlu
ZSwgYm9vbCBpc0xpbmVFbXB0eSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogbGFzdEZs
b2F0RnJvbVByZXZpb3VzTGluZSwgaW50JiBsaW5lTGVmdE9mZnNldCwgaW50JiBsaW5lUmlnaHRP
ZmZzZXQpCisgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIExp
bmVPZmZzZXRzJiBsaW5lT2Zmc2V0cykKIHsKICAgICB3aGlsZSAoIXJlc29sdmVyLnBvc2l0aW9u
KCkuYXRFbmQoKSAmJiAhcmVxdWlyZXNMaW5lQm94KHJlc29sdmVyLnBvc2l0aW9uKCksIGlzTGlu
ZUVtcHR5LCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpKSB7CiAgICAgICAgIFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVzb2x2ZXIucG9zaXRpb24oKS5tX29iajsKICAgICAgICAgaWYgKG9iamVj
dC0+aXNGbG9hdGluZygpKQotICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9hdE9uTGluZShpbnNl
cnRGbG9hdGluZ09iamVjdCh0b1JlbmRlckJveChvYmplY3QpKSwgbGFzdEZsb2F0RnJvbVByZXZp
b3VzTGluZSwgZmlyc3RMaW5lLCBsaW5lTGVmdE9mZnNldCwgbGluZVJpZ2h0T2Zmc2V0KTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoaW5zZXJ0RmxvYXRpbmdPYmplY3QodG9S
ZW5kZXJCb3gob2JqZWN0KSksIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGZpcnN0TGluZSwg
bGluZU9mZnNldHMpOwogICAgICAgICBlbHNlIGlmIChvYmplY3QtPmlzUG9zaXRpb25lZCgpKQog
ICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKHRoaXMsIHRvUmVuZGVyQm94KG9iamVjdCkp
OwogICAgICAgICByZXNvbHZlci5pbmNyZW1lbnQoKTsKQEAgLTE1NDgsNiArMTU0OCwyMSBAQCBz
dGF0aWMgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0KiB0CiAgICAgaHlwaGVuYXRlZCA9
IHRydWU7CiB9CiAKK2NsYXNzIExpbmVPZmZzZXRzIHsKK3B1YmxpYzoKKyAgICBMaW5lT2Zmc2V0
cyhpbnQgbGVmdE9mZnNldCwgaW50IHJpZ2h0T2Zmc2V0KQorICAgIDogbV9sZWZ0KGxlZnRPZmZz
ZXQpCisgICAgLCBtX3JpZ2h0KHJpZ2h0T2Zmc2V0KQorICAgIHsKKyAgICB9CisgICAgaW50IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbWF4KDAsIG1fcmlnaHQgLSBtX2xlZnQpOyB9CisgICAgdm9p
ZCBzZXRMZWZ0KGludCBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KKyAgICB2b2lkIHNldFJpZ2h0
KGludCByaWdodCkgeyBtX3JpZ2h0ID0gcmlnaHQ7IH0KK3ByaXZhdGU6CisgICAgaW50IG1fbGVm
dDsKKyAgICBpbnQgbV9yaWdodDsKK307CisKIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpm
aW5kTmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBib29sIGZpcnN0
TGluZSwgYm9vbCYgaXNMaW5lRW1wdHksIExpbmVCcmVha0l0ZXJhdG9ySW5mbyYgbGluZUJyZWFr
SXRlcmF0b3JJbmZvLCBib29sJiBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHksIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGh5cGhlbmF0ZWQsIEVD
bGVhciogY2xlYXIsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBW
ZWN0b3I8UmVuZGVyQm94Kj4mIHBvc2l0aW9uZWRCb3hlcykKIHsKQEAgLTE1NTcsMTIgKzE1NzIs
MTEgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgIExpbmVN
aWRwb2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSA9IHJlc29sdmVyLm1pZHBvaW50U3RhdGUo
KTsKICAgICAKICAgICBpbnQgYmxvY2tPZmZzZXQgPSBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgaW50
IGxpbmVMZWZ0T2Zmc2V0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0LCBm
aXJzdExpbmUpOwotICAgIGludCBsaW5lUmlnaHRPZmZzZXQgPSBsb2dpY2FsUmlnaHRPZmZzZXRG
b3JMaW5lKGJsb2NrT2Zmc2V0LCBmaXJzdExpbmUpOwotICAgIAotICAgIHNraXBMZWFkaW5nV2hp
dGVzcGFjZShyZXNvbHZlciwgZmlyc3RMaW5lLCBpc0xpbmVFbXB0eSwgcHJldmlvdXNMaW5lQnJv
a2VDbGVhbmx5LCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBsaW5lTGVmdE9mZnNldCwgbGlu
ZVJpZ2h0T2Zmc2V0KTsKKyAgICBMaW5lT2Zmc2V0cyBsaW5lT2Zmc2V0cyhsb2dpY2FsTGVmdE9m
ZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIGZpcnN0TGluZSksIGxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUoYmxvY2tPZmZzZXQsIGZpcnN0TGluZSkpOworCisgICAgc2tpcExlYWRpbmdXaGl0ZXNw
YWNlKHJlc29sdmVyLCBmaXJzdExpbmUsIGlzTGluZUVtcHR5LCBwcmV2aW91c0xpbmVCcm9rZUNs
ZWFubHksIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGxpbmVPZmZzZXRzKTsKIAotICAgIGZs
b2F0IHdpZHRoID0gbWF4KDAsIGxpbmVSaWdodE9mZnNldCAtIGxpbmVMZWZ0T2Zmc2V0KTsKKyAg
ICBmbG9hdCB3aWR0aCA9IGxpbmVPZmZzZXRzLndpZHRoKCk7CiAgICAgZmxvYXQgdyA9IDA7CiAg
ICAgZmxvYXQgdG1wVyA9IDA7CiAgICAgLy8gVGhlIGFtb3VudCBieSB3aGljaCB8d2lkdGh8IGhh
cyBiZWVuIGluZmxhdGVkIHRvIGFjY291bnQgZm9yIHBvc3NpYmxlIGNvbnRyYWN0aW9uIGR1ZSB0
byBydWJ5IG92ZXJoYW5nLgpAQCAtMTY1Niw4ICsxNjcwLDggQEAgSW5saW5lSXRlcmF0b3IgUmVu
ZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICAgICAgICAgIC8vIElmIGl0IGRvZXMsIHBv
c2l0aW9uIGl0IG5vdywgb3RoZXJ3aXNlLCBwb3NpdGlvbgogICAgICAgICAgICAgICAgIC8vIGl0
IGFmdGVyIG1vdmluZyB0byBuZXh0IGxpbmUgKGluIG5ld0xpbmUoKSBmdW5jKQogICAgICAgICAg
ICAgICAgIGlmIChmbG9hdHNGaXRPbkxpbmUgJiYgbG9naWNhbFdpZHRoRm9yRmxvYXQoZikgKyB3
ICsgdG1wVyA8PSB3aWR0aCkgewotICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk5ld0Zsb2F0
T25MaW5lKGYsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGZpcnN0TGluZSwgbGluZUxlZnRP
ZmZzZXQsIGxpbmVSaWdodE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4
KDAsIGxpbmVSaWdodE9mZnNldCAtIGxpbmVMZWZ0T2Zmc2V0KSArIHRvdGFsT3ZlcmhhbmdXaWR0
aDsKKyAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9hdE9uTGluZShmLCBsYXN0Rmxv
YXRGcm9tUHJldmlvdXNMaW5lLCBmaXJzdExpbmUsIGxpbmVPZmZzZXRzKTsKKyAgICAgICAgICAg
ICAgICAgICAgd2lkdGggPSBsaW5lT2Zmc2V0cy53aWR0aCgpICsgdG90YWxPdmVyaGFuZ1dpZHRo
OwogICAgICAgICAgICAgICAgICAgICBpZiAobEJyZWFrLm1fb2JqID09IG8pIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghbEJyZWFrLm1fcG9zKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxCcmVhay5pbmNyZW1lbnQoKTsKQEAgLTIyNDQsNyArMjI1OCw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmNoZWNrTGluZXNGb3JUZXh0T3ZlcmYKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVy
QmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0LCBG
bG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYm9vbCBmaXJzdExpbmUs
IGludCYgbGluZUxlZnRPZmZzZXQsIGludCYgbGluZVJpZ2h0T2Zmc2V0KQorYm9vbCBSZW5kZXJC
bG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVjdCogbmV3RmxvYXQsIEZs
b2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZU9mZnNldHMmIGxpbmVPZmZzZXRzKQogewogICAgIGJvb2wgZGlkUG9zaXRpb24gPSBwb3Np
dGlvbk5ld0Zsb2F0cygpOwogICAgIGlmICghZGlkUG9zaXRpb24pCkBAIC0yMjUzLDkgKzIyNjcs
OSBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0T25MaW5lCiAgICAgaW50IGJs
b2NrT2Zmc2V0ID0gbG9naWNhbEhlaWdodCgpOwogICAgIGlmIChibG9ja09mZnNldCA+PSBsb2dp
Y2FsVG9wRm9yRmxvYXQobmV3RmxvYXQpICYmIGJsb2NrT2Zmc2V0IDwgbG9naWNhbEJvdHRvbUZv
ckZsb2F0KG5ld0Zsb2F0KSkgewogICAgICAgICBpZiAobmV3RmxvYXQtPnR5cGUoKSA9PSBGbG9h
dGluZ09iamVjdDo6RmxvYXRMZWZ0KQotICAgICAgICAgICAgbGluZUxlZnRPZmZzZXQgPSBsb2dp
Y2FsUmlnaHRGb3JGbG9hdChuZXdGbG9hdCk7CisgICAgICAgICAgICBsaW5lT2Zmc2V0cy5zZXRM
ZWZ0KGxvZ2ljYWxSaWdodEZvckZsb2F0KG5ld0Zsb2F0KSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGxpbmVSaWdodE9mZnNldCA9IGxvZ2ljYWxMZWZ0Rm9yRmxvYXQobmV3RmxvYXQpOwor
ICAgICAgICAgICAgbGluZU9mZnNldHMuc2V0UmlnaHQobG9naWNhbExlZnRGb3JGbG9hdChuZXdG
bG9hdCkpOwogICAgIH0KIAogICAgIGlmICghbmV3RmxvYXQtPm1fcGFnaW5hdGlvblN0cnV0KQpA
QCAtMjI5MSw4ICsyMzA1LDggQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9u
TGluZQogICAgIH0KIAogICAgIHNldExvZ2ljYWxIZWlnaHQoYmxvY2tPZmZzZXQgKyBwYWdpbmF0
aW9uU3RydXQpOwotICAgIGxpbmVMZWZ0T2Zmc2V0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5l
KGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lKTsKLSAgICBsaW5lUmlnaHRPZmZzZXQgPSBsb2dp
Y2FsUmlnaHRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lKTsKKyAgICBs
aW5lT2Zmc2V0cy5zZXRMZWZ0KGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0
KCksIGZpcnN0TGluZSkpOworICAgIGxpbmVPZmZzZXRzLnNldFJpZ2h0KGxvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUpKTsKIAogICAgIHJldHVybiBk
aWRQb3NpdGlvbjsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>