<?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>140236</bug_id>
          
          <creation_ts>2015-01-07 18:57:45 -0800</creation_ts>
          <short_desc>Make the LLINT and Baseline JIT&apos;s op_create_arguments and op_get_argument_by_val use their lexicalEnvironment operand</short_desc>
          <delta_ts>2015-01-08 16:10:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>140233</dependson>
          <blocked>140097</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1059683</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-07 18:57:45 -0800</bug_when>
    <thetext>After https://webkit.org/b/140233 lands, we can start making use of the lexicalEnvironment operand in the LLINT and Baseline JIT&apos;s implementation of op_create_arguments and op_get_argument_by_val.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059685</commentid>
    <comment_count>1</comment_count>
      <attachid>244233</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-07 19:19:34 -0800</bug_when>
    <thetext>Created attachment 244233
the patch.

This patch is contingent on https://bugs.webkit.org/show_bug.cgi?id=140233 being resolved.  Until then, it will certainly not build, but I&apos;m uploading it to archive the work for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059686</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-07 19:21:07 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Until then, it will certainly not build, but I&apos;m uploading it to archive the work for now.

Correction: it may build, but it will not run correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059753</commentid>
    <comment_count>3</comment_count>
      <attachid>244233</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-07 23:07:39 -0800</bug_when>
    <thetext>Comment on attachment 244233
the patch.

https://bugs.webkit.org/show_bug.cgi?id=140233 is resolved.  This patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059877</commentid>
    <comment_count>4</comment_count>
      <attachid>244233</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-08 11:02:07 -0800</bug_when>
    <thetext>Comment on attachment 244233
the patch.

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

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:767
&gt; +        if (VirtualRegister(lexicalEnvironmentReg).isLocal()) {

The use of isLocal here is confusing. When is the lexical environment ever an argument?

Did you mean to use isValid()?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:769
&gt; +            lexicalEnvironment = exec-&gt;uncheckedR(lexicalEnvironmentReg).Register::lexicalEnvironment();

Why does lexicalEnvironment need explicit name qualification here?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:226
&gt; +    if (VirtualRegister(lexicalEnvironmentReg).isLocal()) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059879</commentid>
    <comment_count>5</comment_count>
      <attachid>244233</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-08 11:09:14 -0800</bug_when>
    <thetext>Comment on attachment 244233
the patch.

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

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:767
&gt;&gt; +        if (VirtualRegister(lexicalEnvironmentReg).isLocal()) {
&gt; 
&gt; The use of isLocal here is confusing. When is the lexical environment ever an argument?
&gt; 
&gt; Did you mean to use isValid()?

I do mean isLocal() because the other value isConstant().  isValid() returns true for both.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:769
&gt;&gt; +            lexicalEnvironment = exec-&gt;uncheckedR(lexicalEnvironmentReg).Register::lexicalEnvironment();
&gt; 
&gt; Why does lexicalEnvironment need explicit name qualification here?

I’m overriding the lexcicalEnvironment var which was initialized to a nullptr by default above.  How is this unnecessary?  What am I missing?  The alternative is replace this if statement and use a super long ?: expression with a comma expression for the ASSERT().  Is that what you’re suggesting?

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:226
&gt;&gt; +    if (VirtualRegister(lexicalEnvironmentReg).isLocal()) {
&gt; 
&gt; Ditto.

Same here.  isValid() will not weed out the constant 0 when we don’t have a JSLexicalEnvironment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059882</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-08 11:11:02 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 244233 [details]
&gt; the patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244233&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:767
&gt; &gt;&gt; +        if (VirtualRegister(lexicalEnvironmentReg).isLocal()) {
&gt; &gt; 
&gt; &gt; The use of isLocal here is confusing. When is the lexical environment ever an argument?
&gt; &gt; 
&gt; &gt; Did you mean to use isValid()?
&gt; 
&gt; I do mean isLocal() because the other value isConstant().  isValid() returns
&gt; true for both.

Then !isConstant() is what you should be doing.

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:769
&gt; &gt;&gt; +            lexicalEnvironment = exec-&gt;uncheckedR(lexicalEnvironmentReg).Register::lexicalEnvironment();
&gt; &gt; 
&gt; &gt; Why does lexicalEnvironment need explicit name qualification here?
&gt; 
&gt; I’m overriding the lexcicalEnvironment var which was initialized to a
&gt; nullptr by default above.  How is this unnecessary?  What am I missing?  The
&gt; alternative is replace this if statement and use a super long ?: expression
&gt; with a comma expression for the ASSERT().  Is that what you’re suggesting?
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:226
&gt; &gt;&gt; +    if (VirtualRegister(lexicalEnvironmentReg).isLocal()) {
&gt; &gt; 
&gt; &gt; Ditto.
&gt; 
&gt; Same here.  isValid() will not weed out the constant 0 when we don’t have a
&gt; JSLexicalEnvironment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059890</commentid>
    <comment_count>7</comment_count>
      <attachid>244275</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-08 11:31:35 -0800</bug_when>
    <thetext>Created attachment 244275
patch 2

Geoff clarified offline that he was referring to the unnecessary qualification of lexicalEnvironment() as Register::lexicalEnvironment().  This patch removes that qualification as well as applies Fil&apos;s suggestion to use isConstant().  Since it is evident that it is not clear from the code that the lexicalEnvironment operand can only be the lexicalEnvironment local or a constant 0, I added a comment to document this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059893</commentid>
    <comment_count>8</comment_count>
      <attachid>244276</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-08 11:45:58 -0800</bug_when>
    <thetext>Created attachment 244276
patch 3

The constant case is a constant empty JSValue, not a constant 0.  Patch 3 fixes the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059894</commentid>
    <comment_count>9</comment_count>
      <attachid>244275</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-08 11:50:34 -0800</bug_when>
    <thetext>Comment on attachment 244275
patch 2

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

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:227
&gt; +    // The lexicalEnvironmentReg operand can only be the local designated for the lexicalEnvironment
&gt; +    // if available. Otherwise, it&apos;s a constant 0 indicating a nullptr.

0 is not quite right.

I would just say &quot;If lexicalEnvironmentReg is constant, then there is no lexical environment&quot;.

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:229
&gt; +        ASSERT(exec-&gt;codeBlock()-&gt;activationRegister().offset() == lexicalEnvironmentReg);

I don&apos;t think this ASSERT adds anything.

Side note: This ASSERT is wrong because of a bug in a previous patch. CodeBlock::hasActivationRegister(), needsActivation(), and so on, are broken:

    bool hasActivationRegister() const { return m_lexicalEnvironmentRegister.isValid(); }

Now that we use a constant null register, isValid() is not the right check. You should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059899</commentid>
    <comment_count>10</comment_count>
      <attachid>244275</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-08 11:57:25 -0800</bug_when>
    <thetext>Comment on attachment 244275
patch 2

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

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:227
&gt;&gt; +    // if available. Otherwise, it&apos;s a constant 0 indicating a nullptr.
&gt; 
&gt; 0 is not quite right.
&gt; 
&gt; I would just say &quot;If lexicalEnvironmentReg is constant, then there is no lexical environment&quot;.

OK.  I’ll change it.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:229
&gt;&gt; +        ASSERT(exec-&gt;codeBlock()-&gt;activationRegister().offset() == lexicalEnvironmentReg);
&gt; 
&gt; I don&apos;t think this ASSERT adds anything.
&gt; 
&gt; Side note: This ASSERT is wrong because of a bug in a previous patch. CodeBlock::hasActivationRegister(), needsActivation(), and so on, are broken:
&gt; 
&gt;     bool hasActivationRegister() const { return m_lexicalEnvironmentRegister.isValid(); }
&gt; 
&gt; Now that we use a constant null register, isValid() is not the right check. You should fix this.

Not true.  With Fil’s objection, I no longer set m_lexicalEnvironmentRegister to the empty JSValue.  Hence, the isValid() check is still correct (which is how Fil wanted it).

What this assert is checking is making sure that the lexicalEnvironment operand passed in does indeed matches the codeBlock’s expected lexicalEnvironment register.  Since the 2 values come from 2 different sources, it is meaningful to assert that one of them hasn’t been corrupted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059962</commentid>
    <comment_count>11</comment_count>
      <attachid>244296</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-08 15:01:24 -0800</bug_when>
    <thetext>Created attachment 244296
patch 4

Per my offline discussion with Geoff, patch 4 makes it so that both the CodeBlock&apos;s m_lexicalEnvironmentReg and the op_create_arguments (and op_get_argument_by_val) lexicalEnvironment operand is either a local (corresponding to the CodeBlock&apos;s designated local for the lexicalEnvironment) or an invalid VirtualRegister.

I&apos;ve remove all unnecessary comments, and also the asserts in LLIntSlowPath and CommonSlowPath.  I changed my mind on the necessity of the asserts there because Arguments::create() will already assert the same thing.

Patch 4 has been tested with the JSC stress tests on both 32-bit and 64-bit x86.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059980</commentid>
    <comment_count>12</comment_count>
      <attachid>244296</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-08 15:26:58 -0800</bug_when>
    <thetext>Comment on attachment 244296
patch 4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060000</commentid>
    <comment_count>13</comment_count>
      <attachid>244296</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-08 16:10:03 -0800</bug_when>
    <thetext>Comment on attachment 244296
patch 4

Clearing flags on attachment: 244296

Committed r178143: &lt;http://trac.webkit.org/changeset/178143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060003</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-08 16:10:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244233</attachid>
            <date>2015-01-07 19:19:34 -0800</date>
            <delta_ts>2015-01-08 11:31:35 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-140236.patch</filename>
            <type>text/plain</type>
            <size>22094</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MDc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE1LTAxLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIHRoZSBMTElOVCBhbmQgQmFzZWxpbmUgSklUJ3Mgb3BfY3JlYXRlX2FyZ3VtZW50cyBhbmQg
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCB1c2UgdGhlaXIgbGV4aWNhbEVudmlyb25tZW50IG9wZXJh
bmQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDAyMzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2lsbCBjaGFuZ2UgdGhlIERGRyB0
byB1c2UgdGhlIG9wZXJhbmQgb24gYSBzdWJzZXF1ZW50IHBhc3MuICBGb3Igbm93LAorICAgICAg
ICB0aGUgREZHIHVzZXMgYSB0ZW1wb3JhcnkgdGh1bmsgKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0ZvckRGRygpKSB0bworICAgICAgICByZXRhaW4gdGhlIG9sZCBiZWhhdmlvciBvZiBnZXR0aW5n
IHRoZSBsZXhpY2FsRW52aXJvbWVudCBmcm9tIHRoZQorICAgICAgICBFeGVjU3RhdGUuCisKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIC0gVXNlIHRoZSBsZXhpY2Fs
RW52aXJvbm1lbnQgZnJvbSB0aGUgRXhlY1N0YXRlIGZvciBub3cuCisKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIC0g
VXNlIHRoZSBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNGb3JERkcoKSB0aHVuayBmb3Igbm93Lgor
CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZyYW1lOjpsZXhpY2FsRW52aXJvbm1lbnRPck51bGxwdHIpOgorICAgICAgICAqIGludGVycHJl
dGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAtIEFkZGVkIHRoaXMgY29udmVuaWVuY2UgZnVuY3Rp
b24gdG8gcmV0dXJuIGVpdGhlciB0aGUKKyAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQgb3Ig
YSBudWxscHRyIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkbyBhCisgICAgICAgICAgY29uZGl0
aW9uYWwgY2hlY2sgb24gY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSBhdCBtdWx0aXBsZSBz
aXRlcy4KKworICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xl
eGljYWxFbnZpcm9ubWVudDo6YXJndW1lbnRzR2V0dGVyKToKKwogMjAxNS0wMS0wNyAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IE9iakMgR2VuZXJhdGUgdHlwZXMgZnJvbSB0aGUgR2VuZXJpY1R5cGVzIGRvbWFpbgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAx
NzgwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OTYsOCArNzk2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2UKICAgICAKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRz
LCBhbmQgd2UncmUgYWNjZXNzaW5nIG91dCBvZiBib3VuZHMsIHRoZW4gd2UgaGF2ZSB0byBjcmVh
dGUgdGhlCiAgICAgLy8gYXJndW1lbnRzIGluIGNhc2Ugc29tZW9uZSBoYXMgaW5zdGFsbGVkIGEg
Z2V0dGVyIG9uIGEgbnVtZXJpYyBwcm9wZXJ0eS4KLSAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlKQot
ICAgICAgICBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKSA9IGFyZ3VtZW50c1Zh
bHVlID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYyk7CisgICAgaWYgKCFhcmd1
bWVudHNWYWx1ZSkgeworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmly
b25tZW50ID0gZXhlYy0+bGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCk7CisgICAgICAgIGV4
ZWMtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpID0gYXJndW1lbnRzVmFsdWUgPSBBcmd1
bWVudHM6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpOworICAg
IH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50c1ZhbHVlLmdldChl
eGVjLCBpbmRleCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzgwNDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjI1LDcgKzQyMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCAhZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQo
KSkgewogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigK
LSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9u
Q3JlYXRlQXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzRm9yREZHLCByZXN1
bHRHUFIpKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MjM1LDcgKzQyMzUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBzbG93UGF0aHM7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUFyZ3VtZW50cyhyZXN1bHRH
UFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGhzKTsKICAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0
aHMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7CisgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRocywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJn
dW1lbnRzRm9yREZHLCByZXN1bHRHUFIpKTsKIAogICAgICAgICBhbHJlYWR5Q3JlYXRlZC5saW5r
KCZtX2ppdCk7IAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE3ODA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyODcsNyArNDI4Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHx8ICFleGVj
dXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSB7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RDcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
cywgcmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQs
IHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7CiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtNDI5Nyw3ICs0Mjk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1Bh
dGhzOwogICAgICAgICBlbWl0QWxsb2NhdGVBcmd1bWVudHMocmVzdWx0R1BSLCBzY3JhdGNoR1BS
MSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRocyk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAotICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRocywgdGhpcywgb3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93
UGF0aHMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7
CiAKICAgICAgICAgYWxyZWFkeUNyZWF0ZWQubGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTc4MDQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1NCw2ICsxNTQsMTIgQEAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIENhbGxGcmFtZTo6bGV4aWNh
bAogICAgIHJldHVybiByZWdpc3RlcnMoKVthY3RpdmF0aW9uUmVnaXN0ZXIub2Zmc2V0KCldLlJl
Z2lzdGVyOjpsZXhpY2FsRW52aXJvbm1lbnQoKTsKIH0KIAorSlNMZXhpY2FsRW52aXJvbm1lbnQq
IENhbGxGcmFtZTo6bGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCkgY29uc3QKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOworICAgIHJldHVybiBjb2Rl
QmxvY2stPm5lZWRzQWN0aXZhdGlvbigpID8gbGV4aWNhbEVudmlyb25tZW50KCkgOiBudWxscHRy
OworfQorICAgIAogdm9pZCBDYWxsRnJhbWU6OnNldEFjdGl2YXRpb24oSlNMZXhpY2FsRW52aXJv
bm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHRoaXMtPmNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTc4MDQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1
Myw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBib29sIGhhc0FjdGl2YXRpb24oKSBj
b25zdDsKICAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCgp
IGNvbnN0OworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50
T3JOdWxscHRyKCkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgdW5jaGVja2VkQWN0aXZhdGlvbigp
IGNvbnN0OwogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggZXhlY3V0aW9uIGJl
Z2FuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDE3ODA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNyAr
MjcyLDggQEAgQXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVhdGVBcgogICAgIH0g
ZWxzZSAKICNlbmRpZgogICAgIHsKLSAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVh
dGUodm0sIHBoeXNpY2FsRnJhbWUsIG1vZGUpOworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVu
dCogbGV4aWNhbEVudmlyb25tZW50ID0gcGh5c2ljYWxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50
T3JOdWxscHRyKCk7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBw
aHlzaWNhbEZyYW1lLCBsZXhpY2FsRW52aXJvbm1lbnQsIG1vZGUpOwogICAgICAgICBhcmd1bWVu
dHMtPnRlYXJPZmYocGh5c2ljYWxGcmFtZSk7CiAgICAgfQogICAgIHJldHVybiBhcmd1bWVudHM7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE3ODA0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw2ICs2ODEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRU8sIEdQUlJlZyk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUws
IEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVN0LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FWiwgaW50MzJfdCk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUpaWiwgR1BS
UmVnLCBpbnQzMl90LCBpbnQzMl90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCShyZXZpc2lvbiAxNzgwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwxMiBAQCBBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUwgb3BlcmF0
aW9uLCBHUFJSZWcgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSk7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
K30KKyAgICAKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VPIG9wZXJhdGlvbiwgR1BSUmVnIGFyZykKIHsKICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE3ODA0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTE4LDExICs5MTgsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3Ry
dWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5jaDMyKE5v
dEVxdWFsLCB0YWdGb3IoZHN0KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcp
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyk7CisKKyAgICBl
bWl0TG9hZFBheWxvYWQobGV4aWNhbEVudmlyb25tZW50LCByZWdUMCk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxs
KGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihkc3QpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVH
UFIpOworCiAgICAgYXJnc0NyZWF0ZWQubGluayh0aGlzKTsKIH0KIApAQCAtMTA2NCw2ICsxMDY4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YQogICAgIGludCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCBhcmd1bWVudHMg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBwcm9wZXJ0eSA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IGxleGljYWxFbnZpcm9ubWVu
dCA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CiAgICAgSnVtcCBza2lwQXJndW1lbnRzQ3JlYXRpb24gPSBqdW1wKCk7CkBAIC0xMDcx
LDcgKzEwNzYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKTsKKyAgICBlbWl0TG9hZFBheWxv
YWQobGV4aWNhbEVudmlyb25tZW50LCByZWdUMCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25DcmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGFyZ3VtZW50cywg
cmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVH
UFIpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CShyZXZpc2lvbiAxNzgwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksMTAgKzY4OSwxMiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJn
dW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGxleGljYWxFbnZpcm9t
ZW50ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIEp1bXAgYXJnc0Ny
ZWF0ZWQgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwg
c2l6ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHMpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIobGV4aWNhbEVudmly
b21lbnQsIHJlZ1QwKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
cywgcmVnVDApOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAgICAg
ZW1pdFN0b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVy
KGRzdCkpLCByZXR1cm5WYWx1ZUdQUik7CiAKQEAgLTk1NiwxMyArOTU4LDE1IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmEKICAgICBpbnQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgYXJndW1lbnRzID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOworICAgIGludCBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwogICAgIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAg
ICBKdW1wIHNraXBBcmd1bWVudHNDcmVhdGlvbiA9IGp1bXAoKTsKICAgICAKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGxl
eGljYWxFbnZpcm9ubWVudCwgcmVnVDApOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChhcmd1bWVudHMsIHJldHVy
blZhbHVlR1BSKTsKICAgICBlbWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSksIHJldHVyblZhbHVlR1BSKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTc4MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQwMiwxMyArMTQwMiwyMCBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0CiAgICAgcmV0dXJuIGxleGljYWxFbnZpcm9ubWVudDsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVj
U3RhdGUqIGV4ZWMpCisvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB0aHVuayBmb3IgdGhl
IERGRyB1bnRpbCB3ZSBhZGQgdGhlIGxleGljYWxFbnZpcm9ubWVudCBvcGVyYW5kIHRvIHRoZSBE
RkcgQ3JlYXRlQXJndW1lbnRzIG5vZGUuCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlQXJndW1lbnRzRm9yREZHKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xleGljYWxF
bnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gZXhlYy0+bGV4aWNhbEVudmlyb25tZW50
T3JOdWxscHRyKCk7CisgICAgcmV0dXJuIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhleGVjLCBs
ZXhpY2FsRW52aXJvbm1lbnQpOworfQorICAgIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEpTTGV4aWNhbEVudmlyb25tZW50
KiBsZXhpY2FsRW52aXJvbm1lbnQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgLy8gTkI6IFRoaXMg
bmVlZHMgdG8gYmUgZXhjZWVkaW5nbHkgY2FyZWZ1bCB3aXRoIHRvcCBjYWxsIGZyYW1lIHRyYWNr
aW5nLCBzaW5jZSBpdAogICAgIC8vIG1heSBiZSBjYWxsZWQgZnJvbSBPU1IgZXhpdCwgd2hpbGUg
dGhlIHN0YXRlIG9mIHRoZSBjYWxsIHN0YWNrIGlzIGJpemFycmUuCi0gICAgQXJndW1lbnRzKiBy
ZXN1bHQgPSBBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYyk7CisgICAgQXJndW1lbnRzKiByZXN1
bHQgPSBBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYywgbGV4aWNhbEVudmlyb25tZW50KTsKICAg
ICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTQx
Niw3ICsxNDIzLDggQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0R1cmluZ09TUkV4
aXQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIERlZmVyR0NGb3JBV2hpbGUoZXhlYy0+dm0oKS5o
ZWFwKTsKLSAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKGV4ZWMpOworICAgIEpT
TGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBleGVjLT5sZXhpY2FsRW52
aXJvbm1lbnRPck51bGxwdHIoKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
KGV4ZWMsIGxleGljYWxFbnZpcm9ubWVudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJf
dCBhcmd1bWVudHNSZWdpc3RlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNzgwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBleHRl
cm4gIkMiIHsKICAgICBKY3A6IGNvbnN0IEpTVmFsdWUqCiAgICAgSnNjOiBKU1Njb3BlKgogICAg
IEpzczogSlNTdHJpbmcqCisgICAgTDogSlNMZXhpY2FsRW52aXJvbm1lbnQqCiAgICAgTzogSlNP
YmplY3QqCiAgICAgUDogcG9pbnRlciAoY2hhciopCiAgICAgUGM6IEluc3RydWN0aW9uKiBpLmUu
IGJ5dGVjb2RlIFBDCkBAIC0xMzYsNiArMTM3LDcgQEAgdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gKCpDX0pJVE9wZQogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9w
ZXJhdGlvbl9FSnNzU3QpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgU3RydWN0dXJlKik7CiB0eXBl
ZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKc3NKc3MpKEV4ZWNT
dGF0ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OICgqQ19KSVRPcGVyYXRpb25fRUpzc0pzc0pzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBK
U1N0cmluZyosIEpTU3RyaW5nKik7Cit0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNf
SklUT3BlcmF0aW9uX0VMKShFeGVjU3RhdGUqLCBKU0xleGljYWxFbnZpcm9ubWVudCopOwogdHlw
ZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FTykoRXhlY1N0YXRl
KiwgSlNPYmplY3QqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVy
YXRpb25fRU9aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRlZiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FU3QpKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSopOwpAQCAtMjk0LDcgKzI5Niw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
cm9maWxlRGlkQ2EKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbENhbGwo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tIYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbCkgV1RGX0lOVEVSTkFMOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb24oRXhlY1N0YXRlKiwgSlNT
Y29wZSogY3VycmVudFNjb3BlLCBpbnQzMl90IG9mZnNldCkgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
Rm9yREZHKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1w
b3JhcnkgdGh1bmsgZm9yIHRoZSBERkcgdW50aWwgd2UgYWRkIHRoZSBsZXhpY2FsRW52aXJvbm1l
bnQgb3BlcmFuZCB0byB0aGUgREZHIENyZWF0ZUFyZ3VtZW50cyBub2RlLgorSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqLCBKU0xleGljYWxF
bnZpcm9ubWVudCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVBcmd1bWVudHNEdXJpbmdPU1JFeGl0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3Ro
KEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxEZWZhdWx0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5U
RVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDE3ODA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Miw3ICs3NjIsMTQgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bQogICAgIExMSU5UX0JFR0lO
KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CiAgICAg
aWYgKCFhcmd1bWVudHMpIHsKLSAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUo
dm0sIGV4ZWMpOworICAgICAgICBpbnQgbGV4aWNhbEVudmlyb25tZW50UmVnID0gcGNbNF0udS5v
cGVyYW5kOworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50
ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKFZpcnR1YWxSZWdpc3RlcihsZXhpY2FsRW52aXJvbm1l
bnRSZWcpLmlzTG9jYWwoKSkgeworICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygp
LT5hY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSA9PSBsZXhpY2FsRW52aXJvbm1lbnRSZWcp
OworICAgICAgICAgICAgbGV4aWNhbEVudmlyb25tZW50ID0gZXhlYy0+dW5jaGVja2VkUihsZXhp
Y2FsRW52aXJvbm1lbnRSZWcpLlJlZ2lzdGVyOjpsZXhpY2FsRW52aXJvbm1lbnQoKTsKKyAgICAg
ICAgfQorICAgICAgICBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBl
eGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpKTsKKwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKICAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CiAgICAgICAgIGV4ZWMtPnVu
Y2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpKS5vZmZzZXQoKSkgPSBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTc4MDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDEwICs0NiwxMCBAQCBjbGFzcyBBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjCiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMg
QXJndW1lbnRzKiBjcmVhdGUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQXJndW1lbnRz
TW9kZSBtb2RlID0gTm9ybWFsQXJndW1lbnRzQ3JlYXRpb25Nb2RlKQorICAgIHN0YXRpYyBBcmd1
bWVudHMqIGNyZWF0ZShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0xleGljYWxFbnZp
cm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBBcmd1bWVudHNNb2RlIG1vZGUgPSBOb3JtYWxB
cmd1bWVudHNDcmVhdGlvbk1vZGUpCiAgICAgewogICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50
cyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFyZ3VtZW50cz4odm0uaGVhcCwgb2Zmc2V0
T2ZJbmxpbmVSZWdpc3RlckFycmF5KCkgKyByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoY2FsbEZy
YW1lKSkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwotICAgICAgICBhcmd1bWVudHMtPmZpbmlzaENy
ZWF0aW9uKGNhbGxGcmFtZSwgbW9kZSk7CisgICAgICAgIGFyZ3VtZW50cy0+ZmluaXNoQ3JlYXRp
b24oY2FsbEZyYW1lLCBsZXhpY2FsRW52aXJvbm1lbnQsIG1vZGUpOwogICAgICAgICByZXR1cm4g
YXJndW1lbnRzOwogICAgIH0KICAgICAgICAgCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihD
YWxsRnJhbWUqLCBBcmd1bWVudHNNb2RlKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKENhbGxG
cmFtZSosIEpTTGV4aWNhbEVudmlyb25tZW50KiwgQXJndW1lbnRzTW9kZSk7CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihDYWxsRnJhbWUqLCBJbmxpbmVDYWxsRnJhbWUqLCBBcmd1bWVudHNNb2Rl
KTsKIAogcHJpdmF0ZToKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbmxpbmUgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiYgQXJndW1lCiAgICAgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50LT5yZWdp
c3RlckF0KGluZGV4IC0gbV9zbG93QXJndW1lbnREYXRhLT5ieXRlY29kZVRvTWFjaGluZUNhcHR1
cmVPZmZzZXQoKSk7CiB9CiAKLWlubGluZSB2b2lkIEFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24o
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEFyZ3VtZW50c01vZGUgbW9kZSkKK2lubGluZSB2b2lkIEFy
Z3VtZW50czo6ZmluaXNoQ3JlYXRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTTGV4aWNhbEVu
dmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQsIEFyZ3VtZW50c01vZGUgbW9kZSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKQEAgLTMwMCw4ICszMDAsOCBAQCBpbmxpbmUgdm9pZCBBcmd1bWVudHM6
OmZpbmlzaENyZWF0aW9uKENhCiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5mcmFtZVBvaW50
ZXJPZmZzZXRUb0dldEFjdGl2YXRpb25SZWdpc3RlcnMoKSk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50KCkpOwotICAgICAgICAgICAgbV9s
ZXhpY2FsRW52aXJvbm1lbnQuc2V0KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywgY2FsbEZyYW1lLT5s
ZXhpY2FsRW52aXJvbm1lbnQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChsZXhpY2Fs
RW52aXJvbm1lbnQgJiYgbGV4aWNhbEVudmlyb25tZW50ID09IGNhbGxGcmFtZS0+bGV4aWNhbEVu
dmlyb25tZW50KCkpOworICAgICAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnQuc2V0KGNhbGxG
cmFtZS0+dm0oKSwgdGhpcywgbGV4aWNhbEVudmlyb25tZW50KTsKICAgICAgICAgfQogICAgICAg
ICAvLyBUaGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIG9taXRzIG9wX3RlYXJfb2ZmX2xleGljYWxfZW52
aXJvbm1lbnQgaW4gY2FzZXMgb2Ygbm8KICAgICAgICAgLy8gZGVjbGFyZWQgcGFyYW1ldGVycywg
c28gd2UgbmVlZCB0byB0ZWFyIG9mZiBpbW1lZGlhdGVseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTc4
MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSwxMyBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZ2V0X2NhbGxlZSkKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1l
bnRzKQogewogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFy
Z3VtZW50czo6Y3JlYXRlKHZtLCBleGVjKSk7CisgICAgaW50IGxleGljYWxFbnZpcm9ubWVudFJl
ZyA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVu
dmlyb25tZW50ID0gbnVsbHB0cjsKKyAgICBpZiAoVmlydHVhbFJlZ2lzdGVyKGxleGljYWxFbnZp
cm9ubWVudFJlZykuaXNMb2NhbCgpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2so
KS0+YWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkgPT0gbGV4aWNhbEVudmlyb25tZW50UmVn
KTsKKyAgICAgICAgbGV4aWNhbEVudmlyb25tZW50ID0gZXhlYy0+dW5jaGVja2VkUihsZXhpY2Fs
RW52aXJvbm1lbnRSZWcpLlJlZ2lzdGVyOjpsZXhpY2FsRW52aXJvbm1lbnQoKTsKKyAgICB9Cisg
ICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBleGVj
LCBsZXhpY2FsRW52aXJvbm1lbnQpKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBleGVj
LT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CiAgICAgZXhlYy0+dW5j
aGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHBjWzFd
LnUub3BlcmFuZCkpLm9mZnNldCgpKSA9IGFyZ3VtZW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAJKHJl
dmlzaW9uIDE3ODA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTTGV4aWNhbEVudmlyb25tZW50OjphcmcKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhcmd1bWVudHMpOwogICAgIGludCByZWFsQXJndW1lbnRzUmVnaXN0ZXIgPSB1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpLm9mZnNldCgpOwog
Ci0gICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGNhbGxG
cmFtZS0+dm0oKSwgY2FsbEZyYW1lKSk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVl
KEFyZ3VtZW50czo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLCBsZXhpY2FsRW52
aXJvbm1lbnQpKTsKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIu
b2Zmc2V0KCkpID0gYXJndW1lbnRzOwogICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihyZWFsQXJn
dW1lbnRzUmVnaXN0ZXIpID0gYXJndW1lbnRzOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244275</attachid>
            <date>2015-01-08 11:31:35 -0800</date>
            <delta_ts>2015-01-08 15:01:24 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>bug-140236.patch</filename>
            <type>text/plain</type>
            <size>22437</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE1LTAxLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIHRoZSBMTElOVCBhbmQgQmFzZWxpbmUgSklUJ3Mgb3BfY3JlYXRlX2FyZ3VtZW50cyBhbmQg
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCB1c2UgdGhlaXIgbGV4aWNhbEVudmlyb25tZW50IG9wZXJh
bmQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDAyMzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2lsbCBjaGFuZ2UgdGhlIERGRyB0
byB1c2UgdGhlIG9wZXJhbmQgb24gYSBzdWJzZXF1ZW50IHBhc3MuICBGb3Igbm93LAorICAgICAg
ICB0aGUgREZHIHVzZXMgYSB0ZW1wb3JhcnkgdGh1bmsgKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0ZvckRGRygpKSB0bworICAgICAgICByZXRhaW4gdGhlIG9sZCBiZWhhdmlvciBvZiBnZXR0aW5n
IHRoZSBsZXhpY2FsRW52aXJvbWVudCBmcm9tIHRoZQorICAgICAgICBFeGVjU3RhdGUuCisKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIC0gVXNlIHRoZSBsZXhpY2Fs
RW52aXJvbm1lbnQgZnJvbSB0aGUgRXhlY1N0YXRlIGZvciBub3cuCisKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIC0g
VXNlIHRoZSBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNGb3JERkcoKSB0aHVuayBmb3Igbm93Lgor
CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZyYW1lOjpsZXhpY2FsRW52aXJvbm1lbnRPck51bGxwdHIpOgorICAgICAgICAqIGludGVycHJl
dGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAtIEFkZGVkIHRoaXMgY29udmVuaWVuY2UgZnVuY3Rp
b24gdG8gcmV0dXJuIGVpdGhlciB0aGUKKyAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQgb3Ig
YSBudWxscHRyIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkbyBhCisgICAgICAgICAgY29uZGl0
aW9uYWwgY2hlY2sgb24gY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSBhdCBtdWx0aXBsZSBz
aXRlcy4KKworICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xl
eGljYWxFbnZpcm9ubWVudDo6YXJndW1lbnRzR2V0dGVyKToKKwogMjAxNS0wMS0wNyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRoZSBsZXhpY2FsRW52aXJv
bm1lbnQgYXMgYW4gb3BlcmFuZCB0byBvcF9nZXRfYXJndW1lbnRfYnlfdmFsLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNzgx
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OTYsOCArNzk2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2UKICAgICAKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzLCBh
bmQgd2UncmUgYWNjZXNzaW5nIG91dCBvZiBib3VuZHMsIHRoZW4gd2UgaGF2ZSB0byBjcmVhdGUg
dGhlCiAgICAgLy8gYXJndW1lbnRzIGluIGNhc2Ugc29tZW9uZSBoYXMgaW5zdGFsbGVkIGEgZ2V0
dGVyIG9uIGEgbnVtZXJpYyBwcm9wZXJ0eS4KLSAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlKQotICAg
ICAgICBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKSA9IGFyZ3VtZW50c1ZhbHVl
ID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYyk7CisgICAgaWYgKCFhcmd1bWVu
dHNWYWx1ZSkgeworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25t
ZW50ID0gZXhlYy0+bGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCk7CisgICAgICAgIGV4ZWMt
PnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpID0gYXJndW1lbnRzVmFsdWUgPSBBcmd1bWVu
dHM6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpOworICAgIH0K
ICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50c1ZhbHVlLmdldChleGVj
LCBpbmRleCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjI1LDcgKzQyMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCAhZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkg
ewogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwo
bm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzRm9yREZHLCByZXN1bHRH
UFIpKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MjM1LDcgKzQyMzUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBzbG93UGF0aHM7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUFyZ3VtZW50cyhyZXN1bHRHUFIs
IHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGhzKTsKICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aHMs
IHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7CisgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRocywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1l
bnRzRm9yREZHLCByZXN1bHRHUFIpKTsKIAogICAgICAgICBhbHJlYWR5Q3JlYXRlZC5saW5rKCZt
X2ppdCk7IAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyODcsNyArNDI4Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHx8ICFleGVjdXRh
YmxlLT5wYXJhbWV0ZXJDb3VudCgpKSB7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RDcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCByZXN1bHRH
UFIpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywg
cmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRo
aXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7CiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNDI5Nyw3ICs0Mjk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGhz
OwogICAgICAgICBlbWl0QWxsb2NhdGVBcmd1bWVudHMocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwg
c2NyYXRjaEdQUjIsIHNsb3dQYXRocyk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRocywgdGhpcywgb3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0
aHMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7CiAK
ICAgICAgICAgYWxyZWFkeUNyZWF0ZWQubGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NCw2ICsxNTQsMTIgQEAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIENhbGxGcmFtZTo6bGV4aWNhbAog
ICAgIHJldHVybiByZWdpc3RlcnMoKVthY3RpdmF0aW9uUmVnaXN0ZXIub2Zmc2V0KCldLlJlZ2lz
dGVyOjpsZXhpY2FsRW52aXJvbm1lbnQoKTsKIH0KIAorSlNMZXhpY2FsRW52aXJvbm1lbnQqIENh
bGxGcmFtZTo6bGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCkgY29uc3QKK3sKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOworICAgIHJldHVybiBjb2RlQmxv
Y2stPm5lZWRzQWN0aXZhdGlvbigpID8gbGV4aWNhbEVudmlyb25tZW50KCkgOiBudWxscHRyOwor
fQorICAgIAogdm9pZCBDYWxsRnJhbWU6OnNldEFjdGl2YXRpb24oSlNMZXhpY2FsRW52aXJvbm1l
bnQqIGxleGljYWxFbnZpcm9ubWVudCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRo
aXMtPmNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBib29sIGhhc0FjdGl2YXRpb24oKSBjb25z
dDsKICAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCgpIGNv
bnN0OworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50T3JO
dWxscHRyKCkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgdW5jaGVja2VkQWN0aXZhdGlvbigpIGNv
bnN0OwogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggZXhlY3V0aW9uIGJlZ2Fu
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
VmlzaXRvci5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNyArMjcy
LDggQEAgQXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVhdGVBcgogICAgIH0gZWxz
ZSAKICNlbmRpZgogICAgIHsKLSAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUo
dm0sIHBoeXNpY2FsRnJhbWUsIG1vZGUpOworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCog
bGV4aWNhbEVudmlyb25tZW50ID0gcGh5c2ljYWxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50T3JO
dWxscHRyKCk7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBwaHlz
aWNhbEZyYW1lLCBsZXhpY2FsRW52aXJvbm1lbnQsIG1vZGUpOwogICAgICAgICBhcmd1bWVudHMt
PnRlYXJPZmYocGh5c2ljYWxGcmFtZSk7CiAgICAgfQogICAgIHJldHVybiBhcmd1bWVudHM7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw2ICs2ODEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRU8sIEdQUlJlZyk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUwsIEdQ
UlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRP
cGVyYXRpb25fRVN0LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FWiwgaW50MzJfdCk7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUpaWiwgR1BSUmVn
LCBpbnQzMl90LCBpbnQzMl90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwxMiBAQCBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUwgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7
CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKK30K
KyAgICAKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VPIG9wZXJhdGlvbiwgR1BSUmVnIGFyZykKIHsKICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTE4LDExICs5MTgsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0
aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGludCBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwogCiAgICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5jaDMyKE5vdEVx
dWFsLCB0YWdGb3IoZHN0KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyk7CisKKyAgICBlbWl0
TG9hZFBheWxvYWQobGV4aWNhbEVudmlyb25tZW50LCByZWdUMCk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRz
dCwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihkc3QpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIp
OworCiAgICAgYXJnc0NyZWF0ZWQubGluayh0aGlzKTsKIH0KIApAQCAtMTA2NCw2ICsxMDY4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YQogICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCBhcmd1bWVudHMgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBwcm9wZXJ0eSA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IGxleGljYWxFbnZpcm9ubWVudCA9
IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAgICAgSnVtcCBza2lwQXJndW1lbnRzQ3JlYXRpb24gPSBqdW1wKCk7CkBAIC0xMDcxLDcg
KzEwNzYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKTsKKyAgICBlbWl0TG9hZFBheWxvYWQo
bGV4aWNhbEVudmlyb25tZW50LCByZWdUMCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGFyZ3VtZW50cywgcmV0
dXJuVmFsdWVHUFIpOwogICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIp
OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksMTAgKzY4OSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGxleGljYWxFbnZpcm9tZW50
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIEp1bXAgYXJnc0NyZWF0
ZWQgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6
ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVh
dGVBcmd1bWVudHMpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIobGV4aWNhbEVudmlyb21l
bnQsIHJlZ1QwKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywg
cmVnVDApOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZW1p
dFN0b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGRz
dCkpLCByZXR1cm5WYWx1ZUdQUik7CiAKQEAgLTk1NiwxMyArOTU4LDE1IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmEKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgYXJndW1lbnRzID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOworICAgIGludCBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kOwogICAgIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBK
dW1wIHNraXBBcmd1bWVudHNDcmVhdGlvbiA9IGp1bXAoKTsKICAgICAKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGxleGlj
YWxFbnZpcm9ubWVudCwgcmVnVDApOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChhcmd1bWVudHMsIHJldHVyblZh
bHVlR1BSKTsKICAgICBlbWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihW
aXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSksIHJldHVyblZhbHVlR1BSKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQwMiwxMyArMTQwMiwyMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlQWN0CiAgICAgcmV0dXJuIGxleGljYWxFbnZpcm9ubWVudDsKIH0K
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3Rh
dGUqIGV4ZWMpCisvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB0aHVuayBmb3IgdGhlIERG
RyB1bnRpbCB3ZSBhZGQgdGhlIGxleGljYWxFbnZpcm9ubWVudCBvcGVyYW5kIHRvIHRoZSBERkcg
Q3JlYXRlQXJndW1lbnRzIG5vZGUuCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzRm9yREZHKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xleGljYWxFbnZp
cm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gZXhlYy0+bGV4aWNhbEVudmlyb25tZW50T3JO
dWxscHRyKCk7CisgICAgcmV0dXJuIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhleGVjLCBsZXhp
Y2FsRW52aXJvbm1lbnQpOworfQorICAgIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEpTTGV4aWNhbEVudmlyb25tZW50KiBs
ZXhpY2FsRW52aXJvbm1lbnQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgLy8gTkI6IFRoaXMgbmVl
ZHMgdG8gYmUgZXhjZWVkaW5nbHkgY2FyZWZ1bCB3aXRoIHRvcCBjYWxsIGZyYW1lIHRyYWNraW5n
LCBzaW5jZSBpdAogICAgIC8vIG1heSBiZSBjYWxsZWQgZnJvbSBPU1IgZXhpdCwgd2hpbGUgdGhl
IHN0YXRlIG9mIHRoZSBjYWxsIHN0YWNrIGlzIGJpemFycmUuCi0gICAgQXJndW1lbnRzKiByZXN1
bHQgPSBBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYyk7CisgICAgQXJndW1lbnRzKiByZXN1bHQg
PSBBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYywgbGV4aWNhbEVudmlyb25tZW50KTsKICAgICBB
U1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTQxNiw3
ICsxNDIzLDggQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0R1cmluZ09TUkV4aXQo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIERlZmVyR0NGb3JBV2hpbGUoZXhlYy0+dm0oKS5oZWFw
KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKGV4ZWMpOworICAgIEpTTGV4
aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBleGVjLT5sZXhpY2FsRW52aXJv
bm1lbnRPck51bGxwdHIoKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKGV4
ZWMsIGxleGljYWxFbnZpcm9ubWVudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBh
cmd1bWVudHNSZWdpc3RlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBleHRlcm4g
IkMiIHsKICAgICBKY3A6IGNvbnN0IEpTVmFsdWUqCiAgICAgSnNjOiBKU1Njb3BlKgogICAgIEpz
czogSlNTdHJpbmcqCisgICAgTDogSlNMZXhpY2FsRW52aXJvbm1lbnQqCiAgICAgTzogSlNPYmpl
Y3QqCiAgICAgUDogcG9pbnRlciAoY2hhciopCiAgICAgUGM6IEluc3RydWN0aW9uKiBpLmUuIGJ5
dGVjb2RlIFBDCkBAIC0xMzYsNiArMTM3LDcgQEAgdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gKCpDX0pJVE9wZQogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJh
dGlvbl9FSnNzU3QpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgU3RydWN0dXJlKik7CiB0eXBlZGVm
IEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKc3NKc3MpKEV4ZWNTdGF0
ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
ICgqQ19KSVRPcGVyYXRpb25fRUpzc0pzc0pzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBKU1N0
cmluZyosIEpTU3RyaW5nKik7Cit0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklU
T3BlcmF0aW9uX0VMKShFeGVjU3RhdGUqLCBKU0xleGljYWxFbnZpcm9ubWVudCopOwogdHlwZWRl
ZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FTykoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRp
b25fRU9aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FU3QpKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopOwpAQCAtMjk0LDcgKzI5Niw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9m
aWxlRGlkQ2EKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbENhbGwoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tIYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb24oRXhlY1N0YXRlKiwgSlNTY29w
ZSogY3VycmVudFNjb3BlLCBpbnQzMl90IG9mZnNldCkgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzRm9y
REZHKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jh
cnkgdGh1bmsgZm9yIHRoZSBERkcgdW50aWwgd2UgYWRkIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQg
b3BlcmFuZCB0byB0aGUgREZHIENyZWF0ZUFyZ3VtZW50cyBub2RlLgorSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqLCBKU0xleGljYWxFbnZp
cm9ubWVudCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHNEdXJpbmdPU1JFeGl0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoKEV4
ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlWYWxEZWZhdWx0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5URVJO
QUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Miw3ICs3NjIsMTYgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bQogICAgIExMSU5UX0JFR0lOKCk7
CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CiAgICAgaWYg
KCFhcmd1bWVudHMpIHsKLSAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUodm0s
IGV4ZWMpOworICAgICAgICBpbnQgbGV4aWNhbEVudmlyb25tZW50UmVnID0gcGNbNF0udS5vcGVy
YW5kOworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0g
bnVsbHB0cjsKKyAgICAgICAgLy8gVGhlIGxleGljYWxFbnZpcm9ubWVudFJlZyBvcGVyYW5kIGNh
biBvbmx5IGJlIHRoZSBsb2NhbCBkZXNpZ25hdGVkIGZvciB0aGUgbGV4aWNhbEVudmlyb25tZW50
CisgICAgICAgIC8vIGlmIGF2YWlsYWJsZS4gT3RoZXJ3aXNlLCBpdCdzIGEgY29uc3RhbnQgMCBp
bmRpY2F0aW5nIGEgbnVsbHB0ci4KKyAgICAgICAgaWYgKCFWaXJ0dWFsUmVnaXN0ZXIobGV4aWNh
bEVudmlyb25tZW50UmVnKS5pc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChleGVj
LT5jb2RlQmxvY2soKS0+YWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkgPT0gbGV4aWNhbEVu
dmlyb25tZW50UmVnKTsKKyAgICAgICAgICAgIGxleGljYWxFbnZpcm9ubWVudCA9IGV4ZWMtPnVu
Y2hlY2tlZFIobGV4aWNhbEVudmlyb25tZW50UmVnKS5sZXhpY2FsRW52aXJvbm1lbnQoKTsKKyAg
ICAgICAgfQorICAgICAgICBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKHZt
LCBleGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpKTsKKwogICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKICAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CiAgICAgICAgIGV4ZWMt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihw
Y1syXS51Lm9wZXJhbmQpKS5vZmZzZXQoKSkgPSBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTc4MTIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDEwICs0NiwxMCBAQCBjbGFzcyBBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0
aWMgQXJndW1lbnRzKiBjcmVhdGUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQXJndW1l
bnRzTW9kZSBtb2RlID0gTm9ybWFsQXJndW1lbnRzQ3JlYXRpb25Nb2RlKQorICAgIHN0YXRpYyBB
cmd1bWVudHMqIGNyZWF0ZShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0xleGljYWxF
bnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBBcmd1bWVudHNNb2RlIG1vZGUgPSBOb3Jt
YWxBcmd1bWVudHNDcmVhdGlvbk1vZGUpCiAgICAgewogICAgICAgICBBcmd1bWVudHMqIGFyZ3Vt
ZW50cyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFyZ3VtZW50cz4odm0uaGVhcCwgb2Zm
c2V0T2ZJbmxpbmVSZWdpc3RlckFycmF5KCkgKyByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoY2Fs
bEZyYW1lKSkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwotICAgICAgICBhcmd1bWVudHMtPmZpbmlz
aENyZWF0aW9uKGNhbGxGcmFtZSwgbW9kZSk7CisgICAgICAgIGFyZ3VtZW50cy0+ZmluaXNoQ3Jl
YXRpb24oY2FsbEZyYW1lLCBsZXhpY2FsRW52aXJvbm1lbnQsIG1vZGUpOwogICAgICAgICByZXR1
cm4gYXJndW1lbnRzOwogICAgIH0KICAgICAgICAgCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihDYWxsRnJhbWUqLCBBcmd1bWVudHNNb2RlKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKENh
bGxGcmFtZSosIEpTTGV4aWNhbEVudmlyb25tZW50KiwgQXJndW1lbnRzTW9kZSk7CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihDYWxsRnJhbWUqLCBJbmxpbmVDYWxsRnJhbWUqLCBBcmd1bWVudHNN
b2RlKTsKIAogcHJpdmF0ZToKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbmxpbmUgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiYgQXJndW1lCiAgICAgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50LT5y
ZWdpc3RlckF0KGluZGV4IC0gbV9zbG93QXJndW1lbnREYXRhLT5ieXRlY29kZVRvTWFjaGluZUNh
cHR1cmVPZmZzZXQoKSk7CiB9CiAKLWlubGluZSB2b2lkIEFyZ3VtZW50czo6ZmluaXNoQ3JlYXRp
b24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEFyZ3VtZW50c01vZGUgbW9kZSkKK2lubGluZSB2b2lk
IEFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTTGV4aWNh
bEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQsIEFyZ3VtZW50c01vZGUgbW9kZSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKQEAgLTMwMCw4ICszMDAsOCBAQCBpbmxpbmUgdm9pZCBBcmd1bWVu
dHM6OmZpbmlzaENyZWF0aW9uKENhCiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5mcmFtZVBv
aW50ZXJPZmZzZXRUb0dldEFjdGl2YXRpb25SZWdpc3RlcnMoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50KCkpOwotICAgICAgICAgICAg
bV9sZXhpY2FsRW52aXJvbm1lbnQuc2V0KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywgY2FsbEZyYW1l
LT5sZXhpY2FsRW52aXJvbm1lbnQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChsZXhp
Y2FsRW52aXJvbm1lbnQgJiYgbGV4aWNhbEVudmlyb25tZW50ID09IGNhbGxGcmFtZS0+bGV4aWNh
bEVudmlyb25tZW50KCkpOworICAgICAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnQuc2V0KGNh
bGxGcmFtZS0+dm0oKSwgdGhpcywgbGV4aWNhbEVudmlyb25tZW50KTsKICAgICAgICAgfQogICAg
ICAgICAvLyBUaGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIG9taXRzIG9wX3RlYXJfb2ZmX2xleGljYWxf
ZW52aXJvbm1lbnQgaW4gY2FzZXMgb2Ygbm8KICAgICAgICAgLy8gZGVjbGFyZWQgcGFyYW1ldGVy
cywgc28gd2UgbmVlZCB0byB0ZWFyIG9mZiBpbW1lZGlhdGVseS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSwxNSBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2NhbGxlZSkKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJn
dW1lbnRzKQogewogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVl
KEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBleGVjKSk7CisgICAgaW50IGxleGljYWxFbnZpcm9ubWVu
dFJlZyA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNh
bEVudmlyb25tZW50ID0gbnVsbHB0cjsKKyAgICAvLyBUaGUgbGV4aWNhbEVudmlyb25tZW50UmVn
IG9wZXJhbmQgY2FuIG9ubHkgYmUgdGhlIGxvY2FsIGRlc2lnbmF0ZWQgZm9yIHRoZSBsZXhpY2Fs
RW52aXJvbm1lbnQKKyAgICAvLyBpZiBhdmFpbGFibGUuIE90aGVyd2lzZSwgaXQncyBhIGNvbnN0
YW50IDAgaW5kaWNhdGluZyBhIG51bGxwdHIuCisgICAgaWYgKCFWaXJ0dWFsUmVnaXN0ZXIobGV4
aWNhbEVudmlyb25tZW50UmVnKS5pc0NvbnN0YW50KCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMt
PmNvZGVCbG9jaygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSA9PSBsZXhpY2FsRW52
aXJvbm1lbnRSZWcpOworICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQgPSBleGVjLT51bmNoZWNr
ZWRSKGxleGljYWxFbnZpcm9ubWVudFJlZykubGV4aWNhbEVudmlyb25tZW50KCk7CisgICAgfQor
ICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhl
YywgbGV4aWNhbEVudmlyb25tZW50KSk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgZXhl
Yy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQpID0gYXJndW1lbnRzOwogICAgIGV4ZWMtPnVu
Y2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcihwY1sx
XS51Lm9wZXJhbmQpKS5vZmZzZXQoKSkgPSBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCShy
ZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0xleGljYWxFbnZpcm9ubWVudDo6YXJnCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXJndW1lbnRzKTsKICAgICBpbnQgcmVhbEFyZ3VtZW50c1JlZ2lzdGVyID0g
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKS5vZmZzZXQoKTsK
IAotICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShjYWxs
RnJhbWUtPnZtKCksIGNhbGxGcmFtZSkpOworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1
ZShBcmd1bWVudHM6OmNyZWF0ZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZSwgbGV4aWNhbEVu
dmlyb25tZW50KSk7CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVy
Lm9mZnNldCgpKSA9IGFyZ3VtZW50czsKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIocmVhbEFy
Z3VtZW50c1JlZ2lzdGVyKSA9IGFyZ3VtZW50czsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244276</attachid>
            <date>2015-01-08 11:45:58 -0800</date>
            <delta_ts>2015-01-08 15:01:24 -0800</delta_ts>
            <desc>patch 3</desc>
            <filename>bug-140236.patch</filename>
            <type>text/plain</type>
            <size>22457</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE1LTAxLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIHRoZSBMTElOVCBhbmQgQmFzZWxpbmUgSklUJ3Mgb3BfY3JlYXRlX2FyZ3VtZW50cyBhbmQg
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCB1c2UgdGhlaXIgbGV4aWNhbEVudmlyb25tZW50IG9wZXJh
bmQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDAyMzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2lsbCBjaGFuZ2UgdGhlIERGRyB0
byB1c2UgdGhlIG9wZXJhbmQgb24gYSBzdWJzZXF1ZW50IHBhc3MuICBGb3Igbm93LAorICAgICAg
ICB0aGUgREZHIHVzZXMgYSB0ZW1wb3JhcnkgdGh1bmsgKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0ZvckRGRygpKSB0bworICAgICAgICByZXRhaW4gdGhlIG9sZCBiZWhhdmlvciBvZiBnZXR0aW5n
IHRoZSBsZXhpY2FsRW52aXJvbWVudCBmcm9tIHRoZQorICAgICAgICBFeGVjU3RhdGUuCisKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIC0gVXNlIHRoZSBsZXhpY2Fs
RW52aXJvbm1lbnQgZnJvbSB0aGUgRXhlY1N0YXRlIGZvciBub3cuCisKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIC0g
VXNlIHRoZSBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNGb3JERkcoKSB0aHVuayBmb3Igbm93Lgor
CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZyYW1lOjpsZXhpY2FsRW52aXJvbm1lbnRPck51bGxwdHIpOgorICAgICAgICAqIGludGVycHJl
dGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAtIEFkZGVkIHRoaXMgY29udmVuaWVuY2UgZnVuY3Rp
b24gdG8gcmV0dXJuIGVpdGhlciB0aGUKKyAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQgb3Ig
YSBudWxscHRyIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkbyBhCisgICAgICAgICAgY29uZGl0
aW9uYWwgY2hlY2sgb24gY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSBhdCBtdWx0aXBsZSBz
aXRlcy4KKworICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xl
eGljYWxFbnZpcm9ubWVudDo6YXJndW1lbnRzR2V0dGVyKToKKwogMjAxNS0wMS0wNyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRoZSBsZXhpY2FsRW52aXJv
bm1lbnQgYXMgYW4gb3BlcmFuZCB0byBvcF9nZXRfYXJndW1lbnRfYnlfdmFsLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNzgx
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OTYsOCArNzk2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2UKICAgICAKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzLCBh
bmQgd2UncmUgYWNjZXNzaW5nIG91dCBvZiBib3VuZHMsIHRoZW4gd2UgaGF2ZSB0byBjcmVhdGUg
dGhlCiAgICAgLy8gYXJndW1lbnRzIGluIGNhc2Ugc29tZW9uZSBoYXMgaW5zdGFsbGVkIGEgZ2V0
dGVyIG9uIGEgbnVtZXJpYyBwcm9wZXJ0eS4KLSAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlKQotICAg
ICAgICBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKSA9IGFyZ3VtZW50c1ZhbHVl
ID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYyk7CisgICAgaWYgKCFhcmd1bWVu
dHNWYWx1ZSkgeworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25t
ZW50ID0gZXhlYy0+bGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCk7CisgICAgICAgIGV4ZWMt
PnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpID0gYXJndW1lbnRzVmFsdWUgPSBBcmd1bWVu
dHM6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpOworICAgIH0K
ICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50c1ZhbHVlLmdldChleGVj
LCBpbmRleCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjI1LDcgKzQyMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCAhZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkg
ewogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwo
bm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzRm9yREZHLCByZXN1bHRH
UFIpKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MjM1LDcgKzQyMzUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBzbG93UGF0aHM7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUFyZ3VtZW50cyhyZXN1bHRHUFIs
IHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGhzKTsKICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aHMs
IHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7CisgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRocywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1l
bnRzRm9yREZHLCByZXN1bHRHUFIpKTsKIAogICAgICAgICBhbHJlYWR5Q3JlYXRlZC5saW5rKCZt
X2ppdCk7IAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyODcsNyArNDI4Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHx8ICFleGVjdXRh
YmxlLT5wYXJhbWV0ZXJDb3VudCgpKSB7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RDcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCByZXN1bHRH
UFIpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywg
cmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRo
aXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7CiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNDI5Nyw3ICs0Mjk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGhz
OwogICAgICAgICBlbWl0QWxsb2NhdGVBcmd1bWVudHMocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwg
c2NyYXRjaEdQUjIsIHNsb3dQYXRocyk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRocywgdGhpcywgb3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0
aHMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7CiAK
ICAgICAgICAgYWxyZWFkeUNyZWF0ZWQubGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NCw2ICsxNTQsMTIgQEAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIENhbGxGcmFtZTo6bGV4aWNhbAog
ICAgIHJldHVybiByZWdpc3RlcnMoKVthY3RpdmF0aW9uUmVnaXN0ZXIub2Zmc2V0KCldLlJlZ2lz
dGVyOjpsZXhpY2FsRW52aXJvbm1lbnQoKTsKIH0KIAorSlNMZXhpY2FsRW52aXJvbm1lbnQqIENh
bGxGcmFtZTo6bGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCkgY29uc3QKK3sKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOworICAgIHJldHVybiBjb2RlQmxv
Y2stPm5lZWRzQWN0aXZhdGlvbigpID8gbGV4aWNhbEVudmlyb25tZW50KCkgOiBudWxscHRyOwor
fQorICAgIAogdm9pZCBDYWxsRnJhbWU6OnNldEFjdGl2YXRpb24oSlNMZXhpY2FsRW52aXJvbm1l
bnQqIGxleGljYWxFbnZpcm9ubWVudCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRo
aXMtPmNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBib29sIGhhc0FjdGl2YXRpb24oKSBjb25z
dDsKICAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCgpIGNv
bnN0OworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50T3JO
dWxscHRyKCkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgdW5jaGVja2VkQWN0aXZhdGlvbigpIGNv
bnN0OwogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggZXhlY3V0aW9uIGJlZ2Fu
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
VmlzaXRvci5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNyArMjcy
LDggQEAgQXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVhdGVBcgogICAgIH0gZWxz
ZSAKICNlbmRpZgogICAgIHsKLSAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUo
dm0sIHBoeXNpY2FsRnJhbWUsIG1vZGUpOworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCog
bGV4aWNhbEVudmlyb25tZW50ID0gcGh5c2ljYWxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50T3JO
dWxscHRyKCk7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBwaHlz
aWNhbEZyYW1lLCBsZXhpY2FsRW52aXJvbm1lbnQsIG1vZGUpOwogICAgICAgICBhcmd1bWVudHMt
PnRlYXJPZmYocGh5c2ljYWxGcmFtZSk7CiAgICAgfQogICAgIHJldHVybiBhcmd1bWVudHM7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw2ICs2ODEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRU8sIEdQUlJlZyk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUwsIEdQ
UlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRP
cGVyYXRpb25fRVN0LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FWiwgaW50MzJfdCk7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUpaWiwgR1BSUmVn
LCBpbnQzMl90LCBpbnQzMl90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwxMiBAQCBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUwgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7
CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKK30K
KyAgICAKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VPIG9wZXJhdGlvbiwgR1BSUmVnIGFyZykKIHsKICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTE4LDExICs5MTgsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0
aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGludCBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwogCiAgICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5jaDMyKE5vdEVx
dWFsLCB0YWdGb3IoZHN0KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyk7CisKKyAgICBlbWl0
TG9hZFBheWxvYWQobGV4aWNhbEVudmlyb25tZW50LCByZWdUMCk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRz
dCwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihkc3QpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIp
OworCiAgICAgYXJnc0NyZWF0ZWQubGluayh0aGlzKTsKIH0KIApAQCAtMTA2NCw2ICsxMDY4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YQogICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCBhcmd1bWVudHMgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBwcm9wZXJ0eSA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IGxleGljYWxFbnZpcm9ubWVudCA9
IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAgICAgSnVtcCBza2lwQXJndW1lbnRzQ3JlYXRpb24gPSBqdW1wKCk7CkBAIC0xMDcxLDcg
KzEwNzYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKTsKKyAgICBlbWl0TG9hZFBheWxvYWQo
bGV4aWNhbEVudmlyb25tZW50LCByZWdUMCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGFyZ3VtZW50cywgcmV0
dXJuVmFsdWVHUFIpOwogICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIp
OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksMTAgKzY4OSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGxleGljYWxFbnZpcm9tZW50
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIEp1bXAgYXJnc0NyZWF0
ZWQgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6
ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVh
dGVBcmd1bWVudHMpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIobGV4aWNhbEVudmlyb21l
bnQsIHJlZ1QwKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywg
cmVnVDApOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZW1p
dFN0b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGRz
dCkpLCByZXR1cm5WYWx1ZUdQUik7CiAKQEAgLTk1NiwxMyArOTU4LDE1IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmEKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgYXJndW1lbnRzID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOworICAgIGludCBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kOwogICAgIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBK
dW1wIHNraXBBcmd1bWVudHNDcmVhdGlvbiA9IGp1bXAoKTsKICAgICAKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGxleGlj
YWxFbnZpcm9ubWVudCwgcmVnVDApOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChhcmd1bWVudHMsIHJldHVyblZh
bHVlR1BSKTsKICAgICBlbWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihW
aXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSksIHJldHVyblZhbHVlR1BSKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQwMiwxMyArMTQwMiwyMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlQWN0CiAgICAgcmV0dXJuIGxleGljYWxFbnZpcm9ubWVudDsKIH0K
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3Rh
dGUqIGV4ZWMpCisvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB0aHVuayBmb3IgdGhlIERG
RyB1bnRpbCB3ZSBhZGQgdGhlIGxleGljYWxFbnZpcm9ubWVudCBvcGVyYW5kIHRvIHRoZSBERkcg
Q3JlYXRlQXJndW1lbnRzIG5vZGUuCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzRm9yREZHKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xleGljYWxFbnZp
cm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gZXhlYy0+bGV4aWNhbEVudmlyb25tZW50T3JO
dWxscHRyKCk7CisgICAgcmV0dXJuIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhleGVjLCBsZXhp
Y2FsRW52aXJvbm1lbnQpOworfQorICAgIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEpTTGV4aWNhbEVudmlyb25tZW50KiBs
ZXhpY2FsRW52aXJvbm1lbnQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgLy8gTkI6IFRoaXMgbmVl
ZHMgdG8gYmUgZXhjZWVkaW5nbHkgY2FyZWZ1bCB3aXRoIHRvcCBjYWxsIGZyYW1lIHRyYWNraW5n
LCBzaW5jZSBpdAogICAgIC8vIG1heSBiZSBjYWxsZWQgZnJvbSBPU1IgZXhpdCwgd2hpbGUgdGhl
IHN0YXRlIG9mIHRoZSBjYWxsIHN0YWNrIGlzIGJpemFycmUuCi0gICAgQXJndW1lbnRzKiByZXN1
bHQgPSBBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYyk7CisgICAgQXJndW1lbnRzKiByZXN1bHQg
PSBBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYywgbGV4aWNhbEVudmlyb25tZW50KTsKICAgICBB
U1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTQxNiw3
ICsxNDIzLDggQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0R1cmluZ09TUkV4aXQo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIERlZmVyR0NGb3JBV2hpbGUoZXhlYy0+dm0oKS5oZWFw
KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKGV4ZWMpOworICAgIEpTTGV4
aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBleGVjLT5sZXhpY2FsRW52aXJv
bm1lbnRPck51bGxwdHIoKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKGV4
ZWMsIGxleGljYWxFbnZpcm9ubWVudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBh
cmd1bWVudHNSZWdpc3RlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBleHRlcm4g
IkMiIHsKICAgICBKY3A6IGNvbnN0IEpTVmFsdWUqCiAgICAgSnNjOiBKU1Njb3BlKgogICAgIEpz
czogSlNTdHJpbmcqCisgICAgTDogSlNMZXhpY2FsRW52aXJvbm1lbnQqCiAgICAgTzogSlNPYmpl
Y3QqCiAgICAgUDogcG9pbnRlciAoY2hhciopCiAgICAgUGM6IEluc3RydWN0aW9uKiBpLmUuIGJ5
dGVjb2RlIFBDCkBAIC0xMzYsNiArMTM3LDcgQEAgdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gKCpDX0pJVE9wZQogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJh
dGlvbl9FSnNzU3QpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgU3RydWN0dXJlKik7CiB0eXBlZGVm
IEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKc3NKc3MpKEV4ZWNTdGF0
ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
ICgqQ19KSVRPcGVyYXRpb25fRUpzc0pzc0pzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBKU1N0
cmluZyosIEpTU3RyaW5nKik7Cit0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklU
T3BlcmF0aW9uX0VMKShFeGVjU3RhdGUqLCBKU0xleGljYWxFbnZpcm9ubWVudCopOwogdHlwZWRl
ZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FTykoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRp
b25fRU9aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FU3QpKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopOwpAQCAtMjk0LDcgKzI5Niw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9m
aWxlRGlkQ2EKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbENhbGwoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tIYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb24oRXhlY1N0YXRlKiwgSlNTY29w
ZSogY3VycmVudFNjb3BlLCBpbnQzMl90IG9mZnNldCkgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzRm9y
REZHKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jh
cnkgdGh1bmsgZm9yIHRoZSBERkcgdW50aWwgd2UgYWRkIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQg
b3BlcmFuZCB0byB0aGUgREZHIENyZWF0ZUFyZ3VtZW50cyBub2RlLgorSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqLCBKU0xleGljYWxFbnZp
cm9ubWVudCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHNEdXJpbmdPU1JFeGl0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoKEV4
ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlWYWxEZWZhdWx0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5URVJO
QUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Miw3ICs3NjIsMTYgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bQogICAgIExMSU5UX0JFR0lOKCk7
CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CiAgICAgaWYg
KCFhcmd1bWVudHMpIHsKLSAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUodm0s
IGV4ZWMpOworICAgICAgICBpbnQgbGV4aWNhbEVudmlyb25tZW50UmVnID0gcGNbNF0udS5vcGVy
YW5kOworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0g
bnVsbHB0cjsKKyAgICAgICAgLy8gVGhlIGxleGljYWxFbnZpcm9ubWVudFJlZyBvcGVyYW5kIGNh
biBvbmx5IGJlIHRoZSBsb2NhbCBkZXNpZ25hdGVkIGZvciB0aGUgbGV4aWNhbEVudmlyb25tZW50
CisgICAgICAgIC8vIGlmIGF2YWlsYWJsZS4gT3RoZXJ3aXNlLCBpdCdzIGEgY29uc3RhbnQgZW1w
dHkgSlNWYWx1ZSBpbXBseWluZyBhIG51bGxwdHIuCisgICAgICAgIGlmICghVmlydHVhbFJlZ2lz
dGVyKGxleGljYWxFbnZpcm9ubWVudFJlZykuaXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBB
U1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgpID09
IGxleGljYWxFbnZpcm9ubWVudFJlZyk7CisgICAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQg
PSBleGVjLT51bmNoZWNrZWRSKGxleGljYWxFbnZpcm9ubWVudFJlZykubGV4aWNhbEVudmlyb25t
ZW50KCk7CisgICAgICAgIH0KKyAgICAgICAgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6
OmNyZWF0ZSh2bSwgZXhlYywgbGV4aWNhbEVudmlyb25tZW50KSk7CisKICAgICAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOwogICAg
ICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFs
UmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkub2Zmc2V0KCkpID0gYXJndW1lbnRzOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE3ODEy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxMCArNDYsMTAgQEAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTTm9u
RmluYWxPYmplYwogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwog
Ci0gICAgc3RhdGljIEFyZ3VtZW50cyogY3JlYXRlKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEFyZ3VtZW50c01vZGUgbW9kZSA9IE5vcm1hbEFyZ3VtZW50c0NyZWF0aW9uTW9kZSkKKyAg
ICBzdGF0aWMgQXJndW1lbnRzKiBjcmVhdGUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgQXJndW1lbnRzTW9kZSBt
b2RlID0gTm9ybWFsQXJndW1lbnRzQ3JlYXRpb25Nb2RlKQogICAgIHsKICAgICAgICAgQXJndW1l
bnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcmd1bWVudHM+KHZt
LmhlYXAsIG9mZnNldE9mSW5saW5lUmVnaXN0ZXJBcnJheSgpICsgcmVnaXN0ZXJBcnJheVNpemVJ
bkJ5dGVzKGNhbGxGcmFtZSkpKSBBcmd1bWVudHMoY2FsbEZyYW1lKTsKLSAgICAgICAgYXJndW1l
bnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUsIG1vZGUpOworICAgICAgICBhcmd1bWVudHMt
PmZpbmlzaENyZWF0aW9uKGNhbGxGcmFtZSwgbGV4aWNhbEVudmlyb25tZW50LCBtb2RlKTsKICAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAgICB9CiAgICAgICAgIApAQCAtMTA1LDcgKzEwNSw3
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0
UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oQ2FsbEZyYW1lKiwgQXJndW1lbnRzTW9kZSk7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihDYWxsRnJhbWUqLCBKU0xleGljYWxFbnZpcm9ubWVudCosIEFyZ3VtZW50c01vZGUp
OwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oQ2FsbEZyYW1lKiwgSW5saW5lQ2FsbEZyYW1lKiwg
QXJndW1lbnRzTW9kZSk7CiAKIHByaXZhdGU6CkBAIC0yNzEsNyArMjcxLDcgQEAgaW5saW5lIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4mIEFyZ3VtZQogICAgIHJldHVybiBtX2xleGljYWxFbnZp
cm9ubWVudC0+cmVnaXN0ZXJBdChpbmRleCAtIG1fc2xvd0FyZ3VtZW50RGF0YS0+Ynl0ZWNvZGVU
b01hY2hpbmVDYXB0dXJlT2Zmc2V0KCkpOwogfQogCi1pbmxpbmUgdm9pZCBBcmd1bWVudHM6OmZp
bmlzaENyZWF0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBBcmd1bWVudHNNb2RlIG1vZGUpCitp
bmxpbmUgdm9pZCBBcmd1bWVudHM6OmZpbmlzaENyZWF0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBBcmd1bWVudHNNb2Rl
IG1vZGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oY2FsbEZyYW1lLT52bSgpKTsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CkBAIC0zMDAsOCArMzAwLDggQEAgaW5saW5lIHZv
aWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihDYQogICAgICAgICAgICAgICAgIGNvZGVCbG9j
ay0+ZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRBY3RpdmF0aW9uUmVnaXN0ZXJzKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJhbWUtPmxleGljYWxFbnZpcm9ubWVudCgpKTsKLSAg
ICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50LnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMs
IGNhbGxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50KCkpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobGV4aWNhbEVudmlyb25tZW50ICYmIGxleGljYWxFbnZpcm9ubWVudCA9PSBjYWxsRnJh
bWUtPmxleGljYWxFbnZpcm9ubWVudCgpKTsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25t
ZW50LnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIGxleGljYWxFbnZpcm9ubWVudCk7CiAgICAg
ICAgIH0KICAgICAgICAgLy8gVGhlIGJ5dGVjb2RlIGdlbmVyYXRvciBvbWl0cyBvcF90ZWFyX29m
Zl9sZXhpY2FsX2Vudmlyb25tZW50IGluIGNhc2VzIG9mIG5vCiAgICAgICAgIC8vIGRlY2xhcmVk
IHBhcmFtZXRlcnMsIHNvIHdlIG5lZWQgdG8gdGVhciBvZmYgaW1tZWRpYXRlbHkuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw3ICsyMjEsMTUgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dldF9jYWxsZWUpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y3JlYXRlX2FyZ3VtZW50cykKIHsKICAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgYXJndW1lbnRz
ID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYykpOworICAgIGludCBsZXhpY2Fs
RW52aXJvbm1lbnRSZWcgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgSlNMZXhpY2FsRW52aXJvbm1l
bnQqIGxleGljYWxFbnZpcm9ubWVudCA9IG51bGxwdHI7CisgICAgLy8gVGhlIGxleGljYWxFbnZp
cm9ubWVudFJlZyBvcGVyYW5kIGNhbiBvbmx5IGJlIHRoZSBsb2NhbCBkZXNpZ25hdGVkIGZvciB0
aGUgbGV4aWNhbEVudmlyb25tZW50CisgICAgLy8gaWYgYXZhaWxhYmxlLiBPdGhlcndpc2UsIGl0
J3MgYSBjb25zdGFudCBlbXB0eSBKU1ZhbHVlIGltcGx5aW5nIGEgbnVsbHB0ci4KKyAgICBpZiAo
IVZpcnR1YWxSZWdpc3RlcihsZXhpY2FsRW52aXJvbm1lbnRSZWcpLmlzQ29uc3RhbnQoKSkgewor
ICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpLm9m
ZnNldCgpID09IGxleGljYWxFbnZpcm9ubWVudFJlZyk7CisgICAgICAgIGxleGljYWxFbnZpcm9u
bWVudCA9IGV4ZWMtPnVuY2hlY2tlZFIobGV4aWNhbEVudmlyb25tZW50UmVnKS5sZXhpY2FsRW52
aXJvbm1lbnQoKTsKKyAgICB9CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3Vt
ZW50czo6Y3JlYXRlKHZtLCBleGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpKTsKICAgICBDSEVDS19F
WENFUFRJT04oKTsKICAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1
bWVudHM7CiAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
VmlydHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLm9mZnNldCgpKSA9IGFyZ3VtZW50czsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA4LDcgKzIwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTTGV4aWNhbEVudmlyb25tZW50OjphcmcK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudHMpOwogICAgIGludCByZWFs
QXJndW1lbnRzUmVnaXN0ZXIgPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
UmVnaXN0ZXIpLm9mZnNldCgpOwogCi0gICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFy
Z3VtZW50czo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lKSk7CisgICAgSlNWYWx1
ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwg
Y2FsbEZyYW1lLCBsZXhpY2FsRW52aXJvbm1lbnQpKTsKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoYXJndW1lbnRzUmVnaXN0ZXIub2Zmc2V0KCkpID0gYXJndW1lbnRzOwogICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihyZWFsQXJndW1lbnRzUmVnaXN0ZXIpID0gYXJndW1lbnRzOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244296</attachid>
            <date>2015-01-08 15:01:24 -0800</date>
            <delta_ts>2015-01-08 16:10:03 -0800</delta_ts>
            <desc>patch 4</desc>
            <filename>bug-140236.patch</filename>
            <type>text/plain</type>
            <size>25583</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE1LTAxLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIHRoZSBMTElOVCBhbmQgQmFzZWxpbmUgSklUJ3Mgb3BfY3JlYXRlX2FyZ3VtZW50cyBhbmQg
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCB1c2UgdGhlaXIgbGV4aWNhbEVudmlyb25tZW50IG9wZXJh
bmQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDAyMzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2lsbCBjaGFuZ2UgdGhlIERGRyB0
byB1c2UgdGhlIG9wZXJhbmQgb24gYSBzdWJzZXF1ZW50IHBhc3MuICBGb3Igbm93LAorICAgICAg
ICB0aGUgREZHIHVzZXMgYSB0ZW1wb3JhcnkgdGh1bmsgKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0ZvckRGRygpKSB0bworICAgICAgICByZXRhaW4gdGhlIG9sZCBiZWhhdmlvciBvZiBnZXR0aW5n
IHRoZSBsZXhpY2FsRW52aXJvbWVudCBmcm9tIHRoZQorICAgICAgICBFeGVjU3RhdGUuCisKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3VtZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSWZOZWNlc3NhcnkpOgorICAgICAgICAt
IFdoZW4gdGhlIGxleGljYWxFbnZpcm9ubWVudCBpcyBub3QgYXZhaWxhYmxlLCBwYXNzIHRoZSBp
bnZhbGlkIFZpcnR1YWxSZWdpc3RlcgorICAgICAgICAgIGluc3RlYWQgb2YgYW4gZW1wdHkgSlNW
YWx1ZSBhcyB0aGUgbGV4aWNhbEVudmlyb25tZW50IG9wZXJhbmQuCisKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIC0gVXNlIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQg
ZnJvbSB0aGUgRXhlY1N0YXRlIGZvciBub3cuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIC0gVXNlIHRoZSBvcGVy
YXRpb25DcmVhdGVBcmd1bWVudHNGb3JERkcoKSB0aHVuayBmb3Igbm93LgorCisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsZXhp
Y2FsRW52aXJvbm1lbnRPck51bGxwdHIpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAtIEFkZGVkIHRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmV0dXJu
IGVpdGhlciB0aGUKKyAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQgb3IgYSBudWxscHRyIHNv
IHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkbyBhCisgICAgICAgICAgY29uZGl0aW9uYWwgY2hlY2sg
b24gY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSBhdCBtdWx0aXBsZSBzaXRlcy4KKworICAg
ICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNr
VmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoK
KyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1l
bnQ6OmFyZ3VtZW50c0dldHRlcik6CisKIDIwMTUtMDEtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUeXBlIGNoZWNrIE5T
QXJyYXkncyBpbiBPYmpDIEludGVyZmFjZXMgaGF2ZSB0aGUgcmlnaHQgb2JqZWN0IHR5cGVzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4Miw4ICsyODIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mCiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVudHNFYWdlcmx5KCkgfHwgc2hvdWxk
VGVhck9mZkFyZ3VtZW50c0VhZ2VybHkoKSkgewogICAgICAgICAgICAgZW1pdE9wY29kZShvcF9j
cmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1
bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fY29kZUJsb2Nr
LT5oYXNBY3RpdmF0aW9uUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lz
dGVyKCkuaXNWYWxpZCgpKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2Nv
ZGVCbG9jay0+aGFzQWN0aXZhdGlvblJlZ2lzdGVyKCkgPyBtX2NvZGVCbG9jay0+YWN0aXZhdGlv
blJlZ2lzdGVyKCkub2Zmc2V0KCkgOiBhZGRDb25zdGFudFZhbHVlKEpTVmFsdWUoKSktPmluZGV4
KCkpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hY3Rp
dmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9j
ay0+aGFzQWN0aXZhdGlvblJlZ2lzdGVyKCkpIHsKICAgICAgICAgICAgICAgICBSZWdpc3RlcklE
KiBhcmd1bWVudHNSZWdpc3RlciA9ICZyZWdpc3RlckZvcihtX2NvZGVCbG9jay0+YXJndW1lbnRz
UmVnaXN0ZXIoKS5vZmZzZXQoKSk7CkBAIC0xNTI1LDggKzE1MjQsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAgICAgQVNTRVJUKGJhc2UtPnZpcnR1YWxSZWdp
c3RlcigpID09IG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb3BlcnR5LT5pbmRleCgpKTsKLSAgICBBU1NFUlQoIW1fY29kZUJsb2NrLT5oYXNBY3RpdmF0
aW9uUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkuaXNWYWxp
ZCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmhhc0FjdGl2YXRp
b25SZWdpc3RlcigpID8gbV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgp
IDogYWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlKCkpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTE3NzcsOCArMTc3NSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZUFyZ3VtZW50c0kKICAgICBlbWl0T3Bj
b2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2Nv
ZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgQVNTRVJUKCFoYXNX
YXRjaGFibGVWYXJpYWJsZShtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKS5vZmZzZXQo
KSkpOwotICAgIEFTU0VSVCghbV9jb2RlQmxvY2stPmhhc0FjdGl2YXRpb25SZWdpc3RlcigpIHx8
IG1fY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpOwotICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+aGFzQWN0aXZhdGlvblJlZ2lzdGVyKCkgPyBt
X2NvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkgOiBhZGRDb25zdGFudFZh
bHVlKEpTVmFsdWUoKSktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2Nv
ZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogfQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogZnVuYywgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTYsOCArNzk2
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAKICAg
ICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzLCBhbmQgd2UncmUgYWNjZXNzaW5nIG91dCBv
ZiBib3VuZHMsIHRoZW4gd2UgaGF2ZSB0byBjcmVhdGUgdGhlCiAgICAgLy8gYXJndW1lbnRzIGlu
IGNhc2Ugc29tZW9uZSBoYXMgaW5zdGFsbGVkIGEgZ2V0dGVyIG9uIGEgbnVtZXJpYyBwcm9wZXJ0
eS4KLSAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlKQotICAgICAgICBleGVjLT51bmNoZWNrZWRSKGFy
Z3VtZW50c1JlZ2lzdGVyKSA9IGFyZ3VtZW50c1ZhbHVlID0gQXJndW1lbnRzOjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZXhlYyk7CisgICAgaWYgKCFhcmd1bWVudHNWYWx1ZSkgeworICAgICAgICBKU0xl
eGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gZXhlYy0+bGV4aWNhbEVudmly
b25tZW50T3JOdWxscHRyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVn
aXN0ZXIpID0gYXJndW1lbnRzVmFsdWUgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT52bSgpLCBl
eGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpOworICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFyZ3VtZW50c1ZhbHVlLmdldChleGVjLCBpbmRleCkpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjI1LDcgKzQyMjUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB8
fCAhZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkgewogICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwg
dmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAgICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzLCByZXN1bHRHUFIp
KTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzRm9yREZHLCByZXN1bHRHUFIpKTsKICAgICAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC00MjM1LDcgKzQyMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aHM7CiAgICAgICAg
IGVtaXRBbGxvY2F0ZUFyZ3VtZW50cyhyZXN1bHRHUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQ
Uiwgc2xvd1BhdGhzKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aHMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFy
Z3VtZW50cywgcmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQ
YXRocywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzRm9yREZHLCByZXN1bHRHUFIpKTsK
IAogICAgICAgICBhbHJlYWR5Q3JlYXRlZC5saW5rKCZtX2ppdCk7IAogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyODcsNyArNDI4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIHx8ICFleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSB7
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQuYnJhbmNo
VGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQs
IHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7CisgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3Vt
ZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7CiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDI5Nyw3ICs0Mjk3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGhzOwogICAgICAgICBlbWl0QWxsb2NhdGVB
cmd1bWVudHMocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRocyk7
CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KHNsb3dQYXRocywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzLCByZXN1bHRHUFIpKTsK
KyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aHMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0
ZUFyZ3VtZW50c0ZvckRGRywgcmVzdWx0R1BSKSk7CiAKICAgICAgICAgYWxyZWFkeUNyZWF0ZWQu
bGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAko
cmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsMTIgQEAgSlNMZXhpY2Fs
RW52aXJvbm1lbnQqIENhbGxGcmFtZTo6bGV4aWNhbAogICAgIHJldHVybiByZWdpc3RlcnMoKVth
Y3RpdmF0aW9uUmVnaXN0ZXIub2Zmc2V0KCldLlJlZ2lzdGVyOjpsZXhpY2FsRW52aXJvbm1lbnQo
KTsKIH0KIAorSlNMZXhpY2FsRW52aXJvbm1lbnQqIENhbGxGcmFtZTo6bGV4aWNhbEVudmlyb25t
ZW50T3JOdWxscHRyKCkgY29uc3QKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMt
PmNvZGVCbG9jaygpOworICAgIHJldHVybiBjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpID8g
bGV4aWNhbEVudmlyb25tZW50KCkgOiBudWxscHRyOworfQorICAgIAogdm9pZCBDYWxsRnJhbWU6
OnNldEFjdGl2YXRpb24oSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCkK
IHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNp
b24gMTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAog
ICAgICAgICBib29sIGhhc0FjdGl2YXRpb24oKSBjb25zdDsKICAgICAgICAgSlNMZXhpY2FsRW52
aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCgpIGNvbnN0OworICAgICAgICBKU0xleGljYWxF
bnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCkgY29uc3Q7CiAgICAgICAg
IEpTVmFsdWUgdW5jaGVja2VkQWN0aXZhdGlvbigpIGNvbnN0OwogCiAgICAgICAgIC8vIEdsb2Jh
bCBvYmplY3QgaW4gd2hpY2ggZXhlY3V0aW9uIGJlZ2FuLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDE3
ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNyArMjcyLDggQEAgQXJndW1lbnRzKiBTdGFja1Zp
c2l0b3I6OkZyYW1lOjpjcmVhdGVBcgogICAgIH0gZWxzZSAKICNlbmRpZgogICAgIHsKLSAgICAg
ICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUodm0sIHBoeXNpY2FsRnJhbWUsIG1vZGUp
OworICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gcGh5
c2ljYWxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50T3JOdWxscHRyKCk7CisgICAgICAgIGFyZ3Vt
ZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBwaHlzaWNhbEZyYW1lLCBsZXhpY2FsRW52aXJv
bm1lbnQsIG1vZGUpOwogICAgICAgICBhcmd1bWVudHMtPnRlYXJPZmYocGh5c2ljYWxGcmFtZSk7
CiAgICAgfQogICAgIHJldHVybiBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY4MSw2ICs2ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVy
YXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRU8sIEdQUlJlZyk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUwsIEdQUlJlZyk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUwsIFRydXN0ZWRJbW1Q
dHIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VTdCwgU3RydWN0dXJlKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVosIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VKWlosIEdQUlJlZywg
aW50MzJfdCwgaW50MzJfdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsMTggQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VMIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwor
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Cit9Cisg
ICAgCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FTCBvcGVyYXRpb24sIFRydXN0ZWRJbW1QdHIgYXJnMSkKK3sKKyAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKK30KKyAgICAKIEFMV0FZU19JTkxJTkUg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VP
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZykKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDExICs5MTgsMTggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRf
b3BfY3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBs
ZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAg
ICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoZHN0KSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyk7CisKKyAgICBpZiAoVmlydHVhbFJlZ2lzdGVyKGxleGlj
YWxFbnZpcm9ubWVudCkuaXNWYWxpZCgpKSB7CisgICAgICAgIGVtaXRMb2FkUGF5bG9hZChsZXhp
Y2FsRW52aXJvbm1lbnQsIHJlZ1QwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAg
IGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZW1pdFN0b3JlQ2VsbCh1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGRzdCkpLm9mZnNldCgp
LCByZXR1cm5WYWx1ZUdQUik7CisKICAgICBhcmdzQ3JlYXRlZC5saW5rKHRoaXMpOwogfQogCkBA
IC0xMDY0LDYgKzEwNzEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5
X3ZhCiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAg
aW50IGFyZ3VtZW50cyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgaW50
IHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgbGV4
aWNhbEVudmlyb25tZW50ID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKIAogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBKdW1wIHNraXBBcmd1bWVudHNDcmVhdGlvbiA9IGp1
bXAoKTsKQEAgLTEwNzEsNyArMTA3OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Fy
Z3VtZW50X2J5X3ZhCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKTsKKyAg
ICBpZiAoVmlydHVhbFJlZ2lzdGVyKGxleGljYWxFbnZpcm9ubWVudCkuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGVtaXRMb2FkUGF5bG9hZChsZXhpY2FsRW52aXJvbm1lbnQsIHJlZ1QwKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMsIHJlZ1QwKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMsIFRy
dXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgIGVtaXRTdG9yZUNlbGwoYXJndW1lbnRzLCByZXR1
cm5WYWx1ZUdQUik7CiAgICAgZW1pdFN0b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cykpLm9mZnNldCgpLCByZXR1cm5WYWx1ZUdQUik7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJl
dmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY4OSwxMCArNjg5LDE1IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9zY29wZShJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVu
dHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgbGV4aWNhbEVudmlyb25tZW50
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIEp1bXAgYXJnc0NyZWF0
ZWQgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6
ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVh
dGVBcmd1bWVudHMpOworICAgIGlmIChWaXJ0dWFsUmVnaXN0ZXIobGV4aWNhbEVudmlyb25tZW50
KS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihsZXhpY2FsRW52
aXJvbm1lbnQsIHJlZ1QwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVB
cmd1bWVudHMsIHJlZ1QwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25DcmVhdGVBcmd1bWVudHMsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgIGVtaXRT
dG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZW1pdFN0b3JlQ2VsbCh1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGRzdCkpLCByZXR1cm5WYWx1ZUdQ
Uik7CiAKQEAgLTk1NiwxMyArOTYxLDE4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYXJn
dW1lbnRfYnlfdmEKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKICAgICBpbnQgYXJndW1lbnRzID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ICAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAg
IGludCBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
OwogICAgIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBKdW1wIHNraXBBcmd1bWVudHND
cmVhdGlvbiA9IGp1bXAoKTsKICAgICAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJndW1l
bnRzKTsKKyAgICBpZiAoVmlydHVhbFJlZ2lzdGVyKGxleGljYWxFbnZpcm9ubWVudCkuaXNWYWxp
ZCgpKSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIobGV4aWNhbEVudmlyb25tZW50
LCByZWdUMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
LCByZWdUMCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKICAgICBlbWl0U3RvcmVDZWxs
KGFyZ3VtZW50cywgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpKSwgcmV0dXJuVmFs
dWVHUFIpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAxNzgxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAyLDEzICsxNDAyLDIwIEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3QKICAgICByZXR1cm4gbGV4
aWNhbEVudmlyb25tZW50OwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYykKKy8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9y
YXJ5IHRodW5rIGZvciB0aGUgREZHIHVudGlsIHdlIGFkZCB0aGUgbGV4aWNhbEVudmlyb25tZW50
IG9wZXJhbmQgdG8gdGhlIERGRyBDcmVhdGVBcmd1bWVudHMgbm9kZS4KK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNGb3JERkcoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBleGVjLT5s
ZXhpY2FsRW52aXJvbm1lbnRPck51bGxwdHIoKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzKGV4ZWMsIGxleGljYWxFbnZpcm9ubWVudCk7Cit9CisgICAgCitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNM
ZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCkKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
ICAgICAvLyBOQjogVGhpcyBuZWVkcyB0byBiZSBleGNlZWRpbmdseSBjYXJlZnVsIHdpdGggdG9w
IGNhbGwgZnJhbWUgdHJhY2tpbmcsIHNpbmNlIGl0CiAgICAgLy8gbWF5IGJlIGNhbGxlZCBmcm9t
IE9TUiBleGl0LCB3aGlsZSB0aGUgc3RhdGUgb2YgdGhlIGNhbGwgc3RhY2sgaXMgYml6YXJyZS4K
LSAgICBBcmd1bWVudHMqIHJlc3VsdCA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBleGVjKTsKKyAg
ICBBcmd1bWVudHMqIHJlc3VsdCA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBleGVjLCBsZXhpY2Fs
RW52aXJvbm1lbnQpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkBAIC0xNDE2LDcgKzE0MjMsOCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlQXJnCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJn
dW1lbnRzRHVyaW5nT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgRGVmZXJHQ0ZvckFX
aGlsZShleGVjLT52bSgpLmhlYXApOwotICAgIHJldHVybiBvcGVyYXRpb25DcmVhdGVBcmd1bWVu
dHMoZXhlYyk7CisgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9
IGV4ZWMtPmxleGljYWxFbnZpcm9ubWVudE9yTnVsbHB0cigpOworICAgIHJldHVybiBvcGVyYXRp
b25DcmVhdGVBcmd1bWVudHMoZXhlYywgbGV4aWNhbEVudmlyb25tZW50KTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRBcmd1bWVudHNMZW5ndGgoRXhlY1N0
YXRlKiBleGVjLCBpbnQzMl90IGFyZ3VtZW50c1JlZ2lzdGVyKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw2ICs3MSw3IEBAIGV4dGVybiAiQyIgewogICAgIEpjcDogY29uc3QgSlNWYWx1ZSoKICAgICBK
c2M6IEpTU2NvcGUqCiAgICAgSnNzOiBKU1N0cmluZyoKKyAgICBMOiBKU0xleGljYWxFbnZpcm9u
bWVudCoKICAgICBPOiBKU09iamVjdCoKICAgICBQOiBwb2ludGVyIChjaGFyKikKICAgICBQYzog
SW5zdHJ1Y3Rpb24qIGkuZS4gYnl0ZWNvZGUgUEMKQEAgLTEzNiw2ICsxMzcsNyBAQCB0eXBlZGVm
IEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlCiB0eXBlZGVmIEpTQ2VsbCogSklUX09Q
RVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKc3NTdCkoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBT
dHJ1Y3R1cmUqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRp
b25fRUpzc0pzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwogdHlwZWRlZiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FSnNzSnNzSnNzKShFeGVjU3Rh
dGUqLCBKU1N0cmluZyosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKK3R5cGVkZWYgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRUwpKEV4ZWNTdGF0ZSosIEpTTGV4aWNhbEVu
dmlyb25tZW50Kik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0
aW9uX0VPKShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJf
dCk7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VTdCko
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CkBAIC0yOTQsNyArMjk2LDggQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblByb2ZpbGVEaWRDYQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blByb2ZpbGVXaWxsQ2FsbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0hhc0luc3RhbmNl
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bihFeGVjU3RhdGUqLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIGludDMyX3Qgb2Zmc2V0KSBXVEZf
SU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVBcmd1bWVudHNGb3JERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOyAvLyBGSVhN
RTogVGhpcyBpcyBhIHRlbXBvcmFyeSB0aHVuayBmb3IgdGhlIERGRyB1bnRpbCB3ZSBhZGQgdGhl
IGxleGljYWxFbnZpcm9ubWVudCBvcGVyYW5kIHRvIHRoZSBERkcgQ3JlYXRlQXJndW1lbnRzIG5v
ZGUuCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKEV4ZWNT
dGF0ZSosIEpTTGV4aWNhbEVudmlyb25tZW50KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0R1cmluZ09TUkV4aXQoRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRBcmd1bWVudHNMZW5ndGgoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbERlZmF1bHQoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTc4MTIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzYyLDcgKzc2MiwxMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2FyZ3Vt
CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKTsKICAgICBpZiAoIWFyZ3VtZW50cykgewotICAgICAgICBhcmd1bWVudHMgPSBB
cmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYyk7CisgICAgICAgIGludCBsZXhpY2FsRW52aXJvbm1l
bnRSZWcgPSBwY1s0XS51Lm9wZXJhbmQ7CisgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBs
ZXhpY2FsRW52aXJvbm1lbnQgPSBWaXJ0dWFsUmVnaXN0ZXIobGV4aWNhbEVudmlyb25tZW50UmVn
KS5pc1ZhbGlkKCkgPworICAgICAgICAgICAgZXhlYy0+dW5jaGVja2VkUihsZXhpY2FsRW52aXJv
bm1lbnRSZWcpLmxleGljYWxFbnZpcm9ubWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgYXJndW1l
bnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYywgbGV4aWNhbEVudmlyb25t
ZW50KSk7CisKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIExMSU5U
X09QKDIpID0gYXJndW1lbnRzOwogICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkub2Zmc2V0
KCkpID0gYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMCArNDYsMTAgQEAgY2xhc3Mg
QXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplYwogcHVibGljOgogICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEFyZ3VtZW50cyogY3JlYXRlKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEFyZ3VtZW50c01vZGUgbW9kZSA9IE5vcm1hbEFy
Z3VtZW50c0NyZWF0aW9uTW9kZSkKKyAgICBzdGF0aWMgQXJndW1lbnRzKiBjcmVhdGUoVk0mIHZt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZp
cm9ubWVudCwgQXJndW1lbnRzTW9kZSBtb2RlID0gTm9ybWFsQXJndW1lbnRzQ3JlYXRpb25Nb2Rl
KQogICAgIHsKICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxBcmd1bWVudHM+KHZtLmhlYXAsIG9mZnNldE9mSW5saW5lUmVnaXN0ZXJBcnJh
eSgpICsgcmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKGNhbGxGcmFtZSkpKSBBcmd1bWVudHMoY2Fs
bEZyYW1lKTsKLSAgICAgICAgYXJndW1lbnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUsIG1v
ZGUpOworICAgICAgICBhcmd1bWVudHMtPmZpbmlzaENyZWF0aW9uKGNhbGxGcmFtZSwgbGV4aWNh
bEVudmlyb25tZW50LCBtb2RlKTsKICAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAgICB9CiAg
ICAgICAgIApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oQ2FsbEZyYW1lKiwgQXJndW1lbnRz
TW9kZSk7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihDYWxsRnJhbWUqLCBKU0xleGljYWxFbnZp
cm9ubWVudCosIEFyZ3VtZW50c01vZGUpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oQ2FsbEZy
YW1lKiwgSW5saW5lQ2FsbEZyYW1lKiwgQXJndW1lbnRzTW9kZSk7CiAKIHByaXZhdGU6CkBAIC0y
NzEsNyArMjcxLDcgQEAgaW5saW5lIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIEFyZ3VtZQog
ICAgIHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudC0+cmVnaXN0ZXJBdChpbmRleCAtIG1fc2xv
d0FyZ3VtZW50RGF0YS0+Ynl0ZWNvZGVUb01hY2hpbmVDYXB0dXJlT2Zmc2V0KCkpOwogfQogCi1p
bmxpbmUgdm9pZCBBcmd1bWVudHM6OmZpbmlzaENyZWF0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBBcmd1bWVudHNNb2RlIG1vZGUpCitpbmxpbmUgdm9pZCBBcmd1bWVudHM6OmZpbmlzaENyZWF0
aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVu
dmlyb25tZW50LCBBcmd1bWVudHNNb2RlIG1vZGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CkBAIC0z
MDAsOCArMzAwLDggQEAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihDYQog
ICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+ZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRBY3RpdmF0
aW9uUmVnaXN0ZXJzKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb2RlQmxvY2stPm5lZWRz
QWN0aXZhdGlvbigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJhbWUtPmxl
eGljYWxFbnZpcm9ubWVudCgpKTsKLSAgICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50LnNl
dChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIGNhbGxGcmFtZS0+bGV4aWNhbEVudmlyb25tZW50KCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGV4aWNhbEVudmlyb25tZW50ICYmIGxleGlj
YWxFbnZpcm9ubWVudCA9PSBjYWxsRnJhbWUtPmxleGljYWxFbnZpcm9ubWVudCgpKTsKKyAgICAg
ICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50LnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIGxl
eGljYWxFbnZpcm9ubWVudCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gVGhlIGJ5dGVjb2RlIGdl
bmVyYXRvciBvbWl0cyBvcF90ZWFyX29mZl9sZXhpY2FsX2Vudmlyb25tZW50IGluIGNhc2VzIG9m
IG5vCiAgICAgICAgIC8vIGRlY2xhcmVkIHBhcmFtZXRlcnMsIHNvIHdlIG5lZWQgdG8gdGVhciBv
ZmYgaW1tZWRpYXRlbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyMSw3ICsyMjEsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9jYWxsZWUpCiBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKIHsKICAgICBCRUdJTigp
OwotICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZSh2bSwg
ZXhlYykpOworICAgIGludCBsZXhpY2FsRW52aXJvbm1lbnRSZWcgPSBwY1syXS51Lm9wZXJhbmQ7
CisgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9IFZpcnR1YWxS
ZWdpc3RlcihsZXhpY2FsRW52aXJvbm1lbnRSZWcpLmlzVmFsaWQoKSA/CisgICAgICAgIGV4ZWMt
PnVuY2hlY2tlZFIobGV4aWNhbEVudmlyb25tZW50UmVnKS5sZXhpY2FsRW52aXJvbm1lbnQoKSA6
IG51bGxwdHI7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3Jl
YXRlKHZtLCBleGVjLCBsZXhpY2FsRW52aXJvbm1lbnQpKTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKICAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CiAg
ICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJl
Z2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLm9mZnNldCgpKSA9IGFyZ3VtZW50czsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5jcHAJKHJldmlzaW9uIDE3ODEyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIw
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTTGV4aWNhbEVudmlyb25tZW50OjphcmcKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudHMpOwogICAgIGludCByZWFsQXJndW1lbnRz
UmVnaXN0ZXIgPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIp
Lm9mZnNldCgpOwogCi0gICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6
Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lKSk7CisgICAgSlNWYWx1ZSBhcmd1bWVu
dHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1l
LCBsZXhpY2FsRW52aXJvbm1lbnQpKTsKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYXJndW1l
bnRzUmVnaXN0ZXIub2Zmc2V0KCkpID0gYXJndW1lbnRzOwogICAgIGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihyZWFsQXJndW1lbnRzUmVnaXN0ZXIpID0gYXJndW1lbnRzOwogICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>