<?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>32099</bug_id>
          
          <creation_ts>2009-12-02 20:33:17 -0800</creation_ts>
          <short_desc>Must fabricate GL errors instead of throwing exceptions</short_desc>
          <delta_ts>2009-12-10 15:55:44 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32391</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>brettw</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>oliver</cc>
    
    <cc>petersont</cc>
    
    <cc>rlp</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>168249</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-02 20:33:17 -0800</bug_when>
    <thetext>In most, if not all, cases where the WebKit WebGL implementation is raising JavaScript exceptions, for example during argument validation, it instead needs to fabricate the appropriate GL errors. Higher-level code can check the GL error state after each call and explicitly throw an exception. 

This is important to fix as soon as possible to make the implementation spec compliant and, in particular, so that the working group doesn&apos;t release bogus tests along with the first public draft of the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168598</commentid>
    <comment_count>1</comment_count>
      <attachid>44278</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-03 17:05:32 -0800</bug_when>
    <thetext>Created attachment 44278
Strawman patch

Not requesting review yet -- this is only for discussion with the WebGL working group.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169875</commentid>
    <comment_count>2</comment_count>
      <attachid>44507</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-08 19:27:16 -0800</bug_when>
    <thetext>Created attachment 44507
Proposed patch

Changed WebGLRenderingContext to synthesize GL errors rather than raising JavaScript exceptions. Removed internal getError() calls after each graphics call. Based on idea from Ilmari Heikkinen, added create3DDebugContext() to webgl-test.js and changed the WebGL layout tests expecting error conditions to use it. The tests required no more than 2 lines of code change each and behave identically to how they did before. The changes to the expected.txt files are simply the contents of the exception messages, which implicitly test the exact GL error raised since that is part of the detail message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169876</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-08 19:29:23 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44507 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169893</commentid>
    <comment_count>4</comment_count>
      <attachid>44507</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-08 20:44:30 -0800</bug_when>
    <thetext>Comment on attachment 44507
Proposed patch

Ken, before i review this can i just get some clarification?

My recollection of glGetError behaviour is that every gl call clears the error flag, and then sets it if there&apos;s an error.  Is this correct?

Assuming it is correct it would seem that the first thing each of the WebGL functions should do is clear the error flag, this results in the following cases i believe we need to handle:

functionThatCreatesRealGLError();
functionThatDoesntTouchGLRuntimeButClearsError();
glGetError(); // should not produce an error

functionThatCreatesSynthesisedError();
functionThatDoesntProduceAnError();
glGetError(); // should not produce an error

functionThatCreatesRealGLError();
functionThatCreatesSynthesisedError();
glGetError(); // should produce an error
glGetError(); // should not produce an error

There may be a few other cases i haven&apos;t thought of</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169922</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-09 00:36:59 -0800</bug_when>
    <thetext>The GL error state conceptually is a set of error flags. If a particular error flag is set then no further errors of that kind will be recorded. glGetError picks an arbitrary flag which is set, clears the flag, and returns the associated error to the caller. No other OpenGL API calls clear the error flags. See http://www.khronos.org/opengles/sdk/docs/man/glGetError.xml .

This implementation has one flaw, which is that if a synthetic GL error (say, INVALID_VALUE) is set and the same error happens to be set in the real GL state, both errors will be reported if glGetError is called multiple times. There are probably a couple of different ways to address this, but in the interest of simplicity I didn&apos;t attempt to fix it in this initial code. I don&apos;t think it will affect any real programs since they tend to call glGetError until it returns NO_ERROR, and this implementation will reach that fixed point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170221</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-09 15:22:00 -0800</bug_when>
    <thetext>Any chance of a review of this today? I had been hoping to get this checked in for tomorrow&apos;s draft spec release, but I suppose it isn&apos;t critical, especially if there&apos;s anything controversial about these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170266</commentid>
    <comment_count>7</comment_count>
      <attachid>44507</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-09 17:38:34 -0800</bug_when>
    <thetext>Comment on attachment 44507
Proposed patch

Can you add a test for the result of context.getError() after a non-errored call? eg.

context.getParameter(&quot;blargh!&quot;);
context.getParameter(&lt;something correct&gt;);
context.getError();  // should be clear here

as well as a test to verify that we still provide actual errors form the gl runtime correctly as well
Can you also add a test to verify that we get GL_NO_ERROR back from getError after we have cleared the error list?

The code itself seems fine to me, i&apos;d just like those tests to be added :-D

--Oliver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170276</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-09 18:13:53 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 44507 [details])
&gt; Can you add a test for the result of context.getError() after a non-errored
&gt; call? eg.
&gt; 
&gt; context.getParameter(&quot;blargh!&quot;);
&gt; context.getParameter(&lt;something correct&gt;);
&gt; context.getError();  // should be clear here

In this case the error flag is still supposed to be set. Is there some other situation you would like me to test?

&gt; as well as a test to verify that we still provide actual errors form the gl
&gt; runtime correctly as well

I&apos;ll add a new test. Looking through preexisting tests which cover this case, I just realized that getActiveAttrib is synthesizing errors in a case it shouldn&apos;t, which I&apos;ll fix in the next patch and cover in the test.

&gt; Can you also add a test to verify that we get GL_NO_ERROR back from getError
&gt; after we have cleared the error list?

Will add this in the new test, although it is actually already covered by preexisting tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170351</commentid>
    <comment_count>9</comment_count>
      <attachid>44597</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-10 00:27:17 -0800</bug_when>
    <thetext>Created attachment 44597
Revised patch

(The ChangeLogs have been updated to reflect the comments below.)

Compared to the previous version:

 - Further testing uncovered bugs in error reporting in getActiveAttrib and getActiveUniform. These and the other bugs above highlighted the need to move the synthetic error management down into the GraphicsContext3D, because only at that level is complete information available for certain cases. Did this and changed the code in WebGLRenderingContext to call GraphicsContext3D::synthesizeGLError.
 - Testing on Chrome uncovered preexisting bugs in both WebKit&apos;s and Chrome&apos;s implementations of bindFramebuffer, framebufferRenderbuffer, and framebufferTexture2D. Fixed these bugs and the associated tests from LayoutTests/fast/canvas/webgl/null-object-behaviour.html.
 - Added LayoutTests/fast/canvas/webgl/error-reporting.html, which includes requested test cases as well as explicit regression tests for the other bugs uncovered during this exercise.

Tested on both WebKit and Chrome. All tests now pass in both browsers; the error reporting behavior is identical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170354</commentid>
    <comment_count>10</comment_count>
      <attachid>44597</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-10 00:30:45 -0800</bug_when>
    <thetext>Comment on attachment 44597
Revised patch

Ken, can you please not fix multiple unrelated bugs in a single patch.

The correct thing to do is to file a bug and fix them separately.  Putting multiple bug fixes into a single patch is harmful in the long term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170355</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-10 00:31:08 -0800</bug_when>
    <thetext>Attachment 44597 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/GraphicsContext3D.cpp:748:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170356</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-10 00:33:03 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 44597 [details])
&gt; Ken, can you please not fix multiple unrelated bugs in a single patch.
&gt; 
&gt; The correct thing to do is to file a bug and fix them separately.  Putting
&gt; multiple bug fixes into a single patch is harmful in the long term.

If these issues aren&apos;t fixed then the existing tests will start to fail. What do you want me to do? Comment out the failing portions of the tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170451</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-10 10:00:13 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 44597 [details] [details])
&gt; &gt; Ken, can you please not fix multiple unrelated bugs in a single patch.
&gt; &gt; 
&gt; &gt; The correct thing to do is to file a bug and fix them separately.  Putting
&gt; &gt; multiple bug fixes into a single patch is harmful in the long term.
&gt; 
&gt; If these issues aren&apos;t fixed then the existing tests will start to fail. What
&gt; do you want me to do? Comment out the failing portions of the tests?

May I ask again what I should do in this case? Should I comment out the failing portions of the tests and fix both them and the associated code in another bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170452</commentid>
    <comment_count>14</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-10 10:03:45 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; (From update of attachment 44597 [details] [details] [details])
&gt; &gt; &gt; Ken, can you please not fix multiple unrelated bugs in a single patch.
&gt; &gt; &gt; 
&gt; &gt; &gt; The correct thing to do is to file a bug and fix them separately.  Putting
&gt; &gt; &gt; multiple bug fixes into a single patch is harmful in the long term.
&gt; &gt; 
&gt; &gt; If these issues aren&apos;t fixed then the existing tests will start to fail. What
&gt; &gt; do you want me to do? Comment out the failing portions of the tests?
&gt; 
&gt; May I ask again what I should do in this case? Should I comment out the failing
&gt; portions of the tests and fix both them and the associated code in another bug?

Comment out the framebuffer tests that are going to be broken, then re-enable them as part of the bug fix for not correctly tracking the active fbo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170514</commentid>
    <comment_count>15</comment_count>
      <attachid>44637</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-10 14:01:49 -0800</bug_when>
    <thetext>Created attachment 44637
Revised patch

Removed changes related to default FBO and commented out affected portions of test cases. Filed https://bugs.webkit.org/show_bug.cgi?id=32391 to track this remaining issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170516</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-10 14:07:17 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44637 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170518</commentid>
    <comment_count>17</comment_count>
      <attachid>44637</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-10 14:11:54 -0800</bug_when>
    <thetext>Comment on attachment 44637
Revised patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170561</commentid>
    <comment_count>18</comment_count>
      <attachid>44637</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-10 15:55:36 -0800</bug_when>
    <thetext>Comment on attachment 44637
Revised patch

Clearing flags on attachment: 44637

Committed r51970: &lt;http://trac.webkit.org/changeset/51970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170562</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-10 15:55:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44278</attachid>
            <date>2009-12-03 17:05:32 -0800</date>
            <delta_ts>2009-12-08 19:27:16 -0800</delta_ts>
            <desc>Strawman patch</desc>
            <filename>errors.patch</filename>
            <type>text/plain</type>
            <size>76893</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTY2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODAgQEAKKzIwMDktMTItMDMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11
c3QgZmFicmljYXRlIEdMIGVycm9ycyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDk5CisKKyAg
ICAgICAgQ2hhbmdlZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gc3ludGhlc2l6ZSBHTCBlcnJv
cnMgcmF0aGVyIHRoYW4KKyAgICAgICAgcmFpc2luZyBKYXZhU2NyaXB0IGV4Y2VwdGlvbnMuIFJl
bW92ZWQgaW50ZXJuYWwgZ2V0RXJyb3IoKSBjYWxscworICAgICAgICBhZnRlciBlYWNoIGdyYXBo
aWNzIGNhbGwuIEJhc2VkIG9uIGlkZWEgZnJvbSBJbG1hcmkgSGVpa2tpbmVuLAorICAgICAgICBh
ZGRlZCBjcmVhdGUzRERlYnVnQ29udGV4dCgpIHRvIHdlYmdsLXRlc3QuanMgYW5kIGNoYW5nZWQg
dGhlCisgICAgICAgIFdlYkdMIGxheW91dCB0ZXN0cyBleHBlY3RpbmcgZXJyb3IgY29uZGl0aW9u
cyB0byB1c2UgaXQuIFRoZSB0ZXN0cworICAgICAgICByZXF1aXJlZCBubyBtb3JlIHRoYW4gMiBs
aW5lcyBvZiBjb2RlIGNoYW5nZSBlYWNoIGFuZCBiZWhhdmUKKyAgICAgICAgaWRlbnRpY2FsbHkg
dG8gaG93IHRoZXkgZGlkIGJlZm9yZS4gVGhlIGNoYW5nZXMgdG8gdGhlCisgICAgICAgIGV4cGVj
dGVkLnR4dCBmaWxlcyBhcmUgc2ltcGx5IHRoZSBjb250ZW50cyBvZiB0aGUgZXhjZXB0aW9uCisg
ICAgICAgIG1lc3NhZ2VzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6
ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3Rp
dmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Ymlu
ZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVB
dHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3Rp
dmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
QnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFk
ZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFZlcnRleEF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6c2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTRpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDoKKwogMjAwOS0xMi0wMyAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAko
cmV2aXNpb24gNTE2NjgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxOCArMTQwLDE5IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKGludCAKIAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6c2l6ZUluQnl0ZXMoaW50IHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaW50IHJlc3VsdCA9IG1fY29udGV4dC0+c2l6ZUluQnl0ZXModHlw
ZSk7CiAgICAgaWYgKHJlc3VsdCA8PSAwKQotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFj
dGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICgodGV4dHVyZSAtIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkgPiBzaXplb2YobV90ZXh0dXJlVW5pdHMpIC8gc2l6ZW9mKFRleHR1cmVV
bml0U3RhdGUpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJy
b3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtX2FjdGl2ZVRleHR1cmVVbml0ID0gdGV4dHVyZSAtIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMDsKQEAgLTE2MSw4ICsxNjIsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
YWN0aXZlVGV4dHVyCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphdHRhY2hTaGFkZXIo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9n
cmFtLT5jb250ZXh0KCkgIT0gdGhpcyB8fCAhc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9
IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
cik7CkBAIC0xNzEsOCArMTczLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmF0dGFj
aFNoYWRlcgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEF0dHJpYkxvY2F0aW9u
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAg
IGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
bV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUpOwpAQCAt
MTgxLDggKzE4NCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQXR0cmliTG8K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0
YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVO
VVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPmNvbnRleHQoKSAhPSB0
aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTkxLDggKzE5NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpiaW5kQnVmZmVyKHUKICAgICBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKQogICAgICAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVm
ZmVyID0gYnVmZmVyOwogICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5W
QUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIwMywxMyArMjA2LDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kQnVmZmVyKHUKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRG
cmFtZWJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVy
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChi
dWZmZXIgJiYgYnVmZmVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHRhcmdl
dCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpIHsKLSAgICAgICAgLy8gRklYTUU6
IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gYnVm
ZmVyOwpAQCAtMjE5LDEzICsyMjIsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJp
bmRGcmFtZWJ1ZgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1ZmZl
cih1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlckJ1ZmZlciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAocmVu
ZGVyQnVmZmVyICYmIHJlbmRlckJ1ZmZlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUikgewotICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9yZW5kZXJidWZmZXJC
aW5kaW5nID0gcmVuZGVyQnVmZmVyOwpAQCAtMjM2LDggKzIzOSw5IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kUmVuZGVyYnUKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJpbmRUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRl
eHR1cmUgJiYgdGV4dHVyZS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0YXJn
ZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpCkBAIC0yNDUsOCArMjQ5LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKAogICAgIGVsc2UgaWYgKHRh
cmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUCkKICAgICAgICAgbV90
ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcg
PSB0ZXh0dXJlOwogICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwpA
QCAtMjg2LDE4ICsyODksMTkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVu
Y1NlcAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEVsZW1lbnRBcnJheUJ1
ZmZlcikgewogICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmFzc29jaWF0
ZUJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplKSkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiAmJiBtX2JvdW5kQXJy
YXlCdWZmZXIpIHsKICAgICAgICAgaWYgKCFtX2JvdW5kQXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1
ZmZlckRhdGEodGFyZ2V0LCBzaXplKSkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MzA3LDE4ICszMTEsMTkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEo
dQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgV2ViR0xBcnJheSogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0ID09IEdy
YXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAmJiBtX2JvdW5kRWxlbWVudEFy
cmF5QnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+YXNz
b2NpYXRlQnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEpKSB7Ci0gICAgICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91
bmRBcnJheUJ1ZmZlcikgewogICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2Np
YXRlQnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEpKSB7Ci0gICAgICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0zMjgsMTggKzMzMywxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVy
RGF0YSh1CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSogZGF0YSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0ID09IEdy
YXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAmJiBtX2JvdW5kRWxlbWVudEFy
cmF5QnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+YXNz
b2NpYXRlQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YSkpIHsKLSAgICAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZG
RVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9ib3VuZEFycmF5QnVm
ZmVyLT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhKSkgewotICAg
ICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzkzLDggKzM5OSw5IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojpjb2xvck1hc2soYm8KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRl
eHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKQEAgLTQ1MCw4ICs0NTcsOSBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJH
TFJlbmRlCiAKIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlU2hhZGVyKHVuc2lnbmVkIGxvbmcgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
VkVSVEVYX1NIQURFUiAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFE
RVIpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIApAQCAtNTM0LDggKzU0Miw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkZXB0aFJhbmdlKGQKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaFNoYWRl
cihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHBy
b2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzIHx8ICFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkg
IT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hh
ZGVyKTsKQEAgLTU1MSw4ICs1NjAsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlz
YWJsZSh1bnNpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaW5kZXggPj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKQEAgLTYzMCw5ICs2NDAsMTAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlUmVuZAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5
cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgLy8gRW5zdXJlIHdlIGhhdmUg
YSB2YWxpZCByZW5kZXJpbmcgc3RhdGUKICAgICBpZiAoZmlyc3QgPCAwIHx8IGNvdW50IDwgMCB8
fCAhdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZShmaXJzdCArIGNvdW50KSkgewotICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBA
IC02NDIsMTEgKzY1MywxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5
cyh1CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHModW5zaWduZWQg
bG9uZyBtb2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcg
b2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAg
IC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlCiAgICAgbG9uZyBudW1F
bGVtZW50czsKICAgICAKICAgICBpZiAob2Zmc2V0IDwgMCB8fCAhdmFsaWRhdGVJbmRleEFycmF5
KGNvdW50LCB0eXBlLCBvZmZzZXQsIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVSZW5kZXJpbmdT
dGF0ZShudW1FbGVtZW50cykpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNjYyLDggKzY3NCw5IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUodW5zaWcKIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGluZGV4
ID49IG1fbWF4VmVydGV4QXR0cmlicykgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC02OTEsOCArNzA0LDkgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZsdXNoKCkKIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0
LCBXZWJHTFJlbmRlcmJ1ZmZlciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBV
TlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5jb250ZXh0KCkgIT0g
dGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9ICAgICAgIAogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CkBAIC03
MDEsOCArNzE1LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUgog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0
ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBsZXZlbCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGV4dHVyZSAmJiB0ZXh0
dXJlLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJS
OworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZl
clRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwp
OwpAQCAtNzIzLDkgKzczOCwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2VuZXJh
dGVNaXBtCiAKIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAg
QWN0aXZlSW5mbyBpbmZvOwogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkg
IT0gdGhpcyB8fCAhbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGlu
Zm8pKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIHJldHVybiBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUs
IGluZm8udHlwZSwgaW5mby5zaXplKTsKQEAgLTczMyw5ICs3NDksMTAgQEAgUGFzc1JlZlB0cjxX
ZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaQogCiBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5m
bz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBBY3RpdmVJbmZvIGluZm87CiAgICAgaWYgKCFwcm9ncmFt
IHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzIHx8ICFtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGluZm8pKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9F
UlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiBXZWJHTEFjdGl2
ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5zaXplKTsKQEAgLTc0OCwx
NSArNzY1LDE0IEBAIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dHJpYkxvY2EKIAog
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkFSUkFZX0JVRkZFUiAmJiB0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVM
RU1FTlRfQVJSQVlfQlVGRkVSKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElE
X0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbygpOwogICAgIH0KIAogICAgIGlmIChwbmFtZSAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6QlVGRkVSX1NJWkUgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZFUl9V
U0FHRSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0g
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKICAgICB9CiAKQEAgLTc3MSwxMSArNzg3LDE5IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEIKIAogdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEVycm9yKCkKIHsKKyAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkgewor
ICAgICAgICBMaXN0SGFzaFNldDx1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgaXRlciA9IG1fc3lu
dGhldGljRXJyb3JzLmJlZ2luKCk7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZXJyID0gKml0ZXI7
CisgICAgICAgIG1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKKyAgICAgICAgcmV0dXJu
IGVycjsKKyAgICB9CisKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRFcnJvcigpOwogfQogCiBX
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUgogICAgICAgICB8fCAoYXR0YWNobWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QVRUQUNITUVOVDAKICAgICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0FUVEFDSE1FTlQKQEAgLTc4NCw4ICs4MDgsNyBAQCBXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQogICAgICAgICAg
ICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTAogICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFKSkgewotICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiAKQEAg
LTgyNCw2ICs4NDcsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
CiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcih1bnNp
Z25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0o
ZWMpOwogICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CiAgICAgc3dpdGNoIChw
bmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9URVhUVVJFOgpAQCAt
OTkwLDE3ICsxMDE0LDE2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFAKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWSUVXUE9SVDoKICAgICAgICAgcmV0dXJu
IGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIH0KIAog
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dy
YW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZB
TElEX1ZBTFVFIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIApAQCAtMTAyMSwxNyArMTA0NCwx
NiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAgIG1f
Y29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAg
ICAgfQogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtSW5mb0xv
ZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0
aGlzKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCi0g
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuICIiOwog
ICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwpAQCAtMTA0MCw5ICsx
MDYyLDkgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbQogCiBXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6UkVOREVSQlVGRkVSKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9J
TlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIApAQCAtMTA2MywxNyArMTA4NSwxNiBAQCBX
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSCiAgICAgICAgIG1fY29udGV4
dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1
ZSkpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VO
VU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbygpOwogICAgIH0KIH0KIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAg
ICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgotICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9
CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTEwOTEsMTYgKzExMTIs
MTYgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UwogICAgICAgICBt
X2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKICAgICBkZWZhdWx0
OgotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAg
ICB9CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckluZm9Mb2co
V2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuICIi
OwogICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwpAQCAtMTEwOSw4
ICsxMTMwLDkgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVySQogCiBT
dHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIq
IHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAg
ICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVj
ID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KICAg
ICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwpAQCAtMTEyNSwxMCArMTE0NywxMCBA
QCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdHJpbmcoCiAKIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJECiAgICAgICAgICYmIHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9D
VUJFX01BUCkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9y
Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oKTsKICAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTEx
NDEsMTcgKzExNjMsMTYgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VAogICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2
YWx1ZSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZz4odmFsdWUpKTsKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xf
SU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiB9CiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxv
Y2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAg
IGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgotICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9
CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTExNjEsOCArMTE4Miw3
IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFjdGl2ZVVuaWZvcm1zOyBpKyspIHsKICAgICAgICAgQWN0aXZlSW5mbyBp
bmZvOwogICAgICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBp
LCBpbmZvKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IHJhaXNlIHNvbWUgR0wgZXJyb3IKLSAg
ICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gTm93IG5lZWQgdG8g
bG9vayB0aGlzIHVwIGJ5IG5hbWUgYWdhaW4gdG8gZmluZCBpdHMgbG9jYXRpb24KQEAgLTEyMzUs
NiArMTI1NSw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAvLyBDYW4ndCBoYW5k
bGUgdGhpcyB0eXBlCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGF0IHRvIGRvIGFi
b3V0IHNhbXBsZXJzPworICAgICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoYmFz
ZVR5cGUpIHsKQEAgLTEyNzIsMjAgKzEyOTMsMjMgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VQogICAgICAgICB9CiAgICAgfQogICAgIC8vIElmIHdlIGdldCBoZXJl
LCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbiBvdXIgdW5mb3J0dW5hdGVseSBjb21wbGV4IGxvZ2lj
IGFib3ZlCisgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKIH0KIAogbG9uZyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsK
LSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CiB9CiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CiAgICAgc3dpdGNoIChwbmFt
ZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVG
RkVSX0JJTkRJTkc6IHsKQEAgLTEzMjAsOCArMTM0NCw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFYKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEZs
b2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgNCkpOwogICAgIH0KICAgICBkZWZhdWx0OiB7Ci0gICAg
ICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KICAg
ICB9CkBAIC0xNDAxLDggKzE0MjQsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlu
ZVdpZHRoKGRvCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpsaW5rUHJvZ3JhbShXZWJH
TFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJB
TShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAgICAgCkBAIC0xNDU1LDggKzE0NzksOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6c2Npc3Nvcihsb25nCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaGFk
ZXJTb3VyY2UoV2ViR0xTaGFkZXIqIHNoYWRlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIg
fHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5zaGFk
ZXJTb3VyY2Uoc2hhZGVyLCBzdHJpbmcpOwpAQCAtMTUyNiwxMyArMTU1MSwxNSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1CiB7CiAgICAgZWMgPSAwOwogICAgIGlm
ICghaW1hZ2UpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2Ut
PmNhY2hlZEltYWdlKCk7Ci0gICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICBpZiAoIWNhY2hlZElt
YWdlKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBGb3Ig
bm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgbV9jb250ZXh0LT50ZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGNhY2hlZEltYWdlLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlw
bHlBbHBoYSk7CkBAIC0xNTQ0LDEzICsxNTcxLDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp0ZXhJbWFnZTJEKHUKIHsKICAgICBlYyA9IDA7CiAgICAgaWYgKCFjYW52YXMpIHsKLSAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7Ci0gICAgaWYg
KCFidWZmZXIpCisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQK
ICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgYnVmZmVyLT5pbWFnZSgp
LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7CkBAIC0xNjA1LDEzICsxNjM0LDE1IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIKICAgICAvLyBGSVhNRTogRm9yIG5v
dyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0gMDsKICAgICBpZiAoIWlt
YWdlKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZS0+
Y2FjaGVkSW1hZ2UoKTsKLSAgICBpZiAoIWNhY2hlZEltYWdlKQorICAgIGlmICghY2FjaGVkSW1h
Z2UpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9jb250ZXh0LT50ZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGNhY2hlZEltYWdlLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE2MjMsMTMgKzE2NTQsMTUgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMgogewogICAgIGVjID0gMDsKICAg
ICBpZiAoIWNhbnZhcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNh
bnZhcy0+YnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCisgICAgaWYgKCFidWZmZXIpIHsKKyAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
OwogICAgICAgICByZXR1cm47CisgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdl
IGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGJ1ZmZlci0+
aW1hZ2UoKSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEpOwpAQCAtMTY1NCwyMCArMTY4NywyMCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmKGxvCiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJh
eSogdikKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNz
ZWQgaW4KLSAgICBpZiAoIXYpCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKyAgICB9CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCB2LT5k
YXRhKCksIHYtPmxlbmd0aCgpKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdihsb25nIGxvY2F0
aW9uLCBmbG9hdCogdiwgaW50IHNpemUpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhy
b3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorICAgIGlmICghdikgeworICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIG1fY29udGV4dC0+dW5pZm9y
bTFmdihsb2NhdGlvbiwgdiwgc2l6ZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KQEAgLTE2ODAsMjAgKzE3MTMsMjAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0xaShsbwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFp
dihsb25nIGxvY2F0aW9uLCBXZWJHTEludEFycmF5KiB2KQogewotICAgIC8vIEZJWE1FOiB3ZSBu
ZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKyAgICBpZiAo
IXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkpOwogICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWl2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpCiB7Ci0g
ICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAg
aWYgKCF2KQorICAgIGlmICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisg
ICAgfQogICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgdiwgc2l6ZSk7CiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTE3MDYsMTAgKzE3MzksMTAg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZihsbwogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihsb25nIGxvY2F0aW9uLCBXZWJHTEZsb2F0QXJy
YXkqIHYpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFz
c2VkIGluCi0gICAgaWYgKCF2KQorICAgIGlmICghdikgeworICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsK
LSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiAyCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCB2LT5kYXRhKCks
IHYtPmxlbmd0aCgpIC8gMik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
QEAgLTE3MTcsMTAgKzE3NTAsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0yZnYobAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihsb25nIGxv
Y2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorICAgIGlmICghdikgewor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2
KGxvY2F0aW9uLCB2LCBzaXplIC8gMik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKQEAgLTE3MzQsMTAgKzE3NjcsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm0yaShsbwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihs
b25nIGxvY2F0aW9uLCBXZWJHTEludEFycmF5KiB2KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVk
IHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKyAgICBpZiAoIXYp
IHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1fY29udGV4dC0+dW5pZm9y
bTJpdihsb2NhdGlvbiwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDIpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xNzQ1LDEwICsxNzc4LDEwIEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0yaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSkKIHsKLSAg
ICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBp
ZiAoIXYpCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAg
ICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIHYsIHNpemUgLyAyKTsKICAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTc2MiwxMCArMTc5NSwxMCBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmKGxvCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJheSogdikK
IHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4K
LSAgICBpZiAoIXYpCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDMKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIHYtPmRhdGEoKSwgdi0+bGVu
Z3RoKCkgLyAzKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTc3
MywxMCArMTgwNiwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihs
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSkKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBp
ZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisgICAgaWYgKCF2KSB7CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRp
b24sIHYsIHNpemUgLyAzKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpA
QCAtMTc5MCwxMCArMTgyMywxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNpKGxvCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGxvbmcgbG9j
YXRpb24sIFdlYkdMSW50QXJyYXkqIHYpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhy
b3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorICAgIGlmICghdikgeworICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxv
Y2F0aW9uLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gMyk7CiAgICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE4MDEsMTAgKzE4MzQsMTAgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYobAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTNpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKQogewotICAgIC8vIEZJ
WE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikK
KyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgdiwgc2l6ZSAvIDMpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xODE4LDEwICsxODUxLDEwIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGYobG8KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgV2ViR0xGbG9hdEFycmF5KiB2KQogewotICAg
IC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlm
ICghdikKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAg
IH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAg
IG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAv
IDQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xODI5LDEwICsx
ODYyLDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGwKIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQq
IHYsIGludCBzaXplKQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFy
cmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgdiwg
c2l6ZSAvIDQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xODQ2
LDEwICsxODc5LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGkobG8K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYobG9uZyBsb2NhdGlvbiwg
V2ViR0xJbnRBcnJheSogdikKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBu
byBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0
byBiZSBhIG11bHRpcGxlIG9mIDQKICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24s
IHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyA0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwpAQCAtMTg1NywxMCArMTg5MCwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTRpdihsCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGl2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpCiB7Ci0gICAgLy8gRklYTUU6IHdl
IG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorICAgIGlm
ICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51
bmlmb3JtNGl2KGxvY2F0aW9uLCB2LCBzaXplIC8gNCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKQEAgLTE4NjgsMTAgKzE5MDEsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm00aXYobAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xGbG9hdEFy
cmF5KiB2KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBh
c3NlZCBpbgotICAgIGlmICghdikKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47
Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgdHJh
bnNwb3NlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gNCk7CiAgICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE4NzksMTAgKzE5MTIsMTAgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHYs
IGludCBzaXplKQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5
IHBhc3NlZCBpbgotICAgIGlmICghdikKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1
cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LCBzaXplIC8gNCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKQEAgLTE4OTAsMTAgKzE5MjMsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xGbG9hdEFycmF5KiB2KQog
ewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgot
ICAgIGlmICghdikKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAg
IAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
OQogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB2
LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gOSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKQEAgLTE5MDEsMTAgKzE5MzQsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHYsIGludCBzaXpl
KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBp
bgotICAgIGlmICghdikKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUg
b2YgOQogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJhbnNwb3Nl
LCB2LCBzaXplIC8gOSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAg
LTE5MTIsMTAgKzE5NDUsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihsb25n
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xGbG9hdEFycmF5KiB2KQogewotICAgIC8v
IEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICgh
dikKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0K
ICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYKICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgdi0+ZGF0YSgp
LCB2LT5sZW5ndGgoKSAvIDE2KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwpAQCAtMTkyMywxMCArMTk1NiwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybU1hdHJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2
KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdiwgaW50IHNpemUpCiB7Ci0g
ICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAg
aWYgKCF2KQorICAgIGlmICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisg
ICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgog
ICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBz
aXplIC8gMTYpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTM0
LDggKzE5NjcsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBp
ZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAg
ICAKQEAgLTE5NDYsOCArMTk4MCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQ
cm9ncmFtKFcKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUHJvZ3JhbShX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlz
KSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgICAgCkBAIC0yMDQ1LDkgKzIwODAsOSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmVydGV4QXR0cmliCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgbG9uZyBzaXplLCB1bnNpZ25l
ZCBsb25nIHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2ln
bmVkIGxvbmcgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0o
ZWMpOwogICAgIGlmICghbV9ib3VuZEFycmF5QnVmZmVyIHx8IGluZHggPj0gbV9tYXhWZXJ0ZXhB
dHRyaWJzKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9y
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKQEAgLTIwNTUsMTUgKzIwOTAsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYgogICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShp
bmR4ICsgMSk7CiAKICAgICAvLyBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGUg
Ym91bmQgYnVmZmVyIGNhbiBob2xkLCBnaXZlbiB0aGUgb2Zmc2V0LCBzaXplLCB0eXBlIGFuZCBz
dHJpZGUKLSAgICBlYyA9IDA7CiAgICAgbG9uZyBieXRlc1BlckVsZW1lbnQgPSBzaXplICogc2l6
ZUluQnl0ZXModHlwZSwgZWMpOwotICAgIGlmIChlYyAhPSAwKQorICAgIGlmIChieXRlc1BlckVs
ZW1lbnQgPD0gMCkKICAgICAgICAgcmV0dXJuOwogICAgIGxvbmcgdmFsaWRhdGVkU3RyaWRlID0g
Ynl0ZXNQZXJFbGVtZW50OwogICAgIGlmIChzdHJpZGUgIT0gMCkgewogICAgICAgICBpZiAoKGxv
bmcpIHN0cmlkZSA8IGJ5dGVzUGVyRWxlbWVudCkgewotICAgICAgICAgICAgLy8gRklYTUU6IHJh
aXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIx
MTcsNiArMjE1MCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVt
CiAgICAgbV9jYW52YXNPYmplY3RzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKQoreworICAgIG1f
c3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7Cit9CisKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKIHsK
ICAgICB1bnNpZ25lZCBjaGFyIHZhbHVlOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA1MTY2OCkKKysrIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgV2ViR0xSZW5kZXJpbmdDb250ZXh0X2gKICNkZWZpbmUgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0X2gKIAorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUg
IkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiV2ViR0xGbG9hdEFycmF5LmgiCkBAIC0yOTYsNyArMjk3LDYgQEAgY2xhc3MgV2Vi
S2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgICAg
ICB2b2lkIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChib29sIGNoYW5nZWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1fY29udGV4dC0+Y2hlY2tFcnJvcigpOwogICAgICAgICAgICAgaWYgKGNo
YW5nZWQpCiAgICAgICAgICAgICAgICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgICAgIH0K
QEAgLTMwNCwxMiArMzA0LDI1IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgYm9v
bCB2YWxpZGF0ZUluZGV4QXJyYXkodW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0
eXBlLCBsb25nIG9mZnNldCwgbG9uZyYgbnVtRWxlbWVudHMpOwogICAgICAgICBib29sIHZhbGlk
YXRlUmVuZGVyaW5nU3RhdGUobG9uZyBudW1FbGVtZW50cyk7CiAKKyAgICAgICAgLy8gU3ludGhl
c2l6ZXMgYW4gT3BlbkdMIGVycm9yIHdoaWNoIHdpbGwgYmUgcmV0dXJuZWQgZnJvbSBhCisgICAg
ICAgIC8vIGxhdGVyIGNhbGwgdG8gZ2V0RXJyb3IuIFRoaXMgaXMgdXNlZCB0byBlbXVsYXRlIE9w
ZW5HTCBFUworICAgICAgICAvLyAyLjAgYmVoYXZpb3Igb24gdGhlIGRlc2t0b3AgYW5kIHRvIGVu
Zm9yY2UgYWRkaXRpb25hbCBlcnJvcgorICAgICAgICAvLyBjaGVja2luZyBtYW5kYXRlZCBieSBX
ZWJHTC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gUGVyIHRoZSBiZWhhdmlvciBvZiBnbEdldEVy
cm9yLCB0aGlzIHN0b3JlcyBhdCBtb3N0IG9uZQorICAgICAgICAvLyBpbnN0YW5jZSBvZiBhbnkg
Z2l2ZW4gZXJyb3IsIGFuZCByZXR1cm5zIHRoZW0gZnJvbSBjYWxscyB0bworICAgICAgICAvLyBn
ZXRFcnJvciBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLgorICAgICAgICB2b2lkIHN5bnRo
ZXNpemVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpOworCiAgICAgICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgICAgICBib29sIG1fbmVlZHNVcGRhdGU7CiAg
ICAgICAgIGJvb2wgbV9tYXJrZWRDYW52YXNEaXJ0eTsKICAgICAgICAgLy8gRklYTUU6IEkgdGhp
bmsgdGhpcyBpcyBicm9rZW4gLS0gaXQgZG9lcyBub3QgaW5jcmVtZW50IGFueQogICAgICAgICAv
LyByZWZlcmVuY2UgY291bnRzLCBzbyBtYXkgcmVmZXIgdG8gZGVzdHJveWVkIG9iamVjdHMuCiAg
ICAgICAgIEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPiBtX2NhbnZhc09iamVjdHM7CisK
KyAgICAgICAgLy8gRXJyb3JzIHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgorICAgICAg
ICBMaXN0SGFzaFNldDx1bnNpZ25lZCBsb25nPiBtX3N5bnRoZXRpY0Vycm9yczsKICAgICAgICAg
CiAgICAgICAgIC8vIExpc3Qgb2YgYm91bmQgVkJPJ3MuIFVzZWQgdG8gbWFpbnRhaW4gaW5mbyBh
Ym91dCBzaXplcyBmb3IgQVJSQVlfQlVGRkVSIGFuZCBzdG9yZWQgdmFsdWVzIGZvciBFTEVNRU5U
X0FSUkFZX0JVRkZFUgogICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1fYm91bmRBcnJheUJ1
ZmZlcjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgJKHJldmlzaW9uIDUxNjY4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNyArMzk3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBOdWxsUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRDsgfQogICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNv
bnN0IHsgcmV0dXJuIE51bGxQbGF0Zm9ybTNET2JqZWN0OyB9CiAjZW5kaWYKLSAgICAgICAgdm9p
ZCBjaGVja0Vycm9yKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgICAgIAogICAgICAgICAvLyBIZWxwZXIgdG8gcmV0dXJuIHRoZSBzaXplIGluIGJ5dGVz
IG9mIE9wZW5HTCBkYXRhIHR5cGVzCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1MTY2OCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDE1ICsxNzUsNiBAQCBHcmFwaGljc0NvbnRleHQzRDo6
fkdyYXBoaWNzQ29udGV4dDNEKCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNoZWNrRXJyb3IoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIG9ubHkg
YmUgZG9uZSBpbiB0aGUgZGVidWcgY29udGV4dC4gSXQgd2lsbCBwcm9iYWJseSB0aHJvdyBhbiBl
eGNlcHRpb24KLSAgICAvLyBvbiBlcnJvciBhbmQgcHJpbnQgdGhlIGVycm9yIG1lc3NhZ2UgdG8g
dGhlIGRlYnVnIGNvbnNvbGUKLSAgICBHTGVudW0gZXJyb3IgPSA6OmdsR2V0RXJyb3IoKTsKLSAg
ICBpZiAoZXJyb3IgIT0gR0xfTk9fRVJST1IpCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CiAgICAg
Q0dMU2V0Q3VycmVudENvbnRleHQobV9jb250ZXh0T2JqKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2
aXNpb24gNTE2NjgpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTItMDMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE11c3QgZmFicmljYXRlIEdMIGVycm9ycyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDk5CisK
KyAgICAgICAgQ2hhbmdlZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gc3ludGhlc2l6ZSBHTCBl
cnJvcnMgcmF0aGVyIHRoYW4KKyAgICAgICAgcmFpc2luZyBKYXZhU2NyaXB0IGV4Y2VwdGlvbnMu
IFJlbW92ZWQgaW50ZXJuYWwgZ2V0RXJyb3IoKSBjYWxscworICAgICAgICBhZnRlciBlYWNoIGdy
YXBoaWNzIGNhbGwuIEJhc2VkIG9uIGlkZWEgZnJvbSBJbG1hcmkgSGVpa2tpbmVuLAorICAgICAg
ICBhZGRlZCBjcmVhdGUzRERlYnVnQ29udGV4dCgpIHRvIHdlYmdsLXRlc3QuanMgYW5kIGNoYW5n
ZWQgdGhlCisgICAgICAgIFdlYkdMIGxheW91dCB0ZXN0cyBleHBlY3RpbmcgZXJyb3IgY29uZGl0
aW9ucyB0byB1c2UgaXQuIFRoZSB0ZXN0cworICAgICAgICByZXF1aXJlZCBubyBtb3JlIHRoYW4g
MiBsaW5lcyBvZiBjb2RlIGNoYW5nZSBlYWNoIGFuZCBiZWhhdmUKKyAgICAgICAgaWRlbnRpY2Fs
bHkgdG8gaG93IHRoZXkgZGlkIGJlZm9yZS4gVGhlIGNoYW5nZXMgdG8gdGhlCisgICAgICAgIGV4
cGVjdGVkLnR4dCBmaWxlcyBhcmUgc2ltcGx5IHRoZSBjb250ZW50cyBvZiB0aGUgZXhjZXB0aW9u
CisgICAgICAgIG1lc3NhZ2VzLgorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUp
OgorCiAyMDA5LTEyLTAzICBKb25hdGhhbiBEaXhvbiAgPGpvdGhAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA1MTY2OCkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEs
NyArMTAxLDYgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKICAg
ICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCi0gICAgdm9pZCBjaGVja0Vycm9yKCkg
Y29uc3Q7CiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OwpAQCAtNTE1
LDE3ICs1MTQsNiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250CiAg
ICAgbV9jb250ZXh0T2JqID0gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpjaGVja0Vycm9yKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBvbmx5
IGJlIGRvbmUgaW4gdGhlIGRlYnVnIGNvbnRleHQuIEl0Ci0gICAgLy8gd2lsbCBuZWVkIHRvIHRo
cm93IGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KLSAgICBHTGVudW0gZXJyb3IgPSBnbEdldEVycm9y
KCk7Ci0gICAgaWYgKGVycm9yICE9IEdMX05PX0VSUk9SKSB7Ci0gICAgICAgIHByaW50ZigiR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDogR0wgRXJyb3IgOiAleFxuIiwgZXJyb3IpOwotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIH0KLX0KLQogYm9vbCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogI2lmIFBMQVRGT1JNKFdJTl9PUykKQEAg
LTU5Miw3ICs1ODAsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUo
CiAgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzRVhUKDEsICZtX2Zibyk7CiAgICAgICAgIC8vIEdl
bmVyYXRlIHRoZSBkZXB0aCBidWZmZXIKICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzRVhUKDEs
ICZtX2RlcHRoQnVmZmVyKTsKLSAgICAgICAgY2hlY2tFcnJvcigpOwogICAgIH0KIAogICAgIC8v
IFJlYWxsb2NhdGUgdGhlIGNvbG9yIGFuZCBkZXB0aCBidWZmZXJzCkBAIC0xMDI5LDExICsxMDE2
LDYgQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdAogICAgIHJldHVy
biBtX2ludGVybmFsLT5wbGF0Zm9ybVRleHR1cmUoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y2hlY2tFcnJvcigpIGNvbnN0Ci17Ci0gICAgbV9pbnRlcm5hbC0+Y2hlY2tFcnJvcigp
OwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewog
ICAgIG1faW50ZXJuYWwtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NTE2NjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzNiBAQAorMjAwOS0xMi0wMyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTXVzdCBmYWJy
aWNhdGUgR0wgZXJyb3JzIGluc3RlYWQgb2YgdGhyb3dpbmcgZXhjZXB0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwOTkKKworICAgICAgICBD
aGFuZ2VkIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB0byBzeW50aGVzaXplIEdMIGVycm9ycyByYXRo
ZXIgdGhhbgorICAgICAgICByYWlzaW5nIEphdmFTY3JpcHQgZXhjZXB0aW9ucy4gUmVtb3ZlZCBp
bnRlcm5hbCBnZXRFcnJvcigpIGNhbGxzCisgICAgICAgIGFmdGVyIGVhY2ggZ3JhcGhpY3MgY2Fs
bC4gQmFzZWQgb24gaWRlYSBmcm9tIElsbWFyaSBIZWlra2luZW4sCisgICAgICAgIGFkZGVkIGNy
ZWF0ZTNERGVidWdDb250ZXh0KCkgdG8gd2ViZ2wtdGVzdC5qcyBhbmQgY2hhbmdlZCB0aGUKKyAg
ICAgICAgV2ViR0wgbGF5b3V0IHRlc3RzIGV4cGVjdGluZyBlcnJvciBjb25kaXRpb25zIHRvIHVz
ZSBpdC4gVGhlIHRlc3RzCisgICAgICAgIHJlcXVpcmVkIG5vIG1vcmUgdGhhbiAyIGxpbmVzIG9m
IGNvZGUgY2hhbmdlIGVhY2ggYW5kIGJlaGF2ZQorICAgICAgICBpZGVudGljYWxseSB0byBob3cg
dGhleSBkaWQgYmVmb3JlLiBUaGUgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgZXhwZWN0ZWQudHh0
IGZpbGVzIGFyZSBzaW1wbHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBleGNlcHRpb24KKyAgICAgICAg
bWVzc2FnZXMuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZC
b3VuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJh
eXNPdXRPZkJvdW5kcy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVt
ZW50c3NPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvZHJhd0VsZW1lbnRzc091dE9mQm91bmRzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvZ2V0QWN0aXZlVGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZFBhc3NlZFBhcmFtcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZFBhc3NlZFBhcmFtcy5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRl
c3QuanM6CisgICAgICAgIChjcmVhdGUzRERlYnVnQ29udGV4dC53cmFwLmdldEVycm9yKToKKyAg
ICAgICAgKGNyZWF0ZTNERGVidWdDb250ZXh0KToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9zY3JpcHQtdGVzdHMvZ2V0QWN0aXZlVGVzdC5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93
ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qczoK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVo
YXZpb3VyLmpzOgorCiAyMDA5LTEyLTAzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0
T2ZCb3VuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTY2OCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTMsMjQgKzMsMjQgQEAgVGVzdCBvZiBkcmF3QXJyYXlzIHdpdGggb3V0LW9m
LWJvdW5kcyBwYQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBUZXN0IGVtcHR5IGJ1ZmZl
cgotUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1Q
QVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDApIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1Q
QVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAwMDAw
MDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgLTEp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24g
MTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgMCkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4K
LVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBB
U1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAtMSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MSBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29u
dGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBp
biBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMs
IDAsIDEwMDAwMDAwMDAwMDAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3
QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIC0x
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250
ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIDApIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgxIGluIGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250
ZXh0LlRSSUFOR0xFUywgLTEsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGRy
YXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwg
LTEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGRyYXdBcnJheXMuCitQQVNTIGNv
bnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgxIGluIGRyYXdBcnJheXMuCiAKIFRlc3QgYnVmZmVyIHdpdGggMyBmbG9h
dCB2ZWN0b3JzCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwg
MykgaXMgdW5kZWZpbmVkCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xF
UywgMywgMikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAw
LCAxMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAw
LCAxMDAwMDAwMDAwMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAwLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5H
TEVTLCAtMSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9N
IEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVT
LCAxLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAt
MSwgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCAy
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250
ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMo
Y29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwMDAwMDAwMDAwKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MSBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4
dC5UUklBTkdMRVMsIDAsIC0xKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3
QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAw
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250
ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MSBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29u
dGV4dC5UUklBTkdMRVMsIC0xLCAxKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBk
cmF3QXJyYXlzLgogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRP
ZkJvdW5kcy5odG1sCShyZXZpc2lvbiA1MTY2OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3
ICsxMSw3IEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24oIlRlc3Qgb2YgZHJhd0FycmF5cyB3aXRo
IG91dC1vZi1ib3VuZHMgcGFyYW1ldGVycyIpOwogCi12YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29u
dGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwogdmFyIHByb2dy
YW0gPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwogCiBjb250ZXh0LnVzZVByb2dyYW0o
cHJvZ3JhbSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVu
dHNzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDUxNjY4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1l
bnRzc091dE9mQm91bmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywyMiArMywy
MiBAQCBUZXN0IG9mIGRyYXdFbGVtZW50cyB3aXRoIG91dC1vZi1ib3VuZHMgCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKIFRlc3QgZW1wdHkgaW5kZXggYnVmZmVyCi1QQVNTIGNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUs
IDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAw
MCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFM
SURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAwMDAwMDAwMDAsIGNvbnRleHQuVU5TSUdORURfQllU
RSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEs
IGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElE
X1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMo
Y29udGV4dC5UUklBTkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNT
IGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgY29udGV4dC5VTlNJ
R05FRF9CWVRFLCAxKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBE
T00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFO
R0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3
RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5TSUdO
RURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZHJhd0VsZW1lbnRz
LgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAwMDAw
MDAwMDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODEgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MSBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAx
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVE
X0JZVEUsIC0xKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkcmF3RWxlbWVudHMu
CiAKIFRlc3QgYnVmZmVyIHdpdGggMyBieXRlIGluZGV4ZXMKIFBBU1MgY29udGV4dC5kcmF3RWxl
bWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgaXMg
dW5kZWZpbmVkCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAz
LCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgot
UEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAwMDAwMDAw
MDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZB
TElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVu
dHMoY29udGV4dC5UUklBTkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1Q
QVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgY29udGV4dC5V
TlNJR05FRF9CWVRFLCAxKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJS
OiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5k
cmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwg
MikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBj
b250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5T
SUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZHJhd0VsZW1l
bnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAw
MDAwMDAwMDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODEgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0
aW9uIEdMIGVycm9yIDEyODEgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkgdGhy
ZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0
LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRF
LCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZHJhd0VsZW1lbnRzLgogCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRPZkJvdW5kcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRPZkJvdW5kcy5o
dG1sCShyZXZpc2lvbiA1MTY2OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Ry
YXdFbGVtZW50c3NPdXRPZkJvdW5kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw3
IEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24oIlRlc3Qgb2YgZHJhd0VsZW1lbnRzIHdpdGggb3V0
LW9mLWJvdW5kcyBwYXJhbWV0ZXJzIik7CiAKLXZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0
KCk7Cit2YXIgY29udGV4dCA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbSA9
IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CiAKIGNvbnRleHQudXNlUHJvZ3JhbShwcm9n
cmFtKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRlc3Qt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2dldEFjdGl2ZVRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTY2OCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC02LDExICs2LDExIEBAIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFBB
U1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApLm5hbWUgaXMgJ3VfbW9kZWxW
aWV3UHJvak1hdHJpeCcKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDAp
LnR5cGUgaXMgY29udGV4dC5GTE9BVF9NQVQ0CiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9y
bShwcm9ncmFtLCAwKS5zaXplIGlzIDEKLVBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHBy
b2dyYW0sIDEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNl
cHRpb24gMS4KK1BBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDEpIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldEFjdGl2ZVVuaWZvcm0uCiBQQVNTIGNvbnRl
eHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKLVBBU1MgY29udGV4dC5nZXRB
Y3RpdmVVbmlmb3JtKHByb2dyYW0sIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJ
WkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShw
cm9ncmFtLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlVW5p
Zm9ybS4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQot
UEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0obnVsbCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBjb250ZXh0LmdldEFj
dGl2ZVVuaWZvcm0obnVsbCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0
QWN0aXZlVW5pZm9ybS4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFBBU1MgY29udGV4
dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkubmFtZSBpcyAnYV9ub3JtYWwnCiBQQVNTIGNv
bnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApLnR5cGUgaXMgY29udGV4dC5GTE9BVF9W
RUMzCkBAIC0xOCwyMCArMTgsMjAgQEAgUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9n
cmFtLCAwKQogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAxKS5uYW1lIGlz
ICdhX3ZlcnRleCcKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMSkudHlw
ZSBpcyBjb250ZXh0LkZMT0FUX1ZFQzQKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJv
Z3JhbSwgMSkuc2l6ZSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0s
IDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24g
MS4KK1BBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMikgdGhyZXcgZXhjZXB0
aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlQXR0cmliLgogUEFTUyBjb250ZXh0LmdldEVy
cm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCi1QQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBE
T00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIC0x
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVBdHRyaWIuCiBQQVNT
IGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKLVBBU1MgY29udGV4
dC5nZXRBY3RpdmVBdHRyaWIobnVsbCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9T
SVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihu
dWxsLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVBdHRyaWIu
CiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIGNvbnRleHQyLmdldEVycm9yKCkg
aXMgMAotUEFTUyBjb250ZXh0Mi5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBjb250
ZXh0Mi5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODEgaW4gZ2V0QWN0aXZlQXR0cmliLgogUEFTUyBjb250ZXh0Mi5nZXRFcnJvcigpIGlzIDAK
LVBBU1MgY29udGV4dDIuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQy
LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODEgaW4gZ2V0QWN0aXZlVW5pZm9ybS4KIFBBU1MgY29udGV4dDIuZ2V0RXJyb3IoKSBpcyAwCi1Q
QVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQuZ2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBp
biBnZXRBY3RpdmVVbmlmb3JtLgogUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAotUEFTUyBj
b250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZl
QXR0cmliKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldEFj
dGl2ZUF0dHJpYi4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
aW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2Jq
ZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxNjY4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMjggKzIsMjggQEAgVGVzdHMgY2FsbGlu
ZyBXZWJHTCBBUElzIHdpdGggb2JqZWN0cyBmcgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKLVBBU1MgY29udGV4dEEuY29tcGlsZVNoYWRlcihzaGFkZXJCKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0
QS5saW5rUHJvZ3JhbShwcm9ncmFtQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuYXR0YWNoU2hhZGVyKHBy
b2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5hdHRhY2hTaGFkZXIocHJvZ3JhbUIs
IHNoYWRlckEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmF0dGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVy
QikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlv
biAxNy4KLVBBU1MgY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgot
UEFTUyBjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckEpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNv
bnRleHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQikgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEu
c2hhZGVyU291cmNlKHNoYWRlckIsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5iaW5kQXR0cmli
TG9jYXRpb24ocHJvZ3JhbUIsIDAsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5iaW5kRnJhbWVi
dWZmZXIoY29udGV4dEEuRlJBTUVCVUZGRVIsIGZyYW1lQnVmZmVyQikgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dEEuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCi1QQVNTIGNvbnRleHRBLmJpbmRUZXh0dXJlKGNvbnRleHRBLlRFWFRVUkVfMkQsIHRleHR1
cmVCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBjb250ZXh0QS5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0QS5G
UkFNRUJVRkZFUiwgY29udGV4dEEuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dEEuUkVOREVSQlVG
RkVSLCByZW5kZXJCdWZmZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5mcmFtZWJ1ZmZlclRleHR1cmUy
RChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRl
eHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFt
UGFyYW1ldGVyKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtSW5mb0xv
Zyhwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjog
RE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRl
ckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwgMCkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
LVBBU1MgY29udGV4dEEuZ2V0U2hhZGVyU291cmNlKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRB
LmdldFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4JykgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1Mg
Y29udGV4dEEuY29tcGlsZVNoYWRlcihzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MSBpbiBjb21waWxlU2hhZGVyLgorUEFTUyBjb250ZXh0QS5saW5rUHJvZ3JhbShwcm9ncmFt
QikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gbGlua1Byb2dyYW0uCitQQVNTIGNv
bnRleHRBLmF0dGFjaFNoYWRlcihwcm9ncmFtQSwgc2hhZGVyQikgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0QS5hdHRhY2hTaGFkZXIo
cHJvZ3JhbUIsIHNoYWRlckEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGF0dGFj
aFNoYWRlci4KK1BBU1MgY29udGV4dEEuYXR0YWNoU2hhZGVyKHByb2dyYW1CLCBzaGFkZXJCKSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBhdHRhY2hTaGFkZXIuCitQQVNTIGNvbnRl
eHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQSwgc2hhZGVyQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODEgaW4gZGV0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJv
Z3JhbUIsIHNoYWRlckEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGRldGFjaFNo
YWRlci4KK1BBU1MgY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1CLCBzaGFkZXJCKSB0aHJl
dyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkZXRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHRB
LnNoYWRlclNvdXJjZShzaGFkZXJCLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODEgaW4gc2hhZGVyU291cmNlLgorUEFTUyBjb250ZXh0QS5iaW5kQXR0cmliTG9jYXRpb24ocHJv
Z3JhbUIsIDAsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBiaW5kQXR0
cmliTG9jYXRpb24uCitQQVNTIGNvbnRleHRBLmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0QS5GUkFN
RUJVRkZFUiwgZnJhbWVCdWZmZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBi
aW5kRnJhbWVidWZmZXIuCitQQVNTIGNvbnRleHRBLmJpbmRSZW5kZXJidWZmZXIoY29udGV4dEEu
UkVOREVSQlVGRkVSLCByZW5kZXJCdWZmZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MSBpbiBiaW5kUmVuZGVyYnVmZmVyLgorUEFTUyBjb250ZXh0QS5iaW5kVGV4dHVyZShjb250ZXh0
QS5URVhUVVJFXzJELCB0ZXh0dXJlQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4g
YmluZFRleHR1cmUuCitQQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRl
eHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0QS5SRU5E
RVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGlu
IGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLgorUEFTUyBjb250ZXh0QS5mcmFtZWJ1ZmZlclRleHR1
cmUyRChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuQ09MT1JfQVRUQUNITUVOVDAsIGNv
bnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MSBpbiBmcmFtZWJ1ZmZlclRleHR1cmUyRC4KK1BBU1MgY29udGV4dEEuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0
UHJvZ3JhbVBhcmFtZXRlci4KK1BBU1MgY29udGV4dEEuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3Jh
bUIsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFByb2dyYW1JbmZvTG9n
LgorUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyQiwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0U2hhZGVyUGFyYW1ldGVyLgorUEFTUyBjb250ZXh0
QS5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgxIGluIGdldFNoYWRlckluZm9Mb2cuCitQQVNTIGNvbnRleHRBLmdldFNoYWRlclNvdXJjZShz
aGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRTaGFkZXJTb3VyY2Uu
CitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0VW5pZm9ybS4KK1BBU1MgY29udGV4dEEuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4JykgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0VW5pZm9ybUxvY2F0aW9uLgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFyYW1zLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFyYW1z
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE2NjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFyYW1zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNSw4ICs1LDggQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQog
VGVzdCBzaGFkZXJzCiBQQVNTIHNoYWRlciA9IGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQu
RlJBR01FTlRfU0hBREVSKSBpcyBzaGFkZXIKIFBBU1Mgc2hhZGVyID0gY29udGV4dC5jcmVhdGVT
aGFkZXIoY29udGV4dC5WRVJURVhfU0hBREVSKSBpcyBzaGFkZXIKLVBBU1MgY29udGV4dC5jcmVh
dGVTaGFkZXIoMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0
aW9uIDEyLgotUEFTUyBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0LlRSSUFOR0xFUykgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBj
b250ZXh0LmNyZWF0ZVNoYWRlcigwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MCBpbiBj
cmVhdGVTaGFkZXIuCitQQVNTIGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQuVFJJQU5HTEVT
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MCBpbiBjcmVhdGVTaGFkZXIuCiAKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvaW52YWxpZFBhc3NlZFBhcmFtcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMuaHRtbAkocmV2aXNpb24g
NTE2NjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFy
YW1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAKIDxzY3JpcHQ+CiBkZXNj
cmlwdGlvbigiVGVzdCBmb3IgaW52YWxpZCBwYXNzZWQgcGFyYW1ldGVycyIpOwogCi12YXIgY29u
dGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRERlYnVnQ29u
dGV4dCgpOwogCiBkZWJ1ZygiVGVzdCBzaGFkZXJzIik7CiB2YXIgc2hhZGVyOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9i
amVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTY2OCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTIsMjkgKzIsMjkgQEAgVGVzdHMgY2FsbGluZyBXZWJHTCBBUElz
IHdpdGhvdXQgcHJvdmlkaQogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVBBU1MgY29u
dGV4dC5jb21waWxlU2hhZGVyKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5saW5rUHJvZ3JhbSgpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1Q
QVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIo
cHJvZ3JhbSwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRlcih1bmRlZmlu
ZWQsIHNoYWRlcikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZp
bmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
LVBBU1MgY29udGV4dC5zaGFkZXJTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LnNoYWRlclNvdXJj
ZSh1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmJpbmRBdHRyaWJMb2NhdGlvbih1
bmRlZmluZWQsIDAsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0LmNvbXBpbGVTaGFkZXIoKSB0aHJl
dyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBjb21waWxlU2hhZGVyLgorUEFTUyBjb250ZXh0
LmxpbmtQcm9ncmFtKCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gbGlua1Byb2dy
YW0uCitQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFt
LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGF0dGFjaFNoYWRl
ci4KK1BBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIodW5kZWZpbmVkLCBzaGFkZXIpIHRocmV3IGV4
Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGF0dGFjaFNoYWRlci4KK1BBU1MgY29udGV4dC5kZXRh
Y2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MSBpbiBkZXRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHQuZGV0YWNoU2hhZGVyKHVuZGVmaW5lZCwg
c2hhZGVyKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkZXRhY2hTaGFkZXIuCitQ
QVNTIGNvbnRleHQuc2hhZGVyU291cmNlKCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEg
aW4gc2hhZGVyU291cmNlLgorUEFTUyBjb250ZXh0LnNoYWRlclNvdXJjZSh1bmRlZmluZWQsICdm
b28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBzaGFkZXJTb3VyY2UuCitQQVNT
IGNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9uKHVuZGVmaW5lZCwgMCwgJ2ZvbycpIHRocmV3IGV4
Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGJpbmRBdHRyaWJMb2NhdGlvbi4KIFBBU1MgY29udGV4
dC5iaW5kQnVmZmVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCiBQQVNT
IGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIDApIGlzIHVuZGVm
aW5lZC4KIFBBU1MgY29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHQuUkVOREVSQlVGRkVS
LCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhU
VVJFXzJELCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250
ZXh0LlJFTkRFUkJVRkZFUiwgMCkgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0LmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVO
VDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkgaXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0
LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFBy
b2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJQYXJh
bWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlckluZm9Mb2codW5k
ZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
Ci1QQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQu
Z2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0
UHJvZ3JhbVBhcmFtZXRlcih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgxIGluIGdldFByb2dyYW1QYXJhbWV0ZXIuCitQQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbUluZm9M
b2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRQcm9n
cmFtSW5mb0xvZy4KK1BBU1MgY29udGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIodW5kZWZpbmVkLCAw
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRTaGFkZXJQYXJhbWV0ZXIuCitQ
QVNTIGNvbnRleHQuZ2V0U2hhZGVySW5mb0xvZyh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgxIGluIGdldFNoYWRlckluZm9Mb2cuCitQQVNTIGNvbnRleHQuZ2V0U2hh
ZGVyU291cmNlKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0
U2hhZGVyU291cmNlLgorUEFTUyBjb250ZXh0LmdldFVuaWZvcm0odW5kZWZpbmVkLCAwKSB0aHJl
dyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRVbmlmb3JtLgorUEFTUyBjb250ZXh0Lmdl
dFVuaWZvcm1Mb2NhdGlvbih1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MSBpbiBnZXRVbmlmb3JtTG9jYXRpb24uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCShyZXZpc2lvbiA1MTY2OCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2ICsxNiwzNyBAQCBmdW5jdGlvbiBjcmVhdGUzRENvbnRl
eHQoKSB7CiAgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJtb3otd2ViZ2wiKTsKIH0KIAor
ZnVuY3Rpb24gY3JlYXRlR0xFcnJvcldyYXBwZXIoY29udGV4dCwgZm5hbWUpIHsKKyAgICByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBydiA9IGNvbnRleHRbZm5hbWVdLmFwcGx5KGNv
bnRleHQsIGFyZ3VtZW50cyk7CisgICAgICAgIHZhciBlcnIgPSBjb250ZXh0LmdldEVycm9yKCk7
CisgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgIHRocm93ICJHTCBlcnJvciAiICsg
ZXJyICsgIiBpbiAiICsgZm5hbWU7CisgICAgICAgIHJldHVybiBydjsKKyAgICB9OworfQorCitm
dW5jdGlvbiBjcmVhdGUzRERlYnVnQ29udGV4dCgpIHsKKyAgICB2YXIgY29udGV4dCA9IGNyZWF0
ZTNEQ29udGV4dCgpOworICAgIC8vIFRoYW5rcyB0byBJbG1hcmkgSGVpa2tpbmVuIGZvciB0aGUg
aWRlYSBvbiBob3cgdG8gaW1wbGVtZW50IHRoaXMgc28gZWxlZ2FudGx5LgorICAgIHZhciB3cmFw
ID0ge307CisgICAgZm9yICh2YXIgaSBpbiBjb250ZXh0KSB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBpZiAodHlwZW9mIGNvbnRleHRbaV0gPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAg
ICAgICAgIHdyYXBbaV0gPSBjcmVhdGVHTEVycm9yV3JhcHBlcihjb250ZXh0LCBpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd3JhcFtpXSA9IGNvbnRleHRbaV07Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIGNvbnNv
bGUubG9nKCJjcmVhdGUzRERlYnVnQ29udGV4dDogRXJyb3IgYWNjZXNzaW5nICIgKyBpKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB3cmFwLmdldEVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmdldEVycm9yKCk7CisgICAgfTsKKyAgICByZXR1cm4gd3JhcDsKK30K
KwogZnVuY3Rpb24gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KSB7CiAgICAgdmFyIHByb2dy
YW0gPSBjb250ZXh0LmNyZWF0ZVByb2dyYW0oKTsKICAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihw
cm9ncmFtLCBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoY29udGV4dCkpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dldEFjdGl2ZVRlc3QuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dl
dEFjdGl2ZVRlc3QuanMJKHJldmlzaW9uIDUxNjY4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dldEFjdGl2ZVRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiBkZXNjcmlwdGlvbigiVGVzdCBvZiBnZXRBY3RpdmVBdHRyaWIgYW5kIGdl
dEFjdGl2ZVVuaWZvcm0iKTsKIAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKLXZh
ciBjb250ZXh0MiA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRERl
YnVnQ29udGV4dCgpOwordmFyIGNvbnRleHQyID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKIHZh
ciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKIHZhciBwcm9ncmFtMiA9
IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dDIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2
aW91ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3Jp
cHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24g
NTE2NjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5j
b3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aCBvYmpl
Y3RzIGZyb20gb3RoZXIgY29udGV4dHMiKTsKIAotdmFyIGNvbnRleHRBID0gY3JlYXRlM0RDb250
ZXh0KCk7Ci12YXIgY29udGV4dEIgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250ZXh0QSA9
IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7Cit2YXIgY29udGV4dEIgPSBjcmVhdGUzRERlYnVnQ29u
dGV4dCgpOwogdmFyIHByb2dyYW1BID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0QSk7CiB2
YXIgcHJvZ3JhbUIgPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHRCKTsKIHZhciBzaGFkZXJB
ID0gbG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHRBKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3Rz
L251bGwtb2JqZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTE2NjgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogZGVzY3JpcHRpb24oIlRlc3RzIGNhbGxp
bmcgV2ViR0wgQVBJcyB3aXRob3V0IHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IG9iamVjdHMiKTsK
IAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250ZXh0ID0gY3JlYXRl
M0REZWJ1Z0NvbnRleHQoKTsKIHZhciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250
ZXh0KTsKIHZhciBzaGFkZXIgPSBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoY29udGV4dCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44507</attachid>
            <date>2009-12-08 19:27:16 -0800</date>
            <delta_ts>2009-12-10 00:27:17 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>gl-errors.patch</filename>
            <type>text/plain</type>
            <size>90627</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTg4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODEgQEAKKzIwMDktMTItMDggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11
c3QgZmFicmljYXRlIEdMIGVycm9ycyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDk5CisKKyAg
ICAgICAgQ2hhbmdlZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gc3ludGhlc2l6ZSBHTCBlcnJv
cnMgcmF0aGVyIHRoYW4KKyAgICAgICAgcmFpc2luZyBKYXZhU2NyaXB0IGV4Y2VwdGlvbnMuIFJl
bW92ZWQgaW50ZXJuYWwgZ2V0RXJyb3IoKSBjYWxscworICAgICAgICBhZnRlciBlYWNoIGdyYXBo
aWNzIGNhbGwuIEJhc2VkIG9uIGlkZWEgZnJvbSBJbG1hcmkgSGVpa2tpbmVuLAorICAgICAgICBh
ZGRlZCBjcmVhdGUzRERlYnVnQ29udGV4dCgpIHRvIHdlYmdsLXRlc3QuanMgYW5kIGNoYW5nZWQg
dGhlCisgICAgICAgIFdlYkdMIGxheW91dCB0ZXN0cyBleHBlY3RpbmcgZXJyb3IgY29uZGl0aW9u
cyB0byB1c2UgaXQuIFRoZSB0ZXN0cworICAgICAgICByZXF1aXJlZCBubyBtb3JlIHRoYW4gMiBs
aW5lcyBvZiBjb2RlIGNoYW5nZSBlYWNoIGFuZCBiZWhhdmUKKyAgICAgICAgaWRlbnRpY2FsbHkg
dG8gaG93IHRoZXkgZGlkIGJlZm9yZS4gVGhlIGNoYW5nZXMgdG8gdGhlCisgICAgICAgIGV4cGVj
dGVkLnR4dCBmaWxlcyBhcmUgc2ltcGx5IHRoZSBjb250ZW50cyBvZiB0aGUgZXhjZXB0aW9uCisg
ICAgICAgIG1lc3NhZ2VzLCB3aGljaCBpbXBsaWNpdGx5IHRlc3QgdGhlIGV4YWN0IEdMIGVycm9y
IHJhaXNlZCBzaW5jZQorICAgICAgICB0aGF0IGlzIHBhcnQgb2YgdGhlIGRldGFpbCBtZXNzYWdl
LgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6ZUluQnl0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXR0YWNoU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJJbmZvTG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1Mb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRl
eEF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmxpbmtQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1h
Z2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1Yklt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3lu
dGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDoKKwogMjAwOS0xMi0wOCAgUGV0ZXJzb24gVHJldGhld2V5ICA8cGV0ZXJz
b250QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZp
c2lvbiA1MTg4NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE4ICsxNDEsMTkgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnJlc2hhcGUoaW50IAogCiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpz
aXplSW5CeXRlcyhpbnQgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5zaXplSW5CeXRlcyh0eXBlKTsK
ICAgICBpZiAocmVzdWx0IDw9IDApCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZl
VGV4dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCh0ZXh0dXJlIC0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUwKSA+IHNpemVvZihtX3RleHR1cmVVbml0cykgLyBzaXplb2YoVGV4dHVyZVVuaXRT
dGF0ZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IG1fYWN0aXZlVGV4dHVyZVVuaXQgPSB0ZXh0dXJlIC0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkUwOwpAQCAtMTYyLDggKzE2Myw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3Rp
dmVUZXh0dXIKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmF0dGFjaFNoYWRlcihXZWJH
TFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0t
PmNvbnRleHQoKSAhPSB0aGlzIHx8ICFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhp
cykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsK
QEAgLTE3Miw4ICsxNzQsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXR0YWNoU2hh
ZGVyCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQXR0cmliTG9jYXRpb24oV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYg
KCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
bV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUpOwpAQCAt
MTgyLDggKzE4NSw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQXR0cmliTG8K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0
YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVO
VVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPmNvbnRleHQoKSAhPSB0
aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE5Miw4ICsxOTYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YmluZEJ1ZmZlcih1CiAgICAgZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKICAgICAgICAgbV9ib3VuZEVsZW1lbnRBcnJh
eUJ1ZmZlciA9IGJ1ZmZlcjsKICAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdM
X0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0yMDQsMTMgKzIwNywxMyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YmluZEJ1ZmZlcih1CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kRnJhbWVidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1
ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBp
ZiAoYnVmZmVyICYmIGJ1ZmZlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgewotICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9mcmFtZWJ1ZmZlckJpbmRp
bmcgPSBidWZmZXI7CkBAIC0yMjAsMTMgKzIyMywxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YmluZEZyYW1lYnVmCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kUmVu
ZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciogcmVuZGVy
QnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAg
IGlmIChyZW5kZXJCdWZmZXIgJiYgcmVuZGVyQnVmZmVyLT5jb250ZXh0KCkgIT0gdGhpcykgewot
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UikgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9y
ZW5kZXJidWZmZXJCaW5kaW5nID0gcmVuZGVyQnVmZmVyOwpAQCAtMjM3LDggKzI0MCw5IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kUmVuZGVyYnUKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTFRleHR1
cmUqIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKHRleHR1cmUgJiYgdGV4dHVyZS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKQpAQCAt
MjQ2LDggKzI1MCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSgK
ICAgICBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9N
QVApCiAgICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVy
ZUN1YmVNYXBCaW5kaW5nID0gdGV4dHVyZTsKICAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6
IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodGFy
Z2V0LCB0ZXh0dXJlKTsKQEAgLTI4NywxOCArMjkwLDE5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpibGVuZEZ1bmNTZXAKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZl
ckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25lZCBsb25nIHVzYWdl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICh0
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYmIG1fYm91
bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsKICAgICAgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5
QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsKLSAgICAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZG
RVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9ib3VuZEFycmF5QnVm
ZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsKLSAgICAgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTMwOCwxOCArMzEyLDE5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpidWZmZXJEYXRhKHUKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRh
dGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGRhdGEsIHVuc2lnbmVkIGxvbmcg
dXNhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAg
aWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYg
bV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikgewogICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50
QXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhKSkgewotICAgICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZ
X0JVRkZFUiAmJiBtX2JvdW5kQXJyYXlCdWZmZXIpIHsKICAgICAgICAgaWYgKCFtX2JvdW5kQXJy
YXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhKSkgewotICAgICAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzI5LDE4ICszMzQsMTkgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmJ1ZmZlckRhdGEodQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVm
ZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIFdlYkdMQXJyYXkq
IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAg
aWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYg
bV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikgewogICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50
QXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEp
KSB7Ci0gICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRBcnJheUJ1ZmZlcikgewogICAgICAgICBpZiAo
IW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNl
dCwgZGF0YSkpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM5NCw4ICs0MDAsOSBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JNYXNrKGJvCiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIg
fHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+
Y29tcGlsZVNoYWRlcihzaGFkZXIpOwpAQCAtNDUxLDggKzQ1OCw5IEBAIFBhc3NSZWZQdHI8V2Vi
R0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGUKIAogUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTaGFkZXIodW5zaWduZWQgbG9uZyB0eXBlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICh0eXBlICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSICYmIHR5cGUgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQUdNRU5UX1NIQURFUikgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCkBAIC01MzUsOCArNTQzLDkgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlcHRoUmFuZ2UoZAogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6ZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIq
IHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAg
ICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMgfHwgIXNoYWRlciB8
fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5k
ZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKQEAgLTU1Miw4ICs1NjEsOSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZSh1bnNpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaW5kZXgg
Pj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTYzMSw5ICs2NDEsMTAgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUmVuZAogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3Qs
IGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3RhdGUKICAgICBpZiAo
Zmlyc3QgPCAwIHx8IGNvdW50IDwgMCB8fCAhdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZShmaXJzdCAr
IGNvdW50KSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNjQzLDExICs2NTQsMTIgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdBcnJheXModQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3Vu
dCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJl
bmRlcmluZyBzdGF0ZQogICAgIGxvbmcgbnVtRWxlbWVudHM7CiAgICAgCiAgICAgaWYgKG9mZnNl
dCA8IDAgfHwgIXZhbGlkYXRlSW5kZXhBcnJheShjb3VudCwgdHlwZSwgb2Zmc2V0LCBudW1FbGVt
ZW50cykgfHwgIXZhbGlkYXRlUmVuZGVyaW5nU3RhdGUobnVtRWxlbWVudHMpKSB7Ci0gICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC02NjMsOCArNjc1LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVu
YWJsZSh1bnNpZwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaW5kZXggPj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKQEAgLTY5Miw4ICs3MDUsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Zmx1c2goKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwg
dW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBidWZm
ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9ICAgICAgIAog
ICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CkBAIC03MDIsOCArNzE2LDkgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUgogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVy
ZSogdGV4dHVyZSwgbG9uZyBsZXZlbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGVjKTsKICAgICBpZiAodGV4dHVyZSAmJiB0ZXh0dXJlLT5jb250ZXh0KCkgIT0gdGhp
cykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKQEAgLTcyNCw5ICs3Mzks
MTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdlbmVyYXRlTWlwbQogCiBQYXNzUmVm
UHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVBdHRy
aWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIEFjdGl2ZUluZm8gaW5mbzsK
LSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMgfHwgIW1fY29u
dGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBpbmZvKSkgewotICAgICAgICBl
YyA9IElOREVYX1NJWkVfRVJSOworICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0
KCkgIT0gdGhpcykgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYg
KCFtX2NvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgaW5mbykpIHsKKyAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6
Y3JlYXRlKGluZm8ubmFtZSwgaW5mby50eXBlLCBpbmZvLnNpemUpOwpAQCAtNzM0LDkgKzc1NCwx
NCBAQCBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpCiAKIFBhc3NSZWZQ
dHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIEFjdGl2ZUluZm8gaW5mbzsK
LSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMgfHwgIW1fY29u
dGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgaW5mbykpIHsKLSAgICAgICAg
ZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4
dCgpICE9IHRoaXMpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlm
ICghbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBpbmZvKSkgewor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gV2ViR0xBY3RpdmVJbmZv
OjpjcmVhdGUoaW5mby5uYW1lLCBpbmZvLnR5cGUsIGluZm8uc2l6ZSk7CkBAIC03NDksMTUgKzc3
NCwxNCBAQCBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRyaWJMb2NhCiAKIFdlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcih1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4
dDNEOjpBUlJBWV9CVUZGRVIgJiYgdGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5U
X0FSUkFZX0JVRkZFUikgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVN
IGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKICAgICB9CiAKICAgICBpZiAocG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkJVRkZFUl9TSVpFICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpCVUZGRVJfVVNBR0Up
IHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAg
ICAgfQogCkBAIC03NzIsMTEgKzc5NiwxOSBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRCCiAKIHVuc2lnbmVkIGxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRF
cnJvcigpCiB7CisgICAgaWYgKG1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+IDApIHsKKyAgICAg
ICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgbG9uZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bnRoZXRp
Y0Vycm9ycy5iZWdpbigpOworICAgICAgICB1bnNpZ25lZCBsb25nIGVyciA9ICppdGVyOworICAg
ICAgICBtX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRlcik7CisgICAgICAgIHJldHVybiBlcnI7
CisgICAgfQorCiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKIH0KIAogV2ViR0xH
ZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJB
TShlYyk7CiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIK
ICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFD
SE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9BVFRBQ0hNRU5UCkBAIC03ODUsOCArODE3LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RgogICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUKICAgICAgICAgICAgICYm
IHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRV
UkVfTEVWRUwKICAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSkpIHsKLSAgICAgICAgLy8g
RklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogCkBAIC04MjUs
NiArODU2LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RgogCiBX
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIodW5zaWduZWQg
bG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsK
ICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwogICAgIHN3aXRjaCAocG5hbWUp
IHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVEVYVFVSRToKQEAgLTk5MSwx
NyArMTAyMywxNiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiB9CiAKIFdlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5j
b250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9W
QUxVRSBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogCkBAIC0xMDIyLDE3ICsxMDUzLDE2
IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICAgICAgbV9j
b250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKICAgICBkZWZhdWx0
OgotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAg
ICB9CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1JbmZvTG9n
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRo
aXMpIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKLSAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuICIi
OwogICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwpAQCAtMTA0MSw5
ICsxMDcxLDkgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbQogCiBX
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRhcmdldCAhPSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBH
TF9JTlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIApAQCAtMTA2NCwxNyArMTA5NCwxNiBA
QCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSCiAgICAgICAgIG1fY29u
dGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2
YWx1ZSkpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElE
X0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbygpOwogICAgIH0KIH0KIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVk
IGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CiAgICAgfQogICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CkBAIC0xMDkyLDE2
ICsxMTIxLDE2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFMKICAg
ICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCAmdmFsdWUpOwogICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CiAgICAgfQogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJJ
bmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVO
VVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0g
dGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAg
ICByZXR1cm4gIiI7CiAgICAgfQogICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7
CkBAIC0xMTEwLDggKzExMzksOSBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRT
aGFkZXJJCiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclNvdXJjZShX
ZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFS
QU0oZWMpOwogICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRoaXMpIHsK
LSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJu
ICIiOwogICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwpAQCAtMTEy
NiwxMCArMTE1NiwxMCBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdHJpbmco
CiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJECiAgICAgICAgICYmIHRhcmdldCAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9DVUJFX01BUCkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5W
QUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMs
IGZhbHNlKTsKQEAgLTExNDIsMTcgKzExNzIsMTYgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VAogICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiB9CiAKIFdlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogdW5pZm9ybUxvY2F0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3Jh
bSB8fCB1bmlmb3JtTG9jYXRpb24tPnByb2dyYW0oKSAhPSBwcm9ncmFtIHx8IHByb2dyYW0tPmNv
bnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZB
TFVFIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiAgICAgbG9uZyBsb2NhdGlvbiA9IHVu
aWZvcm1Mb2NhdGlvbi0+bG9jYXRpb24oKTsKQEAgLTExNjQsOCArMTE5Myw3IEBAIFdlYkdMR2V0
SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGFjdGl2ZVVuaWZvcm1zOyBpKyspIHsKICAgICAgICAgQWN0aXZlSW5mbyBpbmZvOwogICAgICAg
ICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpLCBpbmZvKSkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IHJhaXNlIHNvbWUgR0wgZXJyb3IKLSAgICAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gTm93IG5lZWQgdG8gbG9vayB0aGlzIHVw
IGJ5IG5hbWUgYWdhaW4gdG8gZmluZCBpdHMgbG9jYXRpb24KQEAgLTEyMzgsNiArMTI2Niw3IEBA
IFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAvLyBDYW4ndCBoYW5kbGUgdGhpcyB0eXBl
CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGF0IHRvIGRvIGFib3V0IHNhbXBsZXJz
PworICAgICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoYmFzZVR5cGUpIHsKQEAg
LTEyNzUsMTMgKzEzMDQsMTUgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VQogICAgICAgICB9CiAgICAgfQogICAgIC8vIElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcg
d2VudCB3cm9uZyBpbiBvdXIgdW5mb3J0dW5hdGVseSBjb21wbGV4IGxvZ2ljIGFib3ZlCisgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJHTFVuaWZvcm1Mb2Nh
dGlvbj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
ICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRl
eHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywg
ZmFsc2UpOwpAQCAtMTI5MCw2ICsxMzIxLDcgQEAgUGFzc1JlZlB0cjxXZWJHTFVuaWZvcm1Mb2Nh
dGlvbj4gV2ViR0xSZQogCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBXZWJHTFN0YXRl
UmVzdG9yZXIodGhpcywgZmFsc2UpOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiB7CkBA
IC0xMzI0LDggKzEzNTYsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRWCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUo
dmFsdWUsIDQpKTsKICAgICB9CiAgICAgZGVmYXVsdDogewotICAgICAgICAvLyBGSVhNRTogcmFp
c2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAg
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiAgICAgfQpAQCAtMTQwNSw4ICsx
NDM2LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmxpbmVXaWR0aChkbwogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICgh
cHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAg
ICAKQEAgLTE0NTksOCArMTQ5MSw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzY2lz
c29yKGxvbmcKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNoYWRlclNvdXJjZShXZWJH
TFNoYWRlciogc2hhZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNv
bnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uo
c2hhZGVyLCBzdHJpbmcpOwpAQCAtMTUzMCwxMyArMTU2MywxNSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1CiB7CiAgICAgZWMgPSAwOwogICAgIGlmICghaW1hZ2Up
IHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2UtPmNhY2hlZElt
YWdlKCk7Ci0gICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICBpZiAoIWNhY2hlZEltYWdlKSB7Cisg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGln
bm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGNhY2hlZEltYWdlLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7
CkBAIC0xNTQ4LDEzICsxNTgzLDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJ
bWFnZTJEKHUKIHsKICAgICBlYyA9IDA7CiAgICAgaWYgKCFjYW52YXMpIHsKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
SW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIp
CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
Ly8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICBtX2Nv
bnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgYnVmZmVyLT5pbWFnZSgpLCBmbGlwWSwg
cHJlbXVsdGlwbHlBbHBoYSk7CkBAIC0xNjA5LDEzICsxNjQ2LDE1IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25v
cmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0gMDsKICAgICBpZiAoIWltYWdlKSB7Ci0g
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZS0+Y2FjaGVkSW1h
Z2UoKTsKLSAgICBpZiAoIWNhY2hlZEltYWdlKQorICAgIGlmICghY2FjaGVkSW1hZ2UpIHsKKyAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
OwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGNhY2hlZElt
YWdlLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE2MjcsMTMgKzE2NjYsMTUgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMgogewogICAgIGVjID0gMDsKICAgICBpZiAoIWNh
bnZhcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcy0+YnVm
ZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBh
bnkgZXJyb3JzIHJldHVybmVkCiAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGJ1ZmZlci0+aW1hZ2UoKSwg
ZmxpcFksIHByZW11bHRpcGx5QWxwaGEpOwpAQCAtMTY1Miw5ICsxNjkzLDkgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTFmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxv
YXQgeCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBp
ZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkg
ewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTY2NCwxMDQgKzE3MDUsMTA0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtMWYoY28KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBXZWJHTEZsb2F0QXJyYXkq
IHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYg
KCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsK
LSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFz
c2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKyAgICB9CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQg
c2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBp
ZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkg
ewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBw
YXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1
cm47Ci0gICAgICAgIAorICAgIH0KICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYsIHNpemUpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWkoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5w
cm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIG1fY29udGV4
dC0+dW5pZm9ybTFpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFdlYkdMSW50QXJy
YXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAg
aWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0p
IHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0g
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkg
cGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpKTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCogdiwgaW50
IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAg
aWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0p
IHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0g
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkg
cGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2LCBzaXplKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8
IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwog
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsKICAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIFdlYkdMRmxvYXRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0g
bV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9P
UEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0
aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVu
Z3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1fY29udGV4dC0+dW5pZm9ybTJm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDIpOwogICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xNzY5LDE2ICsxODEwLDE2IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGMKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVO
VVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgp
ICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFM
SURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQg
dG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2
KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtX2NvbnRleHQtPnVuaWZv
cm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYsIHNpemUgLyAyKTsKICAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTc4NiwyOCArMTgyNywyOCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihjCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQg
eCwgaW50IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAg
ICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dy
YW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9y
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbi0+bG9j
YXRpb24oKSwgeCwgeSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBXZWJHTEludEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRp
b24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBy
YWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJ
WE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikK
KworICAgIGlmICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQog
ICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCiAgICAgbV9j
b250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRhKCksIHYtPmxl
bmd0aCgpIC8gMik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE4
MTUsMTYgKzE4NTYsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYo
YwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2Nh
dGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6
IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNN
QVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8g
RklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2
KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9
CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBt
X2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYsIHNpemUgLyAyKTsK
ICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTgzMiwyOCArMTg3Mywy
OCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihjCiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24t
PnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlz
ZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hf
RVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgbV9jb250
ZXh0LT51bmlmb3JtM2YobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHopOwogICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgV2Vi
R0xGbG9hdEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0o
ZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJl
bnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElP
TiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlm
IG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICghdikgeworICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gMyk7CiAgICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE4NjEsMTYgKzE5MDIsMTYgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYoYwogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9j
dXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVS
QVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJv
dyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
OwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6ZSAvIDMpOwogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CkBAIC0xODc4LDI4ICsxOTE5LDI4IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM2Z2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4LCBpbnQg
eSwgaW50IHosIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAg
ICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dy
YW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9y
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaShsb2NhdGlvbi0+bG9j
YXRpb24oKSwgeCwgeSwgeik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBXZWJHTEludEFycmF5KiB2LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9j
YXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8v
IEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICgh
dikKKworICAgIGlmICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAg
fQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAg
bV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRhKCksIHYt
Pmxlbmd0aCgpIC8gMyk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAg
LTE5MDcsMTYgKzE5NDgsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
aXYoYwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBs
b2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklY
TUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9N
SVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAg
Ly8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYg
KCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAg
ICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYsIHNpemUgLyAz
KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTkyNCwyOCArMTk2
NSwyOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihjCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24g
fHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAor
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHos
IHcpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgV2ViR0xGbG9hdEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dy
YW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9J
TlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBu
ZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlm
ICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51
bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8g
NCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE5NTMsMTYgKzE5
OTQsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYoYwogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5w
cm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAg
ICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAv
LyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4
dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6ZSAvIDQpOwogICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTcwLDI4ICsyMDExLDI4IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGMKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIGludCB4LCBpbnQgeSwgaW50IHosIGludCB3LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dy
YW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9J
TlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT51
bmlmb3JtNGkobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHosIHcpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgV2ViR0xJ
bnRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsK
ICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJv
Z3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJy
b3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBh
cnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDQpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTk5LDE2ICsyMDQwLDE2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQq
IHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQ
cm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBl
cnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5v
IGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICghdikgeworICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2LCBzaXplIC8gNCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKQEAgLTIwMTYsMTYgKzIwNTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00aXYoYwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNw
b3NlLCBXZWJHTEZsb2F0QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9
IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
T1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7
CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi0+ZGF0YSgpLCB2LT5s
ZW5ndGgoKSAvIDQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0y
MDMzLDE2ICsyMDc0LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cmkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHYs
IGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9n
cmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJv
cgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFy
cmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICghdikgeworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAg
IHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8g
YmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYsIHNpemUgLyA0KTsKICAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMjA1MCwxNiArMjA5MSwxNiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIFdlYkdMRmxvYXRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9u
LT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFp
c2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENI
X0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhN
RTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisK
KyAgICBpZiAoIXYpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOQogICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gOSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKQEAgLTIwNjcsMTYgKzIxMDgsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNw
b3NlLCBmbG9hdCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9
IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
T1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7
CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDkKICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdiwgc2l6ZSAvIDkpOwog
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0yMDg0LDE2ICsyMTI1LDE2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cmkKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xGbG9hdEFycmF5KiB2LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRp
b24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgot
ICAgIGlmICghdikKKworICAgIGlmICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiAxNgogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdHJhbnNwb3NlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gMTYpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0yMTAxLDE2ICsyMTQyLDE2IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cmkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRp
b24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBy
YWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJ
WE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikK
KworICAgIGlmICghdikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQog
ICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIG1f
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3Nl
LCB2LCBzaXplIC8gMTYpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBA
IC0yMTE4LDggKzIxNTksOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQcm9ncmFtKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsK
ICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgICAgICAKQEAgLTIxMzAsOCArMjE3Miw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1c2VQcm9ncmFtKFcKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUHJv
Z3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVO
VVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAh
PSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIApAQCAtMjIyOSw5ICsyMjcyLDkgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYgogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGxvbmcgc2l6
ZSwgdW5zaWduZWQgbG9uZyB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIHVuc2lnbmVkIGxvbmcgc3Ry
aWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlciB8fCBpbmR4ID49IG1f
bWF4VmVydGV4QXR0cmlicykgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9W
QUxVRSBlcnJvcgotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yMjM5LDE1ICsyMjgyLDEzIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0
ZS5yZXNpemUoaW5keCArIDEpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgdGhlIGJvdW5kIGJ1ZmZlciBjYW4gaG9sZCwgZ2l2ZW4gdGhlIG9mZnNldCwgc2l6ZSwg
dHlwZSBhbmQgc3RyaWRlCi0gICAgZWMgPSAwOwogICAgIGxvbmcgYnl0ZXNQZXJFbGVtZW50ID0g
c2l6ZSAqIHNpemVJbkJ5dGVzKHR5cGUsIGVjKTsKLSAgICBpZiAoZWMgIT0gMCkKKyAgICBpZiAo
Ynl0ZXNQZXJFbGVtZW50IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBsb25nIHZhbGlkYXRl
ZFN0cmlkZSA9IGJ5dGVzUGVyRWxlbWVudDsKICAgICBpZiAoc3RyaWRlICE9IDApIHsKICAgICAg
ICAgaWYgKChsb25nKSBzdHJpZGUgPCBieXRlc1BlckVsZW1lbnQpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCi0gICAgICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC0yMzAxLDYgKzIzNDIsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRl
dGFjaEFuZFJlbQogICAgIG1fY2FudmFzT2JqZWN0cy5jbGVhcigpOwogfQogCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6c3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcikK
K3sKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworfQorCiBXZWJHTEdldEluZm8g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcg
cG5hbWUpCiB7CiAgICAgdW5zaWduZWQgY2hhciB2YWx1ZTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gNTE4ODQpCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYkdMUmVuZGVyaW5nQ29udGV4dF9oCiAjZGVmaW5l
IFdlYkdMUmVuZGVyaW5nQ29udGV4dF9oCiAKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
ICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJheS5oIgpAQCAtMjk3LDcgKzI5OCw2IEBA
IGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQo
KTsKICAgICAgICAgdm9pZCBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoYm9vbCBjaGFuZ2VkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmNoZWNrRXJyb3IoKTsKICAgICAgICAg
ICAgIGlmIChjaGFuZ2VkKQogICAgICAgICAgICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwog
ICAgICAgICB9CkBAIC0zMDUsMTIgKzMwNSwyNSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAg
ICAgICAgIGJvb2wgdmFsaWRhdGVJbmRleEFycmF5KHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2ln
bmVkIGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQsIGxvbmcmIG51bUVsZW1lbnRzKTsKICAgICAgICAg
Ym9vbCB2YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKGxvbmcgbnVtRWxlbWVudHMpOwogCisgICAgICAg
IC8vIFN5bnRoZXNpemVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJlIHJldHVybmVkIGZy
b20gYQorICAgICAgICAvLyBsYXRlciBjYWxsIHRvIGdldEVycm9yLiBUaGlzIGlzIHVzZWQgdG8g
ZW11bGF0ZSBPcGVuR0wgRVMKKyAgICAgICAgLy8gMi4wIGJlaGF2aW9yIG9uIHRoZSBkZXNrdG9w
IGFuZCB0byBlbmZvcmNlIGFkZGl0aW9uYWwgZXJyb3IKKyAgICAgICAgLy8gY2hlY2tpbmcgbWFu
ZGF0ZWQgYnkgV2ViR0wuCisgICAgICAgIC8vCisgICAgICAgIC8vIFBlciB0aGUgYmVoYXZpb3Ig
b2YgZ2xHZXRFcnJvciwgdGhpcyBzdG9yZXMgYXQgbW9zdCBvbmUKKyAgICAgICAgLy8gaW5zdGFu
Y2Ugb2YgYW55IGdpdmVuIGVycm9yLCBhbmQgcmV0dXJucyB0aGVtIGZyb20gY2FsbHMgdG8KKyAg
ICAgICAgLy8gZ2V0RXJyb3IgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZC4KKyAgICAgICAg
dm9pZCBzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKKwogICAgICAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICAgICAgYm9vbCBtX25lZWRz
VXBkYXRlOwogICAgICAgICBib29sIG1fbWFya2VkQ2FudmFzRGlydHk7CiAgICAgICAgIC8vIEZJ
WE1FOiBJIHRoaW5rIHRoaXMgaXMgYnJva2VuIC0tIGl0IGRvZXMgbm90IGluY3JlbWVudCBhbnkK
ICAgICAgICAgLy8gcmVmZXJlbmNlIGNvdW50cywgc28gbWF5IHJlZmVyIHRvIGRlc3Ryb3llZCBv
YmplY3RzLgogICAgICAgICBIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID4gbV9jYW52YXNP
YmplY3RzOworCisgICAgICAgIC8vIEVycm9ycyByYWlzZWQgYnkgc3ludGhlc2l6ZUdMRXJyb3Io
KS4KKyAgICAgICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgbG9uZz4gbV9zeW50aGV0aWNFcnJvcnM7
CiAgICAgICAgIAogICAgICAgICAvLyBMaXN0IG9mIGJvdW5kIFZCTydzLiBVc2VkIHRvIG1haW50
YWluIGluZm8gYWJvdXQgc2l6ZXMgZm9yIEFSUkFZX0JVRkZFUiBhbmQgc3RvcmVkIHZhbHVlcyBm
b3IgRUxFTUVOVF9BUlJBWV9CVUZGRVIKICAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2Jv
dW5kQXJyYXlCdWZmZXI7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1MTg4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzk3LDcgKzM5Nyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gTnVsbFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0Q7IH0KICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0Zm9ybVRl
eHR1cmUoKSBjb25zdCB7IHJldHVybiBOdWxsUGxhdGZvcm0zRE9iamVjdDsgfQogI2VuZGlmCi0g
ICAgICAgIHZvaWQgY2hlY2tFcnJvcigpIGNvbnN0OwogICAgICAgICB2b2lkIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgICAgICAKICAgICAgICAgLy8gSGVscGVyIHRvIHJldHVybiB0aGUgc2l6
ZSBpbiBieXRlcyBvZiBPcGVuR0wgZGF0YSB0eXBlcwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkocmV2aXNp
b24gNTE4ODQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRl
eHQzRE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxNSArMTc1LDYgQEAgR3JhcGhpY3ND
b250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjaGVja0Vycm9yKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVk
cyB0byBvbmx5IGJlIGRvbmUgaW4gdGhlIGRlYnVnIGNvbnRleHQuIEl0IHdpbGwgcHJvYmFibHkg
dGhyb3cgYW4gZXhjZXB0aW9uCi0gICAgLy8gb24gZXJyb3IgYW5kIHByaW50IHRoZSBlcnJvciBt
ZXNzYWdlIHRvIHRoZSBkZWJ1ZyBjb25zb2xlCi0gICAgR0xlbnVtIGVycm9yID0gOjpnbEdldEVy
cm9yKCk7Ci0gICAgaWYgKGVycm9yICE9IEdMX05PX0VSUk9SKQotICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQo
KQogewogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaik7CkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDUxODg0KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDA5LTEyLTA4ICBLZW5uZXRoIFJ1c3NlbGwg
IDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNdXN0IGZhYnJpY2F0ZSBHTCBlcnJvcnMgaW5zdGVhZCBvZiB0aHJvd2luZyBl
eGNlcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjA5OQorCisgICAgICAgIENoYW5nZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHN5bnRo
ZXNpemUgR0wgZXJyb3JzIHJhdGhlciB0aGFuCisgICAgICAgIHJhaXNpbmcgSmF2YVNjcmlwdCBl
eGNlcHRpb25zLiBSZW1vdmVkIGludGVybmFsIGdldEVycm9yKCkgY2FsbHMKKyAgICAgICAgYWZ0
ZXIgZWFjaCBncmFwaGljcyBjYWxsLiBCYXNlZCBvbiBpZGVhIGZyb20gSWxtYXJpIEhlaWtraW5l
biwKKyAgICAgICAgYWRkZWQgY3JlYXRlM0REZWJ1Z0NvbnRleHQoKSB0byB3ZWJnbC10ZXN0Lmpz
IGFuZCBjaGFuZ2VkIHRoZQorICAgICAgICBXZWJHTCBsYXlvdXQgdGVzdHMgZXhwZWN0aW5nIGVy
cm9yIGNvbmRpdGlvbnMgdG8gdXNlIGl0LiBUaGUgdGVzdHMKKyAgICAgICAgcmVxdWlyZWQgbm8g
bW9yZSB0aGFuIDIgbGluZXMgb2YgY29kZSBjaGFuZ2UgZWFjaCBhbmQgYmVoYXZlCisgICAgICAg
IGlkZW50aWNhbGx5IHRvIGhvdyB0aGV5IGRpZCBiZWZvcmUuIFRoZSBjaGFuZ2VzIHRvIHRoZQor
ICAgICAgICBleHBlY3RlZC50eHQgZmlsZXMgYXJlIHNpbXBseSB0aGUgY29udGVudHMgb2YgdGhl
IGV4Y2VwdGlvbgorICAgICAgICBtZXNzYWdlcywgd2hpY2ggaW1wbGljaXRseSB0ZXN0IHRoZSBl
eGFjdCBHTCBlcnJvciByYWlzZWQgc2luY2UKKyAgICAgICAgdGhhdCBpcyBwYXJ0IG9mIHRoZSBk
ZXRhaWwgbWVzc2FnZS4KKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKToKKwog
MjAwOS0xMi0wOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNTE4ODQpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEw
MSw2IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CiAgICAgfkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAotICAgIHZvaWQgY2hlY2tFcnJvcigpIGNvbnN0
OwogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdDsKQEAgLTUxNSwxNyAr
NTE0LDYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udAogICAgIG1f
Y29udGV4dE9iaiA9IDA7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2hl
Y2tFcnJvcigpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gb25seSBiZSBk
b25lIGluIHRoZSBkZWJ1ZyBjb250ZXh0LiBJdAotICAgIC8vIHdpbGwgbmVlZCB0byB0aHJvdyBh
biBleGNlcHRpb24gb24gZXJyb3IuCi0gICAgR0xlbnVtIGVycm9yID0gZ2xHZXRFcnJvcigpOwot
ICAgIGlmIChlcnJvciAhPSBHTF9OT19FUlJPUikgewotICAgICAgICBwcmludGYoIkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6IEdMIEVycm9yIDogJXhcbiIsIGVycm9yKTsKLSAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICNpZiBQTEFURk9STShXSU5fT1MpCkBAIC01OTIs
NyArNTgwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKAogICAg
ICAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAmbV9mYm8pOwogICAgICAgICAvLyBHZW5lcmF0
ZSB0aGUgZGVwdGggYnVmZmVyCiAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9k
ZXB0aEJ1ZmZlcik7Ci0gICAgICAgIGNoZWNrRXJyb3IoKTsKICAgICB9CiAKICAgICAvLyBSZWFs
bG9jYXRlIHRoZSBjb2xvciBhbmQgZGVwdGggYnVmZmVycwpAQCAtMTAyOSwxMSArMTAxNiw2IEBA
IFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXQKICAgICByZXR1cm4gbV9p
bnRlcm5hbC0+cGxhdGZvcm1UZXh0dXJlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNoZWNrRXJyb3IoKSBjb25zdAotewotICAgIG1faW50ZXJuYWwtPmNoZWNrRXJyb3IoKTsKLX0K
LQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBt
X2ludGVybmFsLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxODg0
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMDktMTItMDggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11c3QgZmFicmljYXRl
IEdMIGVycm9ycyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDk5CisKKyAgICAgICAgQ2hhbmdl
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gc3ludGhlc2l6ZSBHTCBlcnJvcnMgcmF0aGVyIHRo
YW4KKyAgICAgICAgcmFpc2luZyBKYXZhU2NyaXB0IGV4Y2VwdGlvbnMuIFJlbW92ZWQgaW50ZXJu
YWwgZ2V0RXJyb3IoKSBjYWxscworICAgICAgICBhZnRlciBlYWNoIGdyYXBoaWNzIGNhbGwuIEJh
c2VkIG9uIGlkZWEgZnJvbSBJbG1hcmkgSGVpa2tpbmVuLAorICAgICAgICBhZGRlZCBjcmVhdGUz
RERlYnVnQ29udGV4dCgpIHRvIHdlYmdsLXRlc3QuanMgYW5kIGNoYW5nZWQgdGhlCisgICAgICAg
IFdlYkdMIGxheW91dCB0ZXN0cyBleHBlY3RpbmcgZXJyb3IgY29uZGl0aW9ucyB0byB1c2UgaXQu
IFRoZSB0ZXN0cworICAgICAgICByZXF1aXJlZCBubyBtb3JlIHRoYW4gMiBsaW5lcyBvZiBjb2Rl
IGNoYW5nZSBlYWNoIGFuZCBiZWhhdmUKKyAgICAgICAgaWRlbnRpY2FsbHkgdG8gaG93IHRoZXkg
ZGlkIGJlZm9yZS4gVGhlIGNoYW5nZXMgdG8gdGhlCisgICAgICAgIGV4cGVjdGVkLnR4dCBmaWxl
cyBhcmUgc2ltcGx5IHRoZSBjb250ZW50cyBvZiB0aGUgZXhjZXB0aW9uCisgICAgICAgIG1lc3Nh
Z2VzLCB3aGljaCBpbXBsaWNpdGx5IHRlc3QgdGhlIGV4YWN0IEdMIGVycm9yIHJhaXNlZCBzaW5j
ZQorICAgICAgICB0aGF0IGlzIHBhcnQgb2YgdGhlIGRldGFpbCBtZXNzYWdlLgorCisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRP
ZkJvdW5kcy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRlc3Qt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250
ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFz
L3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzOgorICAgICAgICAoY3Jl
YXRlM0REZWJ1Z0NvbnRleHQud3JhcC5nZXRFcnJvcik6CisgICAgICAgIChjcmVhdGUzRERlYnVn
Q29udGV4dCk6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dldEFj
dGl2ZVRlc3QuanM6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2lu
Y29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanM6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5qczoKKwogMjAwOS0x
Mi0wOCAgUGV0ZXJzb24gVHJldGhld2V5ICA8cGV0ZXJzb250QGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDUxODg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZHJhd0FycmF5c091dE9mQm91bmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MywyNCArMywyNCBAQCBUZXN0IG9mIGRyYXdBcnJheXMgd2l0aCBvdXQtb2YtYm91bmRzIHBhCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFRlc3QgZW1wdHkgYnVmZmVyCi1QQVNTIGNvbnRl
eHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5k
cmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5k
cmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAwMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAwKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0
LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAwKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRy
YXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdB
cnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAxKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdBcnJh
eXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgy
IGluIGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xF
UywgMCwgMTAwMDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdBcnJheXMu
CitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAw
MDAwMDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdBcnJheXMuCitQQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgLTEpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIg
aW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVT
LCAtMSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BB
U1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAtMSkgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJy
YXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODIgaW4gZHJhd0FycmF5cy4KIAogVGVzdCBidWZmZXIgd2l0aCAzIGZsb2F0IHZlY3RvcnMKIFBB
U1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAzKSBpcyB1bmRlZmlu
ZWQKLVBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCAyKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgot
UEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgot
UEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwMDAwMDAw
MDAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0
aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIC0x
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9u
IDExLgotUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDEx
LgotUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgot
UEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAxKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFT
UyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDMsIDIpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgyIGluIGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFO
R0xFUywgMCwgMTAwMDAwMDAwMDAwMDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGlu
IGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
MCwgLTEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdBcnJheXMuCitQQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgy
IGluIGRyYXdBcnJheXMuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xF
UywgLTEsIDEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdBcnJheXMuCiAK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWwJ
KHJldmlzaW9uIDUxODg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0Fy
cmF5c091dE9mQm91bmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAKIDxz
Y3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVzdCBvZiBkcmF3QXJyYXlzIHdpdGggb3V0LW9mLWJvdW5k
cyBwYXJhbWV0ZXJzIik7CiAKLXZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIg
Y29udGV4dCA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbSA9IGxvYWRTdGFu
ZGFyZFByb2dyYW0oY29udGV4dCk7CiAKIGNvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFtKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRPZkJvdW5k
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZHJhd0VsZW1lbnRzc091dE9mQm91bmRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE4ODQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3Vu
ZHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDIyICszLDIyIEBAIFRlc3Qgb2Yg
ZHJhd0VsZW1lbnRzIHdpdGggb3V0LW9mLWJvdW5kcyAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogVGVzdCBlbXB0eSBpbmRleCBidWZmZXIKLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMo
Y29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
Y29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVO
U0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6
IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJ
QU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFT
UyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJ
R05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBE
T00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFO
R0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3
RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24g
MTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250
ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RB
VEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRl
eHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwgY29udGV4
dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3
RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAx
LCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgy
IGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBHTCBl
cnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29u
dGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxl
bWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRo
cmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KIAogVGVzdCBidWZm
ZXIgd2l0aCAzIGJ5dGUgaW5kZXhlcwogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBpcyB1bmRlZmluZWQKLVBB
U1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5T
SUdORURfQllURSwgMikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwgY29udGV4dC5V
TlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJS
OiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5k
cmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUs
IDEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBj
b250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURf
U1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAyKSB0aHJldyBleGNl
cHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAw
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBk
cmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVT
LCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVTLCAtMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAxKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCiAKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
ZHJhd0VsZW1lbnRzc091dE9mQm91bmRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1lbnRzc091dE9mQm91bmRzLmh0bWwJKHJldmlzaW9u
IDUxODg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1lbnRzc091
dE9mQm91bmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAKIDxzY3JpcHQ+
CiBkZXNjcmlwdGlvbigiVGVzdCBvZiBkcmF3RWxlbWVudHMgd2l0aCBvdXQtb2YtYm91bmRzIHBh
cmFtZXRlcnMiKTsKIAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250
ZXh0ID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKIHZhciBwcm9ncmFtID0gbG9hZFN0YW5kYXJk
UHJvZ3JhbShjb250ZXh0KTsKIAogY29udGV4dC51c2VQcm9ncmFtKHByb2dyYW0pOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0QWN0aXZlVGVzdC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0QWN0aXZlVGVz
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxODg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZ2V0QWN0aXZlVGVzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYs
MTEgKzYsMTEgQEAgUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAogUEFTUyBjb250ZXh0Lmdl
dEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkubmFtZSBpcyAndV9tb2RlbFZpZXdQcm9qTWF0cml4
JwogUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkudHlwZSBpcyBjb250
ZXh0LkZMT0FUX01BVDQKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDAp
LnNpemUgaXMgMQotUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorUEFT
UyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMSkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlVW5pZm9ybS4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigp
IGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQotUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBF
eGNlcHRpb24gMS4KK1BBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIC0xKSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVVbmlmb3JtLgogUEFTUyBj
b250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCi1QQVNTIGNvbnRleHQu
Z2V0QWN0aXZlVW5pZm9ybShudWxsLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJ
WkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShu
dWxsLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRBY3RpdmVVbmlmb3Jt
LgogUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0
dHJpYihwcm9ncmFtLCAwKS5uYW1lIGlzICdhX25vcm1hbCcKIFBBU1MgY29udGV4dC5nZXRBY3Rp
dmVBdHRyaWIocHJvZ3JhbSwgMCkudHlwZSBpcyBjb250ZXh0LkZMT0FUX1ZFQzMKQEAgLTE4LDIw
ICsxOCwyMCBAQCBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApCiBQQVNT
IGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDEpLm5hbWUgaXMgJ2FfdmVydGV4Jwog
UEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAxKS50eXBlIGlzIGNvbnRleHQu
RkxPQVRfVkVDNAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAxKS5zaXpl
IGlzIDEKLVBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBjb250
ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAyKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MSBpbiBnZXRBY3RpdmVBdHRyaWIuCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250
ZXh0LklOVkFMSURfVkFMVUUKLVBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwg
LTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24g
MS4KK1BBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgLTEpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgxIGluIGdldEFjdGl2ZUF0dHJpYi4KIFBBU1MgY29udGV4dC5nZXRF
cnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQotUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0
dHJpYihudWxsLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00g
RXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKG51bGwsIDApIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldEFjdGl2ZUF0dHJpYi4KIFBBU1MgY29udGV4
dC5nZXRFcnJvcigpIGlzIDAKIFBBU1MgY29udGV4dDIuZ2V0RXJyb3IoKSBpcyAwCi1QQVNTIGNv
bnRleHQyLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQyLmdldEFjdGl2
ZUF0dHJpYihwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRB
Y3RpdmVBdHRyaWIuCiBQQVNTIGNvbnRleHQyLmdldEVycm9yKCkgaXMgMAotUEFTUyBjb250ZXh0
Mi5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5E
RVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgY29udGV4dDIuZ2V0QWN0aXZlVW5p
Zm9ybShwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRBY3Rp
dmVVbmlmb3JtLgogUEFTUyBjb250ZXh0Mi5nZXRFcnJvcigpIGlzIDAKLVBBU1MgY29udGV4dC5n
ZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhf
U0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3Jt
KHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldEFjdGl2ZVVu
aWZvcm0uCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9F
UlI6IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3Jh
bSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlQXR0cmliLgog
UEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29u
dGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3Vy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE4ODQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMiwyOCArMiwyOCBAQCBUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMg
d2l0aCBvYmplY3RzIGZyCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUEFTUyBjb250
ZXh0QS5jb21waWxlU2hhZGVyKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmxpbmtQcm9ncmFt
KHByb2dyYW1CKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5hdHRhY2hTaGFkZXIocHJvZ3JhbUEsIHNoYWRl
ckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIGNvbnRleHRBLmF0dGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
LVBBU1MgY29udGV4dEEuYXR0YWNoU2hhZGVyKHByb2dyYW1CLCBzaGFkZXJCKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBj
b250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUEsIHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRB
LmRldGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZGV0YWNo
U2hhZGVyKHByb2dyYW1CLCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5zaGFkZXJTb3VyY2Uo
c2hhZGVyQiwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtQiwgMCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0
QS5GUkFNRUJVRkZFUiwgZnJhbWVCdWZmZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5iaW5kUmVuZGVy
YnVmZmVyKGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVuZGVyQnVmZmVyQikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29u
dGV4dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHRBLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBj
b250ZXh0QS5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1
ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZS
QU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVSRV8y
RCwgdGV4dHVyZUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFByb2dyYW1QYXJhbWV0ZXIocHJv
Z3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW1CLCAw
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgotUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyQiwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBB
U1MgY29udGV4dEEuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXJCLCAwKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0
QS5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShw
cm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbUIsICd1X21vZGVsVmlld1Byb2pNYXRyaXgnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0QS5jb21w
aWxlU2hhZGVyKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGNvbXBp
bGVTaGFkZXIuCitQQVNTIGNvbnRleHRBLmxpbmtQcm9ncmFtKHByb2dyYW1CKSB0aHJldyBleGNl
cHRpb24gR0wgZXJyb3IgMTI4MiBpbiBsaW5rUHJvZ3JhbS4KK1BBU1MgY29udGV4dEEuYXR0YWNo
U2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBp
biBhdHRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHRBLmF0dGFjaFNoYWRlcihwcm9ncmFtQiwgc2hh
ZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFT
UyBjb250ZXh0QS5hdHRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckIpIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgxIGluIGF0dGFjaFNoYWRlci4KK1BBU1MgY29udGV4dEEuZGV0YWNoU2hh
ZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBk
ZXRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVy
QSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZGV0YWNoU2hhZGVyLgorUEFTUyBj
b250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGRldGFjaFNoYWRlci4KK1BBU1MgY29udGV4dEEuc2hhZGVyU291cmNl
KHNoYWRlckIsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBzaGFkZXJT
b3VyY2UuCitQQVNTIGNvbnRleHRBLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtQiwgMCwgJ2Zv
bycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGJpbmRBdHRyaWJMb2NhdGlvbi4K
K1BBU1MgY29udGV4dEEuYmluZEZyYW1lYnVmZmVyKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBmcmFt
ZUJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGJpbmRGcmFtZWJ1ZmZl
ci4KK1BBU1MgY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0QS5SRU5ERVJCVUZGRVIs
IHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGJpbmRSZW5k
ZXJidWZmZXIuCitQQVNTIGNvbnRleHRBLmJpbmRUZXh0dXJlKGNvbnRleHRBLlRFWFRVUkVfMkQs
IHRleHR1cmVCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBiaW5kVGV4dHVyZS4K
K1BBU1MgY29udGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dEEuRlJBTUVCVUZG
RVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyQnVmZmVyQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIuCitQQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRB
LkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVS
RV8yRCwgdGV4dHVyZUIsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGZyYW1l
YnVmZmVyVGV4dHVyZTJELgorUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dy
YW1CLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRQcm9ncmFtUGFyYW1l
dGVyLgorUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtQiwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0UHJvZ3JhbUluZm9Mb2cuCitQQVNTIGNvbnRl
eHRBLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJCLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MiBpbiBnZXRTaGFkZXJQYXJhbWV0ZXIuCitQQVNTIGNvbnRleHRBLmdldFNoYWRlcklu
Zm9Mb2coc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0U2hh
ZGVySW5mb0xvZy4KK1BBU1MgY29udGV4dEEuZ2V0U2hhZGVyU291cmNlKHNoYWRlckIpIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFNoYWRlclNvdXJjZS4KK1BBU1MgY29udGV4
dEEuZ2V0VW5pZm9ybShwcm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MiBpbiBnZXRVbmlmb3JtLgorUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbUIsICd1X21vZGVsVmlld1Byb2pNYXRyaXgnKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MiBpbiBnZXRVbmlmb3JtTG9jYXRpb24uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2ludmFsaWRQYXNzZWRQYXJhbXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA1MTg4NCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFs
aWRQYXNzZWRQYXJhbXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBA
QCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBUZXN0IHNoYWRlcnMK
IFBBU1Mgc2hhZGVyID0gY29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5GUkFHTUVOVF9TSEFE
RVIpIGlzIHNoYWRlcgogUEFTUyBzaGFkZXIgPSBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0
LlZFUlRFWF9TSEFERVIpIGlzIHNoYWRlcgotUEFTUyBjb250ZXh0LmNyZWF0ZVNoYWRlcigwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNT
IGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQuVFJJQU5HTEVTKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIGNvbnRleHQuY3JlYXRl
U2hhZGVyKDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgwIGluIGNyZWF0ZVNoYWRlci4K
K1BBU1MgY29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5UUklBTkdMRVMpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgwIGluIGNyZWF0ZVNoYWRlci4KIAogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZh
bGlkUGFzc2VkUGFyYW1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvaW52YWxpZFBhc3NlZFBhcmFtcy5odG1sCShyZXZpc2lvbiA1MTg4NCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUZXN0
IGZvciBpbnZhbGlkIHBhc3NlZCBwYXJhbWV0ZXJzIik7CiAKLXZhciBjb250ZXh0ID0gY3JlYXRl
M0RDb250ZXh0KCk7Cit2YXIgY29udGV4dCA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7CiAKIGRl
YnVnKCJUZXN0IHNoYWRlcnMiKTsKIHZhciBzaGFkZXI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxODg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMiwyOSArMiwyOSBAQCBUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aG91dCBwcm92
aWRpCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUEFTUyBjb250ZXh0LmNvbXBpbGVT
aGFkZXIoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmxpbmtQcm9ncmFtKCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5h
dHRhY2hTaGFkZXIoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgotUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcihwcm9ncmFtLCB1bmRlZmluZWQpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHQuZGV0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0
LnNoYWRlclNvdXJjZSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKHVuZGVmaW5lZCwg
J2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9uKHVuZGVmaW5lZCwgMCwg
J2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCitQQVNTIGNvbnRleHQuY29tcGlsZVNoYWRlcigpIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGNvbXBpbGVTaGFkZXIuCitQQVNTIGNvbnRleHQubGlua1Byb2dyYW0o
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBsaW5rUHJvZ3JhbS4KK1BBU1MgY29u
dGV4dC5hdHRhY2hTaGFkZXIoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBhdHRh
Y2hTaGFkZXIuCitQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHVuZGVmaW5lZCkg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250
ZXh0LmF0dGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcihwcm9n
cmFtLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRldGFjaFNo
YWRlci4KK1BBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIodW5kZWZpbmVkLCBzaGFkZXIpIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRldGFjaFNoYWRlci4KK1BBU1MgY29udGV4dC5z
aGFkZXJTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBzaGFkZXJTb3Vy
Y2UuCitQQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4
Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIHNoYWRlclNvdXJjZS4KK1BBU1MgY29udGV4dC5iaW5k
QXR0cmliTG9jYXRpb24odW5kZWZpbmVkLCAwLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODIgaW4gYmluZEF0dHJpYkxvY2F0aW9uLgogUEFTUyBjb250ZXh0LmJpbmRCdWZmZXIo
Y29udGV4dC5BUlJBWV9CVUZGRVIsIDApIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5iaW5k
RnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkgaXMgdW5kZWZpbmVkLgogUEFTUyBj
b250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5SRU5ERVJCVUZGRVIsIDApIGlzIHVuZGVm
aW5lZC4KIFBBU1MgY29udGV4dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIDApIGlz
IHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0
LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHQuUkVOREVSQlVG
RkVSLCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQo
Y29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5U
RVhUVVJFXzJELCAwLCAwKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbVBh
cmFtZXRlcih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRD
SF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbUluZm9Mb2co
dW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmlu
ZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0U2hhZGVySW5mb0xvZyh1bmRlZmluZWQsIDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
Ci1QQVNTIGNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtTG9j
YXRpb24odW5kZWZpbmVkLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY29udGV4dC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0UHJv
Z3JhbVBhcmFtZXRlci4KK1BBU1MgY29udGV4dC5nZXRQcm9ncmFtSW5mb0xvZyh1bmRlZmluZWQs
IDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFByb2dyYW1JbmZvTG9nLgor
UEFTUyBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFNoYWRlclBhcmFtZXRlci4KK1BBU1MgY29udGV4dC5n
ZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODIgaW4gZ2V0U2hhZGVySW5mb0xvZy4KK1BBU1MgY29udGV4dC5nZXRTaGFkZXJTb3VyY2UodW5k
ZWZpbmVkKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRTaGFkZXJTb3VyY2Uu
CitQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGdldFVuaWZvcm0uCitQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0
aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdl
dFVuaWZvcm1Mb2NhdGlvbi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1s
b2NhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxODg0KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMsMTAgQEAgVGVzdHMgY2FsbGluZyBXZWJH
TCBBUElzIHdpdGggb2JqZWN0cyBmcgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBQQVNT
IGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbUEyKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRl
eHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25BLCBmYWxzZSwgbWF0KSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250
ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgdGhyZXcgZXhjZXB0
aW9uIEdMIGVycm9yIDEyODIgaW4gdW5pZm9ybU1hdHJpeDRmdi4KIFBBU1MgY29udGV4dEEudXNl
UHJvZ3JhbShwcm9ncmFtQTEpIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dEEudW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4
dEEudW5pZm9ybU1hdHJpeDRmdigwLCBmYWxzZSwgbWF0KSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0QS51bmlm
b3JtTWF0cml4NGZ2KDAsIGZhbHNlLCBtYXQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgy
IGluIHVuaWZvcm1NYXRyaXg0ZnYuCiBQQVNTIGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVMp
IGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dEEudW5pZm9ybTFpKGxvY2F0aW9uU3gsIDMpIGlz
IHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dEEudW5pZm9ybTFmKGxvY2F0aW9uQXJyYXkwLCA0LjAp
IGlzIHVuZGVmaW5lZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbC10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCShyZXZpc2lvbiA1MTg4NCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xNiw2ICsxNiwzNyBAQCBmdW5jdGlvbiBjcmVhdGUzRENvbnRleHQoKSB7CiAg
ICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJtb3otd2ViZ2wiKTsKIH0KIAorZnVuY3Rpb24g
Y3JlYXRlR0xFcnJvcldyYXBwZXIoY29udGV4dCwgZm5hbWUpIHsKKyAgICByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBydiA9IGNvbnRleHRbZm5hbWVdLmFwcGx5KGNvbnRleHQsIGFy
Z3VtZW50cyk7CisgICAgICAgIHZhciBlcnIgPSBjb250ZXh0LmdldEVycm9yKCk7CisgICAgICAg
IGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgIHRocm93ICJHTCBlcnJvciAiICsgZXJyICsgIiBp
biAiICsgZm5hbWU7CisgICAgICAgIHJldHVybiBydjsKKyAgICB9OworfQorCitmdW5jdGlvbiBj
cmVhdGUzRERlYnVnQ29udGV4dCgpIHsKKyAgICB2YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4
dCgpOworICAgIC8vIFRoYW5rcyB0byBJbG1hcmkgSGVpa2tpbmVuIGZvciB0aGUgaWRlYSBvbiBo
b3cgdG8gaW1wbGVtZW50IHRoaXMgc28gZWxlZ2FudGx5LgorICAgIHZhciB3cmFwID0ge307Cisg
ICAgZm9yICh2YXIgaSBpbiBjb250ZXh0KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBp
ZiAodHlwZW9mIGNvbnRleHRbaV0gPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgICAgIHdy
YXBbaV0gPSBjcmVhdGVHTEVycm9yV3JhcHBlcihjb250ZXh0LCBpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgd3JhcFtpXSA9IGNvbnRleHRbaV07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCJj
cmVhdGUzRERlYnVnQ29udGV4dDogRXJyb3IgYWNjZXNzaW5nICIgKyBpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICB3cmFwLmdldEVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBj
b250ZXh0LmdldEVycm9yKCk7CisgICAgfTsKKyAgICByZXR1cm4gd3JhcDsKK30KKwogZnVuY3Rp
b24gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KSB7CiAgICAgdmFyIHByb2dyYW0gPSBjb250
ZXh0LmNyZWF0ZVByb2dyYW0oKTsKICAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCBs
b2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoY29udGV4dCkpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dldEFjdGl2ZVRlc3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dldEFjdGl2ZVRl
c3QuanMJKHJldmlzaW9uIDUxODg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2NyaXB0LXRlc3RzL2dldEFjdGl2ZVRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACiBkZXNjcmlwdGlvbigiVGVzdCBvZiBnZXRBY3RpdmVBdHRyaWIgYW5kIGdldEFjdGl2ZVVu
aWZvcm0iKTsKIAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKLXZhciBjb250ZXh0
MiA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRERlYnVnQ29udGV4
dCgpOwordmFyIGNvbnRleHQyID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKIHZhciBwcm9ncmFt
ID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKIHZhciBwcm9ncmFtMiA9IGxvYWRTdGFu
ZGFyZFByb2dyYW0oY29udGV4dDIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
aW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTE4ODQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNv
bnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IGRlc2NyaXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aCBvYmplY3RzIGZyb20g
b3RoZXIgY29udGV4dHMiKTsKIAotdmFyIGNvbnRleHRBID0gY3JlYXRlM0RDb250ZXh0KCk7Ci12
YXIgY29udGV4dEIgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250ZXh0QSA9IGNyZWF0ZTNE
RGVidWdDb250ZXh0KCk7Cit2YXIgY29udGV4dEIgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwog
dmFyIHByb2dyYW1BID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0QSk7CiB2YXIgcHJvZ3Jh
bUIgPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHRCKTsKIHZhciBzaGFkZXJBID0gbG9hZFN0
YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHRBKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL251bGwtb2Jq
ZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTE4ODQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogZGVzY3JpcHRpb24oIlRlc3RzIGNhbGxpbmcgV2ViR0wg
QVBJcyB3aXRob3V0IHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IG9iamVjdHMiKTsKIAotdmFyIGNv
bnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250ZXh0ID0gY3JlYXRlM0REZWJ1Z0Nv
bnRleHQoKTsKIHZhciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKIHZh
ciBzaGFkZXIgPSBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoY29udGV4dCk7CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9u
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10
ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpzCShyZXZpc2lvbiA1MTg4NCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZGVzY3JpcHRpb24oIlRlc3RzIGNhbGxpbmcgV2Vi
R0wgQVBJcyB3aXRoIG9iamVjdHMgZnJvbSBvdGhlciBjb250ZXh0cyIpOwogCi12YXIgY29udGV4
dEEgPSBjcmVhdGUzRENvbnRleHQoKTsKLXZhciBjb250ZXh0QiA9IGNyZWF0ZTNEQ29udGV4dCgp
OwordmFyIGNvbnRleHRBID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKK3ZhciBjb250ZXh0QiA9
IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbUExID0gbG9hZFN0YW5kYXJkUHJv
Z3JhbShjb250ZXh0QSk7CiB2YXIgcHJvZ3JhbUEyID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250
ZXh0QSk7CiB2YXIgcHJvZ3JhbUIgPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHRCKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44597</attachid>
            <date>2009-12-10 00:27:17 -0800</date>
            <delta_ts>2009-12-10 14:01:49 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>gl-errors.patch</filename>
            <type>text/plain</type>
            <size>115947</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTkzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA0IEBACisyMDA5LTEyLTEwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
dXN0IGZhYnJpY2F0ZSBHTCBlcnJvcnMgaW5zdGVhZCBvZiB0aHJvd2luZyBleGNlcHRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjA5OQorCisg
ICAgICAgIENoYW5nZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHN5bnRoZXNpemUgR0wgZXJy
b3JzIHJhdGhlciB0aGFuCisgICAgICAgIHJhaXNpbmcgSmF2YVNjcmlwdCBleGNlcHRpb25zLiBS
ZW1vdmVkIGludGVybmFsIGdldEVycm9yKCkgY2FsbHMKKyAgICAgICAgYWZ0ZXIgZWFjaCBncmFw
aGljcyBjYWxsLiBUaGUgR3JhcGhpY3NDb250ZXh0M0QgbWFpbnRhaW5zIHRoZQorICAgICAgICBz
eW50aGV0aWMgZXhjZXB0aW9ucyBiZWNhdXNlIG9ubHkgaXQgaGFzIGNvbXBsZXRlIGluZm9ybWF0
aW9uCisgICAgICAgIGFib3V0IGNlcnRhaW4gY29uZGl0aW9ucyByZXF1aXJpbmcgdGhlbSB0byBi
ZSByYWlzZWQuCisKKyAgICAgICAgQmFzZWQgb24gaWRlYSBmcm9tIElsbWFyaSBIZWlra2luZW4s
IGFkZGVkIGNyZWF0ZTNERGVidWdDb250ZXh0KCkKKyAgICAgICAgdG8gd2ViZ2wtdGVzdC5qcyBh
bmQgY2hhbmdlZCB0aGUgV2ViR0wgbGF5b3V0IHRlc3RzIGV4cGVjdGluZworICAgICAgICBlcnJv
ciBjb25kaXRpb25zIHRvIHVzZSBpdC4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiB0aGUgZXJy
b3IKKyAgICAgICAgcmVwb3J0aW5nIGluIGdldEFjdGl2ZUF0dHJpYiBhbmQgZ2V0QWN0aXZlVW5p
Zm9ybS4gRml4ZWQKKyAgICAgICAgcHJlZXhpc3RpbmcgYnVncyBpbiBiaW5kRnJhbWVidWZmZXIs
IGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIGFuZAorICAgICAgICBmcmFtZWJ1ZmZlclRleHR1cmUy
RCwgYW5kIGFzc29jaWF0ZWQgdGVzdCBidWdzLiBVcGRhdGVkCisgICAgICAgIGV4cGVjdGVkLnR4
dCBmaWxlcy4KKworICAgICAgICBBZGRlZCBuZXcgdGFyZ2V0ZWQgdGVzdCBjb3ZlcmluZyBhc3Bl
Y3RzIG9mIHN5bnRoZXRpYyBlcnJvcnMgYXMKKyAgICAgICAgd2VsbCBhcyByZWdyZXNzaW9uIHRl
c3RzIGZvciB0aGUgb3RoZXIgYnVncyB1bmNvdmVyZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9j
YW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFt
SW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm00Zik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzQ29udGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRo
ZXNpemVHTEVycm9yKToKKwogMjAwOS0xMi0wOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1MTkzNSkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDE4ICsxNDEsMTkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnJlc2hhcGUoaW50IAogCiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaXplSW5CeXRlcyhp
bnQgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAg
ICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5zaXplSW5CeXRlcyh0eXBlKTsKICAgICBpZiAocmVz
dWx0IDw9IDApCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKIAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVU
ZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoKHRleHR1cmUgLSBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApID4gc2l6ZW9mKG1fdGV4dHVyZVVuaXRzKSAvIHNpemVvZihUZXh0dXJlVW5pdFN0
YXRlKSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0g
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBtX2FjdGl2ZVRleHR1cmVVbml0ID0gdGV4dHVyZSAtIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMDsKQEAgLTE2Miw4ICsxNjMsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YWN0aXZlVGV4dHVyCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphdHRhY2hT
aGFkZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8
fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcyB8fCAhc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4
dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFk
ZXIocHJvZ3JhbSwgc2hhZGVyKTsKQEAgLTE3Miw4ICsxNzQsOSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YXR0YWNoU2hhZGVyCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0
aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbnRleHQtPmJpbmRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZSk7CkBAIC0xODIsOCArMTg1LDkgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRBdHRyaWJMbwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YmluZEJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAo
YnVmZmVyICYmIGJ1ZmZlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xOTIsOCArMTk2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRC
dWZmZXIodQogICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVO
VF9BUlJBWV9CVUZGRVIpCiAgICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBidWZm
ZXI7CiAgICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0g
ZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMDQsMTMgKzIwNywxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YmluZEJ1ZmZlcih1CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5k
RnJhbWVidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAo
YnVmZmVyICYmIGJ1ZmZlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IG1fZnJhbWVidWZmZXJCaW5kaW5nID0gYnVmZmVyOwpAQCAtMjIwLDEzICsyMjMsMTMgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZgogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xS
ZW5kZXJidWZmZXIqIHJlbmRlckJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGVjKTsKICAgICBpZiAocmVuZGVyQnVmZmVyICYmIHJlbmRlckJ1ZmZlci0+Y29u
dGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0YXJnZXQgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUikgewotICAgICAgICAvLyBGSVhNRTogcmFp
c2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRp
bmcgPSByZW5kZXJCdWZmZXI7CkBAIC0yMzcsOCArMjQwLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmJpbmRSZW5kZXJidQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Ymlu
ZFRleHR1cmUodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGV4dHVy
ZSAmJiB0ZXh0dXJlLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkKQEAgLTI0Niw4
ICsyNTAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUoCiAgICAg
ZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKQog
ICAgICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJl
TWFwQmluZGluZyA9IHRleHR1cmU7CiAgICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlz
ZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X0VOVU0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+YmluZFRleHR1
cmUodGFyZ2V0LCB0ZXh0dXJlKTsKQEAgLTI4NywxOCArMjkwLDE5IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpibGVuZEZ1bmNTZXAKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25lZCBsb25n
IHVzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAg
IGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYm
IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsKICAgICAgICAgaWYgKCFtX2JvdW5kRWxlbWVu
dEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsKLSAgICAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiAmJiBtX2JvdW5kQXJyYXlCdWZmZXIpIHsKICAgICAgICAgaWYg
KCFtX2JvdW5kQXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplKSkg
ewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMw
OCwxOCArMzEyLDE5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKHUK
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0
YXJnZXQsIFdlYkdMQXJyYXkqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEVsZW1lbnRBcnJh
eUJ1ZmZlcikgewogICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmFzc29j
aWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhKSkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
ICYmIG1fYm91bmRBcnJheUJ1ZmZlcikgewogICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZl
ci0+YXNzb2NpYXRlQnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEpKSB7Ci0gICAgICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9F
TlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzI5LDE4ICszMzQsMTkgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEodQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZz
ZXQsIFdlYkdMQXJyYXkqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9B
UlJBWV9CVUZGRVIgJiYgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikgewogICAgICAgICBpZiAo
IW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBvZmZzZXQsIGRhdGEpKSB7Ci0gICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEFy
cmF5QnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9ib3VuZEFycmF5QnVmZmVyLT5hc3NvY2lhdGVC
dWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhKSkgewotICAgICAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5V
TSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM5NCw4ICs0MDAsOSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JNYXNrKGJvCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVy
LT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwor
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0
LT5jb21waWxlU2hhZGVyKHNoYWRlcik7CkBAIC00NTEsOCArNDU4LDkgQEAgUGFzc1JlZlB0cjxX
ZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQogCiBQYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNoYWRlcih1bnNpZ25lZCBsb25nIHR5cGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHR5cGUg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIgJiYgdHlwZSAhPSBHcmFwaGljc0Nv
bnRleHQzRDo6RlJBR01FTlRfU0hBREVSKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApAQCAtNTM1LDggKzU0
Myw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXB0aFJhbmdlKGQKIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlz
IHx8ICFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKQEAg
LTU1Miw4ICs1NjEsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZSh1bnNp
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
dW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpZiAoaW5kZXggPj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7Ci0gICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIApAQCAtNjMxLDkgKzY0MSwxMCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dmFsaWRhdGVSZW5kCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJy
YXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICAvLyBFbnN1cmUgd2UgaGF2
ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0ZQogICAgIGlmIChmaXJzdCA8IDAgfHwgY291bnQgPCAw
IHx8ICF2YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKGZpcnN0ICsgY291bnQpKSB7Ci0gICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKQEAgLTY0MywxMSArNjU0LDEyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpkcmF3QXJyYXlzKHUKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdF
bGVtZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVk
IGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3Rh
dGUKICAgICBsb25nIG51bUVsZW1lbnRzOwogICAgIAogICAgIGlmIChvZmZzZXQgPCAwIHx8ICF2
YWxpZGF0ZUluZGV4QXJyYXkoY291bnQsIHR5cGUsIG9mZnNldCwgbnVtRWxlbWVudHMpIHx8ICF2
YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKG51bUVsZW1lbnRzKSkgewotICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC02NjMsOCArNjc1LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVu
YWJsZSh1bnNpZwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaW5kZXggPj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNjkyLDggKzcwNSw5IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpmbHVzaCgpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBh
dHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJi
dWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVj
KTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfSAgICAgICAKICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwpAQCAt
NzAyLDggKzcxNiw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclIK
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcg
dGV4dGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsIGxvbmcgbGV2ZWwsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRleHR1cmUgJiYgdGV4
dHVyZS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fY29u
dGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQs
IHRleHR1cmUsIGxldmVsKTsKQEAgLTcyNCw5ICs3MzksMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdlbmVyYXRlTWlwbQogCiBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCB1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURf
UEFSQU0oZWMpOwogICAgIEFjdGl2ZUluZm8gaW5mbzsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJv
Z3JhbS0+Y29udGV4dCgpICE9IHRoaXMgfHwgIW1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHBy
b2dyYW0sIGluZGV4LCBpbmZvKSkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAg
IGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoIW1fY29udGV4dC0+
Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBpbmZvKSkgewogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgcmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwg
aW5mby50eXBlLCBpbmZvLnNpemUpOwpAQCAtNzM0LDkgKzc1MywxMyBAQCBQYXNzUmVmUHRyPFdl
YkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpCiAKIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZv
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBV
TlVTRURfUEFSQU0oZWMpOwogICAgIEFjdGl2ZUluZm8gaW5mbzsKLSAgICBpZiAoIXByb2dyYW0g
fHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMgfHwgIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5p
Zm9ybShwcm9ncmFtLCBpbmRleCwgaW5mbykpIHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VS
UjsKKyAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFtX2Nv
bnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGluZm8pKSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gV2ViR0xBY3RpdmVJbmZvOjpjcmVhdGUoaW5m
by5uYW1lLCBpbmZvLnR5cGUsIGluZm8uc2l6ZSk7CkBAIC03NDksMTUgKzc3MiwxNCBAQCBpbnQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRyaWJMb2NhCiAKIFdlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9C
VUZGRVIgJiYgdGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZF
UikgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbygpOwogICAgIH0KIAogICAgIGlmIChwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
QlVGRkVSX1NJWkUgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZFUl9VU0FHRSkg
ewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbygpOwogICAgIH0KIApAQCAtNzc3LDYgKzc5OSw3IEBAIHVuc2lnbmVkIGxvbmcgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXQKIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRhcmdldCAhPSBH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRh
Y2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UCkBAIC03ODUsOCAr
ODA4LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RgogICAgICAg
ICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUUKICAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwKICAgICAgICAgICAgICYmIHBu
YW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVf
Q1VCRV9NQVBfRkFDRSkpIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5V
TSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiAKQEAgLTgyNSw2ICs4NDcsNyBAQCBXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAKIFdlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIFdlYkdMU3RhdGVS
ZXN0b3Jlcih0aGlzLCBmYWxzZSk7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkFDVElWRV9URVhUVVJFOgpAQCAtOTkxLDE3ICsxMDE0LDE2IEBAIFdl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpWSUVXUE9SVDoKICAgICAgICAgcmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJh
bWV0ZXIocG5hbWUpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9J
TlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0p
OwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogfQogCiBXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4
dCgpICE9IHRoaXMpIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUg
ZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04p
OwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogCkBAIC0xMDIyLDE3ICsx
MDQ0LDE2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICAg
ICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsICZ2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKICAgICBk
ZWZhdWx0OgotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0g
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbygpOwogICAgIH0KIH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFt
LT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9WQUxVRSBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTik7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3Rv
cmVyKHRoaXMsIGZhbHNlKTsKQEAgLTEwNDEsOSArMTA2Miw5IEBAIFN0cmluZyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFByb2dyYW0KIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0o
ZWMpOwogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUikg
ewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbygpOwogICAgIH0KIApAQCAtMTA2NCwxNyArMTA4NSwxNiBAQCBXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSCiAgICAgICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOwogICAgIGRlZmF1
bHQ6Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKLSAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKCk7CiAgICAgfQogfQogCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBp
ZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNN
QVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOwogICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwpAQCAtMTA5
MiwxNiArMTExMiwxNiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRT
CiAgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOwog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJy
b3IKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVy
LT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwor
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAgICAgV2ViR0xT
dGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTExMTAsOCArMTEzMCw5IEBAIFN0cmluZyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckkKIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIgfHwgc2hh
ZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJS
OworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAgICAgV2Vi
R0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTExMjYsMTAgKzExNDcsMTAgQEAgU3Ry
aW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3RyaW5nKAogCiBXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RAogICAgICAgICAmJiB0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9N
QVApIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKICAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsK
QEAgLTExNDIsMTcgKzExNjMsMTYgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VAogICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsICZ2YWx1ZSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4odmFsdWUpKTsKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBGSVhNRTogcmFp
c2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIH0KIAogV2Vi
R0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB1bmlmb3JtTG9jYXRpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9n
cmFtIHx8IHVuaWZvcm1Mb2NhdGlvbi0+cHJvZ3JhbSgpICE9IHByb2dyYW0gfHwgcHJvZ3JhbS0+
Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
VkFMVUUgZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogICAgIGxvbmcg
bG9jYXRpb24gPSB1bmlmb3JtTG9jYXRpb24tPmxvY2F0aW9uKCk7CkBAIC0xMTYzLDExICsxMTgz
LDggQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VQogICAgIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5J
Rk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhY3RpdmVV
bmlmb3JtczsgaSsrKSB7CiAgICAgICAgIEFjdGl2ZUluZm8gaW5mbzsKLSAgICAgICAgaWYgKCFt
X2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaSwgaW5mbykpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiByYWlzZSBzb21lIEdMIGVycm9yCi0gICAgICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOworICAgICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShw
cm9ncmFtLCBpLCBpbmZvKSkKICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAg
ICAgICAgfQogICAgICAgICAvLyBOb3cgbmVlZCB0byBsb29rIHRoaXMgdXAgYnkgbmFtZSBhZ2Fp
biB0byBmaW5kIGl0cyBsb2NhdGlvbgogICAgICAgICBsb25nIGxvYyA9IG1fY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIGluZm8ubmFtZSk7CiAgICAgICAgIGlmIChsb2MgPT0g
bG9jYXRpb24pIHsKQEAgLTEyMzgsNiArMTI1NSw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFUKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgICAgICAvLyBDYW4ndCBoYW5kbGUgdGhpcyB0eXBlCiAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiB3aGF0IHRvIGRvIGFib3V0IHNhbXBsZXJzPworICAgICAgICAgICAgICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChiYXNlVHlwZSkgewpAQCAtMTI3NSwxMyArMTI5
MywxNSBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVCiAgICAgICAg
IH0KICAgICB9CiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyB3ZW50IHdyb25nIGlu
IG91ciB1bmZvcnR1bmF0ZWx5IGNvbXBsZXggbG9naWMgYWJvdmUKKyAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRp
b24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0
KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9y
ZXIodGhpcywgZmFsc2UpOwpAQCAtMTI5MCw2ICsxMzEwLDcgQEAgUGFzc1JlZlB0cjxXZWJHTFVu
aWZvcm1Mb2NhdGlvbj4gV2ViR0xSZQogCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBX
ZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5E
SU5HOiB7CkBAIC0xMzI0LDggKzEzNDUsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xGbG9hdEFycmF5
OjpjcmVhdGUodmFsdWUsIDQpKTsKICAgICB9CiAgICAgZGVmYXVsdDogewotICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0K
ICAgICB9CkBAIC0xNDA1LDggKzE0MjUsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
bGluZVdpZHRoKGRvCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpsaW5rUHJvZ3JhbShX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlz
KSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCkBAIC0xNDU5LDggKzE0ODAsOSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2Npc3Nvcihsb25nCiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpzaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqIHNoYWRlciwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdHJpbmcp
OwpAQCAtMTUzMCwxMyArMTU1MiwxNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4
SW1hZ2UyRCh1CiB7CiAgICAgZWMgPSAwOwogICAgIGlmICghaW1hZ2UpIHsKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZS0+Y2FjaGVkSW1hZ2Uo
KTsKLSAgICBpZiAoIWNhY2hlZEltYWdlKQorICAgIGlmICghY2FjaGVkSW1hZ2UpIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogRm9yIG5v
dyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgZmxpcFksIHByZW11bHRpcGx5
QWxwaGEpOwpAQCAtMTU0OCwxMyArMTU3MiwxNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyRCh1CiB7CiAgICAgZWMgPSAwOwogICAgIGlmICghY2FudmFzKSB7Ci0gICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7
Ci0gICAgaWYgKCFidWZmZXIpCisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUg
YW55IGVycm9ycyByZXR1cm5lZAogICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBidWZmZXItPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKQEAgLTE2MDks
MTMgKzE2MzUsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMgog
ICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAg
ZWMgPSAwOwogICAgIGlmICghaW1hZ2UpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2UtPmNhY2hlZEltYWdlKCk7Ci0gICAgaWYgKCFj
YWNoZWRJbWFnZSkKKyAgICBpZiAoIWNhY2hlZEltYWdlKSB7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGNhY2hlZEltYWdlLT5p
bWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKQEAgLTE2MjcsMTMgKzE2NTUsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnRleFN1YkltYWdlMgogewogICAgIGVjID0gMDsKICAgICBpZiAoIWNhbnZhcykg
ewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gY2FudmFz
LT5idWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAgICAvLyBGSVhNRTogRm9y
IG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBi
dWZmZXItPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKQEAgLTE2NTIsOSArMTY4
Miw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIKIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIGZsb2F0IHgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1f
Y3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BF
UkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTY2NCwxMDQgKzE2OTQsMTA0
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWYoY28KIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBXZWJHTEZsb2F0QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3Jh
bSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lO
VkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Cisg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBG
SVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYp
CisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisgICAgfQogICAgIG1fY29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2Nh
dGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAg
ICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVj
ID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJh
eSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIG1fY29udGV4dC0+dW5pZm9y
bTFmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6ZSk7CiAgICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0xaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24g
fHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbi0+bG9jYXRpb24o
KSwgeCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBXZWJHTEludEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dy
YW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9J
TlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwor
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8g
RklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2
KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAorICAgIH0KICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0
aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5
IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsK
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgbV9jb250ZXh0LT51bmlmb3Jt
MWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LCBzaXplKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTJmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQg
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAo
IWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewot
ICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHgsIHkpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgV2ViR0xGbG9hdEFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwg
bG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2Vk
IGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDIpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xNzY5LDE2ICsxNzk5LDE2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBmbG9h
dCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVu
dFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9O
IGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYp
IHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCiAgICAgbV9jb250
ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LCBzaXplIC8gMik7CiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE3ODYsMjggKzE4MTYsMjggQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoYwogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgaW50IHgsIGludCB5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFS
QU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1
cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJB
VElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnVu
aWZvcm0yaShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSk7CiAgICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBXZWJHTEludEFycmF5
KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlm
ICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYg
bm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1fY29udGV4dC0+dW5pZm9y
bTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDIpOwog
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xODE1LDE2ICsxODQ1LDE2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGMKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBV
TlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0o
KSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZB
TElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklY
TUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQor
CisgICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAg
IAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
MgogICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6
ZSAvIDIpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xODMyLDI4
ICsxODYyLDI4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGMKIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBs
b2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklY
TUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9N
SVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKKwogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4
LCB5LCB6KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5w
cm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAg
IC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlm
ICghdikKKworICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDMKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAzKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwpAQCAtMTg2MSwxNiArMTg5MSwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNmdihjCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlm
ICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYg
bm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1fY29udGV4dC0+dW5pZm9y
bTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6ZSAvIDMpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xODc4LDI4ICsxOTA4LDI4IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4
LCBpbnQgeSwgaW50IHosIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVu
dFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9O
IGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIG1fY29udGV4dC0+dW5pZm9y
bTNpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFdlYkdMSW50QXJyYXkq
IHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYg
KCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsK
LSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBu
byBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBs
ZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbV9jb250ZXh0LT51bmlmb3Jt
M2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gMyk7CiAg
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE5MDcsMTYgKzE5MzcsMTYg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYoYwogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGludCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVO
VVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgp
ICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFM
SURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhN
RTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisK
KyAgICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAg
CisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAz
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LCBzaXpl
IC8gMyk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE5MjQsMjgg
KzE5NTQsMjggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYoYwogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmKGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdywgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0
aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHgsIHksIHosIHcpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgV2ViR0xGbG9hdEFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwg
bG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2Vk
IGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDQpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTUzLDE2ICsxOTgzLDE2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBmbG9h
dCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVu
dFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9O
IGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYp
IHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250
ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LCBzaXplIC8gNCk7CiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTE5NzAsMjggKzIwMDAsMjggQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYoYwogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgaW50IHcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
ICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJv
Z3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdM
X0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7
CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAg
IG1fY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6LCB3KTsK
ICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIFdlYkdMSW50QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9
IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
T1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAg
ICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisg
ICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAg
ICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRhKCks
IHYtPmxlbmd0aCgpIC8gNCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
QEAgLTE5OTksMTYgKzIwMjksMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm00aXYoYwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCogdiwgaW50IHNpemUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8
fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8g
RklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNz
ZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2LCBzaXplIC8gNCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKQEAgLTIwMTYsMTYgKzIwNDYsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00aXYoYwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNw
b3NlLCBXZWJHTEZsb2F0QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9
IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
T1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAg
ICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisg
ICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFu
c3Bvc2UsIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyA0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwpAQCAtMjAzMywxNiArMjA2MywxNiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIGZsb2F0KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9n
cmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xf
SU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
KyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8v
IEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICgh
dikKKworICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxl
IG9mIDQKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9u
KCksIHRyYW5zcG9zZSwgdiwgc2l6ZSAvIDQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CkBAIC0yMDUwLDE2ICsyMDgwLDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cmkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgV2ViR0xGbG9hdEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVT
RURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAh
PSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElE
X09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6
IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisg
ICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAor
ICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOQog
ICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJh
bnNwb3NlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gOSk7CiAgICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKQEAgLTIwNjcsMTYgKzIwOTcsMTYgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBmbG9hdCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
ICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJv
Z3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdM
X0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7
CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAv
LyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAo
IXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBs
ZSBvZiA5CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlv
bigpLCB0cmFuc3Bvc2UsIHYsIHNpemUgLyA5KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwpAQCAtMjA4NCwxNiArMjExNCwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybU1hdHJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIFdlYkdMRmxvYXRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkg
IT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1F
OiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKwor
ICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
KyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0
cmFuc3Bvc2UsIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAxNik7CiAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKQEAgLTIxMDEsMTYgKzIxMzEsMTYgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+
cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNl
IEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAg
ICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBp
ZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsK
LSAgICAgICAgCisgICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiAxNgogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdHJhbnNwb3NlLCB2LCBzaXplIC8gMTYpOwogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CkBAIC0yMTE4LDggKzIxNDgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybU1hdHJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQ
cm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgp
ICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIApAQCAtMjEzMCw4ICsyMTYxLDkg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0oVwogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXBy
b2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgICAgICAKQEAgLTIyMjksOSArMjI2MSw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWIKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmR4LCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcg
dHlwZSwgYm9vbCBub3JtYWxpemVkLCB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9u
ZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAg
ICAgaWYgKCFtX2JvdW5kQXJyYXlCdWZmZXIgfHwgaW5keCA+PSBtX21heFZlcnRleEF0dHJpYnMp
IHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKLSAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkBAIC0yMjM5LDE1ICsyMjcxLDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNp
emUoaW5keCArIDEpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg
dGhlIGJvdW5kIGJ1ZmZlciBjYW4gaG9sZCwgZ2l2ZW4gdGhlIG9mZnNldCwgc2l6ZSwgdHlwZSBh
bmQgc3RyaWRlCi0gICAgZWMgPSAwOwogICAgIGxvbmcgYnl0ZXNQZXJFbGVtZW50ID0gc2l6ZSAq
IHNpemVJbkJ5dGVzKHR5cGUsIGVjKTsKLSAgICBpZiAoZWMgIT0gMCkKKyAgICBpZiAoYnl0ZXNQ
ZXJFbGVtZW50IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBsb25nIHZhbGlkYXRlZFN0cmlk
ZSA9IGJ5dGVzUGVyRWxlbWVudDsKICAgICBpZiAoc3RyaWRlICE9IDApIHsKICAgICAgICAgaWYg
KChsb25nKSBzdHJpZGUgPCBieXRlc1BlckVsZW1lbnQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCi0gICAgICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaAkocmV2aXNpb24gNTE5MzUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDYgQEAgY2xhc3MgV2Vi
S2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgICAg
ICB2b2lkIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChib29sIGNoYW5nZWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1fY29udGV4dC0+Y2hlY2tFcnJvcigpOwogICAgICAgICAgICAgaWYgKGNo
YW5nZWQpCiAgICAgICAgICAgICAgICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgICAgIH0K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJ
KHJldmlzaW9uIDUxOTM1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAt
Mzk3LDcgKzM5OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4g
TnVsbFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Q7IH0KICAgICAgICAgUGxhdGZvcm0zRE9iamVj
dCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBOdWxsUGxhdGZvcm0zRE9iamVjdDsg
fQogI2VuZGlmCi0gICAgICAgIHZvaWQgY2hlY2tFcnJvcigpIGNvbnN0OwogICAgICAgICB2b2lk
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgICAgICAKICAgICAgICAgLy8gSGVscGVyIHRvIHJl
dHVybiB0aGUgc2l6ZSBpbiBieXRlcyBvZiBPcGVuR0wgZGF0YSB0eXBlcwpAQCAtNjEyLDYgKzYx
MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVu
c2lnbmVkKTsKICAgICAgICAgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkKTsgICAgICAgIAog
ICAgICAgICAKKyAgICAgICAgLy8gU3ludGhlc2l6ZXMgYW4gT3BlbkdMIGVycm9yIHdoaWNoIHdp
bGwgYmUgcmV0dXJuZWQgZnJvbSBhCisgICAgICAgIC8vIGxhdGVyIGNhbGwgdG8gZ2V0RXJyb3Iu
IFRoaXMgaXMgdXNlZCB0byBlbXVsYXRlIE9wZW5HTCBFUworICAgICAgICAvLyAyLjAgYmVoYXZp
b3Igb24gdGhlIGRlc2t0b3AgYW5kIHRvIGVuZm9yY2UgYWRkaXRpb25hbCBlcnJvcgorICAgICAg
ICAvLyBjaGVja2luZyBtYW5kYXRlZCBieSBXZWJHTC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8g
UGVyIHRoZSBiZWhhdmlvciBvZiBnbEdldEVycm9yLCB0aGlzIHN0b3JlcyBhdCBtb3N0IG9uZQor
ICAgICAgICAvLyBpbnN0YW5jZSBvZiBhbnkgZ2l2ZW4gZXJyb3IsIGFuZCByZXR1cm5zIHRoZW0g
ZnJvbSBjYWxscyB0bworICAgICAgICAvLyBnZXRFcnJvciBpbiB0aGUgb3JkZXIgdGhleSB3ZXJl
IGFkZGVkLgorICAgICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJy
b3IpOworCiAgICAgcHJpdmF0ZTogICAgICAgIAogICAgICAgICBHcmFwaGljc0NvbnRleHQzRCgp
OwogCkBAIC02MjQsNiArNjM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBHTHVp
bnQgbV90ZXh0dXJlOwogICAgICAgICBHTHVpbnQgbV9mYm87CiAgICAgICAgIEdMdWludCBtX2Rl
cHRoQnVmZmVyOworICAgICAgICAvLyBFcnJvcnMgcmFpc2VkIGJ5IHN5bnRoZXNpemVHTEVycm9y
KCkuCisgICAgICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGxvbmc+IG1fc3ludGhldGljRXJyb3Jz
OworICAgICAgICBHTHVpbnQgbV9ib3VuZEZCTzsKICNlbmRpZiAgICAgICAgCiAKICAgICAgICAg
Ly8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMuCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
b250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1MTkzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
NiArOTAsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoKQogICAgICwg
bV90ZXh0dXJlKDApCiAgICAgLCBtX2ZibygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQorICAg
ICwgbV9ib3VuZEZCTygwKQogewogICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4g
YXR0cmliczsKICAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CkBAIC0x
NTEsNiArMTUyLDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKCkKICAg
ICAvLyBjcmVhdGUgYW4gRkJPCiAgICAgOjpnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAmbV9mYm8p
OwogICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7
CisgICAgbV9ib3VuZEZCTyA9IG1fZmJvOwogICAgIAogICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJz
RVhUKDEsICZtX2RlcHRoQnVmZmVyKTsKICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9S
RU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoQnVmZmVyKTsKQEAgLTE3NSwxNSArMTc3LDYgQEAgR3Jh
cGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiAgICAgfQogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjaGVja0Vycm9yKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhp
cyBuZWVkcyB0byBvbmx5IGJlIGRvbmUgaW4gdGhlIGRlYnVnIGNvbnRleHQuIEl0IHdpbGwgcHJv
YmFibHkgdGhyb3cgYW4gZXhjZXB0aW9uCi0gICAgLy8gb24gZXJyb3IgYW5kIHByaW50IHRoZSBl
cnJvciBtZXNzYWdlIHRvIHRoZSBkZWJ1ZyBjb25zb2xlCi0gICAgR0xlbnVtIGVycm9yID0gOjpn
bEdldEVycm9yKCk7Ci0gICAgaWYgKGVycm9yICE9IEdMX05PX0VSUk9SKQotICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1
cnJlbnQoKQogewogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaik7CkBAIC0y
MTMsNiArMjA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdAog
ICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKICAgICAKICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgIG1fYm91bmRG
Qk8gPSBtX2ZibzsKICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJf
RVhULCBtX2RlcHRoQnVmZmVyKTsKICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTF9S
RU5ERVJCVUZGRVJfRVhULCBHTF9ERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwogICAg
IDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIDApOwpAQCAtMjcx
LDcgKzI2NSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIodW5zaWcKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdl
dCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVyKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250
ZXh0T2JqKTsKLSAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKHRhcmdldCwgYnVmZmVyID8gKEdM
dWludCkgYnVmZmVyLT5vYmplY3QoKSA6IG1fZmJvKTsKKyAgICBHTHVpbnQgaWQgPSBidWZmZXIg
PyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogbV9mYm87CisgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlckVYVCh0YXJnZXQsIGlkKTsKKyAgICBtX2JvdW5kRkJPID0gaWQ7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdl
YkdMUmVuZGVyYnVmZmVyKiByZW5kZXJidWZmZXIpCkBAIC00NzgsMTIgKzQ3NCwyNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRl
cmJ1ZmZlciogYnVmZmVyKQogeworICAgIGlmIChtX2JvdW5kRkJPID09IG1fZmJvKSB7CisgICAg
ICAgIC8vIFRyZWF0IHRoaXMgYXMgdGhvdWdoIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIG9iamVj
dCBuYW1lIDAKKyAgICAgICAgLy8gaXMgYm91bmQgLS0gZG9uJ3QgbGV0IHVzZXIgY29kZSBkZXN0
cm95IHRoZSBzdGF0ZSBvZiB0aGUKKyAgICAgICAgLy8gaW50ZXJuYWwgZnJhbWVidWZmZXIgb2Jq
ZWN0LgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihJTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwogICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgYnVmZmVyID8gKEdMdWludCkgYnVmZmVyLT5vYmplY3QoKSA6IDApOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHRl
eHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlLCBsb25nIGxldmVsKQogeworICAgIGlmICht
X2JvdW5kRkJPID09IG1fZmJvKSB7CisgICAgICAgIC8vIFRyZWF0IHRoaXMgYXMgdGhvdWdoIHRo
ZSBkZWZhdWx0IGZyYW1lYnVmZmVyIG9iamVjdCBuYW1lIDAKKyAgICAgICAgLy8gaXMgYm91bmQg
LS0gZG9uJ3QgbGV0IHVzZXIgY29kZSBkZXN0cm95IHRoZSBzdGF0ZSBvZiB0aGUKKyAgICAgICAg
Ly8gaW50ZXJuYWwgZnJhbWVidWZmZXIgb2JqZWN0LgorICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZW5zdXJl
Q29udGV4dChtX2NvbnRleHRPYmopOwogICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCh0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSA/IChHTHVpbnQpIHRleHR1cmUt
Pm9iamVjdCgpIDogMCwgbGV2ZWwpOwogfQpAQCAtNTAyLDggKzUxMiwxMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcCh1CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIEFjdGl2ZUluZm8mIGluZm8pCiB7Ci0gICAgaWYgKCFwcm9ncmFtLT5vYmplY3QoKSkKKyAg
ICBpZiAoIXByb2dyYW0tPm9iamVjdCgpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElO
VkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGVuc3VyZUNv
bnRleHQobV9jb250ZXh0T2JqKTsKICAgICBHTGludCBtYXhBdHRyaWJ1dGVTaXplID0gMDsKICAg
ICA6OmdsR2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbS0+b2JqZWN0KCkp
LCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhBdHRyaWJ1dGVTaXplKTsKQEAg
LTUyMiw4ICs1MzQsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmli
KAogICAgIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCiB7
Ci0gICAgaWYgKCFwcm9ncmFtLT5vYmplY3QoKSkKKyAgICBpZiAoIXByb2dyYW0tPm9iamVjdCgp
KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfVkFMVUUpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKICAg
ICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9IDA7CiAgICAgOjpnbEdldFByb2dyYW1pdihzdGF0aWNf
Y2FzdDxHTHVpbnQ+KHByb2dyYW0tPm9iamVjdCgpKSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xF
TkdUSCwgJm1heFVuaWZvcm1TaXplKTsKQEAgLTU1MSw2ICs1NjUsMTMgQEAgaW50IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbgogCiB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRFcnJvcigpCiB7CisgICAgaWYgKG1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+
IDApIHsKKyAgICAgICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgbG9uZz46Oml0ZXJhdG9yIGl0ZXIg
PSBtX3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOworICAgICAgICB1bnNpZ25lZCBsb25nIGVyciA9
ICppdGVyOworICAgICAgICBtX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRlcik7CisgICAgICAg
IHJldHVybiBlcnI7CisgICAgfQorCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwog
ICAgIHJldHVybiA6OmdsR2V0RXJyb3IoKTsKIH0KQEAgLTEzNTMsNiArMTM3NCwxMSBAQCBpbnQg
R3JhcGhpY3NDb250ZXh0M0Q6OnNpemVJbkJ5dGVzKGludCB0CiAgICAgfQogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKQor
eworICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRSgzRF9DQU5WQVMpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxOTM5KQorKysg
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDA5LTEyLTEwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNdXN0IGZhYnJpY2F0ZSBH
TCBlcnJvcnMgaW5zdGVhZCBvZiB0aHJvd2luZyBleGNlcHRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjA5OQorCisgICAgICAgIENoYW5nZWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHN5bnRoZXNpemUgR0wgZXJyb3JzIHJhdGhlciB0aGFu
CisgICAgICAgIHJhaXNpbmcgSmF2YVNjcmlwdCBleGNlcHRpb25zLiBSZW1vdmVkIGludGVybmFs
IGdldEVycm9yKCkgY2FsbHMKKyAgICAgICAgYWZ0ZXIgZWFjaCBncmFwaGljcyBjYWxsLiBUaGUg
R3JhcGhpY3NDb250ZXh0M0QgbWFpbnRhaW5zIHRoZQorICAgICAgICBzeW50aGV0aWMgZXhjZXB0
aW9ucyBiZWNhdXNlIG9ubHkgaXQgaGFzIGNvbXBsZXRlIGluZm9ybWF0aW9uCisgICAgICAgIGFi
b3V0IGNlcnRhaW4gY29uZGl0aW9ucyByZXF1aXJpbmcgdGhlbSB0byBiZSByYWlzZWQuCisKKyAg
ICAgICAgQmFzZWQgb24gaWRlYSBmcm9tIElsbWFyaSBIZWlra2luZW4sIGFkZGVkIGNyZWF0ZTNE
RGVidWdDb250ZXh0KCkKKyAgICAgICAgdG8gd2ViZ2wtdGVzdC5qcyBhbmQgY2hhbmdlZCB0aGUg
V2ViR0wgbGF5b3V0IHRlc3RzIGV4cGVjdGluZworICAgICAgICBlcnJvciBjb25kaXRpb25zIHRv
IHVzZSBpdC4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiB0aGUgZXJyb3IKKyAgICAgICAgcmVw
b3J0aW5nIGluIGdldEFjdGl2ZUF0dHJpYiBhbmQgZ2V0QWN0aXZlVW5pZm9ybS4gRml4ZWQKKyAg
ICAgICAgcHJlZXhpc3RpbmcgYnVncyBpbiBiaW5kRnJhbWVidWZmZXIsIGZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyIGFuZAorICAgICAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRCwgYW5kIGFzc29jaWF0
ZWQgdGVzdCBidWdzLiBVcGRhdGVkCisgICAgICAgIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAg
ICAgICBBZGRlZCBuZXcgdGFyZ2V0ZWQgdGVzdCBjb3ZlcmluZyBhc3BlY3RzIG9mIHN5bnRoZXRp
YyBlcnJvcnMgYXMKKyAgICAgICAgd2VsbCBhcyByZWdyZXNzaW9uIHRlc3RzIGZvciB0aGUgb3Ro
ZXIgYnVncyB1bmNvdmVyZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZXJy
b3ItcmVwb3J0aW5nLmh0bWwKKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6YmVnaW5QYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3ludGhlc2l6ZUdMRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFj
dGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xF
cnJvcik6CisKIDIwMDktMTItMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4LgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDUxOTM1KQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw3ICsxMDEsNiBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwog
ICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CiAKLSAgICB2b2lkIGNoZWNrRXJyb3Io
KSBjb25zdDsKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Q7CkBAIC0x
MTcsMjEgKzExNiwzMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVuc2lnbmVk
IGxvbmcgdGV4dHVyZSk7CiAgICAgdm9pZCBiaW5kQnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyKTsKKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlcik7CiAgICAgdm9pZCBiaW5kVGV4dHVy
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgIFdlYkdMVGV4dHVy
ZSogdGV4dHVyZSk7CiAgICAgdm9pZCBidWZmZXJEYXRhSW1wbCh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwogICAg
IHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAg
IHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
dm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2Vi
R0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcik7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1
cmUyRCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNp
Z25lZCBsb25nIHRleHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlLCBsb25nIGxldmVsKTsK
KyAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2lu
dGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgaW50IHNpemUsIGludCB0eXBlLCBib29sIG5vcm1hbGl6
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1
bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgdm9pZCB2aWV3cG9ydEltcGwobG9uZyB4LCBsb25n
IHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKIAorICAgIHZv
aWQgc3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcik7CisKIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgaW50IG1fdGV4dHVyZTsKICAgICB1bnNpZ25lZCBpbnQgbV9mYm87CiAgICAg
dW5zaWduZWQgaW50IG1fZGVwdGhCdWZmZXI7CiAgICAgdW5zaWduZWQgaW50IG1fY2FjaGVkV2lk
dGgsIG1fY2FjaGVkSGVpZ2h0OwogCisgICAgdW5zaWduZWQgaW50IG1fYm91bmRGQk87CisKICNp
ZmRlZiBGTElQX0ZSQU1FQlVGRkVSX1ZFUlRJQ0FMTFkKICAgICB1bnNpZ25lZCBjaGFyKiBtX3Nj
YW5saW5lOwogICAgIHZvaWQgZmxpcFZlcnRpY2FsbHkodW5zaWduZWQgY2hhciogZnJhbWVidWZm
ZXIsCkBAIC0xNjIsNiArMTcwLDkgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFZlcnRleEF0dHJp
YlBvaW50ZXJTdGF0ZSBtX3ZlcnRleEF0dHJpYlBvaW50ZXJTdGF0ZVtOdW1UcmFja2VkUG9pbnRl
clN0YXRlc107CiAKKyAgICAvLyBFcnJvcnMgcmFpc2VkIGJ5IHN5bnRoZXNpemVHTEVycm9yKCku
CisgICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgbG9uZz4gbV9zeW50aGV0aWNFcnJvcnM7CisKICNp
ZiBQTEFURk9STShTS0lBKQogICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBD
YW52YXMncyBiYWNraW5nIHN0b3JlIGRvbid0CiAgICAgLy8gbWF0Y2ggdGhvc2UgdGhhdCB3ZSB3
ZXJlIGdpdmVuIGluIHRoZSBtb3N0IHJlY2VudCBjYWxsIHRvCkBAIC0yMjksNiArMjQwLDcgQEAg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQogICAgIDogbV90ZXh0dXJl
KDApCiAgICAgLCBtX2ZibygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQorICAgICwgbV9ib3Vu
ZEZCTygwKQogI2lmZGVmIEZMSVBfRlJBTUVCVUZGRVJfVkVSVElDQUxMWQogICAgICwgbV9zY2Fu
bGluZSgwKQogI2VuZGlmCkBAIC01MTUsMTcgKzUyNyw2IEBAIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6On5HcmFwaGljc0NvbnQKICAgICBtX2NvbnRleHRPYmogPSAwOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNoZWNrRXJyb3IoKSBjb25zdAotewotICAgIC8vIEZJ
WE1FOiBUaGlzIG5lZWRzIHRvIG9ubHkgYmUgZG9uZSBpbiB0aGUgZGVidWcgY29udGV4dC4gSXQK
LSAgICAvLyB3aWxsIG5lZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIG9uIGVycm9yLgotICAgIEdM
ZW51bSBlcnJvciA9IGdsR2V0RXJyb3IoKTsKLSAgICBpZiAoZXJyb3IgIT0gR0xfTk9fRVJST1Ip
IHsKLSAgICAgICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzREludGVybmFsOiBHTCBFcnJvciA6
ICV4XG4iLCBlcnJvcik7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotfQotCiBi
b29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CiAj
aWYgUExBVEZPUk0oV0lOX09TKQpAQCAtNTkyLDcgKzU5Myw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cmVzaGFwZSgKICAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnNFWFQoMSwg
Jm1fZmJvKTsKICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIGRlcHRoIGJ1ZmZlcgogICAgICAgICBn
bEdlblJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fZGVwdGhCdWZmZXIpOwotICAgICAgICBjaGVja0Vy
cm9yKCk7CiAgICAgfQogCiAgICAgLy8gUmVhbGxvY2F0ZSB0aGUgY29sb3IgYW5kIGRlcHRoIGJ1
ZmZlcnMKQEAgLTYwMSw2ICs2MDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnJlc2hhcGUoCiAgICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIDApOwogCiAgICAgZ2xCaW5kRnJh
bWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgbV9ib3VuZEZCTyA9
IG1fZmJvOwogICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBt
X2RlcHRoQnVmZmVyKTsKICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR0xfUkVOREVSQlVG
RkVSX0VYVCwgR0xfREVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0KTsKICAgICBnbEJpbmRS
ZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgMCk7CkBAIC02ODgsNiArNjg5LDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmVnaW5QYWkKICAgICBIVE1MQ2Fu
dmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CiAgICAgSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKICAgICB1bnNpZ25lZCBjaGFyKiBwaXhl
bHMgPSAwOworICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKKyAgICBpZiAobV9ib3Vu
ZEZCTyAhPSBtX2ZibykgeworICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7CisgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgIH0K
ICNpZiBQTEFURk9STShTS0lBKQogICAgIGNvbnN0IFNrQml0bWFwKiBjYW52YXNCaXRtYXAgPSBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Yml0bWFwKCk7CiAgICAg
Y29uc3QgU2tCaXRtYXAqIHJlYWRiYWNrQml0bWFwID0gMDsKQEAgLTczNyw2ICs3NDMsMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiZWdpblBhaQogI2Vycm9yIE11c3QgcG9y
dCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKIAorICAgIGlmIChtdXN0UmVzdG9yZUZCTykgewor
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsK
KyAgICB9CisKICNpZmRlZiBGTElQX0ZSQU1FQlVGRkVSX1ZFUlRJQ0FMTFkKICAgICBpZiAocGl4
ZWxzKQogICAgICAgICBmbGlwVmVydGljYWxseShwaXhlbHMsIG1fY2FjaGVkV2lkdGgsIG1fY2Fj
aGVkSGVpZ2h0KTsKQEAgLTc5NSw2ICs4MDUsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpiaW5kQnVmZgogICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZklEKTsKIH0KIAor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kRnJhbWVidWZmZXIodW5zaWduZWQg
bG9uZyB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBHTHVpbnQgaWQgPSBFWFRSQUNUKGZyYW1lYnVmZmVyKTsKKyAgICBpZiAo
IWlkKQorICAgICAgICBpZCA9IG1fZmJvOworICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKHRhcmdl
dCwgaWQpOworICAgIG1fYm91bmRGQk8gPSBpZDsKK30KKwogLy8gSWYgd2UgZGlkbid0IGhhdmUg
dG8gaGFjayBHTF9URVhUVVJFX1dSQVBfUiBmb3IgY3ViZSBtYXBzLAogLy8gd2UgY291bGQganVz
dCB1c2U6CiAvLyBHTF9TQU1FX01FVEhPRF8yX1gyKEJpbmRUZXh0dXJlLCBiaW5kVGV4dHVyZSwg
dW5zaWduZWQgbG9uZywgV2ViR0xUZXh0dXJlKikKQEAgLTg1OCw2ICs4NzksNDUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjplbmFibGVWZQogICAgIGdsRW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5kZXgpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRl
cmJ1ZmZlciogcmVuZGVyYnVmZmVyKQoreworICAgIGlmIChtX2JvdW5kRkJPID09IG1fZmJvKSB7
CisgICAgICAgIC8vIFRyZWF0IHRoaXMgYXMgdGhvdWdoIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVy
IG9iamVjdCBuYW1lIDAKKyAgICAgICAgLy8gaXMgYm91bmQgLS0gZG9uJ3QgbGV0IHVzZXIgY29k
ZSBkZXN0cm95IHRoZSBzdGF0ZSBvZiB0aGUKKyAgICAgICAgLy8gaW50ZXJuYWwgZnJhbWVidWZm
ZXIgb2JqZWN0LgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIEVYVFJBQ1QocmVuZGVyYnVmZmVyKSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQg
bG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBsZXZlbCkKK3sKKyAg
ICBpZiAobV9ib3VuZEZCTyA9PSBtX2ZibykgeworICAgICAgICAvLyBUcmVhdCB0aGlzIGFzIHRo
b3VnaCB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBvYmplY3QgbmFtZSAwCisgICAgICAgIC8vIGlz
IGJvdW5kIC0tIGRvbid0IGxldCB1c2VyIGNvZGUgZGVzdHJveSB0aGUgc3RhdGUgb2YgdGhlCisg
ICAgICAgIC8vIGludGVybmFsIGZyYW1lYnVmZmVyIG9iamVjdC4KKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJERVhUKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBFWFRSQUNUKHRl
eHR1cmUpLCBsZXZlbCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0RXJyb3IoKQoreworICAgIGlmIChtX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAw
KSB7CisgICAgICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyID0g
bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBlcnIgPSAq
aXRlcjsKKyAgICAgICAgbV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOworICAgICAgICBy
ZXR1cm4gZXJyOworICAgIH0KKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVy
biBnbEdldEVycm9yKCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVy
dGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwg
Ym9vbCBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCkK
IHsKQEAgLTg4OSw2ICs5NDksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2
aWV3cG9ydAogICAgIGdsVmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9u
ZyBlcnJvcikKK3sKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworfQorCiAvLyBH
cmFwaGljc0NvbnRleHQzRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiAvKiBIZWxwZXIgbWFjcm9zIGZvciB3aGVuIHdlJ3JlIGp1c3Qgd3Jh
cHBpbmcgYSBnbCBtZXRob2QsIHNvIHRoYXQKQEAgLTEwMjksMTEgKzEwOTQsNiBAQCBQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0CiAgICAgcmV0dXJuIG1faW50ZXJuYWwt
PnBsYXRmb3JtVGV4dHVyZSgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0Vy
cm9yKCkgY29uc3QKLXsKLSAgICBtX2ludGVybmFsLT5jaGVja0Vycm9yKCk7Ci19Ci0KIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC0xMTg0LDcgKzEyNDQsMTAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcih1bnNpZwogICAgIG1faW50ZXJuYWwtPmJpbmRCdWZm
ZXIodGFyZ2V0LCBidWZmZXIpOwogfQogCi1HTF9TQU1FX01FVEhPRF8yX1gyKEJpbmRGcmFtZWJ1
ZmZlckVYVCwgYmluZEZyYW1lYnVmZmVyLCB1bnNpZ25lZCBsb25nLCBXZWJHTEZyYW1lYnVmZmVy
KikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBsb25n
IHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXIpCit7CisgICAgbV9pbnRlcm5h
bC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgZnJhbWVidWZmZXIpOworfQogCiBHTF9TQU1FX01F
VEhPRF8yX1gyKEJpbmRSZW5kZXJidWZmZXJFWFQsIGJpbmRSZW5kZXJidWZmZXIsIHVuc2lnbmVk
IGxvbmcsIFdlYkdMUmVuZGVyYnVmZmVyKikKIApAQCAtMTM0Myw5ICsxNDA2LDE1IEBAIEdMX1NB
TUVfTUVUSE9EXzAoRmluaXNoLCBmaW5pc2gpCiAKIEdMX1NBTUVfTUVUSE9EXzAoRmx1c2gsIGZs
dXNoKQogCi1HTF9TQU1FX01FVEhPRF80X1g0KEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhULCBm
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZywgV2ViR0xSZW5kZXJidWZmZXIqKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVu
ZGVyYnVmZmVyKiByZW5kZXJidWZmZXIpCit7CisgICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRl
cmJ1ZmZlcik7Cit9CiAKLUdMX1NBTUVfTUVUSE9EXzVfWDQoRnJhbWVidWZmZXJUZXh0dXJlMkRF
WFQsIGZyYW1lYnVmZmVyVGV4dHVyZTJELCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTFRleHR1cmUqLCBsb25nKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4
dHVyZSwgbG9uZyBsZXZlbCkKK3sKKyAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUy
RCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOworfQogCiBH
TF9TQU1FX01FVEhPRF8xKEZyb250RmFjZSwgZnJvbnRGYWNlLCB1bnNpZ25lZCBsb25nKQogCkBA
IC0xMzYxLDE1ICsxNDMwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlw
bWFwKHUKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKIHsK
LSAgICBpZiAoIXByb2dyYW0pCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKElOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
ICAgIEdMaW50IG1heE5hbWVMZW5ndGggPSAtMTsKICAgICBnbEdldFByb2dyYW1pdihFWFRSQUNU
KHByb2dyYW0pLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhOYW1lTGVuZ3Ro
KTsKICAgICBpZiAobWF4TmFtZUxlbmd0aCA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBHTGNoYXIqIG5hbWUgPSAwOwotICAgIGlmICghdHJ5RmFzdE1hbGxvYyhtYXhOYW1lTGVuZ3Ro
ICogc2l6ZW9mKEdMY2hhcikpLmdldFZhbHVlKG5hbWUpKQorICAgIGlmICghdHJ5RmFzdE1hbGxv
YyhtYXhOYW1lTGVuZ3RoICogc2l6ZW9mKEdMY2hhcikpLmdldFZhbHVlKG5hbWUpKSB7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKE9VVF9PRl9NRU1PUlkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogICAgIEdMc2l6ZWkgbGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gLTE7
CiAgICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAtMTM4OCwxNSArMTQ2MSwxOSBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGlu
ZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQogewotICAgIGlmICghcHJvZ3JhbSkKKyAgICBpZiAoIXBy
b2dyYW0pIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgR0xpbnQgbWF4TmFtZUxlbmd0aCA9IC0xOwog
ICAgIGdsR2V0UHJvZ3JhbWl2KEVYVFJBQ1QocHJvZ3JhbSksIEdMX0FDVElWRV9VTklGT1JNX01B
WF9MRU5HVEgsICZtYXhOYW1lTGVuZ3RoKTsKICAgICBpZiAobWF4TmFtZUxlbmd0aCA8IDApCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBHTGNoYXIqIG5hbWUgPSAwOwotICAgIGlmICghdHJ5
RmFzdE1hbGxvYyhtYXhOYW1lTGVuZ3RoICogc2l6ZW9mKEdMY2hhcikpLmdldFZhbHVlKG5hbWUp
KQorICAgIGlmICghdHJ5RmFzdE1hbGxvYyhtYXhOYW1lTGVuZ3RoICogc2l6ZW9mKEdMY2hhcikp
LmdldFZhbHVlKG5hbWUpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKE9VVF9PRl9NRU1P
UlkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIEdMc2l6ZWkgbGVuZ3RoID0g
MDsKICAgICBHTGludCBzaXplID0gLTE7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAtMTQzNiw4
ICsxNTEzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldAogCiB1
bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCiB7Ci0gICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGdsR2V0RXJyb3IoKTsKKyAgICByZXR1cm4gbV9p
bnRlcm5hbC0+Z2V0RXJyb3IoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Rmxv
YXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKQEAgLTE3MDksNiArMTc4NSwx
MSBAQCBHTF9TQU1FX01FVEhPRF8zKFN0ZW5jaWxPcCwgc3RlbmNpbE9wLCB1CiAKIEdMX1NBTUVf
TUVUSE9EXzQoU3RlbmNpbE9wU2VwYXJhdGUsIHN0ZW5jaWxPcFNlcGFyYXRlLCB1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQogCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9y
KQoreworICAgIG1faW50ZXJuYWwtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKK30KKwogaW50
IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDUxOTM5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDktMTItMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11
c3QgZmFicmljYXRlIEdMIGVycm9ycyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDk5CisKKyAg
ICAgICAgQ2hhbmdlZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gc3ludGhlc2l6ZSBHTCBlcnJv
cnMgcmF0aGVyIHRoYW4KKyAgICAgICAgcmFpc2luZyBKYXZhU2NyaXB0IGV4Y2VwdGlvbnMuIFJl
bW92ZWQgaW50ZXJuYWwgZ2V0RXJyb3IoKSBjYWxscworICAgICAgICBhZnRlciBlYWNoIGdyYXBo
aWNzIGNhbGwuIFRoZSBHcmFwaGljc0NvbnRleHQzRCBtYWludGFpbnMgdGhlCisgICAgICAgIHN5
bnRoZXRpYyBleGNlcHRpb25zIGJlY2F1c2Ugb25seSBpdCBoYXMgY29tcGxldGUgaW5mb3JtYXRp
b24KKyAgICAgICAgYWJvdXQgY2VydGFpbiBjb25kaXRpb25zIHJlcXVpcmluZyB0aGVtIHRvIGJl
IHJhaXNlZC4KKworICAgICAgICBCYXNlZCBvbiBpZGVhIGZyb20gSWxtYXJpIEhlaWtraW5lbiwg
YWRkZWQgY3JlYXRlM0REZWJ1Z0NvbnRleHQoKQorICAgICAgICB0byB3ZWJnbC10ZXN0LmpzIGFu
ZCBjaGFuZ2VkIHRoZSBXZWJHTCBsYXlvdXQgdGVzdHMgZXhwZWN0aW5nCisgICAgICAgIGVycm9y
IGNvbmRpdGlvbnMgdG8gdXNlIGl0LiBGaXhlZCBwcmVleGlzdGluZyBidWdzIGluIHRoZSBlcnJv
cgorICAgICAgICByZXBvcnRpbmcgaW4gZ2V0QWN0aXZlQXR0cmliIGFuZCBnZXRBY3RpdmVVbmlm
b3JtLiBGaXhlZAorICAgICAgICBwcmVleGlzdGluZyBidWdzIGluIGJpbmRGcmFtZWJ1ZmZlciwg
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgYW5kCisgICAgICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJE
LCBhbmQgYXNzb2NpYXRlZCB0ZXN0IGJ1Z3MuIFVwZGF0ZWQKKyAgICAgICAgZXhwZWN0ZWQudHh0
IGZpbGVzLgorCisgICAgICAgIEFkZGVkIG5ldyB0YXJnZXRlZCB0ZXN0IGNvdmVyaW5nIGFzcGVj
dHMgb2Ygc3ludGhldGljIGVycm9ycyBhcworICAgICAgICB3ZWxsIGFzIHJlZ3Jlc3Npb24gdGVz
dHMgZm9yIHRoZSBvdGhlciBidWdzIHVuY292ZXJlZC4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmcuaHRtbAorCisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRPZkJvdW5kcy5odG1sOgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGluZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGluZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nZXRBY3RpdmVUZXN0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1v
YmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9pbnZhbGlkUGFzc2VkUGFyYW1zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFyYW1zLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qczoKKyAgICAgICAgKGNyZWF0ZTNE
RGVidWdDb250ZXh0LndyYXAuZ2V0RXJyb3IpOgorICAgICAgICAoY3JlYXRlM0REZWJ1Z0NvbnRl
eHQpOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9lcnJvci1yZXBv
cnRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9nZXRBY3RpdmVUZXN0LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10
ZXN0cy9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLmpzOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanM6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL3VuaWZvcm0tbG9jYXRpb24u
anM6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3Rl
ZC50eHQ6CisKIDIwMDktMTItMDkgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0FycmF5c091dE9mQm91
bmRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE5MzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0zLDI0ICszLDI0IEBAIFRlc3Qgb2YgZHJhd0FycmF5cyB3aXRoIG91dC1vZi1ib3Vu
ZHMgcGEKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogVGVzdCBlbXB0eSBidWZmZXIKLVBB
U1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBj
b250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBj
b250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwMDAwMDAwMDAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDEx
LgotUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIC0xKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgot
UEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNv
bnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgLTEpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRl
eHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQu
ZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQu
VFJJQU5HTEVTLCAwLCAxMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJh
d0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAx
MDAwMDAwMDAwMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5
cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkgdGhy
ZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5k
cmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MiBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5U
UklBTkdMRVMsIC0xLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3QXJy
YXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0
LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAxKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MiBpbiBkcmF3QXJyYXlzLgogCiBUZXN0IGJ1ZmZlciB3aXRoIDMgZmxvYXQgdmVj
dG9ycwogUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDMpIGlz
IHVuZGVmaW5lZAotUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDMs
IDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAw
MDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAw
MDAwMDAwMDAwMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERP
TSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xF
UywgMCwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBF
eGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
LTEsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNl
cHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwg
LTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24g
MTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMywgMikgdGhy
ZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5k
cmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRl
eHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAwLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5
cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMCkgdGhy
ZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5k
cmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQu
VFJJQU5HTEVTLCAtMSwgMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0Fy
cmF5cy4KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3Vu
ZHMuaHRtbAkocmV2aXNpb24gNTE5MzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEs
NyBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUZXN0IG9mIGRyYXdBcnJheXMgd2l0aCBvdXQt
b2YtYm91bmRzIHBhcmFtZXRlcnMiKTsKIAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQo
KTsKK3ZhciBjb250ZXh0ID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKIHZhciBwcm9ncmFtID0g
bG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKIAogY29udGV4dC51c2VQcm9ncmFtKHByb2dy
YW0pOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1lbnRzc091
dE9mQm91bmRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA1MTkzNSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NP
dXRPZkJvdW5kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMjIgKzMsMjIgQEAg
VGVzdCBvZiBkcmF3RWxlbWVudHMgd2l0aCBvdXQtb2YtYm91bmRzIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCiBUZXN0IGVtcHR5IGluZGV4IGJ1ZmZlcgotUEFTUyBjb250ZXh0LmRyYXdF
bGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDEx
LgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNv
bnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NU
QVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29u
dGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDAp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24g
MTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250
ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRl
eHQuVFJJQU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURf
QllURSwgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMs
IDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5W
QUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5k
cmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZ
VEUsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BB
U1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAw
LCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgy
IGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0
aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkgdGhy
ZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0
LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRF
LCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgogCiBU
ZXN0IGJ1ZmZlciB3aXRoIDMgYnl0ZSBpbmRleGVzCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGlzIHVuZGVm
aW5lZAotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCAyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RB
VEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
Y29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAwLCBj
b250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9T
VEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBj
b250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdO
RURfQllURSwgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9N
IEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdM
RVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDIpIHRo
cmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVE
X0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4K
K1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAw
MDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5U
UklBTkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMo
Y29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIHRocmV3IGV4
Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3
RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEp
IHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KIAogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbAko
cmV2aXNpb24gNTE5MzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxl
bWVudHNzT3V0T2ZCb3VuZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAog
PHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUZXN0IG9mIGRyYXdFbGVtZW50cyB3aXRoIG91dC1vZi1i
b3VuZHMgcGFyYW1ldGVycyIpOwogCi12YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOwor
dmFyIGNvbnRleHQgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwogdmFyIHByb2dyYW0gPSBsb2Fk
U3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwogCiBjb250ZXh0LnVzZVByb2dyYW0ocHJvZ3JhbSk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Vy
cm9yLXJlcG9ydGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMyIEBACitUZXN0cyBnZW5lcmF0aW9uIG9mIHN5bnRoZXRpYyBhbmQgcmVh
bCBHTCBlcnJvcnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNvbnRleHQu
Z2V0RXJyb3IoKSBpcyAwCitUZXN0aW5nIGdldEFjdGl2ZUF0dHJpYgorUEFTUyBjb250ZXh0Lmdl
dEFjdGl2ZUF0dHJpYihudWxsLCAyKSBpcyBudWxsCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBp
cyBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBj
b250ZXh0Lk5PX0VSUk9SCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDIp
IGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxV
RQorUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5OT19FUlJPUgorVGVzdGluZyBn
ZXRBY3RpdmVVbmlmb3JtCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShudWxsLCAwKSBp
cyBudWxsCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfT1BFUkFU
SU9OCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGNv
bnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCA1MCkgaXMgbnVsbAorUEFTUyBjb250ZXh0
LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCitQQVNTIGNvbnRleHQuZ2V0RXJy
b3IoKSBpcyBjb250ZXh0Lk5PX0VSUk9SCitUZXN0aW5nIGF0dGVtcHRzIHRvIG1hbmlwdWxhdGUg
dGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKK1BBU1MgY29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29u
dGV4dC5GUkFNRUJVRkZFUiwgMCkgaXMgdW5kZWZpbmVkLgorUEFTUyBjb250ZXh0LmdldEVycm9y
KCkgaXMgY29udGV4dC5OT19FUlJPUgorUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4
dC5SRU5ERVJCVUZGRVIsIDApIGlzIHVuZGVmaW5lZC4KK1BBU1MgY29udGV4dC5nZXRFcnJvcigp
IGlzIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04KK1BBU1MgY29udGV4dC5nZXRFcnJvcigpIGlz
IGNvbnRleHQuTk9fRVJST1IKK1BBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250
ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0LlRFWFRV
UkVfMkQsIDAsIDApIGlzIHVuZGVmaW5lZC4KK1BBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNv
bnRleHQuSU5WQUxJRF9PUEVSQVRJT04KK1BBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRl
eHQuTk9fRVJST1IKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRp
bmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJv
ci1yZXBvcnRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2Vycm9yLXJlcG9ydGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvZXJyb3ItcmVwb3J0aW5nLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0QWN0aXZlVGVz
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZ2V0QWN0aXZlVGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxOTM1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0QWN0aXZlVGVzdC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTYsMTEgKzYsMTEgQEAgUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAog
UEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkubmFtZSBpcyAndV9tb2Rl
bFZpZXdQcm9qTWF0cml4JwogUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
MCkudHlwZSBpcyBjb250ZXh0LkZMT0FUX01BVDQKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0sIDApLnNpemUgaXMgMQotUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4
Y2VwdGlvbiAxLgotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZB
TFVFCi1QQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAtMSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgotUEFTUyBjb250
ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCi1QQVNTIGNvbnRleHQuZ2V0
QWN0aXZlVW5pZm9ybShudWxsLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVf
RVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9n
cmFtLCAxKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVVbmlmb3Jt
LgorUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAorUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldEFj
dGl2ZVVuaWZvcm0uCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGNvbnRleHQu
Z2V0QWN0aXZlVW5pZm9ybShudWxsLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBp
biBnZXRBY3RpdmVVbmlmb3JtLgogUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAogUEFTUyBj
b250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKS5uYW1lIGlzICdhX25vcm1hbCcKIFBB
U1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkudHlwZSBpcyBjb250ZXh0LkZM
T0FUX1ZFQzMKQEAgLTE4LDIwICsxOCwyMCBAQCBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmli
KHByb2dyYW0sIDApCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDEpLm5h
bWUgaXMgJ2FfdmVydGV4JwogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAx
KS50eXBlIGlzIGNvbnRleHQuRkxPQVRfVkVDNAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCAxKS5zaXplIGlzIDEKLVBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJv
Z3JhbSwgMikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxLgotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVF
Ci1QQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIC0xKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCi1QQVNTIGNvbnRleHQu
Z2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKLVBBU1MgY29udGV4dC5nZXRBY3Rp
dmVBdHRyaWIobnVsbCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAy
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVBdHRyaWIuCitQQVNT
IGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHBy
b2dyYW0sIC0xKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVBdHRy
aWIuCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZl
QXR0cmliKG51bGwsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldEFjdGl2
ZUF0dHJpYi4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFBBU1MgY29udGV4dDIuZ2V0
RXJyb3IoKSBpcyAwCi1QQVNTIGNvbnRleHQyLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQ
QVNTIGNvbnRleHQyLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MiBpbiBnZXRBY3RpdmVBdHRyaWIuCiBQQVNTIGNvbnRleHQyLmdldEVycm9y
KCkgaXMgMAotUEFTUyBjb250ZXh0Mi5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK1BBU1Mg
Y29udGV4dDIuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MiBpbiBnZXRBY3RpdmVVbmlmb3JtLgogUEFTUyBjb250ZXh0Mi5nZXRFcnJvcigp
IGlzIDAKLVBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgY29u
dGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJv
ciAxMjgxIGluIGdldEFjdGl2ZVVuaWZvcm0uCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAw
Ci1QQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgY29udGV4dC5n
ZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEg
aW4gZ2V0QWN0aXZlQXR0cmliLgogUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29u
dGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE5MzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVo
YXZpb3VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwyOCArMiwyOCBAQCBUZXN0
cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aCBvYmplY3RzIGZyCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAotUEFTUyBjb250ZXh0QS5jb21waWxlU2hhZGVyKHNoYWRlckIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHRBLmxpbmtQcm9ncmFtKHByb2dyYW1CKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5hdHRhY2hT
aGFkZXIocHJvZ3JhbUEsIHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmF0dGFjaFNoYWRlcihw
cm9ncmFtQiwgc2hhZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuYXR0YWNoU2hhZGVyKHByb2dyYW1C
LCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUEsIHNoYWRl
ckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIGNvbnRleHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
LVBBU1MgY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1CLCBzaGFkZXJCKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBj
b250ZXh0QS5zaGFkZXJTb3VyY2Uoc2hhZGVyQiwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmJp
bmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtQiwgMCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmJp
bmRGcmFtZWJ1ZmZlcihjb250ZXh0QS5GUkFNRUJVRkZFUiwgZnJhbWVCdWZmZXJCKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFT
UyBjb250ZXh0QS5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVuZGVy
QnVmZmVyQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8y
RCwgdGV4dHVyZUIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNv
bnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0QS5S
RU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVy
VGV4dHVyZTJEKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5U
MCwgY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdl
dFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQ
RV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFByb2dy
YW1JbmZvTG9nKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJQYXJhbWV0
ZXIoc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjog
RE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXJC
LCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyQikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1Mg
Y29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0
QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUIsICd1X21vZGVsVmlld1Byb2pNYXRyaXgnKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgorUEFTUyBjb250ZXh0QS5jb21waWxlU2hhZGVyKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGNvbXBpbGVTaGFkZXIuCitQQVNTIGNvbnRleHRBLmxpbmtQcm9ncmFt
KHByb2dyYW1CKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBsaW5rUHJvZ3JhbS4K
K1BBU1MgY29udGV4dEEuYXR0YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNl
cHRpb24gR0wgZXJyb3IgMTI4MSBpbiBhdHRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHRBLmF0dGFj
aFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEg
aW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0QS5hdHRhY2hTaGFkZXIocHJvZ3JhbUIsIHNo
YWRlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGF0dGFjaFNoYWRlci4KK1BB
U1MgY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MiBpbiBkZXRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHRBLmRldGFjaFNo
YWRlcihwcm9ncmFtQiwgc2hhZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4g
ZGV0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRl
ckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRldGFjaFNoYWRlci4KK1BBU1Mg
Y29udGV4dEEuc2hhZGVyU291cmNlKHNoYWRlckIsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MiBpbiBzaGFkZXJTb3VyY2UuCitQQVNTIGNvbnRleHRBLmJpbmRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtQiwgMCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGlu
IGJpbmRBdHRyaWJMb2NhdGlvbi4KK1BBU1MgY29udGV4dEEuYmluZEZyYW1lYnVmZmVyKGNvbnRl
eHRBLkZSQU1FQlVGRkVSLCBmcmFtZUJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgyIGluIGJpbmRGcmFtZWJ1ZmZlci4KK1BBU1MgY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihj
b250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBl
cnJvciAxMjgyIGluIGJpbmRSZW5kZXJidWZmZXIuCitQQVNTIGNvbnRleHRBLmJpbmRUZXh0dXJl
KGNvbnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MiBpbiBiaW5kVGV4dHVyZS4KK1BBU1MgY29udGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoY29udGV4dEEuRlJBTUVCVUZGRVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRl
eHRBLlJFTkRFUkJVRkZFUiwgcmVuZGVyQnVmZmVyQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODIgaW4gZnJhbWVidWZmZXJSZW5kZXJidWZmZXIuCitQQVNTIGNvbnRleHRBLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hN
RU5UMCwgY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIsIDApIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGZyYW1lYnVmZmVyVGV4dHVyZTJELgorUEFTUyBjb250ZXh0QS5nZXRQ
cm9ncmFtUGFyYW1ldGVyKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MiBpbiBnZXRQcm9ncmFtUGFyYW1ldGVyLgorUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtSW5mb0xv
Zyhwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0UHJvZ3Jh
bUluZm9Mb2cuCitQQVNTIGNvbnRleHRBLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJCLCAwKSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRTaGFkZXJQYXJhbWV0ZXIuCitQQVNT
IGNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gZ2V0U2hhZGVySW5mb0xvZy4KK1BBU1MgY29udGV4dEEuZ2V0U2hhZGVy
U291cmNlKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFNoYWRl
clNvdXJjZS4KK1BBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtQiwgbG9jYXRpb25BKSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRVbmlmb3JtLgorUEFTUyBjb250ZXh0
QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUIsICd1X21vZGVsVmlld1Byb2pNYXRyaXgnKSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRVbmlmb3JtTG9jYXRpb24uCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWRQYXNz
ZWRQYXJhbXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTkzNSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC01LDggKzUsOCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBCiBUZXN0IHNoYWRlcnMKIFBBU1Mgc2hhZGVyID0gY29udGV4dC5jcmVhdGVTaGFkZXIo
Y29udGV4dC5GUkFHTUVOVF9TSEFERVIpIGlzIHNoYWRlcgogUEFTUyBzaGFkZXIgPSBjb250ZXh0
LmNyZWF0ZVNoYWRlcihjb250ZXh0LlZFUlRFWF9TSEFERVIpIGlzIHNoYWRlcgotUEFTUyBjb250
ZXh0LmNyZWF0ZVNoYWRlcigwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTIuCi1QQVNTIGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQuVFJJQU5H
TEVTKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIu
CitQQVNTIGNvbnRleHQuY3JlYXRlU2hhZGVyKDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgwIGluIGNyZWF0ZVNoYWRlci4KK1BBU1MgY29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5U
UklBTkdMRVMpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgwIGluIGNyZWF0ZVNoYWRlci4K
IAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFyYW1zLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZFBhc3NlZFBhcmFtcy5odG1sCShy
ZXZpc2lvbiA1MTkzNSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWRQ
YXNzZWRQYXJhbXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogPHNjcmlw
dD4KIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBpbnZhbGlkIHBhc3NlZCBwYXJhbWV0ZXJzIik7CiAK
LXZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgY29udGV4dCA9IGNyZWF0ZTNE
RGVidWdDb250ZXh0KCk7CiAKIGRlYnVnKCJUZXN0IHNoYWRlcnMiKTsKIHZhciBzaGFkZXI7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxOTM1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwyOSArMiwyOSBAQCBUZXN0cyBjYWxsaW5nIFdl
YkdMIEFQSXMgd2l0aG91dCBwcm92aWRpCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAot
UEFTUyBjb250ZXh0LmNvbXBpbGVTaGFkZXIoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmxpbmtQcm9ncmFt
KCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlv
biAxNy4KLVBBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmF0dGFj
aFNoYWRlcihwcm9ncmFtLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVy
KHVuZGVmaW5lZCwgc2hhZGVyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcihwcm9ncmFt
LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZGV0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hh
ZGVyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBjb250ZXh0LnNoYWRlclNvdXJjZSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuc2hh
ZGVyU291cmNlKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuYmluZEF0dHJpYkxv
Y2F0aW9uKHVuZGVmaW5lZCwgMCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuY29tcGlsZVNoYWRl
cigpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGNvbXBpbGVTaGFkZXIuCitQQVNT
IGNvbnRleHQubGlua1Byb2dyYW0oKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBs
aW5rUHJvZ3JhbS4KK1BBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIoKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MSBpbiBhdHRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVy
KHByb2dyYW0sIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0
YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250
ZXh0LmRldGFjaFNoYWRlcihwcm9ncmFtLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBl
cnJvciAxMjgyIGluIGRldGFjaFNoYWRlci4KK1BBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIodW5k
ZWZpbmVkLCBzaGFkZXIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRldGFjaFNo
YWRlci4KK1BBU1MgY29udGV4dC5zaGFkZXJTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MiBpbiBzaGFkZXJTb3VyY2UuCitQQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKHVuZGVm
aW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIHNoYWRlclNvdXJj
ZS4KK1BBU1MgY29udGV4dC5iaW5kQXR0cmliTG9jYXRpb24odW5kZWZpbmVkLCAwLCAnZm9vJykg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gYmluZEF0dHJpYkxvY2F0aW9uLgogUEFT
UyBjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIDApIGlzIHVuZGVmaW5l
ZC4KIFBBU1MgY29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkg
aXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5SRU5E
RVJCVUZGRVIsIDApIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5iaW5kVGV4dHVyZShjb250
ZXh0LlRFWFRVUkVfMkQsIDApIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1F
TlQsIGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRleHQu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xPUl9B
VFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSBpcyB1bmRlZmluZWQuCi1QQVNT
IGNvbnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRlcih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRl
eHQuZ2V0UHJvZ3JhbUluZm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNo
YWRlclBhcmFtZXRlcih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0U2hhZGVySW5m
b0xvZyh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVm
aW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1Mg
Y29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24odW5kZWZpbmVkLCAnZm9vJykgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY29u
dGV4dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0
LkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MiBpbiBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlci4KK1BBU1MgY29udGV4
dC5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9S
X0FUVEFDSE1FTlQwLCBjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDApIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGZyYW1lYnVmZmVyVGV4dHVyZTJELgorUEFTUyBjb250ZXh0LmdldFBy
b2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MiBpbiBnZXRQcm9ncmFtUGFyYW1ldGVyLgorUEFTUyBjb250ZXh0LmdldFByb2dyYW1JbmZvTG9n
KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0UHJvZ3Jh
bUluZm9Mb2cuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0U2hhZGVyUGFyYW1ldGVyLgorUEFT
UyBjb250ZXh0LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MiBpbiBnZXRTaGFkZXJJbmZvTG9nLgorUEFTUyBjb250ZXh0LmdldFNoYWRl
clNvdXJjZSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFNo
YWRlclNvdXJjZS4KK1BBU1MgY29udGV4dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0VW5pZm9ybS4KK1BBU1MgY29udGV4dC5nZXRV
bmlmb3JtTG9jYXRpb24odW5kZWZpbmVkLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODIgaW4gZ2V0VW5pZm9ybUxvY2F0aW9uLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNTE5MzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0
aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxMCArMywxMCBAQCBUZXN0cyBj
YWxsaW5nIFdlYkdMIEFQSXMgd2l0aCBvYmplY3RzIGZyCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCiAKIFBBU1MgY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtQTIpIGlzIHVuZGVmaW5lZC4K
LVBBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CitQQVNTIGNvbnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25BLCBmYWxzZSwgbWF0KSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiB1bmlmb3JtTWF0cml4NGZ2LgogUEFTUyBj
b250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMSkgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0
QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgaXMgdW5kZWZpbmVkLgot
UEFTUyBjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KDAsIGZhbHNlLCBtYXQpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNv
bnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYoMCwgZmFsc2UsIG1hdCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gdW5pZm9ybU1hdHJpeDRmdi4KIFBBU1MgY29udGV4dEEudXNlUHJvZ3Jh
bShwcm9ncmFtUykgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0QS51bmlmb3JtMWkobG9jYXRp
b25TeCwgMykgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0QS51bmlmb3JtMWYobG9jYXRpb25B
cnJheTAsIDQuMCkgaXMgdW5kZWZpbmVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHJldmlzaW9uIDUxOTM1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3Qu
anMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDM3IEBAIGZ1bmN0aW9uIGNyZWF0ZTNEQ29u
dGV4dCgpIHsKICAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoIm1vei13ZWJnbCIpOwogfQog
CitmdW5jdGlvbiBjcmVhdGVHTEVycm9yV3JhcHBlcihjb250ZXh0LCBmbmFtZSkgeworICAgIHJl
dHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHJ2ID0gY29udGV4dFtmbmFtZV0uYXBwbHko
Y29udGV4dCwgYXJndW1lbnRzKTsKKyAgICAgICAgdmFyIGVyciA9IGNvbnRleHQuZ2V0RXJyb3Io
KTsKKyAgICAgICAgaWYgKGVyciAhPSAwKQorICAgICAgICAgICAgdGhyb3cgIkdMIGVycm9yICIg
KyBlcnIgKyAiIGluICIgKyBmbmFtZTsKKyAgICAgICAgcmV0dXJuIHJ2OworICAgIH07Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZTNERGVidWdDb250ZXh0KCkgeworICAgIHZhciBjb250ZXh0ID0gY3Jl
YXRlM0RDb250ZXh0KCk7CisgICAgLy8gVGhhbmtzIHRvIElsbWFyaSBIZWlra2luZW4gZm9yIHRo
ZSBpZGVhIG9uIGhvdyB0byBpbXBsZW1lbnQgdGhpcyBzbyBlbGVnYW50bHkuCisgICAgdmFyIHdy
YXAgPSB7fTsKKyAgICBmb3IgKHZhciBpIGluIGNvbnRleHQpIHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGlmICh0eXBlb2YgY29udGV4dFtpXSA9PSAnZnVuY3Rpb24nKSB7CisgICAgICAg
ICAgICAgICAgd3JhcFtpXSA9IGNyZWF0ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQsIGkpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3cmFwW2ldID0gY29udGV4dFtpXTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gY29u
c29sZS5sb2coImNyZWF0ZTNERGVidWdDb250ZXh0OiBFcnJvciBhY2Nlc3NpbmcgIiArIGkpOwor
ICAgICAgICB9CisgICAgfQorICAgIHdyYXAuZ2V0RXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuZ2V0RXJyb3IoKTsKKyAgICB9OworICAgIHJldHVybiB3cmFwOwor
fQorCiBmdW5jdGlvbiBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpIHsKICAgICB2YXIgcHJv
Z3JhbSA9IGNvbnRleHQuY3JlYXRlUHJvZ3JhbSgpOwogICAgIGNvbnRleHQuYXR0YWNoU2hhZGVy
KHByb2dyYW0sIGxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihjb250ZXh0KSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZXJyb3ItcmVwb3J0aW5nLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9lcnJvci1yZXBvcnRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZXJyb3ItcmVwb3J0aW5nLmpzCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUzIEBACitkZXNjcmlwdGlvbigiVGVzdHMgZ2VuZXJhdGlvbiBvZiBzeW50aGV0
aWMgYW5kIHJlYWwgR0wgZXJyb3JzIik7CisKK3ZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0
KCk7Cit2YXIgcHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CisKKy8vIE90
aGVyIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IGxpa2UgZ2V0QWN0aXZlVGVzdCBhbmQKKy8vIGlu
Y29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIgYWxyZWFkeSB0ZXN0IHRoZSByYWlzaW5n
IG9mIG1hbnkKKy8vIHN5bnRoZXRpYyBHTCBlcnJvcnMuIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGUg
cmFpc2luZyBvZiBjZXJ0YWluCisvLyBrbm93biByZWFsIEdMIGVycm9ycywgYW5kIGNvbnRhaW5z
IGEgZmV3IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MKKy8vIGRpc2NvdmVyZWQgaW4gdGhlIHN5
bnRoZXRpYyBlcnJvciBnZW5lcmF0aW9uIGFuZCBpbiB0aGUgV2ViR0wKKy8vIGltcGxlbWVudGF0
aW9uIGl0c2VsZi4KKworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICIwIik7CisKK2Rl
YnVnKCJUZXN0aW5nIGdldEFjdGl2ZUF0dHJpYiIpOworLy8gU3ludGhldGljIE9wZW5HTCBlcnJv
cgorc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihudWxsLCAyKSIpOworc2hv
dWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OIik7
CisvLyBFcnJvciBzdGF0ZSBzaG91bGQgYmUgY2xlYXIgYnkgdGhpcyBwb2ludAorc2hvdWxkQmUo
ImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5PX0VSUk9SIik7CisvLyBSZWFsIE9wZW5H
TCBlcnJvcgorc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAy
KSIpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFM
VUUiKTsKKy8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50CitzaG91
bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKKworZGVidWco
IlRlc3RpbmcgZ2V0QWN0aXZlVW5pZm9ybSIpOworLy8gU3ludGhldGljIE9wZW5HTCBlcnJvcgor
c2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0obnVsbCwgMCkiKTsKK3Nob3Vs
ZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX09QRVJBVElPTiIpOwor
Ly8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQKK3Nob3VsZEJlKCJj
b250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOworLy8gUmVhbCBPcGVuR0wg
ZXJyb3IKK3Nob3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDUw
KSIpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFM
VUUiKTsKKy8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50CitzaG91
bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKKworZGVidWco
IlRlc3RpbmcgYXR0ZW1wdHMgdG8gbWFuaXB1bGF0ZSB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciIp
Oworc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQuRlJB
TUVCVUZGRVIsIDApIik7CitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQu
Tk9fRVJST1IiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29u
dGV4dC5SRU5ERVJCVUZGRVIsIDApIik7CisvLyBTeW50aGV0aWMgT3BlbkdMIGVycm9yCitzaG91
bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04iKTsK
Ky8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50CitzaG91bGRCZSgi
Y29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKK3Nob3VsZEJlVW5kZWZp
bmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNv
bnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkiKTsKKy8v
IFN5bnRoZXRpYyBPcGVuR0wgZXJyb3IKK3Nob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAi
Y29udGV4dC5JTlZBTElEX09QRVJBVElPTiIpOworLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNs
ZWFyIGJ5IHRoaXMgcG9pbnQKK3Nob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4
dC5OT19FUlJPUiIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dldEFjdGl2ZVRlc3QuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dl
dEFjdGl2ZVRlc3QuanMJKHJldmlzaW9uIDUxOTM1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dldEFjdGl2ZVRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiBkZXNjcmlwdGlvbigiVGVzdCBvZiBnZXRBY3RpdmVBdHRyaWIgYW5kIGdl
dEFjdGl2ZVVuaWZvcm0iKTsKIAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKLXZh
ciBjb250ZXh0MiA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRERl
YnVnQ29udGV4dCgpOwordmFyIGNvbnRleHQyID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKIHZh
ciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKIHZhciBwcm9ncmFtMiA9
IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dDIpOwogCkBAIC0xMCw5ICsxMCw5IEBAIHNob3Vs
ZEJlKCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3IKIHNob3VsZEJlKCJjb250ZXh0Lmdl
dEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkudHlwZSIsICJjb250ZXh0LkZMT0FUX01BVDQiKTsK
IHNob3VsZEJlKCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkuc2l6ZSIsICIx
Iik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDEpIik7
Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIp
Oworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICIwIik7CiBzaG91bGRUaHJvdygiY29u
dGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIC0xKSIpOwotc2hvdWxkQmUoImNvbnRleHQu
Z2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKK3Nob3VsZEJlKCJjb250ZXh0
LmdldEVycm9yKCkiLCAiMCIpOwogc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9y
bShudWxsLCAwKSIpOwogc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICIwIik7CiAKQEAg
LTIzLDkgKzIzLDkgQEAgc2hvdWxkQmUoImNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYQog
c2hvdWxkQmUoImNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDEpLnR5cGUiLCAiY29u
dGV4dC5GTE9BVF9WRUM0Iik7CiBzaG91bGRCZSgiY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJv
Z3JhbSwgMSkuc2l6ZSIsICIxIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRBY3RpdmVBdHRy
aWIocHJvZ3JhbSwgMikiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4
dC5JTlZBTElEX1ZBTFVFIik7CitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgIjAiKTsK
IHNob3VsZFRocm93KCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAtMSkiKTsKLXNo
b3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7Citz
aG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgIjAiKTsKIHNob3VsZFRocm93KCJjb250ZXh0
LmdldEFjdGl2ZUF0dHJpYihudWxsLCAwKSIpOwogc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3Io
KSIsICIwIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10
ZXN0cy9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9pbmNvcnJlY3QtY29u
dGV4dC1vYmplY3QtYmVoYXZpb3VyLmpzCShyZXZpc2lvbiA1MTkzNSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9pbmNvcnJlY3QtY29udGV4dC1vYmplY3Qt
YmVoYXZpb3VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZGVzY3JpcHRpb24o
IlRlc3RzIGNhbGxpbmcgV2ViR0wgQVBJcyB3aXRoIG9iamVjdHMgZnJvbSBvdGhlciBjb250ZXh0
cyIpOwogCi12YXIgY29udGV4dEEgPSBjcmVhdGUzRENvbnRleHQoKTsKLXZhciBjb250ZXh0QiA9
IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHRBID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQo
KTsKK3ZhciBjb250ZXh0QiA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbUEg
PSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHRBKTsKIHZhciBwcm9ncmFtQiA9IGxvYWRTdGFu
ZGFyZFByb2dyYW0oY29udGV4dEIpOwogdmFyIHNoYWRlckEgPSBsb2FkU3RhbmRhcmRWZXJ0ZXhT
aGFkZXIoY29udGV4dEEpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2Ny
aXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3Vy
LmpzCShyZXZpc2lvbiA1MTkzNSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Nj
cmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiBkZXNjcmlwdGlvbigiVGVzdHMgY2FsbGluZyBXZWJHTCBBUElzIHdpdGhvdXQg
cHJvdmlkaW5nIHRoZSBuZWNlc3Nhcnkgb2JqZWN0cyIpOwogCi12YXIgY29udGV4dCA9IGNyZWF0
ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwogdmFy
IHByb2dyYW0gPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwogdmFyIHNoYWRlciA9IGxv
YWRTdGFuZGFyZFZlcnRleFNoYWRlcihjb250ZXh0KTsKIApAQCAtMTgsOCArMTgsMTIgQEAgc2hv
dWxkQmVVbmRlZmluZWQoImNvbnRleHQuYmluZEJ1ZmZlcihjbwogc2hvdWxkQmVVbmRlZmluZWQo
ImNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIDApIik7CiBzaG91
bGRCZVVuZGVmaW5lZCgiY29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHQuUkVOREVSQlVG
RkVSLCAwKSIpOwogc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuYmluZFRleHR1cmUoY29udGV4
dC5URVhUVVJFXzJELCAwKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hN
RU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjb250
ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09M
T1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkiKTsKKy8vIFRoZSBmb2xs
b3dpbmcgdHdvIHRocm93IGV4Y2VwdGlvbnMgYmVjYXVzZSBjb25jZXB0dWFsbHkgbm8KKy8vIGZy
YW1lYnVmZmVyIGlzIGJvdW5kIGF0IHRoaXMgcG9pbnQuIEluIHJlYWxpdHkgdGhlIFdlYkdMCisv
LyBpbXBsZW1lbnRhdGlvbidzIGludGVybmFsIGZyYW1lYnVmZmVyIGlzIGJvdW5kLCBidXQgd2Ug
Y2FuJ3QgYWxsb3cKKy8vIHVzZXIgY29kZSB0byBtYW5pcHVsYXRlIGl0Lgorc2hvdWxkVGhyb3co
ImNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29u
dGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKK3Nob3Vs
ZFRocm93KCJjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIs
IGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkiKTsK
IHNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSIp
Owogc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0UHJvZ3JhbUluZm9Mb2codW5kZWZpbmVkLCAwKSIp
Owogc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCki
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlm
b3JtLWxvY2F0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpzCShyZXZpc2lvbiA1MTkzNSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0
aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZGVzY3JpcHRpb24oIlRlc3Rz
IGNhbGxpbmcgV2ViR0wgQVBJcyB3aXRoIG9iamVjdHMgZnJvbSBvdGhlciBjb250ZXh0cyIpOwog
Ci12YXIgY29udGV4dEEgPSBjcmVhdGUzRENvbnRleHQoKTsKLXZhciBjb250ZXh0QiA9IGNyZWF0
ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHRBID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKK3Zh
ciBjb250ZXh0QiA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbUExID0gbG9h
ZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0QSk7CiB2YXIgcHJvZ3JhbUEyID0gbG9hZFN0YW5kYXJk
UHJvZ3JhbShjb250ZXh0QSk7CiB2YXIgcHJvZ3JhbUIgPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNv
bnRleHRCKTsK
</data>
<flag name="review"
          id="26495"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44637</attachid>
            <date>2009-12-10 14:01:49 -0800</date>
            <delta_ts>2009-12-10 15:55:35 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>gl-errors.patch</filename>
            <type>text/plain</type>
            <size>105367</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTk2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMDktMTItMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENo
YW5nZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHN5bnRoZXNpemUgR0wgZXJyb3JzIHJhdGhl
ciB0aGFuCisgICAgICAgIHJhaXNpbmcgSmF2YVNjcmlwdCBleGNlcHRpb25zLiBSZW1vdmVkIGlu
dGVybmFsIGdldEVycm9yKCkgY2FsbHMKKyAgICAgICAgYWZ0ZXIgZWFjaCBncmFwaGljcyBjYWxs
LiBUaGUgR3JhcGhpY3NDb250ZXh0M0QgbWFpbnRhaW5zIHRoZQorICAgICAgICBzeW50aGV0aWMg
ZXhjZXB0aW9ucyBiZWNhdXNlIG9ubHkgaXQgaGFzIGNvbXBsZXRlIGluZm9ybWF0aW9uCisgICAg
ICAgIGFib3V0IGNlcnRhaW4gY29uZGl0aW9ucyByZXF1aXJpbmcgdGhlbSB0byBiZSByYWlzZWQu
CisKKyAgICAgICAgQmFzZWQgb24gaWRlYSBmcm9tIElsbWFyaSBIZWlra2luZW4sIGFkZGVkIGNy
ZWF0ZTNERGVidWdDb250ZXh0KCkKKyAgICAgICAgdG8gd2ViZ2wtdGVzdC5qcyBhbmQgY2hhbmdl
ZCB0aGUgV2ViR0wgbGF5b3V0IHRlc3RzIGV4cGVjdGluZworICAgICAgICBlcnJvciBjb25kaXRp
b25zIHRvIHVzZSBpdC4gVXBkYXRlZCBleHBlY3RlZC50eHQgZmlsZXMsIHdoaWNoIG5vdworICAg
ICAgICBpbXBsaWNpdGx5IHRlc3QgdGhlIE9wZW5HTCBlcnJvciBhcyBpdCBpcyBwYXJ0IG9mIHRo
ZSBleGNlcHRpb24ncworICAgICAgICBtZXNzYWdlLgorCisgICAgICAgIEFkZGVkIG5ldyB0YXJn
ZXRlZCB0ZXN0IGNvdmVyaW5nIGFzcGVjdHMgb2Ygc3ludGhldGljIGVycm9ycyBhcworICAgICAg
ICB3ZWxsIGFzIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgdW5jb3ZlcmVkIGR1cmluZyBpdHMg
ZGV2ZWxvcG1lbnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVw
b3J0aW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpemVJbkJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmF0dGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRBdHRy
aWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJp
bmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5k
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlQXR0cmli
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRl
ckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRT
aGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0VmVydGV4QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpzaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0y
aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2YpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dXNlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYlBvaW50ZXIp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcik6CisKIDIwMDkt
MTItMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNTE5NjEpCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSwxOCArMTQxLDE5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKGlu
dCAKIAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6ZUluQnl0ZXMoaW50IHR5cGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaW50IHJlc3Vs
dCA9IG1fY29udGV4dC0+c2l6ZUluQnl0ZXModHlwZSk7CiAgICAgaWYgKHJlc3VsdCA8PSAwKQot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSh1bnNp
Z25lZCBsb25nIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJB
TShlYyk7CiAgICAgaWYgKCh0ZXh0dXJlIC0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSA+
IHNpemVvZihtX3RleHR1cmVVbml0cykgLyBzaXplb2YoVGV4dHVyZVVuaXRTdGF0ZSkpIHsKLSAg
ICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
bV9hY3RpdmVUZXh0dXJlVW5pdCA9IHRleHR1cmUgLSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RTA7CkBAIC0xNjIsOCArMTYzLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2
ZVRleHR1cgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXR0YWNoU2hhZGVyKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+
Y29udGV4dCgpICE9IHRoaXMgfHwgIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlz
KSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0s
IHNoYWRlcik7CkBAIC0xNzIsOCArMTc0LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmF0dGFjaFNoYWRlcgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEF0dHJpYkxv
Y2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3Jh
bSwgaW5kZXgsIG5hbWUpOwpAQCAtMTgyLDggKzE4NSw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kQXR0cmliTG8KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRC
dWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGJ1ZmZlciAmJiBi
dWZmZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTky
LDggKzE5Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKHUKICAg
ICBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSKQogICAgICAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyID0gYnVmZmVyOwogICAgIGVs
c2UgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjA0LDEzICsyMDcsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJp
bmRCdWZmZXIodQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVy
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGJ1ZmZlciAmJiBi
dWZmZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
dGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgewotICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2ZyYW1lYnVm
ZmVyQmluZGluZyA9IGJ1ZmZlcjsKQEAgLTIyMCwxMyArMjIzLDEzIEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWYKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJpbmRSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVy
KiByZW5kZXJCdWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CiAgICAgaWYgKHJlbmRlckJ1ZmZlciAmJiByZW5kZXJCdWZmZXItPmNvbnRleHQoKSAhPSB0
aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIpIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFM
SURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nID0gcmVuZGVy
QnVmZmVyOwpAQCAtMjM3LDggKzI0MCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kUmVuZGVyYnUKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKHRleHR1cmUgJiYgdGV4dHVy
ZS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
KyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0YXJn
ZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpCkBAIC0yNDYsOCArMjUwLDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKAogICAgIGVsc2UgaWYgKHRh
cmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUCkKICAgICAgICAgbV90
ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcg
PSB0ZXh0dXJlOwogICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwg
dGV4dHVyZSk7CkBAIC0yODcsMTggKzI5MCwxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YmxlbmRGdW5jU2VwCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRh
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAodGFyZ2V0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAmJiBtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZl
ci0+YXNzb2NpYXRlQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUpKSB7Ci0gICAgICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJB
WV9CVUZGRVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9ib3VuZEFy
cmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsKLSAgICAgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMDgsMTggKzMxMiwx
OSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1CiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJH
TEFycmF5KiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYmIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsK
ICAgICAgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJE
YXRhKHRhcmdldCwgZGF0YSkpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiAmJiBtX2JvdW5k
QXJyYXlCdWZmZXIpIHsKICAgICAgICAgaWYgKCFtX2JvdW5kQXJyYXlCdWZmZXItPmFzc29jaWF0
ZUJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhKSkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMyOSwxOCArMzM0LDE5IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKHUKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJHTEFy
cmF5KiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVS
ICYmIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsKICAgICAgICAgaWYgKCFtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBk
YXRhKSkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHRhcmdldCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRBcnJheUJ1ZmZlcikg
ewogICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyU3ViRGF0
YSh0YXJnZXQsIG9mZnNldCwgZGF0YSkpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQsOCArNDAwLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmNvbG9yTWFzayhibwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29t
cGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgp
ICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+Y29tcGlsZVNo
YWRlcihzaGFkZXIpOwpAQCAtNDUxLDggKzQ1OCw5IEBAIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJi
dWZmZXI+IFdlYkdMUmVuZGUKIAogUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVTaGFkZXIodW5zaWduZWQgbG9uZyB0eXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICh0eXBlICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpWRVJURVhfU0hBREVSICYmIHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QUdNRU5UX1NIQURFUikgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTUzNSw4ICs1NDMsOSBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVwdGhSYW5nZShkCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpkZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRl
ciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcyB8fCAhc2hhZGVy
IHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IG1fY29udGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CkBAIC01NTIsOCArNTYx
LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRpc2FibGUodW5zaQogCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxv
bmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAg
ICAgaWYgKGluZGV4ID49IG1fbWF4VmVydGV4QXR0cmlicykgewotICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKQEAgLTYzMSw5ICs2NDEsMTAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlk
YXRlUmVuZAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5cyh1bnNpZ25l
ZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBy
ZW5kZXJpbmcgc3RhdGUKICAgICBpZiAoZmlyc3QgPCAwIHx8IGNvdW50IDwgMCB8fCAhdmFsaWRh
dGVSZW5kZXJpbmdTdGF0ZShmaXJzdCArIGNvdW50KSkgewotICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCkBAIC02NDMsMTEgKzY1NCwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJh
d0FycmF5cyh1CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHModW5z
aWduZWQgbG9uZyBtb2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUs
IGxvbmcgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlCiAgICAgbG9u
ZyBudW1FbGVtZW50czsKICAgICAKICAgICBpZiAob2Zmc2V0IDwgMCB8fCAhdmFsaWRhdGVJbmRl
eEFycmF5KGNvdW50LCB0eXBlLCBvZmZzZXQsIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVSZW5k
ZXJpbmdTdGF0ZShudW1FbGVtZW50cykpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAt
NjYzLDggKzY3NSw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUodW5zaWcK
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVu
c2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJB
TShlYyk7CiAgICAgaWYgKGluZGV4ID49IG1fbWF4VmVydGV4QXR0cmlicykgewotICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKQEAgLTY5Miw4ICs3MDUsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Zmx1c2goKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwg
dW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBidWZm
ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0gICAgICAgCiAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQs
IGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKQEAgLTcwMiw4ICs3MTYs
OSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJSCiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclRleHR1cmUyRCh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHRleHRhcmdldCwg
V2ViR0xUZXh0dXJlKiB0ZXh0dXJlLCBsb25nIGxldmVsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICh0ZXh0dXJlICYmIHRleHR1cmUtPmNvbnRl
eHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBs
ZXZlbCk7CkBAIC03MjQsOSArNzM5LDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZW5lcmF0ZU1pcG0KIAogUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQg
bG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsK
ICAgICBBY3RpdmVJbmZvIGluZm87Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRl
eHQoKSAhPSB0aGlzIHx8ICFtX2NvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRl
eCwgaW5mbykpIHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICBpZiAoIXByb2dy
YW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFtX2NvbnRleHQtPmdldEFjdGl2ZUF0
dHJpYihwcm9ncmFtLCBpbmRleCwgaW5mbykpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIHJldHVybiBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwg
aW5mby5zaXplKTsKQEAgLTczNCw5ICs3NTMsMTMgQEAgUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUlu
Zm8+IFdlYkdMUmVuZGVyaQogCiBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5z
aWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGVjKTsKICAgICBBY3RpdmVJbmZvIGluZm87Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0t
PmNvbnRleHQoKSAhPSB0aGlzIHx8ICFtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bSwgaW5kZXgsIGluZm8pKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CisgICAgaWYg
KCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7CisgICAgICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghbV9jb250ZXh0LT5nZXRB
Y3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBpbmZvKSkgewogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgcmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwgaW5m
by50eXBlLCBpbmZvLnNpemUpOwpAQCAtNzQ5LDE1ICs3NzIsMTQgQEAgaW50IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0QXR0cmliTG9jYQogCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIHRh
cmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpIHsKLSAgICAg
ICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsK
ICAgICB9CiAKICAgICBpZiAocG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZFUl9TSVpF
ICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpCVUZGRVJfVVNBR0UpIHsKLSAgICAgICAg
Ly8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAg
ICB9CiAKQEAgLTc3Nyw2ICs3OTksNyBAQCB1bnNpZ25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0CiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSCiAgICAgICAgIHx8IChhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMAogICAgICAgICAgICAgJiYgYXR0YWNobWVudCAhPSBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVApAQCAtNzg1LDggKzgwOCw3IEBAIFdl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEYKICAgICAgICAgICAgICYmIHBu
YW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9O
QU1FCiAgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMCiAgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZB
Q0UpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKLSAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKCk7CiAgICAgfQogCkBAIC04MjUsNiArODQ3LDcgQEAgV2ViR0xHZXRJbmZvIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RgogCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhp
cywgZmFsc2UpOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpBQ1RJVkVfVEVYVFVSRToKQEAgLTk5MSwxNyArMTAxNCwxNiBAQCBXZWJHTEdldEluZm8g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1l
KTsKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVN
IGVycm9yCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIH0KIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlz
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCi0gICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIApAQCAtMTAyMiwxNyArMTA0NCwxNiBAQCBX
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgZGVmYXVsdDoKLSAg
ICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKICAgICB9CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1J
bmZvTG9nKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgp
ICE9IHRoaXMpIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJy
b3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwog
ICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBm
YWxzZSk7CkBAIC0xMDQxLDkgKzEwNjIsOSBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRQcm9ncmFtCiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBp
ZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIpIHsKLSAgICAgICAg
Ly8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAg
ICB9CiAKQEAgLTEwNjQsMTcgKzEwODUsMTYgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0UgogICAgICAgICBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKICAgICBkZWZhdWx0OgotICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwog
ICAgIH0KIH0KIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
UGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIg
fHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9WQUxVRSBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwor
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9
CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTEwOTIsMTYgKzExMTIs
MTYgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UwogICAgICAgICBt
X2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKICAgICBkZWZhdWx0
OgotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCi0gICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbygpOwogICAgIH0KIH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hh
ZGVySW5mb0xvZyhXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgp
ICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogICAgIFdlYkdMU3RhdGVSZXN0b3Jl
cih0aGlzLCBmYWxzZSk7CkBAIC0xMTEwLDggKzExMzAsOSBAQCBTdHJpbmcgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRTaGFkZXJJCiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4
dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9P
UEVSQVRJT04pOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogICAgIFdlYkdMU3RhdGVSZXN0
b3Jlcih0aGlzLCBmYWxzZSk7CkBAIC0xMTI2LDEwICsxMTQ3LDEwIEBAIFN0cmluZyBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFN0cmluZygKIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQKICAgICAgICAg
JiYgdGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKLSAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CiAgICAgfQogICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CkBAIC0xMTQyLDE3
ICsxMTYzLDE2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFQKICAg
ICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFM
SURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAg
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiB9CiAKIFdlYkdMR2V0SW5mbyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogdW5pZm9ybUxvY2F0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCB1bmlm
b3JtTG9jYXRpb24tPnByb2dyYW0oKSAhPSBwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAh
PSB0aGlzKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9y
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KICAgICBsb25nIGxvY2F0aW9uID0g
dW5pZm9ybUxvY2F0aW9uLT5sb2NhdGlvbigpOwpAQCAtMTE2MywxMSArMTE4Myw4IEBAIFdlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKICAgICBtX2NvbnRleHQtPmdldFBy
b2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0
aXZlVW5pZm9ybXMpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWN0aXZlVW5pZm9ybXM7IGkr
KykgewogICAgICAgICBBY3RpdmVJbmZvIGluZm87Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGksIGluZm8pKSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogcmFpc2Ugc29tZSBHTCBlcnJvcgotICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaSwg
aW5mbykpCiAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7Ci0gICAgICAgIH0KICAg
ICAgICAgLy8gTm93IG5lZWQgdG8gbG9vayB0aGlzIHVwIGJ5IG5hbWUgYWdhaW4gdG8gZmluZCBp
dHMgbG9jYXRpb24KICAgICAgICAgbG9uZyBsb2MgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCBpbmZvLm5hbWUpOwogICAgICAgICBpZiAobG9jID09IGxvY2F0aW9uKSB7
CkBAIC0xMjM4LDYgKzEyNTUsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRVCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgLy8g
Q2FuJ3QgaGFuZGxlIHRoaXMgdHlwZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hh
dCB0byBkbyBhYm91dCBzYW1wbGVycz8KKyAgICAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHN3aXRjaCAoYmFzZVR5cGUpIHsKQEAgLTEyNzUsMTMgKzEyOTMsMTUgQEAgV2Vi
R0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VQogICAgICAgICB9CiAgICAgfQog
ICAgIC8vIElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbiBvdXIgdW5mb3J0
dW5hdGVseSBjb21wbGV4IGxvZ2ljIGFib3ZlCisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbygpOwogfQogCiBQYXNzUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMp
IHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZh
bHNlKTsKQEAgLTEyOTAsNiArMTMxMCw3IEBAIFBhc3NSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRp
b24+IFdlYkdMUmUKIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVy
dGV4QXR0cmliKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgV2ViR0xTdGF0ZVJl
c3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzogewpAQCAt
MTMyNCw4ICsxMzQ1LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VgogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHZh
bHVlLCA0KSk7CiAgICAgfQogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNl
IEdMX0lOVkFMSURfRU5VTSBlcnJvcgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiAgICAgfQpAQCAt
MTQwNSw4ICsxNDI1LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmxpbmVXaWR0aChk
bwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgICAgIApAQCAtMTQ1OSw4ICsxNDgwLDkgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnNjaXNzb3IobG9uZwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICgh
c2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHNoYWRlciwgc3RyaW5nKTsKQEAgLTE1MzAs
MTMgKzE1NTIsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodQog
ewogICAgIGVjID0gMDsKICAgICBpZiAoIWltYWdlKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNN
QVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2UtPmNhY2hlZEltYWdlKCk7Ci0gICAgaWYg
KCFjYWNoZWRJbWFnZSkKKyAgICBpZiAoIWNhY2hlZEltYWdlKSB7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3Jl
IGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgY2FjaGVkSW1hZ2UtPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKQEAg
LTE1NDgsMTMgKzE1NzIsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdl
MkQodQogewogICAgIGVjID0gMDsKICAgICBpZiAoIWNhbnZhcykgewotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBjYW52YXMtPmJ1ZmZlcigpOwotICAgIGlmICgh
YnVmZmVyKQorICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMg
cmV0dXJuZWQKICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgYnVmZmVy
LT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7CkBAIC0xNjA5LDEzICsxNjM1LDE1
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIKICAgICAvLyBGSVhN
RTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0gMDsKICAg
ICBpZiAoIWltYWdlKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpOwotICAgIGlmICghY2FjaGVkSW1hZ2Up
CisgICAgaWYgKCFjYWNoZWRJbWFnZSkgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJu
OworICAgIH0KIAogICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgZmxp
cFksIHByZW11bHRpcGx5QWxwaGEpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CkBAIC0xNjI3LDEzICsxNjU1LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTIKIHsKICAgICBlYyA9IDA7CiAgICAgaWYgKCFjYW52YXMpIHsKLSAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7
Ci0gICAgaWYgKCFidWZmZXIpCisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdu
b3JlIGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgYnVmZmVyLT5pbWFn
ZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7CkBAIC0xNjUyLDkgKzE2ODIsOSBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBmbG9hdCB4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9n
cmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJv
cgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2NjQsMTA0ICsxNjk0LDEwNCBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmKGNvCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
V2ViR0xGbG9hdEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFS
QU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1
cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJB
VElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5l
ZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYg
KCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0K
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmRhdGEo
KSwgdi0+bGVuZ3RoKCkpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9j
YXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGlu
Ci0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHYsIHNpemUpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWkoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9u
LT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFp
c2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENI
X0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAor
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24tPmxvY2F0aW9uKCksIHgpOwogICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgV2ViR0xJbnRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9j
dXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVS
QVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBu
ZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlm
ICghdikgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRh
KCksIHYtPmxlbmd0aCgpKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2Nh
dGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6
IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNN
QVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4K
LSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgCisgICAgfQogICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdiwgc2l6ZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8
fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8g
RklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB4LCB5KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5w
cm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAg
IC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlm
ICghdikKKworICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDIKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAyKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwpAQCAtMTc2OSwxNiArMTc5OSwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTJmdihjCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlm
ICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYg
bm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1fY29udGV4dC0+dW5pZm9y
bTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6ZSAvIDIpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xNzg2LDI4ICsxODE2LDI4IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0yaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4
LCBpbnQgeSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAg
ICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3Jh
bSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IK
LSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9j
YXRpb24tPmxvY2F0aW9uKCksIHgsIHkpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgV2ViR0xJbnRBcnJheSogdiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9u
IHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBh
c3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAyKTsKICAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTgxNSwxNiArMTg0NSwxNiBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihjCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
aW50KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJy
ZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJ
T04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJ
T04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVk
IHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICgh
dikgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAg
ICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYsIHNpemUgLyAyKTsKICAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTgzMiwyOCArMTg2MiwyOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihjCiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2YoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnBy
b2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBH
TF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJS
OworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSwgeik7CiAg
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBXZWJHTEZsb2F0QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9
IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
T1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAg
ICBpZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisg
ICAgfQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAg
ICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5kYXRhKCks
IHYtPmxlbmd0aCgpIC8gMyk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
QEAgLTE4NjEsMTYgKzE4OTEsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0zZnYoYwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9u
IHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBh
c3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHYsIHNpemUgLyAzKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwpAQCAtMTg3OCwyOCArMTkwOCwyOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNmdihjCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
M2koY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGlu
dCB6LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlm
ICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaShsb2NhdGlv
bi0+bG9jYXRpb24oKSwgeCwgeSwgeik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBXZWJHTEludEFycmF5KiB2LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24g
fHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFz
c2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDMpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTA3LDE2ICsxOTM3LDE2IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBp
bnQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0o
ZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJl
bnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElP
TiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQg
dG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2
KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6ZSAvIDMpOwogICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTI0LDI4ICsxOTU0LDI4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGMKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2Nh
dGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6
IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNN
QVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5
LCB6LCB3KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5w
cm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAg
IC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlm
ICghdikKKworICAgIGlmICghdikgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKyAgICB9CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDQKICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyA0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwpAQCAtMTk1MywxNiArMTk4MywxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTRmdihjCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlm
ICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYg
bm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9y
bTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdiwgc2l6ZSAvIDQpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTcwLDI4ICsyMDAwLDI4IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4
LCBpbnQgeSwgaW50IHosIGludCB3LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURf
UEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBt
X2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09Q
RVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBtX2NvbnRleHQt
PnVuaWZvcm00aShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSwgeiwgdyk7CiAgICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBXZWJH
TEludEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQ
cm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBl
cnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7
CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAv
LyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4
dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgo
KSAvIDQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xOTk5LDE2
ICsyMDI5LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KGMKIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24t
PnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlz
ZSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hf
RVJSOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0g
ICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAg
aWYgKCF2KQorCisgICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47
Ci0gICAgICAgIAorICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdiwgc2l6ZSAvIDQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CkBA
IC0yMDE2LDE2ICsyMDQ2LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGl2KGMKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xG
bG9hdEFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQ
cm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09QRVJBVElPTiBl
cnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAgaWYgKCF2KSB7
CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIH0KICAgICAv
LyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LT5k
YXRhKCksIHYtPmxlbmd0aCgpIC8gNCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKQEAgLTIwMzMsMTYgKzIwNjMsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBmbG9hdCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1f
Y3VycmVudFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BF
UkFUSU9OIGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2Ug
bmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBp
ZiAoIXYpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAg
fQogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bv
c2UsIHYsIHNpemUgLyA0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpA
QCAtMjA1MCwxNiArMjA4MCwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIFdlYkdM
RmxvYXRBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGVj
KTsKICAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50
UHJvZ3JhbSkgewotICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9PUEVSQVRJT04g
ZXJyb3IKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04p
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRv
IHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICghdikKKworICAgIGlmICghdikg
eworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICB9CiAgICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDkKICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi0+
ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDkpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CkBAIC0yMDY3LDE2ICsyMDk3LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtTWF0cmkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURf
UEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAhPSBt
X2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX09Q
RVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6IHdl
IG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisgICAg
aWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAg
IH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOQogICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNw
b3NlLCB2LCBzaXplIC8gOSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
QEAgLTIwODQsMTYgKzIxMTQsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBXZWJH
TEZsb2F0QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CiAgICAgaWYgKCFsb2NhdGlvbiB8fCBsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVu
dFByb2dyYW0pIHsKLSAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfT1BFUkFUSU9O
IGVycm9yCi0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXYpCisKKyAgICBpZiAoIXYp
IHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgfQogICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gMTYpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CkBAIC0yMTAxLDE2ICsyMTMxLDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cmkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVT
RURfUEFSQU0oZWMpOwogICAgIGlmICghbG9jYXRpb24gfHwgbG9jYXRpb24tPnByb2dyYW0oKSAh
PSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElE
X09QRVJBVElPTiBlcnJvcgotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgLy8gRklYTUU6
IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2KQorCisg
ICAgaWYgKCF2KSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAor
ICAgIH0KICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYK
ICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRy
YW5zcG9zZSwgdiwgc2l6ZSAvIDE2KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwpAQCAtMjExOCw4ICsyMTQ4LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dXNlUHJvZ3JhbShXZWJH
TFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJB
TShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgICAgICAKQEAgLTIxMzAsOCArMjE2MSw5IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQcm9ncmFtKFcKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHBy
b2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAg
CkBAIC0yMjI5LDkgKzIyNjEsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVy
KHVuc2lnbmVkIGxvbmcgaW5keCwgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIHR5cGUsIGJvb2wg
bm9ybWFsaXplZCwgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghbV9i
b3VuZEFycmF5QnVmZmVyIHx8IGluZHggPj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCi0gICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjIzOSwxNSArMjI3MSwxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliCiAgICAgICAgIG1fdmVydGV4QXR0cmliU3RhdGUucmVzaXplKGluZHggKyAx
KTsKIAogICAgIC8vIERldGVybWluZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoZSBib3VuZCBi
dWZmZXIgY2FuIGhvbGQsIGdpdmVuIHRoZSBvZmZzZXQsIHNpemUsIHR5cGUgYW5kIHN0cmlkZQot
ICAgIGVjID0gMDsKICAgICBsb25nIGJ5dGVzUGVyRWxlbWVudCA9IHNpemUgKiBzaXplSW5CeXRl
cyh0eXBlLCBlYyk7Ci0gICAgaWYgKGVjICE9IDApCisgICAgaWYgKGJ5dGVzUGVyRWxlbWVudCA8
PSAwKQogICAgICAgICByZXR1cm47CiAgICAgbG9uZyB2YWxpZGF0ZWRTdHJpZGUgPSBieXRlc1Bl
ckVsZW1lbnQ7CiAgICAgaWYgKHN0cmlkZSAhPSAwKSB7CiAgICAgICAgIGlmICgobG9uZykgc3Ry
aWRlIDwgYnl0ZXNQZXJFbGVtZW50KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xf
SU5WQUxJRF9WQUxVRSBlcnJvcgotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCklu
ZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlz
aW9uIDUxOTYxKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw2IEBAIGNsYXNzIFdlYktpdENTU01hdHJp
eDsKICAgICAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICAgICAgdm9pZCBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoYm9vbCBjaGFuZ2VkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmNoZWNrRXJyb3IoKTsKICAgICAgICAgICAgIGlmIChjaGFuZ2VkKQogICAg
ICAgICAgICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgICAgICB9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1
MTk2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKIAorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM5Nyw3ICszOTgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIE51bGxQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEOyB9CiAgICAgICAgIFBsYXRmb3JtM0RPYmplY3QgcGxhdGZvcm1U
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gTnVsbFBsYXRmb3JtM0RPYmplY3Q7IH0KICNlbmRpZgot
ICAgICAgICB2b2lkIGNoZWNrRXJyb3IoKSBjb25zdDsKICAgICAgICAgdm9pZCBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEhlbHBlciB0byByZXR1cm4gdGhlIHNp
emUgaW4gYnl0ZXMgb2YgT3BlbkdMIGRhdGEgdHlwZXMKQEAgLTYxMiw2ICs2MTIsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRlbGV0ZVNoYWRlcih1bnNpZ25lZCk7CiAg
ICAgICAgIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCk7ICAgICAgICAKICAgICAgICAgCisg
ICAgICAgIC8vIFN5bnRoZXNpemVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJlIHJldHVy
bmVkIGZyb20gYQorICAgICAgICAvLyBsYXRlciBjYWxsIHRvIGdldEVycm9yLiBUaGlzIGlzIHVz
ZWQgdG8gZW11bGF0ZSBPcGVuR0wgRVMKKyAgICAgICAgLy8gMi4wIGJlaGF2aW9yIG9uIHRoZSBk
ZXNrdG9wIGFuZCB0byBlbmZvcmNlIGFkZGl0aW9uYWwgZXJyb3IKKyAgICAgICAgLy8gY2hlY2tp
bmcgbWFuZGF0ZWQgYnkgV2ViR0wuCisgICAgICAgIC8vCisgICAgICAgIC8vIFBlciB0aGUgYmVo
YXZpb3Igb2YgZ2xHZXRFcnJvciwgdGhpcyBzdG9yZXMgYXQgbW9zdCBvbmUKKyAgICAgICAgLy8g
aW5zdGFuY2Ugb2YgYW55IGdpdmVuIGVycm9yLCBhbmQgcmV0dXJucyB0aGVtIGZyb20gY2FsbHMg
dG8KKyAgICAgICAgLy8gZ2V0RXJyb3IgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZC4KKyAg
ICAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKKwogICAg
IHByaXZhdGU6ICAgICAgICAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QoKTsKIApAQCAtNjI0
LDYgKzYzNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgR0x1aW50IG1fdGV4dHVy
ZTsKICAgICAgICAgR0x1aW50IG1fZmJvOwogICAgICAgICBHTHVpbnQgbV9kZXB0aEJ1ZmZlcjsK
KyAgICAgICAgLy8gRXJyb3JzIHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgorICAgICAg
ICBMaXN0SGFzaFNldDx1bnNpZ25lZCBsb25nPiBtX3N5bnRoZXRpY0Vycm9yczsKICNlbmRpZiAg
ICAgICAgCiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9u
IGFsbCBwbGF0Zm9ybXMuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1MTk2MSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc1LDE1ICsxNzUsNiBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBo
aWNzQ29udGV4dDNEKCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNr
RXJyb3IoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIG9ubHkgYmUgZG9u
ZSBpbiB0aGUgZGVidWcgY29udGV4dC4gSXQgd2lsbCBwcm9iYWJseSB0aHJvdyBhbiBleGNlcHRp
b24KLSAgICAvLyBvbiBlcnJvciBhbmQgcHJpbnQgdGhlIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGRl
YnVnIGNvbnNvbGUKLSAgICBHTGVudW0gZXJyb3IgPSA6OmdsR2V0RXJyb3IoKTsKLSAgICBpZiAo
ZXJyb3IgIT0gR0xfTk9fRVJST1IpCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CiAgICAgQ0dMU2V0
Q3VycmVudENvbnRleHQobV9jb250ZXh0T2JqKTsKQEAgLTUwMiw4ICs0OTMsMTAgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXAodQogCiBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25n
IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQogewotICAgIGlmICghcHJvZ3JhbS0+b2JqZWN0KCkp
CisgICAgaWYgKCFwcm9ncmFtLT5vYmplY3QoKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBlbnN1
cmVDb250ZXh0KG1fY29udGV4dE9iaik7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9IDA7
CiAgICAgOjpnbEdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0tPm9iamVj
dCgpKSwgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4QXR0cmlidXRlU2l6ZSk7
CkBAIC01MjIsOCArNTE1LDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0
dHJpYigKICAgICAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJiBpbmZv
KQogewotICAgIGlmICghcHJvZ3JhbS0+b2JqZWN0KCkpCisgICAgaWYgKCFwcm9ncmFtLT5vYmpl
Y3QoKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihJTlZBTElEX1ZBTFVFKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7
CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYoc3Rh
dGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtLT5vYmplY3QoKSksIEdMX0FDVElWRV9VTklGT1JNX01B
WF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6ZSk7CkBAIC01NTEsNiArNTQ2LDEzIEBAIGludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24KIAogdW5zaWduZWQgbG9uZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogeworICAgIGlmIChtX3N5bnRoZXRpY0Vycm9ycy5zaXpl
KCkgPiAwKSB7CisgICAgICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBp
dGVyID0gbV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBl
cnIgPSAqaXRlcjsKKyAgICAgICAgbV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOworICAg
ICAgICByZXR1cm4gZXJyOworICAgIH0KKwogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2Jq
KTsKICAgICByZXR1cm4gOjpnbEdldEVycm9yKCk7CiB9CkBAIC0xMzUzLDYgKzEzNTUsMTEgQEAg
aW50IEdyYXBoaWNzQ29udGV4dDNEOjpzaXplSW5CeXRlcyhpbnQgdAogICAgIH0KIH0KIAordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJv
cikKK3sKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTk2MSkK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MyBAQAorMjAwOS0xMi0xMCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQgdG8gc3ludGhlc2l6ZSBHTCBlcnJvcnMgcmF0aGVyIHRoYW4KKyAg
ICAgICAgcmFpc2luZyBKYXZhU2NyaXB0IGV4Y2VwdGlvbnMuIFJlbW92ZWQgaW50ZXJuYWwgZ2V0
RXJyb3IoKSBjYWxscworICAgICAgICBhZnRlciBlYWNoIGdyYXBoaWNzIGNhbGwuIFRoZSBHcmFw
aGljc0NvbnRleHQzRCBtYWludGFpbnMgdGhlCisgICAgICAgIHN5bnRoZXRpYyBleGNlcHRpb25z
IGJlY2F1c2Ugb25seSBpdCBoYXMgY29tcGxldGUgaW5mb3JtYXRpb24KKyAgICAgICAgYWJvdXQg
Y2VydGFpbiBjb25kaXRpb25zIHJlcXVpcmluZyB0aGVtIHRvIGJlIHJhaXNlZC4KKworICAgICAg
ICBCYXNlZCBvbiBpZGVhIGZyb20gSWxtYXJpIEhlaWtraW5lbiwgYWRkZWQgY3JlYXRlM0REZWJ1
Z0NvbnRleHQoKQorICAgICAgICB0byB3ZWJnbC10ZXN0LmpzIGFuZCBjaGFuZ2VkIHRoZSBXZWJH
TCBsYXlvdXQgdGVzdHMgZXhwZWN0aW5nCisgICAgICAgIGVycm9yIGNvbmRpdGlvbnMgdG8gdXNl
IGl0LiBVcGRhdGVkIGV4cGVjdGVkLnR4dCBmaWxlcywgd2hpY2ggbm93CisgICAgICAgIGltcGxp
Y2l0bHkgdGVzdCB0aGUgT3BlbkdMIGVycm9yIGFzIGl0IGlzIHBhcnQgb2YgdGhlIGV4Y2VwdGlv
bidzCisgICAgICAgIG1lc3NhZ2UuCisKKyAgICAgICAgQWRkZWQgbmV3IHRhcmdldGVkIHRlc3Qg
Y292ZXJpbmcgYXNwZWN0cyBvZiBzeW50aGV0aWMgZXJyb3JzIGFzCisgICAgICAgIHdlbGwgYXMg
cmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyB1bmNvdmVyZWQgZHVyaW5nIGl0cyBkZXZlbG9wbWVu
dC4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmcuaHRt
bAorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm9yKToKKwogMjAwOS0xMi0xMCAg
SWx5YSBUaWtob25vdnNreSA8bG9pc2xvQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250
ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250
ZXh0M0QuY3BwCShyZXZpc2lvbiA1MTk2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDYgQEAgcHVibGlj
OgogICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKICAgICB+R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbCgpOwogCi0gICAgdm9pZCBjaGVja0Vycm9yKCkgY29uc3Q7CiAgICAgYm9vbCBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OwpAQCAtMTIyLDEwICsxMjEsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgYnVmZmVyRGF0YUltcGwodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBz
aXplLCBjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKICAgICB2b2lkIGRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2b2lkIGVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVuc2lnbmVk
IGxvbmcgZ2V0RXJyb3IoKTsKICAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQg
bG9uZyBpbmR4LCBpbnQgc2l6ZSwgaW50IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0KTsKICAgICB2b2lkIHZpZXdwb3J0SW1wbChsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogCisgICAgdm9pZCBzeW50aGVzaXpl
R0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKKwogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBp
bnQgbV90ZXh0dXJlOwogICAgIHVuc2lnbmVkIGludCBtX2ZibzsKQEAgLTE2Miw2ICsxNjQsOSBA
QCBwcml2YXRlOgogICAgIH07CiAgICAgVmVydGV4QXR0cmliUG9pbnRlclN0YXRlIG1fdmVydGV4
QXR0cmliUG9pbnRlclN0YXRlW051bVRyYWNrZWRQb2ludGVyU3RhdGVzXTsKIAorICAgIC8vIEVy
cm9ycyByYWlzZWQgYnkgc3ludGhlc2l6ZUdMRXJyb3IoKS4KKyAgICBMaXN0SGFzaFNldDx1bnNp
Z25lZCBsb25nPiBtX3N5bnRoZXRpY0Vycm9yczsKKwogI2lmIFBMQVRGT1JNKFNLSUEpCiAgICAg
Ly8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIENhbnZhcydzIGJhY2tpbmcgc3RvcmUg
ZG9uJ3QKICAgICAvLyBtYXRjaCB0aG9zZSB0aGF0IHdlIHdlcmUgZ2l2ZW4gaW4gdGhlIG1vc3Qg
cmVjZW50IGNhbGwgdG8KQEAgLTUxNSwxNyArNTIwLDYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6fkdyYXBoaWNzQ29udAogICAgIG1fY29udGV4dE9iaiA9IDA7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2hlY2tFcnJvcigpIGNvbnN0Ci17Ci0gICAgLy8gRklY
TUU6IFRoaXMgbmVlZHMgdG8gb25seSBiZSBkb25lIGluIHRoZSBkZWJ1ZyBjb250ZXh0LiBJdAot
ICAgIC8vIHdpbGwgbmVlZCB0byB0aHJvdyBhbiBleGNlcHRpb24gb24gZXJyb3IuCi0gICAgR0xl
bnVtIGVycm9yID0gZ2xHZXRFcnJvcigpOwotICAgIGlmIChlcnJvciAhPSBHTF9OT19FUlJPUikg
ewotICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6IEdMIEVycm9yIDog
JXhcbiIsIGVycm9yKTsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci19Ci0KIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICNp
ZiBQTEFURk9STShXSU5fT1MpCkBAIC01OTIsNyArNTg2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpyZXNoYXBlKAogICAgICAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAm
bV9mYm8pOwogICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgZGVwdGggYnVmZmVyCiAgICAgICAgIGds
R2VuUmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgIGNoZWNrRXJy
b3IoKTsKICAgICB9CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBjb2xvciBhbmQgZGVwdGggYnVm
ZmVycwpAQCAtODU4LDYgKzg1MSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmVuYWJsZVZlCiAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAKK3Vu
c2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RXJyb3IoKQoreworICAg
IGlmIChtX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7CisgICAgICAgIExpc3RIYXNoU2V0
PHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyID0gbV9zeW50aGV0aWNFcnJvcnMuYmVnaW4o
KTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBlcnIgPSAqaXRlcjsKKyAgICAgICAgbV9zeW50aGV0
aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBnbEdldEVycm9yKCk7Cit9CisKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25l
ZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKIHsKQEAgLTg4OSw2ICs4OTUsMTEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2aWV3cG9ydAogICAgIGdsVmlld3BvcnQo
eCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6c3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcikKK3sKKyAgICBtX3N5bnRo
ZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworfQorCiAvLyBHcmFwaGljc0NvbnRleHQzRCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvKiBIZWxw
ZXIgbWFjcm9zIGZvciB3aGVuIHdlJ3JlIGp1c3Qgd3JhcHBpbmcgYSBnbCBtZXRob2QsIHNvIHRo
YXQKQEAgLTEwMjksMTEgKzEwNDAsNiBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4
dDNEOjpwbGF0CiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPnBsYXRmb3JtVGV4dHVyZSgpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0Vycm9yKCkgY29uc3QKLXsKLSAgICBtX2lu
dGVybmFsLT5jaGVja0Vycm9yKCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VD
b250ZXh0Q3VycmVudCgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CkBAIC0xMzYxLDE1ICsxMzY3LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRl
TWlwbWFwKHUKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykK
IHsKLSAgICBpZiAoIXByb2dyYW0pCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKElOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogICAgIEdMaW50IG1heE5hbWVMZW5ndGggPSAtMTsKICAgICBnbEdldFByb2dyYW1pdihFWFRS
QUNUKHByb2dyYW0pLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhOYW1lTGVu
Z3RoKTsKICAgICBpZiAobWF4TmFtZUxlbmd0aCA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBHTGNoYXIqIG5hbWUgPSAwOwotICAgIGlmICghdHJ5RmFzdE1hbGxvYyhtYXhOYW1lTGVu
Z3RoICogc2l6ZW9mKEdMY2hhcikpLmdldFZhbHVlKG5hbWUpKQorICAgIGlmICghdHJ5RmFzdE1h
bGxvYyhtYXhOYW1lTGVuZ3RoICogc2l6ZW9mKEdMY2hhcikpLmdldFZhbHVlKG5hbWUpKSB7Cisg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKE9VVF9PRl9NRU1PUlkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogICAgIEdMc2l6ZWkgbGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0g
LTE7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAtMTM4OCwxNSArMTM5OCwxOSBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25n
IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQogewotICAgIGlmICghcHJvZ3JhbSkKKyAgICBpZiAo
IXByb2dyYW0pIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9WQUxVRSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgR0xpbnQgbWF4TmFtZUxlbmd0aCA9IC0x
OwogICAgIGdsR2V0UHJvZ3JhbWl2KEVYVFJBQ1QocHJvZ3JhbSksIEdMX0FDVElWRV9VTklGT1JN
X01BWF9MRU5HVEgsICZtYXhOYW1lTGVuZ3RoKTsKICAgICBpZiAobWF4TmFtZUxlbmd0aCA8IDAp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBHTGNoYXIqIG5hbWUgPSAwOwotICAgIGlmICgh
dHJ5RmFzdE1hbGxvYyhtYXhOYW1lTGVuZ3RoICogc2l6ZW9mKEdMY2hhcikpLmdldFZhbHVlKG5h
bWUpKQorICAgIGlmICghdHJ5RmFzdE1hbGxvYyhtYXhOYW1lTGVuZ3RoICogc2l6ZW9mKEdMY2hh
cikpLmdldFZhbHVlKG5hbWUpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKE9VVF9PRl9N
RU1PUlkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIEdMc2l6ZWkgbGVuZ3Ro
ID0gMDsKICAgICBHTGludCBzaXplID0gLTE7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAtMTQz
Niw4ICsxNDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldAog
CiB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCiB7Ci0gICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGdsR2V0RXJyb3IoKTsKKyAgICByZXR1cm4g
bV9pbnRlcm5hbC0+Z2V0RXJyb3IoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKQEAgLTE3MDksNiArMTcy
MiwxMSBAQCBHTF9TQU1FX01FVEhPRF8zKFN0ZW5jaWxPcCwgc3RlbmNpbE9wLCB1CiAKIEdMX1NB
TUVfTUVUSE9EXzQoU3RlbmNpbE9wU2VwYXJhdGUsIHN0ZW5jaWxPcFNlcGFyYXRlLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQogCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVy
cm9yKQoreworICAgIG1faW50ZXJuYWwtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKK30KKwog
aW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDUxOTYxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNDUgQEAKKzIwMDktMTItMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENoYW5nZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRvIHN5bnRoZXNpemUgR0wgZXJyb3JzIHJh
dGhlciB0aGFuCisgICAgICAgIHJhaXNpbmcgSmF2YVNjcmlwdCBleGNlcHRpb25zLiBSZW1vdmVk
IGludGVybmFsIGdldEVycm9yKCkgY2FsbHMKKyAgICAgICAgYWZ0ZXIgZWFjaCBncmFwaGljcyBj
YWxsLiBUaGUgR3JhcGhpY3NDb250ZXh0M0QgbWFpbnRhaW5zIHRoZQorICAgICAgICBzeW50aGV0
aWMgZXhjZXB0aW9ucyBiZWNhdXNlIG9ubHkgaXQgaGFzIGNvbXBsZXRlIGluZm9ybWF0aW9uCisg
ICAgICAgIGFib3V0IGNlcnRhaW4gY29uZGl0aW9ucyByZXF1aXJpbmcgdGhlbSB0byBiZSByYWlz
ZWQuCisKKyAgICAgICAgQmFzZWQgb24gaWRlYSBmcm9tIElsbWFyaSBIZWlra2luZW4sIGFkZGVk
IGNyZWF0ZTNERGVidWdDb250ZXh0KCkKKyAgICAgICAgdG8gd2ViZ2wtdGVzdC5qcyBhbmQgY2hh
bmdlZCB0aGUgV2ViR0wgbGF5b3V0IHRlc3RzIGV4cGVjdGluZworICAgICAgICBlcnJvciBjb25k
aXRpb25zIHRvIHVzZSBpdC4gVXBkYXRlZCBleHBlY3RlZC50eHQgZmlsZXMsIHdoaWNoIG5vdwor
ICAgICAgICBpbXBsaWNpdGx5IHRlc3QgdGhlIE9wZW5HTCBlcnJvciBhcyBpdCBpcyBwYXJ0IG9m
IHRoZSBleGNlcHRpb24ncworICAgICAgICBtZXNzYWdlLgorCisgICAgICAgIEFkZGVkIG5ldyB0
YXJnZXRlZCB0ZXN0IGNvdmVyaW5nIGFzcGVjdHMgb2Ygc3ludGhldGljIGVycm9ycyBhcworICAg
ICAgICB3ZWxsIGFzIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgdW5jb3ZlcmVkIGR1cmluZyBp
dHMgZGV2ZWxvcG1lbnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3It
cmVwb3J0aW5nLmh0bWwKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNP
dXRPZkJvdW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZHJh
d0FycmF5c091dE9mQm91bmRzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZHJh
d0VsZW1lbnRzc091dE9mQm91bmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmcuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvZ2V0QWN0aXZlVGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZFBhc3NlZFBh
cmFtcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZFBh
c3NlZFBhcmFtcy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0
LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsLXRlc3QuanM6CisgICAgICAgIChjcmVhdGUzRERlYnVnQ29udGV4dC53cmFw
LmdldEVycm9yKToKKyAgICAgICAgKGNyZWF0ZTNERGVidWdDb250ZXh0KToKKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZXJyb3ItcmVwb3J0aW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2V0QWN0aXZlVGVzdC5q
czoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNv
bnRleHQtb2JqZWN0LWJlaGF2aW91ci5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9z
Y3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpzOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQudHh0OgorCiAyMDA5LTEy
LTEwICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNTE5NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9k
cmF3QXJyYXlzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDI0
ICszLDI0IEBAIFRlc3Qgb2YgZHJhd0FycmF5cyB3aXRoIG91dC1vZi1ib3VuZHMgcGEKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogVGVzdCBlbXB0eSBidWZmZXIKLVBBU1MgY29udGV4dC5k
cmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdB
cnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdB
cnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwMDAwMDAwMDAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250
ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIC0xKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0
LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJh
d0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0Fy
cmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5W
QUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhj
b250ZXh0LlRSSUFOR0xFUywgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4g
ZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAw
LCAxMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BB
U1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAw
MCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAxLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBk
cmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0x
LCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3QXJyYXlzLgorUEFTUyBj
b250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3QXJyYXlzLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMo
Y29udGV4dC5UUklBTkdMRVMsIC0xLCAxKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBp
biBkcmF3QXJyYXlzLgogCiBUZXN0IGJ1ZmZlciB3aXRoIDMgZmxvYXQgdmVjdG9ycwogUEFTUyBj
b250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDMpIGlzIHVuZGVmaW5lZAot
UEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDMsIDIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAwMDAwMDAp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24g
MTEuCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgLTEpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEu
Ci1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1Q
QVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgLTEpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNv
bnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMywgMikgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIg
aW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVT
LCAwLCAxMDAwMDAwMDAwMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJh
d0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAt
MSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMCkgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAxLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4g
ZHJhd0FycmF5cy4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAt
MSwgMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0FycmF5cy4KIAogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbAkocmV2
aXNpb24gNTE5NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlz
T3V0T2ZCb3VuZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogPHNjcmlw
dD4KIGRlc2NyaXB0aW9uKCJUZXN0IG9mIGRyYXdBcnJheXMgd2l0aCBvdXQtb2YtYm91bmRzIHBh
cmFtZXRlcnMiKTsKIAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250
ZXh0ID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKIHZhciBwcm9ncmFtID0gbG9hZFN0YW5kYXJk
UHJvZ3JhbShjb250ZXh0KTsKIAogY29udGV4dC51c2VQcm9ncmFtKHByb2dyYW0pOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1lbnRzc091dE9mQm91bmRzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9k
cmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTk2MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRPZkJvdW5kcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMjIgKzMsMjIgQEAgVGVzdCBvZiBkcmF3
RWxlbWVudHMgd2l0aCBvdXQtb2YtYm91bmRzIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CiBUZXN0IGVtcHR5IGluZGV4IGJ1ZmZlcgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5TSUdO
RURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9N
IEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdM
RVMsIDEwMDAwMDAwMDAwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVE
X0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBF
eGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVT
LCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4K
LVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQu
VU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9F
UlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMo
Y29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5k
cmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAwLCBjb250ZXh0LlVO
U0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVt
ZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNv
bnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4g
ZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xF
UywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODIgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcg
ZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgogCiBUZXN0IGJ1ZmZlciB3
aXRoIDMgYnl0ZSBpbmRleGVzCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJ
QU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGlzIHVuZGVmaW5lZAotUEFTUyBj
b250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05F
RF9CWVRFLCAyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00g
RXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xF
UywgMTAwMDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY29udGV4dC5kcmF3
RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAwLCBjb250ZXh0LlVOU0lH
TkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERP
TSBFeGNlcHRpb24gMTEuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5H
TEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBjb250ZXh0LmRyYXdF
bGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
MS4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRl
eHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRl
eHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDIpIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVu
dHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRo
cmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAwLCBjb250ZXh0
LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdF
bGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDAs
IGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgy
IGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIHRocmV3IGV4Y2VwdGlvbiBHTCBl
cnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29u
dGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KIAogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3
RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbAkocmV2aXNpb24gNTE5
NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZC
b3VuZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogPHNjcmlwdD4KIGRl
c2NyaXB0aW9uKCJUZXN0IG9mIGRyYXdFbGVtZW50cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1l
dGVycyIpOwogCi12YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHQg
PSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwogdmFyIHByb2dyYW0gPSBsb2FkU3RhbmRhcmRQcm9n
cmFtKGNvbnRleHQpOwogCiBjb250ZXh0LnVzZVByb2dyYW0ocHJvZ3JhbSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGlu
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIzIEBACitUZXN0cyBnZW5lcmF0aW9uIG9mIHN5bnRoZXRpYyBhbmQgcmVhbCBHTCBlcnJvcnMK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBp
cyAwCitUZXN0aW5nIGdldEFjdGl2ZUF0dHJpYgorUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJp
YihudWxsLCAyKSBpcyBudWxsCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklO
VkFMSURfT1BFUkFUSU9OCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0Lk5PX0VS
Uk9SCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDIpIGlzIG51bGwKK1BB
U1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQorUEFTUyBjb250
ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5OT19FUlJPUgorVGVzdGluZyBnZXRBY3RpdmVVbmlm
b3JtCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShudWxsLCAwKSBpcyBudWxsCitQQVNT
IGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OCitQQVNTIGNv
bnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGNvbnRleHQuZ2V0QWN0
aXZlVW5pZm9ybShwcm9ncmFtLCA1MCkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldEVycm9yKCkg
aXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250
ZXh0Lk5PX0VSUk9SCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJy
b3ItcmVwb3J0aW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9lcnJvci1yZXBvcnRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2Vycm9yLXJlcG9ydGluZy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRl
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2dldEFjdGl2ZVRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTk2MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRlc3QtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC02LDExICs2LDExIEBAIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAK
IFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApLm5hbWUgaXMgJ3VfbW9k
ZWxWaWV3UHJvak1hdHJpeCcKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0s
IDApLnR5cGUgaXMgY29udGV4dC5GTE9BVF9NQVQ0CiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5p
Zm9ybShwcm9ncmFtLCAwKS5zaXplIGlzIDEKLVBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3Jt
KHByb2dyYW0sIDEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBF
eGNlcHRpb24gMS4KLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9W
QUxVRQotUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgLTEpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KLVBBU1MgY29u
dGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQotUEFTUyBjb250ZXh0Lmdl
dEFjdGl2ZVVuaWZvcm0obnVsbCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpF
X0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJv
Z3JhbSwgMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlVW5pZm9y
bS4KK1BBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRBY3RpdmVV
bmlmb3JtKHByb2dyYW0sIC0xKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRB
Y3RpdmVVbmlmb3JtLgorUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAorUEFTUyBjb250ZXh0
LmdldEFjdGl2ZVVuaWZvcm0obnVsbCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIg
aW4gZ2V0QWN0aXZlVW5pZm9ybS4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFBBU1Mg
Y29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkubmFtZSBpcyAnYV9ub3JtYWwnCiBQ
QVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApLnR5cGUgaXMgY29udGV4dC5G
TE9BVF9WRUMzCkBAIC0xOCwyMCArMTgsMjAgQEAgUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCAwKQogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAxKS5u
YW1lIGlzICdhX3ZlcnRleCcKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwg
MSkudHlwZSBpcyBjb250ZXh0LkZMT0FUX1ZFQzQKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRy
aWIocHJvZ3JhbSwgMSkuc2l6ZSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHBy
b2dyYW0sIDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNl
cHRpb24gMS4KLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxV
RQotUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAtMSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgotUEFTUyBjb250ZXh0
LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCi1QQVNTIGNvbnRleHQuZ2V0QWN0
aXZlQXR0cmliKG51bGwsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6
IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwg
MikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlQXR0cmliLgorUEFT
UyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAorUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihw
cm9ncmFtLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlQXR0
cmliLgorUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAorUEFTUyBjb250ZXh0LmdldEFjdGl2
ZUF0dHJpYihudWxsLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRBY3Rp
dmVBdHRyaWIuCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIGNvbnRleHQyLmdl
dEVycm9yKCkgaXMgMAotUEFTUyBjb250ZXh0Mi5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgor
UEFTUyBjb250ZXh0Mi5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODIgaW4gZ2V0QWN0aXZlQXR0cmliLgogUEFTUyBjb250ZXh0Mi5nZXRFcnJv
cigpIGlzIDAKLVBBU1MgY29udGV4dDIuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNT
IGNvbnRleHQyLmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gZ2V0QWN0aXZlVW5pZm9ybS4KIFBBU1MgY29udGV4dDIuZ2V0RXJyb3Io
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNv
bnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MSBpbiBnZXRBY3RpdmVVbmlmb3JtLgogUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMg
MAotUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGNvbnRleHQu
Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgx
IGluIGdldEFjdGl2ZUF0dHJpYi4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNv
bnRleHQtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxOTYxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJl
aGF2aW91ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMjggKzIsMjggQEAgVGVz
dHMgY2FsbGluZyBXZWJHTCBBUElzIHdpdGggb2JqZWN0cyBmcgogCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKLVBBU1MgY29udGV4dEEuY29tcGlsZVNoYWRlcihzaGFkZXJCKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFT
UyBjb250ZXh0QS5saW5rUHJvZ3JhbShwcm9ncmFtQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuYXR0YWNo
U2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5hdHRhY2hTaGFkZXIo
cHJvZ3JhbUIsIHNoYWRlckEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmF0dGFjaFNoYWRlcihwcm9ncmFt
Qiwgc2hhZGVyQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFk
ZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckEpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
Ci1QQVNTIGNvbnRleHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1Mg
Y29udGV4dEEuc2hhZGVyU291cmNlKHNoYWRlckIsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5i
aW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbUIsIDAsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5i
aW5kRnJhbWVidWZmZXIoY29udGV4dEEuRlJBTUVCVUZGRVIsIGZyYW1lQnVmZmVyQikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBB
U1MgY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRl
ckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmJpbmRUZXh0dXJlKGNvbnRleHRBLlRFWFRVUkVf
MkQsIHRleHR1cmVCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihj
b250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dEEu
UkVOREVSQlVGRkVSLCByZW5kZXJCdWZmZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5mcmFtZWJ1ZmZl
clRleHR1cmUyRChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuQ09MT1JfQVRUQUNITUVO
VDAsIGNvbnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5n
ZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRQcm9n
cmFtSW5mb0xvZyhwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1l
dGVyKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVy
QiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0U2hhZGVyU291cmNlKHNoYWRlckIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4Jykg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KK1BBU1MgY29udGV4dEEuY29tcGlsZVNoYWRlcihzaGFkZXJCKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MiBpbiBjb21waWxlU2hhZGVyLgorUEFTUyBjb250ZXh0QS5saW5rUHJvZ3Jh
bShwcm9ncmFtQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gbGlua1Byb2dyYW0u
CitQQVNTIGNvbnRleHRBLmF0dGFjaFNoYWRlcihwcm9ncmFtQSwgc2hhZGVyQikgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0QS5hdHRh
Y2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgx
IGluIGF0dGFjaFNoYWRlci4KK1BBU1MgY29udGV4dEEuYXR0YWNoU2hhZGVyKHByb2dyYW1CLCBz
aGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBhdHRhY2hTaGFkZXIuCitQ
QVNTIGNvbnRleHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQSwgc2hhZGVyQikgdGhyZXcgZXhjZXB0
aW9uIEdMIGVycm9yIDEyODIgaW4gZGV0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0QS5kZXRhY2hT
aGFkZXIocHJvZ3JhbUIsIHNoYWRlckEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGlu
IGRldGFjaFNoYWRlci4KK1BBU1MgY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1CLCBzaGFk
ZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkZXRhY2hTaGFkZXIuCitQQVNT
IGNvbnRleHRBLnNoYWRlclNvdXJjZShzaGFkZXJCLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gc2hhZGVyU291cmNlLgorUEFTUyBjb250ZXh0QS5iaW5kQXR0cmliTG9j
YXRpb24ocHJvZ3JhbUIsIDAsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBp
biBiaW5kQXR0cmliTG9jYXRpb24uCitQQVNTIGNvbnRleHRBLmJpbmRGcmFtZWJ1ZmZlcihjb250
ZXh0QS5GUkFNRUJVRkZFUiwgZnJhbWVCdWZmZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MiBpbiBiaW5kRnJhbWVidWZmZXIuCitQQVNTIGNvbnRleHRBLmJpbmRSZW5kZXJidWZmZXIo
Y29udGV4dEEuUkVOREVSQlVGRkVSLCByZW5kZXJCdWZmZXJCKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MiBpbiBiaW5kUmVuZGVyYnVmZmVyLgorUEFTUyBjb250ZXh0QS5iaW5kVGV4dHVy
ZShjb250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJlQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODIgaW4gYmluZFRleHR1cmUuCitQQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5ERVBUSF9BVFRBQ0hNRU5ULCBjb250
ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJv
ciAxMjgyIGluIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLgorUEFTUyBjb250ZXh0QS5mcmFtZWJ1
ZmZlclRleHR1cmUyRChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuQ09MT1JfQVRUQUNI
TUVOVDAsIGNvbnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSB0aHJldyBleGNlcHRpb24g
R0wgZXJyb3IgMTI4MiBpbiBmcmFtZWJ1ZmZlclRleHR1cmUyRC4KK1BBU1MgY29udGV4dEEuZ2V0
UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODIgaW4gZ2V0UHJvZ3JhbVBhcmFtZXRlci4KK1BBU1MgY29udGV4dEEuZ2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFByb2dy
YW1JbmZvTG9nLgorUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyQiwgMCkg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0U2hhZGVyUGFyYW1ldGVyLgorUEFT
UyBjb250ZXh0QS5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGdldFNoYWRlckluZm9Mb2cuCitQQVNTIGNvbnRleHRBLmdldFNoYWRl
clNvdXJjZShzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRTaGFk
ZXJTb3VyY2UuCitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0VW5pZm9ybS4KK1BBU1MgY29udGV4
dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4Jykg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0VW5pZm9ybUxvY2F0aW9uLgogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFyYW1zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkUGFz
c2VkUGFyYW1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE5NjEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkUGFzc2VkUGFyYW1zLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQQogVGVzdCBzaGFkZXJzCiBQQVNTIHNoYWRlciA9IGNvbnRleHQuY3JlYXRlU2hhZGVy
KGNvbnRleHQuRlJBR01FTlRfU0hBREVSKSBpcyBzaGFkZXIKIFBBU1Mgc2hhZGVyID0gY29udGV4
dC5jcmVhdGVTaGFkZXIoY29udGV4dC5WRVJURVhfU0hBREVSKSBpcyBzaGFkZXIKLVBBU1MgY29u
dGV4dC5jcmVhdGVTaGFkZXIoMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBE
T00gRXhjZXB0aW9uIDEyLgotUEFTUyBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0LlRSSUFO
R0xFUykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEy
LgorUEFTUyBjb250ZXh0LmNyZWF0ZVNoYWRlcigwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MCBpbiBjcmVhdGVTaGFkZXIuCitQQVNTIGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQu
VFJJQU5HTEVTKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MCBpbiBjcmVhdGVTaGFkZXIu
CiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZFBhc3NlZFBhcmFtcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWRQYXNzZWRQYXJhbXMuaHRtbAko
cmV2aXNpb24gNTE5NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlk
UGFzc2VkUGFyYW1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAKIDxzY3Jp
cHQ+CiBkZXNjcmlwdGlvbigiVGVzdCBmb3IgaW52YWxpZCBwYXNzZWQgcGFyYW1ldGVycyIpOwog
Ci12YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUz
RERlYnVnQ29udGV4dCgpOwogCiBkZWJ1ZygiVGVzdCBzaGFkZXJzIik7CiB2YXIgc2hhZGVyOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3Vy
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTk2MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMjkgKzIsMjcgQEAgVGVzdHMgY2FsbGluZyBX
ZWJHTCBBUElzIHdpdGhvdXQgcHJvdmlkaQogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
LVBBU1MgY29udGV4dC5jb21waWxlU2hhZGVyKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBF
X01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5saW5rUHJvZ3Jh
bSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5hdHRh
Y2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRl
cih1bmRlZmluZWQsIHNoYWRlcikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIocHJvZ3Jh
bSwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcih1bmRlZmluZWQsIHNo
YWRlcikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgY29udGV4dC5zaGFkZXJTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LnNo
YWRlclNvdXJjZSh1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmJpbmRBdHRyaWJM
b2NhdGlvbih1bmRlZmluZWQsIDAsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0LmNvbXBpbGVTaGFk
ZXIoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBjb21waWxlU2hhZGVyLgorUEFT
UyBjb250ZXh0LmxpbmtQcm9ncmFtKCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4g
bGlua1Byb2dyYW0uCitQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKCkgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRl
cihwcm9ncmFtLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGF0
dGFjaFNoYWRlci4KK1BBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIodW5kZWZpbmVkLCBzaGFkZXIp
IHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGF0dGFjaFNoYWRlci4KK1BBU1MgY29u
dGV4dC5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MiBpbiBkZXRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHQuZGV0YWNoU2hhZGVyKHVu
ZGVmaW5lZCwgc2hhZGVyKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkZXRhY2hT
aGFkZXIuCitQQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODIgaW4gc2hhZGVyU291cmNlLgorUEFTUyBjb250ZXh0LnNoYWRlclNvdXJjZSh1bmRl
ZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBzaGFkZXJTb3Vy
Y2UuCitQQVNTIGNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9uKHVuZGVmaW5lZCwgMCwgJ2Zvbycp
IHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGJpbmRBdHRyaWJMb2NhdGlvbi4KIFBB
U1MgY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCAwKSBpcyB1bmRlZmlu
ZWQuCiBQQVNTIGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIDAp
IGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHQuUkVO
REVSQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQuYmluZFRleHR1cmUoY29u
dGV4dC5URVhUVVJFXzJELCAwKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRleHQuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hN
RU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkgaXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1Jf
QVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkgaXMgdW5kZWZpbmVkLgotUEFT
UyBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250
ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRT
aGFkZXJQYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlcklu
Zm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNv
bnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRlcih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGdldFByb2dyYW1QYXJhbWV0ZXIuCitQQVNTIGNvbnRleHQuZ2V0UHJv
Z3JhbUluZm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBp
biBnZXRQcm9ncmFtSW5mb0xvZy4KK1BBU1MgY29udGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIodW5k
ZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRTaGFkZXJQYXJh
bWV0ZXIuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVySW5mb0xvZyh1bmRlZmluZWQsIDApIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFNoYWRlckluZm9Mb2cuCitQQVNTIGNvbnRl
eHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODIgaW4gZ2V0U2hhZGVyU291cmNlLgorUEFTUyBjb250ZXh0LmdldFVuaWZvcm0odW5kZWZpbmVk
LCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRVbmlmb3JtLgorUEFTUyBj
b250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbih1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MiBpbiBnZXRVbmlmb3JtTG9jYXRpb24uCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA1MTk2MSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Vu
aWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDEw
IEBAIFRlc3RzIGNhbGxpbmcgV2ViR0wgQVBJcyB3aXRoIG9iamVjdHMgZnIKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogUEFTUyBjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMikgaXMg
dW5kZWZpbmVkLgotUEFTUyBjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFs
c2UsIG1hdCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KK1BBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkEsIGZh
bHNlLCBtYXQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIHVuaWZvcm1NYXRyaXg0
ZnYuCiBQQVNTIGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbUExKSBpcyB1bmRlZmluZWQuCiBQ
QVNTIGNvbnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25BLCBmYWxzZSwgbWF0KSBpcyB1
bmRlZmluZWQuCi1QQVNTIGNvbnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYoMCwgZmFsc2UsIG1hdCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KK1BBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdigwLCBmYWxzZSwgbWF0KSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiB1bmlmb3JtTWF0cml4NGZ2LgogUEFTUyBjb250ZXh0
QS51c2VQcm9ncmFtKHByb2dyYW1TKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHRBLnVuaWZv
cm0xaShsb2NhdGlvblN4LCAzKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHRBLnVuaWZvcm0x
Zihsb2NhdGlvbkFycmF5MCwgNC4wKSBpcyB1bmRlZmluZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkocmV2
aXNpb24gNTE5NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYsNiArMTYsMzcgQEAgZnVuY3Rpb24g
Y3JlYXRlM0RDb250ZXh0KCkgewogICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgibW96LXdl
YmdsIik7CiB9CiAKK2Z1bmN0aW9uIGNyZWF0ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQsIGZuYW1l
KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcnYgPSBjb250ZXh0W2Zu
YW1lXS5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpOworICAgICAgICB2YXIgZXJyID0gY29udGV4
dC5nZXRFcnJvcigpOworICAgICAgICBpZiAoZXJyICE9IDApCisgICAgICAgICAgICB0aHJvdyAi
R0wgZXJyb3IgIiArIGVyciArICIgaW4gIiArIGZuYW1lOworICAgICAgICByZXR1cm4gcnY7Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKSB7CisgICAgdmFyIGNv
bnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKKyAgICAvLyBUaGFua3MgdG8gSWxtYXJpIEhlaWtr
aW5lbiBmb3IgdGhlIGlkZWEgb24gaG93IHRvIGltcGxlbWVudCB0aGlzIHNvIGVsZWdhbnRseS4K
KyAgICB2YXIgd3JhcCA9IHt9OworICAgIGZvciAodmFyIGkgaW4gY29udGV4dCkgeworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZXh0W2ldID09ICdmdW5jdGlvbicp
IHsKKyAgICAgICAgICAgICAgICB3cmFwW2ldID0gY3JlYXRlR0xFcnJvcldyYXBwZXIoY29udGV4
dCwgaSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdyYXBbaV0gPSBj
b250ZXh0W2ldOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICAvLyBjb25zb2xlLmxvZygiY3JlYXRlM0REZWJ1Z0NvbnRleHQ6IEVycm9yIGFjY2Vzc2lu
ZyAiICsgaSk7CisgICAgICAgIH0KKyAgICB9CisgICAgd3JhcC5nZXRFcnJvciA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gY29udGV4dC5nZXRFcnJvcigpOworICAgIH07CisgICAgcmV0
dXJuIHdyYXA7Cit9CisKIGZ1bmN0aW9uIGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCkgewog
ICAgIHZhciBwcm9ncmFtID0gY29udGV4dC5jcmVhdGVQcm9ncmFtKCk7CiAgICAgY29udGV4dC5h
dHRhY2hTaGFkZXIocHJvZ3JhbSwgbG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHQpKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9lcnJvci1y
ZXBvcnRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2NyaXB0LXRlc3RzL2Vycm9yLXJlcG9ydGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9lcnJvci1yZXBvcnRpbmcuanMJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBnZW5lcmF0aW9u
IG9mIHN5bnRoZXRpYyBhbmQgcmVhbCBHTCBlcnJvcnMiKTsKKwordmFyIGNvbnRleHQgPSBjcmVh
dGUzRENvbnRleHQoKTsKK3ZhciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0
KTsKKworLy8gT3RoZXIgdGVzdHMgaW4gdGhpcyBkaXJlY3RvcnkgbGlrZSBnZXRBY3RpdmVUZXN0
IGFuZAorLy8gaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ciBhbHJlYWR5IHRlc3Qg
dGhlIHJhaXNpbmcgb2YgbWFueQorLy8gc3ludGhldGljIEdMIGVycm9ycy4gVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoZSByYWlzaW5nIG9mIGNlcnRhaW4KKy8vIGtub3duIHJlYWwgR0wgZXJyb3JzLCBh
bmQgY29udGFpbnMgYSBmZXcgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncworLy8gZGlzY292ZXJl
ZCBpbiB0aGUgc3ludGhldGljIGVycm9yIGdlbmVyYXRpb24gYW5kIGluIHRoZSBXZWJHTAorLy8g
aW1wbGVtZW50YXRpb24gaXRzZWxmLgorCitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwg
IjAiKTsKKworZGVidWcoIlRlc3RpbmcgZ2V0QWN0aXZlQXR0cmliIik7CisvLyBTeW50aGV0aWMg
T3BlbkdMIGVycm9yCitzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKG51bGws
IDIpIik7CitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9P
UEVSQVRJT04iKTsKKy8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50
CitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKKy8v
IFJlYWwgT3BlbkdMIGVycm9yCitzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlQXR0cmli
KHByb2dyYW0sIDIpIik7CitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQu
SU5WQUxJRF9WQUxVRSIpOworLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMg
cG9pbnQKK3Nob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIp
OworCitkZWJ1ZygiVGVzdGluZyBnZXRBY3RpdmVVbmlmb3JtIik7CisvLyBTeW50aGV0aWMgT3Bl
bkdMIGVycm9yCitzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShudWxsLCAw
KSIpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfT1BF
UkFUSU9OIik7CisvLyBFcnJvciBzdGF0ZSBzaG91bGQgYmUgY2xlYXIgYnkgdGhpcyBwb2ludAor
c2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5PX0VSUk9SIik7CisvLyBS
ZWFsIE9wZW5HTCBlcnJvcgorc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgNTApIik7CitzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQu
SU5WQUxJRF9WQUxVRSIpOworLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMg
cG9pbnQKK3Nob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIp
OworCisvLyBGSVhNRTogdGhlIGZvbGxvd2luZyB0ZXN0cyBkb24ndCB3b3JrIHByb3Blcmx5IHll
dAorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMzkxCisvLyBk
ZWJ1ZygiVGVzdGluZyBhdHRlbXB0cyB0byBtYW5pcHVsYXRlIHRoZSBkZWZhdWx0IGZyYW1lYnVm
ZmVyIik7CisvLyBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29u
dGV4dC5GUkFNRUJVRkZFUiwgMCkiKTsKKy8vIHNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCki
LCAiY29udGV4dC5OT19FUlJPUiIpOworLy8gc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9B
VFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKKy8vIC8vIFN5bnRoZXRpYyBP
cGVuR0wgZXJyb3IKKy8vIHNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5J
TlZBTElEX09QRVJBVElPTiIpOworLy8gLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5
IHRoaXMgcG9pbnQKKy8vIHNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5O
T19FUlJPUiIpOworLy8gc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZnJhbWVidWZmZXJUZXh0
dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29u
dGV4dC5URVhUVVJFXzJELCAwLCAwKSIpOworLy8gLy8gU3ludGhldGljIE9wZW5HTCBlcnJvcgor
Ly8gc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfT1BFUkFU
SU9OIik7CisvLyAvLyBFcnJvciBzdGF0ZSBzaG91bGQgYmUgY2xlYXIgYnkgdGhpcyBwb2ludAor
Ly8gc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5PX0VSUk9SIik7CisK
K3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2V0QWN0aXZlVGVzdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2V0QWN0aXZlVGVzdC5qcwko
cmV2aXNpb24gNTE5NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQt
dGVzdHMvZ2V0QWN0aXZlVGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIGRl
c2NyaXB0aW9uKCJUZXN0IG9mIGdldEFjdGl2ZUF0dHJpYiBhbmQgZ2V0QWN0aXZlVW5pZm9ybSIp
OwogCi12YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOwotdmFyIGNvbnRleHQyID0gY3Jl
YXRlM0RDb250ZXh0KCk7Cit2YXIgY29udGV4dCA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7Cit2
YXIgY29udGV4dDIgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwogdmFyIHByb2dyYW0gPSBsb2Fk
U3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwogdmFyIHByb2dyYW0yID0gbG9hZFN0YW5kYXJkUHJv
Z3JhbShjb250ZXh0Mik7CiAKQEAgLTEwLDkgKzEwLDkgQEAgc2hvdWxkQmUoImNvbnRleHQuZ2V0
QWN0aXZlVW5pZm9ybShwcm9ncgogc2hvdWxkQmUoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShw
cm9ncmFtLCAwKS50eXBlIiwgImNvbnRleHQuRkxPQVRfTUFUNCIpOwogc2hvdWxkQmUoImNvbnRl
eHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKS5zaXplIiwgIjEiKTsKIHNob3VsZFRocm93
KCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMSkiKTsKLXNob3VsZEJlKCJjb250
ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7CitzaG91bGRCZSgiY29u
dGV4dC5nZXRFcnJvcigpIiwgIjAiKTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgLTEpIik7Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNv
bnRleHQuSU5WQUxJRF9WQUxVRSIpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICIw
Iik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKG51bGwsIDApIik7CiBz
aG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgIjAiKTsKIApAQCAtMjMsOSArMjMsOSBAQCBz
aG91bGRCZSgiY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhCiBzaG91bGRCZSgiY29udGV4
dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMSkudHlwZSIsICJjb250ZXh0LkZMT0FUX1ZFQzQi
KTsKIHNob3VsZEJlKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAxKS5zaXplIiwg
IjEiKTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAyKSIp
Owotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFMVUUi
KTsKK3Nob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiMCIpOwogc2hvdWxkVGhyb3coImNv
bnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIC0xKSIpOwotc2hvdWxkQmUoImNvbnRleHQu
Z2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKK3Nob3VsZEJlKCJjb250ZXh0
LmdldEVycm9yKCkiLCAiMCIpOwogc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0QWN0aXZlQXR0cmli
KG51bGwsIDApIik7CiBzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgIjAiKTsKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1j
b250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhh
dmlvdXIuanMJKHJldmlzaW9uIDUxOTYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBkZXNjcmlwdGlvbigiVGVzdHMgY2FsbGluZyBX
ZWJHTCBBUElzIHdpdGggb2JqZWN0cyBmcm9tIG90aGVyIGNvbnRleHRzIik7CiAKLXZhciBjb250
ZXh0QSA9IGNyZWF0ZTNEQ29udGV4dCgpOwotdmFyIGNvbnRleHRCID0gY3JlYXRlM0RDb250ZXh0
KCk7Cit2YXIgY29udGV4dEEgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgpOwordmFyIGNvbnRleHRC
ID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKIHZhciBwcm9ncmFtQSA9IGxvYWRTdGFuZGFyZFBy
b2dyYW0oY29udGV4dEEpOwogdmFyIHByb2dyYW1CID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250
ZXh0Qik7CiB2YXIgc2hhZGVyQSA9IGxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihjb250ZXh0QSk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1v
YmplY3QtYmVoYXZpb3VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanMJKHJldmlzaW9uIDUx
OTYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL251bGwt
b2JqZWN0LWJlaGF2aW91ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIGRlc2Ny
aXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aG91dCBwcm92aWRpbmcgdGhlIG5l
Y2Vzc2FyeSBvYmplY3RzIik7CiAKLXZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7Cit2
YXIgY29udGV4dCA9IGNyZWF0ZTNERGVidWdDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbSA9IGxvYWRT
dGFuZGFyZFByb2dyYW0oY29udGV4dCk7CiB2YXIgc2hhZGVyID0gbG9hZFN0YW5kYXJkVmVydGV4
U2hhZGVyKGNvbnRleHQpOwogCkBAIC0xOCw4ICsxOCwxMCBAQCBzaG91bGRCZVVuZGVmaW5lZCgi
Y29udGV4dC5iaW5kQnVmZmVyKGNvCiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5iaW5kRnJh
bWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJj
b250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5SRU5ERVJCVUZGRVIsIDApIik7CiBzaG91
bGRCZVVuZGVmaW5lZCgiY29udGV4dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIDAp
Iik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihj
b250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHQuUkVO
REVSQlVGRkVSLCAwKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZnJhbWVidWZmZXJU
ZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Y29udGV4dC5URVhUVVJFXzJELCAwLCAwKSIpOworLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgdHdv
IHRlc3RzIHNob3VsZCBzdGF0ZSBzaG91bGRUaHJvdywgbm90IHNob3VsZEJlVW5kZWZpbmVkCisv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzOTEKKy8vIHNob3Vs
ZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHQuRlJB
TUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5ERVJCVUZGRVIs
IDApIik7CisvLyBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0
LlRFWFRVUkVfMkQsIDAsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtUGFy
YW1ldGVyKHVuZGVmaW5lZCwgMCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1J
bmZvTG9nKHVuZGVmaW5lZCwgMCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlclBh
cmFtZXRlcih1bmRlZmluZWQsIDApIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9zY3JpcHQtdGVzdHMvdW5pZm9ybS1sb2NhdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvdW5pZm9ybS1sb2NhdGlvbi5q
cwkocmV2aXNpb24gNTE5NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3Jp
cHQtdGVzdHMvdW5pZm9ybS1sb2NhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aCBvYmplY3RzIGZy
b20gb3RoZXIgY29udGV4dHMiKTsKIAotdmFyIGNvbnRleHRBID0gY3JlYXRlM0RDb250ZXh0KCk7
Ci12YXIgY29udGV4dEIgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250ZXh0QSA9IGNyZWF0
ZTNERGVidWdDb250ZXh0KCk7Cit2YXIgY29udGV4dEIgPSBjcmVhdGUzRERlYnVnQ29udGV4dCgp
OwogdmFyIHByb2dyYW1BMSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dEEpOwogdmFyIHBy
b2dyYW1BMiA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dEEpOwogdmFyIHByb2dyYW1CID0g
bG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0Qik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>