<?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>131419</bug_id>
          
          <creation_ts>2014-04-08 20:17:00 -0700</creation_ts>
          <short_desc>Sink NaN sanitization to uses and remove it when it&apos;s unnecessary</short_desc>
          <delta_ts>2014-04-16 22:32:18 -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>JavaScriptCore</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>131420</dependson>
    
    <dependson>131423</dependson>
          <blocked>131418</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>juergen</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999037</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-08 20:17:00 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001481</commentid>
    <comment_count>1</comment_count>
      <attachid>229520</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-16 21:09:02 -0700</bug_when>
    <thetext>Created attachment 229520
mostly done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001484</commentid>
    <comment_count>2</comment_count>
      <attachid>229521</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-16 21:25:50 -0700</bug_when>
    <thetext>Created attachment 229521
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001489</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-16 21:58:15 -0700</bug_when>
    <thetext>landed in http://trac.webkit.org/changeset/167416</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001491</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-16 22:32:18 -0700</bug_when>
    <thetext>Build fix in r167418.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229520</attachid>
            <date>2014-04-16 21:09:02 -0700</date>
            <delta_ts>2014-04-16 21:25:50 -0700</delta_ts>
            <desc>mostly done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16927</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NDE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE0LTA0LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2luayBOYU4gc2FuaXRpemF0aW9uIHRvIHVzZXMgYW5kIHJlbW92ZSBpdCB3aGVuIGl0J3MgdW5u
ZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4gSXQncyBkb25lIGV4Y2VwdCBmb3IgdGVzdGluZy4K
KworICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6Omlz
SW50MzJTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMpOgorICAgICAgICAoSlNDOjppc01hY2hpbmVJ
bnRTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMpOgorICAgICAgICAoSlNDOjppc0RvdWJsZVNwZWN1
bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNEb3VibGVTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5qZWN0
VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVy
Z2VTdGF0ZUF0VGFpbCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6
cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuaDoKKyAgICAgICAgKEpTQzo6REZHOjp0eXBl
RmlsdGVyRm9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAqIHJ1
bnRpbWUvUHVyZU5hTi5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9mbG9hdDMyLWFycmF5LW5h
bi1pbmxpbmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZmxvYXQzMi1hcnJheS1uYW4uanM6IEFkZGVkLgorICAgICAg
ICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9mbG9hdDY0
LWFycmF5LW5hbi1pbmxpbmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChp
c0JpZ0VuZGlhbik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZmxv
YXQ2NC1hcnJheS1uYW4uanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGlzQmln
RW5kaWFuKToKKyAgICAgICAgKHRlc3QpOgorCiAyMDE0LTA0LTE2ICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgV2luZG93cyBn
YXJkZW5pbmcuIFJlc3RyaWN0IG91ciBuZXcgJ2lzaW5mJyBjaGVjawpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE2
NzQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjRG91YmxlUHUKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91Ymxl
SW1wdXJlTmFOICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOIHRoYXQg
aXMgdW5zYWZlIHRvIHRhZyAoaS5lLiBpbXB1cmUpLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNEb3VibGVOYU4gICAgICAgICAgPSAweDA2MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgc29tZSBraW5kIG9mIE5hTi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0
ZWNvZGVEb3VibGUgICAgID0gMHgwMzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYSBub24tTmFOIG9y
IGEgTmFOIGRvdWJsZSwgYnV0IGl0J3MgZGVmaW5pdGVseSBub3QgaW1wdXJlIE5hTi4KLXN0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlICAgICAgICAgICAgID0gMHgwNzgwMDAw
MDsgLy8gSXQncyBlaXRoZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbERvdWJsZSAgICAgICAgID0gMHgwNzgwMDAwMDsgLy8g
SXQncyBlaXRoZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KIHN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVSZWFsTnVtYmVyID0gMHgwMWEwMDAwMDsgLy8gSXQncyBl
aXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNGdWxsUmVhbE51bWJlciAgICAgPSAweDAxZTAwMDAwOyAvLyBJdCdzIGVpdGhlciBh
biBJbnQzMiBvciBhIERvdWJsZVJlYWwsIG9yIGEgSW50NTIuCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0J5dGVjb2RlTnVtYmVyICAgICA9IDB4MDNhMDAwMDA7IC8vIEl0J3MgZWl0
aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLCBhbmQgdGhlIERvdWJsZSBjYW5ub3QgYmUgYW4gaW1w
dXJlIE5hTi4KQEAgLTI1MSw3ICsyNTEsNyBAQCBpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRp
b24oU3BlY3VsYXRlCiAKIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkZvckFyaXRobWV0
aWMoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEodmFsdWUgJiAoU3BlY0Rv
dWJsZSB8IFNwZWNJbnQ1MikpOworICAgIHJldHVybiAhKHZhbHVlICYgKFNwZWNGdWxsRG91Ymxl
IHwgU3BlY0ludDUyKSk7CiB9CiAKIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkV4cGVj
dGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkBAIC0yNzYsNyArMjc2LDcgQEAgaW5s
aW5lIGJvb2wgaXNNYWNoaW5lSW50U3BlY3VsYXRpb25FeHBlYwogCiBpbmxpbmUgYm9vbCBpc01h
Y2hpbmVJbnRTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91YmxlKTsKKyAgICByZXR1cm4gISh2YWx1ZSAm
IFNwZWNGdWxsRG91YmxlKTsKIH0KIAogaW5saW5lIGJvb2wgaXNJbnQ1MkFzRG91YmxlU3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkBAIC0yOTYsMTIgKzI5NiwxMiBAQCBpbmxpbmUg
Ym9vbCBpc0RvdWJsZVJlYWxTcGVjdWxhdGlvbihTcGVjCiAKIGlubGluZSBib29sIGlzRG91Ymxl
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhdmFsdWUg
JiYgKHZhbHVlICYgU3BlY0RvdWJsZSkgPT0gdmFsdWU7CisgICAgcmV0dXJuICEhdmFsdWUgJiYg
KHZhbHVlICYgU3BlY0Z1bGxEb3VibGUpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc0Rv
dWJsZVNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gISEodmFsdWUgJiBTcGVjRG91YmxlKTsKKyAgICByZXR1cm4gISEodmFsdWUgJiBT
cGVjRnVsbERvdWJsZSk7CiB9CiAKIGlubGluZSBib29sIGlzQnl0ZWNvZGVSZWFsTnVtYmVyU3Bl
Y3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShy
ZXZpc2lvbiAxNjc0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MCw3ICszNDAsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY0RvdWJsZUltcHVyZU5h
Tik7CiAgICAgICAgIGZvck5vZGUobm9kZSkuZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDkyLDEwICsxMDkyLDEwIEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDUyQXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNGdWxsRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRnVsbERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDE2
NzQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpmaXhU
eXBlRm9yUmVwcmVzZW50YQogICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjTWFjaGluZUludDsK
ICAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKICAgICAgICAgfQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjRG91YmxlKSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEobV90eXBlICYgflNwZWNGdWxsRG91YmxlKSk7CiAgICAgfSBlbHNlIGlm
IChyZXByZXNlbnRhdGlvbiA9PSBOb2RlUmVzdWx0SW50NTIpIHsKICAgICAgICAgaWYgKG1fdHlw
ZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7CiAgICAgICAgICAgICBtX3R5cGUgJj0gflNwZWNJbnQ1
MkFzRG91YmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCShyZXZpc2lvbiAxNjc0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNyArMjY4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIHJlZidpbmcgb24gdGhl
IGNoaWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9tCiAgICAgICAgICAgICAg
ICAgLy8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgogICAgICAgICAgICAgICAgIE5vZGUqIG5ld0Rp
dmlzaW9uID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNEb3VibGUsICpub2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNCeXRlY29kZURvdWJsZSwgKm5vZGUpOwogICAgICAgICAgICAg
ICAgIG5ld0RpdmlzaW9uLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoRG91YmxlQXNJbnQzMik7CkBAIC0x
ODgxLDcgKzE4ODEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uu
bm9kZSgpLCBJbnQ1MlJlcFVzZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgRG91YmxlUmVwLCBub2RlLT5vcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjQnl0ZWNvZGVEb3VibGUs
IERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uu
bm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgICAgIH0KIApAQCAtMTkyNCw3ICsxOTI0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChl
ZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3Jp
Z2luLAogICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBVc2Up
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxNjc0MTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3Rh
dGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgc2V0dGlu
ZyBpdC4KICAgICAgICAgICAgIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09
IEZsdXNoZWREb3VibGUpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzb3VyY2Uu
bV90eXBlICYgflNwZWNEb3VibGUpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
KHNvdXJjZS5tX3R5cGUgJiB+U3BlY0Z1bGxEb3VibGUpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNjc0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDcgKzM3Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKICAgICAgICAgICAgICAgICB8fCBub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpCi0gICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7CisgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Z1bGxEb3VibGUpOwogICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG5vZGUtPmdldEhlYXBQcmVk
aWN0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihTcGVjSW50MzIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2NzQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYzLDYg
KzIxNjMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKE5vZAogICAg
ICAgICAKICAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICAKKyAgICAgICAg
Ly8gSXQncyB2ZXJ5IHRlbXB0aW5nIHRvIGluLXBsYWNlIGZpbHRlciB0aGUgdmFsdWUgdG8gaW5k
aWNhdGUgdGhhdCBpdCdzIG5vdCBpbXB1cmUgTmFOCisgICAgICAgIC8vIGFueW1vcmUuIFVuZm9y
dHVuYXRlbHksIHRoaXMgd291bGQgYmUgdW5zb3VuZC4gSWYgaXQncyBhIEdldExvY2FsIG9yIGlm
IHRoZSB2YWx1ZSB3YXMKKyAgICAgICAgLy8gc3ViamVjdCB0byBhIHByaW9yIFNldExvY2FsLCBm
aWx0ZXJpbmcgdGhlIHZhbHVlIHdvdWxkIGltcGx5IHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcKKyAg
ICAgICAgLy8gbG9jYWwgd2FzIHB1cmlmaWVkLgorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2so
bm9kZS0+Y2hpbGQxKCksIH5TcGVjRG91YmxlSW1wdXJlTmFOKSkKKyAgICAgICAgICAgIG1faml0
LnB1cmlmeU5hTih2YWx1ZUZQUik7CiAKICNpZiBDUFUoWDg2KQogICAgICAgICAvLyBib3hEb3Vi
bGUoKSBvbiBYODYgY2xvYmJlcnMgdGhlIHNvdXJjZSwgc28gd2UgbmVlZCB0byBjb3B5LgpAQCAt
MjUwNyw4ICsyNTE0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25G
bAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAg
ICBtX2ppdC5wdXJpZnlOYU4ocmVzdWx0UmVnKTsKLSAgICAKICAgICBkb3VibGVSZXN1bHQocmVz
dWx0UmVnLCBub2RlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgJKHJldmlzaW9uIDE2NzQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIGlubGluZSBTcGVjdWxh
dGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNCeXRlY29kZU51bWJlcjsKICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAg
ICAgcmV0dXJuIFNwZWNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjRnVsbERvdWJsZTsKICAg
ICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgIHJldHVybiBTcGVjRG91YmxlUmVhbDsK
ICAgICBjYXNlIEJvb2xlYW5Vc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY3NDEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0Myw3ICs3NDMsMTQgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKLSAg
ICAgICAgICAgIHNldEpTVmFsdWUoYm94RG91YmxlKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSkpOworICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9pbnRlcnByZXRlci5uZWVkc1R5
cGVDaGVjayhtX25vZGUtPmNoaWxkMSgpLCB+U3BlY0RvdWJsZUltcHVyZU5hTikpIHsKKyAgICAg
ICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnNlbGVjdCgKKyAgICAgICAgICAgICAgICAgICAgbV9v
dXQuZG91YmxlRXF1YWwodmFsdWUsIHZhbHVlKSwgdmFsdWUsIG1fb3V0LmNvbnN0RG91YmxlKFBO
YU4pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2V0SlNWYWx1
ZShib3hEb3VibGUodmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAgICAgCkBAIC0yMTI3LDggKzIxMzQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5zZWxlY3QoCi0g
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKHJlc3VsdCwgcmVzdWx0KSwgcmVz
dWx0LCBtX291dC5jb25zdERvdWJsZShQTmFOKSk7CiAgICAgICAgICAgICAgICAgc2V0RG91Ymxl
KHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHVyZU5hTi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaAkocmV2aXNpb24gMTY3NDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHVyZU5hTi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gaGF2aW5nIHRvIGNhbGwgcHVy
aWZ5TmFOKCkgaW4gc3VycHJpc2luZyBwbGFjZXMuCiAvLwogLy8gRm9yIG5hbWluZyBwdXJwb3Nl
cywgd2Ugc2F5IHRoYXQgYSBOYU4gaXMgInB1cmUiIGlmIGl0IGlzIHNhZmUgdG8gdGFnLCBpbiB0
aGUgc2Vuc2UKLS8vIHRoYXQgZG9pbmcgc28gd291bGQgcmVzdWx0IGluIGEgdGFnZ2VkIHZhbHVl
IHRoYXQgd291bGQgYmFzZSB0aGUgImFyZSB5b3UgYSBkb3VibGUiCisvLyB0aGF0IGRvaW5nIHNv
IHdvdWxkIHJlc3VsdCBpbiBhIHRhZ2dlZCB2YWx1ZSB0aGF0IHdvdWxkIHBhc3MgdGhlICJhcmUg
eW91IGEgZG91YmxlIgogLy8gdGVzdC4gV2Ugc2F5IHRoYXQgYSBOYU4gaXMgImltcHVyZSIgaWYg
YXR0ZW1wdGluZyB0byB0YWcgaXQgd291bGQgcmVzdWx0IGluIGEgdmFsdWUKIC8vIHRoYXQgd291
bGQgbG9vayBsaWtlIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgZG91YmxlLgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Zsb2F0MzItYXJyYXktbmFuLWlubGluZWQu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9h
dDMyLWFycmF5LW5hbi1pbmxpbmVkLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9hdDMyLWFycmF5LW5hbi1pbmxpbmVkLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgcmV0dXJuIG9b
MF07Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwgeCkgeworICAgIHZhciBpbnRBcnJheSA9IG5ldyBJ
bnQzMkFycmF5KDEpOworICAgIGludEFycmF5WzBdID0gYTsKKyAgICB2YXIgZmxvYXRBcnJheSA9
IG5ldyBGbG9hdDMyQXJyYXkoaW50QXJyYXkuYnVmZmVyKTsKKyAgICB2YXIgZWxlbWVudCA9IGZv
byhmbG9hdEFycmF5KTsKKyAgICB2YXIgcmVzdWx0ID0gZWxlbWVudCArIDE7CisgICAgaWYgKCgi
IiArIHJlc3VsdCkgIT0gKCIiICsgeCkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dCBmb3IgIiArIGEgKyAiOiAiICsgcmVzdWx0ICsgIiwgYnV0IGV4cGVjdGVkOiAiICsgeCArICI7
IGxvYWRlZCAiICsgZWxlbWVudCArICIgZnJvbSB0aGUgYXJyYXkiOworfQorCitub0lubGluZSh0
ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICB0ZXN0KDAsIDEp
OworCit0ZXN0KDB4RkZGRjAwMDAsIDAvMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Zsb2F0MzItYXJyYXktbmFuLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmxvYXQzMi1hcnJheS1uYW4uanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Zsb2F0MzItYXJyYXkt
bmFuLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7
CisgICAgcmV0dXJuIG9bMF07Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2Z1bmN0aW9uIHRlc3Qo
YSwgeCkgeworICAgIHZhciBpbnRBcnJheSA9IG5ldyBJbnQzMkFycmF5KDEpOworICAgIGludEFy
cmF5WzBdID0gYTsKKyAgICB2YXIgZmxvYXRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoaW50QXJy
YXkuYnVmZmVyKTsKKyAgICB2YXIgZWxlbWVudCA9IGZvbyhmbG9hdEFycmF5KTsKKyAgICB2YXIg
cmVzdWx0ID0gZWxlbWVudCArIDE7CisgICAgaWYgKCgiIiArIHJlc3VsdCkgIT0gKCIiICsgeCkp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgIiArIGEgKyAiOiAiICsgcmVz
dWx0ICsgIiwgYnV0IGV4cGVjdGVkOiAiICsgeCArICI7IGxvYWRlZCAiICsgZWxlbWVudCArICIg
ZnJvbSB0aGUgYXJyYXkiOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQor
ICAgIHRlc3QoMCwgMSk7CisKK3Rlc3QoMHhGRkZGMDAwMCwgMC8wKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmxvYXQ2NC1hcnJheS1uYW4taW5saW5lZC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Zsb2F0NjQt
YXJyYXktbmFuLWlubGluZWQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Zsb2F0NjQtYXJyYXktbmFuLWlubGluZWQuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gZm9vKG8pIHsKKyAgICByZXR1cm4gb1swXTsK
K30KKworZnVuY3Rpb24gaXNCaWdFbmRpYW4oKSB7CisgICAgdmFyIHdvcmQgPSBuZXcgSW50MTZB
cnJheSgxKTsKKyAgICB3b3JkWzBdID0gMTsKKyAgICB2YXIgYnl0ZXMgPSBuZXcgSW50OEFycmF5
KHdvcmQuYnVmZmVyKTsKKyAgICByZXR1cm4gIWJ5dGVzWzBdOworfQorCitmdW5jdGlvbiB0ZXN0
KGEsIGIsIHgpIHsKKyAgICB2YXIgaW50QXJyYXkgPSBuZXcgSW50MzJBcnJheSgyKTsKKyAgICBp
bnRBcnJheVswXSA9IGE7CisgICAgaW50QXJyYXlbMV0gPSBiOworICAgIHZhciBmbG9hdEFycmF5
ID0gbmV3IEZsb2F0NjRBcnJheShpbnRBcnJheS5idWZmZXIpOworICAgIHZhciBlbGVtZW50ID0g
Zm9vKGZsb2F0QXJyYXkpOworICAgIHZhciByZXN1bHQgPSBlbGVtZW50ICsgMTsKKyAgICBpZiAo
KCIiICsgcmVzdWx0KSAhPSAoIiIgKyB4KSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0IGZvciAiICsgYSArICIsICIgKyBiICsgIjogIiArIHJlc3VsdCArICIsIGJ1dCBleHBlY3Rl
ZDogIiArIHggKyAiOyBsb2FkZWQgIiArIGVsZW1lbnQgKyAiIGZyb20gdGhlIGFycmF5IjsKK30K
Kworbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisg
ICAgdGVzdCgwLCAwLCAxKTsKKworaWYgKGlzQmlnRW5kaWFuKCkpIHsKKyAgICB0ZXN0KDB4RkZG
RjAwMDAsIDAsIDAvMCk7CisgICAgdGVzdCgwLCAweEZGRkYwMDAwLCAxKTsKK30gZWxzZSB7Cisg
ICAgdGVzdCgweEZGRkYwMDAwLCAwLCAxKTsKKyAgICB0ZXN0KDAsIDB4RkZGRjAwMDAsIDAvMCk7
Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Zsb2F0NjQtYXJy
YXktbmFuLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZmxvYXQ2NC1hcnJheS1uYW4uanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Zsb2F0NjQtYXJyYXktbmFuLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgcmV0dXJuIG9bMF07Cit9CisK
K25vSW5saW5lKGZvbyk7CisKK2Z1bmN0aW9uIGlzQmlnRW5kaWFuKCkgeworICAgIHZhciB3b3Jk
ID0gbmV3IEludDE2QXJyYXkoMSk7CisgICAgd29yZFswXSA9IDE7CisgICAgdmFyIGJ5dGVzID0g
bmV3IEludDhBcnJheSh3b3JkLmJ1ZmZlcik7CisgICAgcmV0dXJuICFieXRlc1swXTsKK30KKwor
ZnVuY3Rpb24gdGVzdChhLCBiLCB4KSB7CisgICAgdmFyIGludEFycmF5ID0gbmV3IEludDMyQXJy
YXkoMik7CisgICAgaW50QXJyYXlbMF0gPSBhOworICAgIGludEFycmF5WzFdID0gYjsKKyAgICB2
YXIgZmxvYXRBcnJheSA9IG5ldyBGbG9hdDY0QXJyYXkoaW50QXJyYXkuYnVmZmVyKTsKKyAgICB2
YXIgZWxlbWVudCA9IGZvbyhmbG9hdEFycmF5KTsKKyAgICB2YXIgcmVzdWx0ID0gZWxlbWVudCAr
IDE7CisgICAgaWYgKCgiIiArIHJlc3VsdCkgIT0gKCIiICsgeCkpCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdCBmb3IgIiArIGEgKyAiLCAiICsgYiArICI6ICIgKyByZXN1bHQgKyAi
LCBidXQgZXhwZWN0ZWQ6ICIgKyB4ICsgIjsgbG9hZGVkICIgKyBlbGVtZW50ICsgIiBmcm9tIHRo
ZSBhcnJheSI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgdGVz
dCgwLCAwLCAxKTsKKworaWYgKGlzQmlnRW5kaWFuKCkpIHsKKyAgICB0ZXN0KDB4RkZGRjAwMDAs
IDAsIDAvMCk7CisgICAgdGVzdCgwLCAweEZGRkYwMDAwLCAxKTsKK30gZWxzZSB7CisgICAgdGVz
dCgweEZGRkYwMDAwLCAwLCAxKTsKKyAgICB0ZXN0KDAsIDB4RkZGRjAwMDAsIDAvMCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229521</attachid>
            <date>2014-04-16 21:25:50 -0700</date>
            <delta_ts>2014-04-16 21:40:33 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17024</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NDE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE0LTA0LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2luayBOYU4gc2FuaXRpemF0aW9uIHRvIHVzZXMgYW5kIHJlbW92ZSBpdCB3aGVuIGl0J3MgdW5u
ZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBtb3ZlcyBOYU4gcHVyaWZpY2F0aW9uIHRvIHN0b3JlcyB0aGF0IGNvdWxk
IHNlZSBhbiBpbXB1cmUgTmFOLgorICAgICAgICAKKyAgICAgICAgNSUgc3BlZWQtdXAgb24gQXNt
QmVuY2gsIDUwJSBzcGVlZC11cCBvbiBBc21CZW5jaC9uLWJvZHkuCisKKyAgICAgICAgKiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc0ludDMyU3BlY3VsYXRpb25G
b3JBcml0aG1ldGljKToKKyAgICAgICAgKEpTQzo6aXNNYWNoaW5lSW50U3BlY3VsYXRpb25Gb3JB
cml0aG1ldGljKToKKyAgICAgICAgKEpTQzo6aXNEb3VibGVTcGVjdWxhdGlvbik6CisgICAgICAg
IChKU0M6OmlzRG91YmxlU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdFZhbHVlOjpmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIGRmZy9ERkdG
aXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVDb252ZXJzaW9uc0Zv
ckVkZ2UpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFRhaWwpOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAqIGRm
Zy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dl
ckRGR1RvTExWTTo6Y29tcGlsZVZhbHVlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKiBydW50aW1lL1B1cmVOYU4uaDoK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZmxvYXQzMi1hcnJheS1uYW4taW5saW5lZC5qczogQWRk
ZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2Zsb2F0MzItYXJyYXktbmFuLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZmxvYXQ2NC1hcnJheS1uYW4taW5saW5l
ZC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAoaXNCaWdFbmRpYW4pOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Zsb2F0NjQtYXJyYXktbmFuLmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChpc0JpZ0VuZGlhbik6CisgICAgICAg
ICh0ZXN0KToKKwogMjAxNC0wNC0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2VkIFdpbmRvd3MgZ2FyZGVuaW5nLiBSZXN0cmlj
dCBvdXIgbmV3ICdpc2luZicgY2hlY2sKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZpc2lvbiAxNjc0MTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVB1
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZUltcHVyZU5hTiAgICA9IDB4
MDQwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIE5hTiB0aGF0IGlzIHVuc2FmZSB0byB0YWcg
KGkuZS4gaW1wdXJlKS4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFO
ICAgICAgICAgID0gMHgwNjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBO
YU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlRG91YmxlICAgICA9
IDB4MDM4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUsIGJ1
dCBpdCdzIGRlZmluaXRlbHkgbm90IGltcHVyZSBOYU4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZSAgICAgICAgICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVy
IGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Z1bGxEb3VibGUgICAgICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9u
LU5hTiBvciBhIE5hTiBkb3VibGUuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5
dGVjb2RlUmVhbE51bWJlciA9IDB4MDFhMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9y
IGEgRG91YmxlUmVhbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFJlYWxO
dW1iZXIgICAgID0gMHgwMWUwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3Vi
bGVSZWFsLCBvciBhIEludDUyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZU51bWJlciAgICAgPSAweDAzYTAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBh
IERvdWJsZSwgYW5kIHRoZSBEb3VibGUgY2Fubm90IGJlIGFuIGltcHVyZSBOYU4uCkBAIC0yNTEs
NyArMjUxLDcgQEAgaW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0ZQogCiBp
bmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQogewotICAgIHJldHVybiAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NTIp
KTsKKyAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRnVsbERvdWJsZSB8IFNwZWNJbnQ1MikpOwog
fQogCiBpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQpAQCAtMjc2LDcgKzI3Niw3IEBAIGlubGluZSBib29sIGlzTWFjaGlu
ZUludFNwZWN1bGF0aW9uRXhwZWMKIAogaW5saW5lIGJvb2wgaXNNYWNoaW5lSW50U3BlY3VsYXRp
b25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAhKHZh
bHVlICYgU3BlY0RvdWJsZSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRnVsbERvdWJsZSk7
CiB9CiAKIGlubGluZSBib29sIGlzSW50NTJBc0RvdWJsZVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQpAQCAtMjk2LDEyICsyOTYsMTIgQEAgaW5saW5lIGJvb2wgaXNEb3VibGVSZWFs
U3BlY3VsYXRpb24oU3BlYwogCiBpbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNE
b3VibGUpID09IHZhbHVlOworICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNGdWxs
RG91YmxlKSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNEb3VibGVTcGVjdWxhdGlvbkZv
ckFyaXRobWV0aWMoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVl
ICYgU3BlY0RvdWJsZSk7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxEb3VibGUpOwog
fQogCiBpbmxpbmUgYm9vbCBpc0J5dGVjb2RlUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTY3NDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsNyArMzQwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNEb3VibGVJbXB1cmVOYU4pOwogICAgICAgICBmb3JO
b2RlKG5vZGUpLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMTA5MiwxMCArMTA5MiwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQ1MkFzRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5
OjpGbG9hdDMyQXJyYXk6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0J5
dGVjb2RlRG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRnVs
bERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2
NEFycmF5OgotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCeXRlY29kZURv
dWJsZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Z1bGxEb3VibGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjc0MTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw3ICs5NSw3IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGEK
ICAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY01hY2hpbmVJbnQ7CiAgICAgICAgICAgICBtX3R5
cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIShtX3R5cGUgJiB+U3BlY0RvdWJsZSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1f
dHlwZSAmIH5TcGVjRnVsbERvdWJsZSkpOwogICAgIH0gZWxzZSBpZiAocmVwcmVzZW50YXRpb24g
PT0gTm9kZVJlc3VsdEludDUyKSB7CiAgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTJBc0Rv
dWJsZSkgewogICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjSW50NTJBc0RvdWJsZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MTY3NDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY4LDcgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyByZWYnaW5nIG9uIHRoZSBjaGlsZHJlbiBiZWNhdXNl
IHdlJ3JlIHN0ZWFsaW5nIHRoZW0gZnJvbQogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5h
bCBkaXZpc2lvbi4KICAgICAgICAgICAgICAgICBOb2RlKiBuZXdEaXZpc2lvbiA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjRG91YmxlLCAqbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjQnl0ZWNvZGVEb3VibGUsICpub2RlKTsKICAgICAgICAgICAgICAgICBuZXdEaXZpc2lvbi0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIG5vZGUtPnNldE9wKERvdWJsZUFzSW50MzIpOwpAQCAtMTg4MSw3ICsxODgxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBV
c2UpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBEb3VibGVSZXAsIG5vZGUt
Pm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNl
KSk7CiAgICAgICAgICAgICB9CiAKQEAgLTE5MjQsNyArMTkyNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVz
dWx0KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgVmFs
dWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNCeXRlY29kZURvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAg
ICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTY3NDEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4Nyw3ICsyODcsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRU
CiAgICAgICAgICAgICAvLyBiZWZvcmUgYW5kIGFmdGVyIHNldHRpbmcgaXQuCiAgICAgICAgICAg
ICBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGlmIChub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSA9PSBGbHVzaGVkRG91YmxlKQot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91
YmxlKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzb3VyY2UubV90eXBlICYg
flNwZWNGdWxsRG91YmxlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAg
IGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3NDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw3ICszNzMsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUZs
b2F0MzJBcnJheSgpCiAgICAgICAgICAgICAgICAgfHwgbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNGdWxsRG91YmxlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGlzSW50MzJTcGVjdWxhdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKSkKICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAxNjc0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2Myw2ICsyMTYzLDEzIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVJlcChOb2QKICAgICAgICAgCiAgICAgICAgIEZQ
UlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEl0J3MgdmVyeSB0ZW1w
dGluZyB0byBpbi1wbGFjZSBmaWx0ZXIgdGhlIHZhbHVlIHRvIGluZGljYXRlIHRoYXQgaXQncyBu
b3QgaW1wdXJlIE5hTgorICAgICAgICAvLyBhbnltb3JlLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIHdv
dWxkIGJlIHVuc291bmQuIElmIGl0J3MgYSBHZXRMb2NhbCBvciBpZiB0aGUgdmFsdWUgd2FzCisg
ICAgICAgIC8vIHN1YmplY3QgdG8gYSBwcmlvciBTZXRMb2NhbCwgZmlsdGVyaW5nIHRoZSB2YWx1
ZSB3b3VsZCBpbXBseSB0aGF0IHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIC8vIGxvY2FsIHdh
cyBwdXJpZmllZC4KKyAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCB+
U3BlY0RvdWJsZUltcHVyZU5hTikpCisgICAgICAgICAgICBtX2ppdC5wdXJpZnlOYU4odmFsdWVG
UFIpOwogCiAjaWYgQ1BVKFg4NikKICAgICAgICAgLy8gYm94RG91YmxlKCkgb24gWDg2IGNsb2Ji
ZXJzIHRoZSBzb3VyY2UsIHNvIHdlIG5lZWQgdG8gY29weS4KQEAgLTI1MDcsOCArMjUxNCw2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmwKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgbV9qaXQucHVyaWZ5TmFO
KHJlc3VsdFJlZyk7Ci0gICAgCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAx
Njc0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRl
ckZvcihVc2VLCiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgIHJldHVybiBTcGVjQnl0ZWNv
ZGVOdW1iZXI7CiAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjRG91
YmxlOworICAgICAgICByZXR1cm4gU3BlY0Z1bGxEb3VibGU7CiAgICAgY2FzZSBEb3VibGVSZXBS
ZWFsVXNlOgogICAgICAgICByZXR1cm4gU3BlY0RvdWJsZVJlYWw7CiAgICAgY2FzZSBCb29sZWFu
VXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAJKHJldmlzaW9uIDE2NzQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDMsNyArNzQzLDE0IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7Ci0gICAgICAgICAgICBzZXRKU1Zh
bHVlKGJveERvdWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKG1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2sobV9ub2RlLT5j
aGlsZDEoKSwgflNwZWNEb3VibGVJbXB1cmVOYU4pKSB7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSBtX291dC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKHZh
bHVlLCB2YWx1ZSksIHZhbHVlLCBtX291dC5jb25zdERvdWJsZShQTmFOKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94RG91YmxlKHZhbHVl
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjEy
Nyw4ICsyMTM0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc2VsZWN0KAotICAgICAgICAgICAgICAgICAg
ICBtX291dC5kb3VibGVFcXVhbChyZXN1bHQsIHJlc3VsdCksIHJlc3VsdCwgbV9vdXQuY29uc3RE
b3VibGUoUE5hTikpOwogICAgICAgICAgICAgICAgIHNldERvdWJsZShyZXN1bHQpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1B1cmVOYU4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QdXJlTmFOLmgJKHJldmlzaW9uIDE2NzQxMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIC8vIGhhdmluZyB0byBjYWxsIHB1cmlmeU5hTigpIGluIHN1cnBy
aXNpbmcgcGxhY2VzLgogLy8KIC8vIEZvciBuYW1pbmcgcHVycG9zZXMsIHdlIHNheSB0aGF0IGEg
TmFOIGlzICJwdXJlIiBpZiBpdCBpcyBzYWZlIHRvIHRhZywgaW4gdGhlIHNlbnNlCi0vLyB0aGF0
IGRvaW5nIHNvIHdvdWxkIHJlc3VsdCBpbiBhIHRhZ2dlZCB2YWx1ZSB0aGF0IHdvdWxkIGJhc2Ug
dGhlICJhcmUgeW91IGEgZG91YmxlIgorLy8gdGhhdCBkb2luZyBzbyB3b3VsZCByZXN1bHQgaW4g
YSB0YWdnZWQgdmFsdWUgdGhhdCB3b3VsZCBwYXNzIHRoZSAiYXJlIHlvdSBhIGRvdWJsZSIKIC8v
IHRlc3QuIFdlIHNheSB0aGF0IGEgTmFOIGlzICJpbXB1cmUiIGlmIGF0dGVtcHRpbmcgdG8gdGFn
IGl0IHdvdWxkIHJlc3VsdCBpbiBhIHZhbHVlCiAvLyB0aGF0IHdvdWxkIGxvb2sgbGlrZSBzb21l
dGhpbmcgb3RoZXIgdGhhbiBhIGRvdWJsZS4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9mbG9hdDMyLWFycmF5LW5hbi1pbmxpbmVkLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmxvYXQzMi1hcnJheS1uYW4taW5s
aW5lZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZmxvYXQzMi1hcnJheS1uYW4taW5saW5lZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIwIEBACitmdW5jdGlvbiBmb28obykgeworICAgIHJldHVybiBvWzBdOworfQorCitmdW5jdGlv
biB0ZXN0KGEsIHgpIHsKKyAgICB2YXIgaW50QXJyYXkgPSBuZXcgSW50MzJBcnJheSgxKTsKKyAg
ICBpbnRBcnJheVswXSA9IGE7CisgICAgdmFyIGZsb2F0QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5
KGludEFycmF5LmJ1ZmZlcik7CisgICAgdmFyIGVsZW1lbnQgPSBmb28oZmxvYXRBcnJheSk7Cisg
ICAgdmFyIHJlc3VsdCA9IGVsZW1lbnQgKyAxOworICAgIGlmICgoIiIgKyByZXN1bHQpICE9ICgi
IiArIHgpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgZm9yICIgKyBhICsgIjog
IiArIHJlc3VsdCArICIsIGJ1dCBleHBlY3RlZDogIiArIHggKyAiOyBsb2FkZWQgIiArIGVsZW1l
bnQgKyAiIGZyb20gdGhlIGFycmF5IjsKK30KKworbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgdGVzdCgwLCAxKTsKKwordGVzdCgweEZGRkYw
MDAwLCAwLzApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9h
dDMyLWFycmF5LW5hbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Zsb2F0MzItYXJyYXktbmFuLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9hdDMyLWFycmF5LW5hbi5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiBmb28obykgeworICAgIHJldHVybiBvWzBd
OworfQorCitub0lubGluZShmb28pOworCitmdW5jdGlvbiB0ZXN0KGEsIHgpIHsKKyAgICB2YXIg
aW50QXJyYXkgPSBuZXcgSW50MzJBcnJheSgxKTsKKyAgICBpbnRBcnJheVswXSA9IGE7CisgICAg
dmFyIGZsb2F0QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGludEFycmF5LmJ1ZmZlcik7CisgICAg
dmFyIGVsZW1lbnQgPSBmb28oZmxvYXRBcnJheSk7CisgICAgdmFyIHJlc3VsdCA9IGVsZW1lbnQg
KyAxOworICAgIGlmICgoIiIgKyByZXN1bHQpICE9ICgiIiArIHgpKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQgZm9yICIgKyBhICsgIjogIiArIHJlc3VsdCArICIsIGJ1dCBleHBl
Y3RlZDogIiArIHggKyAiOyBsb2FkZWQgIiArIGVsZW1lbnQgKyAiIGZyb20gdGhlIGFycmF5IjsK
K30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICB0ZXN0KDAsIDEpOwor
Cit0ZXN0KDB4RkZGRjAwMDAsIDAvMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Zsb2F0NjQtYXJyYXktbmFuLWlubGluZWQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9hdDY0LWFycmF5LW5hbi1pbmxpbmVk
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9m
bG9hdDY0LWFycmF5LW5hbi1pbmxpbmVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgcmV0dXJuIG9bMF07Cit9CisKK2Z1bmN0aW9uIGlz
QmlnRW5kaWFuKCkgeworICAgIHZhciB3b3JkID0gbmV3IEludDE2QXJyYXkoMSk7CisgICAgd29y
ZFswXSA9IDE7CisgICAgdmFyIGJ5dGVzID0gbmV3IEludDhBcnJheSh3b3JkLmJ1ZmZlcik7Cisg
ICAgcmV0dXJuICFieXRlc1swXTsKK30KKworZnVuY3Rpb24gdGVzdChhLCBiLCB4KSB7CisgICAg
dmFyIGludEFycmF5ID0gbmV3IEludDMyQXJyYXkoMik7CisgICAgaW50QXJyYXlbMF0gPSBhOwor
ICAgIGludEFycmF5WzFdID0gYjsKKyAgICB2YXIgZmxvYXRBcnJheSA9IG5ldyBGbG9hdDY0QXJy
YXkoaW50QXJyYXkuYnVmZmVyKTsKKyAgICB2YXIgZWxlbWVudCA9IGZvbyhmbG9hdEFycmF5KTsK
KyAgICB2YXIgcmVzdWx0ID0gZWxlbWVudCArIDE7CisgICAgaWYgKCgiIiArIHJlc3VsdCkgIT0g
KCIiICsgeCkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgIiArIGEgKyAi
LCAiICsgYiArICI6ICIgKyByZXN1bHQgKyAiLCBidXQgZXhwZWN0ZWQ6ICIgKyB4ICsgIjsgbG9h
ZGVkICIgKyBlbGVtZW50ICsgIiBmcm9tIHRoZSBhcnJheSI7Cit9CisKK25vSW5saW5lKHRlc3Qp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIHRlc3QoMCwgMCwgMSk7
CisKK2lmIChpc0JpZ0VuZGlhbigpKSB7CisgICAgdGVzdCgweEZGRkYwMDAwLCAwLCAwLzApOwor
ICAgIHRlc3QoMCwgMHhGRkZGMDAwMCwgMSk7Cit9IGVsc2UgeworICAgIHRlc3QoMHhGRkZGMDAw
MCwgMCwgMSk7CisgICAgdGVzdCgwLCAweEZGRkYwMDAwLCAwLzApOworfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9hdDY0LWFycmF5LW5hbi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Zsb2F0NjQtYXJyYXkt
bmFuLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9mbG9hdDY0LWFycmF5LW5hbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACitm
dW5jdGlvbiBmb28obykgeworICAgIHJldHVybiBvWzBdOworfQorCitub0lubGluZShmb28pOwor
CitmdW5jdGlvbiBpc0JpZ0VuZGlhbigpIHsKKyAgICB2YXIgd29yZCA9IG5ldyBJbnQxNkFycmF5
KDEpOworICAgIHdvcmRbMF0gPSAxOworICAgIHZhciBieXRlcyA9IG5ldyBJbnQ4QXJyYXkod29y
ZC5idWZmZXIpOworICAgIHJldHVybiAhYnl0ZXNbMF07Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwg
YiwgeCkgeworICAgIHZhciBpbnRBcnJheSA9IG5ldyBJbnQzMkFycmF5KDIpOworICAgIGludEFy
cmF5WzBdID0gYTsKKyAgICBpbnRBcnJheVsxXSA9IGI7CisgICAgdmFyIGZsb2F0QXJyYXkgPSBu
ZXcgRmxvYXQ2NEFycmF5KGludEFycmF5LmJ1ZmZlcik7CisgICAgdmFyIGVsZW1lbnQgPSBmb28o
ZmxvYXRBcnJheSk7CisgICAgdmFyIHJlc3VsdCA9IGVsZW1lbnQgKyAxOworICAgIGlmICgoIiIg
KyByZXN1bHQpICE9ICgiIiArIHgpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQg
Zm9yICIgKyBhICsgIiwgIiArIGIgKyAiOiAiICsgcmVzdWx0ICsgIiwgYnV0IGV4cGVjdGVkOiAi
ICsgeCArICI7IGxvYWRlZCAiICsgZWxlbWVudCArICIgZnJvbSB0aGUgYXJyYXkiOworfQorCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIHRlc3QoMCwgMCwgMSk7CisKK2lm
IChpc0JpZ0VuZGlhbigpKSB7CisgICAgdGVzdCgweEZGRkYwMDAwLCAwLCAwLzApOworICAgIHRl
c3QoMCwgMHhGRkZGMDAwMCwgMSk7Cit9IGVsc2UgeworICAgIHRlc3QoMHhGRkZGMDAwMCwgMCwg
MSk7CisgICAgdGVzdCgwLCAweEZGRkYwMDAwLCAwLzApOworfQo=
</data>
<flag name="review"
          id="253893"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>