<?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>117209</bug_id>
          
          <creation_ts>2013-06-04 14:15:53 -0700</creation_ts>
          <short_desc>CallFrame::trueCallFrame() should populate the bytecodeOffset when reifying Inlined frames</short_desc>
          <delta_ts>2013-06-06 13:30:34 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>897033</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-06-04 14:15:53 -0700</bug_when>
    <thetext>We should be populating the frame bytecodeOffset when reifying an InlinedFrame.  This removes one caller of CodeBlock::codeOriginForReturn().  Still one more caller remaining before we can remove codeOriginForReturn() completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897754</commentid>
    <comment_count>1</comment_count>
      <attachid>203930</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-06-06 06:47:20 -0700</bug_when>
    <thetext>Created attachment 203930
the patch.

This patch has passed run-javascriptcore-tests and &quot;fast/js fast/regex ietestcenter/JavaScript sputnik&quot; layout tests with a debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897883</commentid>
    <comment_count>2</comment_count>
      <attachid>203930</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-06 12:52:24 -0700</bug_when>
    <thetext>Comment on attachment 203930
the patch.

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.h:317
&gt; +        unsigned locationBits = CallFrame::Location::encode(index, CallFrame::Location::CodeOriginIndex);

Minor nit: Usually, when we supply a tag to a function call, the tag is first and the data is second.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:1
&gt; + /*

Please fix.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:119
&gt; +            enum Decoration {

Maybe a word like &quot;Type&quot; or &quot;LocationType&quot; would be a little more specific.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:122
&gt; +                InlinedFrame = (1 &lt;&lt; 1),

To make this a comment about the location, how about calling this &quot;IsInlinedCode&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897898</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-06-06 13:30:34 -0700</bug_when>
    <thetext>Thanks for there review.  Feedback applied and the patch is landed in r151285: &lt;http://trac.webkit.org/changeset/151285&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203930</attachid>
            <date>2013-06-06 06:47:20 -0700</date>
            <delta_ts>2013-06-06 12:52:23 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-117209.patch</filename>
            <type>text/plain</type>
            <size>32648</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxMjY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBA
QAorMjAxMy0wNi0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q2FsbEZyYW1lOjp0cnVlQ2FsbEZyYW1lKCkgc2hvdWxkIHBvcHVsYXRlIHRoZSBieXRlY29kZU9m
ZnNldCBmaWVsZAorICAgICAgICB3aGVuIHJlaWZ5aW5nIGlubGluZWQgZnJhbWVzLi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzIwOS4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHJlaWZ5aW5n
IGFuIGlubGluZWQgZnJhbWUsIHdlIGZpbGwgaW4gaXRzIENvZGVCbG9jaywgYW5kCisgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0LiBXZSBhbHNvIHNldCB0aGUgSW5saW5lZEZyYW1lIGJpdCBpbiB0aGUg
bG9jYXRpb24gZmllbGQuCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGluIG9yZGVyIHRvIGl0ZXJh
dGUgdGhlIHN0YWNrIGNvcnJlY3RseS4gSGVyZSdzIHdoeToKKworICAgICAgICAgICAgTGV0J3Mg
c2F5IHdlIGhhdmUgdGhlIGZvbGxvd2luZyBzdGFjayB0cmFjZToKKyAgICAgICAgICAgICAgWCBj
YWxscyBBIGlubGluZXMgQiBpbmxpbmVzIEMgY2FsbHMgRAorCisgICAgICAgICAgICBCYXNlZCBv
biB0aGUgYWJvdmUgc2NlbmFyaW8sCisgICAgICAgICAgICAxLiBEJ3MgY2FsbGVyRnJhbWUgcG9p
bnRzIHRvIEEgKG5vdCBDKS4KKyAgICAgICAgICAgIDIuIEEgaGFzIGEgY29kZU9yaWdpbkluZGV4
IHRoYXQgcG9pbnRzIHRvIEMuCisKKyAgICAgICAgV2hlbiBpdGVyYXRpbmcgdGhlIHN0YWNrIChm
cm9tIEQgYmFjayB0b3dhcmRzIFgpLCB3ZSB3aWxsIGVuY291bnRlciBBCisgICAgICAgIHR3aWNl
OgorCisgICAgICAgICAgICB0MS4gd2hlbiB0cnlpbmcgdG8gZmluZCBDIGFzIEQncyBjYWxsZXIu
CisgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgdGltZSB3aGVuIHdlIHJlaWZ5IEIgYW5kIEMg
dXNpbmcgdGhlCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbkluZGV4IGluIEEsIGFuZCByZXR1
cm4gQyBhcyB0aGUgY2FsbGVyIGZyYW1lIG9mIEQuCisKKyAgICAgICAgICAgIHQyLiB3aGVuIGdl
dHRpbmcncyB0aGUgcmVpZmllZCBCJ3MgY2FsbGVyLgorICAgICAgICAgICAgICAgIFRoaXMgdGlt
ZSwgd2UgZG9uJ3QgcnVuIHRoZSByZWlmaWNhdGlvbiBwcm9jZXNzLCBhbmQKKyAgICAgICAgICAg
ICAgICBqdXN0IHRha2UgQSBhcyB0aGUgY2FsbGVyIGZyYW1lIG9mIEIuCisKKyAgICAgICAgVG8g
ZGlzY2VybiB3aGljaCB0cmVhdG1lbnQgb2YgdGhlIERGRyBmcmFtZSAoaS5lLiBBKSB3ZSBuZWVk
IHRvIGFwcGx5LAorICAgICAgICB3ZSBjaGVjayBpZiB0aGUgY2FsbGVlIGlzIGFuIGlubGluZWQg
ZnJhbWU6CisKKyAgICAgICAgICAgIElmIGNhbGxlZSBpcyBOT1QgYW4gaW5saW5lZCBmcmFtZSAo
ZS5nLiBmcmFtZSBEKSwgYXBwbHkgdHJlYXRtZW50IHQxLgorICAgICAgICAgICAgSWYgY2FsbGVl
IGlzIGFuIGlubGluZWQgZnJhbWUgKGUuZy4gZnJhbWUgQiksIGFwcGx5IHRyZWF0bWVudCB0Mi4K
KworICAgICAgICBXaHkgbm90IGp1c3QgcmVpZnkgQSBieSByZXBsYWNpbmcgaXRzIGNvZGVPcmln
aW5JbmRleCB3aXRoIEEncworICAgICAgICBieXRlY29kZU9mZnNldD8KKworICAgICAgICBXZSBj
YW4ndCBkbyB0aGlzIGJlY2F1c2UgRCdzIGNhbGxlckZyYW1lIHBvaW50ZXIgc3RpbGwgcG9pbnRz
IHRvIEEsIGFuZAorICAgICAgICBuZWVkcyB0byByZW1haW4gdGhhdCB3YXkgYmVjYXVzZSB3ZSBk
aWQgbm90IGRlb3B0IEEuIEl0IHJlbWFpbnMgYSBERkcKKyAgICAgICAgZnJhbWUgd2hpY2ggaW5s
aW5lZCBCIGFuZCBDLgorCisgICAgICAgIElmIHdlIHJlcGxhY2UgdGhlIGNvZGVPcmlnaW5JbmRl
eCBpbiBBIHdpdGggQSdzIGJ5dGVjb2RlT2Zmc2V0LCB3ZSB3aWxsCisgICAgICAgIG9ubHkgZ2V0
IHRvIGl0ZXJhdGUgdGhlIHN0YWNrIGNvcnJlY3RseSBvbmNlLiBJZiB3ZSB0cnkgdG8gaXRlcmF0
ZSB0aGUKKyAgICAgICAgc3RhY2sgYSBzZWNvbmQgdGltZSwgd2Ugd2lsbCBub3QgaGF2ZSB0aGUg
aW5mb3JtYXRpb24gZnJvbSB0aGUKKyAgICAgICAgY29kZU9yaWdpbkluZGV4IHRvIHRlbGwgdXMg
dGhhdCBEJ3MgY2FsbGVyIGlzIGFjdHVhbGx5IHRoZSBpbmxpbmVkIEMsCisgICAgICAgIGFuZCBu
b3QgQS4KKworICAgICAgICBUbyByZWNhcCwgd2hlbiByZWlmeWluZyBmcmFtZXMgZm9yIHN0YWNr
IGl0ZXJhdGlvbiBwdXJwb3NlcywgdGhlIERGRworICAgICAgICBmcmFtZSBuZWVkcyB0byBob2xk
IG9uIHRvIGl0cyBjb2RlT3JpZ2luSW5kZXguIFRoaXMgaW4gdHVybiBtZWFucyB0aGUKKyAgICAg
ICAgREZHIGZyYW1lIHdpbGwgbmVlZCB0byBiZSB0cmVhdGVkIGluIDIgcG9zc2libGUgd2F5cywg
YW5kIHdlIG5lZWQgdG8KKyAgICAgICAga25vdyBpZiBhIGNhbGxlZSBmcmFtZSBpcyBhbiBpbmxp
bmVkIGZyYW1lIGluIG9yZGVyIHRvIGNob29zZSB0aGUKKyAgICAgICAgY29ycmVjdCB0cmVhdG1l
bnQgZm9yIHRoZSBERkcgZnJhbWUuCisKKyAgICAgICAgT3RoZXIgY2hhbmdlczoKKyAgICAgICAg
LSBTaW1wbGlmaWVkIEludGVycHJldGVyOjpnZXRDYWxsZXJJbmZvKCkuCisgICAgICAgIC0gUmVt
b3ZlZCBDb2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4oKSBhbmQgc3VwcG9ydGluZyBjb2Rl
CisgICAgICAgICAgd2hpY2ggaXMgbm93IHVubmVlZGVkLgorICAgICAgICAtIE1vdmVkIENhbGxG
cmFtZSBsb2NhdGlvbiBiaXQgZW5jb2RpbmcgZnJvbSB0aGUgQ29kZU9yaWdpbiB0byB0aGUKKyAg
ICAgICAgICBuZXcgQ2FsbEZyYW1lOjpMb2NhdGlvbiBjbGFzcy4KKyAgICAgICAgLSBFeHBsaWNp
dGx5IHRhZ2dlZCBpbmxpbmVkIGZyYW1lcy4gVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8K
KyAgICAgICAgICBpdGVyYXRlIHRoZSBzdGFjayBjb3JyZWN0bHkgYXMgZXhwbGFpbmVkIGFib3Zl
LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb2RlT3JpZ2lucyk6Cisg
ICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvZGVPcmlnaW4p
OgorICAgICAgICAoUmFyZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uaDoK
KyAgICAgICAgKENvZGVPcmlnaW4pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpiZWdpbkNh
bGwpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6dHJ1ZUNhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dHJ1
ZUNhbGxlckZyYW1lKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpieXRlY29kZU9mZnNldEZy
b21Db2RlT3JpZ2luSW5kZXgpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAoTG9jYXRpb24pOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjp0cnVlQ2FsbGVyRnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNh
bGxlckZyYW1lTm9GbGFncyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGUpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWU6OkxvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6OkxvY2F0aW9uOjppc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lOjpMb2NhdGlvbjo6aXNDb2RlT3JpZ2luSW5kZXgpOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6OkxvY2F0aW9uOjppc0lubGluZWRGcmFtZSk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
aXNJbmxpbmVkRnJhbWUpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldElzSW5saW5lZEZy
YW1lKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpoYXNMb2NhdGlvbkFzQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6Omhhc0xvY2F0aW9uQXNDb2RlT3JpZ2luSW5k
ZXgpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmxvY2F0aW9uQXNCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2V0TG9jYXRpb25Bc0J5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsb2NhdGlvbkFzQ29kZU9yaWdpbkluZGV4KToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENh
bGxlckluZm8pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpmaW5kRnVuY3Rpb25DYWxsRnJhbWVGcm9tVk1Db2Rl
KToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50czo6dGVhck9mZik6CisKIDIwMTMtMDYtMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBERkcgQ0ZBIHNob3VsZG4ndCBmaWx0ZXIgQXJyYXlNb2RlcyB3aXRo
IEFMTF9OT05fQVJSQVlfQVJSQVlfTU9ERVMgaWYgdGhlIHNwZWN1bGF0ZWQgdHlwZSBpcyBub3Qg
U3BlY0FycmF5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTUxMjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MDgsMzMgKzI4MDgsNiBAQCB1
bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAjZW5kaWYKIH0KIAotI2lm
IEVOQUJMRShERkdfSklUKQotYm9vbCBDb2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4oUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotewot
ICAgIGlmICghaGFzQ29kZU9yaWdpbnMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFqaXRDb2RlKCktPmNvbnRhaW5zKHJldHVybkFkZHJlc3MudmFsdWUoKSkpIHsKLSAgICAg
ICAgQ2xvc3VyZUNhbGxTdHViUm91dGluZSogc3R1YiA9IGZpbmRDbG9zdXJlQ2FsbEZvclJldHVy
blBDKHJldHVybkFkZHJlc3MpOwotICAgICAgICBBU1NFUlQoc3R1Yik7Ci0gICAgICAgIGlmICgh
c3R1YikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29kZU9yaWdpbiA9IHN0
dWItPmNvZGVPcmlnaW4oKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAg
IHVuc2lnbmVkIG9mZnNldCA9IGppdENvZGUoKS0+b2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1
ZSgpKTsKLSAgICBDb2RlT3JpZ2luQXRDYWxsUmV0dXJuT2Zmc2V0KiBlbnRyeSA9Ci0gICAgICAg
IHRyeUJpbmFyeVNlYXJjaDxDb2RlT3JpZ2luQXRDYWxsUmV0dXJuT2Zmc2V0LCB1bnNpZ25lZD4o
Ci0gICAgICAgICAgICBjb2RlT3JpZ2lucygpLCBjb2RlT3JpZ2lucygpLnNpemUoKSwgb2Zmc2V0
LAotICAgICAgICAgICAgZ2V0Q2FsbFJldHVybk9mZnNldEZvckNvZGVPcmlnaW4pOwotICAgIGlm
ICghZW50cnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb2RlT3JpZ2luID0gZW50cnkt
PmNvZGVPcmlnaW47Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCi0KIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCiB7CiAgICAgaWYgKCEhbV9h
bHRlcm5hdGl2ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDE1MTI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1faW5saW5lQ2FsbEZyYW1lczsKICAgICB9CiAg
ICAgICAgIAotICAgIFZlY3RvcjxDb2RlT3JpZ2luQXRDYWxsUmV0dXJuT2Zmc2V0LCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4mIGNvZGVPcmlnaW5zKCkKKyAgICBWZWN0b3I8Q29kZU9yaWdpbiwg
MCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBjb2RlT3JpZ2lucygpCiAgICAgewogICAgICAgICBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5t
X2NvZGVPcmlnaW5zOwpAQCAtNjAwLDggKzYwMCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fcmFyZURhdGEgJiYgISFtX3JhcmVEYXRhLT5tX2NvZGVPcmlnaW5zLnNpemUoKTsKICAgICB9
CiAgICAgICAgIAotICAgIGJvb2wgY29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRy
LCBDb2RlT3JpZ2luJik7Ci0gICAgICAgIAogICAgIGJvb2wgY2FuR2V0Q29kZU9yaWdpbih1bnNp
Z25lZCBpbmRleCkKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTYxMiw3ICs2
MTAsNyBAQCBwdWJsaWM6CiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKHVuc2lnbmVkIGluZGV4
KQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJl
dHVybiBtX3JhcmVEYXRhLT5tX2NvZGVPcmlnaW5zW2luZGV4XS5jb2RlT3JpZ2luOworICAgICAg
ICByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb2RlT3JpZ2luc1tpbmRleF07CiAgICAgfQogICAgICAg
ICAKICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRT
aXRlJiBzaXRlKQpAQCAtMTEwMiw3ICsxMTAwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVO
QUJMRShERkdfSklUKQogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8SW5saW5lQ2FsbEZyYW1lLCA0
PiBtX2lubGluZUNhbGxGcmFtZXM7Ci0gICAgICAgIFZlY3RvcjxDb2RlT3JpZ2luQXRDYWxsUmV0
dXJuT2Zmc2V0LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9jb2RlT3JpZ2luczsKKyAgICAg
ICAgVmVjdG9yPENvZGVPcmlnaW4sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2NvZGVPcmln
aW5zOwogI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtMTI0NywxNSArMTI0
NSw2IEBAIGlubGluZSBSZWdpc3RlciYgRXhlY1N0YXRlOjp1bmNoZWNrZWRSKGkKICAgICByZXR1
cm4gdGhpc1tpbmRleF07CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLWlubGluZSBib29sIEV4
ZWNTdGF0ZTo6aXNJbmxpbmVDYWxsRnJhbWUoKQotewotICAgIGlmIChMSUtFTFkoIWNvZGVCbG9j
aygpIHx8ICFKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrKCktPmppdFR5cGUoKSkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzSW5saW5lQ2FsbEZyYW1lU2xv
dygpOwotfQotI2VuZGlmCi0KIGlubGluZSBKU1ZhbHVlIEV4ZWNTdGF0ZTo6YXJndW1lbnRBZnRl
ckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KQogewogICAgIGlmIChhcmd1bWVudCA+PSBhcmd1bWVu
dENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3Jp
Z2luLmgJKHJldmlzaW9uIDE1MTI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDIxICs4OCw2IEBAIHN0cnVjdCBD
b2RlT3JpZ2luIHsKICAgICBWZWN0b3I8Q29kZU9yaWdpbj4gaW5saW5lU3RhY2soKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLQotICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0hhbmRsZSh1aW50MzJfdCBiaXRzKSB7IHJldHVybiAhIShiaXRzICYgaGFu
ZGxlRmxhZyk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGVuY29kZUhhbmRsZSh1aW50
MzJfdCBiaXRzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0hhbmRsZShiaXRzKSk7Ci0gICAg
ICAgIHJldHVybiBiaXRzIHwgaGFuZGxlRmxhZzsKLSAgICB9Ci0gICAgc3RhdGljIGlubGluZSB1
aW50MzJfdCBkZWNvZGVIYW5kbGUodWludDMyX3QgYml0cykKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc0hhbmRsZShiaXRzKSk7Ci0gICAgICAgIHJldHVybiBiaXRzICYgfmhhbmRsZUZsYWc7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBoYW5kbGVGbGFnID0g
KDEgPDwgMzEpOwogfTsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZSB7CkBAIC0xMzIsMTEgKzEx
Nyw2IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIE1BS0VfUFJJTlRfTUVUSE9EKElu
bGluZUNhbGxGcmFtZSwgZHVtcEJyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbiwgYnJpZWZGdW5jdGlv
bkluZm9ybWF0aW9uKTsKIH07CiAKLXN0cnVjdCBDb2RlT3JpZ2luQXRDYWxsUmV0dXJuT2Zmc2V0
IHsKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47Ci0gICAgdW5zaWduZWQgY2FsbFJldHVybk9m
ZnNldDsKLX07Ci0KIGlubGluZSB1bnNpZ25lZCBDb2RlT3JpZ2luOjpzdGFja09mZnNldCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCkBAIC0xNTEsMTEgKzEzMSw2IEBAIGlu
bGluZSBib29sIENvZGVPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QKICAgICAgICAgJiYgaW5saW5l
Q2FsbEZyYW1lID09IG90aGVyLmlubGluZUNhbGxGcmFtZTsKIH0KICAgICAKLWlubGluZSB1bnNp
Z25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbihDb2RlT3JpZ2luQXRDYWxsUmV0
dXJuT2Zmc2V0KiBkYXRhKQotewotICAgIHJldHVybiBkYXRhLT5jYWxsUmV0dXJuT2Zmc2V0Owot
fQotCiBpbmxpbmUgU2NyaXB0RXhlY3V0YWJsZSogQ29kZU9yaWdpbjo6Y29kZU9yaWdpbk93bmVy
KCkgY29uc3QKIHsKICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTEyNjApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTcwLDE0ICsxNzAsMTIgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVm
ZmVyJiBsaW5rQgogICAgICAgICBtX2NvZGVCbG9jay0+Y2FsbFJldHVybkluZGV4VmVjdG9yKCku
YXBwZW5kKENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KHJldHVybkFkZHJlc3NPZmZz
ZXQsIGV4Y2VwdGlvbkluZm8pKTsKICAgICB9CiAKLSAgICBWZWN0b3I8Q29kZU9yaWdpbkF0Q2Fs
bFJldHVybk9mZnNldCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBjb2RlT3JpZ2lucyA9IG1f
Y29kZUJsb2NrLT5jb2RlT3JpZ2lucygpOworICAgIFZlY3RvcjxDb2RlT3JpZ2luLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4mIGNvZGVPcmlnaW5zID0gbV9jb2RlQmxvY2stPmNvZGVPcmlnaW5z
KCk7CiAgICAgY29kZU9yaWdpbnMucmVzaXplKG1fZXhjZXB0aW9uQ2hlY2tzLnNpemUoKSk7CiAg
ICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZXhjZXB0aW9uQ2hlY2tzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIENhbGxFeGNlcHRpb25SZWNvcmQmIHJlY29yZCA9IG1fZXhjZXB0
aW9uQ2hlY2tzW2ldOwotICAgICAgICB1bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0ID0gbGlu
a0J1ZmZlci5yZXR1cm5BZGRyZXNzT2Zmc2V0KG1fZXhjZXB0aW9uQ2hlY2tzW2ldLm1fY2FsbCk7
Ci0gICAgICAgIGNvZGVPcmlnaW5zW2ldLmNvZGVPcmlnaW4gPSByZWNvcmQubV9jb2RlT3JpZ2lu
OwotICAgICAgICBjb2RlT3JpZ2luc1tpXS5jYWxsUmV0dXJuT2Zmc2V0ID0gcmV0dXJuQWRkcmVz
c09mZnNldDsKKyAgICAgICAgY29kZU9yaWdpbnNbaV0gPSByZWNvcmQubV9jb2RlT3JpZ2luOwog
ICAgIH0KICAgICAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5m
b3MobV9wcm9wZXJ0eUFjY2Vzc2VzLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxNTEyNjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQ2FsbEZyYW1lSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVy
cy5oIgogI2luY2x1ZGUgIkRGR0Rpc2Fzc2VtYmxlci5oIgpAQCAtMzEzLDggKzMxNCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJlZ2luQ2FsbChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxCZWdp
blRva2VuJiB0b2tlbikKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbV9leGNlcHRp
b25DaGVja3Muc2l6ZSgpOwotICAgICAgICB1bnNpZ25lZCBoYW5kbGUgPSBDb2RlT3JpZ2luOjpl
bmNvZGVIYW5kbGUoaW5kZXgpOwotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihoYW5kbGUp
LCB0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSkpOworICAgICAgICB1bnNpZ25lZCBsb2NhdGlvbkJpdHMgPSBDYWxsRnJhbWU6OkxvY2F0
aW9uOjplbmNvZGUoaW5kZXgsIENhbGxGcmFtZTo6TG9jYXRpb246OkNvZGVPcmlnaW5JbmRleCk7
CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAg
ICAgIHRva2VuLnNldChjb2RlT3JpZ2luLCBpbmRleCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24g
MTUxMjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDIxICs2OCwxMCBAQCB2b2lkIENhbGxGcmFtZTo6c2V0
Q3VycmVudFZQQyhJbnN0cnVjdGlvCiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkK
LWJvb2wgQ2FsbEZyYW1lOjppc0lubGluZUNhbGxGcmFtZVNsb3coKQotewotICAgIGlmICghY2Fs
bGVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rp
b25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWUoKSk7Ci0gICAgaWYgKCFjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEpTRnVuY3Rpb24qIGNhbGxlZUFz
RnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKLSAg
ICByZXR1cm4gY2FsbGVlQXNGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpICE9IGNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKTsKLX0KLQotQ2FsbEZyYW1lKiBDYWxsRnJhbWU6OnRydWVDYWxsRnJh
bWUoQWJzdHJhY3RQQyBwYykKK0NhbGxGcmFtZSogQ2FsbEZyYW1lOjp0cnVlQ2FsbEZyYW1lKCkK
IHsKICAgICAvLyBBbSBJIGFuIGlubGluZSBjYWxsIGZyYW1lPyBJZiBzbywgd2UncmUgZG9uZS4K
LSAgICBpZiAoaXNJbmxpbmVDYWxsRnJhbWUoKSkKKyAgICBpZiAoaXNJbmxpbmVkRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgLy8gSWYgSSBkb24ndCBoYXZlIGEgY29k
ZSBibG9jaywgdGhlbiBJJ20gbm90IERGRyBjb2RlLCBzbyBJJ20gdGhlIHRydWUgY2FsbCBmcmFt
ZS4KQEAgLTk1LDQ3ICs4NCwyMyBAQCBDYWxsRnJhbWUqIENhbGxGcmFtZTo6dHJ1ZUNhbGxGcmFt
ZShBYnN0CiAgICAgaWYgKCFtYWNoaW5lQ29kZUJsb2NrLT5oYXNDb2RlT3JpZ2lucygpKQogICAg
ICAgICByZXR1cm4gdGhpczsKICAgICAKLSAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBQQyBtdXN0
IGJlIGR1ZSBlaXRoZXIgdG8gdGhlIERGRywgb3IgaXQgbXVzdCBiZSB1bnNldC4KLSAgICBBU1NF
UlQocGMuaGFzSklUUmV0dXJuQWRkcmVzcygpIHx8ICFwYyk7Ci0gICAgCiAgICAgLy8gVHJ5IHRv
IGRldGVybWluZSB0aGUgQ29kZU9yaWdpbi4gSWYgd2UgZG9uJ3QgaGF2ZSBhIHBjIHNldCB0aGVu
IHRoZSBvbmx5IHdheQogICAgIC8vIHRoYXQgdGhpcyBtYWtlcyBzZW5zZSBpcyBpZiB0aGUgQ29k
ZU9yaWdpbiBpbmRleCB3YXMgc2V0IGluIHRoZSBjYWxsIGZyYW1lLgotICAgIC8vIEZJWE1FOiBO
b3RlIHRoYXQgeW91IHdpbGwgc2VlICJOb3QgY3VycmVudGx5IGluIGlubGluZWQgY29kZSIgY29t
bWVudHMgYmVsb3cuCi0gICAgLy8gQ3VycmVudGx5LCB3ZSBkbyBub3QgcmVjb3JkIGNvZGUgb3Jp
Z2lucyBmb3IgY29kZSB0aGF0IGlzIG5vdCBpbmxpbmVkLCBiZWNhdXNlCi0gICAgLy8gdGhlIG9u
bHkgdGhpbmcgdGhhdCB3ZSB1c2UgY29kZSBvcmlnaW5zIGZvciBpcyBkZXRlcm1pbmluZyB0aGUg
aW5saW5lIHN0YWNrLgotICAgIC8vIEJ1dCBpbiB0aGUgZnV0dXJlLCB3ZSdsbCB3YW50IHRvIHVz
ZSB0aGlzIHNhbWUgZnVuY3Rpb25hbGl0eSAoaGF2aW5nIGEgY29kZQotICAgIC8vIG9yaWdpbiBt
YXBwaW5nIGZvciBhbnkgY2FsbHMgb3V0IG9mIEpJVCBjb2RlKSB0byBkZXRlcm1pbmUgdGhlIFBD
IGF0IGFueSBwb2ludAotICAgIC8vIGluIHRoZSBzdGFjayBldmVuIGlmIG5vdCBpbiBpbmxpbmVk
IGNvZGUuIFdoZW4gdGhhdCBoYXBwZW5zLCB0aGUgY29kZSBiZWxvdwotICAgIC8vIHdpbGwgaGF2
ZSB0byBjaGFuZ2UgdGhlIHdheSBpdCBkZXRlY3RzIHRoZSBwcmVzZW5jZSBvZiBpbmxpbmluZzog
aXQgd2lsbCBhbHdheXMKLSAgICAvLyBnZXQgYSBjb2RlIG9yaWdpbiwgYnV0IHNvbWV0aW1lcywg
dGhhdCBjb2RlIG9yaWdpbiB3aWxsIG5vdCBoYXZlIGFuIGlubGluZSBjYWxsCi0gICAgLy8gZnJh
bWUuIEluIHRoYXQgY2FzZSwgdGhpcyBtZXRob2Qgc2hvdWxkIGJhaWwgYW5kIHJldHVybiB0aGlz
LgogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKLSAgICBpZiAocGMuaXNTZXQoKSkgewotICAg
ICAgICBSZXR1cm5BZGRyZXNzUHRyIGN1cnJlbnRSZXR1cm5QQyA9IHBjLmppdFJldHVybkFkZHJl
c3MoKTsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgaGFzQ29kZU9yaWdpbiA9IG1hY2hpbmVDb2Rl
QmxvY2stPmNvZGVPcmlnaW5Gb3JSZXR1cm4oY3VycmVudFJldHVyblBDLCBjb2RlT3JpZ2luKTsK
LSAgICAgICAgQVNTRVJUKGhhc0NvZGVPcmlnaW4pOwotICAgICAgICBpZiAoIWhhc0NvZGVPcmln
aW4pIHsKLSAgICAgICAgICAgIC8vIEluIHJlbGVhc2UgYnVpbGRzLCBpZiB3ZSBmaW5kIG91cnNl
bHZlcyBpbiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgcmV0dXJuIFBDIGRvZXNuJ3QKLSAgICAgICAg
ICAgIC8vIGNvcnJlc3BvbmQgdG8gYSB2YWxpZCBDb2RlT3JpZ2luLCB3ZSByZXR1cm4gemVybyBp
bnN0ZWFkIG9mIGNvbnRpbnVpbmcuIFNvbWUgb2YKLSAgICAgICAgICAgIC8vIHRoZSBjYWxsZXJz
IG9mIHRydWVDYWxsRnJhbWUoKSB3aWxsIGJlIGFibGUgdG8gcmVjb3ZlciBhbmQgZG8gY29uc2Vy
dmF0aXZlIHRoaW5ncywKLSAgICAgICAgICAgIC8vIHdoaWxlIG90aGVycyB3aWxsIGNyYXNoLgot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICB1
bnNpZ25lZCBpbmRleCA9IGxvY2F0aW9uQXNDb2RlT3JpZ2luSW5kZXgoKTsKLSAgICAgICAgQVNT
RVJUKG1hY2hpbmVDb2RlQmxvY2stPmNhbkdldENvZGVPcmlnaW4oaW5kZXgpKTsKLSAgICAgICAg
aWYgKCFtYWNoaW5lQ29kZUJsb2NrLT5jYW5HZXRDb2RlT3JpZ2luKGluZGV4KSkgewotICAgICAg
ICAgICAgLy8gU2VlIGFib3ZlLiBJbiByZWxlYXNlIGJ1aWxkcywgd2UgdHJ5IHRvIHByb3RlY3Qg
b3Vyc2VsdmVzIGZyb20gY3Jhc2hpbmcgZXZlbgotICAgICAgICAgICAgLy8gdGhvdWdoIHN0YWNr
IHdhbGtpbmcgd2lsbCBiZSBnb29mZWQgdXAuCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgfQotICAgICAgICBjb2RlT3JpZ2luID0gbWFjaGluZUNvZGVCbG9jay0+Y29kZU9yaWdpbihp
bmRleCk7CisgICAgdW5zaWduZWQgaW5kZXggPSBsb2NhdGlvbkFzQ29kZU9yaWdpbkluZGV4KCk7
CisgICAgQVNTRVJUKG1hY2hpbmVDb2RlQmxvY2stPmNhbkdldENvZGVPcmlnaW4oaW5kZXgpKTsK
KyAgICBpZiAoIW1hY2hpbmVDb2RlQmxvY2stPmNhbkdldENvZGVPcmlnaW4oaW5kZXgpKSB7Cisg
ICAgICAgIC8vIFNlZSBhYm92ZS4gSW4gcmVsZWFzZSBidWlsZHMsIHdlIHRyeSB0byBwcm90ZWN0
IG91cnNlbHZlcyBmcm9tIGNyYXNoaW5nIGV2ZW4KKyAgICAgICAgLy8gdGhvdWdoIHN0YWNrIHdh
bGtpbmcgd2lsbCBiZSBnb29mZWQgdXAuCisgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBj
b2RlT3JpZ2luID0gbWFjaGluZUNvZGVCbG9jay0+Y29kZU9yaWdpbihpbmRleCk7CiAKICAgICBp
ZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhpczsgLy8g
Tm90IGN1cnJlbnRseSBpbiBpbmxpbmVkIGNvZGUuCi0gICAgCisKKyAgICBDb2RlT3JpZ2luIGlu
bmVyTW9zdENvZGVPcmlnaW4gPSBjb2RlT3JpZ2luOworCiAgICAgZm9yIChJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVD
YWxsRnJhbWU7KSB7CiAgICAgICAgIElubGluZUNhbGxGcmFtZSogbmV4dElubGluZUNhbGxGcmFt
ZSA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgCkBA
IC0xNDQsNyArMTA5LDcgQEAgQ2FsbEZyYW1lKiBDYWxsRnJhbWU6OnRydWVDYWxsRnJhbWUoQWJz
dAogICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWVBc0Z1bmN0aW9uID0gaW5saW5lQ2FsbEZyYW1l
LT5jYWxsZWUuZ2V0KCk7CiAgICAgICAgIAogICAgICAgICAvLyBGaWxsIGluIHRoZSBpbmxpbmVk
Q2FsbGVyCi0gICAgICAgIGlubGluZWRDYWxsZXItPnNldENvZGVCbG9jayhtYWNoaW5lQ29kZUJs
b2NrKTsKKyAgICAgICAgaW5saW5lZENhbGxlci0+c2V0Q29kZUJsb2NrKGlubGluZUNhbGxGcmFt
ZS0+YmFzZWxpbmVDb2RlQmxvY2soKSk7CiAgICAgICAgIGlmIChjYWxsZWVBc0Z1bmN0aW9uKQog
ICAgICAgICAgICAgaW5saW5lZENhbGxlci0+c2V0U2NvcGUoY2FsbGVlQXNGdW5jdGlvbi0+c2Nv
cGUoKSk7CiAgICAgICAgIGlmIChuZXh0SW5saW5lQ2FsbEZyYW1lKQpAQCAtMTU0LDE5ICsxMTks
MjMgQEAgQ2FsbEZyYW1lKiBDYWxsRnJhbWU6OnRydWVDYWxsRnJhbWUoQWJzdAogICAgICAgICAK
ICAgICAgICAgaW5saW5lZENhbGxlci0+c2V0SW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFt
ZSk7CiAgICAgICAgIGlubGluZWRDYWxsZXItPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGlubGluZWRDYWxs
ZXItPnNldExvY2F0aW9uQXNCeXRlY29kZU9mZnNldChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgp
OworICAgICAgICBpbmxpbmVkQ2FsbGVyLT5zZXRJc0lubGluZWRGcmFtZSgpOwogICAgICAgICBp
ZiAoY2FsbGVlQXNGdW5jdGlvbikKICAgICAgICAgICAgIGlubGluZWRDYWxsZXItPnNldENhbGxl
ZShjYWxsZWVBc0Z1bmN0aW9uKTsKICAgICAgICAgCisgICAgICAgIGNvZGVPcmlnaW4gPSBpbmxp
bmVDYWxsRnJhbWUtPmNhbGxlcjsKICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbmV4dElubGlu
ZUNhbGxGcmFtZTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHRoaXMgKyBjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CisgICAgcmV0dXJuIHRoaXMgKyBpbm5lck1vc3RD
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiB9CiAgICAgICAgIAogQ2Fs
bEZyYW1lKiBDYWxsRnJhbWU6OnRydWVDYWxsZXJGcmFtZSgpCiB7CisgICAgQ2FsbEZyYW1lKiBj
YWxsZXJGcmFtZSA9IHRoaXMtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFn
KCk7CiAgICAgaWYgKCFjb2RlQmxvY2soKSkKLSAgICAgICAgcmV0dXJuIGNhbGxlckZyYW1lKCkt
PnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisgICAgICAgIHJldHVybiBjYWxsZXJGcmFtZTsK
IAogICAgIC8vIHRoaXMgLT4gVGhlIGNhbGxlZTsgdGhpcyBpcyBlaXRoZXIgYW4gaW5saW5lZCBj
YWxsZWUgaW4gd2hpY2ggY2FzZSBpdCBhbHJlYWR5IGhhcwogICAgIC8vICAgIGEgcG9pbnRlciB0
byB0aGUgdHJ1ZSBjYWxsZXIuIE90aGVyd2lzZSBpdCBjb250YWlucyBjdXJyZW50IFBDIGluIHRo
ZSBtYWNoaW5lCkBAIC0xNzYsMzMgKzE0NSw0MyBAQCBDYWxsRnJhbWUqIENhbGxGcmFtZTo6dHJ1
ZUNhbGxlckZyYW1lKCkKICAgICAvLyAgICBtb3JlIGZyYW1lcyBhYm92ZSB0aGUgdHJ1ZSBjYWxs
ZXIgZHVlIHRvIGlubGluaW5nLgogCiAgICAgLy8gQW0gSSBhbiBpbmxpbmUgY2FsbCBmcmFtZT8g
SWYgc28sIHdlJ3JlIGRvbmUuCi0gICAgaWYgKGlzSW5saW5lQ2FsbEZyYW1lKCkpCi0gICAgICAg
IHJldHVybiBjYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlm
IChpc0lubGluZWRGcmFtZSgpKQorICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWU7CiAgICAgCiAg
ICAgLy8gSSBhbSBhIG1hY2hpbmUgY2FsbCBmcmFtZSwgc28gdGhlIHF1ZXN0aW9uIGlzOiBpcyBt
eSBjYWxsZXIgYSBtYWNoaW5lIGNhbGwgZnJhbWUKICAgICAvLyB0aGF0IGhhcyBpbmxpbmVzIG9y
IGEgbWFjaGluZSBjYWxsIGZyYW1lIHRoYXQgZG9lc24ndD8KLSAgICBDYWxsRnJhbWUqIG1hY2hp
bmVDYWxsZXIgPSBjYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOwotICAg
IGlmICghbWFjaGluZUNhbGxlcikKKyAgICBpZiAoIWNhbGxlckZyYW1lKQogICAgICAgICByZXR1
cm4gMDsKLSAgICBBU1NFUlQoIW1hY2hpbmVDYWxsZXItPmlzSW5saW5lQ2FsbEZyYW1lKCkpOwot
ICAgIAotICAgIC8vIEZpZ3VyZSBvdXQgaG93IHdlIHdhbnQgdG8gZ2V0IHRoZSBjdXJyZW50IGNv
ZGUgbG9jYXRpb24uCi0gICAgaWYgKCFoYXNSZXR1cm5QQygpIHx8IHJldHVybkFkZHJlc3NJc0lu
Q3RpVHJhbXBvbGluZShyZXR1cm5QQygpKSkKLSAgICAgICAgcmV0dXJuIG1hY2hpbmVDYWxsZXIt
PnRydWVDYWxsRnJhbWVGcm9tVk1Db2RlKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisK
KyAgICBpZiAoIWNhbGxlckZyYW1lLT5jb2RlQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGNhbGxl
ckZyYW1lOworICAgIEFTU0VSVCghY2FsbGVyRnJhbWUtPmlzSW5saW5lZEZyYW1lKCkpOwogICAg
IAotICAgIHJldHVybiBtYWNoaW5lQ2FsbGVyLT50cnVlQ2FsbEZyYW1lKHJldHVyblBDKCkpLT5y
ZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIHJldHVybiBjYWxsZXJGcmFtZS0+dHJ1ZUNh
bGxGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOwogfQogCi1Db2RlQmxvY2sqIENh
bGxGcmFtZTo6c29tZUNvZGVCbG9ja0ZvclBvc3NpYmx5SW5saW5lZENvZGUoKQordW5zaWduZWQg
Q2FsbEZyYW1lOjpieXRlY29kZU9mZnNldEZyb21Db2RlT3JpZ2luSW5kZXgoKQogewotICAgIGlm
ICghaXNJbmxpbmVDYWxsRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpOwotICAg
IAotICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oaW5saW5lQ2FsbEZyYW1l
KCktPmV4ZWN1dGFibGUuZ2V0KCkpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcigKLSAgICAgICAgaW5s
aW5lQ2FsbEZyYW1lKCktPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgQVNTRVJUKGhhc0xvY2F0aW9uQXNDb2RlT3JpZ2luSW5kZXgoKSk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSB0aGlzLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2Nr
KTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGxv
Y2F0aW9uQXNDb2RlT3JpZ2luSW5kZXgoKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jYW5HZXRD
b2RlT3JpZ2luKGluZGV4KSk7CisgICAgY29kZU9yaWdpbiA9IGNvZGVCbG9jay0+Y29kZU9yaWdp
bihpbmRleCk7CisKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0g
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTspIHsKKyAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2soKSA9PSBjb2RlQmxvY2spCisg
ICAgICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OworCisgICAgICAgIGNv
ZGVPcmlnaW4gPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlcjsKKyAgICAgICAgaW5saW5lQ2FsbEZy
YW1lID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7CisgICAgfQorICAgIHJldHVybiBjb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXg7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogCiBSZWdpc3RlciogQ2FsbEZyYW1lOjpmcmFtZUV4dGVudEludGVybmFsKCkKIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJl
dmlzaW9uIDE1MTI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCisgLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENv
cHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCkBAIC0xMTQsNiArMTE0LDI5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNlbmRpZgog
ICAgICAgICBBYnN0cmFjdFBDIGFic3RyYWN0UmV0dXJuUEMoVk0mIHZtKSB7IHJldHVybiBBYnN0
cmFjdFBDKHZtLCB0aGlzKTsgfQogCisgICAgICAgIGNsYXNzIExvY2F0aW9uIHsKKyAgICAgICAg
cHVibGljOgorICAgICAgICAgICAgZW51bSBEZWNvcmF0aW9uIHsKKyAgICAgICAgICAgICAgICBC
eXRlY29kZU9mZnNldCA9IDAsCisgICAgICAgICAgICAgICAgQ29kZU9yaWdpbkluZGV4ID0gKDEg
PDwgMCksCisgICAgICAgICAgICAgICAgSW5saW5lZEZyYW1lID0gKDEgPDwgMSksCisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGVuY29kZSh1aW50
MzJfdCBiaXRzLCBEZWNvcmF0aW9uKTsKKyAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgdWludDMy
X3QgZGVjb2RlKHVpbnQzMl90IGJpdHMpOworICAgICAgICAgICAgc3RhdGljIGlubGluZSBib29s
IGlzQnl0ZWNvZGVPZmZzZXQodWludDMyX3QgYml0cyk7CisgICAgICAgICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNDb2RlT3JpZ2luSW5kZXgodWludDMyX3QgYml0cyk7CisgICAgICAgICAgICBz
dGF0aWMgaW5saW5lIGJvb2wgaXNJbmxpbmVkRnJhbWUodWludDMyX3QgYml0cyk7CisKKyAgICAg
ICAgcHJpdmF0ZToKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX21hc2sgPSAw
eDM7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19zaGlmdCA9IDMwOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfc2hpZnRlZE1hc2sgPSBzX21hc2sgPDwg
c19zaGlmdDsKKyAgICAgICAgfTsKKworICAgICAgICBib29sIGlzSW5saW5lZEZyYW1lKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0SXNJbmxpbmVkRnJhbWUoKTsKKwogICAgICAgICBib29sIGhh
c0xvY2F0aW9uQXNCeXRlY29kZU9mZnNldCgpIGNvbnN0OwogICAgICAgICBib29sIGhhc0xvY2F0
aW9uQXNDb2RlT3JpZ2luSW5kZXgoKSBjb25zdDsKIApAQCAtMTI0LDYgKzE0Nyw4IEBAIG5hbWVz
cGFjZSBKU0MgIHsKICAgICAgICAgdm9pZCBzZXRMb2NhdGlvbkFzUmF3Qml0cyh1bnNpZ25lZCk7
CiAgICAgICAgIHZvaWQgc2V0TG9jYXRpb25Bc0J5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkKTsKIAor
ICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZyb21Db2RlT3JpZ2luSW5kZXgoKTsKKwog
ICAgICAgICBSZWdpc3RlciogZnJhbWVFeHRlbnQoKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIWNvZGVCbG9jaygpKQpAQCAtMTM3LDcgKzE2Miw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiB0
aGlzW0pTU3RhY2s6OlJldHVyblBDXS5hc0lubGluZUNhbGxGcmFtZSgpOyB9CiAjZWxzZQogICAg
ICAgICAvLyBUaGlzIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIGlmICFFTkFCTEUoREZHX0pJVCkgc2lu
Y2UgYWxsIGNhbGxzIHNob3VsZCBiZSBndWFyZGVkIGJ5Ci0gICAgICAgIC8vIGlzSW5saW5lQ2Fs
bEZyYW1lKCkuIEJ1dCB0byBtYWtlIGl0IGVhc2llciB0byB3cml0ZSBjb2RlIHdpdGhvdXQgaGF2
aW5nIGEgYnVuY2ggb2YKKyAgICAgICAgLy8gaXNJbmxpbmVkRnJhbWUoKS4gQnV0IHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIHdyaXRlIGNvZGUgd2l0aG91dCBoYXZpbmcgYSBidW5jaCBvZgogICAgICAg
ICAvLyAjaWYncywgd2UgbWFrZSBhIGR1bW15IGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBhbnl3
YXkuCiAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKCkgY29uc3QKICAg
ICAgICAgewpAQCAtMjMxLDM5ICsyNTYsMjEgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICB2
b2lkIHNldFJldHVyblBDKHZvaWQqIHZhbHVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhp
cylbSlNTdGFjazo6UmV0dXJuUENdID0gKEluc3RydWN0aW9uKil2YWx1ZTsgfQogICAgICAgICAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgYm9vbCBpc0lubGluZUNhbGxGcmFtZSgpOwot
ICAgICAgICAKICAgICAgICAgdm9pZCBzZXRJbmxpbmVDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNr
OjpSZXR1cm5QQ10gPSBpbmxpbmVDYWxsRnJhbWU7IH0KLSAgICAgICAgCisKICAgICAgICAgLy8g
Q2FsbCB0aGlzIHRvIGdldCB0aGUgc2VtYW50aWNhbGx5IGNvcnJlY3QgSlMgQ2FsbEZyYW1lKiBm
b3IgdGhlCiAgICAgICAgIC8vIGN1cnJlbnRseSBleGVjdXRpbmcgZnVuY3Rpb24uCi0gICAgICAg
IENhbGxGcmFtZSogdHJ1ZUNhbGxGcmFtZShBYnN0cmFjdFBDKTsKLSAgICAgICAgCisgICAgICAg
IENhbGxGcmFtZSogdHJ1ZUNhbGxGcmFtZSgpOworCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBn
ZXQgdGhlIHNlbWFudGljYWxseSBjb3JyZWN0IEpTIENhbGxGcmFtZSogY29ycmVzcG9uZGluZwog
ICAgICAgICAvLyB0byB0aGUgY2FsbGVyLiBUaGlzIHJlc29sdmVzIGlzc3VlcyBzdXJyb3VuZGlu
ZyBpbmxpbmluZyBhbmQgdGhlCiAgICAgICAgIC8vIEhvc3RDYWxsRnJhbWVGbGFnIHN0dWZmLgog
ICAgICAgICBDYWxsRnJhbWUqIHRydWVDYWxsZXJGcmFtZSgpOwotICAgICAgICAKLSAgICAgICAg
Q29kZUJsb2NrKiBzb21lQ29kZUJsb2NrRm9yUG9zc2libHlJbmxpbmVkQ29kZSgpOwogI2Vsc2UK
LSAgICAgICAgYm9vbCBpc0lubGluZUNhbGxGcmFtZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
ICAgIAogICAgICAgICBDYWxsRnJhbWUqIHRydWVDYWxsRnJhbWUoQWJzdHJhY3RQQykgeyByZXR1
cm4gdGhpczsgfQogICAgICAgICBDYWxsRnJhbWUqIHRydWVDYWxsZXJGcmFtZSgpIHsgcmV0dXJu
IGNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7IH0KLSAgICAgICAgCi0g
ICAgICAgIENvZGVCbG9jayogc29tZUNvZGVCbG9ja0ZvclBvc3NpYmx5SW5saW5lZENvZGUoKSB7
IHJldHVybiBjb2RlQmxvY2soKTsgfQogI2VuZGlmCiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVy
RnJhbWVOb0ZsYWdzKCkgeyByZXR1cm4gY2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFt
ZUZsYWcoKTsgfQotICAgICAgICAKLSAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIGdldCB0aGUgdHJ1
ZSBjYWxsIGZyYW1lIChhY2NvdW50ZWQgZm9yIGlubGluaW5nIGFuZCBhbnkKLSAgICAgICAgLy8g
b3RoZXIgb3B0aW1pemF0aW9ucyksIHdoZW4geW91IGhhdmUgZW50ZXJlZCBpbnRvIFZNIGNvZGUg
dGhyb3VnaCBvbmUKLSAgICAgICAgLy8gb2YgdGhlICJibGVzc2VkIiBlbnRyeXBvaW50cyAoSklU
U3R1YnMgb3IgREZHT3BlcmF0aW9ucykuIFRoaXMgbWVhbnMKLSAgICAgICAgLy8gdGhhdCBpZiB5
b3UncmUgcHJldHR5IG11Y2ggYW55d2hlcmUgaW4gdGhlIFZNIHlvdSBjYW4gc2FmZWx5IGNhbGwg
dGhpczsKLSAgICAgICAgLy8gdGhvdWdoIGlmIHlvdSB3ZXJlIHRvIG1hZ2ljYWxseSBnZXQgYW4g
RXhlY1N0YXRlKiBieSwgc2F5LCBpbnRlcnJ1cHRpbmcKLSAgICAgICAgLy8gYSB0aHJlYWQgdGhh
dCBpcyBydW5uaW5nIEpTIGNvZGUgYW5kIGJydXRpc2hseSBzY3JhcGVkIHRoZSBjYWxsIGZyYW1l
Ci0gICAgICAgIC8vIHJlZ2lzdGVyLCBjYWxsaW5nIHRoaXMgbWV0aG9kIHdvdWxkIHByb2JhYmx5
IGxlYWQgdG8gaG9ycmlibGUgdGhpbmdzCi0gICAgICAgIC8vIGhhcHBlbmluZy4KLSAgICAgICAg
Q2FsbEZyYW1lKiB0cnVlQ2FsbEZyYW1lRnJvbVZNQ29kZSgpIHsgcmV0dXJuIHRydWVDYWxsRnJh
bWUoQWJzdHJhY3RQQygpKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0
IGludHB0cl90IEhvc3RDYWxsRnJhbWVGbGFnID0gMTsKQEAgLTI3Myw5ICsyODAsNiBAQCBuYW1l
c3BhY2UgSlNDICB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBKU1N0YWNrKiBzdGFjaygpOwog
I2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAgIGJvb2wgaXNJbmxpbmVDYWxsRnJh
bWVTbG93KCk7Ci0jZW5kaWYKICAgICAgICAgRXhlY1N0YXRlKCk7CiAgICAgICAgIH5FeGVjU3Rh
dGUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lSW5saW5lcy5oCShyZXZpc2lvbiAxNTEyNjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNywxOCArMjcsNTkgQEAKICNkZWZpbmUgQ2FsbEZyYW1lSW5saW5lc19oCiAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
IHsKIAoraW5saW5lIHVpbnQzMl90IENhbGxGcmFtZTo6TG9jYXRpb246OmVuY29kZSh1aW50MzJf
dCBiaXRzLCBDYWxsRnJhbWU6OkxvY2F0aW9uOjpEZWNvcmF0aW9uIGRlY29yYXRpb24pCit7Cisg
ICAgQVNTRVJUKCEoYml0cyAmIHNfc2hpZnRlZE1hc2spKTsKKyAgICBBU1NFUlQoIShkZWNvcmF0
aW9uICYgfnNfbWFzaykpOworICAgIHJldHVybiBiaXRzIHwgKGRlY29yYXRpb24gPDwgc19zaGlm
dCk7Cit9CisKK2lubGluZSB1aW50MzJfdCBDYWxsRnJhbWU6OkxvY2F0aW9uOjpkZWNvZGUodWlu
dDMyX3QgYml0cykKK3sKKyAgICByZXR1cm4gYml0cyAmIH5zX3NoaWZ0ZWRNYXNrOworfQorCitp
bmxpbmUgYm9vbCBDYWxsRnJhbWU6OkxvY2F0aW9uOjppc0J5dGVjb2RlT2Zmc2V0KHVpbnQzMl90
IGJpdHMpCit7CisgICAgcmV0dXJuICFpc0NvZGVPcmlnaW5JbmRleChiaXRzKTsKK30KKworaW5s
aW5lIGJvb2wgQ2FsbEZyYW1lOjpMb2NhdGlvbjo6aXNDb2RlT3JpZ2luSW5kZXgodWludDMyX3Qg
Yml0cykKK3sKKyAgICBEZWNvcmF0aW9uIGRlY29yYXRpb24gPSBzdGF0aWNfY2FzdDxEZWNvcmF0
aW9uPihiaXRzID4+IHNfc2hpZnQpOworICAgIHJldHVybiAhIShkZWNvcmF0aW9uICYgQ29kZU9y
aWdpbkluZGV4KTsKK30KKworaW5saW5lIGJvb2wgQ2FsbEZyYW1lOjpMb2NhdGlvbjo6aXNJbmxp
bmVkRnJhbWUodWludDMyX3QgYml0cykKK3sKKyAgICBEZWNvcmF0aW9uIGRlY29yYXRpb24gPSBz
dGF0aWNfY2FzdDxEZWNvcmF0aW9uPihiaXRzID4+IHNfc2hpZnQpOworICAgIHJldHVybiAhIShk
ZWNvcmF0aW9uICYgSW5saW5lZEZyYW1lKTsKK30KKworaW5saW5lIGJvb2wgQ2FsbEZyYW1lOjpp
c0lubGluZWRGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvY2F0aW9uOjppc0lubGluZWRG
cmFtZShsb2NhdGlvbkFzUmF3Qml0cygpKTsKK30KKworaW5saW5lIHZvaWQgQ2FsbEZyYW1lOjpz
ZXRJc0lubGluZWRGcmFtZSgpCit7CisgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKKyAgICB1aW50
MzJfdCBiaXRzID0gTG9jYXRpb246OmVuY29kZShsb2NhdGlvbkFzUmF3Qml0cygpLCBMb2NhdGlv
bjo6SW5saW5lZEZyYW1lKTsKKyAgICBzZXRMb2NhdGlvbkFzUmF3Qml0cyhiaXRzKTsKKyAgICBB
U1NFUlQoaXNJbmxpbmVkRnJhbWUoKSk7Cit9CisKIGlubGluZSBib29sIENhbGxGcmFtZTo6aGFz
TG9jYXRpb25Bc0J5dGVjb2RlT2Zmc2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gIUNvZGVPcmln
aW46OmlzSGFuZGxlKGxvY2F0aW9uQXNSYXdCaXRzKCkpOworICAgIHJldHVybiBMb2NhdGlvbjo6
aXNCeXRlY29kZU9mZnNldChsb2NhdGlvbkFzUmF3Qml0cygpKTsKIH0KIAogaW5saW5lIGJvb2wg
Q2FsbEZyYW1lOjpoYXNMb2NhdGlvbkFzQ29kZU9yaWdpbkluZGV4KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gQ29kZU9yaWdpbjo6aXNIYW5kbGUobG9jYXRpb25Bc1Jhd0JpdHMoKSk7CisgICAgcmV0
dXJuIExvY2F0aW9uOjppc0NvZGVPcmlnaW5JbmRleChsb2NhdGlvbkFzUmF3Qml0cygpKTsKIH0K
IAogaW5saW5lIHVuc2lnbmVkIENhbGxGcmFtZTo6bG9jYXRpb25Bc1Jhd0JpdHMoKSBjb25zdApA
QCAtNTYsMTMgKzk3LDEzIEBAIGlubGluZSB1bnNpZ25lZCBDYWxsRnJhbWU6OmxvY2F0aW9uQXNC
eXQKIHsKICAgICBBU1NFUlQoaGFzTG9jYXRpb25Bc0J5dGVjb2RlT2Zmc2V0KCkpOwogICAgIEFT
U0VSVChjb2RlQmxvY2soKSk7Ci0gICAgcmV0dXJuIGxvY2F0aW9uQXNSYXdCaXRzKCk7CisgICAg
cmV0dXJuIExvY2F0aW9uOjpkZWNvZGUobG9jYXRpb25Bc1Jhd0JpdHMoKSk7CiB9CiAKIGlubGlu
ZSB2b2lkIENhbGxGcmFtZTo6c2V0TG9jYXRpb25Bc0J5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIG9m
ZnNldCkKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrKCkpOwotICAgIHNldExvY2F0aW9uQXNSYXdC
aXRzKG9mZnNldCk7CisgICAgc2V0TG9jYXRpb25Bc1Jhd0JpdHMoTG9jYXRpb246OmVuY29kZShv
ZmZzZXQsIExvY2F0aW9uOjpCeXRlY29kZU9mZnNldCkpOwogICAgIEFTU0VSVChoYXNMb2NhdGlv
bkFzQnl0ZWNvZGVPZmZzZXQoKSk7CiB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKQEAgLTcx
LDcgKzExMiw3IEBAIGlubGluZSB1bnNpZ25lZCBDYWxsRnJhbWU6OmxvY2F0aW9uQXNDb2QKIHsK
ICAgICBBU1NFUlQoaGFzTG9jYXRpb25Bc0NvZGVPcmlnaW5JbmRleCgpKTsKICAgICBBU1NFUlQo
Y29kZUJsb2NrKCkpOwotICAgIHJldHVybiBDb2RlT3JpZ2luOjpkZWNvZGVIYW5kbGUobG9jYXRp
b25Bc1Jhd0JpdHMoKSk7CisgICAgcmV0dXJuIExvY2F0aW9uOjpkZWNvZGUobG9jYXRpb25Bc1Jh
d0JpdHMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNTEy
NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01ODYsNyArNTg2LDYgQEAgc3RhdGljIENhbGxGcmFtZSogZ2V0
Q2FsbGVySW5mbyhWTSogdm0sIAogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gMDsKICAgICBBU1NFUlQo
IWNhbGxGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSk7CiAgICAgQ2FsbEZyYW1lKiB0cnVl
Q2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPnRydWVDYWxsZXJGcmFtZSgpOwotICAgIGJvb2wgd2Fz
Q2FsbGVkQnlIb3N0ID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1l
RmxhZygpOwogICAgIEFTU0VSVCghdHJ1ZUNhbGxlckZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxh
ZygpKTsKIAogICAgIGlmICh0cnVlQ2FsbGVyRnJhbWUgPT0gQ2FsbEZyYW1lOjpub0NhbGxlcigp
IHx8ICF0cnVlQ2FsbGVyRnJhbWUgfHwgIXRydWVDYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCkpIHsK
QEAgLTU5NSw2MCArNTk0LDExIEBAIHN0YXRpYyBDYWxsRnJhbWUqIGdldENhbGxlckluZm8oVk0q
IHZtLCAKICAgICB9CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSB0cnVl
Q2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIAotICAgIGlmICghY2FsbEZyYW1lLT5oYXNS
ZXR1cm5QQygpKQotICAgICAgICB3YXNDYWxsZWRCeUhvc3QgPSB0cnVlOwotCi0gICAgaWYgKHdh
c0NhbGxlZEJ5SG9zdCkgewotI2lmIEVOQUJMRShERkdfSklUKQotICAgICAgICBpZiAoY2FsbGVy
Q29kZUJsb2NrICYmIEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjYWxsZXJDb2RlQmxvY2stPmpp
dFR5cGUoKSkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVPcmlnaW5JbmRleCA9IGNhbGxG
cmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+bG9jYXRpb25B
c0NvZGVPcmlnaW5JbmRleCgpOwotICAgICAgICAgICAgQ29kZU9yaWdpbiBvcmlnaW4gPSBjYWxs
ZXJDb2RlQmxvY2stPmNvZGVPcmlnaW4oY29kZU9yaWdpbkluZGV4KTsKLSAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gb3JpZ2luLmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAgICBpZiAoSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQot
ICAgICAgICAgICAgICAgIGNhbGxlckNvZGVCbG9jayA9IGlubGluZUNhbGxGcmFtZS0+YmFzZWxp
bmVDb2RlQmxvY2soKTsKLSAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gdHJ1ZUNhbGxlckZyYW1lLT5sb2NhdGlvbkFzQnl0ZWNvZGVPZmZzZXQoKTsK
LSAgICB9IGVsc2UgewotI2lmIEVOQUJMRShERkdfSklUKQotICAgICAgICBpZiAoY2FsbEZyYW1l
LT5pc0lubGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlj
ZiA9IGNhbGxGcmFtZS0+aW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICBieXRlY29kZU9m
ZnNldCA9IGljZi0+Y2FsbGVyLmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAgICBpZiAoSW5saW5l
Q2FsbEZyYW1lKiBwYXJlbnRDYWxsRnJhbWUgPSBpY2YtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUp
IHsKLSAgICAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihwYXJlbnRDYWxsRnJhbWUtPmV4ZWN1dGFibGUu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gZXhlY3V0
YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IocGFyZW50Q2FsbEZyYW1lLT5pc0NhbGwgPyBDb2Rl
Rm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICAgICAgICAgIEFTU0VSVChuZXdD
b2RlQmxvY2spOwotICAgICAgICAgICAgICAgIEFTU0VSVChuZXdDb2RlQmxvY2stPmluc3RydWN0
aW9uQ291bnQoKSA+IGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBjYWxsZXJDb2Rl
QmxvY2sgPSBuZXdDb2RlQmxvY2s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
Y2FsbGVyQ29kZUJsb2NrICYmIEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjYWxsZXJDb2RlQmxv
Y2stPmppdFR5cGUoKSkpIHsKLSAgICAgICAgICAgIENvZGVPcmlnaW4gb3JpZ2luOwotICAgICAg
ICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmNvZGVPcmlnaW5Gb3JSZXR1cm4oY2FsbEZyYW1l
LT5yZXR1cm5QQygpLCBvcmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQg
bm90IGJlIHBvc3NpYmxlLCBidXQgd2UncmUgc2VlaW5nIGNhc2VzIHdoZXJlIGl0IGRvZXMgaGFw
cGVuCi0gICAgICAgICAgICAgICAgLy8gQ2FsbEZyYW1lIGFscmVhZHkgaGFzIHJvYnVzdG5lc3Mg
YWdhaW5zdCBib2d1cyBzdGFjayB3YWxrcywgc28KLSAgICAgICAgICAgICAgICAvLyB3ZSdsbCBl
eHRlbmQgdGhhdCB0byBoZXJlIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgY2FsbGVyID0gMDsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gb3Jp
Z2luLmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBpY2Yg
PSBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oaWNm
LT5leGVjdXRhYmxlLmdldCgpKTsKLSAgICAgICAgICAgICAgICBDb2RlQmxvY2sqIG5ld0NvZGVC
bG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGljZi0+aXNDYWxsID8gQ29k
ZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobmV3
Q29kZUJsb2NrKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJsb2NrLT5pbnN0cnVj
dGlvbkNvdW50KCkgPiBieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgY2FsbGVyQ29k
ZUJsb2NrID0gbmV3Q29kZUJsb2NrOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSNl
bmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZXJDb2RlQmxv
Y2spOwotICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KHRydWVDYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKLSAgICAg
ICAgfQotICAgIH0KKyAgICBpZiAodHJ1ZUNhbGxlckZyYW1lLT5oYXNMb2NhdGlvbkFzQ29kZU9y
aWdpbkluZGV4KCkpCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gdHJ1ZUNhbGxlckZyYW1lLT5i
eXRlY29kZU9mZnNldEZyb21Db2RlT3JpZ2luSW5kZXgoKTsKKyAgICBlbHNlCisgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gdHJ1ZUNhbGxlckZyYW1lLT5sb2NhdGlvbkFzQnl0ZWNvZGVPZmZzZXQo
KTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlckNvZGVCbG9jayk7CiAgICAgY2FsbGVyID0g
Y2FsbGVyQ29kZUJsb2NrOwogICAgIHJldHVybiB0cnVlQ2FsbGVyRnJhbWU7CiB9CkBAIC03MjQs
NyArNjc0LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShWZWN0b3I8UwogICAg
IGlmICghY2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpIAog
ICAgICAgICByZXR1cm47CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBnZXRCeXRlY29k
ZU9mZnNldEZvckNhbGxGcmFtZShjYWxsRnJhbWUpOwotICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+dHJ1ZUNhbGxGcmFtZUZyb21WTUNvZGUoKTsKKyAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUt
PnRydWVDYWxsRnJhbWUoKTsKICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
QEAgLTE0NzEsNyArMTQyMSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnJldHJpZXZlQ2FsbGVy
RnJvbVYKIAogQ2FsbEZyYW1lKiBJbnRlcnByZXRlcjo6ZmluZEZ1bmN0aW9uQ2FsbEZyYW1lRnJv
bVZNQ29kZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24pCiB7Ci0g
ICAgZm9yIChDYWxsRnJhbWUqIGNhbmRpZGF0ZSA9IGNhbGxGcmFtZS0+dHJ1ZUNhbGxGcmFtZUZy
b21WTUNvZGUoKTsgY2FuZGlkYXRlOyBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRydWVDYWxsZXJG
cmFtZSgpKSB7CisgICAgZm9yIChDYWxsRnJhbWUqIGNhbmRpZGF0ZSA9IGNhbGxGcmFtZS0+dHJ1
ZUNhbGxGcmFtZSgpOyBjYW5kaWRhdGU7IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+dHJ1ZUNhbGxl
ckZyYW1lKCkpIHsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+Y2FsbGVlKCkgPT0gZnVuY3Rpb24p
CiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTUxMjYwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3Vt
ZW50cy5oIgogCisjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQWN0
aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgpAQCAtMzU0LDcgKzM1NSw3IEBAIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmKENhbGxG
cmFtZSogY2FsbEYKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghY2FsbEZyYW1lLT5pc0lu
bGluZUNhbGxGcmFtZSgpKSB7CisgICAgaWYgKCFjYWxsRnJhbWUtPmlzSW5saW5lZEZyYW1lKCkp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bUFyZ3VtZW50czsgKytpKQog
ICAgICAgICAgICAgdHJ5U2V0QXJndW1lbnQoY2FsbEZyYW1lLT52bSgpLCBpLCBjYWxsRnJhbWUt
PmFyZ3VtZW50QWZ0ZXJDYXB0dXJlKGkpKTsKICAgICAgICAgcmV0dXJuOwo=
</data>
<flag name="review"
          id="225410"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>