<?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>152227</bug_id>
          
          <creation_ts>2015-12-13 04:42:12 -0800</creation_ts>
          <short_desc>[ES6] Handle new_generator_func / new_generator_func_exp in DFG / FTL</short_desc>
          <delta_ts>2015-12-17 02:33:40 -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>WebKit 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>152333</dependson>
          <blocked>151546</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148809</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-13 04:42:12 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149311</commentid>
    <comment_count>1</comment_count>
      <attachid>267375</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-15 09:25:06 -0800</bug_when>
    <thetext>Created attachment 267375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149312</commentid>
    <comment_count>2</comment_count>
      <attachid>267375</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-15 09:36:29 -0800</bug_when>
    <thetext>Comment on attachment 267375
Patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4581
&gt; +            if (opcodeID == op_new_func_exp || opcodeID == op_new_generator_func_exp) {
&gt;                  // Curly braces are necessary
&gt; +                RELEASE_ASSERT(OPCODE_LENGTH(op_new_func_exp) == OPCODE_LENGTH(op_new_generator_func_exp));
&gt;                  NEXT_OPCODE(op_new_func_exp);

Couldn&apos;t we just replace this entire if/else statement with &quot;NEXT_OPCODE(opcodeID)&quot;?

&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:142
&gt; +    enum class Kind { Escaped, Object, Activation, Function, ArrowFunction, GeneratorFunction };

Can you add a test where allocation sinking kicks in for NewGeneratorFunction? (Or do we already have one?)

&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1461
&gt; +                allocation.kind() == Allocation::Kind::GeneratorFunction ?  NewGeneratorFunction : NewFunction;

style: extra space after &quot;?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149317</commentid>
    <comment_count>3</comment_count>
      <attachid>267375</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2015-12-15 09:49:56 -0800</bug_when>
    <thetext>Comment on attachment 267375
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4581
&gt;&gt;                  NEXT_OPCODE(op_new_func_exp);
&gt; 
&gt; Couldn&apos;t we just replace this entire if/else statement with &quot;NEXT_OPCODE(opcodeID)&quot;?

You can&apos;t do that because it uses NEXT_OPCODE uses OPCODE_LENGTH which appends _length to the name you provide. I think the RELEASE_ASSERT can be a static_assert, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149318</commentid>
    <comment_count>4</comment_count>
      <attachid>267375</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-15 09:52:35 -0800</bug_when>
    <thetext>Comment on attachment 267375
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4581
&gt;&gt;                  NEXT_OPCODE(op_new_func_exp);
&gt; 
&gt; Couldn&apos;t we just replace this entire if/else statement with &quot;NEXT_OPCODE(opcodeID)&quot;?

We cannot do that.

NEXT_OPCODE is defined as follows.

1126 #define NEXT_OPCODE(name) \
1127     m_currentIndex += OPCODE_LENGTH(name); \
1128     continue

And OPCODE_LENGTH is defined as follows.

 72 #define OPCODE_LENGTH(opcode) opcode##_length

So the argument of NEXT_OPCODE need to be opcode token.

&gt;&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:142
&gt;&gt; +    enum class Kind { Escaped, Object, Activation, Function, ArrowFunction, GeneratorFunction };
&gt; 
&gt; Can you add a test where allocation sinking kicks in for NewGeneratorFunction? (Or do we already have one?)

Nice, I&apos;ve just added tests; copying the tests for function allocation sinking, and change it to generator function, and check this is a generator function.

&gt;&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1461
&gt;&gt; +                allocation.kind() == Allocation::Kind::GeneratorFunction ?  NewGeneratorFunction : NewFunction;
&gt; 
&gt; style: extra space after &quot;?&quot;

Oooops! Thank you! Dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149321</commentid>
    <comment_count>5</comment_count>
      <attachid>267375</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-15 09:56:26 -0800</bug_when>
    <thetext>Comment on attachment 267375
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4581
&gt;&gt;&gt;&gt;                  NEXT_OPCODE(op_new_func_exp);
&gt;&gt;&gt; 
&gt;&gt;&gt; Couldn&apos;t we just replace this entire if/else statement with &quot;NEXT_OPCODE(opcodeID)&quot;?
&gt;&gt; 
&gt;&gt; You can&apos;t do that because it uses NEXT_OPCODE uses OPCODE_LENGTH which appends _length to the name you provide. I think the RELEASE_ASSERT can be a static_assert, however.
&gt; 
&gt; We cannot do that.
&gt; 
&gt; NEXT_OPCODE is defined as follows.
&gt; 
&gt; 1126 #define NEXT_OPCODE(name) \
&gt; 1127     m_currentIndex += OPCODE_LENGTH(name); \
&gt; 1128     continue
&gt; 
&gt; And OPCODE_LENGTH is defined as follows.
&gt; 
&gt;  72 #define OPCODE_LENGTH(opcode) opcode##_length
&gt; 
&gt; So the argument of NEXT_OPCODE need to be opcode token.

Nice catch! We can perform static_assert here :D Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149324</commentid>
    <comment_count>6</comment_count>
      <attachid>267375</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-15 09:59:06 -0800</bug_when>
    <thetext>Comment on attachment 267375
Patch

And while implementing this, I found that NewArrowFunction is no longer used. I&apos;m planning to drop this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149564</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-16 01:10:40 -0800</bug_when>
    <thetext>Committed r194135: &lt;http://trac.webkit.org/changeset/194135&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149581</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-16 03:13:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r194135: &lt;http://trac.webkit.org/changeset/194135&gt;

The following new tests fail everywhere and made bots red:
stress/generator-function-declaration-sinking-osrexit.js
stress/generator-function-expression-sinking-osrexit.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149585</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-16 03:50:52 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Committed r194135: &lt;http://trac.webkit.org/changeset/194135&gt;
&gt; 
&gt; The following new tests fail everywhere and made bots red:
&gt; stress/generator-function-declaration-sinking-osrexit.js
&gt; stress/generator-function-expression-sinking-osrexit.js

Oops, I&apos;ll investigate and fix it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149586</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-16 04:02:01 -0800</bug_when>
    <thetext>I&apos;ve figure out the issue.
On OSR, we should materialize JSGeneratorFunction in FTL.
Soon, it will be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149587</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-16 04:08:24 -0800</bug_when>
    <thetext>This involves ExitTimeObjectMaterialization, it may be non trivial.
So I&apos;ll roll back this patch now and upload the revised patch including ExitTimeObjectMaterialization change :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149590</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-16 04:45:05 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 152333</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149622</commentid>
    <comment_count>13</comment_count>
      <attachid>267461</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-16 09:17:21 -0800</bug_when>
    <thetext>Created attachment 267461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149674</commentid>
    <comment_count>14</comment_count>
      <attachid>267461</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-16 10:30:41 -0800</bug_when>
    <thetext>Comment on attachment 267461
Patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLOperations.cpp:180
&gt; +        if (materialization-&gt;type() == PhantomNewFunction)
&gt; +            return JSFunction::createWithInvalidatedReallocationWatchpoint(vm, executable, activation);

It seems like we might sink an arrow function and end up not reallocating an arrow function, but a JSFunction instead.
I think that&apos;s fine for now b/c we&apos;re going to remove JSArrowFunction, but it&apos;s definitely a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149676</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-16 10:34:18 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 267461 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267461&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLOperations.cpp:180
&gt; &gt; +        if (materialization-&gt;type() == PhantomNewFunction)
&gt; &gt; +            return JSFunction::createWithInvalidatedReallocationWatchpoint(vm, executable, activation);
&gt; 
&gt; It seems like we might sink an arrow function and end up not reallocating an
&gt; arrow function, but a JSFunction instead.
&gt; I think that&apos;s fine for now b/c we&apos;re going to remove JSArrowFunction, but
&gt; it&apos;s definitely a bug.

Yup. This part for JSArrowFunction seems removed when landing http://trac.webkit.org/changeset/193766.
So if we don&apos;t use NewArrowFunction further, we should remove all the NewArrowFunction part. But if not, we should not forget to add this part when reverting http://trac.webkit.org/changeset/193766 change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149711</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-16 11:54:08 -0800</bug_when>
    <thetext>And perf improvement.

generator-function-create                     135.9831+-6.8084     ^      8.1685+-1.4068        ^ definitely 16.6472x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149951</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-17 02:33:40 -0800</bug_when>
    <thetext>Committed r194216: &lt;http://trac.webkit.org/changeset/194216&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267375</attachid>
            <date>2015-12-15 09:25:06 -0800</date>
            <delta_ts>2015-12-16 09:17:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152227-20151216022428.patch</filename>
            <type>text/plain</type>
            <size>30829</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
Yzc2NzZmMDllZjI2MWUwOWI4ZDc4YjdmNDEyYjRhODgzMDFlYzM5Li44YTU3MDhkODVlZjE5YmM0
ZDM0NDkyMjZjOGJmNzgyMDczOTdkNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxNS0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBIYW5kbGUgbmV3X2dlbmVyYXRvcl9mdW5jIC8gbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXdfZ2VuZXJhdG9y
X2Z1bmMgLyBuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIGludG8gREZHIGFuZCBGVEwuCisgICAgICAg
IFdlIGFkZCBhIG5ldyBERkcgTm9kZSwgTmV3R2VuZXJhdG9yRnVuY3Rpb24uIEl0IHdpbGwgY29u
c3RydWN0IGEgZnVuY3Rpb24gd2l0aCBHZW5lcmF0b3JGdW5jdGlvbidzIHN0cnVjdHVyZS4KKyAg
ICAgICAgVGhlIHN0cnVjdHVyZSBvZiBHZW5lcmF0b3JGdW5jdGlvbiBpcyBkaWZmZXJlbnQgZnJv
bSBvbmUgb2YgRnVuY3Rpb24gYmVjYXVzZSBHZW5lcmF0b3JGdW5jdGlvbiBoYXMgdGhlIGRpZmZl
cmVudCBfX3Byb3RvX18uCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmlzRnVuY3Rpb25BbGxvY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBk
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0
cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlTmV3RnVuY3Rpb24pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZnVuY3Rpb24tY3JlYXRlLW9wdGltaXplZC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChnKToKKyAgICAgICAgKHRlc3QucmV0dXJuLmdlbik6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKHRlc3QyLmdlbik6CisgICAgICAgICh0ZXN0Mik6CisKIDIwMTUtMTItMTUg
IENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVUlRCRiBh
ZnRlciAxOTQwNjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMjI2ZWFlMzQ1ODMzY2YwYWFlZjU2
YTFiNzczMDQzOWM1ODE4YzEzMi4uYjRjNjQwYmNmMWVlNzJkZmFjZjFmNjBhYmVjNmZiMTA2MDdm
NWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTc1NCw3ICsxNzU0LDEyIEBACiAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0KAogICAgICAgICAgICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0
dXJlKCkpOwogICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgY2FzZSBOZXdHZW5l
cmF0b3JGdW5jdGlvbjoKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoCisgICAgICAgICAgICBt
X2dyYXBoLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKKwogICAg
IGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KAogICAgICAgICAg
ICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNjYxOTNiZTZmYzQ1Mjg1OWQxZTM3OWYw
ZTQ3YzhlNThjY2VlNzMzYy4uOThiMzkzZWFiZmIxMDJhNmVjYzMwYzRjN2U0MzhmMDZlODliZDkw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTQ1NTcsMjMgKzQ1NTcsMjcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF90b19hcmd1
bWVudHMpOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBvcF9uZXdfZnVu
YzogeworICAgICAgICBjYXNlIG9wX25ld19mdW5jOgorICAgICAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnVuYzogewogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBkZWNsID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0g
bV9ncmFwaC5mcmVlemVTdHJvbmcoZGVjbCk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoTmV3RnVuY3Rpb24sIE9wSW5mbyhmcm96ZW4pLCBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOworICAgICAgICAgICAgTm9kZVR5
cGUgb3AgPSAob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKSA/IE5ld0dlbmVyYXRv
ckZ1bmN0aW9uIDogTmV3RnVuY3Rpb247CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8o
ZnJvemVuKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfbmV3
X2Z1bmMpID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2dlbmVyYXRvcl9mdW5jKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZXdfZnVuYyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX25ld19mdW5jX2V4cDoKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
OgogICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogewogICAgICAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoZXhwcik7Ci0g
ICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTmV3RnVuY3Rpb24sIE9wSW5mbyhm
cm96ZW4pLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKSkpOworICAgICAgICAgICAgTm9kZVR5cGUgb3AgPSAob3Bjb2RlSUQgPT0gb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCkgPyBOZXdHZW5lcmF0b3JGdW5jdGlvbiA6IE5ld0Z1bmN0aW9uOwor
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGZyb3plbiksIGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApIHsKKyAgICAgICAgICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCkgewogICAgICAgICAgICAgICAgIC8vIEN1cmx5IGJyYWNlcyBhcmUg
bmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT1BDT0RFX0xFTkdUSChv
cF9uZXdfZnVuY19leHApID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cCkpOwogICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEN1cmx5IGJyYWNlcyBhcmUgbmVj
ZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
aW5kZXggYmI1YjFkMTE1ZDVhN2QxNzUzY2MyNzk3NzdhNTkwZGE1ODlkZTkyNS4uZDFjOWJjZTZi
ZTQ4MWVmZDIxZjFmNTY3ZmJlMTkyZmQ1ZjU4YjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjE1LDYgKzIxNSw4IEBAIENhcGFiaWxp
dHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBv
cF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19n
ZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAg
Y2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGZkNjAzNzNkMDJhZDFkNDVjY2QxY2Iw
NGNkYzE0Yzg2M2UzNTZmYTAuLmUwYjAzY2FmY2U2M2U0MzVlMGMwZTQ2NTI2ZTBjMWE0MTEwNGMx
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDI1
LDYgKzEwMjUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBj
b25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIAogICAgIGNhc2UgTmV3
QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1
dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkKICAgICAgICAg
ICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CiAgICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAKaW5kZXggNTRkZGUxZmE4NTEzNTI1NmMzYjBiZjM3Zjc2NmM0YjQ4ZmIxMTkzNS4uYjY5
ZmM1ZmFkOTcyNjEyMTQ3ZmYyMjFkYTg0NjlkOTM2N2FmNzY0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTc3LDYgKzc3
LDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAK
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBj
YXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAvLyBMaWtlIGFib3ZlLCBidXQgd2l0
aCB0aGUgSlNGdW5jdGlvbiBhbGxvY2F0aW9uIGNhdmVhdC4KICAgICAgICAgcmV0dXJuIG5vZGUt
PmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmdsZXRvbkZ1bmN0aW9uKCkt
PmlzU3RpbGxWYWxpZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
aW5kZXggZGI0ZmMyMThlMjVmZDdmOGYzM2MzNmI1YTAzYTFhNWYwMmMwNmViNy4uNWVmZjJiMGQ3
NWFiMDQ5ODU1YzFjZTE0ZDg3NWU4ZmVlNDhmMjc1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMjQ3LDYgKzI0Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyb3dG
dW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVu
Y3Rpb246CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VF
cnJvcjoKICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDkxOThjZDgyMmEzY2E0ZWY0NzgyNjZk
NzRiM2U3MjE0NTE4NmZiMjYuLmQ2OGRlYzJlYWYwYjEyYjM1MmE2ZTRjYjI0ODQ3MzUxM2RlNzI0
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTM4MSw3ICsxMzgxLDggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAKICAg
ICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlQWN0
aXZhdGlvbjoKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7CiAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBk
MWUyMWVkODQ3Mjk1NmRmMzhjZDZkNDhhN2M3ZjgwNThjYWQxYzY5Li5kYWEyOTMzOWRiZmJkZjgw
YWFkOWI2NDZhMmNiN2EwNTg3ZDk2MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKQEAgLTE0Myw2ICsxNDMsNyBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNh
c2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgogICAgICAgICByZXN1bHQgPSBFeGl0c0ZvckV4Y2VwdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGY5NmE3ZWZmOGY2NmRjOGZkMTJiYjU1
YzYyYzNkNWUzNWE0ODY1YzEuLjk4ZmRkMDBlZDY2ZWNiYWRhOGU4MDk4MDIzNjUyMGMyZjkyNTdm
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01ODUsNyArNTg1LDcgQEAg
c3RydWN0IE5vZGUgewogCiAgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3RnVuY3Rpb24gfHwgbV9vcCA9PSBOZXdB
cnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3RnVuY3Rpb24gfHwgbV9v
cCA9PSBOZXdBcnJvd0Z1bmN0aW9uIHx8IG1fb3AgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24pOwog
ICAgICAgICBtX29wID0gUGhhbnRvbU5ld0Z1bmN0aW9uOwogICAgICAgICBtX2ZsYWdzIHw9IE5v
ZGVNdXN0R2VuZXJhdGU7CiAgICAgICAgIG1fb3BJbmZvID0gMDsKQEAgLTEzNTYsNiArMTM1Niw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2Ug
TmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKKyAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgog
ICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMTU3NCw2ICsxNTc1LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBz
d2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggYWM2
OTllMTJjNzI4MWZjNWVkN2RkNjVlNzJhYjJhYzA5OTc0Yzg0Mi4uZDRhOTI3MTg4MDcxOTJkODNi
MTEyNDEzNjc4MmM0OGMwNWQ4YzhhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMzEyLDYgKzMxMiw3IEBACiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5vZGVS
ZXN1bHRKUykgXAogICAgIFwKICAgICBtYWNybyhOZXdBcnJvd0Z1bmN0aW9uLCBOb2RlUmVzdWx0
SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0ICovIFwK
ICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKaW5kZXggMTJhYjE2MzczM2ZhMTg0MWNiOGJjNDI5MjE5NWFkNDM1YTUyMjk2Yy4uYjA4
NTQ5YWFhZTc1MTA1MDYxOTA3ODRkYzhlMDllMGEwZmM1NjMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3MgQWxsb2NhdGlvbiB7CiAgICAgLy8g
b25jZSBpdCBpcyBlc2NhcGVkIGlmIGl0IHN0aWxsIGhhcyBwb2ludGVycyB0byBpdCBpbiBvcmRl
ciB0bwogICAgIC8vIHJlcGxhY2UgYW55IHVzZSBvZiB0aG9zZSBwb2ludGVycyBieSB0aGUgY29y
cmVzcG9uZGluZwogICAgIC8vIG1hdGVyaWFsaXphdGlvbgotICAgIGVudW0gY2xhc3MgS2luZCB7
IEVzY2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24g
fTsKKyAgICBlbnVtIGNsYXNzIEtpbmQgeyBFc2NhcGVkLCBPYmplY3QsIEFjdGl2YXRpb24sIEZ1
bmN0aW9uLCBBcnJvd0Z1bmN0aW9uLCBHZW5lcmF0b3JGdW5jdGlvbiB9OwogCiAgICAgZXhwbGlj
aXQgQWxsb2NhdGlvbihOb2RlKiBpZGVudGlmaWVyID0gbnVsbHB0ciwgS2luZCBraW5kID0gS2lu
ZDo6RXNjYXBlZCkKICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKQEAgLTIzMywx
MiArMjMzLDcgQEAgY2xhc3MgQWxsb2NhdGlvbiB7CiAKICAgICBib29sIGlzRnVuY3Rpb25BbGxv
Y2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2tpbmQgPT0gS2luZDo6RnVu
Y3Rpb24gfHwgbV9raW5kID09IEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb247Ci0gICAgfQotICAgIAot
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQWxsb2NhdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9raW5kID09IEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIHJldHVy
biBtX2tpbmQgPT0gS2luZDo6RnVuY3Rpb24gfHwgbV9raW5kID09IEtpbmQ6OkFycm93RnVuY3Rp
b24gfHwgbV9raW5kID09IEtpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uOwogICAgIH0KIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBbGxvY2F0aW9uJiBvdGhlcikgY29uc3QKQEAgLTI3NCw4ICsy
NjksMTIgQEAgY2xhc3MgQWxsb2NhdGlvbiB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIkZ1bmN0
aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgotICAgICAgICAgICAgb3V0LnByaW50KCJOZXdBcnJv
d0Z1bmN0aW9uIik7CisgICAgICAgIGNhc2UgS2luZDo6QXJyb3dGdW5jdGlvbjoKKyAgICAgICAg
ICAgIG91dC5wcmludCgiQXJyb3dGdW5jdGlvbiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiR2VuZXJhdG9yRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgS2luZDo6QWN0aXZhdGlvbjoKQEAgLTgzNywxMyArODM2LDE5IEBAIGNsYXNzIE9iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOiB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbjogewogICAgICAgICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmdsZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgp
KSB7CiAgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2NhdGlv
bjo6S2luZDo6RnVuY3Rpb24pOworICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gTmV3R2Vu
ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxv
Y2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAg
ICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2NhdGlvbjo6
S2luZDo6QXJyb3dGdW5jdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1
bmN0aW9uKTsKICAgICAgICAgICAgIHdyaXRlcy5hZGQoRnVuY3Rpb25FeGVjdXRhYmxlUExvYywg
TGF6eU5vZGUobm9kZS0+Y2VsbE9wZXJhbmQoKSkpOwogICAgICAgICAgICAgd3JpdGVzLmFkZChG
dW5jdGlvbkFjdGl2YXRpb25QTG9jLCBMYXp5Tm9kZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ0NiwxMSArMTQ1MSwxNCBAQCBjbGFzcyBPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBP
cEluZm8oc2V0KSwgT3BJbmZvKGRhdGEpLCAwLCAwKTsKICAgICAgICAgfQogCi0gICAgICAgIGNh
c2UgQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBBbGxv
Y2F0aW9uOjpLaW5kOjpBcnJvd0Z1bmN0aW9uOgorICAgICAgICBjYXNlIEFsbG9jYXRpb246Oktp
bmQ6OkdlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1
bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRp
b24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBOb2RlVHlwZSBub2RlVHlwZSA9IGFsbG9jYXRpb24ua2luZCgpID09IEFsbG9jYXRpb246Oktp
bmQ6Ok5ld0Fycm93RnVuY3Rpb24gPyBOZXdBcnJvd0Z1bmN0aW9uIDogTmV3RnVuY3Rpb247Cisg
ICAgICAgICAgICBOb2RlVHlwZSBub2RlVHlwZSA9CisgICAgICAgICAgICAgICAgYWxsb2NhdGlv
bi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6QXJyb3dGdW5jdGlvbiA/IE5ld0Fycm93RnVu
Y3Rpb24gOgorICAgICAgICAgICAgICAgIGFsbG9jYXRpb24ua2luZCgpID09IEFsbG9jYXRpb246
OktpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uID8gIE5ld0dlbmVyYXRvckZ1bmN0aW9uIDogTmV3RnVu
Y3Rpb247CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLmFkZE5vZGUo
CiAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCktPnByZWRpY3Rpb24oKSwg
bm9kZVR5cGUsCkBAIC0xNzgyLDYgKzE3OTAsNyBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAgICAgICAgICAgICAgICAgICBjYXNlIE5l
d0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24oKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0yMDMzLDcgKzIwNDIsOCBAQCBjbGFzcyBP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBOZXdBcnJv
d0Z1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKKyAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjogewogICAgICAgICAgICAgVmVjdG9yPFByb21vdGVkSGVh
cExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVzY2Fw
ZWUpOwogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5zaXplKCkgPT0gMik7CiAgICAgICAg
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQxM2JmODkyYjdmMmQ1ZWYxNmY3
ODNmMzVlNWY3N2M4ZGY0YzkyYTQuLjYxMjc3MTYyYmMzN2Q0OWU1YjVkNDk3M2IxMjkxOGYyNzc0
MzZiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMDksNyArMjA5LDggQEAgY2xhc3Mg
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNl
IEdldFNldHRlcjoKICAgICAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgICAgIGNhc2UgTmV3QXJy
b3dGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7CiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCmluZGV4IDBmNDU2YzljMTgzNjYyMTMwZjlhNDQ3ZWYzM2RiMGIyNmQyZjNhYWYu
LmIyOGNmYzU2N2RiN2ZlMmFiZTc1NWNjNDAzYTk4MjI4MDcyNDk4ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNjgsNiArMjY4LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBOZXdBcnJv
d0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CisgICAgY2FzZSBOZXdHZW5lcmF0b3JG
dW5jdGlvbjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0
Y2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IGVhNWI0ZjRiNmU5NzY5MDU5YWFlN2I2YmEzNThhOTU5ZDRlNmM0ZGIuLmRiNDRiYmU4
YzgyZDg2ZTgzNWRhMmVhYzJhNzNhMWYzNGVmN2M2MDkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC01MTQxLDcgKzUxNDIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiB7CiAgICAg
Tm9kZVR5cGUgbm9kZVR5cGUgPSBub2RlLT5vcCgpOwotICAgIEFTU0VSVChub2RlVHlwZSA9PSBO
ZXdGdW5jdGlvbiB8fCBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICBBU1NFUlQo
bm9kZVR5cGUgPT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbiB8
fCBub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CiAgICAgCiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogI2lmIFVTRShKU1ZBTFVF
NjQpCkBAIC01MTc5LDYgKzUxODAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
RnVuY3Rpb24oTm9kZSogbm9kZSkKICNlbHNlCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUs
IHRoaXNWYWx1ZVRhZ0dQUiwgdGhpc1ZhbHVlUGF5bG9hZEdQUik7CiAjZW5kaWYKKyAgICAgICAg
ZWxzZSBpZiAobm9kZVR5cGUgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCByZXN1bHRHUFIsIHNj
b3BlR1BSLCBleGVjdXRhYmxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJs
ZSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC01MTg2LDkgKzUxODksMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGVU
eXBlID09IE5ld0Fycm93RnVuY3Rpb24KLSAgICAgICAgPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkK
LSAgICAgICAgOiBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0K
KyAgICAgICAgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycm93RnVuY3Rpb25TdHJ1Y3R1
cmUoKSA6CisgICAgICAgIG5vZGVUeXBlID09IE5ld0dlbmVyYXRvckZ1bmN0aW9uID8gbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUoKSA6CisgICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgCiAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEo
dGhpcyk7CkBAIC01MjA1LDYgKzUyMDksMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdGdW5j
dGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsIHJlc3VsdEdQUiwgc2Nv
cGVHUFIsIGV4ZWN1dGFibGUpKTsKICAgICB9CisKKyAgICBpZiAobm9kZVR5cGUgPT0gTmV3R2Vu
ZXJhdG9yRnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uPEpTR2Vu
ZXJhdG9yRnVuY3Rpb24+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzY3JhdGNoMUdQUiwgc2NyYXRj
aDJHUFIsIHNjb3BlR1BSLCBzbG93UGF0aCwgSlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlv
blNpemUoMCksIGV4ZWN1dGFibGUsIEpTR2VuZXJhdG9yRnVuY3Rpb246Om9mZnNldE9mU2NvcGVD
aGFpbigpLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSwgSlNHZW5l
cmF0b3JGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKTsKKworICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVy
YXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCwgcmVzdWx0
R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSkpOworICAgIH0KICAgICAKICAgICBpZiAobm9kZVR5
cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikgewogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25Db21t
b248SlNBcnJvd0Z1bmN0aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNj
cmF0Y2gyR1BSLCBzY29wZUdQUiwgc2xvd1BhdGgsIEpTQXJyb3dGdW5jdGlvbjo6YWxsb2NhdGlv
blNpemUoMCksIGV4ZWN1dGFibGUsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWlu
KCksIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCksIEpTQXJyb3dGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDJmMWQ3NmY5NjhhZWI3NjlkZjY5
ZDgyNTQ1ZTg5MTViNTlmZjY5NTkuLjUyNzM3NGFmZmJlYmUyNGM2M2FjNzY3ODM5ZTY3MDBiYzg2
NDQwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNDQwOCw2ICs0NDA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNl
IE5ld0Fycm93RnVuY3Rpb246CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAg
ICAgY29tcGlsZU5ld0Z1bmN0aW9uKG5vZGUpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYjQ5
MTE2MTBiMjVjNDZjOTU0Y2I0NzJhYjYwOGU2MmYzN2RjOWY1Ny4uYjkzZTg2OWQ2OTU2Y2E0Mzdk
ZDhjNDQ4ZTQ1MjdhMWM0YWM5M2M3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00Mzk3LDYgKzQzOTcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0
aW9uOgogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGQ3MzZlZmViYmFjN2UzODFiMDk5MDc1MDNhMTYx
NzlhMzVkOTkxYTcuLjcyZjIyMDBjZWExMGI5ODEwZGJhOGM3YjE5ZmVmZjI0ZGFhNWRhZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0zMDYsNiArMzA2LDcgQEAgY2xhc3MgU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBDcmVh
dGVDbG9uZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAg
ICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0
b3JGdW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0
byBzZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAg
ICAgICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBo
ZWFwLgogICAgICAgICAgICAgICAgIG1fbm9kZS0+c2V0RXBvY2gobV9jdXJyZW50RXBvY2gpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBlMzkzNzJiMmQ1ODk4NDYwMjFhYTQ2Yjk4NzgxMjcy
YTk1OTExOWNjLi40MzQ1ZmYyY2M3ZDY3MWQ0Yjg1MjVlZGNkOTU3NGFlZTFjZjdmZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTQ2LDYgKzE0Niw5IEBAIGNsYXNzIFN0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA1YzNiODFjNTFjZGU1M2E3M2ViYmJkZjc3YjNhMzVjYzE5MzA2OGY5Li5m
YmViYjc1M2Y5OWEyODI2NTNlMzQ1MzcxMjE1NmQwYmY2ZWY1NzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xMTEsNiArMTExLDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBHZXRD
bG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAKaW5kZXggZjFlNTVlMTM2NmYzZTRhZmIwMmNhM2E0ZDRjY2MyMTE3YjYzZTJiYi4u
NmVlMTdkNGUxYmI2YmVkYjk4MjljMzZjYWFhZGJiMzliMGMxOWQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJGVExXZWlnaHRlZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQXJyb3dGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJP
cGVyYW5kc0lubGluZXMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKQEAgLTc1NCw2
ICs3NTUsNyBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgor
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6CkBAIC0zNTM2LDM0ICszNTM4LDM3IEBAIGNsYXNzIExvd2VyREZHVG9MTFZN
IHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBB
U1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdB
cnJvd0Z1bmN0aW9uKTsKLSAgICAgICAgCisgICAgICAgIEFTU0VSVChtX25vZGUtPm9wKCkgPT0g
TmV3RnVuY3Rpb24gfHwgbV9ub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb24gfHwgbV9ub2Rl
LT5vcCgpID09IE5ld0dlbmVyYXRvckZ1bmN0aW9uKTsKICAgICAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24gPSBtX25vZGUtPm9wKCkgPT0gTmV3QXJyb3dGdW5jdGlvbjsKKyAgICAgICAgYm9vbCBp
c0dlbmVyYXRvckZ1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0dlbmVyYXRvckZ1bmN0aW9u
OwogICAgICAgICAKICAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGlzQXJyb3dGdW5jdGlvbiA/IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDIoKSkgOiBudWxscHRyOwogICAgICAgICAKICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4
ZWN1dGFibGUqPigpOwogICAgICAgICBpZiAoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24o
KS0+aXNTdGlsbFZhbGlkKCkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gaXNB
cnJvd0Z1bmN0aW9uCi0gICAgICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQotICAgICAgICAgICAgICAgIDog
dm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24p
LCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0KKyAgICAgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24g
PyB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKSA6CisgICAgICAgICAgICAgICAgaXNHZW5lcmF0b3JGdW5jdGlvbiA/IHZtQ2FsbCht
X291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9u
KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSkgOgorICAgICAg
ICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7
CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGlz
QXJyb3dGdW5jdGlvbgotICAgICAgICAgICAgPyBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKQotICAgICAgICAg
ICAgOiBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1
bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KKyAgICAg
ICAgICAgIGlzQXJyb3dGdW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpIDoKKyAgICAgICAgICAg
IGlzR2VuZXJhdG9yRnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOgorICAgICAgICAg
ICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5j
dGlvblN0cnVjdHVyZSgpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGgg
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5ld0Z1bmN0aW9uIHNsb3cgcGF0aCIpKTsKICAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdG
dW5jdGlvbiBjb250aW51YXRpb24iKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAg
IAotICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgotICAgICAgICAg
ICAgPyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd1BhdGgpCi0gICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rp
b24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICBMVmFs
dWUgZmFzdE9iamVjdCA9CisgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPyBhbGxvY2F0ZU9i
amVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1Bh
dGgpIDoKKyAgICAgICAgICAgIGlzR2VuZXJhdG9yRnVuY3Rpb24gPyBhbGxvY2F0ZU9iamVjdDxK
U0dlbmVyYXRvckZ1bmN0aW9uPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRo
KSA6CisgICAgICAgICAgICBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPihzdHJ1Y3R1cmUsIG1f
b3V0LmludFB0clplcm8sIHNsb3dQYXRoKTsKICAgICAgICAgCiAgICAgICAgIAogICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIG1lbW9yeSBiYXJyaWVycyBzaW5jZSB3ZSBqdXN0IGZhc3QtY3JlYXRl
ZCB0aGUgZnVuY3Rpb24sIHNvIGl0CkBAIC0zNTkzLDYgKzM1OTgsMTIgQEAgY2xhc3MgTG93ZXJE
RkdUb0xMVk0gewogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQ
UigpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZXhlY3V0YWJsZSksIGxvY2F0aW9uc1syXS5kaXJl
Y3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc0dlbmVy
YXRvckZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2Fs
bEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsCiAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY3JlYXRlLW9wdGltaXplZC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNyZWF0ZS1vcHRpbWl6
ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWY0ZjQwOTc3N2EwMTg0OGUzMmUyMWM1YjAxYTdkNzVlNWY0M2Rh
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNyZWF0ZS1vcHRpbWl6ZWQuanMKQEAgLTAsMCArMSwzMyBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKKworZnVuY3Rpb24gKmcoKSB7IH0KK3ZhciBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSA9IGcuX19wcm90b19fOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKmdlbigpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9OworfQorbm9Jbmxp
bmUodGVzdCk7CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAg
ICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KKworICAgIHJldHVybiBnZW47Cit9Citub0lu
bGluZSh0ZXN0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91
bGRCZSh0ZXN0KCkuX19wcm90b19fLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAg
c2hvdWxkQmUodGVzdDIoKS5fX3Byb3RvX18sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5YzQzZTg1Y2FmNDU2NWU4NjlkNDVjMTAzNDYwNzAyMDMxYjQ2NzIxLi5lYTI1
YWQ2NTE4ZTAzZjExMDYzODhkMDUxMThlZTRkMDllOTk0NGI3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTUtMTItMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTNl0gSGFuZGxlIG5ld19nZW5lcmF0b3JfZnVuYyAvIG5ld19nZW5lcmF0b3Jf
ZnVuY19leHAgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTIyMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIHRoZSB0ZXN0IHRha2luZyBsb25nZXIgdGltZS4KKworICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2dlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUuanM6
CisgICAgICAgICh0ZXN0KToKKwogMjAxNS0xMi0xNSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJu
YW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWFsaWduXVtjc3MtZ3JpZF0gT3ZlcmZs
b3cgYWxpZ25tZW50IHZhbHVlICd0cnVlJyByZW5hbWVkIHRvICd1bnNhZmUnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9nZW5lcmF0b3ItZnVuY3Rpb24t
Y3JlYXRlLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZ2VuZXJhdG9y
LWZ1bmN0aW9uLWNyZWF0ZS5qcwppbmRleCBkMTBjMTM3MjlkOWJjNGMxYmNkYTRlMmEyZWNkMmZj
NzIxYzRlZWNjLi5hZTRlYjllZWM2ODI3ZTFlNDI2ODY0ODZmZWUwZjVmYWFkMmVhMjQwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9nZW5lcmF0b3ItZnVu
Y3Rpb24tY3JlYXRlLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2dlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUuanMKQEAgLTcsNiArNywxMiBAQCBmdW5jdGlvbiBj
cmVhdGVHZW5lcmF0b3JGdW5jdGlvbigpCiAgICAgfQogICAgIHJldHVybiBnZW47CiB9Ci1ub0lu
bGluZShjcmVhdGVHZW5lcmF0b3JGdW5jdGlvbik7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDUwMDsgKytpKQorICAgICAgICBjcmVhdGVHZW5lcmF0b3JGdW5j
dGlvbigpOworfQorbm9JbmxpbmUodGVzdCk7CisKIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyAr
K2kpCi0gICAgY3JlYXRlR2VuZXJhdG9yRnVuY3Rpb24oKTsKKyAgICB0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267461</attachid>
            <date>2015-12-16 09:17:21 -0800</date>
            <delta_ts>2015-12-16 10:30:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152227-20151217021642.patch</filename>
            <type>text/plain</type>
            <size>49683</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Y2U1MDE3N2E4NDBjMzVjOWNhMzYyNjg0ODQ1ZjMyODJmMTM2MjJkLi5mNjIzMzQ4YmViOTExZTU0
M2FiMzU0NWE5ZmZkYmYzOTIxNWUzMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMTUtMTItMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSGFuZGxlIG5ld19nZW5lcmF0b3JfZnVuYyAvIG5ld19n
ZW5lcmF0b3JfZnVuY19leHAgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgbmV3X2dlbmVyYXRv
cl9mdW5jIC8gbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCBpbnRvIERGRyBhbmQgRlRMLgorICAgICAg
ICBXZSBhZGQgYSBuZXcgREZHIE5vZGUsIE5ld0dlbmVyYXRvckZ1bmN0aW9uLiBJdCB3aWxsIGNv
bnN0cnVjdCBhIGZ1bmN0aW9uIHdpdGggR2VuZXJhdG9yRnVuY3Rpb24ncyBzdHJ1Y3R1cmUuCisg
ICAgICAgIFRoZSBzdHJ1Y3R1cmUgb2YgR2VuZXJhdG9yRnVuY3Rpb24gaXMgZGlmZmVyZW50IGZy
b20gb25lIG9mIEZ1bmN0aW9uIGJlY2F1c2UgR2VuZXJhdG9yRnVuY3Rpb24gaGFzIHRoZSBkaWZm
ZXJlbnQgX19wcm90b19fLgorCisgICAgICAgIEluc3RlYWQgb2YgZXh0ZW5kaW5nIE5ld0Z1bmN0
aW9uIC8gUGhhbnRvbU5ld0Z1bmN0aW9uLCB3ZSBqdXN0IGFkZGVkIG5ldyBERkcgbm9kZXMsIE5l
d0dlbmVyYXRvckZ1bmN0aW9uIGFuZCBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24uCisgICAg
ICAgIFRoaXMgaXMgYmVjYXVzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGdlbmVyYXRlIGFu
IG9iamVjdCB0aGF0IGhhcyBkaWZmZXJlbnQgY2xhc3MgaW5mbyBmcm9tIEpTRnVuY3Rpb24gKEFu
ZCBpZiBKU0dlbmVyYXRvckZ1bmN0aW9uIGlzIGV4dGVuZGVkLCBpdHMgc2l6ZSB3aWxsIGJlY29t
ZSBkaWZmZXJlbnQgZnJvbSBKU0Z1bmN0aW9uKS4KKyAgICAgICAgU28sIHJhdGhlciB0aGFuIGV4
dGVuZGluZyBOZXdGdW5jdGlvbiB3aXRoIGdlbmVyYXRvciBmbGFnLCBqdXN0IGFkZGluZyBuZXcg
REZHIG5vZGVzIHNlZW1zIGNsZWFuZXIuCisKKyAgICAgICAgT2JqZWN0IGFsbG9jYXRpb24gc2lu
a2luZyBwaGFzZSB3aWxsIGNoYW5nZSBOZXdHZW5lcmF0b3JGdW5jdGlvbiB0byBQaGFudG9tTmV3
R2VuZXJhdG9yRnVuY3Rpb24gYW5kIGRlZmVyIG9yIGVsaW1pbmF0ZSBpdHMgYWN0dWFsIG1hdGVy
aWFsaXphdGlvbi4KKyAgICAgICAgSXQgaXMgY29tcGxldGVseSB0aGUgc2FtZSB0byBOZXdGdW5j
dGlvbiBhbmQgUGhhbnRvbU5ld0Z1bmN0aW9uLgorICAgICAgICBBbmQgd2hlbiBPU1IgZXhpdCBv
Y2N1cnMsIHdlIG5lZWQgdG8gZXhlY3V0ZSBkZWZlcnJlZCBOZXdHZW5lcmF0b3JGdW5jdGlvbiBz
aW5jZSBCYXNlbGluZSBKSVQgZG9lcyBub3QgY29uc2lkZXIgaXQuCisgICAgICAgIFNvIGluIEZU
TCBvcGVyYXRpb24sIHdlIHNob3VsZCBjcmVhdGUgSlNHZW5lcmF0b3JGdW5jdGlvbiBpZiB3ZSBz
ZWUgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uIG1hdGVyaWFsaXphdGlvbi4KKworICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRv
UGhhbnRvbU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9Q
aGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0aW9uQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNQaGFudG9tRnVuY3Rpb25BbGxvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc1BoYW50b21BbGxvY2F0aW9uKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlk
YXRlOjp2YWxpZGF0ZUNQUyk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRl
U1NBKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3RnVuY3Rpb24p
OgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpv
cGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRMOjpvcGVyYXRp
b25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNyZWF0ZS1vcHRpbWl6ZWQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoZyk6CisgICAgICAgICh0ZXN0LnJldHVybi5nZW4pOgorICAgICAgICAo
dGVzdCk6CisgICAgICAgICh0ZXN0Mi5nZW4pOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1uby1k
b3VibGUtYWxsb2NhdGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoY2FsbCk6CisgICAgICAgIChm
KToKKyAgICAgICAgKHNpbmspOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVu
Y3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1vc3JleGl0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAg
KGcpOgorICAgICAgICAoZik6CisgICAgICAgIChzaW5rKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKGcpOgorICAgICAgICAoZik6CisgICAgICAgIChzaW5rKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1uby1k
b3VibGUtYWxsb2NhdGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoY2FsbCk6CisgICAgICAgIChm
KToKKyAgICAgICAgKHNpbmspOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVu
Y3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLW9zcmV4aXQuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAo
Zyk6CisgICAgICAgIChzaW5rKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1
bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1wdXQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoZyk6
CisgICAgICAgIChzaW5rKToKKwogMjAxNS0xMi0xNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5NDEz
NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCAzMWI1NDhiOGNkYmQ5ZDlhYzgzZGVlOThjNDYzMmJm
YmJiZTNlZWE2Li4xYTJkNzJhYmY2OWQ5NGMxOTEzOWRmODc0NzFkYTU5NGU2OWNlMmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC0xNzE0LDYgKzE3MTQsNyBAQAogICAgICAgICAKICAgICBjYXNl
IFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2Fz
ZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFu
dG9tQ2xvbmVkQXJndW1lbnRzOgpAQCAtMTc2MCw3ICsxNzYxLDEyIEBACiAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0KAogICAgICAgICAgICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkp
OwogICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JG
dW5jdGlvbjoKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoCisgICAgICAgICAgICBtX2dyYXBo
LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdl
bmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
TmV3RnVuY3Rpb246CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KAogICAgICAgICAgICAgbV9n
cmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNjYxOTNiZTZmYzQ1Mjg1OWQxZTM3OWYwZTQ3Yzhl
NThjY2VlNzMzYy4uNmFkMjE0MzE0OGE5YWNlZDhjYTg0NDYxMDYzN2MwM2E2NDg2YWNmZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTQ1NTcsMjMgKzQ1NTcsMjcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF90b19hcmd1bWVudHMp
OwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBvcF9uZXdfZnVuYzogewor
ICAgICAgICBjYXNlIG9wX25ld19mdW5jOgorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnVuYzogewogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBkZWNsID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFw
aC5mcmVlemVTdHJvbmcoZGVjbCk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTmV3RnVuY3Rpb24sIE9wSW5mbyhmcm96ZW4pLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOworICAgICAgICAgICAgTm9kZVR5cGUgb3Ag
PSAob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKSA/IE5ld0dlbmVyYXRvckZ1bmN0
aW9uIDogTmV3RnVuY3Rpb247CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZnJvemVu
KSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkp
KTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuYykg
PT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpLCAiVGhlIGxlbmd0aCBvZiBv
cF9uZXdfZnVuYyBzaG91bGQgZXFhdWFsIHRvIG9uZSBvZiBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMi
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHA6CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CiAgICAg
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4cHIgPSBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9u
ZyhleHByKTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCksCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdGdW5jdGlv
biwgT3BJbmZvKGZyb3plbiksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpKSk7CisgICAgICAgICAgICBOb2RlVHlwZSBvcCA9IChvcGNvZGVJRCA9
PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKSA/IE5ld0dlbmVyYXRvckZ1bmN0aW9uIDogTmV3
RnVuY3Rpb247CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZnJvemVuKSwgZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCkgewor
ICAgICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCB8fCBvcGNvZGVJRCA9
PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKSB7CiAgICAgICAgICAgICAgICAgLy8gQ3VybHkg
YnJhY2VzIGFyZSBuZWNlc3NhcnkKKyAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09E
RV9MRU5HVEgob3BfbmV3X2Z1bmNfZXhwKSA9PSBPUENPREVfTEVOR1RIKG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHApLCAiVGhlIGxlbmd0aCBvZiBvcF9uZXdfZnVuY19leHAgc2hvdWxkIGVxYXVh
bCB0byBvbmUgb2Ygb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIpOwogICAgICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIC8vIEN1cmx5IGJyYWNlcyBhcmUgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYmI1YjFkMTE1ZDVhN2Qx
NzUzY2MyNzk3NzdhNTkwZGE1ODlkZTkyNS4uZDFjOWJjZTZiZTQ4MWVmZDIxZjFmNTY3ZmJlMTky
ZmQ1ZjU4YjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMjE1LDYgKzIxNSw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAg
Y2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNl
IG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVu
Y19leHA6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNl
IG9wX2dldF9wYXJlbnRfc2NvcGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCmluZGV4IGJhN2JmNzI5NWJhNDMxZWVhYWFkM2JhYzkzMmU2ZTU2NzQwYjhlNjguLjdh
MDY4MDg1OWI5Nzk2YmM0Mjg2YzI5ZmNmNzJjOWUxNThkM2Q1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDI1LDYgKzEwMjUsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgIGNh
c2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFj
dGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAg
IHJlYWQoSGVhcE9iamVjdENvdW50KTsKQEAgLTEwMzMsNiArMTAzNCw3IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBj
b25zdCBXcml0ZUZ1CiAgICAgCiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2Ug
TmV3RnVuY3Rpb246CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgaWYg
KG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmdsZXRvbkZ1bmN0
aW9uKCktPmlzU3RpbGxWYWxpZCgpKQogICAgICAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJl
KTsKICAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA1NGRkZTFmYTg1MTM1
MjU2YzNiMGJmMzdmNzY2YzRiNDhmYjExOTM1Li40ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUxZjkyNWU3
NDgzZTYxZTJkZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNjEsNiArNjEsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0
YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6
CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5j
dGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBo
YW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CkBAIC03Nyw2ICs3OCw3IEBAIGJvb2wgY2xv
YmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogCiAgICAgY2FzZSBOZXdB
cnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CisgICAgY2FzZSBOZXdHZW5lcmF0
b3JGdW5jdGlvbjoKICAgICAgICAgLy8gTGlrZSBhYm92ZSwgYnV0IHdpdGggdGhlIEpTRnVuY3Rp
b24gYWxsb2NhdGlvbiBjYXZlYXQuCiAgICAgICAgIHJldHVybiBub2RlLT5jYXN0T3BlcmFuZDxG
dW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGRiNGZjMjE4
ZTI1ZmQ3ZjhmMzNjMzZiNWEwM2ExYTVmMDJjMDZlYjcuLmYwZjE2YWQ5MDk5MTA3ZDI3MDdmMTJh
MTc2NzkyNDBjYjAyN2YxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTIxMyw2ICsyMTMsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAg
ICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9y
RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBo
YW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgpA
QCAtMjQ3LDYgKzI0OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNl
IE5ld0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICBjYXNlIEdl
dFByb3BlcnR5RW51bWVyYXRvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDgyZmE0OGQwNDRjNmVhOTNhZThhNTIzZmQ0ZmUwMWExOGUzNjg0NDku
LjEzYzM3MmRhNmM0ZjY5ZmRmODc4ZWNkOTAxOWZlYjlmOTIyMmQ1MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTI0Niw2ICsxMjQ2LDcgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQm9vbGVhblRv
TnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVu
dHM6CkBAIC0xMzg3LDcgKzEzODgsOCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNl
IHsKIAogICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgotICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIGNh
c2UgTmV3RnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246IHsKICAg
ICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CmluZGV4IGQxZTIxZWQ4NDcyOTU2ZGYzOGNkNmQ0OGE3YzdmODA1OGNhZDFjNjkuLmRhYTI5MzM5
ZGJmYmRmODBhYWQ5YjY0NmEyY2I3YTA1ODdkOTYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTQzLDYgKzE0Myw3IEBAIEV4aXRNb2RlIG1heUV4aXQo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6
CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CisgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAg
ICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIHJlc3VsdCA9IEV4aXRzRm9yRXhjZXB0
aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMWIzMDgzYjZmNTYzNTNi
ZmVhNjIwNmYzOWY3MjNmMDVlNTNiNmVmNi4uYzZjMmEzYWY4MTc1Yzg5MDllMmI5ZDQ2OTEzNGJh
ZWVkMTlmNWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTU4NSw3ICs1
ODUsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdGdW5j
dGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBOZXdGdW5jdGlvbiB8fCBtX29w
ID09IE5ld0Fycm93RnVuY3Rpb24pOworICAgICAgICBBU1NFUlQobV9vcCA9PSBOZXdGdW5jdGlv
biB8fCBtX29wID09IE5ld0Fycm93RnVuY3Rpb24gfHwgbV9vcCA9PSBOZXdHZW5lcmF0b3JGdW5j
dGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247CiAgICAgICAgIG1fZmxh
Z3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8gPSAwOwpAQCAtNTkzLDYg
KzU5MywxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlz
dCgpOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydFRvUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0dlbmVyYXRvckZ1bmN0aW9u
KTsKKyAgICAgICAgbV9vcCA9IFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAg
bV9mbGFncyB8PSBOb2RlTXVzdEdlbmVyYXRlOworICAgICAgICBtX29wSW5mbyA9IDA7CisgICAg
ICAgIG1fb3BJbmZvMiA9IDA7CisgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOwor
ICAgIH0KKwogICAgIHZvaWQgY29udmVydFRvUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb24oKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRlQWN0aXZhdGlvbiB8fCBtX29wID09IE1h
dGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbik7CkBAIC0xMzU2LDYgKzEzNjYsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE1NzQsNiArMTU4NSw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgc3dpdGNoIChvcCgp
KSB7CiAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdGdW5j
dGlvbjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTU4NCw2ICsxNTk2LDcgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNl
IFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU5Nyw2ICsx
NjEwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVu
dHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3RnVuY3Rpb246CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKaW5kZXggYWM2OTllMTJjNzI4MWZjNWVkN2RkNjVlNzJhYjJhYzA5OTc0Yzg0
Mi4uMjgxY2Y5YTk4NWQxMDUwNWI0NGIwZWE5NGVhMDlhYWY1YTIxMTMwMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjcyLDYgKzI3Miw3IEBACiAgICAgbWFj
cm8oQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhNYXRlcmlhbGl6ZU5ld09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhQaGFudG9tTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKKyAgICBtYWNybyhQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tQ3JlYXRlQWN0aXZh
dGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1hdGVy
aWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBcCkBAIC0zMTIsNiArMzEzLDcgQEAKICAgICBtYWNybyhOZXdGdW5jdGlvbiwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgXAogICAgIG1hY3JvKE5ld0Fycm93RnVuY3Rpb24sIE5vZGVSZXN1bHRK
UykgXAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBcCiAgICAgLyogVGhlc2UgYXJlbid0IHRlcm1pbmFscyBidXQgYWx3YXlzIGV4aXQgKi8gXAog
ICAgIG1hY3JvKFRocm93LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAppbmRleCAxMmFiMTYzNzMzZmExODQxY2I4YmM0MjkyMTk1YWQ0MzVhNTIyOTZjLi5mNjcx
OWY1NzJiNjJjZGE5N2M4MGExNzgwZTFlM2RiOGQ2MTZhYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBjbGFzcyBBbGxvY2F0aW9uIHsKICAgICAvLyBv
bmNlIGl0IGlzIGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVy
IHRvCiAgICAgLy8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3Jy
ZXNwb25kaW5nCiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsg
RXNjYXBlZCwgT2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiwgTmV3QXJyb3dGdW5jdGlvbiB9
OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVzY2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVu
Y3Rpb24sIEFycm93RnVuY3Rpb24sIEdlbmVyYXRvckZ1bmN0aW9uIH07CiAKICAgICBleHBsaWNp
dCBBbGxvY2F0aW9uKE5vZGUqIGlkZW50aWZpZXIgPSBudWxscHRyLCBLaW5kIGtpbmQgPSBLaW5k
OjpFc2NhcGVkKQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQpAQCAtMjMzLDEy
ICsyMzMsNyBAQCBjbGFzcyBBbGxvY2F0aW9uIHsKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9j
YXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5j
dGlvbiB8fCBtX2tpbmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2tpbmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICAgICAgcmV0dXJu
IG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tpbmQgPT0gS2luZDo6QXJyb3dGdW5jdGlv
biB8fCBtX2tpbmQgPT0gS2luZDo6R2VuZXJhdG9yRnVuY3Rpb247CiAgICAgfQogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEFsbG9jYXRpb24mIG90aGVyKSBjb25zdApAQCAtMjc0LDggKzI2
OSwxMiBAQCBjbGFzcyBBbGxvY2F0aW9uIHsKICAgICAgICAgICAgIG91dC5wcmludCgiRnVuY3Rp
b24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246Ci0gICAgICAgICAgICBvdXQucHJpbnQoIk5ld0Fycm93
RnVuY3Rpb24iKTsKKyAgICAgICAgY2FzZSBLaW5kOjpBcnJvd0Z1bmN0aW9uOgorICAgICAgICAg
ICAgb3V0LnByaW50KCJBcnJvd0Z1bmN0aW9uIik7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEtpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICAgICAgb3V0LnByaW50
KCJHZW5lcmF0b3JGdW5jdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBLaW5kOjpBY3RpdmF0aW9uOgpAQCAtODM3LDEzICs4MzYsMTkgQEAgY2xhc3MgT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rp
b246IHsKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2FzdE9wZXJhbmQ8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oKS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+aXNTdGlsbFZhbGlkKCkp
IHsKICAgICAgICAgICAgICAgICBtX2hlYXAuZXNjYXBlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIHRhcmdldCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0aW9u
OjpLaW5kOjpGdW5jdGlvbik7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBOZXdHZW5l
cmF0b3JGdW5jdGlvbikKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9j
YXRpb24obm9kZSwgQWxsb2NhdGlvbjo6S2luZDo6R2VuZXJhdG9yRnVuY3Rpb24pOworICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKQorICAgICAgICAg
ICAgICAgIHRhcmdldCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0aW9uOjpL
aW5kOjpBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2NhdGlvbjo6S2luZDo6RnVu
Y3Rpb24pOwogICAgICAgICAgICAgd3JpdGVzLmFkZChGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLCBM
YXp5Tm9kZShub2RlLT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1
bmN0aW9uQWN0aXZhdGlvblBMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDQ2LDExICsxNDUxLDE0IEBAIGNsYXNzIE9iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIE9w
SW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAKLSAgICAgICAgY2Fz
ZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBjYXNlIEFsbG9j
YXRpb246OktpbmQ6OkFycm93RnVuY3Rpb246CisgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2lu
ZDo6R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6RnVu
Y3Rpb246IHsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBleGVjdXRhYmxlID0gYWxsb2NhdGlv
bi5pZGVudGlmaWVyKCktPmNlbGxPcGVyYW5kKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2NhdGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2lu
ZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fycm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAg
ICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0KKyAgICAgICAgICAgICAgICBhbGxvY2F0aW9u
LmtpbmQoKSA9PSBBbGxvY2F0aW9uOjpLaW5kOjpBcnJvd0Z1bmN0aW9uID8gTmV3QXJyb3dGdW5j
dGlvbiA6CisgICAgICAgICAgICAgICAgYWxsb2NhdGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6
S2luZDo6R2VuZXJhdG9yRnVuY3Rpb24gPyBOZXdHZW5lcmF0b3JGdW5jdGlvbiA6IE5ld0Z1bmN0
aW9uOwogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2RlKAog
ICAgICAgICAgICAgICAgIGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5wcmVkaWN0aW9uKCksIG5v
ZGVUeXBlLApAQCAtMTc4NSw2ICsxNzkzLDEwIEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbU5ld0Z1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKIAorICAgICAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbU5ld0dlbmVyYXRv
ckZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDMzLDcgKzIwNDUsOCBAQCBjbGFzcyBPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9u
OiB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBOZXdHZW5l
cmF0b3JGdW5jdGlvbjogewogICAgICAgICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9u
PiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwogICAg
ICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5zaXplKCkgPT0gMik7CiAgICAgICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQxM2JmODkyYjdmMmQ1ZWYxNmY3ODNmMzVlNWY3
N2M4ZGY0YzkyYTQuLjcyMjE4ZDNmZDExOWExZjM1MmRjNDFiNWNhYzVlMWI3Nzc3NjNlYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMDksNyArMjA5LDggQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldFNldHRl
cjoKICAgICAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlv
bjoKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC01OTEsNiArNTkyLDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKICAg
ICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5j
dGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAg
IGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVj
dEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAwZjQ1NmM5YzE4
MzY2MjEzMGY5YTQ0N2VmMzNkYjBiMjZkMmYzYWFmLi5hMWJiNmU2MGY5ZjM2NzkwZDY0NWUzMjNk
YjYxYWE3YjE0MDRkNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaApAQCAtMjY4LDYgKzI2OCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBKdW1wOgog
ICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgpAQCAtMzE0LDYgKzMxNSw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFRvSW5kZXhTdHJpbmc6CiAgICAgY2FzZSBQaGFudG9tTmV3
T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5l
d0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAg
ICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGY2
NDQyMjA3OGNmZDc5MDcxMDkzNWI3Y2IyNzg3M2Q4OWVmNDY0OTcuLjAyZmY4MmRhZTg0MTdjZDlm
YjIxZTk0ZGM4ZWZlNGE0NjA4MTllOTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiSlNB
cnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52
aXJvbm1lbnRSZWNvcmQuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC01MzcyLDcgKzUzNzMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUg
bm9kZVR5cGUgPSBub2RlLT5vcCgpOwotICAgIEFTU0VSVChub2RlVHlwZSA9PSBOZXdGdW5jdGlv
biB8fCBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbiB8fCBub2RlVHlw
ZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CiAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC01
NDEwLDYgKzU0MTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24o
Tm9kZSogbm9kZSkKICNlbHNlCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUsIHRoaXNWYWx1
ZVRhZ0dQUiwgdGhpc1ZhbHVlUGF5bG9hZEdQUik7CiAjZW5kaWYKKyAgICAgICAgZWxzZSBpZiAo
bm9kZVR5cGUgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCByZXN1bHRHUFIsIHNjb3BlR1BSLCBl
eGVjdXRhYmxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC01NDE3LDkgKzU0MjAsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGVUeXBlID09IE5l
d0Fycm93RnVuY3Rpb24KLSAgICAgICAgPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkKLSAgICAgICAg
OiBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5m
dW5jdGlvblN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KKyAgICAgICAg
bm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSA6Cisg
ICAgICAgIG5vZGVUeXBlID09IE5ld0dlbmVyYXRvckZ1bmN0aW9uID8gbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmUoKSA6CisgICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CkBA
IC01NDM2LDYgKzU0NDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0
aW9uKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJ
bnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4
ZWN1dGFibGUpKTsKICAgICB9CisKKyAgICBpZiAobm9kZVR5cGUgPT0gTmV3R2VuZXJhdG9yRnVu
Y3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVu
Y3Rpb24+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNj
b3BlR1BSLCBzbG93UGF0aCwgSlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUoMCks
IGV4ZWN1dGFibGUsIEpTR2VuZXJhdG9yRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpLCBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSwgSlNHZW5lcmF0b3JGdW5j
dGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKTsKKworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0
aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSkpOworICAgIH0KICAgICAKICAgICBpZiAobm9kZVR5cGUgPT0gTmV3
QXJyb3dGdW5jdGlvbikgewogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25Db21tb248SlNBcnJv
d0Z1bmN0aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BS
LCBzY29wZUdQUiwgc2xvd1BhdGgsIEpTQXJyb3dGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUoMCks
IGV4ZWN1dGFibGUsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCksIEpTQXJy
b3dGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCksIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0
T2ZSYXJlRGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDJmMWQ3NmY5NjhhZWI3NjlkZjY5ZDgyNTQ1ZTg5
MTViNTlmZjY5NTkuLjYyNjk3NWZiOTJlOTM5OTRkMDM5ZTI4ZWNlN2FkNzYwN2Q5NjFjYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDQwOCw2ICs0NDA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Fycm93
RnVuY3Rpb246CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY29tcGls
ZU5ld0Z1bmN0aW9uKG5vZGUpOwogICAgICAgICBicmVhazsKIApAQCAtNDgwMiw2ICs0ODAzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQm90
dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5l
d0Z1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNh
c2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2Ug
Q2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiNDkxMTYxMGIyNWM0NmM5NTRjYjQ3MmFi
NjA4ZTYyZjM3ZGM5ZjU3Li4yZmFjZmFhZDBhNDUzMDVmOTRhNzRjM2NlZjg4YTAxM2RhYTBjODc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTQzOTcsNiArNDM5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdBcnJvd0Z1
bmN0aW9uOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTQ4NTIsNiArNDg1Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEJvdHRv
bVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdG
dW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgog
ICAgIGNhc2UgUHV0SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggZDczNmVmZWJiYWM3
ZTM4MWIwOTkwNzUwM2ExNjE3OWEzNWQ5OTFhNy4uNzJmMjIwMGNlYTEwYjk4MTBkYmE4YzdiMTlm
ZWZmMjRkYWE1ZGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwNiw2ICszMDYsNyBA
QCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgTmV3
QXJyb3dGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CisgICAgICAgICAg
ICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgICAgIC8vIE5vZGVzIHRo
YXQgYWxsb2NhdGUgZ2V0IHRvIHNldCB0aGVpciBlcG9jaCBiZWNhdXNlIGZvciB0aG9zZSBub2Rl
cyB3ZSBrbm93CiAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGV5IHdpbGwgYmUgdGhlIG5ld2Vz
dCBvYmplY3QgaW4gdGhlIGhlYXAuCiAgICAgICAgICAgICAgICAgbV9ub2RlLT5zZXRFcG9jaCht
X2N1cnJlbnRFcG9jaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IGUzOTM3MmIyZDU4OTg0
NjAyMWFhNDZiOTg3ODEyNzJhOTU5MTE5Y2MuLjQzNDVmZjJjYzdkNjcxZDRiODUyNWVkY2Q5NTc0
YWVlMWNmN2ZlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xNDYsNiArMTQ2LDkgQEAg
Y2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVy
U3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbGlkYXRlLmNwcAppbmRleCAwYWI0NDc5ZjQyYTRjZjVlYTEwNTk1MDZlMGQ0MDA5YzM5
ZmI4ZGZhLi5kZTY4ZTYzZDA0ZTg1MThhNDMyZmU0OTZmZTgzMTAyODZhNTdlNmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNDU1LDYgKzQ1NSw3IEBA
IGNsYXNzIFZhbGlkYXRlIHsKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dl
bmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2
YXRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQdXRIaW50OgpAQCAtNTYzLDYgKzU2NCw3IEBAIGNsYXNzIFZhbGlkYXRl
IHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3
RnVuY3Rpb246CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rp
b246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVjM2I4MWM1MWNkZTUzYTczZWJiYmRmNzdiM2Ez
NWNjMTkzMDY4ZjkuLjMyODcwYWE4MWE1MWQwYTdkOGNmOTJkNDBmZmQ2MTJiMjllNWNlNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTEx
MSw2ICsxMTEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9u
OgogICAgIGNhc2UgTmV3RnVuY3Rpb246CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoK
ICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNh
c2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpAQCAtMTk0LDYgKzE5NSw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQm90dG9tVmFsdWU6
CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgorICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRv
bUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1
Y3R1cmVJbW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCmluZGV4IDA2YjViYzAyNTRlY2M0YTZmYjA1ZWI3MGY0ODIxZDc2MWEzYmQ3
MmQuLmU2MDI1YjYzMTRkMDQ1NjZhZmU2MWI5MmVjNjFjNDI0MDZjOTkwNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC01Miw2ICs1
Miw3IEBACiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0Fycm93
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC03
NTQsNiArNzU1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlv
bjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgIGNvbXBp
bGVOZXdGdW5jdGlvbigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3JlYXRl
RGlyZWN0QXJndW1lbnRzOgpAQCAtMTAxMSw2ICsxMDEzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0xM
Vk0gewogICAgICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9t
TmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQ
aGFudG9tQ2xvbmVkQXJndW1lbnRzOgpAQCAtMzU2MCwzNCArMzU2MywzNyBAQCBjbGFzcyBMb3dl
ckRGR1RvTExWTSB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbm9kZS0+b3AoKSA9PSBOZXdGdW5jdGlvbiB8fCBtX25vZGUtPm9w
KCkgPT0gTmV3QXJyb3dGdW5jdGlvbik7Ci0gICAgICAgIAorICAgICAgICBBU1NFUlQobV9ub2Rl
LT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9u
IHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CiAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb247CisgICAg
ICAgIGJvb2wgaXNHZW5lcmF0b3JGdW5jdGlvbiA9IG1fbm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0
b3JGdW5jdGlvbjsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBpc0Fycm93RnVuY3Rp
b24gPyBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpIDogbnVsbHB0cjsKICAgICAgICAgCiAgICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oKTsKICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPnNpbmdsZXRv
bkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgY2FsbFJl
c3VsdCA9IGlzQXJyb3dGdW5jdGlvbgotICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lmlu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiksIG1fY2FsbEZy
YW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSksIHRoaXNWYWx1ZSkKLSAgICAgICAg
ICAgICAgICA6IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7
CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9CisgICAgICAgICAgICAgICAgaXNBcnJv
d0Z1bmN0aW9uID8gdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
TmV3QXJyb3dGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0
YWJsZSksIHRoaXNWYWx1ZSkgOgorICAgICAgICAgICAgICAgIGlzR2VuZXJhdG9yRnVuY3Rpb24g
PyB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0
b3JGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkp
IDoKKyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBpc0Fycm93RnVuY3Rpb24KLSAgICAgICAgICAgID8gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkK
LSAgICAgICAgICAgIDogbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9CisgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSA6Cisg
ICAgICAgICAgICBpc0dlbmVyYXRvckZ1bmN0aW9uID8gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoK
KyAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2Nr
IHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgi
KSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiTmV3RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgp
OwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBpc0Fycm93RnVuY3Rpb24K
LSAgICAgICAgICAgID8gYWxsb2NhdGVPYmplY3Q8SlNBcnJvd0Z1bmN0aW9uPihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKQotICAgICAgICAgICAgOiBhbGxvY2F0ZU9iamVj
dDxKU0Z1bmN0aW9uPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKTsKKyAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPQorICAgICAgICAgICAgaXNBcnJvd0Z1bmN0aW9uID8g
YWxsb2NhdGVPYmplY3Q8SlNBcnJvd0Z1bmN0aW9uPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clpl
cm8sIHNsb3dQYXRoKSA6CisgICAgICAgICAgICBpc0dlbmVyYXRvckZ1bmN0aW9uID8gYWxsb2Nh
dGVPYmplY3Q8SlNHZW5lcmF0b3JGdW5jdGlvbj4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93UGF0aCkgOgorICAgICAgICAgICAgYWxsb2NhdGVPYmplY3Q8SlNGdW5jdGlvbj4oc3Ry
dWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93UGF0aCk7CiAgICAgICAgIAogICAgICAgICAK
ICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBtZW1vcnkgYmFycmllcnMgc2luY2Ugd2UganVzdCBm
YXN0LWNyZWF0ZWQgdGhlIGZ1bmN0aW9uLCBzbyBpdApAQCAtMzYxNyw2ICszNjIzLDEyIEBAIGNs
YXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLCBsb2NhdGlv
bnNbMl0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoaXNHZW5lcmF0b3JGdW5jdGlvbikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50LAogICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGxv
Y2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwCmluZGV4IDM3MDE1YjY1YWY3ZTA4NjVlMDk3M2Q1YmI2MzE1NGUxMmJjMTBm
YTkuLjQ1YzViYjlkNWNkZGE4NDUzMjY4ZTVkNzI3YWRjZjg1NTRmNzMxZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkZUTExhenlTbG93UGF0aC5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewpAQCAtOTIsNiArOTMsNyBAQAogICAgIH0KIAogICAgIGNhc2UgUGhh
bnRvbU5ld0Z1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgog
ICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRB
cmd1bWVudHM6CiAgICAgICAgIC8vIFRob3NlIGFyZSBjb21wbGV0ZWx5IGhhbmRsZWQgYnkgb3Bl
cmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUgpAQCAtMTYwLDcgKzE2Miw4IEBACiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246IHsK
KyAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0
b3JGdW5jdGlvbjogewogICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgdGhlIGV4ZWN1dGFibGUg
YW5kIGFjdGl2YXRpb24gYXJlCiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IG51bGxwdHI7CiAgICAgICAgIEpTU2NvcGUqIGFjdGl2YXRpb24gPSBudWxscHRyOwpAQCAt
MTczLDEwICsxNzYsMTAgQEAKICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0FTU0VSVChleGVj
dXRhYmxlICYmIGFjdGl2YXRpb24pOwogCi0gICAgICAgIAotICAgICAgICBKU0Z1bmN0aW9uKiBy
ZXN1bHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uKTsKLQotICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICBpZiAobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0Z1
bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwor
ICAgICAgICBBU1NFUlQobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0dlbmVy
YXRvckZ1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0
ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFj
dGl2YXRpb24pOwogICAgIH0KIAogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZ1bmN0aW9uLWNyZWF0ZS1vcHRpbWl6ZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlmNGY0MDk3NzdhMDE4NDhlMzJlMjFjNWIwMWE3ZDc1ZTVmNDNkYWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5j
dGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzCkBAIC0wLDAgKzEsMzMgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisKK2Z1
bmN0aW9uICpnKCkgeyB9Cit2YXIgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUgPSBnLl9fcHJv
dG9fXzsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJuIGZ1bmN0aW9uICpnZW4oKQor
ICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfTsKK30KK25vSW5saW5lKHRlc3QpOworCitm
dW5jdGlvbiB0ZXN0MigpCit7CisgICAgZnVuY3Rpb24gKmdlbigpCisgICAgeworICAgICAgICB5
aWVsZCA0MjsKKyAgICB9CisKKyAgICByZXR1cm4gZ2VuOworfQorbm9JbmxpbmUodGVzdDIpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdCgpLl9f
cHJvdG9fXywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHNob3VsZEJlKHRlc3Qy
KCkuX19wcm90b19fLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1k
ZWNsYXJhdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtp
bmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMmJkYmZjMzY1YWVkNzk0NzA0
MzVmNzZkZDIxNmI4ODMwOGM1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM2IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSA9IChmdW5jdGlvbiooKXt9KS5fX3Byb3RvX187CisKK2Z1
bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24g
c2luayAocCwgcSkgeworICAgIGZ1bmN0aW9uICpmKCkgeyB9OworICAgIGlmIChwKSB7CisgICAg
ICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAocSkgewor
ICAgICAgICAgICAgT1NSRXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmOworICAg
IH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNl
KTsKKyAgICBzaG91bGRCZShvLl9fcHJvdG9fXywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUp
OworICAgIGlmIChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLngg
dG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1
bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhh
dCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9
IHNpbmsodHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQg
by54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5r
aW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2JlOWUzMWRhODlmYjRiNDlmNmJiYzIzNDIxNDBlNDJkMTNmZGI3ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9u
LWRlY2xhcmF0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDMwIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
K3ZhciBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA9IChmdW5jdGlvbiooKXt9KS5fX3Byb3Rv
X187CisKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICBmdW5jdGlvbiAqZyh4KSB7IHJldHVy
biB4OyB9OworICAgIGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVybiBnOyB9CisgICAg
ZnVuY3Rpb24gKmYoeCkgeyByZXR1cm4geDsgfTsKKyAgICByZXR1cm4gZjsKK30KK25vSW5saW5l
KHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9
IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGYuX19wcm90b19fLCBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1
bHQubmV4dCgpLnZhbHVlICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0
IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hv
dWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5j
dGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0cnVl
LCB0cnVlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSk7Cit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0Lm5leHQoKS52YWx1ZSAhPSA0MikK
KyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1wdXQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2RlY2E1N2QzZGE2ZDk3N2VmMGY1ZDYyZmYwOTQ1MzQ1MTFkZjliNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsMzggQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQordmFyIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlID0gKGZ1bmN0aW9uKigpe30p
Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIGZ1bmN0aW9uICpnKHgp
IHsgcmV0dXJuIHg7IH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJu
IGc7IH0KKyAgICBmdW5jdGlvbiAqZih4KSB7IHJldHVybiB4OyB9OworICAgIHJldHVybiBmOwor
fQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewor
ICAgIHZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKKyAgICBzaG91bGRCZShmLl9fcHJvdG9fXywg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAg
ICBpZiAocmVzdWx0Lm5leHQoKS52YWx1ZSAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1
bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUg
YWxsb2NhdGlvbiBvbiB0aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2lu
ayh0cnVlLCBmYWxzZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpOwordmFyIHJlc3VsdCA9IGYoMTIpOworaWYgKHJlc3VsdC5uZXh0KCkudmFsdWUg
IT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRo
ZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3Rl
ZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24g
ZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5r
KHRydWUsIHRydWUpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKTsKK3ZhciByZXN1bHQgPSBmLmlubmVyOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0
aHJvdyAiRXJyb3I6IGlubmVyIHNob3VsZCBiZSA0MiBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWV4cHJlc3Npb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1leHByZXNzaW9uLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMGU2ZjBlNzFlMjMzYTlk
ZDFjNWQ4MmNkMWFlMzUwZWUxMDhjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtp
bmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlID0gKGZ1bmN0aW9uKigpe30pLl9fcHJvdG9fXzsKKwor
ZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlv
biBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSBmdW5jdGlvbiAqKCkgeyB9OworICAgIGlmIChw
KSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAgICBp
ZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmspOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRy
dWUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShvLl9fcHJvdG9fXywgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpOworICAgIGlmIChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBl
Y3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2lu
dCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8g
Q2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0
Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjog
ZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1leHByZXNz
aW9uLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ4MzY1ODE0NTdkZGJiM2ZmOTdmODcxYTJiMTg2ODM4ZDI0ZGI3MGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
dW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDI5IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KK3ZhciBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA9IChmdW5jdGlvbiooKXt9KS5f
X3Byb3RvX187CisKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IGZ1bmN0aW9u
ICooeCkgeyByZXR1cm4geDsgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1
cm4gZzsgfQorICAgIHJldHVybiBmdW5jdGlvbiAqKHgpIHsgcmV0dXJuIHg7IH07Cit9Citub0lu
bGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFy
IGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShmLl9fcHJvdG9fXywgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAo
cmVzdWx0Lm5leHQoKS52YWx1ZSAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQy
IGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9u
IHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUg
ZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmso
dHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOwordmFyIHJlc3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdC5uZXh0KCkudmFsdWUgIT0g
NDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
dW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLXB1dC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40M2Y1MDkxN2Q4MmU5ZjI5NDdhZjJkZjI0MGYwYThhMTdmZjU2MTg5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLXB1dC5qcwpAQCAtMCwwICsxLDM3IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KK3ZhciBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA9IChmdW5jdGlvbiooKXt9
KS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IGZ1bmN0
aW9uICooeCkgeyByZXR1cm4geDsgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQy
OyByZXR1cm4gZzsgfQorICAgIHJldHVybiBmdW5jdGlvbiAqKHgpIHsgcmV0dXJuIHg7IH07Cit9
Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgdmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworICAgIHNob3VsZEJlKGYuX19wcm90b19fLCBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAg
IGlmIChyZXN1bHQubmV4dCgpLnZhbHVlICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0
ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVu
Y3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBh
bGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5r
KHRydWUsIGZhbHNlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSk7Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0Lm5leHQoKS52YWx1ZSAh
PSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhl
ciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVk
IDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBk
aWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2YXIgZiA9IHNpbmso
dHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRo
cm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDgyMzMyZmZlNTEwYjU3NWIyOWJjZTFkNjc2OTI1NmNjNGQxYTc1YTkuLjc1Mjc3NTYyNWI5MzVk
MDlkMmU4MzE2ZWFiY2I5NDNlNGFiYTU3Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0x
Mi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
RVM2XSBIYW5kbGUgbmV3X2dlbmVyYXRvcl9mdW5jIC8gbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCBp
biBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgdGhlIHRlc3QgdGFraW5nIGxvbmdlciB0aW1lLgorCisgICAgICAgICoganMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNyZWF0ZS5qczoKKyAgICAgICAg
KHRlc3QpOgorCiAyMDE1LTEyLTA4ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIEZpeCBjb21wdXRhdGlvbiBvZiBtaW58bWF4LWNvbnRlbnQgY29u
dHJpYnV0aW9uIG9mIG5vbi1yZXBsYWNlZCBibG9ja3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2dlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUuanMgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9nZW5lcmF0b3ItZnVuY3Rpb24tY3Jl
YXRlLmpzCmluZGV4IGQxMGMxMzcyOWQ5YmM0YzFiY2RhNGUyYTJlY2QyZmM3MjFjNGVlY2MuLmFl
NGViOWVlYzY4MjdlMWU0MjY4NjQ4NmZlZTBmNWZhYWQyZWEyNDAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2dlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUu
anMKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZ2VuZXJhdG9yLWZ1
bmN0aW9uLWNyZWF0ZS5qcwpAQCAtNyw2ICs3LDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZUdlbmVyYXRv
ckZ1bmN0aW9uKCkKICAgICB9CiAgICAgcmV0dXJuIGdlbjsKIH0KLW5vSW5saW5lKGNyZWF0ZUdl
bmVyYXRvckZ1bmN0aW9uKTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNTAwOyArK2kpCisgICAgICAgIGNyZWF0ZUdlbmVyYXRvckZ1bmN0aW9uKCk7Cit9Citu
b0lubGluZSh0ZXN0KTsKKwogZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKLSAgICBjcmVh
dGVHZW5lcmF0b3JGdW5jdGlvbigpOworICAgIHRlc3QoKTsK
</data>
<flag name="review"
          id="292507"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>