<?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>146285</bug_id>
          
          <creation_ts>2015-06-24 11:31:45 -0700</creation_ts>
          <short_desc>Crash on gog.com due to PolymorphicCallNode&apos;s having stale references to CallLinkInfo</short_desc>
          <delta_ts>2015-06-24 15:51:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>146292</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104426</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 11:31:45 -0700</bug_when>
    <thetext>CallLinkInfo&apos;s contain a RefPtr to a PolymorphicCallStubRoutine, named stub, which contains a collection of PolymorphicCallNode.  Those PolymorphicCallNodes have a reference back to the CallLinkInfo.  When a CallLinkInfo replaces or clears &quot;stub&quot;, the ref count of the PolymorphicCallStubRoutine is decremented as expected, but since it inherits from GCAwareJITStubRoutine, it isn&apos;t actually deleted until GC.  In the mean time, the original CallLinkInfo can go away.  If PolymorphicCallNode::unlink() is called at that point, it will try to unlink a now deleted CallLinkInfo and crash as a result.

The fix is to clear the CallLinkInfo* in the contained PolymorphicCallNode of a PolymorphicCallStubRoutine when that CallLinkInfo no longer references the PolymorphicCallStubRoutine.

rdar://problem/20701417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104446</commentid>
    <comment_count>1</comment_count>
      <attachid>255504</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 12:35:58 -0700</bug_when>
    <thetext>Created attachment 255504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104452</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 12:53:35 -0700</bug_when>
    <thetext>I&apos;ll remove the inadvertent change to runtime/Options.h.  That was from debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104455</commentid>
    <comment_count>3</comment_count>
      <attachid>255507</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 13:05:46 -0700</bug_when>
    <thetext>Created attachment 255507
Rebased patch, updated the ChangeLog with suggestions and removed Options.h change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104489</commentid>
    <comment_count>4</comment_count>
      <attachid>255507</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-24 14:48:47 -0700</bug_when>
    <thetext>Comment on attachment 255507
Rebased patch, updated the ChangeLog with suggestions and removed Options.h change

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

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        In the process I refactored CallLinkInfo from a struct to a class with proper accessors and
&gt; +        made all the data elements private.

I know this is a pain, but ideally we would land a first patch with just the refactoring, and the review a second patch with the actual change in behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104497</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 15:00:36 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 255507 [details]
&gt; Rebased patch, updated the ChangeLog with suggestions and removed Options.h
&gt; change
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255507&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:25
&gt; &gt; +        In the process I refactored CallLinkInfo from a struct to a class with proper accessors and
&gt; &gt; +        made all the data elements private.
&gt; 
&gt; I know this is a pain, but ideally we would land a first patch with just the
&gt; refactoring, and the review a second patch with the actual change in
&gt; behavior.

I&apos;ll refactor in https://bugs.webkit.org/show_bug.cgi?id=146292 and then land the simple clearing change here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104519</commentid>
    <comment_count>6</comment_count>
      <attachid>255520</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 15:45:55 -0700</bug_when>
    <thetext>Created attachment 255520
Patch after CallLinkInfo refactoring was landed separately.  Reviewed in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104525</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 15:51:30 -0700</bug_when>
    <thetext>Committed r185932: &lt;http://trac.webkit.org/changeset/185932&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255504</attachid>
            <date>2015-06-24 12:35:58 -0700</date>
            <delta_ts>2015-06-24 13:05:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>146285.patch</filename>
            <type>text/plain</type>
            <size>43322</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1OTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBA
QAorMjAxNS0wNi0yNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDcmFzaCBvbiBnb2cuY29tIGR1ZSB0byBQb2x5bW9ycGhpY0NhbGxOb2RlJ3MgaGF2aW5n
IHN0YWxlIHJlZmVyZW5jZXMgdG8gQ2FsbExpbmtJbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyODUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyBzdHViIGlu
IENhbGxMaW5rSW5mbzo6c3R1YiB3aGVuIHdlIHNldCBpdCB0byBhIG5ldyBzdHViIG9yIGNsZWFy
IGl0LCB3ZSAKKyAgICAgICAgY2FsbCBjbGVhckNhbGxOb2Rlc0ZvcigpIHRvIGNsZWFyIHRoZSBi
YWNrIHJlZmVyZW5jZXMgZnJvbSBhbnkgUG9seW1vcnBoaWNDYWxsTm9kZSBvYmplY3RzLgorICAg
ICAgICBJbiB0aGUgcHJvY2VzcyBJIHJlZmFjdG9yZWQgQ2FsbExpbmtJbmZvIGZyb20gYSBzdHJ1
Y3QgdG8gYSBjbGFzcyB3aXRoIHByb3BlciBhY2Nlc3NvcnMgYW5kCisgICAgICAgIG1hZGUgYWxs
IHRoZSBkYXRhIGVsZW1lbnRzIHByaXZhdGUuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFyU3R1Yik6IE5ldyBt
ZXRob2QgdGhhdCBjYWxscyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6Y2xlYXJDYWxsTm9k
ZXNGb3IoKQorICAgICAgICB0byBjbGVhciB0aGUgYmFjayByZWZlcmVuY2VzIHRvIHRoaXMgQ2Fs
bExpbmtJbmZvLgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFN0dWIpOiBDbGVhciBh
bnkgcHJpb3Igc3R1YiBiZWZvcmUgY2hhbmdpbmcgdG8gdGhlIG5ldyBzdHViLgorCisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZv
Ojp1bmxpbmspOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5m
bzo6Y2FsbFR5cGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OkNhbGxMaW5rSW5m
byk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6fkNhbGxMaW5rSW5mbyk6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtJbmZvOjpzcGVjaWFsaXphdGlvbktpbmQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRVcENh
bGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldENhbGxMb2NhdGlvbnMpOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFVwQ2FsbEZyb21GVEwpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OmNhbGxSZXR1cm5Mb2NhdGlvbik6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rSW5mbzo6aG90UGF0aEJlZ2luKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpob3RQ
YXRoT3RoZXIpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldENhbGxlZSk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2xlYXJDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua0luZm86OmNhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0TGFzdFNl
ZW5DYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFyTGFzdFNlZW5DYWxs
ZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86Omxhc3RTZWVuQ2FsbGVlKToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpoYXZlTGFzdFNlZW5DYWxsZWUpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnN0dWIpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNlZW5P
bmNlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjbGVhclNlZW4pOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnNldFNlZW4pOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86
Omhhc1NlZW5DbG9zdXJlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRIYXNTZWVu
Q2xvc3VyZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2xlYXJlZEJ5R0MpOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldENhbGxUeXBlKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjpjYWxsVHlwZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6YWRkcmVz
c09mTWF4TnVtQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjptYXhOdW1B
cmd1bWVudHMpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86Om9mZnNldE9mU2xvd1BhdGhD
b3VudCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0Q2FsbGVlR1BSKToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsZWVHUFIpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OnNsb3dQYXRoQ291bnQpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldENv
ZGVPcmlnaW4pOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNvZGVPcmlnaW4pOgorICAg
ICAgICAoSlNDOjpnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRm9yKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExp
bmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNl
cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50Q2FsbE9w
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUlu
ZGV4KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKToKKyAgICAgICAgKiBmdGwvRlRMSlNDYWxsQmFzZS5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6SlNDYWxsQmFzZTo6bGluayk6CisgICAgICAgICogaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3Bw
OgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAo
SlNDOjpQb2x5bW9ycGhpY0NhbGxOb2RlOjpjbGVhckNhbGxMaW5rSW5mbyk6CisgICAgICAgICog
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUJ5SWRTdHViKToKKyAgICAgICAgKEpTQzo6bGlu
a1Nsb3dGb3IpOgorICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6cmV2ZXJ0
Q2FsbCk6CisgICAgICAgIChKU0M6OnVubGlua0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtQb2x5
bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAg
ICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorICAgICAgICBSZWZhY3RvcmluZyBvZiBzdHJ1Y3QgQ2FsbExpbmtJbmZvIGludG8g
Y2xhc3MgQ2FsbExpbmtJbmZvLgorCiAyMDE1LTA2LTI0ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9t
aWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmljdCBFcXVhbGl0eSBvbiBvYmplY3RzIHNo
b3VsZCBvbmx5IGNoZWNrIHRoYXQgb25lIG9mIHRoZSB0d28gc2lkZXMgaXMgYW4gb2JqZWN0LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAJKHJldmlzaW9uIDE4NTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxNSBAQAogI2lmIEVO
QUJMRShKSVQpCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBDYWxsTGlua0luZm86OmNsZWFyU3R1
YigpCit7CisgICAgaWYgKCFzdHViKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3R1Yi0+
Y2xlYXJDYWxsTm9kZXNGb3IodGhpcyk7CisgICAgbV9zdHViLmNsZWFyKCk7Cit9CisKIHZvaWQg
Q2FsbExpbmtJbmZvOjp1bmxpbmsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKIHsKICAg
ICBpZiAoIWlzTGlua2VkKCkpIHsKQEAgLTQ4LDggKzU3LDggQEAgdm9pZCBDYWxsTGlua0luZm86
OnVubGluayhSZXBhdGNoQnVmZmVyJgogICAgIAogICAgIHVubGlua0ZvcigKICAgICAgICAgcmVw
YXRjaEJ1ZmZlciwgKnRoaXMsCi0gICAgICAgIChjYWxsVHlwZSA9PSBDb25zdHJ1Y3QgfHwgY2Fs
bFR5cGUgPT0gQ29uc3RydWN0VmFyYXJncyk/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2Fs
bCwKLSAgICAgICAgaXNGVEwgPyBNdXN0UHJlc2VydmVSZWdpc3RlcnMgOiBSZWdpc3RlclByZXNl
cnZhdGlvbk5vdFJlcXVpcmVkKTsKKyAgICAgICAgKG1fY2FsbFR5cGUgPT0gQ29uc3RydWN0IHx8
IG1fY2FsbFR5cGUgPT0gQ29uc3RydWN0VmFyYXJncyk/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2Rl
Rm9yQ2FsbCwKKyAgICAgICAgbV9pc0ZUTCA/IE11c3RQcmVzZXJ2ZVJlZ2lzdGVycyA6IFJlZ2lz
dGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpOwogCiAgICAgLy8gSXQgd2lsbCBiZSBvbiBhIGxp
c3QgaWYgdGhlIGNhbGxlZSBoYXMgYSBjb2RlIGJsb2NrLgogICAgIGlmIChpc09uTGlzdCgpKQpA
QCAtNjAsMzggKzY5LDM4IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRjaEJ1
ZmYKIHsKICAgICBhdXRvIGhhbmRsZVNwZWNpZmljQ2FsbGVlID0gWyZdIChKU0Z1bmN0aW9uKiBj
YWxsZWUpIHsKICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNhbGxlZS0+ZXhlY3V0YWJsZSgp
KSkKLSAgICAgICAgICAgIGhhc1NlZW5DbG9zdXJlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1faGFz
U2VlbkNsb3N1cmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGVhcmVkQnlH
QyA9IHRydWU7CisgICAgICAgICAgICBtX2NsZWFyZWRCeUdDID0gdHJ1ZTsKICAgICB9OwogICAg
IAogICAgIGlmIChpc0xpbmtlZCgpKSB7Ci0gICAgICAgIGlmIChzdHViKSB7Ci0gICAgICAgICAg
ICBpZiAoIXN0dWItPnZpc2l0V2VhayhyZXBhdGNoQnVmZmVyKSkgeworICAgICAgICBpZiAoc3R1
YigpKSB7CisgICAgICAgICAgICBpZiAoIXN0dWIoKS0+dmlzaXRXZWFrKHJlcGF0Y2hCdWZmZXIp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyaW5n
IGNsb3N1cmUgY2FsbCBmcm9tICIsICpyZXBhdGNoQnVmZmVyLmNvZGVCbG9jaygpLCAiIHRvICIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaXN0RHVtcChzdHViLT52YXJpYW50cygpKSwgIiwg
c3R1YiByb3V0aW5lICIsIFJhd1BvaW50ZXIoc3R1Yi5nZXQoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBsaXN0RHVtcChzdHViKCktPnZhcmlhbnRzKCkpLCAiLCBzdHViIHJvdXRpbmUgIiwg
UmF3UG9pbnRlcihzdHViKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIi5cbiIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB1bmxpbmsocmVwYXRjaEJ1ZmZlcik7Ci0g
ICAgICAgICAgICAgICAgY2xlYXJlZEJ5R0MgPSB0cnVlOworICAgICAgICAgICAgICAgIG1fY2xl
YXJlZEJ5R0MgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKCFIZWFw
Ojppc01hcmtlZChjYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIUhlYXA6Omlz
TWFya2VkKG1fY2FsbGVlLmdldCgpKSkgewogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAg
ICJDbGVhcmluZyBjYWxsIGZyb20gIiwgKnJlcGF0Y2hCdWZmZXIuY29kZUJsb2NrKCksICIgdG8g
IiwKLSAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihjYWxsZWUuZ2V0KCkpLCAiICgiLAot
ICAgICAgICAgICAgICAgICAgICBjYWxsZWUuZ2V0KCktPmV4ZWN1dGFibGUoKS0+aGFzaEZvcihz
cGVjaWFsaXphdGlvbktpbmQoKSksCisgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIobV9j
YWxsZWUuZ2V0KCkpLCAiICgiLAorICAgICAgICAgICAgICAgICAgICBtX2NhbGxlZS5nZXQoKS0+
ZXhlY3V0YWJsZSgpLT5oYXNoRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKSwKICAgICAgICAgICAg
ICAgICAgICAgIikuXG4iKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGhhbmRsZVNwZWNp
ZmljQ2FsbGVlKGNhbGxlZS5nZXQoKSk7CisgICAgICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxl
ZShtX2NhbGxlZS5nZXQoKSk7CiAgICAgICAgICAgICB1bmxpbmsocmVwYXRjaEJ1ZmZlcik7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCEhbGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFy
a2VkKGxhc3RTZWVuQ2FsbGVlLmdldCgpKSkgewotICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxl
ZShsYXN0U2VlbkNhbGxlZS5nZXQoKSk7Ci0gICAgICAgIGxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7
CisgICAgaWYgKGhhdmVMYXN0U2VlbkNhbGxlZSgpICYmICFIZWFwOjppc01hcmtlZChsYXN0U2Vl
bkNhbGxlZSgpKSkgeworICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxlZShsYXN0U2VlbkNhbGxl
ZSgpKTsKKyAgICAgICAgY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNp
b24gMTg1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBSZXBhdGNoQnVmZmVyOwogCi1zdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJhc2lj
UmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4geworY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVi
bGljIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4geworcHVibGljOgogICAgIGVu
dW0gQ2FsbFR5cGUgeyBOb25lLCBDYWxsLCBDYWxsVmFyYXJncywgQ29uc3RydWN0LCBDb25zdHJ1
Y3RWYXJhcmdzIH07CiAgICAgc3RhdGljIENhbGxUeXBlIGNhbGxUeXBlRm9yKE9wY29kZUlEIG9w
Y29kZUlEKQogICAgIHsKQEAgLTU2LDIwICs1NywxOSBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDog
cHVibGljIEJhc2ljUmF3U2VuCiAgICAgfQogICAgIAogICAgIENhbGxMaW5rSW5mbygpCi0gICAg
ICAgIDogaXNGVEwoZmFsc2UpCi0gICAgICAgICwgaGFzU2VlblNob3VsZFJlcGF0Y2goZmFsc2Up
Ci0gICAgICAgICwgaGFzU2VlbkNsb3N1cmUoZmFsc2UpCi0gICAgICAgICwgY2xlYXJlZEJ5R0Mo
ZmFsc2UpCi0gICAgICAgICwgY2FsbFR5cGUoTm9uZSkKLSAgICAgICAgLCBtYXhOdW1Bcmd1bWVu
dHMoMCkKLSAgICAgICAgLCBzbG93UGF0aENvdW50KDApCisgICAgICAgIDogbV9pc0ZUTChmYWxz
ZSkKKyAgICAgICAgLCBtX2hhc1NlZW5TaG91bGRSZXBhdGNoKGZhbHNlKQorICAgICAgICAsIG1f
aGFzU2VlbkNsb3N1cmUoZmFsc2UpCisgICAgICAgICwgbV9jbGVhcmVkQnlHQyhmYWxzZSkKKyAg
ICAgICAgLCBtX2NhbGxUeXBlKE5vbmUpCisgICAgICAgICwgbV9tYXhOdW1Bcmd1bWVudHMoMCkK
KyAgICAgICAgLCBtX3Nsb3dQYXRoQ291bnQoMCkKICAgICB7CiAgICAgfQogICAgICAgICAKICAg
ICB+Q2FsbExpbmtJbmZvKCkKICAgICB7Ci0gICAgICAgIGlmIChzdHViKQotICAgICAgICAgICAg
c3R1Yi0+Y2xlYXJDYWxsTm9kZXNGb3IodGhpcyk7CisgICAgICAgIGNsZWFyU3R1YigpOwogCiAg
ICAgICAgIGlmIChpc09uTGlzdCgpKQogICAgICAgICAgICAgcmVtb3ZlKCk7CkBAIC04MSw0NiAr
ODEsMjA4IEBAIHN0cnVjdCBDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW4KICAgICB9
CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemF0aW9uS2luZEZvcihzdGF0aWNfY2FzdDxD
YWxsVHlwZT4oY2FsbFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemF0aW9uS2luZEZv
cihzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlwZSkpOwogICAgIH0KIAotICAgIENvZGVM
b2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKLSAgICBDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHIgaG90UGF0aEJlZ2luOwotICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGhvdFBhdGhP
dGhlcjsKLSAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwotICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKLSAgICBSZWZQdHI8UG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmU+IHN0dWI7Ci0gICAgYm9vbCBpc0ZUTCA6IDE7Ci0gICAgYm9vbCBo
YXNTZWVuU2hvdWxkUmVwYXRjaCA6IDE7Ci0gICAgYm9vbCBoYXNTZWVuQ2xvc3VyZSA6IDE7Ci0g
ICAgYm9vbCBjbGVhcmVkQnlHQyA6IDE7Ci0gICAgdW5zaWduZWQgY2FsbFR5cGUgOiA0OyAvLyBD
YWxsVHlwZQotICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7Ci0gICAgdWludDhfdCBtYXhOdW1B
cmd1bWVudHM7IC8vIE9ubHkgdXNlZCBmb3IgdmFyYXJncyBjYWxscy4KLSAgICB1aW50MzJfdCBz
bG93UGF0aENvdW50OwotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKLQotICAgIGJvb2wgaXNM
aW5rZWQoKSB7IHJldHVybiBzdHViIHx8IGNhbGxlZTsgfQorICAgIGJvb2wgaXNMaW5rZWQoKSB7
IHJldHVybiBtX3N0dWIgfHwgbV9jYWxsZWU7IH0KICAgICB2b2lkIHVubGluayhSZXBhdGNoQnVm
ZmVyJik7CiAKKyAgICB2b2lkIHNldFVwQ2FsbChDYWxsVHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIpCisgICAgeworICAgICAgICBtX2NhbGxU
eXBlID0gY2FsbFR5cGU7CisgICAgICAgIG1fY29kZU9yaWdpbiA9IGNvZGVPcmlnaW47CisgICAg
ICAgIG1fY2FsbGVlR1BSID0gY2FsbGVlR1BSOworICAgIH0KKworICAgIHZvaWQgc2V0Q2FsbExv
Y2F0aW9ucyhDb2RlTG9jYXRpb25OZWFyQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb24sIENvZGVMb2Nh
dGlvbkRhdGFMYWJlbFB0ciBob3RQYXRoQmVnaW4sCisgICAgICAgIENvZGVMb2NhdGlvbk5lYXJD
YWxsIGhvdFBhdGhPdGhlcikKKyAgICB7CisgICAgICAgIG1fY2FsbFJldHVybkxvY2F0aW9uID0g
Y2FsbFJldHVybkxvY2F0aW9uOworICAgICAgICBtX2hvdFBhdGhCZWdpbiA9IGhvdFBhdGhCZWdp
bjsKKyAgICAgICAgbV9ob3RQYXRoT3RoZXIgPSBob3RQYXRoT3RoZXI7CisgICAgfQorCisgICAg
dm9pZCBzZXRVcENhbGxGcm9tRlRMKENhbGxUeXBlIGNhbGxUeXBlLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sCisgICAgICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiwg
Q29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgQ29kZUxvY2F0
aW9uTmVhckNhbGwgaG90UGF0aE90aGVyLCB1bnNpZ25lZCBjYWxsZWVHUFIpCisgICAgeworICAg
ICAgICBtX2lzRlRMID0gdHJ1ZTsKKyAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOworICAg
ICAgICBtX2NvZGVPcmlnaW4gPSBjb2RlT3JpZ2luOworICAgICAgICBtX2NhbGxSZXR1cm5Mb2Nh
dGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlvbjsKKyAgICAgICAgbV9ob3RQYXRoQmVnaW4gPSBob3RQ
YXRoQmVnaW47CisgICAgICAgIG1faG90UGF0aE90aGVyID0gaG90UGF0aE90aGVyOworICAgICAg
ICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsKKyAgICB9CisKKyAgICBDb2RlTG9jYXRpb25OZWFy
Q2FsbCBjYWxsUmV0dXJuTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbFJl
dHVybkxvY2F0aW9uOworICAgIH0KKworICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBob3RQ
YXRoQmVnaW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faG90UGF0aEJlZ2luOworICAgIH0K
KworICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGhvdFBhdGhPdGhlcigpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9ob3RQYXRoT3RoZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRDYWxsZWUoVk0m
IHZtLCBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbG9jYXRpb24sIEpTQ2VsbCogb3duZXIsIEpT
RnVuY3Rpb24qIGNhbGxlZSkKKyAgICB7CisgICAgICAgIG1fY2FsbGVlLnNldCh2bSwgbG9jYXRp
b24sIG93bmVyLCBjYWxsZWUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJDYWxsZWUoKQorICAg
IHsKKyAgICAgICAgbV9jYWxsZWUuY2xlYXIoKTsKKyAgICB9CisKKyAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlLmdldCgpOworICAgIH0KKwor
ICAgIHZvaWQgc2V0TGFzdFNlZW5DYWxsZWUoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBK
U0Z1bmN0aW9uKiBjYWxsZWUpCisgICAgeworICAgICAgICBtX2xhc3RTZWVuQ2FsbGVlLnNldCh2
bSwgb3duZXIsIGNhbGxlZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhckxhc3RTZWVuQ2FsbGVl
KCkKKyAgICB7CisgICAgICAgIG1fbGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICB9CisKKyAg
ICBKU0Z1bmN0aW9uKiBsYXN0U2VlbkNhbGxlZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9s
YXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICB9CisKKyAgICBib29sIGhhdmVMYXN0U2VlbkNhbGxl
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gISFtX2xhc3RTZWVuQ2FsbGVlOworICAgIH0KKwor
ICAgIHZvaWQgc2V0U3R1YihQYXNzUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBu
ZXdTdHViKQorICAgIHsKKyAgICAgICAgY2xlYXJTdHViKCk7CisgICAgICAgIG1fc3R1YiA9IG5l
d1N0dWI7CisgICAgfQorCisgICAgdm9pZCBjbGVhclN0dWIoKTsKKworICAgIFBvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lKiBzdHViKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0dWIuZ2V0
KCk7CisgICAgfQorCiAgICAgYm9vbCBzZWVuT25jZSgpCiAgICAgewotICAgICAgICByZXR1cm4g
aGFzU2VlblNob3VsZFJlcGF0Y2g7CisgICAgICAgIHJldHVybiBtX2hhc1NlZW5TaG91bGRSZXBh
dGNoOworICAgIH0KKworICAgIHZvaWQgY2xlYXJTZWVuKCkKKyAgICB7CisgICAgICAgIG1faGFz
U2VlblNob3VsZFJlcGF0Y2ggPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNldFNlZW4oKQog
ICAgIHsKLSAgICAgICAgaGFzU2VlblNob3VsZFJlcGF0Y2ggPSB0cnVlOworICAgICAgICBtX2hh
c1NlZW5TaG91bGRSZXBhdGNoID0gdHJ1ZTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1Nl
ZW5DbG9zdXJlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hhc1NlZW5DbG9zdXJlOworICAg
IH0KKworICAgIHZvaWQgc2V0SGFzU2VlbkNsb3N1cmUoKQorICAgIHsKKyAgICAgICAgbV9oYXNT
ZWVuQ2xvc3VyZSA9IHRydWU7CisgICAgfQorCisgICAgYm9vbCBjbGVhcmVkQnlHQygpCisgICAg
eworICAgICAgICByZXR1cm4gbV9jbGVhcmVkQnlHQzsKKyAgICB9CisKKyAgICB2b2lkIHNldENh
bGxUeXBlKENhbGxUeXBlIGNhbGxUeXBlKQorICAgIHsKKyAgICAgICAgbV9jYWxsVHlwZSA9IGNh
bGxUeXBlOworICAgIH0KKworICAgIENhbGxUeXBlIGNhbGxUeXBlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlwZSk7CisgICAgfQorCisgICAg
dWludDhfdCogYWRkcmVzc09mTWF4TnVtQXJndW1lbnRzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biAmbV9tYXhOdW1Bcmd1bWVudHM7CisgICAgfQorCisgICAgdWludDhfdCBtYXhOdW1Bcmd1bWVu
dHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWF4TnVtQXJndW1lbnRzOworICAgIH0KKwor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aENvdW50KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCBtX3Nsb3dQYXRoQ291bnQp
OworICAgIH0KKworICAgIHZvaWQgc2V0Q2FsbGVlR1BSKHVuc2lnbmVkIGNhbGxlZUdQUikKKyAg
ICB7CisgICAgICAgIG1fY2FsbGVlR1BSID0gY2FsbGVlR1BSOworICAgIH0KKworICAgIHVuc2ln
bmVkIGNhbGxlZUdQUigpCisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxsZWVHUFI7CisgICAg
fQorCisgICAgdWludDMyX3Qgc2xvd1BhdGhDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9zbG93UGF0aENvdW50OworICAgIH0KKworICAgIHZvaWQgc2V0Q29kZU9yaWdpbihDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4pCisgICAgeworICAgICAgICBtX2NvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
OworICAgIH0KKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9jb2RlT3JpZ2luOworICAgIH0KKwogICAgIHZvaWQgdmlzaXRXZWFrKFJlcGF0Y2hC
dWZmZXImKTsKLSAgICAKKwogICAgIHN0YXRpYyBDYWxsTGlua0luZm8mIGR1bW15KCk7CisKK3By
aXZhdGU6CisgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgbV9jYWxsUmV0dXJuTG9jYXRpb247Cisg
ICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIG1faG90UGF0aEJlZ2luOworICAgIENvZGVMb2Nh
dGlvbk5lYXJDYWxsIG1faG90UGF0aE90aGVyOworICAgIEpJVFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2NhbGxlZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9sYXN0U2VlbkNh
bGxlZTsKKyAgICBSZWZQdHI8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+IG1fc3R1YjsKKyAg
ICBib29sIG1faXNGVEwgOiAxOworICAgIGJvb2wgbV9oYXNTZWVuU2hvdWxkUmVwYXRjaCA6IDE7
CisgICAgYm9vbCBtX2hhc1NlZW5DbG9zdXJlIDogMTsKKyAgICBib29sIG1fY2xlYXJlZEJ5R0Mg
OiAxOworICAgIHVuc2lnbmVkIG1fY2FsbFR5cGUgOiA0OyAvLyBDYWxsVHlwZQorICAgIHVuc2ln
bmVkIG1fY2FsbGVlR1BSIDogODsKKyAgICB1aW50OF90IG1fbWF4TnVtQXJndW1lbnRzOyAvLyBP
bmx5IHVzZWQgZm9yIHZhcmFyZ3MgY2FsbHMuCisgICAgdWludDMyX3QgbV9zbG93UGF0aENvdW50
OworICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogfTsKIAogaW5saW5lIENvZGVPcmlnaW4g
Z2V0Q2FsbExpbmtJbmZvQ29kZU9yaWdpbihDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsK
LSAgICByZXR1cm4gY2FsbExpbmtJbmZvLmNvZGVPcmlnaW47CisgICAgcmV0dXJuIGNhbGxMaW5r
SW5mby5jb2RlT3JpZ2luKCk7CiB9CiAKIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxs
TGlua0luZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDYWxsTGlua0luZm9NYXA7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1
cy5jcHAJKHJldmlzaW9uIDE4NTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCwxNCArMTI4LDE0IEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29t
cHV0ZUZyb21DYWxsTGlua0luZm8obG9ja2VyLCBjYWxsTGlua0luZm8pOwotICAgIHJlc3VsdC5t
X21heE51bUFyZ3VtZW50cyA9IGNhbGxMaW5rSW5mby5tYXhOdW1Bcmd1bWVudHM7CisgICAgcmVz
dWx0Lm1fbWF4TnVtQXJndW1lbnRzID0gY2FsbExpbmtJbmZvLm1heE51bUFyZ3VtZW50cygpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRnJvbUNhbGxMaW5rSW5mbygKICAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0gICAgaWYgKGNhbGxMaW5rSW5mby5jbGVh
cmVkQnlHQykKKyAgICBpZiAoY2FsbExpbmtJbmZvLmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJl
dHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCiAgICAgLy8gTm90ZSB0aGF0IGRlc3BpdGUgcmVx
dWlyaW5nIHRoYXQgdGhlIGxvY2tlciBpcyBoZWxkLCB0aGlzIGNvZGUgaXMgcmFjeSB3aXRoIHJl
c3BlY3QKQEAgLTE1NSw3ICsxNTUsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZyCiAgICAgLy8gdW50aWwgbmV4dCBHQyBldmVuIGlmIHRoZSBDYWxsTGlua0luZm8g
aXMgY29uY3VycmVudGx5IGNsZWFyZWQuIEFsc28sIHRoZSB2YXJpYW50cyBsaXN0IGlzCiAgICAg
Ly8gbmV2ZXIgbXV0YXRlZCBhZnRlciB0aGUgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgaXMg
aW5zdGFudGlhdGVkLiBXZSBoYXZlIHNvbWUgY29uc2VydmF0aXZlCiAgICAgLy8gZmVuY2luZyBp
biBwbGFjZSB0byBtYWtlIHN1cmUgdGhhdCB3ZSBzZWUgdGhlIHZhcmlhbnRzIGxpc3QgYWZ0ZXIg
Y29uc3RydWN0aW9uLgotICAgIGlmIChQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSogc3R1YiA9
IGNhbGxMaW5rSW5mby5zdHViLmdldCgpKSB7CisgICAgaWYgKFBvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lKiBzdHViID0gY2FsbExpbmtJbmZvLnN0dWIoKSkgewogICAgICAgICBXVEY6OmxvYWRM
b2FkRmVuY2UoKTsKICAgICAgICAgCiAgICAgICAgIENhbGxFZGdlTGlzdCBlZGdlcyA9IHN0dWIt
PmVkZ2VzKCk7CkBAIC0xNzQsNyArMTc0LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGcgogICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlcy5maXJzdCgpLmNvdW50
KCkgPj0gZWRnZXMubGFzdCgpLmNvdW50KCkpOwogICAgICAgICAKICAgICAgICAgZG91YmxlIHRv
dGFsQ2FsbHNUb0tub3duID0gMDsKLSAgICAgICAgZG91YmxlIHRvdGFsQ2FsbHNUb1Vua25vd24g
PSBjYWxsTGlua0luZm8uc2xvd1BhdGhDb3VudDsKKyAgICAgICAgZG91YmxlIHRvdGFsQ2FsbHNU
b1Vua25vd24gPSBjYWxsTGlua0luZm8uc2xvd1BhdGhDb3VudCgpOwogICAgICAgICBDYWxsVmFy
aWFudExpc3QgdmFyaWFudHM7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWRnZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIENhbGxFZGdlIGVkZ2UgPSBlZGdlc1tpXTsKQEAg
LTIxMiwxNCArMjEyLDE0IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnIKICAgICAKICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQ7CiAgICAgCi0gICAgaWYgKEpTRnVu
Y3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5nZXQoKSkgeworICAg
IGlmIChKU0Z1bmN0aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkg
ewogICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50KHRhcmdldCk7Ci0gICAgICAgIGlmIChjYWxs
TGlua0luZm8uaGFzU2VlbkNsb3N1cmUpCisgICAgICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2Vl
bkNsb3N1cmUoKSkKICAgICAgICAgICAgIHZhcmlhbnQgPSB2YXJpYW50LmRlc3BlY2lmaWVkQ2xv
c3VyZSgpOwogICAgICAgICByZXN1bHQubV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAgICAg
fQogICAgIAotICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gISFjYWxsTGlua0luZm8u
c2xvd1BhdGhDb3VudDsKKyAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9ICEhY2FsbExp
bmtJbmZvLnNsb3dQYXRoQ291bnQoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNDYs
NyArMjQ2LDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAogICAg
IENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBkZmdDb2RlQmxvY2stPmFsdGVybmF0aXZl
KCk7CiAgICAgZm9yIChhdXRvIGl0ZXIgPSBkZmdDb2RlQmxvY2stPmNhbGxMaW5rSW5mb3NCZWdp
bigpOyAhIWl0ZXI7ICsraXRlcikgewogICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqKml0
ZXI7Ci0gICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGluZm8uY29kZU9yaWdpbjsKKyAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5mby5jb2RlT3JpZ2luKCk7CiAgICAgICAg
IAogICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0
ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRoaXMKICAgICAgICAgLy8gY29kZSBvcmln
aW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBh
IG1vbm92YXJpYW50CkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZURGR1N0YXR1c2VzKAogICAgICAgICAKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
bWFwLmFkZChpbmZvLmNvZGVPcmlnaW4sIGNvbXB1dGVGb3IobG9ja2VyLCBkZmdDb2RlQmxvY2ss
IGluZm8sIGV4aXRTaXRlRGF0YSkpOworICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmln
aW4oKSwgY29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRh
KSk7CiAgICAgICAgIH0KICAgICB9CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE4NTc3MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogY2xhc3MgSW50ZXJu
YWxGdW5jdGlvbjsKIGNsYXNzIEpTRnVuY3Rpb247CiBjbGFzcyBTdHJ1Y3R1cmU7Ci1zdHJ1Y3Qg
Q2FsbExpbmtJbmZvOworY2xhc3MgQ2FsbExpbmtJbmZvOwogCiBjbGFzcyBDYWxsTGlua1N0YXR1
cyB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMTg1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOCw3ICs1MjgsNyBAQCB2
b2lkIENvZGVCbG9jazo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2Rl
T3JpZ2luKGxvY2F0aW9uKSkpIHsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGlu
Zm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpOworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0
ID0gaW5mby0+bGFzdFNlZW5DYWxsZWUoKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQpCiAgICAg
ICAgICAgICAgICAgb3V0LnByaW50ZigiIGppdCglcCwgZXhlYyAlcCkiLCB0YXJnZXQsIHRhcmdl
dC0+ZXhlY3V0YWJsZSgpKTsKICAgICAgICAgfQpAQCAtMjc3Niw3ICsyNzc2LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OnJlc2V0U3R1YkR1cmluZ0dDSW50ZXJuYQogQ2FsbExpbmtJbmZvKiBDb2RlQmxv
Y2s6OmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAg
ICAgZm9yIChhdXRvIGl0ZXIgPSBtX2NhbGxMaW5rSW5mb3MuYmVnaW4oKTsgISFpdGVyOyArK2l0
ZXIpIHsKLSAgICAgICAgaWYgKCgqaXRlciktPmNvZGVPcmlnaW4gPT0gQ29kZU9yaWdpbihpbmRl
eCkpCisgICAgICAgIGlmICgoKml0ZXIpLT5jb2RlT3JpZ2luKCkgPT0gQ29kZU9yaWdpbihpbmRl
eCkpCiAgICAgICAgICAgICByZXR1cm4gKml0ZXI7CiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDE4NTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsOSArMjQ4LDkgQEAgdm9pZCBKSVRDb21w
aWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgaW5mby5zcGVjaWFsaXph
dGlvbktpbmQoKSwKICAgICAgICAgICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQp
OwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLm1fc2xvd0NhbGwsIEZ1bmN0aW9uUHRy
KG1fdm0tPmdldENUSVN0dWIoZ2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OwotICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25P
Zk5lYXJDYWxsKHJlY29yZC5tX3Nsb3dDYWxsKTsKLSAgICAgICAgaW5mby5ob3RQYXRoQmVnaW4g
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocmVjb3JkLm1fdGFyZ2V0VG9DaGVjayk7Ci0gICAgICAg
IGluZm8uaG90UGF0aE90aGVyID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwocmVjb3Jk
Lm1fZmFzdENhbGwpOworICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMobGlua0J1ZmZlci5s
b2NhdGlvbk9mTmVhckNhbGwocmVjb3JkLm1fc2xvd0NhbGwpLAorICAgICAgICAgICAgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKHJlY29yZC5tX3RhcmdldFRvQ2hlY2spLAorICAgICAgICAgICAgbGlu
a0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwocmVjb3JkLm1fZmFzdENhbGwpKTsKICAgICB9CiAg
ICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IHZtKCktPmdldENU
SVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3Bw
CShyZXZpc2lvbiAxODU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2
b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgICAgICAgICAgICAg
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5k
ZXgoY2FsbEJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExp
bmtJbmZvKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5r
SW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAg
ICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24oKS5leGVjdXRh
YmxlQWRkcmVzcygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxODU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mjks
OSArODI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIERh
dGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIAotICAgIGluZm8tPmNh
bGxUeXBlID0gY2FsbFR5cGU7Ci0gICAgaW5mby0+Y29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKLSAgICBpbmZvLT5jYWxsZWVHUFIgPSBjYWxsZWVQYXlsb2FkR1BSOworICAgIGlu
Zm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVQYXls
b2FkR1BSKTsKICAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRU
b0NoZWNrLCBpbmZvKTsKICAgICAKICAgICAvLyBJZiB3ZSB3ZXJlIHZhcmFyZ3MsIHRoZW4gYWZ0
ZXIgdGhlIGNhbGxzIGFyZSBkb25lLCB3ZSBuZWVkIHRvIHJlZXN0YWJsaXNoIG91ciBzdGFjayBw
b2ludGVyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxODU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsMTAg
Kzc5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpT
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgIAotICAgIGNhbGxMaW5rSW5mby0+
Y2FsbFR5cGUgPSBjYWxsVHlwZTsKLSAgICBjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4gPSBtX2N1
cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWM7Ci0gICAgY2FsbExpbmtJbmZvLT5jYWxsZWVHUFIg
PSBjYWxsZWVHUFI7Ci0gICAgCisgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUs
IG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYywgIGNhbGxlZUdQUik7ICAgIAogICAgIG1f
aml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxMaW5r
SW5mbyk7CiAgICAgCiAgICAgLy8gSWYgd2Ugd2VyZSB2YXJhcmdzLCB0aGVuIGFmdGVyIHRoZSBj
YWxscyBhcmUgZG9uZSwgd2UgbmVlZCB0byByZWVzdGFibGlzaCBvdXIgc3RhY2sgcG9pbnRlci4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGxCYXNlLmNwcAkocmV2
aXNpb24gMTg1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGxCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTQgKzc0LDEwIEBAIHZvaWQgSlNDYWxsQmFzZTo6
bGluayhWTSYgdm0sIExpbmtCdWZmZXIKICAgICAKICAgICBsaW5rQnVmZmVyLmxpbmsoCiAgICAg
ICAgIG1fc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtLmdldENUSVN0dWIoZ2VuZXJhdG9yKS5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgIAotICAgIG1fY2FsbExpbmtJbmZvLT5pc0ZU
TCA9IHRydWU7Ci0gICAgbV9jYWxsTGlua0luZm8tPmNhbGxUeXBlID0gbV90eXBlOwotICAgIG1f
Y2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luID0gbV9vcmlnaW47Ci0gICAgbV9jYWxsTGlua0luZm8t
PmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fc2xv
d0NhbGwpOwotICAgIG1fY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVnaW4gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV90YXJnZXRUb0NoZWNrKTsKLSAgICBtX2NhbGxMaW5rSW5mby0+aG90UGF0aE90
aGVyID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwobV9mYXN0Q2FsbCk7Ci0gICAgbV9j
YWxsTGlua0luZm8tPmNhbGxlZUdQUiA9IEdQUkluZm86OnJlZ1QwOworCisgICAgbV9jYWxsTGlu
a0luZm8tPnNldFVwQ2FsbEZyb21GVEwobV90eXBlLCBtX29yaWdpbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mTmVhckNhbGwobV9zbG93Q2FsbCksCisgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihtX3RhcmdldFRvQ2hlY2spLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChtX2Zhc3RD
YWxsKSwKKyAgICAgICAgR1BSSW5mbzo6cmVnVDApOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZS5oCShyZXZpc2lvbiAxODU3NzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBDYWxsTGlu
a0luZm87CitjbGFzcyBDYWxsTGlua0luZm87CiAKIC8vIEpJVCBzdHViIHJvdXRpbmUgZm9yIHVz
ZSBieSBKYXZhU2NyaXB0IGFjY2Vzc29ycy4gVGhlc2Ugd2lsbCBiZSBtYWtpbmcgYSBKUwogLy8g
Y2FsbCB0aGF0IHJlcXVpcmVzIGlubGluZSBjYWNoaW5nLiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHJldmlzaW9uIDE4NTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc4LDkgKzY3OCw5IEBAIENvbXBpbGF0aW9u
UmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKTsgKytpKSB7CiAgICAgICAgIENhbGxDb21w
aWxhdGlvbkluZm8mIGNvbXBpbGF0aW9uSW5mbyA9IG1fY2FsbENvbXBpbGF0aW9uSW5mb1tpXTsK
ICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKmNvbXBpbGF0aW9uSW5mby5jYWxsTGlua0lu
Zm87Ci0gICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gcGF0Y2hCdWZmZXIubG9jYXRp
b25PZk5lYXJDYWxsKGNvbXBpbGF0aW9uSW5mby5jYWxsUmV0dXJuTG9jYXRpb24pOwotICAgICAg
ICBpbmZvLmhvdFBhdGhCZWdpbiA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoY29tcGlsYXRpb25J
bmZvLmhvdFBhdGhCZWdpbik7Ci0gICAgICAgIGluZm8uaG90UGF0aE90aGVyID0gcGF0Y2hCdWZm
ZXIubG9jYXRpb25PZk5lYXJDYWxsKGNvbXBpbGF0aW9uSW5mby5ob3RQYXRoT3RoZXIpOworICAg
ICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMocGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxs
KGNvbXBpbGF0aW9uSW5mby5jYWxsUmV0dXJuTG9jYXRpb24pLAorICAgICAgICAgICAgcGF0Y2hC
dWZmZXIubG9jYXRpb25PZihjb21waWxhdGlvbkluZm8uaG90UGF0aEJlZ2luKSwKKyAgICAgICAg
ICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChjb21waWxhdGlvbkluZm8uaG90UGF0
aE90aGVyKSk7CiAgICAgfQogCiAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29k
ZU1hcEVuY29kZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE4NTc3
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZTsKKyAgICBjbGFzcyBDYWxsTGlua0luZm87CiAgICAgY2xhc3MgQ29kZUJsb2Nr
OwogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKSVQ7CkBAIC02Myw3
ICs2NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNz
IFN0cnVjdHVyZUNoYWluOwogCi0gICAgc3RydWN0IENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IE9wZXJhbmRUeXBlczsKICAgICBzdHJ1Y3QgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTg1NzcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKEluc3RyCiAKICAgICAv
LyBQcm9maWxlIHRoZSBhcmd1bWVudCBjb3VudC4KICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwg
SlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwotICAgIGxvYWQ4KCZpbmZvLT5tYXhOdW1Bcmd1
bWVudHMsIHJlZ1QwKTsKKyAgICBsb2FkOChpbmZvLT5hZGRyZXNzT2ZNYXhOdW1Bcmd1bWVudHMo
KSwgcmVnVDApOwogICAgIEp1bXAgbm90QmlnZ2VzdCA9IGJyYW5jaDMyKEFib3ZlLCByZWdUMCwg
cmVnVDIpOwogICAgIEp1bXAgbm90U2F0dXJhdGVkID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBy
ZWdUMiwgVHJ1c3RlZEltbTMyKDI1NSkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDI1NSksIHJl
Z1QyKTsKICAgICBub3RTYXR1cmF0ZWQubGluayh0aGlzKTsKLSAgICBzdG9yZTgocmVnVDIsICZp
bmZvLT5tYXhOdW1Bcmd1bWVudHMpOworICAgIHN0b3JlOChyZWdUMiwgaW5mby0+YWRkcmVzc09m
TWF4TnVtQXJndW1lbnRzKCkpOwogICAgIG5vdEJpZ2dlc3QubGluayh0aGlzKTsKICAgICAKICAg
ICAvLyBJbml0aWFsaXplICd0aGlzJy4KQEAgLTI0Myw5ICsyNDMsNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwog
CiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZv
SW5kZXgpOwotICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihv
cGNvZGVJRCk7Ci0gICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9m
ZnNldCk7Ci0gICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CisgICAgaW5mby0+c2V0VXBDYWxs
KENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVPZmZzZXQpLCByZWdUMCk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChDYWxs
Q29tcGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0lu
Zm9JbmRleF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyA9
IGluZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9u
IDE4NTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDEyICs3MiwxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJn
c0ZyYW1lKEluc3RyCiAKICAgICAvLyBQcm9maWxlIHRoZSBhcmd1bWVudCBjb3VudC4KICAgICBs
b2FkMzIoQWRkcmVzcyhyZWdUMSwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwotICAgIGxv
YWQ4KCZpbmZvLT5tYXhOdW1Bcmd1bWVudHMsIHJlZ1QwKTsKKyAgICBsb2FkOChpbmZvLT5hZGRy
ZXNzT2ZNYXhOdW1Bcmd1bWVudHMoKSwgcmVnVDApOwogICAgIEp1bXAgbm90QmlnZ2VzdCA9IGJy
YW5jaDMyKEFib3ZlLCByZWdUMCwgcmVnVDIpOwogICAgIEp1bXAgbm90U2F0dXJhdGVkID0gYnJh
bmNoMzIoQmVsb3dPckVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKDI1NSkpOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKDI1NSksIHJlZ1QyKTsKICAgICBub3RTYXR1cmF0ZWQubGluayh0aGlzKTsK
LSAgICBzdG9yZTgocmVnVDIsICZpbmZvLT5tYXhOdW1Bcmd1bWVudHMpOworICAgIHN0b3JlOChy
ZWdUMiwgaW5mby0+YWRkcmVzc09mTWF4TnVtQXJndW1lbnRzKCkpOwogICAgIG5vdEJpZ2dlc3Qu
bGluayh0aGlzKTsKICAgICAKICAgICAvLyBJbml0aWFsaXplICd0aGlzJy4KQEAgLTE3OCw5ICsx
NzgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRk
U2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5z
aXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExp
bmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7Ci0gICAgaW5mby0+Y29kZU9yaWdpbiA9IENv
ZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7Ci0gICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7
CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQp
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAgICAgbV9jYWxsQ29tcGls
YXRpb25JbmZvLmFwcGVuZChDYWxsQ29tcGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBp
bGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlu
a2VkRnVuY3Rpb25DaGVjazsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZv
SW5kZXhdLmNhbGxMaW5rSW5mbyA9IGluZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE4NTc3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NSw3
ICs3OTUsNyBAQCBpbmxpbmUgY2hhciogbGlua0ZvcigKICAgICAgICAgfQogICAgICAgICBjb2Rl
QmxvY2sgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5kKTsKICAgICAgICAg
QXJpdHlDaGVja01vZGUgYXJpdHk7Ci0gICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLT5jYWxsVHlwZSA9PSBDYWxsTGlua0luZm86OkNh
bGxWYXJhcmdzIHx8IGNhbGxMaW5rSW5mby0+Y2FsbFR5cGUgPT0gQ2FsbExpbmtJbmZvOjpDb25z
dHJ1Y3RWYXJhcmdzKQorICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpIHx8IGNhbGxMaW5rSW5mby0+Y2FsbFR5cGUoKSA9PSBDYWxsTGlua0luZm86OkNhbGxWYXJh
cmdzIHx8IGNhbGxMaW5rSW5mby0+Y2FsbFR5cGUoKSA9PSBDYWxsTGlua0luZm86OkNvbnN0cnVj
dFZhcmFyZ3MpCiAgICAgICAgICAgICBhcml0eSA9IE11c3RDaGVja0FyaXR5OwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBhcml0eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuY3BwCShyZXZpc2lvbiAxODU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCB2b2lkIFBvbHltb3JwaGljQ2FsbE5vZGU6OnVubGluayhSZXBhdGNoCiB7CiAg
ICAgaWYgKG1fY2FsbExpbmtJbmZvKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNz
ZW1ibHkoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIlVubGlua2luZyBwb2x5bW9ycGhpYyBjYWxs
IGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sICIsICIsIG1fY2FsbExp
bmtJbmZvLT5jb2RlT3JpZ2luLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlVubGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24oKSwgIiwgIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSwgIlxuIik7CiAKICAgICAg
ICAgbV9jYWxsTGlua0luZm8tPnVubGluayhyZXBhdGNoQnVmZmVyKTsKICAgICB9CkBAIC01Nyw3
ICs1Nyw3IEBAIHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFJlcGF0Y2gKIHZvaWQg
UG9seW1vcnBoaWNDYWxsTm9kZTo6Y2xlYXJDYWxsTGlua0luZm8oKQogewogICAgIGlmIChPcHRp
b25zOjpzaG93RGlzYXNzZW1ibHkoKSkKLSAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBs
aW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgIiwgbV9jYWxsTGlua0luZm8tPmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgIiwgIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4sICJcbiIpOwor
ICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMg
Y2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1f
Y2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIpOwogCiAgICAgbV9jYWxsTGlua0luZm8g
PSBudWxscHRyOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMTg1NzcxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdHJ1Y3Qg
Q2FsbExpbmtJbmZvOworY2xhc3MgQ2FsbExpbmtJbmZvOwogCiBjbGFzcyBQb2x5bW9ycGhpY0Nh
bGxOb2RlIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2x5bW9ycGhpY0NhbGxOb2RlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTg1NzcxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQ4LDkgKzQ0OCw3IEBAIHN0YXRpYyBib29sIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgICAgICAg
ICAvLyBzaHJpbmsgaXQgYWZ0ZXIuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhbGxMaW5r
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZvPigpOwotICAgICAgICAgICAgY2Fs
bExpbmtJbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbDsKLSAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+Y29kZU9yaWdpbiA9IHN0dWJJbmZvLmNvZGVPcmlnaW47Ci0gICAgICAgICAg
ICBjYWxsTGlua0luZm8tPmNhbGxlZUdQUiA9IGxvYWRlZFZhbHVlR1BSOworICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBzdHViSW5mby5jb2Rl
T3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAgICAgCkBAIC01ODQsOSArNTgyLDkg
QEAgc3RhdGljIGJvb2wgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhvcGVyYXRpb25DYWxsLCBjdXN0b20pOwogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGhhbmRs
ZXJDYWxsLCBsb29rdXBFeGNlcHRpb25IYW5kbGVyKTsKICAgICB9IGVsc2UgaWYgKGtpbmQgPT0g
Q2FsbEdldHRlciB8fCBraW5kID09IENhbGxTZXR0ZXIpIHsKLSAgICAgICAgY2FsbExpbmtJbmZv
LT5ob3RQYXRoT3RoZXIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoZmFzdFBhdGhD
YWxsKTsKLSAgICAgICAgY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVnaW4gPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKGFkZHJlc3NPZkxpbmtGdW5jdGlvbkNoZWNrKTsKLSAgICAgICAgY2FsbExpbmtJ
bmZvLT5jYWxsUmV0dXJuTG9jYXRpb24gPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwo
c2xvd1BhdGhDYWxsKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChzbG93UGF0aENhbGwpLAorICAgICAgICAgICAg
cGF0Y2hCdWZmZXIubG9jYXRpb25PZihhZGRyZXNzT2ZMaW5rRnVuY3Rpb25DaGVjayksCisgICAg
ICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoZmFzdFBhdGhDYWxsKSk7CiAK
ICAgICAgICAgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yID0gbGlua1RodW5rR2VuZXJhdG9yRm9y
KAogICAgICAgICAgICAgQ29kZUZvckNhbGwsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWly
ZWQpOwpAQCAtMTYwNiw3ICsxNjA0LDcgQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoCiAgICAg
UmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKAotICAgICAgICBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLCB2bS0+Z2V0
Q1RJU3R1YihnZW5lcmF0b3IpLmNvZGUoKSk7CisgICAgICAgIGNhbGxMaW5rSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24oKSwgdm0tPmdldENUSVN0dWIoZ2VuZXJhdG9yKS5jb2RlKCkpOwogfQogCiBz
dGF0aWMgdm9pZCBsaW5rU2xvd0ZvcigKQEAgLTE2MjEsNyArMTYxOSw3IEBAIHZvaWQgbGlua0Zv
cigKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRy
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsCiAgICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25N
b2RlIHJlZ2lzdGVycykKIHsKLSAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5zdHViKTsKKyAgICBB
U1NFUlQoIWNhbGxMaW5rSW5mby5zdHViKCkpOwogICAgIAogICAgIENvZGVCbG9jayogY2FsbGVy
Q29kZUJsb2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCk7CiAKQEAgLTE2MzAs
MTEgKzE2MjgsMTEgQEAgdm9pZCBsaW5rRm9yKAogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjYWxsZXJDb2RlQmxvY2spOwogICAgIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlz
TGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5mby5jYWxsZWUuc2V0KGV4ZWMtPmNhbGxlckZyYW1l
KCktPnZtKCksIGNhbGxMaW5rSW5mby5ob3RQYXRoQmVnaW4sIGNhbGxlckNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7Ci0gICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVl
LnNldChleGVjLT5jYWxsZXJGcmFtZSgpLT52bSgpLCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBjYWxsZWUpOworICAgIGNhbGxMaW5rSW5mby5zZXRDYWxsZWUoZXhlYy0+Y2Fs
bGVyRnJhbWUoKS0+dm0oKSwgY2FsbExpbmtJbmZvLmhvdFBhdGhCZWdpbigpLCBjYWxsZXJDb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgIGNhbGxMaW5rSW5mby5zZXRM
YXN0U2VlbkNhbGxlZShleGVjLT5jYWxsZXJGcmFtZSgpLT52bSgpLCBjYWxsZXJDb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwogICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1i
bHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKLSAgICAgICAgZGF0YUxvZygiTGlua2luZyBjYWxsIGlu
ICIsICpjYWxsZXJDb2RlQmxvY2ssICIgYXQgIiwgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4sICIg
dG8gIiwgcG9pbnRlckR1bXAoY2FsbGVlQ29kZUJsb2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBj
b2RlUHRyLCAiXG4iKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uaG90
UGF0aE90aGVyLCBjb2RlUHRyKTsKKyAgICAgICAgZGF0YUxvZygiTGlua2luZyBjYWxsIGluICIs
ICpjYWxsZXJDb2RlQmxvY2ssICIgYXQgIiwgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4oKSwgIiB0
byAiLCBwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spLCAiLCBlbnRyeXBvaW50IGF0ICIsIGNv
ZGVQdHIsICJcbiIpOworICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby5ob3RQ
YXRoT3RoZXIoKSwgY29kZVB0cik7CiAgICAgCiAgICAgaWYgKGNhbGxlZUNvZGVCbG9jaykKICAg
ICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGV4ZWMtPmNhbGxlckZyYW1l
KCksICZjYWxsTGlua0luZm8pOwpAQCAtMTY2NSwxMiArMTY2MywxMiBAQCBzdGF0aWMgdm9pZCBy
ZXZlcnRDYWxsKAogICAgIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFZNKiB2bSwgQ2Fs
bExpbmtJbmZvJiBjYWxsTGlua0luZm8sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKIHsKICAg
ICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNo
KAotICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdp
c3RlcihjYWxsTGlua0luZm8uaG90UGF0aEJlZ2luKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8TWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KGNhbGxMaW5rSW5mby5jYWxsZWVHUFIpLCAwKTsKKyAg
ICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIo
Y2FsbExpbmtJbmZvLmhvdFBhdGhCZWdpbigpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQ+KGNhbGxMaW5rSW5mby5jYWxsZWVHUFIoKSksIDApOwogICAg
IGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIHZtLCBjYWxsTGlua0luZm8sIGdlbmVyYXRvcik7
Ci0gICAgY2FsbExpbmtJbmZvLmhhc1NlZW5TaG91bGRSZXBhdGNoID0gZmFsc2U7Ci0gICAgY2Fs
bExpbmtJbmZvLmNhbGxlZS5jbGVhcigpOwotICAgIGNhbGxMaW5rSW5mby5zdHViLmNsZWFyKCk7
CisgICAgY2FsbExpbmtJbmZvLmNsZWFyU2VlbigpOworICAgIGNhbGxMaW5rSW5mby5jbGVhckNh
bGxlZSgpOworICAgIGNhbGxMaW5rSW5mby5jbGVhclN0dWIoKTsKICAgICBpZiAoY2FsbExpbmtJ
bmZvLmlzT25MaXN0KCkpCiAgICAgICAgIGNhbGxMaW5rSW5mby5yZW1vdmUoKTsKIH0KQEAgLTE2
ODAsNyArMTY3OCw3IEBAIHZvaWQgdW5saW5rRm9yKAogICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVycykKIHsKICAgICBpZiAo
T3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2coIlVubGlua2luZyBj
YWxsIGZyb20gIiwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgIiBpbiByZXF1ZXN0
IGZyb20gIiwgcG9pbnRlckR1bXAocmVwYXRjaEJ1ZmZlci5jb2RlQmxvY2soKSksICJcbiIpOwor
ICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgY2FsbCBmcm9tICIsIGNhbGxMaW5rSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24oKSwgIiBpbiByZXF1ZXN0IGZyb20gIiwgcG9pbnRlckR1bXAocmVwYXRj
aEJ1ZmZlci5jb2RlQmxvY2soKSksICJcbiIpOwogICAgIAogICAgIHJldmVydENhbGwoCiAgICAg
ICAgIHJlcGF0Y2hCdWZmZXIsIHJlcGF0Y2hCdWZmZXIuY29kZUJsb2NrKCktPnZtKCksIGNhbGxM
aW5rSW5mbywKQEAgLTE3MjYsOSArMTcyNCw5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgK
ICAgICBWTSogdm0gPSBjYWxsZXJDb2RlQmxvY2stPnZtKCk7CiAgICAgCiAgICAgQ2FsbFZhcmlh
bnRMaXN0IGxpc3Q7Ci0gICAgaWYgKFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKiBzdHViID0g
Y2FsbExpbmtJbmZvLnN0dWIuZ2V0KCkpCisgICAgaWYgKFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lKiBzdHViID0gY2FsbExpbmtJbmZvLnN0dWIoKSkKICAgICAgICAgbGlzdCA9IHN0dWItPnZh
cmlhbnRzKCk7Ci0gICAgZWxzZSBpZiAoSlNGdW5jdGlvbiogb2xkQ2FsbGVlID0gY2FsbExpbmtJ
bmZvLmNhbGxlZS5nZXQoKSkKKyAgICBlbHNlIGlmIChKU0Z1bmN0aW9uKiBvbGRDYWxsZWUgPSBj
YWxsTGlua0luZm8uY2FsbGVlKCkpCiAgICAgICAgIGxpc3QgPSBDYWxsVmFyaWFudExpc3R7IENh
bGxWYXJpYW50KG9sZENhbGxlZSkgfTsKICAgICAKICAgICBsaXN0ID0gdmFyaWFudExpc3RXaXRo
VmFyaWFudChsaXN0LCBuZXdWYXJpYW50KTsKQEAgLTE3NDYsNyArMTc0NCw3IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbCgKICAgICB9CiAgICAgCiAgICAgaWYgKGlzQ2xvc3VyZUNhbGwpCi0g
ICAgICAgIGNhbGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSA9IHRydWU7CisgICAgICAgIGNhbGxM
aW5rSW5mby5zZXRIYXNTZWVuQ2xvc3VyZSgpOwogICAgIAogICAgIFZlY3RvcjxQb2x5bW9ycGhp
Y0NhbGxDYXNlPiBjYWxsQ2FzZXM7CiAgICAgCkBAIC0xNzYwLDcgKzE3NTgsNyBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIElmIHdlIGNh
bm5vdCBoYW5kbGUgYSBjYWxsZWUsIGFzc3VtZSB0aGF0IGl0J3MgYmV0dGVyIGZvciB0aGlzIHdo
b2xlIHRoaW5nIHRvIGJlIGEKICAgICAgICAgICAgIC8vIHZpcnR1YWwgY2FsbC4KLSAgICAgICAg
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmNhbGxU
eXBlID09IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3MgfHwgY2FsbExpbmtJbmZvLmNhbGxUeXBl
ID09IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0VmFyYXJncykgeworICAgICAgICAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8uY2FsbFR5cGUoKSA9PSBD
YWxsTGlua0luZm86OkNhbGxWYXJhcmdzIHx8IGNhbGxMaW5rSW5mby5jYWxsVHlwZSgpID09IENh
bGxMaW5rSW5mbzo6Q29uc3RydWN0VmFyYXJncykgewogICAgICAgICAgICAgICAgIGxpbmtWaXJ0
dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbywgQ29kZUZvckNhbGwsIHJlZ2lzdGVycyk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTc4MCw3ICsxNzc4LDcgQEAg
dm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KGNhbGxMaW5rSW5mby5j
YWxsZWVHUFIpOworICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KGNh
bGxMaW5rSW5mby5jYWxsZWVHUFIoKSk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQo
dm0sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgCkBAIC0xODk1LDcgKzE4OTMsNyBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CiAjZW5kaWYKICAgICBz
dHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBH
UFJJbmZvOjpyZWdUMik7Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkp
LCBHUFJJbmZvOjpyZWdUNCk7CisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSksIEdQUkluZm86OnJlZ1Q0KTsKICAgICAKICAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86OnJlZ1Q0KTsKICAgICBBc3NlbWJseUhlbHBlcnM6
Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOwpAQCAtMTkxMiwxNiArMTkxMCwxNiBAQCB2b2lk
IGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgICAgICBjYWxsVG9Db2RlUHRyLmNhbGwsIEZ1
bmN0aW9uUHRyKGNhbGxUb0NvZGVQdHIuY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAg
ICAgfQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY2FsbGVyQ29kZUJsb2NrLT5q
aXRUeXBlKCkpKQotICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgwKSk7CisgICAgICAgIHBhdGNoQnVmZmVy
LmxpbmsoZG9uZSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmxhYmVsQXRPZmZz
ZXQoMCkpOwogICAgIGVsc2UKLSAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlu
a0luZm8uaG90UGF0aE90aGVyLmxhYmVsQXRPZmZzZXQoMCkpOworICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKS5sYWJlbEF0T2Zmc2V0KDAp
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRD
VElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvckZvcihyZWdpc3RlcnMpKS5j
b2RlKCkpKTsKICAgICAKICAgICBSZWZQdHI8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+IHN0
dWJSb3V0aW5lID0gYWRvcHRSZWYobmV3IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAg
ICAgICBGSU5BTElaRV9DT0RFX0ZPUigKICAgICAgICAgICAgIGNhbGxlckNvZGVCbG9jaywgcGF0
Y2hCdWZmZXIsCiAgICAgICAgICAgICAoIlBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgJXMsIHJl
dHVybiBwb2ludCAlcCwgdGFyZ2V0cyAlcyIsCi0gICAgICAgICAgICAgICAgdG9DU3RyaW5nKCpj
YWxsZXJDb2RlQmxvY2spLmRhdGEoKSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5s
YWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAgICAgICAgdG9D
U3RyaW5nKCpjYWxsZXJDb2RlQmxvY2spLmRhdGEoKSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbigpLmxhYmVsQXRPZmZzZXQoMCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAg
ICAgICAgICB0b0NTdHJpbmcobGlzdER1bXAoY2FsbENhc2VzKSkuZGF0YSgpKSksCiAgICAgICAg
ICp2bSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZXhlYy0+Y2FsbGVyRnJh
bWUoKSwgY2FsbExpbmtJbmZvLCBjYWxsQ2FzZXMsCiAgICAgICAgIFdURjo6bW92ZShmYXN0Q291
bnRzKSkpOwpAQCAtMTkyOSwxNCArMTkyNywxNCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNhbGxlckNvZGVCbG9jayk7CiAgICAg
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNlV2l0aEp1bXAoCi0gICAgICAgIFJlcGF0Y2hCdWZm
ZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGNhbGxMaW5rSW5mby5ob3RQ
YXRoQmVnaW4pLAorICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBh
dGNoT25SZWdpc3RlcihjYWxsTGlua0luZm8uaG90UGF0aEJlZ2luKCkpLAogICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbChzdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwogICAgIC8vIFRoaXMg
aXMgd2VpcmQuIFRoZSBvcmlnaW5hbCBzbG93IHBhdGggc2hvdWxkIG5vIGxvbmdlciBiZSByZWFj
aGFibGUuCiAgICAgbGlua1Nsb3dGb3IocmVwYXRjaEJ1ZmZlciwgdm0sIGNhbGxMaW5rSW5mbywg
Q29kZUZvckNhbGwsIHJlZ2lzdGVycyk7CiAgICAgCiAgICAgLy8gSWYgdGhlcmUgaGFkIGJlZW4g
YSBwcmV2aW91cyBzdHViIHJvdXRpbmUsIHRoYXQgb25lIHdpbGwgZGllIGFzIHNvb24gYXMgdGhl
IEdDIHJ1bnMgYW5kIHNlZXMKICAgICAvLyB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG9uIHN0YWNrLgot
ICAgIGNhbGxMaW5rSW5mby5zdHViID0gc3R1YlJvdXRpbmUucmVsZWFzZSgpOworICAgIGNhbGxM
aW5rSW5mby5zZXRTdHViKHN0dWJSb3V0aW5lLnJlbGVhc2UoKSk7CiAgICAgCiAgICAgLy8gVGhl
IGNhbGwgbGluayBpbmZvIG5vIGxvbmdlciBoYXMgYSBjYWxsIGNhY2hlIGFwYXJ0IGZyb20gdGhl
IGp1bXAgdG8gdGhlIHBvbHltb3JwaGljIGNhbGwKICAgICAvLyBzdHViLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTg1
NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB2aXJ0dWFsRm9yVAogICAgIC8vIHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9m
aWxlci4KICAgICBqaXQuYWRkMzIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDEpLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIE9CSkVD
VF9PRkZTRVRPRihDYWxsTGlua0luZm8sIHNsb3dQYXRoQ291bnQpKSk7CisgICAgICAgIENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZlNs
b3dQYXRoQ291bnQoKSkpOwogCiAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBoYXZlIGEgc3Rvcnkg
Zm9yIGVsaW1pbmF0aW5nIHRoZXNlIGNoZWNrcy4gSW4gbWFueSBjYXNlcywKICAgICAvLyB0aGUg
REZHIGtub3dzIHRoYXQgdGhlIHZhbHVlIGlzIGRlZmluaXRlbHkgYSBjZWxsLCBvciBkZWZpbml0
ZWx5IGEgZnVuY3Rpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAxODU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB0eXBlZGVmIGNvbnN0
IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZU1vdkhpbnRSZW1vdmFsLCB0
cnVlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBlbmFibGVPYmplY3RBbGxvY2F0aW9uU2lua2lu
ZywgdHJ1ZSwgbnVsbHB0cikgXAogICAgIFwKLSAgICB2KGJvb2wsIGVuYWJsZUNvbmN1cnJlbnRK
SVQsIHRydWUsICJhbGxvd3MgdGhlIERGRyAvIEZUTCBjb21waWxhdGlvbiBpbiB0aHJlYWRzIG90
aGVyIHRoYW4gdGhlIGV4ZWN1dGluZyBKUyB0aHJlYWQiKSBcCisgICAgdihib29sLCBlbmFibGVD
b25jdXJyZW50SklULCBmYWxzZSwgImFsbG93cyB0aGUgREZHIC8gRlRMIGNvbXBpbGF0aW9uIGlu
IHRocmVhZHMgb3RoZXIgdGhhbiB0aGUgZXhlY3V0aW5nIEpTIHRocmVhZCIpIFwKICAgICB2KHVu
c2lnbmVkLCBudW1iZXJPZkRGR0NvbXBpbGVyVGhyZWFkcywgY29tcHV0ZU51bWJlck9mV29ya2Vy
VGhyZWFkcygyLCAyKSAtIDEsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBudW1iZXJPZkZU
TENvbXBpbGVyVGhyZWFkcywgY29tcHV0ZU51bWJlck9mV29ya2VyVGhyZWFkcyg4LCAyKSAtIDEs
IG51bGxwdHIpIFwKICAgICB2KGludDMyLCBwcmlvcml0eURlbHRhT2ZERkdDb21waWxlclRocmVh
ZHMsIGNvbXB1dGVQcmlvcml0eURlbHRhT2ZXb3JrZXJUaHJlYWRzKC0xLCAwKSwgbnVsbHB0cikg
XAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255507</attachid>
            <date>2015-06-24 13:05:46 -0700</date>
            <delta_ts>2015-06-24 15:45:55 -0700</delta_ts>
            <desc>Rebased patch, updated the ChangeLog with suggestions and removed Options.h change</desc>
            <filename>146285-2.patch</filename>
            <type>text/plain</type>
            <size>43391</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1OTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMCBA
QAorMjAxNS0wNi0yNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDcmFzaCBvbiBnb2cuY29tIGR1ZSB0byBQb2x5bW9ycGhpY0NhbGxOb2RlJ3MgaGF2aW5n
IHN0YWxlIHJlZmVyZW5jZXMgdG8gQ2FsbExpbmtJbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyODUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsTGlua0luZm8ncyBjb250YWluIGEgUmVmUHRy
IHRvIGEgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUsIG5hbWVkIHN0dWIsIHdoaWNoIGNvbnRh
aW5zCisgICAgICAgIGEgY29sbGVjdGlvbiBvZiBQb2x5bW9ycGhpY0NhbGxOb2RlLiAgVGhvc2Ug
UG9seW1vcnBoaWNDYWxsTm9kZXMgaGF2ZSBhIHJlZmVyZW5jZSBiYWNrIHRvIHRoZQorICAgICAg
ICBDYWxsTGlua0luZm8uICBXaGVuIGEgQ2FsbExpbmtJbmZvIHJlcGxhY2VzIG9yIGNsZWFycyAi
c3R1YiIsIHRoZSByZWYgY291bnQgb2YgdGhlCisgICAgICAgIFBvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lIGlzIGRlY3JlbWVudGVkIGFzIGV4cGVjdGVkLCBidXQgc2luY2UgaXQgaW5oZXJpdHMg
ZnJvbQorICAgICAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUsIGl0IGlzbid0IGFjdHVhbGx5IGRl
bGV0ZWQgdW50aWwgR0MuICBJbiB0aGUgbWVhbiB0aW1lLCB0aGUgb3JpZ2luYWwKKyAgICAgICAg
Q2FsbExpbmtJbmZvIGNhbiBnbyBhd2F5LiAgSWYgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5r
KCkgaXMgY2FsbGVkIGF0IHRoYXQgcG9pbnQsCisgICAgICAgIGl0IHdpbGwgdHJ5IHRvIHVubGlu
ayBhIG5vdyBkZWxldGVkIENhbGxMaW5rSW5mbyBhbmQgY3Jhc2ggYXMgYSByZXN1bHQuCisKKyAg
ICAgICAgVGhlIGZpeCBpcyB0byBjbGVhciB0aGUgQ2FsbExpbmtJbmZvIHJlZmVyZW5jZXMgZnJv
bSBhbnkgUG9seW1vcnBoaWNDYWxsTm9kZSBvYmplY3RzIHdoZW4KKyAgICAgICAgd2hlbiB3ZSBz
ZXQgYSBuZXcgc3R1YiBvciBjbGVhciBhbiBleGlzdGluZyBzdHViIGZvciBhIENhbGxMaW5rSW5m
by4gIFRoaXMgaXMgZG9uZSBieQorICAgICAgICBjYWxsaW5nIFBvbHltb3JwaGljQ2FsbE5vZGU6
OmNsZWFyQ2FsbE5vZGVzRm9yKCkgb24gdGhlIG9sZCBzdHViLgorCisgICAgICAgIFRoZSBwcmlv
ciBjb2RlIHdvdWxkIG9ubHkgY2FsbCBjbGVhckNhbGxOb2Rlc0ZvcigpIGZyb20gdGhlIENhbGxM
aW5rSW5mbyBkZXN0cnVjdG9yLgorICAgICAgICBUaGlzIG9ubHkgdG9vayBjYXJlIG9mIHRoZSBs
YXN0IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIGhlbGQgaW4gdGhlIENhbGxMaW5rSW5mby4K
KyAgICAgICAgQW55IHByaW9yIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIHdvdWxkIHN0aWxs
IGhhdmUgYSwgbm93IGJhZCwgcmVmZXJlbmNlIHRvIHRoZSBDYWxsTGlua0luZm8uCisKKyAgICAg
ICAgSW4gdGhlIHByb2Nlc3MgSSByZWZhY3RvcmVkIENhbGxMaW5rSW5mbyBmcm9tIGEgc3RydWN0
IHRvIGEgY2xhc3Mgd2l0aCBwcm9wZXIgYWNjZXNzb3JzIGFuZAorICAgICAgICBtYWRlIGFsbCB0
aGUgZGF0YSBlbGVtZW50cyBwcml2YXRlLgorCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjbGVhclN0dWIpOiBOZXcgbWV0
aG9kIHRoYXQgY2FsbHMgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OmNsZWFyQ2FsbE5vZGVz
Rm9yKCkKKyAgICAgICAgdG8gY2xlYXIgdGhlIGJhY2sgcmVmZXJlbmNlcyB0byB0aGlzIENhbGxM
aW5rSW5mby4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKTogQ2xlYXIgYW55
IHByaW9yIHN0dWIgYmVmb3JlIGNoYW5naW5nIHRvIHRoZSBuZXcgc3R1Yi4KKworICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
dW5saW5rKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjp2aXNpdFdlYWspOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86
OmNhbGxUeXBlRm9yKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8p
OgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86On5DYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnNwZWNpYWxpemF0aW9uS2luZEZvcik6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6c3BlY2lhbGl6YXRpb25LaW5kKToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0VXBDYWxs
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRDYWxsTG9jYXRpb25zKToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRVcENhbGxGcm9tRlRMKToKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtJbmZvOjpjYWxsUmV0dXJuTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OmhvdFBhdGhCZWdpbik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6aG90UGF0
aE90aGVyKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRDYWxsZWUpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFyQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldExhc3RTZWVu
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVuQ2FsbGVl
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxlZSk6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6aGF2ZUxhc3RTZWVuQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtJbmZvOjpzdHViKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZWVuT25j
ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2xlYXJTZWVuKToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtJbmZvOjpzZXRTZWVuKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpo
YXNTZWVuQ2xvc3VyZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0SGFzU2VlbkNs
b3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFyZWRCeUdDKToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRDYWxsVHlwZSk6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rSW5mbzo6Y2FsbFR5cGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmFkZHJlc3NP
Zk1heE51bUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6bWF4TnVtQXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpvZmZzZXRPZlNsb3dQYXRoQ291
bnQpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldENhbGxlZUdQUik6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbGVlR1BSKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjpzbG93UGF0aENvdW50KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRDb2Rl
T3JpZ2luKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjb2RlT3JpZ2luKToKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsbExpbmtJbmZvQ29kZU9yaWdpbik6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZvcik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxMaW5r
SW5mbyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludENhbGxPcCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRl
eCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bCk6CisgICAgICAgICogZnRsL0ZUTEpTQ2FsbEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkpTQ2FsbEJhc2U6OmxpbmspOgorICAgICAgICAqIGppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZS5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcDoK
KyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNDYWxsTm9kZTo6Y2xlYXJDYWxsTGlua0luZm8pOgorICAgICAgICAqIGpp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6OmxpbmtT
bG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6OnJldmVydENh
bGwpOgorICAgICAgICAoSlNDOjp1bmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1v
cnBoaWNDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAg
KEpTQzo6dmlydHVhbEZvclRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgUmVmYWN0b3Jpbmcgb2Ygc3RydWN0IENhbGxMaW5rSW5mbyBpbnRvIGNs
YXNzIENhbGxMaW5rSW5mby4KKwogMjAxNS0wNi0yNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpY3QgRXF1YWxpdHkgb24gb2JqZWN0cyBzaG91
bGQgb25seSBjaGVjayB0aGF0IG9uZSBvZiB0aGUgdHdvIHNpZGVzIGlzIGFuIG9iamVjdC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
CShyZXZpc2lvbiAxODU5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTUgQEAKICNpZiBFTkFC
TEUoSklUKQogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgQ2FsbExpbmtJbmZvOjpjbGVhclN0dWIo
KQoreworICAgIGlmICghc3R1YigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0dWItPmNs
ZWFyQ2FsbE5vZGVzRm9yKHRoaXMpOworICAgIG1fc3R1Yi5jbGVhcigpOworfQorCiB2b2lkIENh
bGxMaW5rSW5mbzo6dW5saW5rKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpCiB7CiAgICAg
aWYgKCFpc0xpbmtlZCgpKSB7CkBAIC00OCw4ICs1Nyw4IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp1
bmxpbmsoUmVwYXRjaEJ1ZmZlciYKICAgICAKICAgICB1bmxpbmtGb3IoCiAgICAgICAgIHJlcGF0
Y2hCdWZmZXIsICp0aGlzLAotICAgICAgICAoY2FsbFR5cGUgPT0gQ29uc3RydWN0IHx8IGNhbGxU
eXBlID09IENvbnN0cnVjdFZhcmFyZ3MpPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGws
Ci0gICAgICAgIGlzRlRMID8gTXVzdFByZXNlcnZlUmVnaXN0ZXJzIDogUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Ob3RSZXF1aXJlZCk7CisgICAgICAgIChtX2NhbGxUeXBlID09IENvbnN0cnVjdCB8fCBt
X2NhbGxUeXBlID09IENvbnN0cnVjdFZhcmFyZ3MpPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZv
ckNhbGwsCisgICAgICAgIG1faXNGVEwgPyBNdXN0UHJlc2VydmVSZWdpc3RlcnMgOiBSZWdpc3Rl
clByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsKIAogICAgIC8vIEl0IHdpbGwgYmUgb24gYSBsaXN0
IGlmIHRoZSBjYWxsZWUgaGFzIGEgY29kZSBibG9jay4KICAgICBpZiAoaXNPbkxpc3QoKSkKQEAg
LTYwLDM4ICs2OSwzOCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZm
CiB7CiAgICAgYXV0byBoYW5kbGVTcGVjaWZpY0NhbGxlZSA9IFsmXSAoSlNGdW5jdGlvbiogY2Fs
bGVlKSB7CiAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjYWxsZWUtPmV4ZWN1dGFibGUoKSkp
Ci0gICAgICAgICAgICBoYXNTZWVuQ2xvc3VyZSA9IHRydWU7CisgICAgICAgICAgICBtX2hhc1Nl
ZW5DbG9zdXJlID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2xlYXJlZEJ5R0Mg
PSB0cnVlOworICAgICAgICAgICAgbV9jbGVhcmVkQnlHQyA9IHRydWU7CiAgICAgfTsKICAgICAK
ICAgICBpZiAoaXNMaW5rZWQoKSkgewotICAgICAgICBpZiAoc3R1YikgewotICAgICAgICAgICAg
aWYgKCFzdHViLT52aXNpdFdlYWsocmVwYXRjaEJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKHN0dWIo
KSkgeworICAgICAgICAgICAgaWYgKCFzdHViKCktPnZpc2l0V2VhayhyZXBhdGNoQnVmZmVyKSkg
ewogICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcmluZyBj
bG9zdXJlIGNhbGwgZnJvbSAiLCAqcmVwYXRjaEJ1ZmZlci5jb2RlQmxvY2soKSwgIiB0byAiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdER1bXAoc3R1Yi0+dmFyaWFudHMoKSksICIsIHN0
dWIgcm91dGluZSAiLCBSYXdQb2ludGVyKHN0dWIuZ2V0KCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdER1bXAoc3R1YigpLT52YXJpYW50cygpKSwgIiwgc3R1YiByb3V0aW5lICIsIFJh
d1BvaW50ZXIoc3R1YigpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICIuXG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdW5saW5rKHJlcGF0Y2hCdWZmZXIpOwotICAg
ICAgICAgICAgICAgIGNsZWFyZWRCeUdDID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX2NsZWFy
ZWRCeUdDID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghSGVhcDo6
aXNNYXJrZWQoY2FsbGVlLmdldCgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKCFIZWFwOjppc01h
cmtlZChtX2NhbGxlZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
T1NSKCkpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAi
Q2xlYXJpbmcgY2FsbCBmcm9tICIsICpyZXBhdGNoQnVmZmVyLmNvZGVCbG9jaygpLCAiIHRvICIs
Ci0gICAgICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIoY2FsbGVlLmdldCgpKSwgIiAoIiwKLSAg
ICAgICAgICAgICAgICAgICAgY2FsbGVlLmdldCgpLT5leGVjdXRhYmxlKCktPmhhc2hGb3Ioc3Bl
Y2lhbGl6YXRpb25LaW5kKCkpLAorICAgICAgICAgICAgICAgICAgICBSYXdQb2ludGVyKG1fY2Fs
bGVlLmdldCgpKSwgIiAoIiwKKyAgICAgICAgICAgICAgICAgICAgbV9jYWxsZWUuZ2V0KCktPmV4
ZWN1dGFibGUoKS0+aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSksCiAgICAgICAgICAgICAg
ICAgICAgICIpLlxuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBoYW5kbGVTcGVjaWZp
Y0NhbGxlZShjYWxsZWUuZ2V0KCkpOworICAgICAgICAgICAgaGFuZGxlU3BlY2lmaWNDYWxsZWUo
bV9jYWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAgdW5saW5rKHJlcGF0Y2hCdWZmZXIpOwogICAg
ICAgICB9CiAgICAgfQotICAgIGlmICghIWxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtl
ZChsYXN0U2VlbkNhbGxlZS5nZXQoKSkpIHsKLSAgICAgICAgaGFuZGxlU3BlY2lmaWNDYWxsZWUo
bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOwotICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOwor
ICAgIGlmIChoYXZlTGFzdFNlZW5DYWxsZWUoKSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5D
YWxsZWUoKSkpIHsKKyAgICAgICAgaGFuZGxlU3BlY2lmaWNDYWxsZWUobGFzdFNlZW5DYWxsZWUo
KSk7CisgICAgICAgIGNsZWFyTGFzdFNlZW5DYWxsZWUoKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9u
IDE4NTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgUmVwYXRjaEJ1ZmZlcjsKIAotc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKK2NsYXNzIENhbGxMaW5rSW5mbyA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKK3B1YmxpYzoKICAgICBlbnVt
IENhbGxUeXBlIHsgTm9uZSwgQ2FsbCwgQ2FsbFZhcmFyZ3MsIENvbnN0cnVjdCwgQ29uc3RydWN0
VmFyYXJncyB9OwogICAgIHN0YXRpYyBDYWxsVHlwZSBjYWxsVHlwZUZvcihPcGNvZGVJRCBvcGNv
ZGVJRCkKICAgICB7CkBAIC01NiwyMCArNTcsMTkgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1
YmxpYyBCYXNpY1Jhd1NlbgogICAgIH0KICAgICAKICAgICBDYWxsTGlua0luZm8oKQotICAgICAg
ICA6IGlzRlRMKGZhbHNlKQotICAgICAgICAsIGhhc1NlZW5TaG91bGRSZXBhdGNoKGZhbHNlKQot
ICAgICAgICAsIGhhc1NlZW5DbG9zdXJlKGZhbHNlKQotICAgICAgICAsIGNsZWFyZWRCeUdDKGZh
bHNlKQotICAgICAgICAsIGNhbGxUeXBlKE5vbmUpCi0gICAgICAgICwgbWF4TnVtQXJndW1lbnRz
KDApCi0gICAgICAgICwgc2xvd1BhdGhDb3VudCgwKQorICAgICAgICA6IG1faXNGVEwoZmFsc2Up
CisgICAgICAgICwgbV9oYXNTZWVuU2hvdWxkUmVwYXRjaChmYWxzZSkKKyAgICAgICAgLCBtX2hh
c1NlZW5DbG9zdXJlKGZhbHNlKQorICAgICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCisgICAg
ICAgICwgbV9jYWxsVHlwZShOb25lKQorICAgICAgICAsIG1fbWF4TnVtQXJndW1lbnRzKDApCisg
ICAgICAgICwgbV9zbG93UGF0aENvdW50KDApCiAgICAgewogICAgIH0KICAgICAgICAgCiAgICAg
fkNhbGxMaW5rSW5mbygpCiAgICAgewotICAgICAgICBpZiAoc3R1YikKLSAgICAgICAgICAgIHN0
dWItPmNsZWFyQ2FsbE5vZGVzRm9yKHRoaXMpOworICAgICAgICBjbGVhclN0dWIoKTsKIAogICAg
ICAgICBpZiAoaXNPbkxpc3QoKSkKICAgICAgICAgICAgIHJlbW92ZSgpOwpAQCAtODEsNDYgKzgx
LDIwOCBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgfQog
ICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbktpbmRGb3Ioc3RhdGljX2Nhc3Q8Q2Fs
bFR5cGU+KGNhbGxUeXBlKSk7CisgICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbktpbmRGb3Io
c3RhdGljX2Nhc3Q8Q2FsbFR5cGU+KG1fY2FsbFR5cGUpKTsKICAgICB9CiAKLSAgICBDb2RlTG9j
YXRpb25OZWFyQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgQ29kZUxvY2F0aW9uRGF0YUxh
YmVsUHRyIGhvdFBhdGhCZWdpbjsKLSAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBob3RQYXRoT3Ro
ZXI7Ci0gICAgSklUV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKLSAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gbGFzdFNlZW5DYWxsZWU7Ci0gICAgUmVmUHRyPFBvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lPiBzdHViOwotICAgIGJvb2wgaXNGVEwgOiAxOwotICAgIGJvb2wgaGFz
U2VlblNob3VsZFJlcGF0Y2ggOiAxOwotICAgIGJvb2wgaGFzU2VlbkNsb3N1cmUgOiAxOwotICAg
IGJvb2wgY2xlYXJlZEJ5R0MgOiAxOwotICAgIHVuc2lnbmVkIGNhbGxUeXBlIDogNDsgLy8gQ2Fs
bFR5cGUKLSAgICB1bnNpZ25lZCBjYWxsZWVHUFIgOiA4OwotICAgIHVpbnQ4X3QgbWF4TnVtQXJn
dW1lbnRzOyAvLyBPbmx5IHVzZWQgZm9yIHZhcmFyZ3MgY2FsbHMuCi0gICAgdWludDMyX3Qgc2xv
d1BhdGhDb3VudDsKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47Ci0KLSAgICBib29sIGlzTGlu
a2VkKCkgeyByZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkgeyBy
ZXR1cm4gbV9zdHViIHx8IG1fY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZl
ciYpOwogCisgICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQorICAgIHsKKyAgICAgICAgbV9jYWxsVHlw
ZSA9IGNhbGxUeXBlOworICAgICAgICBtX2NvZGVPcmlnaW4gPSBjb2RlT3JpZ2luOworICAgICAg
ICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsKKyAgICB9CisKKyAgICB2b2lkIHNldENhbGxMb2Nh
dGlvbnMoQ29kZUxvY2F0aW9uTmVhckNhbGwgY2FsbFJldHVybkxvY2F0aW9uLCBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luLAorICAgICAgICBDb2RlTG9jYXRpb25OZWFyQ2Fs
bCBob3RQYXRoT3RoZXIpCisgICAgeworICAgICAgICBtX2NhbGxSZXR1cm5Mb2NhdGlvbiA9IGNh
bGxSZXR1cm5Mb2NhdGlvbjsKKyAgICAgICAgbV9ob3RQYXRoQmVnaW4gPSBob3RQYXRoQmVnaW47
CisgICAgICAgIG1faG90UGF0aE90aGVyID0gaG90UGF0aE90aGVyOworICAgIH0KKworICAgIHZv
aWQgc2V0VXBDYWxsRnJvbUZUTChDYWxsVHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLAorICAgICAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb24sIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBob3RQYXRoQmVnaW4sCisgICAgICAgIENvZGVMb2NhdGlv
bk5lYXJDYWxsIGhvdFBhdGhPdGhlciwgdW5zaWduZWQgY2FsbGVlR1BSKQorICAgIHsKKyAgICAg
ICAgbV9pc0ZUTCA9IHRydWU7CisgICAgICAgIG1fY2FsbFR5cGUgPSBjYWxsVHlwZTsKKyAgICAg
ICAgbV9jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKKyAgICAgICAgbV9jYWxsUmV0dXJuTG9jYXRp
b24gPSBjYWxsUmV0dXJuTG9jYXRpb247CisgICAgICAgIG1faG90UGF0aEJlZ2luID0gaG90UGF0
aEJlZ2luOworICAgICAgICBtX2hvdFBhdGhPdGhlciA9IGhvdFBhdGhPdGhlcjsKKyAgICAgICAg
bV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CisgICAgfQorCisgICAgQ29kZUxvY2F0aW9uTmVhckNh
bGwgY2FsbFJldHVybkxvY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxSZXR1
cm5Mb2NhdGlvbjsKKyAgICB9CisKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgaG90UGF0
aEJlZ2luKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hvdFBhdGhCZWdpbjsKKyAgICB9CisK
KyAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBob3RQYXRoT3RoZXIoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1faG90UGF0aE90aGVyOworICAgIH0KKworICAgIHZvaWQgc2V0Q2FsbGVlKFZNJiB2
bSwgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxvY2F0aW9uLCBKU0NlbGwqIG93bmVyLCBKU0Z1
bmN0aW9uKiBjYWxsZWUpCisgICAgeworICAgICAgICBtX2NhbGxlZS5zZXQodm0sIGxvY2F0aW9u
LCBvd25lciwgY2FsbGVlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQ2FsbGVlKCkKKyAgICB7
CisgICAgICAgIG1fY2FsbGVlLmNsZWFyKCk7CisgICAgfQorCisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZS5nZXQoKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldExhc3RTZWVuQ2FsbGVlKFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNG
dW5jdGlvbiogY2FsbGVlKQorICAgIHsKKyAgICAgICAgbV9sYXN0U2VlbkNhbGxlZS5zZXQodm0s
IG93bmVyLCBjYWxsZWUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJMYXN0U2VlbkNhbGxlZSgp
CisgICAgeworICAgICAgICBtX2xhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgfQorCisgICAg
SlNGdW5jdGlvbiogbGFzdFNlZW5DYWxsZWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGFz
dFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBoYXZlTGFzdFNlZW5DYWxsZWUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9sYXN0U2VlbkNhbGxlZTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFN0dWIoUGFzc1JlZlB0cjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4gbmV3
U3R1YikKKyAgICB7CisgICAgICAgIGNsZWFyU3R1YigpOworICAgICAgICBtX3N0dWIgPSBuZXdT
dHViOworICAgIH0KKworICAgIHZvaWQgY2xlYXJTdHViKCk7CisKKyAgICBQb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZSogc3R1YigpCisgICAgeworICAgICAgICByZXR1cm4gbV9zdHViLmdldCgp
OworICAgIH0KKwogICAgIGJvb2wgc2Vlbk9uY2UoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGhh
c1NlZW5TaG91bGRSZXBhdGNoOworICAgICAgICByZXR1cm4gbV9oYXNTZWVuU2hvdWxkUmVwYXRj
aDsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyU2VlbigpCisgICAgeworICAgICAgICBtX2hhc1Nl
ZW5TaG91bGRSZXBhdGNoID0gZmFsc2U7CiAgICAgfQogCiAgICAgdm9pZCBzZXRTZWVuKCkKICAg
ICB7Ci0gICAgICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNT
ZWVuU2hvdWxkUmVwYXRjaCA9IHRydWU7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNTZWVu
Q2xvc3VyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNTZWVuQ2xvc3VyZTsKKyAgICB9
CisKKyAgICB2b2lkIHNldEhhc1NlZW5DbG9zdXJlKCkKKyAgICB7CisgICAgICAgIG1faGFzU2Vl
bkNsb3N1cmUgPSB0cnVlOworICAgIH0KKworICAgIGJvb2wgY2xlYXJlZEJ5R0MoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fY2xlYXJlZEJ5R0M7CisgICAgfQorCisgICAgdm9pZCBzZXRDYWxs
VHlwZShDYWxsVHlwZSBjYWxsVHlwZSkKKyAgICB7CisgICAgICAgIG1fY2FsbFR5cGUgPSBjYWxs
VHlwZTsKKyAgICB9CisKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q2FsbFR5cGU+KG1fY2FsbFR5cGUpOworICAgIH0KKworICAgIHVp
bnQ4X3QqIGFkZHJlc3NPZk1heE51bUFyZ3VtZW50cygpCisgICAgeworICAgICAgICByZXR1cm4g
Jm1fbWF4TnVtQXJndW1lbnRzOworICAgIH0KKworICAgIHVpbnQ4X3QgbWF4TnVtQXJndW1lbnRz
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21heE51bUFyZ3VtZW50czsKKyAgICB9CisKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhDb3VudCgpCisgICAgeworICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgbV9zbG93UGF0aENvdW50KTsK
KyAgICB9CisKKyAgICB2b2lkIHNldENhbGxlZUdQUih1bnNpZ25lZCBjYWxsZWVHUFIpCisgICAg
eworICAgICAgICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBjYWxsZWVHUFIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlR1BSOworICAgIH0K
KworICAgIHVpbnQzMl90IHNsb3dQYXRoQ291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
c2xvd1BhdGhDb3VudDsKKyAgICB9CisKKyAgICB2b2lkIHNldENvZGVPcmlnaW4oQ29kZU9yaWdp
biBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgbV9jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsK
KyAgICB9CisKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fY29kZU9yaWdpbjsKKyAgICB9CisKICAgICB2b2lkIHZpc2l0V2VhayhSZXBhdGNoQnVm
ZmVyJik7Ci0gICAgCisKICAgICBzdGF0aWMgQ2FsbExpbmtJbmZvJiBkdW1teSgpOworCitwcml2
YXRlOgorICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIG1fY2FsbFJldHVybkxvY2F0aW9uOworICAg
IENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBtX2hvdFBhdGhCZWdpbjsKKyAgICBDb2RlTG9jYXRp
b25OZWFyQ2FsbCBtX2hvdFBhdGhPdGhlcjsKKyAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9jYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbGFzdFNlZW5DYWxs
ZWU7CisgICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBtX3N0dWI7CisgICAg
Ym9vbCBtX2lzRlRMIDogMTsKKyAgICBib29sIG1faGFzU2VlblNob3VsZFJlcGF0Y2ggOiAxOwor
ICAgIGJvb2wgbV9oYXNTZWVuQ2xvc3VyZSA6IDE7CisgICAgYm9vbCBtX2NsZWFyZWRCeUdDIDog
MTsKKyAgICB1bnNpZ25lZCBtX2NhbGxUeXBlIDogNDsgLy8gQ2FsbFR5cGUKKyAgICB1bnNpZ25l
ZCBtX2NhbGxlZUdQUiA6IDg7CisgICAgdWludDhfdCBtX21heE51bUFyZ3VtZW50czsgLy8gT25s
eSB1c2VkIGZvciB2YXJhcmdzIGNhbGxzLgorICAgIHVpbnQzMl90IG1fc2xvd1BhdGhDb3VudDsK
KyAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsKIH07CiAKIGlubGluZSBDb2RlT3JpZ2luIGdl
dENhbGxMaW5rSW5mb0NvZGVPcmlnaW4oQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0g
ICAgcmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luOworICAgIHJldHVybiBjYWxsTGlua0lu
Zm8uY29kZU9yaWdpbigpOwogfQogCiB0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExp
bmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZvTWFwOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCShyZXZpc2lvbiAxODU5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTQgKzEyOCwxNCBAQCBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwogICAgIAogICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1
dGVGcm9tQ2FsbExpbmtJbmZvKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKLSAgICByZXN1bHQubV9t
YXhOdW1Bcmd1bWVudHMgPSBjYWxsTGlua0luZm8ubWF4TnVtQXJndW1lbnRzOworICAgIHJlc3Vs
dC5tX21heE51bUFyZ3VtZW50cyA9IGNhbGxMaW5rSW5mby5tYXhOdW1Bcmd1bWVudHMoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZyb21DYWxsTGlua0luZm8oCiAgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewotICAgIGlmIChjYWxsTGlua0luZm8uY2xlYXJl
ZEJ5R0MpCisgICAgaWYgKGNhbGxMaW5rSW5mby5jbGVhcmVkQnlHQygpKQogICAgICAgICByZXR1
cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAogICAgIC8vIE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVp
cmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBjb2RlIGlzIHJhY3kgd2l0aCByZXNw
ZWN0CkBAIC0xNTUsNyArMTU1LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGcgogICAgIC8vIHVudGlsIG5leHQgR0MgZXZlbiBpZiB0aGUgQ2FsbExpbmtJbmZvIGlz
IGNvbmN1cnJlbnRseSBjbGVhcmVkLiBBbHNvLCB0aGUgdmFyaWFudHMgbGlzdCBpcwogICAgIC8v
IG5ldmVyIG11dGF0ZWQgYWZ0ZXIgdGhlIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIGlzIGlu
c3RhbnRpYXRlZC4gV2UgaGF2ZSBzb21lIGNvbnNlcnZhdGl2ZQogICAgIC8vIGZlbmNpbmcgaW4g
cGxhY2UgdG8gbWFrZSBzdXJlIHRoYXQgd2Ugc2VlIHRoZSB2YXJpYW50cyBsaXN0IGFmdGVyIGNv
bnN0cnVjdGlvbi4KLSAgICBpZiAoUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBj
YWxsTGlua0luZm8uc3R1Yi5nZXQoKSkgeworICAgIGlmIChQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZSogc3R1YiA9IGNhbGxMaW5rSW5mby5zdHViKCkpIHsKICAgICAgICAgV1RGOjpsb2FkTG9h
ZEZlbmNlKCk7CiAgICAgICAgIAogICAgICAgICBDYWxsRWRnZUxpc3QgZWRnZXMgPSBzdHViLT5l
ZGdlcygpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRnIKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZXMuZmlyc3QoKS5jb3VudCgp
ID49IGVkZ2VzLmxhc3QoKS5jb3VudCgpKTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSB0b3Rh
bENhbGxzVG9Lbm93biA9IDA7Ci0gICAgICAgIGRvdWJsZSB0b3RhbENhbGxzVG9Vbmtub3duID0g
Y2FsbExpbmtJbmZvLnNsb3dQYXRoQ291bnQ7CisgICAgICAgIGRvdWJsZSB0b3RhbENhbGxzVG9V
bmtub3duID0gY2FsbExpbmtJbmZvLnNsb3dQYXRoQ291bnQoKTsKICAgICAgICAgQ2FsbFZhcmlh
bnRMaXN0IHZhcmlhbnRzOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVkZ2VzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgICAgICBDYWxsRWRnZSBlZGdlID0gZWRnZXNbaV07CkBAIC0y
MTIsMTQgKzIxMiwxNCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
CiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0OwogICAgIAotICAgIGlmIChKU0Z1bmN0
aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpIHsKKyAgICBp
ZiAoSlNGdW5jdGlvbiogdGFyZ2V0ID0gY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlKCkpIHsK
ICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCh0YXJnZXQpOwotICAgICAgICBpZiAoY2FsbExp
bmtJbmZvLmhhc1NlZW5DbG9zdXJlKQorICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmhhc1NlZW5D
bG9zdXJlKCkpCiAgICAgICAgICAgICB2YXJpYW50ID0gdmFyaWFudC5kZXNwZWNpZmllZENsb3N1
cmUoKTsKICAgICAgICAgcmVzdWx0Lm1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0K
ICAgICAKLSAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9ICEhY2FsbExpbmtJbmZvLnNs
b3dQYXRoQ291bnQ7CisgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIWNhbGxMaW5r
SW5mby5zbG93UGF0aENvdW50KCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ2LDcg
KzI0Niw3IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKICAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZGZnQ29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
OwogICAgIGZvciAoYXV0byBpdGVyID0gZGZnQ29kZUJsb2NrLT5jYWxsTGlua0luZm9zQmVnaW4o
KTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKippdGVy
OwotICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBpbmZvLmNvZGVPcmlnaW47CisgICAg
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGluZm8uY29kZU9yaWdpbigpOwogICAgICAgICAK
ICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGFkIGFscmVhZHkgcHJldmlvdXNseSBtYWRlIGEgdGVy
cmlibGUgbWlzdGFrZSBpbiB0aGUgRlRMIGZvciB0aGlzCiAgICAgICAgIC8vIGNvZGUgb3JpZ2lu
LiBOb3RlIHRoYXQgdGhpcyBpcyBhcHByb3hpbWF0ZSBiZWNhdXNlIHdlIGNvdWxkIGhhdmUgYSBt
b25vdmFyaWFudApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVERkdTdGF0dXNlcygKICAgICAgICAgCiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKGRmZ0NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1h
cC5hZGQoaW5mby5jb2RlT3JpZ2luLCBjb21wdXRlRm9yKGxvY2tlciwgZGZnQ29kZUJsb2NrLCBp
bmZvLCBleGl0U2l0ZURhdGEpKTsKKyAgICAgICAgICAgIG1hcC5hZGQoaW5mby5jb2RlT3JpZ2lu
KCksIGNvbXB1dGVGb3IobG9ja2VyLCBkZmdDb2RlQmxvY2ssIGluZm8sIGV4aXRTaXRlRGF0YSkp
OwogICAgICAgICB9CiAgICAgfQogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxODU5MjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKIGNsYXNzIEludGVybmFs
RnVuY3Rpb247CiBjbGFzcyBKU0Z1bmN0aW9uOwogY2xhc3MgU3RydWN0dXJlOwotc3RydWN0IENh
bGxMaW5rSW5mbzsKK2NsYXNzIENhbGxMaW5rSW5mbzsKIAogY2xhc3MgQ2FsbExpbmtTdGF0dXMg
ewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDE4NTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsNyArNTI4LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnByaW50Q2FsbE9wKFByaW50U3RyZWFtJgogICAgICAgICB9CiAjaWYgRU5B
QkxFKEpJVCkKICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IG1hcC5nZXQoQ29kZU9y
aWdpbihsb2NhdGlvbikpKSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBpbmZv
LT5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9
IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICBpZiAodGFyZ2V0KQogICAgICAg
ICAgICAgICAgIG91dC5wcmludGYoIiBqaXQoJXAsIGV4ZWMgJXApIiwgdGFyZ2V0LCB0YXJnZXQt
PmV4ZWN1dGFibGUoKSk7CiAgICAgICAgIH0KQEAgLTI3NzYsNyArMjc3Niw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpyZXNldFN0dWJEdXJpbmdHQ0ludGVybmEKIENhbGxMaW5rSW5mbyogQ29kZUJsb2Nr
OjpnZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAg
IGZvciAoYXV0byBpdGVyID0gbV9jYWxsTGlua0luZm9zLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVy
KSB7Ci0gICAgICAgIGlmICgoKml0ZXIpLT5jb2RlT3JpZ2luID09IENvZGVPcmlnaW4oaW5kZXgp
KQorICAgICAgICBpZiAoKCppdGVyKS0+Y29kZU9yaWdpbigpID09IENvZGVPcmlnaW4oaW5kZXgp
KQogICAgICAgICAgICAgcmV0dXJuICppdGVyOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAxODU5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDkgKzI0OCw5IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgICAgIGluZm8uc3BlY2lhbGl6YXRp
b25LaW5kKCksCiAgICAgICAgICAgICBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsK
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5tX3Nsb3dDYWxsLCBGdW5jdGlvblB0ciht
X3ZtLT5nZXRDVElTdHViKGdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsK
LSAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZO
ZWFyQ2FsbChyZWNvcmQubV9zbG93Q2FsbCk7Ci0gICAgICAgIGluZm8uaG90UGF0aEJlZ2luID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC5tX3RhcmdldFRvQ2hlY2spOwotICAgICAgICBp
bmZvLmhvdFBhdGhPdGhlciA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5t
X2Zhc3RDYWxsKTsKKyAgICAgICAgaW5mby5zZXRDYWxsTG9jYXRpb25zKGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKHJlY29yZC5tX3Nsb3dDYWxsKSwKKyAgICAgICAgICAgIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihyZWNvcmQubV90YXJnZXRUb0NoZWNrKSwKKyAgICAgICAgICAgIGxpbmtC
dWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5tX2Zhc3RDYWxsKSk7CiAgICAgfQogICAg
IAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmsgPSB2bSgpLT5nZXRDVElT
dHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAko
cmV2aXNpb24gMTg1OTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgICAgICAgICAgICAgIGJh
c2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4
KGNhbGxCeXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5r
SW5mbyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBjYWxsTGlua0lu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAg
anVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTg1OTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI5LDkg
KzgyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBEYXRh
Rm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAKLSAgICBpbmZvLT5jYWxs
VHlwZSA9IGNhbGxUeXBlOwotICAgIGluZm8tPmNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7Ci0gICAgaW5mby0+Y2FsbGVlR1BSID0gY2FsbGVlUGF5bG9hZEdQUjsKKyAgICBpbmZv
LT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9h
ZEdQUik7CiAgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9D
aGVjaywgaW5mbyk7CiAgICAgCiAgICAgLy8gSWYgd2Ugd2VyZSB2YXJhcmdzLCB0aGVuIGFmdGVy
IHRoZSBjYWxscyBhcmUgZG9uZSwgd2UgbmVlZCB0byByZWVzdGFibGlzaCBvdXIgc3RhY2sgcG9p
bnRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTg1OTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzkyLDEwICs3
OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgCiAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKUywg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAKLSAgICBjYWxsTGlua0luZm8tPmNh
bGxUeXBlID0gY2FsbFR5cGU7Ci0gICAgY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luID0gbV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlR1BSID0g
Y2FsbGVlR1BSOwotICAgIAorICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBt
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMsICBjYWxsZWVHUFIpOyAgICAKICAgICBtX2pp
dC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsTGlua0lu
Zm8pOwogICAgIAogICAgIC8vIElmIHdlIHdlcmUgdmFyYXJncywgdGhlbiBhZnRlciB0aGUgY2Fs
bHMgYXJlIGRvbmUsIHdlIG5lZWQgdG8gcmVlc3RhYmxpc2ggb3VyIHN0YWNrIHBvaW50ZXIuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpTQ2FsbEJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsQmFzZS5jcHAJKHJldmlz
aW9uIDE4NTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDE0ICs3NCwxMCBAQCB2b2lkIEpTQ2FsbEJhc2U6Omxp
bmsoVk0mIHZtLCBMaW5rQnVmZmVyCiAgICAgCiAgICAgbGlua0J1ZmZlci5saW5rKAogICAgICAg
ICBtX3Nsb3dDYWxsLCBGdW5jdGlvblB0cih2bS5nZXRDVElTdHViKGdlbmVyYXRvcikuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICAKLSAgICBtX2NhbGxMaW5rSW5mby0+aXNGVEwg
PSB0cnVlOwotICAgIG1fY2FsbExpbmtJbmZvLT5jYWxsVHlwZSA9IG1fdHlwZTsKLSAgICBtX2Nh
bGxMaW5rSW5mby0+Y29kZU9yaWdpbiA9IG1fb3JpZ2luOwotICAgIG1fY2FsbExpbmtJbmZvLT5j
YWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChtX3Nsb3dD
YWxsKTsKLSAgICBtX2NhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2luID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKG1fdGFyZ2V0VG9DaGVjayk7Ci0gICAgbV9jYWxsTGlua0luZm8tPmhvdFBhdGhPdGhl
ciA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fZmFzdENhbGwpOwotICAgIG1fY2Fs
bExpbmtJbmZvLT5jYWxsZWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKworICAgIG1fY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGxGcm9tRlRMKG1fdHlwZSwgbV9vcmlnaW4sIGxpbmtCdWZmZXIubG9jYXRp
b25PZk5lYXJDYWxsKG1fc2xvd0NhbGwpLAorICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
bV90YXJnZXRUb0NoZWNrKSwgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwobV9mYXN0Q2Fs
bCksCisgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHVi
Um91dGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQWNjZXNz
b3JDYWxsSklUU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMTg1OTIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdHJ1Y3QgQ2FsbExpbmtJ
bmZvOworY2xhc3MgQ2FsbExpbmtJbmZvOwogCiAvLyBKSVQgc3R1YiByb3V0aW5lIGZvciB1c2Ug
YnkgSmF2YVNjcmlwdCBhY2Nlc3NvcnMuIFRoZXNlIHdpbGwgYmUgbWFraW5nIGEgSlMKIC8vIGNh
bGwgdGhhdCByZXF1aXJlcyBpbmxpbmUgY2FjaGluZy4gCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAxODU5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw5ICs2NzgsOSBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCk7ICsraSkgewogICAgICAgICBDYWxsQ29tcGls
YXRpb25JbmZvJiBjb21waWxhdGlvbkluZm8gPSBtX2NhbGxDb21waWxhdGlvbkluZm9baV07CiAg
ICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpjb21waWxhdGlvbkluZm8uY2FsbExpbmtJbmZv
OwotICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2ZOZWFyQ2FsbChjb21waWxhdGlvbkluZm8uY2FsbFJldHVybkxvY2F0aW9uKTsKLSAgICAgICAg
aW5mby5ob3RQYXRoQmVnaW4gPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGNvbXBpbGF0aW9uSW5m
by5ob3RQYXRoQmVnaW4pOwotICAgICAgICBpbmZvLmhvdFBhdGhPdGhlciA9IHBhdGNoQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbChjb21waWxhdGlvbkluZm8uaG90UGF0aE90aGVyKTsKKyAgICAg
ICAgaW5mby5zZXRDYWxsTG9jYXRpb25zKHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChj
b21waWxhdGlvbkluZm8uY2FsbFJldHVybkxvY2F0aW9uKSwKKyAgICAgICAgICAgIHBhdGNoQnVm
ZmVyLmxvY2F0aW9uT2YoY29tcGlsYXRpb25JbmZvLmhvdFBhdGhCZWdpbiksCisgICAgICAgICAg
ICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoY29tcGlsYXRpb25JbmZvLmhvdFBhdGhP
dGhlcikpOwogICAgIH0KIAogICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVN
YXBFbmNvZGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxODU5MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw2ICs1Miw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFycmF5QWxsb2NhdGlv
blByb2ZpbGU7CisgICAgY2xhc3MgQ2FsbExpbmtJbmZvOwogICAgIGNsYXNzIENvZGVCbG9jazsK
ICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSklUOwpAQCAtNjMsNyAr
NjQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBT
dHJ1Y3R1cmVDaGFpbjsKIAotICAgIHN0cnVjdCBDYWxsTGlua0luZm87CiAgICAgc3RydWN0IElu
c3RydWN0aW9uOwogICAgIHN0cnVjdCBPcGVyYW5kVHlwZXM7CiAgICAgc3RydWN0IFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE4NTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDEyICsxMzIs
MTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShJbnN0cgogCiAgICAgLy8g
UHJvZmlsZSB0aGUgYXJndW1lbnQgY291bnQuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCksIHJlZ1QyKTsKLSAgICBsb2FkOCgmaW5mby0+bWF4TnVtQXJndW1l
bnRzLCByZWdUMCk7CisgICAgbG9hZDgoaW5mby0+YWRkcmVzc09mTWF4TnVtQXJndW1lbnRzKCks
IHJlZ1QwKTsKICAgICBKdW1wIG5vdEJpZ2dlc3QgPSBicmFuY2gzMihBYm92ZSwgcmVnVDAsIHJl
Z1QyKTsKICAgICBKdW1wIG5vdFNhdHVyYXRlZCA9IGJyYW5jaDMyKEJlbG93T3JFcXVhbCwgcmVn
VDIsIFRydXN0ZWRJbW0zMigyNTUpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigyNTUpLCByZWdU
Mik7CiAgICAgbm90U2F0dXJhdGVkLmxpbmsodGhpcyk7Ci0gICAgc3RvcmU4KHJlZ1QyLCAmaW5m
by0+bWF4TnVtQXJndW1lbnRzKTsKKyAgICBzdG9yZTgocmVnVDIsIGluZm8tPmFkZHJlc3NPZk1h
eE51bUFyZ3VtZW50cygpKTsKICAgICBub3RCaWdnZXN0LmxpbmsodGhpcyk7CiAgICAgCiAgICAg
Ly8gSW5pdGlhbGl6ZSAndGhpcycuCkBAIC0yNDMsOSArMjQzLDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAog
ICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0lu
ZGV4KTsKLSAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bj
b2RlSUQpOwotICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZz
ZXQpOwotICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOworICAgIGluZm8tPnNldFVwQ2FsbChD
YWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
T2Zmc2V0KSwgcmVnVDApOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQ2FsbENv
bXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZv
SW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAg
bV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8gPSBp
bmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAx
ODU5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NG
cmFtZShJbnN0cgogCiAgICAgLy8gUHJvZmlsZSB0aGUgYXJndW1lbnQgY291bnQuCiAgICAgbG9h
ZDMyKEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIHJlZ1QyKTsKLSAgICBsb2Fk
OCgmaW5mby0+bWF4TnVtQXJndW1lbnRzLCByZWdUMCk7CisgICAgbG9hZDgoaW5mby0+YWRkcmVz
c09mTWF4TnVtQXJndW1lbnRzKCksIHJlZ1QwKTsKICAgICBKdW1wIG5vdEJpZ2dlc3QgPSBicmFu
Y2gzMihBYm92ZSwgcmVnVDAsIHJlZ1QyKTsKICAgICBKdW1wIG5vdFNhdHVyYXRlZCA9IGJyYW5j
aDMyKEJlbG93T3JFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMigyNTUpKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMigyNTUpLCByZWdUMik7CiAgICAgbm90U2F0dXJhdGVkLmxpbmsodGhpcyk7Ci0g
ICAgc3RvcmU4KHJlZ1QyLCAmaW5mby0+bWF4TnVtQXJndW1lbnRzKTsKKyAgICBzdG9yZTgocmVn
VDIsIGluZm8tPmFkZHJlc3NPZk1heE51bUFyZ3VtZW50cygpKTsKICAgICBub3RCaWdnZXN0Lmxp
bmsodGhpcyk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSAndGhpcycuCkBAIC0xNzgsOSArMTc4
LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNs
b3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6
ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5r
SW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwotICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwotICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwor
ICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogICAgIG1fY2FsbENvbXBpbGF0
aW9uSW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2NhbGxDb21waWxh
dGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtl
ZEZ1bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0lu
ZGV4XS5jYWxsTGlua0luZm8gPSBpbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODU5MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNyAr
Nzk1LDcgQEAgaW5saW5lIGNoYXIqIGxpbmtGb3IoCiAgICAgICAgIH0KICAgICAgICAgY29kZUJs
b2NrID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgICAgIEFy
aXR5Q2hlY2tNb2RlIGFyaXR5OwotICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby0+Y2FsbFR5cGUgPT0gQ2FsbExpbmtJbmZvOjpDYWxs
VmFyYXJncyB8fCBjYWxsTGlua0luZm8tPmNhbGxUeXBlID09IENhbGxMaW5rSW5mbzo6Q29uc3Ry
dWN0VmFyYXJncykKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KSB8fCBjYWxsTGlua0luZm8tPmNhbGxUeXBlKCkgPT0gQ2FsbExpbmtJbmZvOjpDYWxsVmFyYXJn
cyB8fCBjYWxsTGlua0luZm8tPmNhbGxUeXBlKCkgPT0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3RW
YXJhcmdzKQogICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcAkocmV2aXNpb24gMTg1OTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDcgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmsoUmVwYXRjaAogewogICAg
IGlmIChtX2NhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2Vt
Ymx5KCkpCi0gICAgICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBh
dCAiLCBtX2NhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCAiLCAiLCBtX2NhbGxMaW5r
SW5mby0+Y29kZU9yaWdpbiwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcg
cG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9u
KCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIpOwogCiAgICAgICAg
IG1fY2FsbExpbmtJbmZvLT51bmxpbmsocmVwYXRjaEJ1ZmZlcik7CiAgICAgfQpAQCAtNTcsNyAr
NTcsNyBAQCB2b2lkIFBvbHltb3JwaGljQ2FsbE5vZGU6OnVubGluayhSZXBhdGNoCiB2b2lkIFBv
bHltb3JwaGljQ2FsbE5vZGU6OmNsZWFyQ2FsbExpbmtJbmZvKCkKIHsKICAgICBpZiAoT3B0aW9u
czo6c2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIGNhbGwgbGlu
ayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0
dXJuTG9jYXRpb24sICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNh
bGwgYXQgIiwgbV9jYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLCAiLCAiLCBtX2Nh
bGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCAiXG4iKTsKIAogICAgIG1fY2FsbExpbmtJbmZvID0g
bnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDE4NTkyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IENh
bGxMaW5rSW5mbzsKK2NsYXNzIENhbGxMaW5rSW5mbzsKIAogY2xhc3MgUG9seW1vcnBoaWNDYWxs
Tm9kZSA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxQb2x5bW9ycGhpY0NhbGxOb2RlPiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9seW1vcnBoaWNDYWxsTm9kZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE4NTkyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
OCw5ICs0NDgsNyBAQCBzdGF0aWMgYm9vbCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgICAgICAgICAg
Ly8gc2hyaW5rIGl0IGFmdGVyLgogICAgICAgICAgICAgCiAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKLSAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNhbGw7Ci0gICAgICAgICAgICBjYWxs
TGlua0luZm8tPmNvZGVPcmlnaW4gPSBzdHViSW5mby5jb2RlT3JpZ2luOwotICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLT5jYWxsZWVHUFIgPSBsb2FkZWRWYWx1ZUdQUjsKKyAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgc3R1YkluZm8uY29kZU9y
aWdpbiwgbG9hZGVkVmFsdWVHUFIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIApAQCAtNTg0LDkgKzU4Miw5IEBA
IHN0YXRpYyBib29sIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
b3BlcmF0aW9uQ2FsbCwgY3VzdG9tKTsKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhoYW5kbGVy
Q2FsbCwgbG9va3VwRXhjZXB0aW9uSGFuZGxlcik7CiAgICAgfSBlbHNlIGlmIChraW5kID09IENh
bGxHZXR0ZXIgfHwga2luZCA9PSBDYWxsU2V0dGVyKSB7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+
aG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGZhc3RQYXRoQ2Fs
bCk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2luID0gcGF0Y2hCdWZmZXIubG9j
YXRpb25PZihhZGRyZXNzT2ZMaW5rRnVuY3Rpb25DaGVjayk7Ci0gICAgICAgIGNhbGxMaW5rSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNs
b3dQYXRoQ2FsbCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucyhwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd1BhdGhDYWxsKSwKKyAgICAgICAgICAgIHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2YoYWRkcmVzc09mTGlua0Z1bmN0aW9uQ2hlY2spLAorICAgICAg
ICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGZhc3RQYXRoQ2FsbCkpOwogCiAg
ICAgICAgIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciA9IGxpbmtUaHVua0dlbmVyYXRvckZvcigK
ICAgICAgICAgICAgIENvZGVGb3JDYWxsLCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVk
KTsKQEAgLTE2MDYsNyArMTYwNCw3IEBAIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKAogICAgIFJl
cGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKIHsKICAgICByZXBhdGNoQnVmZmVyLnJl
bGluaygKLSAgICAgICAgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgdm0tPmdldENU
SVN0dWIoZ2VuZXJhdG9yKS5jb2RlKCkpOworICAgICAgICBjYWxsTGlua0luZm8uY2FsbFJldHVy
bkxvY2F0aW9uKCksIHZtLT5nZXRDVElTdHViKGdlbmVyYXRvcikuY29kZSgpKTsKIH0KIAogc3Rh
dGljIHZvaWQgbGlua1Nsb3dGb3IoCkBAIC0xNjIxLDcgKzE2MTksNyBAQCB2b2lkIGxpbmtGb3Io
CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLAogICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9k
ZSByZWdpc3RlcnMpCiB7Ci0gICAgQVNTRVJUKCFjYWxsTGlua0luZm8uc3R1Yik7CisgICAgQVNT
RVJUKCFjYWxsTGlua0luZm8uc3R1YigpKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNhbGxlckNv
ZGVCbG9jayA9IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOwogCkBAIC0xNjMwLDEx
ICsxNjI4LDExIEBAIHZvaWQgbGlua0ZvcigKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZm
ZXIoY2FsbGVyQ29kZUJsb2NrKTsKICAgICAKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xp
bmtlZCgpKTsKLSAgICBjYWxsTGlua0luZm8uY2FsbGVlLnNldChleGVjLT5jYWxsZXJGcmFtZSgp
LT52bSgpLCBjYWxsTGlua0luZm8uaG90UGF0aEJlZ2luLCBjYWxsZXJDb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBjYWxsZWUpOwotICAgIGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5z
ZXQoZXhlYy0+Y2FsbGVyRnJhbWUoKS0+dm0oKSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgY2FsbGVlKTsKKyAgICBjYWxsTGlua0luZm8uc2V0Q2FsbGVlKGV4ZWMtPmNhbGxl
ckZyYW1lKCktPnZtKCksIGNhbGxMaW5rSW5mby5ob3RQYXRoQmVnaW4oKSwgY2FsbGVyQ29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICBjYWxsTGlua0luZm8uc2V0TGFz
dFNlZW5DYWxsZWUoZXhlYy0+Y2FsbGVyRnJhbWUoKS0+dm0oKSwgY2FsbGVyQ29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKICAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5
Rm9yKGNhbGxlckNvZGVCbG9jaykpCi0gICAgICAgIGRhdGFMb2coIkxpbmtpbmcgY2FsbCBpbiAi
LCAqY2FsbGVyQ29kZUJsb2NrLCAiIGF0ICIsIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luLCAiIHRv
ICIsIHBvaW50ZXJEdW1wKGNhbGxlZUNvZGVCbG9jayksICIsIGVudHJ5cG9pbnQgYXQgIiwgY29k
ZVB0ciwgIlxuIik7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLmhvdFBh
dGhPdGhlciwgY29kZVB0cik7CisgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgY2FsbCBpbiAiLCAq
Y2FsbGVyQ29kZUJsb2NrLCAiIGF0ICIsIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCksICIgdG8g
IiwgcG9pbnRlckR1bXAoY2FsbGVlQ29kZUJsb2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBjb2Rl
UHRyLCAiXG4iKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uaG90UGF0
aE90aGVyKCksIGNvZGVQdHIpOwogICAgIAogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCiAgICAg
ICAgIGNhbGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLT5jYWxsZXJGcmFtZSgp
LCAmY2FsbExpbmtJbmZvKTsKQEAgLTE2NjUsMTIgKzE2NjMsMTIgQEAgc3RhdGljIHZvaWQgcmV2
ZXJ0Q2FsbCgKICAgICBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBWTSogdm0sIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiB7CiAgICAg
cmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaCgK
LSAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0
ZXIoY2FsbExpbmtJbmZvLmhvdFBhdGhCZWdpbiksCi0gICAgICAgIHN0YXRpY19jYXN0PE1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklEPihjYWxsTGlua0luZm8uY2FsbGVlR1BSKSwgMCk7CisgICAg
ICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGNh
bGxMaW5rSW5mby5ob3RQYXRoQmVnaW4oKSksCisgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEPihjYWxsTGlua0luZm8uY2FsbGVlR1BSKCkpLCAwKTsKICAgICBs
aW5rU2xvd0ZvcihyZXBhdGNoQnVmZmVyLCB2bSwgY2FsbExpbmtJbmZvLCBnZW5lcmF0b3IpOwot
ICAgIGNhbGxMaW5rSW5mby5oYXNTZWVuU2hvdWxkUmVwYXRjaCA9IGZhbHNlOwotICAgIGNhbGxM
aW5rSW5mby5jYWxsZWUuY2xlYXIoKTsKLSAgICBjYWxsTGlua0luZm8uc3R1Yi5jbGVhcigpOwor
ICAgIGNhbGxMaW5rSW5mby5jbGVhclNlZW4oKTsKKyAgICBjYWxsTGlua0luZm8uY2xlYXJDYWxs
ZWUoKTsKKyAgICBjYWxsTGlua0luZm8uY2xlYXJTdHViKCk7CiAgICAgaWYgKGNhbGxMaW5rSW5m
by5pc09uTGlzdCgpKQogICAgICAgICBjYWxsTGlua0luZm8ucmVtb3ZlKCk7CiB9CkBAIC0xNjgw
LDcgKzE2NzgsNyBAQCB2b2lkIHVubGlua0ZvcigKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSByZWdpc3RlcnMpCiB7CiAgICAgaWYgKE9w
dGlvbnM6OnNob3dEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgY2Fs
bCBmcm9tICIsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sICIgaW4gcmVxdWVzdCBm
cm9tICIsIHBvaW50ZXJEdW1wKHJlcGF0Y2hCdWZmZXIuY29kZUJsb2NrKCkpLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiVW5saW5raW5nIGNhbGwgZnJvbSAiLCBjYWxsTGlua0luZm8uY2FsbFJl
dHVybkxvY2F0aW9uKCksICIgaW4gcmVxdWVzdCBmcm9tICIsIHBvaW50ZXJEdW1wKHJlcGF0Y2hC
dWZmZXIuY29kZUJsb2NrKCkpLCAiXG4iKTsKICAgICAKICAgICByZXZlcnRDYWxsKAogICAgICAg
ICByZXBhdGNoQnVmZmVyLCByZXBhdGNoQnVmZmVyLmNvZGVCbG9jaygpLT52bSgpLCBjYWxsTGlu
a0luZm8sCkBAIC0xNzI2LDkgKzE3MjQsOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAg
ICAgVk0qIHZtID0gY2FsbGVyQ29kZUJsb2NrLT52bSgpOwogICAgIAogICAgIENhbGxWYXJpYW50
TGlzdCBsaXN0OwotICAgIGlmIChQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSogc3R1YiA9IGNh
bGxMaW5rSW5mby5zdHViLmdldCgpKQorICAgIGlmIChQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZSogc3R1YiA9IGNhbGxMaW5rSW5mby5zdHViKCkpCiAgICAgICAgIGxpc3QgPSBzdHViLT52YXJp
YW50cygpOwotICAgIGVsc2UgaWYgKEpTRnVuY3Rpb24qIG9sZENhbGxlZSA9IGNhbGxMaW5rSW5m
by5jYWxsZWUuZ2V0KCkpCisgICAgZWxzZSBpZiAoSlNGdW5jdGlvbiogb2xkQ2FsbGVlID0gY2Fs
bExpbmtJbmZvLmNhbGxlZSgpKQogICAgICAgICBsaXN0ID0gQ2FsbFZhcmlhbnRMaXN0eyBDYWxs
VmFyaWFudChvbGRDYWxsZWUpIH07CiAgICAgCiAgICAgbGlzdCA9IHZhcmlhbnRMaXN0V2l0aFZh
cmlhbnQobGlzdCwgbmV3VmFyaWFudCk7CkBAIC0xNzQ2LDcgKzE3NDQsNyBAQCB2b2lkIGxpbmtQ
b2x5bW9ycGhpY0NhbGwoCiAgICAgfQogICAgIAogICAgIGlmIChpc0Nsb3N1cmVDYWxsKQotICAg
ICAgICBjYWxsTGlua0luZm8uaGFzU2VlbkNsb3N1cmUgPSB0cnVlOworICAgICAgICBjYWxsTGlu
a0luZm8uc2V0SGFzU2VlbkNsb3N1cmUoKTsKICAgICAKICAgICBWZWN0b3I8UG9seW1vcnBoaWND
YWxsQ2FzZT4gY2FsbENhc2VzOwogICAgIApAQCAtMTc2MCw3ICsxNzU4LDcgQEAgdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKAogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB3ZSBjYW5u
b3QgaGFuZGxlIGEgY2FsbGVlLCBhc3N1bWUgdGhhdCBpdCdzIGJldHRlciBmb3IgdGhpcyB3aG9s
ZSB0aGluZyB0byBiZSBhCiAgICAgICAgICAgICAvLyB2aXJ0dWFsIGNhbGwuCi0gICAgICAgICAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNp
emVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby5jYWxsVHlw
ZSA9PSBDYWxsTGlua0luZm86OkNhbGxWYXJhcmdzIHx8IGNhbGxMaW5rSW5mby5jYWxsVHlwZSA9
PSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3MpIHsKKyAgICAgICAgICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmNhbGxUeXBlKCkgPT0gQ2Fs
bExpbmtJbmZvOjpDYWxsVmFyYXJncyB8fCBjYWxsTGlua0luZm8uY2FsbFR5cGUoKSA9PSBDYWxs
TGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3MpIHsKICAgICAgICAgICAgICAgICBsaW5rVmlydHVh
bEZvcihleGVjLCBjYWxsTGlua0luZm8sIENvZGVGb3JDYWxsLCByZWdpc3RlcnMpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE3ODAsNyArMTc3OCw3IEBAIHZv
aWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBHUFJSZWcgY2FsbGVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihjYWxsTGlua0luZm8uY2Fs
bGVlR1BSKTsKKyAgICBHUFJSZWcgY2FsbGVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihjYWxs
TGlua0luZm8uY2FsbGVlR1BSKCkpOwogICAgIAogICAgIENDYWxsSGVscGVycyBzdHViSml0KHZt
LCBjYWxsZXJDb2RlQmxvY2spOwogICAgIApAQCAtMTg5NSw3ICsxODkzLDcgQEAgdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKAogICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVnVDEpOwogI2VuZGlmCiAgICAgc3R1
YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY2FsbExpbmtJbmZvKSwgR1BS
SW5mbzo6cmVnVDIpOwotICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSwg
R1BSSW5mbzo6cmVnVDQpOworICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpLCBHUFJJbmZvOjpyZWdUNCk7CiAgICAgCiAgICAgc3R1YkppdC5yZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpyZWdUNCk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wIHNsb3cgPSBzdHViSml0Lmp1bXAoKTsKQEAgLTE5MTIsMTYgKzE5MTAsMTYgQEAgdm9pZCBs
aW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICAgICAgY2FsbFRvQ29kZVB0ci5jYWxsLCBGdW5j
dGlvblB0cihjYWxsVG9Db2RlUHRyLmNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAg
IH0KICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNhbGxlckNvZGVCbG9jay0+aml0
VHlwZSgpKSkKLSAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoMCkpOworICAgICAgICBwYXRjaEJ1ZmZlci5s
aW5rKGRvbmUsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5sYWJlbEF0T2Zmc2V0
KDApKTsKICAgICBlbHNlCi0gICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2FsbExpbmtJ
bmZvLmhvdFBhdGhPdGhlci5sYWJlbEF0T2Zmc2V0KDApKTsKKyAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhkb25lLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCkubGFiZWxBdE9mZnNldCgwKSk7
CiAgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJ
U3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3JGb3IocmVnaXN0ZXJzKSkuY29k
ZSgpKSk7CiAgICAgCiAgICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBzdHVi
Um91dGluZSA9IGFkb3B0UmVmKG5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAg
ICAgRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIHBhdGNo
QnVmZmVyLAogICAgICAgICAgICAgKCJQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAsIHRhcmdldHMgJXMiLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqY2Fs
bGVyQ29kZUJsb2NrKS5kYXRhKCksIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFi
ZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAgICAgIHRvQ1N0
cmluZygqY2FsbGVyQ29kZUJsb2NrKS5kYXRhKCksIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24oKS5sYWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAg
ICAgICAgdG9DU3RyaW5nKGxpc3REdW1wKGNhbGxDYXNlcykpLmRhdGEoKSkpLAogICAgICAgICAq
dm0sIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGV4ZWMtPmNhbGxlckZyYW1l
KCksIGNhbGxMaW5rSW5mbywgY2FsbENhc2VzLAogICAgICAgICBXVEY6Om1vdmUoZmFzdENvdW50
cykpKTsKQEAgLTE5MjksMTQgKzE5MjcsMTQgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAog
ICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOwogICAgIAog
ICAgIHJlcGF0Y2hCdWZmZXIucmVwbGFjZVdpdGhKdW1wKAotICAgICAgICBSZXBhdGNoQnVmZmVy
OjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihjYWxsTGlua0luZm8uaG90UGF0
aEJlZ2luKSwKKyAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRj
aE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLmhvdFBhdGhCZWdpbigpKSwKICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAgICAvLyBUaGlzIGlz
IHdlaXJkLiBUaGUgb3JpZ2luYWwgc2xvdyBwYXRoIHNob3VsZCBubyBsb25nZXIgYmUgcmVhY2hh
YmxlLgogICAgIGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIHZtLCBjYWxsTGlua0luZm8sIENv
ZGVGb3JDYWxsLCByZWdpc3RlcnMpOwogICAgIAogICAgIC8vIElmIHRoZXJlIGhhZCBiZWVuIGEg
cHJldmlvdXMgc3R1YiByb3V0aW5lLCB0aGF0IG9uZSB3aWxsIGRpZSBhcyBzb29uIGFzIHRoZSBH
QyBydW5zIGFuZCBzZWVzCiAgICAgLy8gdGhhdCBpdCdzIG5vIGxvbmdlciBvbiBzdGFjay4KLSAg
ICBjYWxsTGlua0luZm8uc3R1YiA9IHN0dWJSb3V0aW5lLnJlbGVhc2UoKTsKKyAgICBjYWxsTGlu
a0luZm8uc2V0U3R1YihzdHViUm91dGluZS5yZWxlYXNlKCkpOwogICAgIAogICAgIC8vIFRoZSBj
YWxsIGxpbmsgaW5mbyBubyBsb25nZXIgaGFzIGEgY2FsbCBjYWNoZSBhcGFydCBmcm9tIHRoZSBq
dW1wIHRvIHRoZSBwb2x5bW9ycGhpYyBjYWxsCiAgICAgLy8gc3R1Yi4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE4NTky
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgdmlydHVhbEZvclQKICAgICAvLyBzbG93IHBhdGggZXhlY3V0aW9uIGZvciB0aGUgcHJvZmls
ZXIuCiAgICAgaml0LmFkZDMyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBPQkpFQ1Rf
T0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCBzbG93UGF0aENvdW50KSkpOworICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93
UGF0aENvdW50KCkpKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGZv
ciBlbGltaW5hdGluZyB0aGVzZSBjaGVja3MuIEluIG1hbnkgY2FzZXMsCiAgICAgLy8gdGhlIERG
RyBrbm93cyB0aGF0IHRoZSB2YWx1ZSBpcyBkZWZpbml0ZWx5IGEgY2VsbCwgb3IgZGVmaW5pdGVs
eSBhIGZ1bmN0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255520</attachid>
            <date>2015-06-24 15:45:55 -0700</date>
            <delta_ts>2015-06-24 15:45:55 -0700</delta_ts>
            <desc>Patch after CallLinkInfo refactoring was landed separately.  Reviewed in person.</desc>
            <filename>146285-3.patch</filename>
            <type>text/plain</type>
            <size>3388</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1OTMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE1LTA2LTI0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoIG9uIGdvZy5jb20gZHVlIHRvIFBvbHltb3JwaGljQ2FsbE5vZGUncyBoYXZpbmcg
c3RhbGUgcmVmZXJlbmNlcyB0byBDYWxsTGlua0luZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IEZp
bGlwIFBpemxvLgorCisgICAgICAgIENhbGxMaW5rSW5mbydzIGNvbnRhaW4gYSBSZWZQdHIgdG8g
YSBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSwgbmFtZWQgc3R1Yiwgd2hpY2ggY29udGFpbnMK
KyAgICAgICAgYSBjb2xsZWN0aW9uIG9mIFBvbHltb3JwaGljQ2FsbE5vZGUuICBUaG9zZSBQb2x5
bW9ycGhpY0NhbGxOb2RlcyBoYXZlIGEgcmVmZXJlbmNlIGJhY2sgdG8gdGhlCisgICAgICAgIENh
bGxMaW5rSW5mby4gIFdoZW4gYSBDYWxsTGlua0luZm8gcmVwbGFjZXMgb3IgY2xlYXJzICJzdHVi
IiwgdGhlIHJlZiBjb3VudCBvZiB0aGUKKyAgICAgICAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUgaXMgZGVjcmVtZW50ZWQgYXMgZXhwZWN0ZWQsIGJ1dCBzaW5jZSBpdCBpbmhlcml0cyBmcm9t
CisgICAgICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSwgaXQgaXNuJ3QgYWN0dWFsbHkgZGVsZXRl
ZCB1bnRpbCBHQy4gIEluIHRoZSBtZWFuIHRpbWUsIHRoZSBvcmlnaW5hbAorICAgICAgICBDYWxs
TGlua0luZm8gY2FuIGdvIGF3YXkuICBJZiBQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmsoKSBp
cyBjYWxsZWQgYXQgdGhhdCBwb2ludCwKKyAgICAgICAgaXQgd2lsbCB0cnkgdG8gdW5saW5rIGEg
bm93IGRlbGV0ZWQgQ2FsbExpbmtJbmZvIGFuZCBjcmFzaCBhcyBhIHJlc3VsdC4KKworICAgICAg
ICBUaGUgZml4IGlzIHRvIGNsZWFyIHRoZSBDYWxsTGlua0luZm8gcmVmZXJlbmNlcyBmcm9tIGFu
eSBQb2x5bW9ycGhpY0NhbGxOb2RlIG9iamVjdHMgd2hlbgorICAgICAgICB3aGVuIHdlIHNldCBh
IG5ldyBzdHViIG9yIGNsZWFyIGFuIGV4aXN0aW5nIHN0dWIgZm9yIGEgQ2FsbExpbmtJbmZvLiAg
VGhpcyBpcyBkb25lIGJ5CisgICAgICAgIGNhbGxpbmcgUG9seW1vcnBoaWNDYWxsTm9kZTo6Y2xl
YXJDYWxsTm9kZXNGb3IoKSBvbiB0aGUgb2xkIHN0dWIuCisKKyAgICAgICAgVGhlIHByaW9yIGNv
ZGUgd291bGQgb25seSBjYWxsIGNsZWFyQ2FsbE5vZGVzRm9yKCkgZnJvbSB0aGUgQ2FsbExpbmtJ
bmZvIGRlc3RydWN0b3IuCisgICAgICAgIFRoaXMgb25seSB0b29rIGNhcmUgb2YgdGhlIGxhc3Qg
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgaGVsZCBpbiB0aGUgQ2FsbExpbmtJbmZvLgorICAg
ICAgICBBbnkgcHJpb3IgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgd291bGQgc3RpbGwgaGF2
ZSBhLCBub3cgYmFkLCByZWZlcmVuY2UgdG8gdGhlIENhbGxMaW5rSW5mby4KKworICAgICAgICBJ
biB0aGUgcHJvY2VzcyBJIHJlZmFjdG9yZWQgQ2FsbExpbmtJbmZvIGZyb20gYSBzdHJ1Y3QgdG8g
YSBjbGFzcyB3aXRoIHByb3BlciBhY2Nlc3NvcnMgYW5kCisgICAgICAgIG1hZGUgYWxsIHRoZSBk
YXRhIGVsZW1lbnRzIHByaXZhdGUuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFyU3R1Yik6IFVwZGF0ZWQgdG8g
Y2FsbCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6Y2xlYXJDYWxsTm9kZXNGb3IoKQorICAg
ICAgICB0byBjbGVhciB0aGUgYmFjayByZWZlcmVuY2VzIHRvIHRoaXMgQ2FsbExpbmtJbmZvLgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86On5DYWxsTGlua0luZm8pOiBNb3ZlZCBjbGVhckNhbGxOb2Rlc0ZvcigpIGNhbGwgdG8g
Y2xlYXJTdHViKCkuCisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0U3R1Yik6IENsZWFy
IGFueSBwcmlvciBzdHViIGJlZm9yZSBjaGFuZ2luZyB0byB0aGUgbmV3IHN0dWIuCisKIDIwMTUt
MDYtMjQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVm
YWN0b3IgQ2FsbExpbmtJbmZvIGZyb20gYSBzdHJ1Y3QgdG8gYSBjbGFzcwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9u
IDE4NTkzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpj
bGVhclN0dWIoKQogICAgIGlmICghc3R1YigpKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3N0
dWItPmNsZWFyQ2FsbE5vZGVzRm9yKHRoaXMpOwogICAgIG1fc3R1Yi5jbGVhcigpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShy
ZXZpc2lvbiAxODU5MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDkgKzY5LDYgQEAgcHVibGljOgogICAgICAg
ICAKICAgICB+Q2FsbExpbmtJbmZvKCkKICAgICB7Ci0gICAgICAgIGlmIChzdHViKCkpCi0gICAg
ICAgICAgICBtX3N0dWItPmNsZWFyQ2FsbE5vZGVzRm9yKHRoaXMpOwotCiAgICAgICAgIGNsZWFy
U3R1YigpOwogCiAgICAgICAgIGlmIChpc09uTGlzdCgpKQpAQCAtMTcwLDYgKzE2Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0U3R1YihQYXNzUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lPiBuZXdTdHViKQogICAgIHsKKyAgICAgICAgY2xlYXJTdHViKCk7CiAgICAgICAgIG1f
c3R1YiA9IG5ld1N0dWI7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>