<?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>126491</bug_id>
          
          <creation_ts>2014-01-04 10:56:12 -0800</creation_ts>
          <short_desc>Move LineBreaker functions to LineBreaker.cpp</short_desc>
          <delta_ts>2014-01-04 12:49:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964418</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-04 10:56:12 -0800</bug_when>
    <thetext>Move LineBreaker functions to LineBreaker.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964419</commentid>
    <comment_count>1</comment_count>
      <attachid>220376</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-04 10:57:54 -0800</bug_when>
    <thetext>Created attachment 220376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964425</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-04 12:49:59 -0800</bug_when>
    <thetext>Committed r161314: &lt;http://trac.webkit.org/changeset/161314&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220376</attachid>
            <date>2014-01-04 10:57:54 -0800</date>
            <delta_ts>2014-01-04 12:49:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126491-20140104105755.patch</filename>
            <type>text/plain</type>
            <size>18658</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTMxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE0LTAxLTA0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBMaW5lQnJlYWtlciBmdW5jdGlv
bnMgdG8gTGluZUJyZWFrZXIuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY0OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAtIE1vdmVzIExpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKCkgYW5kIExp
bmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKCkgdG8KKyAgICAgICAgICBMaW5lQnJlYWtlci5j
cHAgZnJvbSBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisgICAgICAgIC0gTW92ZXMgcmVxdWly
ZXNJbmRlbnQoKSB0byBMaW5lV2lkdGguaC9jcHAgZnJvbSBSZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCisgICAgICAgICAgc28gaXQgY2FuIGJlIHNoYXJlZC4KKyAgICAgICAgLSBBZGRzIG1pc3Np
bmcgaW5saW5lIHNwZWNpZmllciB0byBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZUVuZE9mTGluZSgp
IHRvIGF2b2lkCisgICAgICAgICAgZHVwbGljYXRlIHN5bWJvbHMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6CisgICAgICAgICog
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oOgorICAgICAgICAo
V2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRPZkxpbmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVh
a2VyOjpuZXh0TGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpuZXh0
U2VnbWVudEJyZWFrKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVxdWlyZXNJbmRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9s
aW5lL0xpbmVXaWR0aC5oOgorCiAyMDE0LTAxLTA0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBbQ01ha2VdIEZpeCB0aGUgdmlkZW8gYW5k
IGF1ZGlvIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMTYxMzA2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5MiwzNCArNTkyLDE1IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUxvZ2ljYWxXaWR0aEZv
ckEKICAgICB9CiB9CiAKLXN0YXRpYyBJbmRlbnRUZXh0T3JOb3QgcmVxdWlyZXNJbmRlbnQoYm9v
bCBpc0ZpcnN0TGluZSwgYm9vbCBpc0FmdGVySGFyZExpbmVCcmVhaywgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQorc3RhdGljIHZvaWQgdXBkYXRlTG9naWNhbElubGluZVBvc2l0aW9ucyhSZW5k
ZXJCbG9ja0Zsb3cmIGJsb2NrLCBmbG9hdCYgbGluZUxvZ2ljYWxMZWZ0LCBmbG9hdCYgbGluZUxv
Z2ljYWxSaWdodCwgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgYm9vbCBmaXJzdExpbmUs
IEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0IGJveExvZ2ljYWxI
ZWlnaHQpCiB7Ci0gICAgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQgPSBEb05vdElu
ZGVudFRleHQ7Ci0gICAgaWYgKGlzRmlyc3RMaW5lKQotICAgICAgICBzaG91bGRJbmRlbnRUZXh0
ID0gSW5kZW50VGV4dDsKLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIGVsc2UgaWYgKGlzQWZ0
ZXJIYXJkTGluZUJyZWFrICYmIHN0eWxlLnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dEluZGVudEVh
Y2hMaW5lKQotICAgICAgICBzaG91bGRJbmRlbnRUZXh0ID0gSW5kZW50VGV4dDsKLQotICAgIGlm
IChzdHlsZS50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5naW5nKQotICAgICAgICBz
aG91bGRJbmRlbnRUZXh0ID0gc2hvdWxkSW5kZW50VGV4dCA9PSBJbmRlbnRUZXh0ID8gRG9Ob3RJ
bmRlbnRUZXh0IDogSW5kZW50VGV4dDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGlzQWZ0ZXJI
YXJkTGluZUJyZWFrKTsKLSAgICBVTlVTRURfUEFSQU0oc3R5bGUpOwotI2VuZGlmCi0gICAgcmV0
dXJuIHNob3VsZEluZGVudFRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHVwZGF0ZUxvZ2ljYWxJbmxp
bmVQb3NpdGlvbnMoUmVuZGVyQmxvY2tGbG93KiBibG9jaywgZmxvYXQmIGxpbmVMb2dpY2FsTGVm
dCwgZmxvYXQmIGxpbmVMb2dpY2FsUmlnaHQsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgs
IGJvb2wgZmlyc3RMaW5lLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCwgTGF5b3V0
VW5pdCBib3hMb2dpY2FsSGVpZ2h0KQotewotICAgIExheW91dFVuaXQgbGluZUxvZ2ljYWxIZWln
aHQgPSBibG9jay0+bWluTGluZUhlaWdodEZvclJlcGxhY2VkUmVuZGVyZXIoZmlyc3RMaW5lLCBi
b3hMb2dpY2FsSGVpZ2h0KTsKLSAgICBsaW5lTG9naWNhbExlZnQgPSBibG9jay0+cGl4ZWxTbmFw
cGVkTG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrLT5sb2dpY2FsSGVpZ2h0KCksIHNob3Vs
ZEluZGVudFRleHQgPT0gSW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgIGxpbmVM
b2dpY2FsUmlnaHQgPSBibG9jay0+cGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGlu
ZShibG9jay0+bG9naWNhbEhlaWdodCgpLCBzaG91bGRJbmRlbnRUZXh0ID09IEluZGVudFRleHQs
IGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0ID0g
YmxvY2subWluTGluZUhlaWdodEZvclJlcGxhY2VkUmVuZGVyZXIoZmlyc3RMaW5lLCBib3hMb2dp
Y2FsSGVpZ2h0KTsKKyAgICBsaW5lTG9naWNhbExlZnQgPSBibG9jay5waXhlbFNuYXBwZWRMb2dp
Y2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdodCgpLCBzaG91bGRJbmRlbnRU
ZXh0ID09IEluZGVudFRleHQsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBsaW5lTG9naWNhbFJp
Z2h0ID0gYmxvY2sucGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShibG9jay5s
b2dpY2FsSGVpZ2h0KCksIHNob3VsZEluZGVudFRleHQgPT0gSW5kZW50VGV4dCwgbGluZUxvZ2lj
YWxIZWlnaHQpOwogICAgIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxpbmVMb2dpY2FsUmlnaHQg
LSBsaW5lTG9naWNhbExlZnQ7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBjb25z
dCBMaW5lSW5mbyYgbGluZUluZm8sIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGlu
Z1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3Np
dGlvbkNhY2hlLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQordm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJ
bmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgQmlkaVJ1biogZmly
c3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGJvb2wgcmVhY2hlZEVuZCwgR2x5cGhP
dmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0
aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgV29yZE1lYXN1cmVtZW50cyYgd29yZE1l
YXN1cmVtZW50cykKIHsKICAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHRleHRBbGlnbm1lbnRG
b3JMaW5lKCFyZWFjaGVkRW5kICYmICFsaW5lQm94LT5lbmRzV2l0aEJyZWFrKCkpOwogICAgIApA
QCAtNjMzLDcgKzYxNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGly
ZWMKICAgICBmbG9hdCBsaW5lTG9naWNhbExlZnQ7CiAgICAgZmxvYXQgbGluZUxvZ2ljYWxSaWdo
dDsKICAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGg7Ci0gICAgdXBkYXRlTG9naWNhbElu
bGluZVBvc2l0aW9ucyh0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIDApOwor
ICAgIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMoKnRoaXMsIGxpbmVMb2dpY2FsTGVmdCwg
bGluZUxvZ2ljYWxSaWdodCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpc0ZpcnN0TGluZSwgc2hv
dWxkSW5kZW50VGV4dCwgMCk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nOwogI2lmIEVOQUJM
RShDU1NfU0hBUEVTKQogICAgIFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJbnNpZGVJbmZvID0gbGF5
b3V0U2hhcGVJbnNpZGVJbmZvKCk7CkBAIC02NjksNyArNjUwLDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlYwogCiAgICAgaWYgKGZpcnN0UnVuICYmIGZpcnN0UnVu
LT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkgewogICAgICAgICBSZW5kZXJCb3gmIHJlbmRlckJv
eCA9IHRvUmVuZGVyQm94KGZpcnN0UnVuLT5yZW5kZXJlcigpKTsKLSAgICAgICAgdXBkYXRlTG9n
aWNhbElubGluZVBvc2l0aW9ucyh0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmln
aHQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQs
IHJlbmRlckJveC5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICB1cGRhdGVMb2dpY2FsSW5saW5l
UG9zaXRpb25zKCp0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIHJlbmRlckJv
eC5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KIAogICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JTZWdtZW50KGxpbmVCb3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24sIGxpbmVMb2dp
Y2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1
biwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgd29yZE1lYXN1cmVtZW50
cyk7CkBAIC0xOTk2LDExNSArMTk3Nyw2IEBAIGJvb2wgUmVuZGVyQmxvY2s6OmdlbmVyYXRlc0xp
bmVCb3hlc0ZvckkKICAgICByZXR1cm4gIWl0LmF0RW5kKCk7CiB9CiAKLUlubGluZUl0ZXJhdG9y
IExpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIs
IExpbmVJbmZvJiBsaW5lSW5mbywgUmVuZGVyVGV4dEluZm8mIHJlbmRlclRleHRJbmZvLCBGbG9h
dGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRp
dmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCi17
Ci0jaWYgIUVOQUJMRShDU1NfU0hBUEVTKQotICAgIHJldHVybiBuZXh0U2VnbWVudEJyZWFrKHJl
c29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsKLSNlbHNl
Ci0gICAgU2hhcGVJbnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBtX2Jsb2NrLmxheW91dFNo
YXBlSW5zaWRlSW5mbygpOwotCi0gICAgaWYgKCFzaGFwZUluc2lkZUluZm8gfHwgIXNoYXBlSW5z
aWRlSW5mby0+bGluZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSkKLSAgICAgICAgcmV0dXJuIG5leHRT
ZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0
RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJl
bWVudHMpOwotCi0gICAgSW5saW5lSXRlcmF0b3IgZW5kID0gcmVzb2x2ZXIucG9zaXRpb24oKTsK
LSAgICBJbmxpbmVJdGVyYXRvciBvbGRFbmQgPSBlbmQ7Ci0KLSAgICBpZiAoIXNoYXBlSW5zaWRl
SW5mby0+aGFzU2VnbWVudHMoKSkgewotICAgICAgICBlbmQgPSBuZXh0U2VnbWVudEJyZWFrKHJl
c29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsKLSAgICAg
ICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7Ci0g
ICAgICAgIHJldHVybiBvbGRFbmQ7Ci0gICAgfQotCi0gICAgY29uc3QgU2VnbWVudExpc3QmIHNl
Z21lbnRzID0gc2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50cygpOwotICAgIFNlZ21lbnRSYW5nZUxp
c3QmIHNlZ21lbnRSYW5nZXMgPSBzaGFwZUluc2lkZUluZm8tPnNlZ21lbnRSYW5nZXMoKTsKLQot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWdtZW50cy5zaXplKCkgJiYgIWVuZC5hdEVu
ZCgpOyBpKyspIHsKLSAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudFN0YXJ0ID0gcmVzb2x2
ZXIucG9zaXRpb24oKTsKLSAgICAgICAgZW5kID0gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwg
bGluZUluZm8sIHJlbmRlclRleHRJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25z
ZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgd29yZE1lYXN1cmVtZW50cyk7Ci0KLSAgICAgICAgQVNT
RVJUKHNlZ21lbnRSYW5nZXMuc2l6ZSgpID09IGkpOwotICAgICAgICBpZiAocmVzb2x2ZXIucG9z
aXRpb24oKS5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBzZWdtZW50UmFuZ2VzLmFwcGVuZChMaW5l
U2VnbWVudFJhbmdlKHNlZ21lbnRTdGFydCwgZW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBpZiAocmVzb2x2ZXIucG9zaXRpb24oKSA9PSBlbmQpIHsKLSAgICAg
ICAgICAgIC8vIE5vdGhpbmcgZml0IHRoaXMgc2VnbWVudAotICAgICAgICAgICAgZW5kID0gc2Vn
bWVudFN0YXJ0OwotICAgICAgICAgICAgc2VnbWVudFJhbmdlcy5hcHBlbmQoTGluZVNlZ21lbnRS
YW5nZShzZWdtZW50U3RhcnQsIHNlZ21lbnRTdGFydCkpOwotICAgICAgICAgICAgcmVzb2x2ZXIu
c2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKHNlZ21lbnRTdGFydCk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgcmVzb2x2ZXIucG9zaXRpb24gaXMg
YWxyZWFkeSBza2lwcGluZyBzb21lIG9mIHRoZSB3aGl0ZSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBsaW5lLAotICAgICAgICAgICAgLy8gc28gdGhhdCdzIHdoeSBzZWdtZW50U3RhcnQg
bWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gcmVzb2x2ZXIucG9zaXRpb24oKS4KLSAgICAgICAgICAg
IExpbmVTZWdtZW50UmFuZ2UgcmFuZ2UocmVzb2x2ZXIucG9zaXRpb24oKSwgZW5kKTsKLSAgICAg
ICAgICAgIHNlZ21lbnRSYW5nZXMuYXBwZW5kKHJhbmdlKTsKLSAgICAgICAgICAgIHJlc29sdmVy
LnNldFBvc2l0aW9uKGVuZCwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3JzKGVuZCkpOwotCi0gICAg
ICAgICAgICBpZiAobGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpIHsKLSAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSBoaXQgYSBuZXcgbGluZSBicmVhaywganVzdCBzdG9wIGFkZGlu
ZyBhbnl0aGluZyB0byB0aGlzIGxpbmUuCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmlu
Z05lc3RlZElzb2xhdGVzKG9sZEVuZCk7Ci0gICAgcmV0dXJuIGVuZDsKLSNlbmRpZgotfQotCi1J
bmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVz
b2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgbGluZUluZm8sIFJlbmRlclRleHRJbmZvJiByZW5k
ZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVu
c2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3Jk
TWVhc3VyZW1lbnRzKQotewotICAgIHJlc2V0KCk7Ci0KLSAgICBBU1NFUlQocmVzb2x2ZXIucG9z
aXRpb24oKS5yb290KCkgPT0gJm1fYmxvY2spOwotCi0gICAgYm9vbCBhcHBsaWVkU3RhcnRXaWR0
aCA9IHJlc29sdmVyLnBvc2l0aW9uKCkub2Zmc2V0KCk7Ci0KLSAgICBMaW5lV2lkdGggd2lkdGgo
bV9ibG9jaywgbGluZUluZm8uaXNGaXJzdExpbmUoKSwgcmVxdWlyZXNJbmRlbnQobGluZUluZm8u
aXNGaXJzdExpbmUoKSwgbGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCksIG1fYmxv
Y2suc3R5bGUoKSkpOwotCi0gICAgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKHJlc29sdmVyLCBsaW5l
SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgd2lkdGgpOwotCi0gICAgaWYgKHJlc29s
dmVyLnBvc2l0aW9uKCkuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc29sdmVyLnBvc2l0aW9u
KCk7Ci0KLSAgICBCcmVha2luZ0NvbnRleHQgY29udGV4dCgqdGhpcywgcmVzb2x2ZXIsIGxpbmVJ
bmZvLCB3aWR0aCwgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGFw
cGxpZWRTdGFydFdpZHRoLCBtX2Jsb2NrKTsKLQotICAgIHdoaWxlIChjb250ZXh0LmN1cnJlbnRP
YmplY3QoKSkgewotICAgICAgICBjb250ZXh0LmluaXRpYWxpemVGb3JDdXJyZW50T2JqZWN0KCk7
Ci0gICAgICAgIGlmIChjb250ZXh0LmN1cnJlbnRPYmplY3QoKS0+aXNCUigpKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LmhhbmRsZUJSKG1fY2xlYXIpOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRl
eHQuY3VycmVudE9iamVjdCgpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAg
ICAgY29udGV4dC5oYW5kbGVPdXRPZkZsb3dQb3NpdGlvbmVkKG1fcG9zaXRpb25lZE9iamVjdHMp
OwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQuY3VycmVudE9iamVjdCgpLT5pc0Zsb2F0aW5n
KCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQuaGFuZGxlRmxvYXQoKTsKLSAgICAgICAgfSBlbHNl
IGlmIChjb250ZXh0LmN1cnJlbnRPYmplY3QoKS0+aXNSZW5kZXJJbmxpbmUoKSkgewotICAgICAg
ICAgICAgY29udGV4dC5oYW5kbGVFbXB0eUlubGluZSgpOwotICAgICAgICB9IGVsc2UgaWYgKGNv
bnRleHQuY3VycmVudE9iamVjdCgpLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQuaGFuZGxlUmVwbGFjZWQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmN1cnJlbnRP
YmplY3QoKS0+aXNUZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LmhhbmRsZVRleHQo
d29yZE1lYXN1cmVtZW50cywgbV9oeXBoZW5hdGVkLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cykpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSd2ZSBoaXQgYSBoYXJkIHRleHQgbGluZSBicmVh
ay4gT3VyIGxpbmUgYnJlYWsgaXRlcmF0b3IgaXMgdXBkYXRlZCwgc28gZ28gYWhlYWQgYW5kIGVh
cmx5IHJldHVybi4KLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5saW5lQnJlYWsoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmN1cnJlbnRPYmplY3Qo
KS0+aXNMaW5lQnJlYWtPcHBvcnR1bml0eSgpKQotICAgICAgICAgICAgY29udGV4dC5jb21taXRM
aW5lQnJlYWtBdEN1cnJlbnRXaWR0aChjb250ZXh0LmN1cnJlbnRPYmplY3QoKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIGlmIChj
b250ZXh0LmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGVFbmRPZkxp
bmUoKTsKLQotICAgICAgICBjb250ZXh0LmNvbW1pdEFuZFVwZGF0ZUxpbmVCcmVha0lmTmVlZGVk
KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmhhbmRsZUVuZE9mTGluZSgpOwotCi0gICAgICAgIGNvbnRleHQuaW5jcmVtZW50KCk7
Ci0gICAgfQotCi0gICAgY29udGV4dC5jbGVhckxpbmVCcmVha0lmRml0c09uTGluZSh0cnVlKTsK
LQotICAgIHJldHVybiBjb250ZXh0LmhhbmRsZUVuZE9mTGluZSgpOwotfQotCiB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6YWRkT3ZlcmZsb3dGcm9tSW5saW5lQ2hpbGRyZW4oKQogewogICAgIGlmIChh
dXRvIGxheW91dCA9IHNpbXBsZUxpbmVMYXlvdXQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhl
YWRlcnMuaAkocmV2aXNpb24gMTYxMzA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg1
LDcgKzEwODUsNyBAQCBpbmxpbmUgdm9pZCBjaGVja01pZHBvaW50cyhMaW5lTWlkcG9pbnRTCiAg
ICAgfQogfQogCi1JbmxpbmVJdGVyYXRvciBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZUVuZE9mTGlu
ZSgpCitpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRPZkxp
bmUoKQogewogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIFNoYXBlSW5zaWRlSW5mbyogc2hh
cGVJbmZvID0gbV9ibG9jay5sYXlvdXRTaGFwZUluc2lkZUluZm8oKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAJKHJldmlzaW9uIDE2MTMw
NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkxpbmVCcmVha2VyLmgiCiAKKyNpbmNsdWRlICJCcmVha2luZ0NvbnRleHRJbmxpbmVIZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKKyNpbmNsdWRlICJTaGFwZUlu
c2lkZUluZm8uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Niw0ICs3OCwxMTMgQEAg
dm9pZCBMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKAogICAgIHJlc29sdmVyLmNv
bW1pdEV4cGxpY2l0RW1iZWRkaW5nKCk7CiB9CiAKK0lubGluZUl0ZXJhdG9yIExpbmVCcmVha2Vy
OjpuZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZvJiBs
aW5lSW5mbywgUmVuZGVyVGV4dEluZm8mIHJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVk
TGluZXMsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCit7CisjaWYgIUVOQUJM
RShDU1NfU0hBUEVTKQorICAgIHJldHVybiBuZXh0U2VnbWVudEJyZWFrKHJlc29sdmVyLCBsaW5l
SW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGNvbnNlY3V0
aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsKKyNlbHNlCisgICAgU2hhcGVJ
bnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBtX2Jsb2NrLmxheW91dFNoYXBlSW5zaWRlSW5m
bygpOworCisgICAgaWYgKCFzaGFwZUluc2lkZUluZm8gfHwgIXNoYXBlSW5zaWRlSW5mby0+bGlu
ZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSkKKyAgICAgICAgcmV0dXJuIG5leHRTZWdtZW50QnJlYWso
cmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3Vz
TGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworCisg
ICAgSW5saW5lSXRlcmF0b3IgZW5kID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICBJbmxpbmVJ
dGVyYXRvciBvbGRFbmQgPSBlbmQ7CisKKyAgICBpZiAoIXNoYXBlSW5zaWRlSW5mby0+aGFzU2Vn
bWVudHMoKSkgeworICAgICAgICBlbmQgPSBuZXh0U2VnbWVudEJyZWFrKHJlc29sdmVyLCBsaW5l
SW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGNvbnNlY3V0
aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsKKyAgICAgICAgcmVzb2x2ZXIu
c2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7CisgICAgICAgIHJldHVy
biBvbGRFbmQ7CisgICAgfQorCisgICAgY29uc3QgU2VnbWVudExpc3QmIHNlZ21lbnRzID0gc2hh
cGVJbnNpZGVJbmZvLT5zZWdtZW50cygpOworICAgIFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRS
YW5nZXMgPSBzaGFwZUluc2lkZUluZm8tPnNlZ21lbnRSYW5nZXMoKTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzZWdtZW50cy5zaXplKCkgJiYgIWVuZC5hdEVuZCgpOyBpKyspIHsK
KyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudFN0YXJ0ID0gcmVzb2x2ZXIucG9zaXRpb24o
KTsKKyAgICAgICAgZW5kID0gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJl
bmRlclRleHRJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhl
bmF0ZWRMaW5lcywgd29yZE1lYXN1cmVtZW50cyk7CisKKyAgICAgICAgQVNTRVJUKHNlZ21lbnRS
YW5nZXMuc2l6ZSgpID09IGkpOworICAgICAgICBpZiAocmVzb2x2ZXIucG9zaXRpb24oKS5hdEVu
ZCgpKSB7CisgICAgICAgICAgICBzZWdtZW50UmFuZ2VzLmFwcGVuZChMaW5lU2VnbWVudFJhbmdl
KHNlZ21lbnRTdGFydCwgZW5kKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBpZiAocmVzb2x2ZXIucG9zaXRpb24oKSA9PSBlbmQpIHsKKyAgICAgICAgICAgIC8vIE5v
dGhpbmcgZml0IHRoaXMgc2VnbWVudAorICAgICAgICAgICAgZW5kID0gc2VnbWVudFN0YXJ0Owor
ICAgICAgICAgICAgc2VnbWVudFJhbmdlcy5hcHBlbmQoTGluZVNlZ21lbnRSYW5nZShzZWdtZW50
U3RhcnQsIHNlZ21lbnRTdGFydCkpOworICAgICAgICAgICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25J
Z25vcmluZ05lc3RlZElzb2xhdGVzKHNlZ21lbnRTdGFydCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgcmVzb2x2ZXIucG9zaXRpb24gaXMgYWxyZWFkeSBza2lw
cGluZyBzb21lIG9mIHRoZSB3aGl0ZSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5l
LAorICAgICAgICAgICAgLy8gc28gdGhhdCdzIHdoeSBzZWdtZW50U3RhcnQgbWlnaHQgYmUgZGlm
ZmVyZW50IHRoYW4gcmVzb2x2ZXIucG9zaXRpb24oKS4KKyAgICAgICAgICAgIExpbmVTZWdtZW50
UmFuZ2UgcmFuZ2UocmVzb2x2ZXIucG9zaXRpb24oKSwgZW5kKTsKKyAgICAgICAgICAgIHNlZ21l
bnRSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9u
KGVuZCwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3JzKGVuZCkpOworCisgICAgICAgICAgICBpZiAo
bGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBJZiB3ZSBoaXQgYSBuZXcgbGluZSBicmVhaywganVzdCBzdG9wIGFkZGluZyBhbnl0aGluZyB0
byB0aGlzIGxpbmUuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xh
dGVzKG9sZEVuZCk7CisgICAgcmV0dXJuIGVuZDsKKyNlbmRpZgorfQorCitJbmxpbmVJdGVyYXRv
ciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyLCBMaW5lSW5mbyYgbGluZUluZm8sIFJlbmRlclRleHRJbmZvJiByZW5kZXJUZXh0SW5mbywg
RmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNl
Y3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRz
KQoreworICAgIHJlc2V0KCk7CisKKyAgICBBU1NFUlQocmVzb2x2ZXIucG9zaXRpb24oKS5yb290
KCkgPT0gJm1fYmxvY2spOworCisgICAgYm9vbCBhcHBsaWVkU3RhcnRXaWR0aCA9IHJlc29sdmVy
LnBvc2l0aW9uKCkub2Zmc2V0KCk7CisKKyAgICBMaW5lV2lkdGggd2lkdGgobV9ibG9jaywgbGlu
ZUluZm8uaXNGaXJzdExpbmUoKSwgcmVxdWlyZXNJbmRlbnQobGluZUluZm8uaXNGaXJzdExpbmUo
KSwgbGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCksIG1fYmxvY2suc3R5bGUoKSkp
OworCisgICAgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKHJlc29sdmVyLCBsaW5lSW5mbywgbGFzdEZs
b2F0RnJvbVByZXZpb3VzTGluZSwgd2lkdGgpOworCisgICAgaWYgKHJlc29sdmVyLnBvc2l0aW9u
KCkuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlc29sdmVyLnBvc2l0aW9uKCk7CisKKyAgICBC
cmVha2luZ0NvbnRleHQgY29udGV4dCgqdGhpcywgcmVzb2x2ZXIsIGxpbmVJbmZvLCB3aWR0aCwg
cmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGFwcGxpZWRTdGFydFdp
ZHRoLCBtX2Jsb2NrKTsKKworICAgIHdoaWxlIChjb250ZXh0LmN1cnJlbnRPYmplY3QoKSkgewor
ICAgICAgICBjb250ZXh0LmluaXRpYWxpemVGb3JDdXJyZW50T2JqZWN0KCk7CisgICAgICAgIGlm
IChjb250ZXh0LmN1cnJlbnRPYmplY3QoKS0+aXNCUigpKSB7CisgICAgICAgICAgICBjb250ZXh0
LmhhbmRsZUJSKG1fY2xlYXIpOworICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQuY3VycmVudE9i
amVjdCgpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICAgICAgY29udGV4dC5o
YW5kbGVPdXRPZkZsb3dQb3NpdGlvbmVkKG1fcG9zaXRpb25lZE9iamVjdHMpOworICAgICAgICB9
IGVsc2UgaWYgKGNvbnRleHQuY3VycmVudE9iamVjdCgpLT5pc0Zsb2F0aW5nKCkpIHsKKyAgICAg
ICAgICAgIGNvbnRleHQuaGFuZGxlRmxvYXQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0
LmN1cnJlbnRPYmplY3QoKS0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgICAgICAgICAgY29udGV4
dC5oYW5kbGVFbXB0eUlubGluZSgpOworICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQuY3VycmVu
dE9iamVjdCgpLT5pc1JlcGxhY2VkKCkpIHsKKyAgICAgICAgICAgIGNvbnRleHQuaGFuZGxlUmVw
bGFjZWQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmN1cnJlbnRPYmplY3QoKS0+aXNU
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LmhhbmRsZVRleHQod29yZE1lYXN1cmVt
ZW50cywgbV9oeXBoZW5hdGVkLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcykpIHsKKyAgICAg
ICAgICAgICAgICAvLyBXZSd2ZSBoaXQgYSBoYXJkIHRleHQgbGluZSBicmVhay4gT3VyIGxpbmUg
YnJlYWsgaXRlcmF0b3IgaXMgdXBkYXRlZCwgc28gZ28gYWhlYWQgYW5kIGVhcmx5IHJldHVybi4K
KyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5saW5lQnJlYWsoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmN1cnJlbnRPYmplY3QoKS0+aXNMaW5lQnJl
YWtPcHBvcnR1bml0eSgpKQorICAgICAgICAgICAgY29udGV4dC5jb21taXRMaW5lQnJlYWtBdEN1
cnJlbnRXaWR0aChjb250ZXh0LmN1cnJlbnRPYmplY3QoKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAgIGlmIChjb250ZXh0LmF0RW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGVFbmRPZkxpbmUoKTsKKworICAg
ICAgICBjb250ZXh0LmNvbW1pdEFuZFVwZGF0ZUxpbmVCcmVha0lmTmVlZGVkKCk7CisKKyAgICAg
ICAgaWYgKGNvbnRleHQuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRs
ZUVuZE9mTGluZSgpOworCisgICAgICAgIGNvbnRleHQuaW5jcmVtZW50KCk7CisgICAgfQorCisg
ICAgY29udGV4dC5jbGVhckxpbmVCcmVha0lmRml0c09uTGluZSh0cnVlKTsKKworICAgIHJldHVy
biBjb250ZXh0LmhhbmRsZUVuZE9mTGluZSgpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAJKHJldmlzaW9uIDE2MTMwNikKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0MSw0ICsyNDEsMjIgQEAgYm9vbCBMaW5lV2lkdGg6OmZpdHNPbkxpbmVFeGNsdWRpbmdU
cmFpbAogICAgIHJldHVybiBjdXJyZW50V2lkdGgoKSAtIG1fdHJhaWxpbmdDb2xsYXBzZWRXaGl0
ZXNwYWNlV2lkdGggPD0gbV9hdmFpbGFibGVXaWR0aDsKIH0KIAorSW5kZW50VGV4dE9yTm90IHJl
cXVpcmVzSW5kZW50KGJvb2wgaXNGaXJzdExpbmUsIGJvb2wgaXNBZnRlckhhcmRMaW5lQnJlYWss
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxk
SW5kZW50VGV4dCA9IERvTm90SW5kZW50VGV4dDsKKyAgICBpZiAoaXNGaXJzdExpbmUpCisgICAg
ICAgIHNob3VsZEluZGVudFRleHQgPSBJbmRlbnRUZXh0OworI2lmIEVOQUJMRShDU1MzX1RFWFQp
CisgICAgZWxzZSBpZiAoaXNBZnRlckhhcmRMaW5lQnJlYWsgJiYgc3R5bGUudGV4dEluZGVudExp
bmUoKSA9PSBUZXh0SW5kZW50RWFjaExpbmUpCisgICAgICAgIHNob3VsZEluZGVudFRleHQgPSBJ
bmRlbnRUZXh0OworCisgICAgaWYgKHN0eWxlLnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dEluZGVu
dEhhbmdpbmcpCisgICAgICAgIHNob3VsZEluZGVudFRleHQgPSBzaG91bGRJbmRlbnRUZXh0ID09
IEluZGVudFRleHQgPyBEb05vdEluZGVudFRleHQgOiBJbmRlbnRUZXh0OworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oaXNBZnRlckhhcmRMaW5lQnJlYWspOworICAgIFVOVVNFRF9QQVJBTShzdHls
ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gc2hvdWxkSW5kZW50VGV4dDsKK30KKwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmgJKHJldmlzaW9uIDE2MTMw
NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEZsb2F0aW5nT2JqZWN0OwogY2xhc3MgUmVu
ZGVyQmxvY2tGbG93OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyUnVieVJ1bjsK
K2NsYXNzIFJlbmRlclN0eWxlOwogCiBzdHJ1Y3QgTGluZVNlZ21lbnQ7CiAKQEAgLTkyLDYgKzkz
LDggQEAgcHJpdmF0ZToKICAgICBJbmRlbnRUZXh0T3JOb3QgbV9zaG91bGRJbmRlbnRUZXh0Owog
fTsKIAorSW5kZW50VGV4dE9yTm90IHJlcXVpcmVzSW5kZW50KGJvb2wgaXNGaXJzdExpbmUsIGJv
b2wgaXNBZnRlckhhcmRMaW5lQnJlYWssIGNvbnN0IFJlbmRlclN0eWxlJik7CisKIH0KIAogI2Vu
ZGlmIC8vIExpbmVXaWR0aF9oCg==
</data>
<flag name="review"
          id="244074"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>