<?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>102017</bug_id>
          
          <creation_ts>2012-11-12 17:20:17 -0800</creation_ts>
          <short_desc>DFG CreateThis should be able to statically account for the structure of the object it creates, if profiling indicates that this structure is always the same</short_desc>
          <delta_ts>2012-11-13 23:27:56 -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>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>102016</dependson>
    
    <dependson>102047</dependson>
    
    <dependson>102062</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765016</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-12 17:20:17 -0800</bug_when>
    <thetext>I will hack this up after https://bugs.webkit.org/show_bug.cgi?id=102016 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765380</commentid>
    <comment_count>1</comment_count>
      <attachid>173848</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-13 01:11:37 -0800</bug_when>
    <thetext>Created attachment 173848
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766028</commentid>
    <comment_count>2</comment_count>
      <attachid>173981</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-13 14:01:23 -0800</bug_when>
    <thetext>Created attachment 173981
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766038</commentid>
    <comment_count>3</comment_count>
      <attachid>173981</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-13 14:09:21 -0800</bug_when>
    <thetext>Comment on attachment 173981
the patch

I think you missed a clear inside defineOwnProperty().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766040</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-13 14:14:39 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 173981 [details])
&gt; I think you missed a clear inside defineOwnProperty().

Good catch!  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766070</commentid>
    <comment_count>5</comment_count>
      <attachid>173992</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-13 14:41:13 -0800</bug_when>
    <thetext>Created attachment 173992
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766080</commentid>
    <comment_count>6</comment_count>
      <attachid>173992</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-13 14:49:40 -0800</bug_when>
    <thetext>Comment on attachment 173992
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766493</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-13 23:27:56 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/134555</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173848</attachid>
            <date>2012-11-13 01:11:37 -0800</date>
            <delta_ts>2012-11-13 14:01:23 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>createthis.patch</filename>
            <type>text/plain</type>
            <size>13079</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0Mzg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTExLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIENyZWF0ZVRoaXMgc2hvdWxkIGJlIGFibGUgdG8gc3RhdGljYWxseSBhY2NvdW50IGZvciB0
aGUgc3RydWN0dXJlIG9mIHRoZSBvYmplY3QgaXQgY3JlYXRlcywgaWYgcHJvZmlsaW5nIGluZGlj
YXRlcyB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFsd2F5cyB0aGUgc2FtZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMDE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0Z1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpmdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoK
KyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpT
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp0cnlHZXRLbm93
bkluaGVyaXRvcklEKToKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjphZGRJbmhlcml0b3JJRFdhdGNocG9pbnQpOgorCiAyMDEyLTExLTEzICBQZXRlciBH
YWwgIDxnYWxwZXRlckBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgRml4IHRoZSBBUk0gdHJh
ZGl0aW9uYWwgYnVpbGQgYWZ0ZXIgcjEzNDMzMgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzQzNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjc4LDEwICsxMjc4LDE0IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNp
Z25lZCBpbmQKICAgICAgICAgZGVzdGluYXRpb24uc2V0KFNwZWNGaW5hbE9iamVjdCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNocG9p
bnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKLSAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUuY29kZU9yaWdpbiktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpOworICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KG5vZGUuc3RydWN0dXJlKCkpOwogICAgICAgICBtX2hhdmVTdHJ1Y3R1
cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNDM2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTI1LDEyICsyMTI1LDIzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7CiAg
ICAgICAgICAgICBpbnQgY2FsbGVlT3BlcmFuZCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
YWRkVG9HcmFwaChDcmVhdGVUaGlzLCBnZXQoY2FsbGVlT3BlcmFuZCkpKTsKKyAgICAgICAgICAg
IE5vZGVJbmRleCBjYWxsZWUgPSBnZXQoY2FsbGVlT3BlcmFuZCk7CisgICAgICAgICAgICBib29s
IGFscmVhZHlFbWl0dGVkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobV9ncmFwaFtjYWxsZWVd
Lm9wKCkgPT0gV2Vha0pTQ29uc3RhbnQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGlu
aGVyaXRvcklEID0gbV9ncmFwaFtjYWxsZWVdLmZ1bmN0aW9uKCktPnRyeUdldEtub3duSW5oZXJp
dG9ySUQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5oZXJpdG9ySUQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChJbmhlcml0b3JJRFdhdGNocG9pbnQsIE9wSW5mbyhtX2dyYXBo
W2NhbGxlZV0uZnVuY3Rpb24oKSkpOworICAgICAgICAgICAgICAgICAgICBzZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhpbmhl
cml0b3JJRCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYWxyZWFkeUVtaXR0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYWxyZWFk
eUVtaXR0ZWQpCisgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIGFkZFRvR3JhcGgoQ3JlYXRlVGhpcywgY2FsbGVlKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9jcmVhdGVfdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIG9wX25ld19vYmplY3Q6IHsKLSAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKE5ld09iamVjdCkpOworICAgICAgICAgICAgc2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBP
cEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5lbXB0
eU9iamVjdFN0cnVjdHVyZSgpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X29i
amVjdCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE3OSw3ICsyMTkwLDE3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2NhbGxlZTogewotICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldChKU1N0YWNrOjpDYWxsZWUpKTsKKyAg
ICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnByb2ZpbGU7CisgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
KTsKKyAgICAgICAgICAgIGlmIChwcm9maWxlLT5tX3NpbmdsZXRvblZhbHVlSXNUb3AKKyAgICAg
ICAgICAgICAgICB8fCAhcHJvZmlsZS0+bV9zaW5nbGV0b25WYWx1ZQorICAgICAgICAgICAgICAg
IHx8ICFwcm9maWxlLT5tX3NpbmdsZXRvblZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAg
IHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXQoSlNTdGFjazo6Q2FsbGVl
KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggYWN0dWFs
Q2FsbGVlID0gZ2V0KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja0Z1bmN0aW9uLCBPcEluZm8ocHJvZmlsZS0+bV9zaW5nbGV0b25WYWx1ZS5hc0NlbGwo
KSksIGFjdHVhbENhbGxlZSk7CisgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhwcm9maWxl
LT5tX3NpbmdsZXRvblZhbHVlLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfZ2V0X2NhbGxlZSk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEzNDM2MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzYsMTQgKzY3Niwy
MCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fb3BJ
bmZvMiwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzRnVuY3Rpb25DaGVj
a0RhdGEoKQorICAgIGJvb2wgaGFzRnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9w
KCkgPT0gQ2hlY2tGdW5jdGlvbjsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNh
c2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNocG9pbnQ6Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNGdW5jdGlvbkNoZWNrRGF0YSgpKTsKKyAgICAg
ICAgQVNTRVJUKGhhc0Z1bmN0aW9uKCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxKU0Z1bmN0aW9uKj4obV9vcEluZm8pOwogICAgIH0KIApAQCAtNzI5LDYgKzczNSw3IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoK
ICAgICAgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CiAgICAg
ICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKKyAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJ
KHJldmlzaW9uIDEzNDM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oSW5oZXJpdG9ySURXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAg
IC8qIE9wdGltaXphdGlvbnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKICAgICBtYWNybyhBcnJh
eVB1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3Js
ZCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMzQzNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBKU0NlbGwqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5jYWNoZWRJbmhl
cml0b3JJRChleGVjKSk7CiB9CiAKLUpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQorSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKICAgICAKLSAgICByZXR1
cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEzNDM2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
NyArMTE4LDcgQEAgdHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYQogdHlw
ZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVN0WikoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKiwgaW50MzJfdCk7CiAKIC8vIFRoZXNlIHJvdXRpbmVzIGFyZSBwcm92aWRl
IGNhbGxiYWNrcyBvdXQgdG8gQysrIGltcGxlbWVudGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBj
b21wbGV4IHRvIEpJVC4KLUpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3Qo
RXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqLCBKU0NlbGwqIGNv
bnN0cnVjdG9yKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbnZlcnRUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDEzNDM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNiArNzYwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CiAgICAg
ICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBHYXJiYWdlVmFsdWU6
CisgICAgICAgIGNhc2UgSW5oZXJpdG9ySURXYXRjaHBvaW50OgogICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzNDM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MTMsNiAr
MzkxMywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNocG9pbnQ6IHsKKyAg
ICAgICAgbm9kZS5mdW5jdGlvbigpLT5hZGRJbmhlcml0b3JJRFdhdGNocG9pbnQoc3BlY3VsYXRp
b25XYXRjaHBvaW50KCkpOworICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0zOTIzLDkgKzM5MjksOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgICAgIAotICAgICAgICBlbWl0QWxsb2NhdGVK
U0ZpbmFsT2JqZWN0KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbE9i
amVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKSwgcmVzdWx0
R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisgICAgICAgIGVtaXRBbGxvY2F0ZUpTRmluYWxP
YmplY3QoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5zdHJ1Y3R1cmUoKSksIHJl
c3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgICAgICAKLSAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdP
YmplY3QsIHJlc3VsdEdQUikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld09iamVjdCwgcmVzdWx0R1BSLCBub2Rl
LnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTQwODEsNyArNDA4Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgY2Fz
ZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9u
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENhY2hl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS5mdW5jdGlvbigpKSk7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkQ2FjaGUsIEpTVmFsdWVSZWdzKGZ1bmN0aW9uLmdwcigpKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1
bmN0aW9uLmdwcigpLCBub2RlLmZ1bmN0aW9uKCkpKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21w
aWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTM0MzYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDYgKzgwLDcgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IAogICAgIDogQmFzZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIG1fZXhl
Y3V0YWJsZSgpCiAgICAgLCBtX3Njb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFs
T2JqZWN0KQorICAgICwgbV9pbmhlcml0b3JJRFdhdGNocG9pbnQoSW5pdGlhbGl6ZWRCbGluZCkK
IHsKIH0KIApAQCAtMzQwLDYgKzM0MSw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1MKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tX2NhY2hlZEluaGVyaXRv
cklELmNsZWFyKCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySURXYXRjaHBvaW50
Lm5vdGlmeVdyaXRlKCk7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHRoaXMgdG8gYmUgY2FjaGVk
LCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBjbGVhciBtX2NhY2hlZEluaGVyaXRvcklELgogICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlOwogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEzNDM2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTU2NvcGUuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC0xMjksNiArMTMwLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIG1fY2FjaGVkSW5oZXJpdG9ySUQuZ2V0KCk7CiAgICAgICAgIH0KIAorICAgICAgICBT
dHJ1Y3R1cmUqIHRyeUdldEtub3duSW5oZXJpdG9ySUQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW1fY2FjaGVkSW5oZXJpdG9ySUQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICBpZiAobV9pbmhlcml0b3JJRFdhdGNocG9pbnQuaGFzQmVlbkludmFsaWRhdGVk
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbV9jYWNo
ZWRJbmhlcml0b3JJRC5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBh
ZGRJbmhlcml0b3JJRFdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKHRyeUdldEtub3duSW5oZXJpdG9ySUQoKSk7CisgICAgICAg
ICAgICBtX2luaGVyaXRvcklEV2F0Y2hwb2ludC5hZGQod2F0Y2hwb2ludCk7CisgICAgICAgIH0K
KwogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mQ2FjaGVkSW5oZXJpdG9ySUQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1f
Y2FjaGVkSW5oZXJpdG9ySUQpOwpAQCAtMTY5LDYgKzE4NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTU2NvcGU+IG1fc2NvcGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fY2FjaGVkSW5oZXJpdG9ySUQ7CisgICAgICAgIElubGluZVdhdGNocG9pbnRT
ZXQgbV9pbmhlcml0b3JJRFdhdGNocG9pbnQ7CiAgICAgfTsKIAogICAgIGlubGluZSBib29sIEpT
VmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173981</attachid>
            <date>2012-11-13 14:01:23 -0800</date>
            <delta_ts>2012-11-13 14:41:13 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>createthis.patch</filename>
            <type>text/plain</type>
            <size>22067</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0NDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTExLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIENyZWF0ZVRoaXMgc2hvdWxkIGJlIGFibGUgdG8gc3RhdGljYWxseSBhY2NvdW50IGZvciB0
aGUgc3RydWN0dXJlIG9mIHRoZSBvYmplY3QgaXQgY3JlYXRlcywgaWYgcHJvZmlsaW5nIGluZGlj
YXRlcyB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFsd2F5cyB0aGUgc2FtZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMDE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIGEgd2F0Y2hwb2lu
dCBpbiBKU0Z1bmN0aW9uIG9uIHRoZSBjYWNoZWQgaW5oZXJpdG9yIElELiBJdCBhbHNvIGNoYW5n
ZXMKKyAgICAgICAgTmV3T2JqZWN0IHRvIHRha2UgYSBzdHJ1Y3R1cmUgYXMgYW4gb3BlcmFuZCAo
cHJldmlvdXNseSBpdCBpbXBsaWNpdGx5IHVzZWQgdGhlIG93bmluZworICAgICAgICBnbG9iYWwg
b2JqZWN0J3MgZW1wdHkgb2JqZWN0IHN0cnVjdHVyZSkuIEFueSBHZXRDYWxsZWUgd2hlcmUgdGhl
IGNhbGxlZSBpcyBwcmVkaWN0YWJsZQorICAgICAgICBpcyB0dXJuZWQgaW50byBhIENoZWNrRnVu
Y3Rpb24gKyBXZWFrSlNDb25zdGFudCwgYW5kIGFueSBDcmVhdGVUaGlzIG9uIGEgV2Vha0pTQ29u
c3RhbnQKKyAgICAgICAgd2hlcmUgdGhlIGluaGVyaXRvciBJRCB3YXRjaHBvaW50IGlzIHN0aWxs
IHZhbGlkIGlzIHR1cm5lZCBpbnRvIGFuIEluaGVyaXRvcklEV2F0Y2hwb2ludAorICAgICAgICBm
b2xsb3dlZCBieSBhIE5ld09iamVjdC4gTmV3T2JqZWN0IGFscmVhZHkgYWNjb3VudHMgZm9yIHRo
ZSBzdHJ1Y3R1cmUgaXQgdXNlcyBmb3Igb2JqZWN0CisgICAgICAgIGNyZWF0aW9uIGluIHRoZSBD
RkEuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6Y2hlY2tGdW5jdGlvbkVsaW1pbmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpmdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERG
Ryk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIHJ1
bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp0
cnlHZXRLbm93bkluaGVyaXRvcklEKToKKyAgICAgICAgKEpTRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjphZGRJbmhlcml0b3JJRFdhdGNocG9pbnQpOgorCiAyMDEyLTExLTEz
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNGdW5jdGlvbiBh
bmQgaXRzIGRlc2NlbmRhbnRzIHNob3VsZCBiZSBkZXN0cnVjdGlibGUKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTM0
NDYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI3OCwxMCArMTI3OCwxNCBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGRlc3RpbmF0aW9uLnNldChTcGVjRmluYWxP
YmplY3QpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW5oZXJp
dG9ySURXYXRjaHBvaW50OgorICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChm
YWxzZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChub2RlLnN0cnVjdHVyZSgpKTsKICAgICAgICAg
bV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxMzQ0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyNSwxMiArMjEyNSwyNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfdGhpczogewogICAgICAgICAgICAgaW50IGNhbGxlZU9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQ3JlYXRlVGhpcywgZ2V0KGNhbGxlZU9wZXJhbmQpKSk7
CisgICAgICAgICAgICBOb2RlSW5kZXggY2FsbGVlID0gZ2V0KGNhbGxlZU9wZXJhbmQpOworICAg
ICAgICAgICAgYm9vbCBhbHJlYWR5RW1pdHRlZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKG1f
Z3JhcGhbY2FsbGVlXS5vcCgpID09IFdlYWtKU0NvbnN0YW50KSB7CisgICAgICAgICAgICAgICAg
SlNDZWxsKiBjZWxsID0gbV9ncmFwaFtjYWxsZWVdLndlYWtDb25zdGFudCgpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChjZWxsLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNlbGwpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogaW5oZXJp
dG9ySUQgPSBmdW5jdGlvbi0+dHJ5R2V0S25vd25Jbmhlcml0b3JJRCgpOworICAgICAgICAgICAg
ICAgIGlmIChpbmhlcml0b3JJRCkgeworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKElu
aGVyaXRvcklEV2F0Y2hwb2ludCwgT3BJbmZvKGZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKE5ld09i
amVjdCwgT3BJbmZvKGluaGVyaXRvcklEKSkpOworICAgICAgICAgICAgICAgICAgICBhbHJlYWR5
RW1pdHRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCFhbHJlYWR5RW1pdHRlZCkKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChDcmVhdGVUaGlzLCBjYWxsZWUpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV90aGlzKTsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewotICAgICAgICAgICAgc2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoTmV3T2JqZWN0KSk7
CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9H
cmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9uZXdfb2JqZWN0KTsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMTc5
LDcgKzIxOTQsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOiB7Ci0g
ICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0KEpTU3Rh
Y2s6OkNhbGxlZSkpOworICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUucHJvZmlsZTsKKyAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYgKHByb2ZpbGUtPm1fc2luZ2xldG9u
VmFsdWVJc1RvcAorICAgICAgICAgICAgICAgIHx8ICFwcm9maWxlLT5tX3NpbmdsZXRvblZhbHVl
CisgICAgICAgICAgICAgICAgfHwgIXByb2ZpbGUtPm1fc2luZ2xldG9uVmFsdWUuaXNDZWxsKCkp
CisgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdl
dChKU1N0YWNrOjpDYWxsZWUpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IEFTU0VSVChwcm9maWxlLT5tX3NpbmdsZXRvblZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cygmSlNG
dW5jdGlvbjo6c19pbmZvKSk7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IGFjdHVhbENhbGxl
ZSA9IGdldChKU1N0YWNrOjpDYWxsZWUpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hl
Y2tGdW5jdGlvbiwgT3BJbmZvKHByb2ZpbGUtPm1fc2luZ2xldG9uVmFsdWUuYXNDZWxsKCkpLCBh
Y3R1YWxDYWxsZWUpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8ocHJvZmlsZS0+bV9z
aW5nbGV0b25WYWx1ZS5hc0NlbGwoKSkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2dldF9jYWxsZWUpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcyLDcgKzM3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgfQog
Ci0gICAgYm9vbCBjaGVja0Z1bmN0aW9uRWxpbWluYXRpb24oSlNGdW5jdGlvbiogZnVuY3Rpb24s
IE5vZGVJbmRleCBjaGlsZDEpCisgICAgYm9vbCBjaGVja0Z1bmN0aW9uRWxpbWluYXRpb24oSlND
ZWxsKiBmdW5jdGlvbiwgTm9kZUluZGV4IGNoaWxkMSkKICAgICB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGVuZEluZGV4Rm9yUHVyZUNTRSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2Rl
SW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTM0NDYwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgs
MTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChjb25zdCBjaGFyKiBwcmVmaXgsIE5vZAogICAgICAgICBk
YXRhTG9nKCIlc3N0cnVjdCglcCAtPiAlcCkiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2Rl
LnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkucHJldmlvdXNTdHJ1Y3R1cmUsIG5vZGUuc3RydWN0
dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpOwogICAgICAgICBoYXNQcmludGVkID0g
dHJ1ZTsKICAgICB9CisgICAgaWYgKG5vZGUuaGFzRnVuY3Rpb24oKSkgeworICAgICAgICBkYXRh
TG9nKCIlcyVwIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5mdW5jdGlvbigpKTsKKyAg
ICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQogICAgIGlmIChub2RlLmhhc1N0b3JhZ2VB
Y2Nlc3NEYXRhKCkpIHsKICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEmIHN0b3JhZ2VBY2Nlc3NE
YXRhID0gbV9zdG9yYWdlQWNjZXNzRGF0YVtub2RlLnN0b3JhZ2VBY2Nlc3NEYXRhSW5kZXgoKV07
CiAgICAgICAgIGRhdGFMb2coIiVzaWQldXslc30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBz
dG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyLCBtX2NvZGVCbG9jay0+aWRlbnRpZmll
cihzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMzQ0
NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjc2LDE1ICs2NzYsMjMgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbWVy
Z2VTcGVjdWxhdGlvbihtX29wSW5mbzIsIHByZWRpY3Rpb24pOwogICAgIH0KICAgICAKLSAgICBi
b29sIGhhc0Z1bmN0aW9uQ2hlY2tEYXRhKCkKKyAgICBib29sIGhhc0Z1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBvcCgpID09IENoZWNrRnVuY3Rpb247CisgICAgICAgIHN3aXRjaCAo
b3AoKSkgeworICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgSW5oZXJp
dG9ySURXYXRjaHBvaW50OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbigpCisgICAgSlNDZWxsKiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBBU1NFUlQoaGFzRnVuY3Rpb25DaGVja0RhdGEoKSk7Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PEpTRnVuY3Rpb24qPihtX29wSW5mbyk7CisgICAgICAgIEFTU0VSVChoYXNG
dW5jdGlvbigpKTsKKyAgICAgICAgSlNDZWxsKiByZXN1bHQgPSByZWludGVycHJldF9jYXN0PEpT
RnVuY3Rpb24qPihtX29wSW5mbyk7CisgICAgICAgIEFTU0VSVChKU1ZhbHVlKHJlc3VsdCkuaXNG
dW5jdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBib29sIGhh
c1N0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkKQEAgLTcyOSw2ICs3MzcsNyBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CiAgICAgICAg
IGNhc2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICBjYXNl
IEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CisgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lv
biAxMzQ0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFB1dEdsb2JhbFZhckNoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEluaGVy
aXRvcklEV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBPcHRp
bWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCiAgICAgbWFjcm8oQXJyYXlQdXNoLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTM0NDYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDEyICszMDIsMTIgQEAgSlNDZWxsKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkNyZWF0ZVRoaQogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FjaGVkSW5oZXJpdG9ySUQo
ZXhlYykpOwogfQogCi1KU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjLCBzdHJ1Y3R1cmUpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBA
QCB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlCiB0eXBlZGVmIEpTQ2Vs
bCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwq
KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUNDKShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFU
SU9OICgqQ19ERkdPcGVyYXRpb25fRUljZikoRXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKik7
Cit0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VTdCkoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKik7CiB0eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9E
RkdPcGVyYXRpb25fREQpKGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVS
QVRJT04gKCpEX0RGR09wZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGRv
dWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKTsKQEAgLTExOCw3ICsxMTksNyBAQCB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJ
T04gKCpQX0RGR09wZXJhCiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJh
dGlvbl9FU3RaKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KTsKIAogLy8gVGhlc2Ug
cm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25z
IG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgotSlNDZWxsKiBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4
ZWNTdGF0ZSosIEpTQ2VsbCogY29uc3RydWN0b3IpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydFRoaXMoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTM0NDYwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2MCw2ICs3NjAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrQXJndW1l
bnRzTm90Q3JlYXRlZDoKICAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgogICAgICAg
ICBjYXNlIEdhcmJhZ2VWYWx1ZToKKyAgICAgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNocG9pbnQ6
CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTM0NDYw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzk2MSw2ICszOTYxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBJbmhlcml0b3JJRFdhdGNocG9pbnQ6IHsKKyAgICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihu
b2RlLmZ1bmN0aW9uKCkpLT5hZGRJbmhlcml0b3JJRFdhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRj
aHBvaW50KCkpOworICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAt
Mzk3MCw5ICszOTc2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwog
ICAgICAgICAKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+
ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgp
OworICAgICAgICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG5vZGUuc3RydWN0dXJlKCkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNsb3dQ
YXRoKTsKICAgICAgICAgCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3T2JqZWN0LCByZXN1bHRHUFIpKTsKKyAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUiwgbm9kZS5zdHJ1Y3R1cmUoKSkpOwogICAgICAgICAK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAg
YnJlYWs7CkBAIC00MTQxLDcgKzQxNDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDYWNoZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCks
IG5vZGUuZnVuY3Rpb24oKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENhY2hlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIo
KSwgbm9kZS5mdW5jdGlvbigpKSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTEzLDYgKzM5MTMsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgp
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW5oZXJpdG9ySURX
YXRjaHBvaW50OiB7CisgICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS5mdW5jdGlvbigp
KS0+YWRkSW5oZXJpdG9ySURXYXRjaHBvaW50KHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsKKyAg
ICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CiAK
ICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OwpAQCAtMzkyMyw5ICszOTI5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQ
YXRoOwogICAgICAgICAKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3Jp
Z2luKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xv
d1BhdGgpOworICAgICAgICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG5vZGUuc3RydWN0dXJlKCkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIs
IHNsb3dQYXRoKTsKICAgICAgICAgCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3T2JqZWN0LCByZXN1bHRHUFIpKTsK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlz
LCBvcGVyYXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUiwgbm9kZS5zdHJ1Y3R1cmUoKSkpOwogICAg
ICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAg
ICAgICAgYnJlYWs7CkBAIC00MDgxLDcgKzQwODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLmNoaWxkMSgp
KTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDYWNoZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24u
Z3ByKCksIG5vZGUuZnVuY3Rpb24oKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENh
Y2hlLCBKU1ZhbHVlUmVncyhmdW5jdGlvbi5ncHIoKSksIG5vZGUuY2hpbGQxKCksIG1faml0LmJy
YW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS5m
dW5jdGlvbigpKSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTM0NDYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY4LDYgKzEzNjgs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VTdCBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxKTsK
QEAgLTE3MzYsNiArMTc0MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19E
RkdPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0ogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMVBheWxvYWQsIGFyZzFUYWcpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNp
b24gMTM0NDYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNiArNzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIDogQmFzZShnbG9iYWxEYXRhLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uU3Ry
dWN0dXJlKCkpCiAgICAgICAgICwgbV9leGVjdXRhYmxlKGdsb2JhbERhdGEsIHRoaXMsIGV4ZWN1
dGFibGUpCiAgICAgICAgICwgbV9zY29wZShnbG9iYWxEYXRhLCB0aGlzLCBzY29wZSkKKyAgICAg
ICAgLCBtX2luaGVyaXRvcklEV2F0Y2hwb2ludChJbml0aWFsaXplZEJsaW5kKSAvLyBTZWUgY29t
bWVudCBpbiBKU0Z1bmN0aW9uLmNwcCBjb25jZXJuaW5nIHRoZSByZWFzb24gZm9yIHVzaW5nIElu
aXRpYWxpemVkQmxpbmQgYXMgb3Bwb3NlZCB0byBJbml0aWFsaXplZFdhdGNoaW5nLgogICAgIHsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
b3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTM0NDYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNU
T1IoSlNCb3VuZEZ1bmN0aW9uKTsKLQogY29uc3QgQ2xhc3NJbmZvIEpTQm91bmRGdW5jdGlvbjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTQm91bmRGdW5jdGlvbikgfTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTM0NDYwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDYgKzgzLDE2IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCAKICAgICA6IEJhc2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X2V4ZWN1dGFibGUoKQogICAgICwgbV9zY29wZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGds
b2JhbE9iamVjdCkKKyAgICAvLyBXZSBpbml0aWFsaXplIGJsaW5kIHNvIHRoYXQgY2hhbmdlcyB0
byB0aGUgcHJvdG90eXBlIGFmdGVyIGZ1bmN0aW9uIGNyZWF0aW9uIGJ1dCBiZWZvcmUKKyAgICAv
LyB0aGUgb3B0aW1pemVyIGtpY2tzIGluIGRvbid0IGRpc2FibGUgb3B0aW1pemF0aW9ucy4gT25j
ZSB0aGUgb3B0aW1pemVyIGtpY2tzIGluLCB0aGUKKyAgICAvLyB3YXRjaHBvaW50IHdpbGwgc3Rh
cnQgd2F0Y2hpbmcgYW5kIGFueSBjaGFuZ2VzIHdpbGwgYm90aCBmb3JjZSBkZW9wdGltaXphdGlv
biBhbmQgZGlzYWJsZQorICAgIC8vIGZ1dHVyZSBhdHRlbXB0cyB0byBvcHRpbWl6ZS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZQorICAgIC8vIGlu
aGVyaXRvcklEIGlzIGNoYW5nZWQgZXhhY3RseSBvbmNlIHByaW9yIHRvIG9wdGltaXphdGlvbnMg
a2lja2luZyBpbi4gV2UgY291bGQgYmUKKyAgICAvLyBzbWFydGVyIGFuZCBjb3VudCB0aGUgbnVt
YmVyIG9mIHRpbWVzIHRoZSBwcm90b3R5cGUgaXMgY2xvYmJlcmVkIGFuZCBvbmx5IG9wdGltaXpl
IGlmIGl0CisgICAgLy8gd2FzIGNsb2JiZXJlZCBleGFjdGx5IG9uY2UsIGJ1dCB0aGF0IHNlZW1z
IGxpa2Ugb3ZlcmtpbGwuIEluIGFsbW9zdCBhbGwgY2FzZXMgaXQgd2lsbCBiZQorICAgIC8vIGNs
b2JiZXJlZCBvbmNlLCBhbmQgaWYgaXQncyBjbG9iYmVyZWQgbW9yZSB0aGFuIG9uY2UsIHRoYXQg
d2lsbCBwcm9iYWJseSBvbmx5IG9jY3VyCisgICAgLy8gYmVmb3JlIHdlIHN0YXJ0ZWQgb3B0aW1p
emluZywgYW55d2F5LgorICAgICwgbV9pbmhlcml0b3JJRFdhdGNocG9pbnQoSW5pdGlhbGl6ZWRC
bGluZCkKIHsKIH0KIApAQCAtMzQzLDYgKzM1Myw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1MKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tX2NhY2hlZElu
aGVyaXRvcklELmNsZWFyKCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySURXYXRj
aHBvaW50Lm5vdGlmeVdyaXRlKCk7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHRoaXMgdG8gYmUg
Y2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBjbGVhciBtX2NhY2hlZEluaGVyaXRvcklELgog
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlOwogICAgICAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEzNDQ2
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIK
KyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMzIsNiAr
MTMzLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVkSW5o
ZXJpdG9ySUQuZ2V0KCk7CiAgICAgICAgIH0KIAorICAgICAgICBTdHJ1Y3R1cmUqIHRyeUdldEtu
b3duSW5oZXJpdG9ySUQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2FjaGVkSW5o
ZXJpdG9ySUQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAobV9p
bmhlcml0b3JJRFdhdGNocG9pbnQuaGFzQmVlbkludmFsaWRhdGVkKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbV9jYWNoZWRJbmhlcml0b3JJRC5nZXQo
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBhZGRJbmhlcml0b3JJRFdhdGNo
cG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKHRyeUdldEtub3duSW5oZXJpdG9ySUQoKSk7CisgICAgICAgICAgICBtX2luaGVyaXRvcklE
V2F0Y2hwb2ludC5hZGQod2F0Y2hwb2ludCk7CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mQ2FjaGVkSW5oZXJpdG9ySUQoKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fY2FjaGVkSW5oZXJpdG9ySUQp
OwpAQCAtMTcyLDYgKzE4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJp
ZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpT
U2NvcGU+IG1fc2NvcGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVk
SW5oZXJpdG9ySUQ7CisgICAgICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9pbmhlcml0b3JJRFdh
dGNocG9pbnQ7CiAgICAgfTsKIAogICAgIGlubGluZSBib29sIEpTVmFsdWU6OmlzRnVuY3Rpb24o
KSBjb25zdAo=
</data>
<flag name="review"
          id="188853"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173992</attachid>
            <date>2012-11-13 14:41:13 -0800</date>
            <delta_ts>2012-11-13 14:49:40 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>createthis.patch</filename>
            <type>text/plain</type>
            <size>22513</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0NDgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDEyLTExLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIENyZWF0ZVRoaXMgc2hvdWxkIGJlIGFibGUgdG8gc3RhdGljYWxseSBhY2NvdW50IGZvciB0
aGUgc3RydWN0dXJlIG9mIHRoZSBvYmplY3QgaXQgY3JlYXRlcywgaWYgcHJvZmlsaW5nIGluZGlj
YXRlcyB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFsd2F5cyB0aGUgc2FtZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMDE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIGEgd2F0Y2hwb2lu
dCBpbiBKU0Z1bmN0aW9uIG9uIHRoZSBjYWNoZWQgaW5oZXJpdG9yIElELiBJdCBhbHNvIGNoYW5n
ZXMKKyAgICAgICAgTmV3T2JqZWN0IHRvIHRha2UgYSBzdHJ1Y3R1cmUgYXMgYW4gb3BlcmFuZCAo
cHJldmlvdXNseSBpdCBpbXBsaWNpdGx5IHVzZWQgdGhlIG93bmluZworICAgICAgICBnbG9iYWwg
b2JqZWN0J3MgZW1wdHkgb2JqZWN0IHN0cnVjdHVyZSkuIEFueSBHZXRDYWxsZWUgd2hlcmUgdGhl
IGNhbGxlZSBpcyBwcmVkaWN0YWJsZQorICAgICAgICBpcyB0dXJuZWQgaW50byBhIENoZWNrRnVu
Y3Rpb24gKyBXZWFrSlNDb25zdGFudCwgYW5kIGFueSBDcmVhdGVUaGlzIG9uIGEgV2Vha0pTQ29u
c3RhbnQKKyAgICAgICAgd2hlcmUgdGhlIGluaGVyaXRvciBJRCB3YXRjaHBvaW50IGlzIHN0aWxs
IHZhbGlkIGlzIHR1cm5lZCBpbnRvIGFuIEluaGVyaXRvcklEV2F0Y2hwb2ludAorICAgICAgICBm
b2xsb3dlZCBieSBhIE5ld09iamVjdC4gTmV3T2JqZWN0IGFscmVhZHkgYWNjb3VudHMgZm9yIHRo
ZSBzdHJ1Y3R1cmUgaXQgdXNlcyBmb3Igb2JqZWN0CisgICAgICAgIGNyZWF0aW9uIGluIHRoZSBD
RkEuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6Y2hlY2tGdW5jdGlvbkVsaW1pbmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpmdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERG
Ryk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIHJ1
bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnRyeUdldEtub3du
SW5oZXJpdG9ySUQpOgorICAgICAgICAoSlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmFkZEluaGVyaXRvcklEV2F0Y2hwb2ludCk6CisKIDIwMTItMTEtMTMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Z1bmN0aW9uIGFuZCBpdHMgZGVz
Y2VuZGFudHMgc2hvdWxkIGJlIGRlc3RydWN0aWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjc4LDEwICsxMjc4LDE0IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1
bnNpZ25lZCBpbmQKICAgICAgICAgZGVzdGluYXRpb24uc2V0KFNwZWNGaW5hbE9iamVjdCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNo
cG9pbnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKLSAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUuY29kZU9yaWdpbiktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpOworICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KG5vZGUuc3RydWN0dXJlKCkpOwogICAgICAgICBtX2hhdmVTdHJ1
Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEz
NDQ2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTI1LDEyICsyMTI1LDI3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7
CiAgICAgICAgICAgICBpbnQgY2FsbGVlT3BlcmFuZCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgYWRkVG9HcmFwaChDcmVhdGVUaGlzLCBnZXQoY2FsbGVlT3BlcmFuZCkpKTsKKyAgICAgICAg
ICAgIE5vZGVJbmRleCBjYWxsZWUgPSBnZXQoY2FsbGVlT3BlcmFuZCk7CisgICAgICAgICAgICBi
b29sIGFscmVhZHlFbWl0dGVkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobV9ncmFwaFtjYWxs
ZWVdLm9wKCkgPT0gV2Vha0pTQ29uc3RhbnQpIHsKKyAgICAgICAgICAgICAgICBKU0NlbGwqIGNl
bGwgPSBtX2dyYXBoW2NhbGxlZV0ud2Vha0NvbnN0YW50KCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGNlbGwtPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2VsbCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRCA9IGZ1
bmN0aW9uLT50cnlHZXRLbm93bkluaGVyaXRvcklEKCk7CisgICAgICAgICAgICAgICAgaWYgKGlu
aGVyaXRvcklEKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSW5oZXJpdG9ySURX
YXRjaHBvaW50LCBPcEluZm8oZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBPcElu
Zm8oaW5oZXJpdG9ySUQpKSk7CisgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
IWFscmVhZHlFbWl0dGVkKQorICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKENyZWF0ZVRoaXMsIGNhbGxlZSkpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfY3JlYXRlX3RoaXMpOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7Ci0gICAgICAgICAgICBzZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChOZXdPYmplY3QpKTsKKyAgICAgICAg
ICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKE5ld09i
amVjdCwgT3BJbmZvKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X25ld19vYmplY3QpOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxNzksNyArMjE5NCwx
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2dldF9jYWxsZWU6IHsKLSAgICAgICAgICAg
IHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXQoSlNTdGFjazo6Q2FsbGVl
KSk7CisgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5wcm9maWxlOworICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKCk7CisgICAgICAgICAgICBpZiAocHJvZmlsZS0+bV9zaW5nbGV0b25WYWx1ZUlzVG9w
CisgICAgICAgICAgICAgICAgfHwgIXByb2ZpbGUtPm1fc2luZ2xldG9uVmFsdWUKKyAgICAgICAg
ICAgICAgICB8fCAhcHJvZmlsZS0+bV9zaW5nbGV0b25WYWx1ZS5pc0NlbGwoKSkKKyAgICAgICAg
ICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0KEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHBy
b2ZpbGUtPm1fc2luZ2xldG9uVmFsdWUuYXNDZWxsKCktPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpz
X2luZm8pKTsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggYWN0dWFsQ2FsbGVlID0gZ2V0KEpT
U3RhY2s6OkNhbGxlZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9u
LCBPcEluZm8ocHJvZmlsZS0+bV9zaW5nbGV0b25WYWx1ZS5hc0NlbGwoKSksIGFjdHVhbENhbGxl
ZSk7CisgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQs
IGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhwcm9maWxlLT5tX3NpbmdsZXRvblZh
bHVlLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfZ2V0X2NhbGxlZSk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDEzNDQ2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzIsNyArMzcy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAKLSAgICBib29s
IGNoZWNrRnVuY3Rpb25FbGltaW5hdGlvbihKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgTm9kZUluZGV4
IGNoaWxkMSkKKyAgICBib29sIGNoZWNrRnVuY3Rpb25FbGltaW5hdGlvbihKU0NlbGwqIGZ1bmN0
aW9uLCBOb2RlSW5kZXggY2hpbGQxKQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
ZW5kSW5kZXhGb3JQdXJlQ1NFKCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGVJbmRleCBpbmRl
eCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCwxMCBAQCB2b2lk
IEdyYXBoOjpkdW1wKGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kCiAgICAgICAgIGRhdGFMb2coIiVz
c3RydWN0KCVwIC0+ICVwKSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuc3RydWN0dXJl
VHJhbnNpdGlvbkRhdGEoKS5wcmV2aW91c1N0cnVjdHVyZSwgbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0
aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAg
IH0KKyAgICBpZiAobm9kZS5oYXNGdW5jdGlvbigpKSB7CisgICAgICAgIGRhdGFMb2coIiVzJXAi
LCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLmZ1bmN0aW9uKCkpOworICAgICAgICBoYXNQ
cmludGVkID0gdHJ1ZTsKKyAgICB9CiAgICAgaWYgKG5vZGUuaGFzU3RvcmFnZUFjY2Vzc0RhdGEo
KSkgewogICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgc3RvcmFnZUFjY2Vzc0RhdGEgPSBtX3N0
b3JhZ2VBY2Nlc3NEYXRhW25vZGUuc3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgpXTsKICAgICAgICAg
ZGF0YUxvZygiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIHN0b3JhZ2VBY2Nl
c3NEYXRhLmlkZW50aWZpZXJOdW1iZXIsIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHN0b3JhZ2VB
Y2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEzNDQ2MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzYs
MTUgKzY3NiwyMyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0
aW9uKG1fb3BJbmZvMiwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzRnVu
Y3Rpb25DaGVja0RhdGEoKQorICAgIGJvb2wgaGFzRnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG9wKCkgPT0gQ2hlY2tGdW5jdGlvbjsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7Cisg
ICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNo
cG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uKCkKKyAgICBKU0NlbGwqIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChoYXNGdW5jdGlvbkNoZWNrRGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZvKTsKKyAgICAgICAgQVNTRVJUKGhhc0Z1bmN0aW9uKCkp
OworICAgICAgICBKU0NlbGwqIHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNGdW5jdGlvbio+
KG1fb3BJbmZvKTsKKyAgICAgICAgQVNTRVJUKEpTVmFsdWUocmVzdWx0KS5pc0Z1bmN0aW9uKCkp
OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGJvb2wgaGFzU3RydWN0dXJl
VHJhbnNpdGlvbkRhdGEoKQpAQCAtNzI5LDYgKzczNyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBGb3J3
YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgQXJyYXlpZnlU
b1N0cnVjdHVyZToKKyAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEzNDQ2MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU0LDYgKzE1NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oSW5oZXJpdG9ySURXYXRj
aHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAgIC8qIE9wdGltaXphdGlvbnMg
Zm9yIGFycmF5IG11dGF0aW9uLiAqL1wKICAgICBtYWNybyhBcnJheVB1c2gsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMzQ0NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlVGhpCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5jYWNoZWRJbmhlcml0b3JJRChleGVjKSk7CiB9
CiAKLUpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQorSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKICAgICAKLSAgICByZXR1cm4gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYyk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVB
ZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHJldmlzaW9uIDEzNDQ2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIHR5cGVkZWYg
SlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGUKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BF
UkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogdHlwZWRl
ZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIEpTQ2VsbCopOwogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RG
R09wZXJhdGlvbl9FSWNmKShFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUqKTsKK3R5cGVkZWYg
SlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRVN0KShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlv
bl9ERCkoZG91YmxlLCBkb3VibGUpOwogdHlwZWRlZiBkb3VibGUgREZHX09QRVJBVElPTiAoKkRf
REZHT3BlcmF0aW9uX1paKShpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgZG91YmxlIERGR19P
UEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUp
OwpAQCAtMTE4LDcgKzExOSw3IEBAIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBfREZH
T3BlcmEKIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9uX0VTdFop
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpOwogCiAvLyBUaGVzZSByb3V0aW5lcyBh
cmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0
aW9ucyB0b28gY29tcGxleCB0byBKSVQuCi1KU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
TmV3T2JqZWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogREZHX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwg
SlNDZWxsKiBjb25zdHJ1Y3RvcikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25Db252ZXJ0VGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQWRkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYw
LDYgKzc2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVh
dGVkOgogICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgR2Fy
YmFnZVZhbHVlOgorICAgICAgICBjYXNlIEluaGVyaXRvcklEV2F0Y2hwb2ludDoKICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTYxLDYgKzM5NjEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEluaGVyaXRv
cklEV2F0Y2hwb2ludDogeworICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUuZnVuY3Rp
b24oKSktPmFkZEluaGVyaXRvcklEV2F0Y2hwb2ludChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7
CisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBOZXdPYmplY3Q6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0zOTcwLDkgKzM5
NzYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgICAgIAot
ICAgICAgICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5lbXB0eU9iamVj
dFN0cnVjdHVyZSgpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisgICAgICAg
IGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bm9kZS5zdHJ1Y3R1cmUoKSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAg
ICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRo
LCB0aGlzLCBvcGVyYXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUikpOworICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld09i
amVjdCwgcmVzdWx0R1BSLCBub2RlLnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIAogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAg
LTQxNDEsNyArNDE0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZENhY2hlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS5mdW5j
dGlvbigpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2FjaGUsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLmZ1
bmN0aW9uKCkpKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICBi
cmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzNDQ2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
MTMsNiArMzkxMywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNocG9pbnQ6
IHsKKyAgICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLmZ1bmN0aW9uKCkpLT5hZGRJbmhl
cml0b3JJRFdhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOworICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2Ug
TmV3T2JqZWN0OiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0zOTIz
LDkgKzM5MjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAg
ICAgIAotICAgICAgICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5lbXB0
eU9iamVjdFN0cnVjdHVyZSgpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7Cisg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobm9kZS5zdHJ1Y3R1cmUoKSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgp
OwogICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUikpOworICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bk5ld09iamVjdCwgcmVzdWx0R1BSLCBub2RlLnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIAogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKQEAgLTQwODEsNyArNDA4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZENhY2hlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9k
ZS5mdW5jdGlvbigpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2FjaGUsIEpTVmFs
dWVSZWdzKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0
cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLmZ1bmN0aW9uKCkp
KTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNjgsNiArMTM2OCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKGlubGluZUNhbGxGcmFtZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFNfREZHT3BlcmF0aW9uX0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzEpOwpAQCAtMTczNiw2
ICsxNzQxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlv
bl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMzQ0NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc1Miw2ICs3NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgOiBCYXNl
KGdsb2JhbERhdGEsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSkK
ICAgICAgICAgLCBtX2V4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgdGhpcywgZXhlY3V0YWJsZSkKICAg
ICAgICAgLCBtX3Njb3BlKGdsb2JhbERhdGEsIHRoaXMsIHNjb3BlKQorICAgICAgICAsIG1faW5o
ZXJpdG9ySURXYXRjaHBvaW50KEluaXRpYWxpemVkQmxpbmQpIC8vIFNlZSBjb21tZW50IGluIEpT
RnVuY3Rpb24uY3BwIGNvbmNlcm5pbmcgdGhlIHJlYXNvbiBmb3IgdXNpbmcgSW5pdGlhbGl6ZWRC
bGluZCBhcyBvcHBvc2VkIHRvIEluaXRpYWxpemVkV2F0Y2hpbmcuCiAgICAgewogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw2IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0JvdW5k
RnVuY3Rpb24pOwotCiBjb25zdCBDbGFzc0luZm8gSlNCb3VuZEZ1bmN0aW9uOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNC
b3VuZEZ1bmN0aW9uKSB9OwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVu
Y3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMzQ0NjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsMTYgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogICAg
IDogQmFzZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJs
ZSgpCiAgICAgLCBtX3Njb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFsT2JqZWN0
KQorICAgIC8vIFdlIGluaXRpYWxpemUgYmxpbmQgc28gdGhhdCBjaGFuZ2VzIHRvIHRoZSBwcm90
b3R5cGUgYWZ0ZXIgZnVuY3Rpb24gY3JlYXRpb24gYnV0IGJlZm9yZQorICAgIC8vIHRoZSBvcHRp
bWl6ZXIga2lja3MgaW4gZG9uJ3QgZGlzYWJsZSBvcHRpbWl6YXRpb25zLiBPbmNlIHRoZSBvcHRp
bWl6ZXIga2lja3MgaW4sIHRoZQorICAgIC8vIHdhdGNocG9pbnQgd2lsbCBzdGFydCB3YXRjaGlu
ZyBhbmQgYW55IGNoYW5nZXMgd2lsbCBib3RoIGZvcmNlIGRlb3B0aW1pemF0aW9uIGFuZCBkaXNh
YmxlCisgICAgLy8gZnV0dXJlIGF0dGVtcHRzIHRvIG9wdGltaXplLiBUaGlzIGlzIG5lY2Vzc2Fy
eSBiZWNhdXNlIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgdGhlCisgICAgLy8gaW5oZXJpdG9ySUQg
aXMgY2hhbmdlZCBleGFjdGx5IG9uY2UgcHJpb3IgdG8gb3B0aW1pemF0aW9ucyBraWNraW5nIGlu
LiBXZSBjb3VsZCBiZQorICAgIC8vIHNtYXJ0ZXIgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgdGlt
ZXMgdGhlIHByb3RvdHlwZSBpcyBjbG9iYmVyZWQgYW5kIG9ubHkgb3B0aW1pemUgaWYgaXQKKyAg
ICAvLyB3YXMgY2xvYmJlcmVkIGV4YWN0bHkgb25jZSwgYnV0IHRoYXQgc2VlbXMgbGlrZSBvdmVy
a2lsbC4gSW4gYWxtb3N0IGFsbCBjYXNlcyBpdCB3aWxsIGJlCisgICAgLy8gY2xvYmJlcmVkIG9u
Y2UsIGFuZCBpZiBpdCdzIGNsb2JiZXJlZCBtb3JlIHRoYW4gb25jZSwgdGhhdCB3aWxsIHByb2Jh
Ymx5IG9ubHkgb2NjdXIKKyAgICAvLyBiZWZvcmUgd2Ugc3RhcnRlZCBvcHRpbWl6aW5nLCBhbnl3
YXkuCisgICAgLCBtX2luaGVyaXRvcklEV2F0Y2hwb2ludChJbml0aWFsaXplZEJsaW5kKQogewog
fQogCkBAIC0zNDMsNiArMzUzLDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjUwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1fY2FjaGVkSW5oZXJpdG9ySUQu
Y2xlYXIoKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRFdhdGNocG9pbnQubm90
aWZ5V3JpdGUoKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNp
bmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fY2FjaGVkSW5oZXJpdG9ySUQuCiAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBkb250Q2FjaGU7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwpAQCAtMzg5LDYgKzQwMCw3IEBA
IGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAg
ICB0aGlzT2JqZWN0LT5tX2NhY2hlZEluaGVyaXRvcklELmNsZWFyKCk7CisgICAgICAgIHRoaXNP
YmplY3QtPm1faW5oZXJpdG9ySURXYXRjaHBvaW50Lm5vdGlmeVdyaXRlKCk7CiAgICAgICAgIHJl
dHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTM0NDYwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUg
IldhdGNocG9pbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEzMiw2ICsxMzMsMjEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZWRJbmhlcml0b3JJRC5n
ZXQoKTsKICAgICAgICAgfQogCisgICAgICAgIFN0cnVjdHVyZSogdHJ5R2V0S25vd25Jbmhlcml0
b3JJRCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jYWNoZWRJbmhlcml0b3JJRCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChtX2luaGVyaXRvcklE
V2F0Y2hwb2ludC5oYXNCZWVuSW52YWxpZGF0ZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBtX2NhY2hlZEluaGVyaXRvcklELmdldCgpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFkZEluaGVyaXRvcklEV2F0Y2hwb2ludChXYXRj
aHBvaW50KiB3YXRjaHBvaW50KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQodHJ5R2V0
S25vd25Jbmhlcml0b3JJRCgpKTsKKyAgICAgICAgICAgIG1faW5oZXJpdG9ySURXYXRjaHBvaW50
LmFkZCh3YXRjaHBvaW50KTsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9jYWNoZWRJbmhlcml0b3JJRCk7CkBAIC0xNzIs
NiArMTg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxFeGVjdXRh
YmxlQmFzZT4gbV9leGVjdXRhYmxlOwogICAgICAgICBXcml0ZUJhcnJpZXI8SlNTY29wZT4gbV9z
Y29wZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRJbmhlcml0b3JJ
RDsKKyAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2luaGVyaXRvcklEV2F0Y2hwb2ludDsK
ICAgICB9OwogCiAgICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0Cg==
</data>
<flag name="review"
          id="188867"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>