<?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>116889</bug_id>
          
          <creation_ts>2013-05-28 14:38:31 -0700</creation_ts>
          <short_desc>fourthTier: The baseline jit and LLint should use common slow paths</short_desc>
          <delta_ts>2013-06-12 11:30:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>894522</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-05-28 14:38:31 -0700</bug_when>
    <thetext>To reduce the number of trampoline methods and generally clean up the code in preparation for utilizing the C stack, we should reduce the number of slow paths.  This change is to eliminate nearly identical slow paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894543</commentid>
    <comment_count>1</comment_count>
      <attachid>203095</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-05-28 14:55:17 -0700</bug_when>
    <thetext>Created attachment 203095
Work in progress

This patch compiles and runs correctly on X86 and X86_64.  Working through ARMv7 issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894602</commentid>
    <comment_count>2</comment_count>
      <attachid>203106</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-05-28 16:41:41 -0700</bug_when>
    <thetext>Created attachment 203106
Patch

Builds and passes JSC tests on X86_64 and X86.  Speculative fixes for other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894614</commentid>
    <comment_count>3</comment_count>
      <attachid>203106</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-05-28 17:32:52 -0700</bug_when>
    <thetext>Comment on attachment 203106
Patch

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

Do you have benchmark numbers to confirm that this does not impact perf?

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:716
&gt; +//    ASSERT(callFrame == vm-&gt;topCallFrame || callFrame == callFrame-&gt;lexicalGlobalObject()-&gt;globalExec() || callFrame == callFrame-&gt;dynamicGlobalObject()-&gt;globalExec());

Why comment out this assert?

&gt; Source/JavaScriptCore/jit/JITExceptions.h:43
&gt; +    // 

Why the blank comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895269</commentid>
    <comment_count>4</comment_count>
      <attachid>203289</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-05-29 16:44:06 -0700</bug_when>
    <thetext>Created attachment 203289
Updated patch addressing reviewer comments

I had commented out the ASSERT during development.  Fixed the reason that it was failing on 32_64 builds by adding in the storePtr(callFrameRegister, &amp;m_vm-&gt;topCallFrame); back in at the end of privateCompileCTINativeCall().

Also removed the bogus empty comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896110</commentid>
    <comment_count>5</comment_count>
      <attachid>203289</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-01 10:14:25 -0700</bug_when>
    <thetext>Comment on attachment 203289
Updated patch addressing reviewer comments

Shouldn&apos;t there be a bunch of stuff removed from JITStubs.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896564</commentid>
    <comment_count>6</comment_count>
      <attachid>203617</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-03 11:56:30 -0700</bug_when>
    <thetext>Created attachment 203617
Patch with redundant hit stubs removed

(In reply to comment #5)
&gt; (From update of attachment 203289 [details])
&gt; Shouldn&apos;t there be a bunch of stuff removed from JITStubs.cpp?

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898325</commentid>
    <comment_count>7</comment_count>
      <attachid>204074</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-07 16:45:30 -0700</bug_when>
    <thetext>Created attachment 204074
Patch for landing with minor merge up changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898327</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-07 16:46:37 -0700</bug_when>
    <thetext>Committed r151342: &lt;http://trac.webkit.org/changeset/151342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898329</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-07 17:00:26 -0700</bug_when>
    <thetext>I&apos;m pretty sure this broke Kraken in debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898361</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-07 19:12:35 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/151345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898367</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-07 21:12:48 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;m pretty sure this broke Kraken in debug build.

Looks like there were a couple of emitSlow_op_*() functions where I didn&apos;t load the return register (rax on X86_64) with the result of the operation after the call.  I fixed the ones I found and kraken works.  I&apos;ll spend a little more time testing before relanding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898395</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-08 09:53:44 -0700</bug_when>
    <thetext>This is blocking the patch I&apos;m working on, since I built on top of JITSlowPathCall :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898548</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-09 22:17:37 -0700</bug_when>
    <thetext>I took your diagnosis and fixed and re-landed this patch in &lt;http://trac.webkit.org/changeset/151362&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898711</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-10 13:35:23 -0700</bug_when>
    <thetext>Darn, looks like this is still crashing at r151362:

run-webkit-tests --debug --verbose fast/workers/stress-js-execution.html fast/workers/termination-early.html fast/workers/stress-js-execution.html fast/workers/termination-early.html

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef

Thread 14 Crashed:: WebCore: Worker
0   com.apple.JavaScriptCore      	0x000000010954c9d0 JSC::JSActivation::tearOff(JSC::VM&amp;) + 96 (JSActivation.h:154)
1   com.apple.JavaScriptCore      	0x0000000109547466 JSC::Interpreter::unwindCallFrame(JSC::ExecState*&amp;, JSC::JSValue, unsigned int&amp;, JSC::CodeBlock*&amp;) + 550 (Interpreter.cpp:499)
2   com.apple.JavaScriptCore      	0x0000000109548841 JSC::Interpreter::throwException(JSC::ExecState*&amp;, JSC::JSValue&amp;, unsigned int) + 1137 (Interpreter.cpp:779)
3   com.apple.JavaScriptCore      	0x000000010956be06 JSC::genericThrow(JSC::VM*, JSC::ExecState*, JSC::JSValue, unsigned int) + 166 (JITExceptions.cpp:56)
4   com.apple.JavaScriptCore      	0x000000010956bf6c JSC::jitThrowNew(JSC::VM*, JSC::ExecState*, JSC::JSValue) + 60 (JITExceptions.cpp:80)
5   com.apple.JavaScriptCore      	0x000000010958f37c cti_vm_throw_slowpath + 60 (JITStubs.cpp:2230)
6   com.apple.JavaScriptCore      	0x0000000109584db9 ctiVMThrowTrampolineSlowpath + 8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898719</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-10 14:15:59 -0700</bug_when>
    <thetext>Rolled out in r151401.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899644</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-12 11:30:23 -0700</bug_when>
    <thetext>Fixed test failure and rolled back in with change set &lt;https://trac.webkit.org/changeset/151504&gt;

Fixed involved NOT processing exceptions through the llint path when we call a common slow path from the JIT.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203095</attachid>
            <date>2013-05-28 14:55:17 -0700</date>
            <delta_ts>2013-05-28 16:41:41 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>116889-wip.patch</filename>
            <type>text/plain</type>
            <size>119465</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwODMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAxMy0wNS0yOCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBmb3VydGhUaWVyOiBUaGUgYmFzZWxpbmUgaml0IGFuZCBMTGludCBzaG91bGQgdXNlIGNv
bW1vbiBzbG93IHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTY4ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNb3ZlZCB0aGUgbGxpbnRfc2xvd19wYXRocyB0aGF0IHJldHVybiBKU1ZhbHVlIGFs
b25nIHdpdGggc2V2ZXJhbCBvdGhlcnMgdG8gQ29tbW9uU2xvd1BhdGhzLmNwcC4KKyAgICAgICAg
RWxpbWluYXRlZCB0aGUgcmVsYXRlZCBKSVQgc3R1YnMuICBDaGFuZ2VzIHRoZSBiYXNlbGluZSBK
SVQgdG8gY2FsbCB0aGVzZSBuZXcgY29tbW9uIHN0dWJzLgorICAgICAgICBBZGRlZCBhIHNpbXBs
ZSBzbG93IHBhdGggY2FsbCBjbGFzcyB0aGF0IHVzZXMgYXJndW1lbnQgcmVnaXN0ZXJzIG9yIHRo
ZSBzdGFjayBpbnN0ZWFkIG9mCisgICAgICAgIEpJVFN0YWNrRnJhbWUuICBDaGFuZ2VzIHRoZSBl
eGNlcHRpb24gbWVjaGFuaXNtIGZvciB0byBjaGVjayBmb3IgYW4gZXhjZXB0aW9uIGFmdGVyIG1h
a2luZworICAgICAgICBhIHNsb3dwYXRoIGNhbGwgaW5zdGVhZCBvZiByZXR1cm5pbmcgdG8gdGhl
IGhhbmRsZXIgZGlyZWN0bHkgZm9ybSB0aGUgc2xvd3BhdGggZnVuY3Rpb24uCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmFk
ZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2xzaGlm
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF91cnNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luYyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW9kKToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYWRkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc3ViKToK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2xz
aGlmdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9iaXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0eG9y
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX211bCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldEV4Y2VwdGlvbkxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6Z2VuZXJpY1Rocm93KToKKyAgICAgICAgKEpTQzo6aml0VGhyb3dOZXcpOgorICAgICAg
ICAqIGppdC9KSVRFeGNlcHRpb25zLmg6CisgICAgICAgIChFeGNlcHRpb25IYW5kbGVyKToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
dHJjYXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX25vdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0eG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9iaXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25zdHJp
Y3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zdHJjYXQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX25vdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3Bfc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25zdHJpY3RlcSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90
b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlf
dmFsKToKKyAgICAgICAgKiBqaXQvSklUU3R1YkNhbGwuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1
YkNhbGw6OkpJVFN0dWJDYWxsKToKKyAgICAgICAgKEpJVFN0dWJDYWxsKToKKyAgICAgICAgKEpT
Qzo6SklUU3R1YkNhbGw6OnNldFBDKToKKyAgICAgICAgKEpTQzo6SklUU3R1YkNhbGw6OnNldFJl
dHVyblR5cGVJbnQpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6
OmN0aV92bV90aHJvd19zbG93cGF0aCk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAg
ICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogaml0L1Nsb3dQYXRoQ2FsbC5oOiBBZGRlZC4KKyAgICAgICAgKEpJVFNsb3dQYXRo
Q2FsbCk6CisgICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToK
KyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChMTEludCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChTbG93UGF0aFJldHVyblR5cGUpOgorICAgICAgICAoSlNDOjplbmNvZGVSZXN1bHQp
OgorICAgICAgICAoSlNDOjpkZWNvZGVSZXN1bHQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5oOgorICAgICAgICAoSlNWYWx1ZSk6CisKIDIwMTMtMDUtMjggIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBGVEwgc2hvdWxkIHN1cHBv
cnQgQXJpdGhNaW4vQXJpdGhNYXgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNDk4MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTg3LDYgKzU4Nyw3
IEBACiAJCTY1MTEyMkZEMTQwNDZBNEMwMDJCMTAxRCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJG
NUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9Owog
CQk2NTExMjJGRTE0MDQ2QTRDMDAyQjEwMUQgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5
QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwogCQk2NTExMjMwNzE0MDQ2QjBBMDAyQjEwMUQg
LyogdGVzdFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi87IH07
CisJCTY1MTk5NzZFMTc0NDNENjgwMDczOTNDRSAvKiBDb21tb25TbG93UGF0aHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxOTk3NkMxNzQ0MzU0
ODAwNzM5M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi87IH07CiAJCTY1MzAzRDY0MTQ0N0I5
RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tl
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkw
RSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovOyB9OwogCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTI1LDYg
KzE1MjYsNyBAQAogCQk2NTA3RDI5NzBFODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RSZWdFeHAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQg
LyogdGVzdFJlZ0V4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gdGVzdFJlZ0V4cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJ
NjUxOTk3NkMxNzQ0MzU0ODAwNzM5M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb21tb25TbG93UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTQwMEMwRjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJy
YXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5TmFt
ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MDBDMTAwQTY5QkFG
MjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTUzNCw2ICsxNTM2LDcgQEAKIAkJNjU2MjFFNkMwODlFODU5NzAwNzYwRjM1IC8qIFBy
b3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB9OwogCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0
aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29t
cGlsYXRpb25JbmZvLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyog
VW51c2VkUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbnVzZWRQ
b2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QUM4M0YxMTc0QzE3QUUw
MDExRDhBQiAvKiBTbG93UGF0aENhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xvd1BhdGhDYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAv
KiBQcm90ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFByb3RlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OwogCQk2NUM3QTE3MTBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dyYXBwZXJPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUM3QTE3MjBBOEVBQUNCMDBGQTM3RUEgLyog
SlNXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dy
YXBwZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTgsNiArMjIy
MSw3IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY1QUM4M0YxMTc0QzE3QUUwMDExRDhB
QiAvKiBTbG93UGF0aENhbGwuaCAqLywKIAkJCQkwRjczRDdBQjE2NUExNDJBMDBBQ0FCNzEgLyog
Q2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8sCiAJCQkJMEY3M0Q3QUMxNjVBMTQyQTAwQUNB
QjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQy
MDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTI1MzgsNiArMjU0Miw3IEBA
CiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTE5OTc2QzE3NDQzNTQ4MDA3MzkzQ0Ug
LyogQ29tbW9uU2xvd1BhdGhzLmNwcCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQg
LyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xp
c3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAq
LywKQEAgLTM5OTUsNiArNDAwMCw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk2NTE5
OTc2RTE3NDQzRDY4MDA3MzkzQ0UgLyogQ29tbW9uU2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1bWVudHMuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE0OTgyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxMSw3ICs3MTEsNyBAQCB2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKFZNKiB2bSwg
CiB2b2lkIEludGVycHJldGVyOjphZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiBlcnJvcikKIHsKICAgICBWTSogdm0gPSAmY2FsbEZyYW1lLT52
bSgpOwotICAgIEFTU0VSVChjYWxsRnJhbWUgPT0gdm0tPnRvcENhbGxGcmFtZSB8fCBjYWxsRnJh
bWUgPT0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSB8fCBj
YWxsRnJhbWUgPT0gY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSk7CisvLyAgICBBU1NFUlQoY2FsbEZyYW1lID09IHZtLT50b3BDYWxsRnJhbWUgfHwgY2FsbEZy
YW1lID09IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkgfHwg
Y2FsbEZyYW1lID09IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCkpOwogICAgIGlmIChlcnJvci0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCB2bS0+cHJvcGVydHlO
YW1lcy0+c3RhY2spKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDE0OTgyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tTCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNsdWRl
ICJTbG93UGF0aENhbGwuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTU2LDM5ICsx
NTcsMzMgQEAgdm9pZCBKSVQ6OmVtaXRUaW1lb3V0Q2hlY2soKQogCiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICNkZWZpbmUgREVGSU5FX0JJTkFSWV9PUChuYW1lKSBcCi0gICAgY2FzZSBuYW1lOiB7
IFwKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpXyMjbmFtZSk7IFwKLSAg
ICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCk7IFwKLSAgICAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsgXAotICAgICAgICBORVhUX09QQ09ERShuYW1lKTsgXAorICAgIGNhc2Ug
b3BfIyNuYW1lOiB7IFwKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAgICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7IFwKKyAgICAgICAgTkVYVF9PUENPREUob3BfIyNuYW1lKTsgXAogICAg
IH0KIAogI2RlZmluZSBERUZJTkVfVU5BUllfT1AobmFtZSkgXAotICAgIGNhc2UgbmFtZTogeyBc
Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV8jI25hbWUpOyBcCi0gICAg
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
OyBcCi0gICAgICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7IFwKLSAgICAgICAgTkVYVF9PUENPREUobmFtZSk7IFwKKyAgICBjYXNlIG9wXyMjbmFtZTog
eyBcCisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOyBcCisgICAgICAgIE5FWFRfT1BDT0RFKG9wXyMjbmFtZSk7IFwKICAgICB9CiAKICNlbHNl
IC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKICNkZWZpbmUgREVGSU5FX0JJTkFSWV9PUChuYW1lKSBc
Ci0gICAgY2FzZSBuYW1lOiB7IFwKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpXyMjbmFtZSk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDIpOyBcCi0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QyKTsgXAotICAgICAgICBz
dHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOyBcCi0gICAgICAg
IE5FWFRfT1BDT0RFKG5hbWUpOyBcCisgICAgY2FzZSBvcF8jI25hbWU6IHsgXAorICAgICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAorICAgICAg
ICBORVhUX09QQ09ERShvcF8jI25hbWUpOyBcCiAgICAgfQogCiAjZGVmaW5lIERFRklORV9VTkFS
WV9PUChuYW1lKSBcCi0gICAgY2FzZSBuYW1lOiB7IFwKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpXyMjbmFtZSk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDIpOyBcCi0gICAgICAgIHN0dWJD
YWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7IFwKLSAgICAgICAgTkVY
VF9PUENPREUobmFtZSk7IFwKKyAgICBjYXNlIG9wXyMjbmFtZTogeyBcCisgICAgICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfIyNuYW1lKTsgXAorICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCisgICAgICAgIE5F
WFRfT1BDT0RFKG9wXyMjbmFtZSk7IFwKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82
NCkKIApAQCAtMjQ0LDE1ICsyMzksMTUgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgICAgICBE
RUZJTkVfQklOQVJZX09QKG9wX2RlbF9ieV92YWwpCi0gICAgICAgIERFRklORV9CSU5BUllfT1Ao
b3BfaW4pCi0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfbGVzcykKLSAgICAgICAgREVGSU5F
X0JJTkFSWV9PUChvcF9sZXNzZXEpCi0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfZ3JlYXRl
cikKLSAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9ncmVhdGVyZXEpCi0gICAgICAgIERFRklO
RV9VTkFSWV9PUChvcF9pc19mdW5jdGlvbikKLSAgICAgICAgREVGSU5FX1VOQVJZX09QKG9wX2lz
X29iamVjdCkKLSAgICAgICAgREVGSU5FX1VOQVJZX09QKG9wX3R5cGVvZikKKyAgICAgICAgREVG
SU5FX0JJTkFSWV9PUChkZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKGluKQor
ICAgICAgICBERUZJTkVfQklOQVJZX09QKGxlc3MpCisgICAgICAgIERFRklORV9CSU5BUllfT1Ao
bGVzc2VxKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKGdyZWF0ZXIpCisgICAgICAgIERFRklO
RV9CSU5BUllfT1AoZ3JlYXRlcmVxKQorICAgICAgICBERUZJTkVfVU5BUllfT1AoaXNfZnVuY3Rp
b24pCisgICAgICAgIERFRklORV9VTkFSWV9PUChpc19vYmplY3QpCisgICAgICAgIERFRklORV9V
TkFSWV9PUCh0eXBlb2YpCiAKICAgICAgICAgREVGSU5FX09QKG9wX2FkZCkKICAgICAgICAgREVG
SU5FX09QKG9wX2JpdGFuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24g
MTQ5ODI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjg4LDYgKzI4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHZvaWQgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKENvZGVCbG9jayogY29kZWJsb2NrLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIAogICAgIGNs
YXNzIEpJVCA6IHByaXZhdGUgSlNJbnRlcmZhY2VKSVQgeworICAgICAgICBmcmllbmQgY2xhc3Mg
SklUU2xvd1BhdGhDYWxsOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7CiAgICAg
ICAgIGZyaWVuZCBzdHJ1Y3QgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOwogCkBAIC02MTMs
NyArNjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0VGFnQXNCb29s
SW1tZWRpYXRlKFJlZ2lzdGVySUQgcmVnKTsKICAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5QXJp
dGhPcChPcGNvZGVJRCwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBzcmMxLCB1bnNpZ25lZCBzcmMy
LCBPcGVyYW5kVHlwZXMgb3BpKTsKLSAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5QXJpdGhPcFNs
b3dDYXNlKE9wY29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWdu
ZWQgZHN0LCB1bnNpZ25lZCBzcmMxLCB1bnNpZ25lZCBzcmMyLCBPcGVyYW5kVHlwZXMsIGJvb2wg
b3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENh
c2UpOworICAgICAgICB2b2lkIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoSW5zdHJ1Y3Rp
b24qLCBPcGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIHVuc2lnbmVk
IGRzdCwgdW5zaWduZWQgc3JjMSwgdW5zaWduZWQgc3JjMiwgT3BlcmFuZFR5cGVzLCBib29sIG9w
MUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNl
KTsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElk
ZW50aWZpZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1
bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljMzJfNjQuY3BwCShyZXZpc2lvbiAxNDk4MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5o
IgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgog
CiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC04MCw5ICs4MSw5IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24KICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7IC8vIDB4N2ZmZmZmZmYgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRv
dWJsZSBjaGVjawogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25lZ2F0
ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAgICBzdHViQ2Fs
bC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZWdhdGUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQgb3Bjb2RlLCB1bnNp
Z25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmRpdGlvbikKQEAgLTE5OCwxMCArMTk5LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2xzaGlmdChJbnN0cnVjdGlvbgogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMy
IGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCi0gICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2xzaGlmdCk7Ci0gICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJD
YWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2xzaGlmdCk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIp
OwogfQogCiAvLyBSaWdodFNoaWZ0ICg+PikgYW5kIFVuc2lnbmVkUmlnaHRTaGlmdCAoPj4+KSBo
ZWxwZXIKQEAgLTI5NiwxMCArMjk2LDkgQEAgdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0U2xvd0Nh
c2UoSW5zdHJ1YwogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBDYW4ndCByZXBy
ZXNlbnQgdW5zaWduZWQgcmVzdWx0IGFzIGFuIGltbWVkaWF0ZQogICAgIH0KIAotICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGlzVW5zaWduZWQgPyBjdGlfb3BfdXJzaGlmdCA6IGN0aV9v
cF9yc2hpZnQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIGlzVW5zaWduZWQg
PyBzbG93X3BhdGhfdXJzaGlmdCA6IHNsb3dfcGF0aF9yc2hpZnQpOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lz
dGVyKTsKIH0KIAogLy8gUmlnaHRTaGlmdCAoPj4pCkBAIC0zNjEsMTAgKzM2MCw5IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24KICAgICAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIg
Y2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXRhbmQpOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
b3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXRhbmQpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNh
bGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogLy8gQml0T3IgKHwpCkBAIC00MDIsMTAgKzQwMCw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRvcihJbnN0cnVjdGlvbioKICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
aW50MzIgY2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXRv
cik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2JpdG9yKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1Qw
LCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIEJpdFhvciAoXikKQEAgLTQ0MywxMCArNDQw
LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdHhvcihJbnN0cnVjdGlvbgogICAgICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBpbnQzMiBjaGVjawogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X2JpdHhvcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Jp
dHhvcik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1Qx
LCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbmMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTUwNiwxMCArNTAyLDkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJyZQogCiAgICAgaWYgKCF0eXBlcy5m
aXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8fCAhdHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigp
KSB7CiAgICAgICAgIGFkZFNsb3dDYXNlKCk7Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9hZGQpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwot
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgICAgICBzdHViQ2FsbC5jYWxs
KGRzdCk7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfYWRkKTsKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKKyAgICAgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjExLDEwICs2MDYsOSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfYWRkKEluc3RydWN0aW9uKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYWRkKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1
YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYWRkKTsKKyAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7
CiB9CiAKIC8vIFN1YnRyYWN0aW9uICgtKQpAQCAtNjg5LDcgKzY4Myw2IEBAIHZvaWQgSklUOjpl
bWl0U3ViMzJDb25zdGFudCh1bnNpZ25lZCBkc3QKIHZvaWQgSklUOjplbWl0U2xvd19vcF9zdWIo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKQEAgLTcxNSwxMCArNzA4LDkgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3N1YihJbnN0cnVjdGlvbiogYwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3N1Yik7Ci0gICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAg
IHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3N1Yik7CisgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0
ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEJpbmFyeURvdWJsZU9wKE9wY29kZUlEIG9wY29kZUlE
LCB1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCBPcGVyYW5kVHlwZXMg
dHlwZXMsIEp1bXBMaXN0JiBub3RJbnQzMk9wMSwgSnVtcExpc3QmIG5vdEludDMyT3AyLCBib29s
IG9wMUlzSW5SZWdpc3RlcnMsIGJvb2wgb3AySXNJblJlZ2lzdGVycykKQEAgLTEwMjIsMTEgKzEw
MTQsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiBjCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBMYWJlbCBqaXRTdHViQ2FsbCh0aGlzKTsKLSAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbXVsKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChv
cDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChk
c3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfbXVsKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVt
aXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIERp
dmlzaW9uICgvKQpAQCAtMTA5Nyw4ICsxMDg3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KElu
c3RydWN0aW9uKiBjdXJyZQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAg
ICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCiAgICAg
T3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYgKCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkK
QEAgLTExMTMsMTAgKzExMDIsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0
aW9uKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlz
LCBjdGlfb3BfZGl2KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfZGl2KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVn
VDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIE1vZCAoJSkKQEAgLTExNTIs
MTAgKzExNDAsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAg
ICAgbnVtZXJhdG9yUG9zaXRpdmUubGluayh0aGlzKTsKICAgICBlbWl0U3RvcmVJbnQzMihkc3Qs
IHJlZ1QxLCAob3AxID09IGRzdCB8fCBvcDIgPT0gZHN0KSk7CiAjZWxzZQotICAgIEpJVFN0dWJD
YWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9tb2QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxs
KGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAg
ZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKICNlbmRp
ZgogfQogCkBAIC0xMTYzLDE3ICsxMTUwLDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2Qo
SW5zdHJ1Y3Rpb24qIGMKIHsKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgIHVuc2ln
bmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWdu
ZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBv
cDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX21vZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxs
LmNhbGwocmVzdWx0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKKyAgICBlbWl0TG9hZChyZXN1bHQsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKICAgICBVTlVT
RURfUEFSQU0oaXRlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRo
bWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYy5jcHAJKHJldmlzaW9uIDE0OTgyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUg
IlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogCiAjaWZuZGVmIE5E
RUJVRwogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0yMTksMTQgKzIyMCwxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9u
ZWdhdGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIDB4N2ZmZmZm
ZmYgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvdWJsZSBjaGVjawogCi0gICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25lZ2F0ZSk7Ci0gICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X25lZ2F0ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI0OSwxNyArMjUwLDEyIEBAIHZvaWQg
SklUOjplbWl0X29wX2xzaGlmdChJbnN0cnVjdGlvbiogY3UKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIFVOVVNFRF9QQVJBTShvcDEpOwotICAgIFVOVVNFRF9Q
QVJBTShvcDIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2xzaGlmdCk7Ci0gICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJl
Z1QyKTsKLSAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9sc2hpZnQpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1
bHQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zMDMsMzEgKzI5OSwyNSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcnNoaWZ0KEluc3RydWN0aW9uCiAgICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X3JzaGlmdCk7CisgICAgVU5VU0VEX1BBUkFNKG9wMSk7CiAKLSAgICBpZiAoaXNPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludChvcDIpKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3Ay
LCByZWdUMik7Ci0gICAgfSBlbHNlIHsKKworICAgIGVsc2UgewogICAgICAgICBpZiAoc3VwcG9y
dHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSkgewogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwotICAgICAgICAgICAgLy8gV2UncmUgcmVsb2FkaW5nIG9wMSB0byByZWdU
MCBhcyB3ZSBjYW4gbm8gbG9uZ2VyIGd1YXJhbnRlZSB0aGF0Ci0gICAgICAgICAgICAvLyB3ZSBo
YXZlIG5vdCBtdW5nZWQgdGhlIG9wZXJhbmQuICBJdCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gc2hp
ZnRlZAotICAgICAgICAgICAgLy8gY29ycmVjdGx5LCBidXQgaXQgc3RpbGwgd2lsbCBub3QgaGF2
ZSBiZWVuIHRhZ2dlZC4KLSAgICAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVn
VDApOwotICAgICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwotICAgICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDAp
OwotICAgICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDIpOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcnNoaWZ0KTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Vyc2hpZnQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTQxOCwxMCArNDA4LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3Vyc2hpZnQoSW5zdHJ1Y3RpbwogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8v
IENhbid0IHJlcHJlc2VudCB1bnNpZ25lZCByZXN1bHQgYXMgYW4gaW1tZWRpYXRlCiAgICAgfQog
ICAgIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF91cnNoaWZ0KTsKLSAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChvcDIsIHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF91
cnNoaWZ0KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9w
Y29kZUlELCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKQEAgLTYwNywyNiArNTk2LDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2JpdGFuZChJbnN0cnVjdGlvbiogY3UKIHZvaWQgSklUOjplbWl0U2xvd19vcF9i
aXRhbmQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgewotICAgICAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfYml0YW5kKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
b3AxLCByZWdUMik7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICAg
ICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOwotICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVJbnQob3AyKSkgewotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlz
LCBjdGlfb3BfYml0YW5kKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwot
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIsIHJlZ1QyKTsKLSAgICAgICAgc3R1YkNh
bGwuY2FsbChyZXN1bHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9iaXRhbmQpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChv
cDEsIHJlZ1QyKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgICAg
ICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7Ci0gICAgfQorCisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXRhbmQpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1
bHQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC02NDQsMTMgKzYxOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5jKEluc3RydWN0aW9uKiBjCiB7CiAgICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAotICAgIEp1bXAgbm90SW1tID0gZ2V0U2xvd0Nhc2Uo
aXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2luYyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDApOwotICAgIG5vdEltbS5saW5rKHRoaXMpOwot
ICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9pbmMpOwotICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKHNyY0RzdCk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAt
NjY4LDEzICs2NDEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlYyhJbnN0cnVjdGlvbiog
YwogewogICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CiAKLSAgICBKdW1wIG5vdEltbSA9IGdldFNsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWMpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNE
c3QsIHJlZ1QwKTsKLSAgICBub3RJbW0ubGluayh0aGlzKTsKLSAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfZGVjKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7
Ci0gICAgc3R1YkNhbGwuY2FsbChzcmNEc3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gQkVHSU46IE9QX01PRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Ki8KQEAgLTcxOSwxMCArNjkwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChJbnN0cnVj
dGlvbiogYwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9tb2QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QzKTsKLSAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChyZWdUMik7Ci0gICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfbW9kKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9CiAKICNlbHNlIC8vIENQVShYODYpIHx8IENQ
VShYODZfNjQpCkBAIC03MzMsMTAgKzcwMywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5z
dHJ1Y3Rpb24qIGN1cnJlCiAgICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX21vZCk7Ci0g
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdUMik7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AyLCByZWdUMik7Ci0gICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAgIFVOVVNF
RF9QQVJBTShvcDEpOworICAgIFVOVVNFRF9QQVJBTShvcDIpOworCisgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2Qp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQpAQCAtNzk2LDcgKzc2OCw3IEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcChP
cGNvZGVJRCAKICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7
CiB9CiAKLXZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKE9wY29kZUlEIG9w
Y29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCB1bnNpZ25lZCBy
ZXN1bHQsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCBPcGVyYW5kVHlwZXMgdHlwZXMsIGJv
b2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFz
dENhc2UpCit2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCBvcGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCBvcDEsIHVu
c2lnbmVkIG9wMiwgT3BlcmFuZFR5cGVzIHR5cGVzLCBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZh
c3RDYXNlLCBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKQogewogICAgIC8vIFdlIGFz
c3VtZSB0aGF0IHN1YnRyYWN0aW5nIFRhZ1R5cGVOdW1iZXIgaXMgZXF1aXZhbGVudCB0byBhZGRp
bmcgRG91YmxlRW5jb2RlT2Zmc2V0LgogICAgIENPTVBJTEVfQVNTRVJUKCgoVGFnVHlwZU51bWJl
ciArIERvdWJsZUVuY29kZU9mZnNldCkgPT0gMCksIFRhZ1R5cGVOdW1iZXJfUExVU19Eb3VibGVF
bmNvZGVPZmZzZXRfRVFVQUxTXzApOwpAQCAtODE1LDE3ICs3ODcsMTIgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoTwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
SW50ZWdlciBvdmVyZmxvdyBjYXNlIC0gd2UgY291bGQgaGFuZGxlIHRoaXMgaW4gSklUIGNvZGUs
IGJ1dCB0aGlzIGlzIGxpa2VseSByYXJlLgogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9tdWwgJiYg
IW9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlICYmICFvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2Fz
ZSkgLy8gb3BfbXVsIGhhcyBhbiBleHRyYSBzbG93IGNhc2UgdG8gaGFuZGxlIDAgKiBuZWdhdGl2
ZSBudW1iZXIuCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKG9wMSwgcmVnVDApOwogCiAgICAgTGFiZWwgc3R1YkZ1bmN0aW9uQ2FsbCh0aGlz
KTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBvcGNvZGVJRCA9PSBvcF9hZGQgPyBj
dGlfb3BfYWRkIDogb3Bjb2RlSUQgPT0gb3Bfc3ViID8gY3RpX29wX3N1YiA6IGN0aV9vcF9tdWwp
OwotICAgIGlmIChvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSB8fCBvcDJIYXNJbW1lZGlhdGVJ
bnRGYXN0Q2FzZSkgewotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDAp
OwotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDEpOwotICAgIH0KLSAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBvcGNvZGVJRCA9PSBvcF9h
ZGQgPyBzbG93X3BhdGhfYWRkIDogb3Bjb2RlSUQgPT0gb3Bfc3ViID8gc2xvd19wYXRoX3N1YiA6
IHNsb3dfcGF0aF9tdWwpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKICAgICBKdW1wIGVuZCA9IGp1bXAoKTsKIAog
ICAgIGlmIChvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSkgewpAQCAtODkzLDExICs4NjAsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgT3BlcmFuZFR5
cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpOwogCiAgICAgaWYgKCF0eXBlcy5maXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8fCAh
dHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigpKSB7Ci0gICAgICAgIGFkZFNsb3dDYXNlKCk7
Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9hZGQpOwotICAgICAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJlZ1QyKTsKLSAgICAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQob3AyLCByZWdUMik7Ci0gICAgICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAg
ICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9hZGQpOworICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05MzEsNyArODk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2FkZChJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0
Q2FzZSA9IGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSk7CiAgICAgYm9vbCBvcDJI
YXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9ICFvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSAmJiBp
c09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpOwotICAgIGNvbXBpbGVCaW5hcnlBcml0
aE9wU2xvd0Nhc2Uob3BfYWRkLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgb3AxSGFz
SW1tZWRpYXRlSW50RmFzdENhc2UsIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKTsKKyAgICBj
b21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BfYWRkLCBp
dGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2Us
IG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVs
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC05NzYsNyArOTQwLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX211bChJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBvcDFIYXNJ
bW1lZGlhdGVJbnRGYXN0Q2FzZSA9IGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkg
JiYgZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMSkgPiAwOwogICAgIGJvb2wgb3Ay
SGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSAhb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UgJiYg
aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSAmJiBnZXRDb25zdGFudE9wZXJhbmRJ
bW1lZGlhdGVJbnQob3AyKSA+IDA7Ci0gICAgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShv
cF9tdWwsIGl0ZXIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVzLCBvcDFIYXNJbW1lZGlhdGVJbnRG
YXN0Q2FzZSwgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOworICAgIGNvbXBpbGVCaW5hcnlB
cml0aE9wU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLCBvcF9tdWwsIGl0ZXIsIHJlc3VsdCwg
b3AxLCBvcDIsIHR5cGVzLCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSwgb3AySGFzSW1tZWRp
YXRlSW50RmFzdENhc2UpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwODIsMTAgKzEwNDYsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiBjCiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAgICAgfQogICAgIC8vIFRoZXJlIGlzIGFuIGV4dHJhIHNsb3cgY2FzZSBmb3IgKG9wMSAq
IC1OKSBvciAoLU4gKiBvcDIpLCB0byBjaGVjayBmb3IgMCBzaW5jZSB0aGlzIHNob3VsZCBwcm9k
dWNlIGEgcmVzdWx0IG9mIC0wLgotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9v
cF9kaXYpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVnVDIpOwotICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIpOwotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2Rpdik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9z
dWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTExMDYsNyArMTA2OSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9zdWIoSW5zdHJ1Y3Rpb24qIGMKICAgICB1bnNpZ25lZCBv
cDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0
eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kKTsKIAotICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2Uob3Bfc3ViLCBpdGVyLCBy
ZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgZmFsc2UsIGZhbHNlKTsKKyAgICBjb21waWxlQmluYXJ5
QXJpdGhPcFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3Bfc3ViLCBpdGVyLCByZXN1bHQs
IG9wMSwgb3AyLCB0eXBlcywgZmFsc2UsIGZhbHNlKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEVORDogT1BfQURELCBPUF9TVUIsIE9QX01VTCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gKi8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTQ5ODI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNzQg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0YXRpYyBib29sIGdldEV4Y2VwdGlvbkxvY2F0aW9u
KFZNKiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkJiBieXRlY29kZU9mZnNldCkK
K3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gMDsKKyAgICBB
U1NFUlQoIWNhbGxGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSk7CisgICAgQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkgPyBjYWxsRnJhbWUtPnRydWVD
YWxsZXJGcmFtZSgpIDogY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZy
YW1lRmxhZygpOworICAgIGJvb2wgY2FsbGZyYW1lSXNIb3N0ID0gY2FsbGVyRnJhbWUtPmFkZEhv
c3RDYWxsRnJhbWVGbGFnKCkgPT0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOworICAgIAorICAg
IGlmICghY2FsbEZyYW1lIHx8ICFjYWxsRnJhbWUtPmNvZGVCbG9jaygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBp
ZiAoIWNhbGxGcmFtZS0+aGFzUmV0dXJuUEMoKSkKKyAgICAgICAgY2FsbGZyYW1lSXNIb3N0ID0g
dHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQorICAgIGlmIChjYWxsRnJhbWUtPmlz
SW5saW5lQ2FsbEZyYW1lKCkpCisgICAgICAgIGNhbGxmcmFtZUlzSG9zdCA9IGZhbHNlOworI2Vu
ZGlmCisgICAgCisgICAgaWYgKGNhbGxmcmFtZUlzSG9zdCkgeworICAgICAgICAvLyBEb24ndCBu
ZWVkIHRvIGRlYWwgd2l0aCBpbmxpbmUgY2FsbGZyYW1lcyBoZXJlIGFzIGJ5IGRlZmluaXRpb24g
d2UgaGF2ZW4ndAorICAgICAgICAvLyBpbmxpbmVkIGEgY2FsbCB3aXRoIGFuIGludGVydmVuaW5n
IG5hdGl2ZSBjYWxsIGZyYW1lLgorI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgaWYgKGNvZGVCbG9jayAmJiBKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKSB7CisgICAgICAgICAgICB1bnNp
Z25lZCBjb2RlT3JpZ2luSW5kZXggPSBjYWxsRnJhbWUtPmNvZGVPcmlnaW5JbmRleEZvckRGRygp
OworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmNvZGVPcmlnaW4oY29k
ZU9yaWdpbkluZGV4KS5ieXRlY29kZUluZGV4OworICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAg
ICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsRnJhbWUtPmJ5dGVjb2RlT2Zmc2V0Rm9yTm9u
REZHQ29kZSgpOworI2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFC
TEUoTExJTlQpCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgICAgIGlmIChjYWxsRnJhbWUtPmlz
SW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaWNmID0g
Y2FsbEZyYW1lLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gaWNmLT5jYWxsZXIuYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIGlmIChJbmxpbmVDYWxs
RnJhbWUqIHBhcmVudENhbGxGcmFtZSA9IGljZi0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkgewor
ICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHBhcmVudENhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSBleGVjdXRhYmxl
LT5iYXNlbGluZUNvZGVCbG9ja0ZvcihwYXJlbnRDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JD
YWxsIDogQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5ld0NvZGVC
bG9jayk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5ld0NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25D
b3VudCgpID4gYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jayA9IG5l
d0NvZGVCbG9jazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjb2RlQmxvY2sg
JiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSkgewor
ICAgICAgICAgICAgQ29kZU9yaWdpbiBvcmlnaW47CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9j
ay0+Y29kZU9yaWdpbkZvclJldHVybihjYWxsRnJhbWUtPnJldHVyblBDKCksIG9yaWdpbikpCisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gb3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisgICAgICAgICAgICBpZiAo
SW5saW5lQ2FsbEZyYW1lKiBpY2YgPSBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oaWNmLT5leGVjdXRhYmxlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGljZi0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJsb2NrKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
bmV3Q29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPiBieXRlY29kZU9mZnNldCk7CisgICAg
ICAgICAgICAgICAgY29kZUJsb2NrID0gbmV3Q29kZUJsb2NrOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNl
bmRpZgorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRXhjZXB0aW9uSGFuZGxl
ciBnZW5lcmljVGhyb3coVk0qIHZtLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNl
cHRpb25WYWx1ZSwgdW5zaWduZWQgdlBDSW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhj
ZXB0aW9uVmFsdWUpOwpAQCAtNTgsMTAgKzEyNiwxOSBAQCBFeGNlcHRpb25IYW5kbGVyIGdlbmVy
aWNUaHJvdyhWTSogdm0sIEV4CiAgICAgdm0tPnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdyA9
IGNhdGNoUENGb3JJbnRlcnByZXRlcjsKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVChjYXRjaFJv
dXRpbmUpOwotICAgIEV4Y2VwdGlvbkhhbmRsZXIgZXhjZXB0aW9uSGFuZGxlciA9IHsgY2F0Y2hS
b3V0aW5lLCBjYWxsRnJhbWUgfTsKKyAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRs
ZXIgPSB7IGNhbGxGcmFtZSwgY2F0Y2hSb3V0aW5lfTsKICAgICByZXR1cm4gZXhjZXB0aW9uSGFu
ZGxlcjsKIH0KIAorRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvd05ldyhWTSogdm0sIEV4ZWNTdGF0
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlKQoreworICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gMDsKKyAgICBpZiAoIWdldEV4Y2VwdGlvbkxvY2F0aW9uKHZtLCBjYWxs
RnJhbWUsIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSAwOworICAg
IAorICAgIHJldHVybiBnZW5lcmljVGhyb3codm0sIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUs
IGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhWTSogdm0s
IEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRy
ZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7CiAgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyh2bSwgY2Fs
bEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMTQ5ODI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEy
ICs0MCwxNCBAQCBjbGFzcyBWTTsKIC8vIGZvciB0aGUgdGhyb3dpbmcgYW5kIGhhbmRsaW5nIGV4
Y2VwdGlvbnMuCiAKIHN0cnVjdCBFeGNlcHRpb25IYW5kbGVyIHsKLSAgICB2b2lkKiBjYXRjaFJv
dXRpbmU7CisgICAgLy8gCiAgICAgRXhlY1N0YXRlKiBjYWxsRnJhbWU7CisgICAgdm9pZCogY2F0
Y2hSb3V0aW5lOwogfTsKIAogRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coVk0qLCBFeGVj
U3RhdGUqLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCB2UENJbmRleCk7CiAKK0V4
Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3dOZXcoVk0qLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIGV4Y2Vw
dGlvblZhbHVlKTsKIEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3coVk0qLCBFeGVjU3RhdGUqLCBK
U1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE0OTgyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1ZhcmlhYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlNs
b3dQYXRoQ2FsbC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTY3LDE0ICsxNjgsOSBAQCBK
SVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAKICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoJnZtLT5leGNlcHRpb25Mb2NhdGlvbiksIHJlZ1QyKTsKICAgICBzdG9yZVB0cihy
ZWdUMSwgcmVnVDIpOwotICAgIHBva2UoY2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRP
RihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2b2lkKikpOwotICAg
IAotICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCAmbV92bS0+dG9wQ2FsbEZyYW1lKTsK
LSAgICAvLyBTZXQgdGhlIHJldHVybiBhZGRyZXNzLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihG
dW5jdGlvblB0cihjdGlWTVRocm93VHJhbXBvbGluZSkudmFsdWUoKSksIHJlZ1QxKTsKLSAgICBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMSk7CiAKLSAgICByZXQoKTsKKyAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93
cGF0aCkudmFsdWUoKSksIHJlZ1QxKTsKKyAgICBqdW1wKHJlZ1QxKTsKIAogICAgIC8vIEFsbCB0
cmFtcG9saW5lcyBjb25zdHJ1Y3RlZCEgY29weSB0aGUgY29kZSwgbGluayB1cCBjYWxscywgYW5k
IHNldCB0aGUgcG9pbnRlcnMgb24gdGhlIE1hY2hpbmUgb2JqZWN0LgogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKm1fdm0sIHRoaXMsIEdMT0JBTF9USFVOS19JRCk7CkBAIC00MzMsMTcgKzQy
OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fcHJpbWl0aXZlKEluc3RyCiAKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfdG9fcHJpbWl0aXZlKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDAp
OwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSk7Cisg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwg
Y2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJjYXQoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBjdGlfb3Bfc3RyY2F0KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
MzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0g
ICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3N0cmNhdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtNDcxLDEzICs0NjUsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KEluc3Ry
dWN0aW9uKiBjdXJyZQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25vdChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgc3JjID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0
aV9vcF9ub3QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHNyYyk7Ci0gICAgc3R1YkNhbGwu
Y2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfbm90KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwor
ICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2pmYWxzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNzUwLDE3ICs3NDMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoSW5zdHJ1
Y3Rpb24qIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N0cmljdGVxKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAg
ICB1bnNpZ25lZCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCBzcmMyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3N0cmlj
dGVxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChzcmMxKTsKLSAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChzcmMyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdHJp
Y3RlcSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1Qx
LCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uc3Ry
aWN0ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTc3MSwxNyArNzYxLDE0
IEBAIHZvaWQgSklUOjplbWl0X29wX25zdHJpY3RlcShJbnN0cnVjdGlvbioKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYzEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYzIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbnN0cmljdGVxKTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChzcmMxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChzcmMyKTsKLSAg
ICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uc3RyaWN0ZXEpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpAQCAtMTAwMSw5ICs5ODgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfdG9fbnVtYmVyKEluc3RydWN0CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdG9fbnVtYmVyKTsKLSAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3RvX251bWJlcik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBl
bWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXNoX25hbWVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKQEAgLTExMzcsOSArMTEyNCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hcmd1
bWVudHMoSW5zdHIKIAogICAgIEp1bXAgYXJnc0NyZWF0ZWQgPSBicmFuY2gzMihOb3RFcXVhbCwg
dGFnRm9yKGRzdCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAKLSAg
ICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRlX2FyZ3VtZW50cykuY2FsbCgpOwotICAg
IGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Ci0gICAgZW1pdFN0b3JlKHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3Rlcihkc3QpLCByZWdUMSwgcmVnVDApOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfY3JlYXRl
X2FyZ3VtZW50cyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGFyZ3NDcmVhdGVk
LmxpbmsodGhpcyk7CiB9CkBAIC0xMTgzLDkgKzExNjksOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY3JlYXRlX3RoaXMoSW5zdHJ1CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0
IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBh
bGxvY2F0aW9uIGZhaWxlZAogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X2NyZWF0ZV90aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7Cisg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTIwNSwxMyArMTE5MCwxMCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjCiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgdGhpc1JlZ2lz
dGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLQogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX3RvX3RoaXMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1Qz
LCByZWdUMik7Ci0gICAgc3R1YkNhbGwuY2FsbCh0aGlzUmVnaXN0ZXIpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
dG9fdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfcHJvZmlsZV93aWxsX2NhbGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTEyODIsOSArMTI2NCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlf
dmEKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0g
ICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMpLmNhbGwoKTsKLSAg
ICBlbWl0U3RvcmUoYXJndW1lbnRzLCByZWdUMSwgcmVnVDApOwotICAgIGVtaXRTdG9yZSh1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSwgcmVnVDEsIHJlZ1QwKTsKKworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAg
ICAKICAgICBza2lwQXJndW1lbnRzQ3JlYXRpb24ubGluayh0aGlzKTsKICAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X3ZhbF9nZW5lcmljKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTQ5ODI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUg
IlNsb3dQYXRoQ2FsbC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzYwLDEwICszNjEsOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3RpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3N0cmNhdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9zdHJjYXQpOwotICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc3RyY2F0KTsKKyAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC05MzgsOSArOTM4LDkg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydQogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmlsZQogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIAotICAgIEpJVFN0dWJDYWxs
IHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhpcyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKLSAg
ICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfY3JlYXRlX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7
CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfd2lsbF9jYWxsKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC05NjQsMjcgKzk2NCwyOCBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfdG9fdGhpcyhJbnN0cnVjdGlvCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfdG9fdGhpcyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0dWJD
YWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3RvX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZv
aWQgSklUOjplbWl0U2xvd19vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfdG9fcHJpbWl0aXZlKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAg
c3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX3RvX3ByaW1pdGl2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25vdChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKLSAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX25vdCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0
dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgCisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9ub3QpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAK
IHZvaWQgSklUOjplbWl0U2xvd19vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTEwMDgsMTkg
KzEwMDksMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2p0cnVlKEluc3RydWN0aW9uKgogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2JpdHhvcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0eG9y
KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXR4b3IpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRvcihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfYml0b3IpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2JpdG9yKTsKKyAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAg
LTEwNTEsMTAgKzEwNDgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3RyaWN0ZXEoSW5zdHJ1
Y3RpCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX3N0cmljdGVxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdHJpY3RlcSk7CisgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25z
dHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTA2MiwxMCArMTA1OCw5IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3QKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbnN0cmljdGVxKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAg
IHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9uc3RyaWN0ZXEpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKQEAgLTExMjMsOSArMTExOCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19udW1iZXIo
SW5zdHJ1Y3QKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBjdGlfb3BfdG9fbnVtYmVyKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3RvX251bWJlcik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTExODQsMTAgKzExNzksMTAgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YQogICAgIAogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwo
dGhpcywgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMpLmNhbGwoKTsKLSAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGFyZ3VtZW50cyk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSk7Ci0gICAgCisKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Ny
ZWF0ZV9hcmd1bWVudHMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisKICAgICBza2lwQXJn
dW1lbnRzQ3JlYXRpb24ubGluayh0aGlzKTsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlz
LCBjdGlfb3BfZ2V0X2J5X3ZhbF9nZW5lcmljKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChh
cmd1bWVudHMsIHJlZ1QyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YkNhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJD
YWxsLmgJKHJldmlzaW9uIDE0OTgyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YkNhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKSVRT
dHViQ2FsbF9oCiAjZGVmaW5lIEpJVFN0dWJDYWxsX2gKIAorI2luY2x1ZGUgIkNvbW1vblNsb3dQ
YXRocy5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogCiAjaWYgRU5BQkxF
KEpJVCkKQEAgLTM3LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVFN0dWJD
YWxsKEpJVCogaml0LCBKU09iamVjdCogKEpJVF9TVFVCICpzdHViKShTVFVCX0FSR1NfREVDTEFS
QVRJT04pKQogICAgICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICAgICAsIG1fc3R1Yihz
dHViKQorICAgICAgICAgICAgLCBtX3BjKDApCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgIUFT
U0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgLCBtX3JldHVyblR5cGUoQ2VsbCkKICNlbmRpZgpA
QCAtNDcsNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUU3R1YkNhbGwoSklU
KiBqaXQsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIChKSVRfU1RVQiAqc3R1YikoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKSkKICAgICAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAgICAgLCBt
X3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9wYygwKQogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
IHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICwgbV9yZXR1cm5UeXBlKENlbGwpCiAj
ZW5kaWYKQEAgLTU3LDcgKzYwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVFN0dWJD
YWxsKEpJVCogaml0LCB2b2lkKiAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElP
TikpCiAgICAgICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgICAgICwgbV9zdHViKHN0dWIp
Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VSVF9ESVNBQkxFRCAgICAgIAorICAgICAg
ICAgICAgLCBtX3BjKDApCisjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VSVF9ESVNBQkxF
RAogICAgICAgICAgICAgLCBtX3JldHVyblR5cGUoVm9pZFB0cikKICNlbmRpZgogICAgICAgICAg
ICAgLCBtX3N0YWNrSW5kZXgoSklUU1RBQ0tGUkFNRV9BUkdTX0lOREVYKQpAQCAtNjcsNiArNzEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUU3R1YkNhbGwoSklUKiBqaXQsIGludCAo
SklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTikpCiAgICAgICAgICAgICA6IG1f
aml0KGppdCkKICAgICAgICAgICAgICwgbV9zdHViKHN0dWIpCisgICAgICAgICAgICAsIG1fcGMo
MCkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAg
ICAsIG1fcmV0dXJuVHlwZShJbnQpCiAjZW5kaWYKQEAgLTc3LDYgKzgyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCBib29sIChKSVRfU1RVQiAqc3R1
YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSkKICAgICAgICAgICAgIDogbV9qaXQoaml0KQogICAg
ICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9wYygwKQogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICwgbV9yZXR1cm5U
eXBlKEludCkKICNlbmRpZgpAQCAtODcsNiArOTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSklUU3R1YkNhbGwoSklUKiBqaXQsIHZvaWQgKEpJVF9TVFVCICpzdHViKShTVFVCX0FSR1Nf
REVDTEFSQVRJT04pKQogICAgICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICAgICAsIG1f
c3R1YihzdHViKQorICAgICAgICAgICAgLCBtX3BjKDApCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkg
fHwgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgLCBtX3JldHVyblR5cGUoVm9pZCkKICNl
bmRpZgpAQCAtOTcsNiArMTA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVFN0dWJD
YWxsKEpJVCogaml0LCBFbmNvZGVkSlNWYWx1ZSAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19E
RUNMQVJBVElPTikpCiAgICAgICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgICAgICwgbV9z
dHViKHN0dWIpCisgICAgICAgICAgICAsIG1fcGMoMCkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8
fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICAsIG1fcmV0dXJuVHlwZShWYWx1ZSkKICNl
bmRpZgpAQCAtMTA0LDggKzExMiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICB9CiAKKyAgICAgICAgSklUU3R1YkNhbGwoSklUKiBqaXQsIFNsb3dQYXRoUmV0dXJuVHlw
ZSAoSklUX1NUVUIgKnN0dWIpKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKSkKKyAg
ICAgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAg
ICAgICAgICwgbV9wYygwKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJM
RUQKKyAgICAgICAgLCBtX3JldHVyblR5cGUoVm9pZCkKKyNlbmRpZgorICAgICAgICAsIG1fc3Rh
Y2tJbmRleChKSVRTVEFDS0ZSQU1FX0FSR1NfSU5ERVgpCisgICAgICAgIHsKKyAgICAgICAgfQor
ICAgICAgICAKICAgICAgICAgLy8gQXJndW1lbnRzIGFyZSBhZGRlZCBmaXJzdCB0byBsYXN0Lgog
CisgICAgICAgIHZvaWQgc2V0UEMoSW5zdHJ1Y3Rpb24qIHBjKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX3BjID0gcGM7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldFJldHVyblR5cGVJ
bnQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX3JldHVyblR5cGUgPSBJbnQ7CisgICAgICAg
IH0KKwogICAgICAgICB2b2lkIHNraXBBcmd1bWVudCgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1fc3RhY2tJbmRleCArPSBzdGFja0luZGV4U3RlcDsKQEAgLTI5MSw2ICszMjAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBKSVQqIG1faml0OwogICAgICAgICBGdW5jdGlvblB0ciBt
X3N0dWI7CisgICAgICAgIEluc3RydWN0aW9uKiBtX3BjOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
IHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgZW51bSB7IFZvaWQsIFZvaWRQdHIsIEludCwg
VmFsdWUsIENlbGwgfSBtX3JldHVyblR5cGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNDk4MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBA
QAogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1
ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEyMCw2ICsxMjEsMTYgQEAgU1lNQk9MX1NU
UklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiIAogICAgICJjYWxsICIgTE9DQUxfUkVGRVJF
TkNFKGN0aV92bV90aHJvdykgIlxuIgogICAgICJpbnQzIiAiXG4iCiApOworCithc20gKAorIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgor
SElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorU1lNQk9MX1NU
UklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiOiIgIlxuIgorICAgICJtb3ZsICVl
ZGksICVlY3giICJcbiIKKyAgICAiY2FsbCAiIExPQ0FMX1JFRkVSRU5DRShjdGlfdm1fdGhyb3df
c2xvd3BhdGgpICJcbiIKKyAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5z
LCBlYXggaGFzIGNhbGxGcmFtZSBhbmQgZWR4IGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAiam1w
IColZWR4IiAiXG4iCispOwogICAgIAogYXNtICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0
aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKQEAgLTIwMSw2ICsyMTIsMjIgQEAgZXh0ZXJuICJDIiB7
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBfX2RlY2xzcGVjKG5ha2VkKSB2b2lkIGN0aVZNVGhy
b3dUcmFtcG9saW5lU2xvd3BhdGgoKQorICAgIHsKKyAgICAgICAgX19hc20geworICAgICAgICAg
ICAgbW92IGVjeCwgZWRpOworICAgICAgICAgICAgY2FsbCBjdGlfdm1fdGhyb3dfc2xvd3BhdGg7
CisgICAgICAgICAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCBlYXgg
aGFzIGNhbGxGcmFtZSBhbmQgZWR4IGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAgICAgICAgIGFk
ZCBlc3AsIDB4M2M7CisgICAgICAgICAgICBwb3AgZWJ4OworICAgICAgICAgICAgcG9wIGVkaTsK
KyAgICAgICAgICAgIHBvcCBlc2k7CisgICAgICAgICAgICBwb3AgZWJwOworICAgICAgICAgICAg
am1wIGVkeAorICAgICAgICAgICAgcmV0OworICAgICAgICB9CisgICAgfQorCiAgICAgX19kZWNs
c3BlYyhuYWtlZCkgdm9pZCBjdGlPcFRocm93Tm90Q2F1Z2h0KCkKICAgICB7CiAgICAgICAgIF9f
YXNtIHsKQEAgLTI4OCw2ICszMTUsMzEgQEAgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBv
bGluZSkgIjoiIAogKTsKIAogYXNtIHZvbGF0aWxlICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0hJREVfU1lNQk9MKGN0aVZNVGhy
b3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1w
b2xpbmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92LmwgLkwyIlNZTUJPTF9TVFJJTkcoY3Rp
X3ZtX3Rocm93X3Nsb3dwYXRoKSIscjAiICJcbiIKKyAgICAibW92IHIxNSwgcjQiICJcbiIKKyAg
ICAibW92LmwgQChyMCxyMTIpLHIxMSIgIlxuIgorICAgICJqc3IgQHIxMSIgIlxuIgorICAgIC8v
IFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIwIGhhcyBjYWxsRnJhbWUgYW5k
IHIxIGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAibm9wIiAiXG4iCisgICAgImFkZCAjNjAsIHIx
NSIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyMTAiICJcbiIKKyAgICAibW92LmwgQHIxNSsscjEx
IiAiXG4iCisgICAgIm1vdi5sIEByMTUrLHIxMyIgIlxuIgorICAgICJsZHMubCBAcjE1KyxwciIg
IlxuIgorICAgICJtb3YubCBAcjE1KyxyMTQiICJcbiIKKyAgICAibW92LmwgQHIxNSsscjgiICJc
biIKKyAgICAiYWRkICMxMiwgcjE1IiAiXG4iCisgICAgIm1vdiByMCwgcjQiICJcbiIKKyAgICAi
am1wIEByMSIgIlxuIgorICAgICJub3AiICJcbiIKKyAgICAiLmFsaWduIDIiICJcbiIKKyAgICAi
LkwyIlNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSI6LmxvbmcgIiBTWU1CT0xf
U1RSSU5HKGN0aV92bV90aHJvd19zbG93cGF0aCkiQEdPVCBcbiIKKyk7CisKK2FzbSB2b2xhdGls
ZSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBI
SURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBTWU1CT0xfU1RSSU5HKGN0aU9w
VGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCkBAIC0zNjQsNiArNDE2LDE2IEBAIFNZTUJPTF9TVFJJ
TkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAKICk7CiAKIGFzbSAoCisiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCitISURFX1NZTUJP
TChjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVZN
VGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6IiAiXG4iCisgICAgIm1vdnEgJXIxMywgJXJkaSIg
IlxuIgorICAgICJjYWxsICIgTE9DQUxfUkVGRVJFTkNFKGN0aV92bV90aHJvd19zbG93cGF0aCkg
IlxuIgorICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHJheCBoYXMg
Y2FsbEZyYW1lIGFuZCByZHggaGFzIGhhbmRsZXIgYWRkcmVzcworICAgICJqbXAgKiVyZHgiICJc
biIKKyk7CisKK2FzbSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1
Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBTWU1CT0xf
U1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCkBAIC00NzIsNiArNTM0LDQwIEBA
IGFzbSAoCiAiLnNldCBub3Jlb3JkZXIiICJcbiIKICIuc2V0IG5vbWFjcm8iICJcbiIKICIuc2V0
IG5vbWlwczE2IiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBv
bGluZVNsb3dwYXRoKSAiXG4iCisiLmVudCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1w
b2xpbmVTbG93cGF0aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNs
b3dwYXRoKSAiOiIgIlxuIgorI2lmIFdURl9NSVBTX1BJQworIi5zZXQgbWFjcm8iICJcbiIKKyIu
Y3Bsb2FkICQzMSIgIlxuIgorICAgICJsYSAgICAkMjUsIiBTWU1CT0xfU1RSSU5HKGN0aV92bV90
aHJvd19zbG93cGF0aCkgIlxuIgorIi5zZXQgbm9tYWNybyIgIlxuIgorICAgICJiYWwgIiBTWU1C
T0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93cGF0aCkgIlxuIgorICAgICJtb3ZlICAkNCwkMTYi
ICJcbiIKKyNlbHNlCisgICAgImphbCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dw
YXRoKSAiXG4iCisgICAgIm1vdmUgICQ0LCQxNiIgIlxuIgorI2VuZGlmCisgICAgLy8gV2hlbiBj
dGlfdm1fdGhyb3dfc2xvd3BhdGggcmV0dXJucywgdjAgaGFzIGNhbGxGcmFtZSBhbmQgdjEgaGFz
IGhhbmRsZXIgYWRkcmVzcworICAgICJsdyAgICAkMTYsIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJF
U0VSVkVEX1MwX09GRlNFVCkgIigkMjkpIiAiXG4iCisgICAgImx3ICAgICQxNywiIFNUUklOR0la
RV9WQUxVRV9PRihQUkVTRVJWRURfUzFfT0ZGU0VUKSAiKCQyOSkiICJcbiIKKyAgICAibHcgICAg
JDE4LCIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9TMl9PRkZTRVQpICIoJDI5KSIgIlxu
IgorICAgICJsdyAgICAkMTksIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1MzX09GRlNF
VCkgIigkMjkpIiAiXG4iCisgICAgImx3ICAgICQyMCwiIFNUUklOR0laRV9WQUxVRV9PRihQUkVT
RVJWRURfUzRfT0ZGU0VUKSAiKCQyOSkiICJcbiIKKyAgICAibHcgICAgJDMxLCIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBSRVNFUlZFRF9SRVRVUk5fQUREUkVTU19PRkZTRVQpICIoJDI5KSIgIlxuIgor
ICAgICJqciAgICAkMyIgIlxuIgorICAgICJhZGRpdSAkMjksJDI5LCIgU1RSSU5HSVpFX1ZBTFVF
X09GKFNUQUNLX0xFTkdUSCkgIlxuIgorIi5zZXQgcmVvcmRlciIgIlxuIgorIi5zZXQgbWFjcm8i
ICJcbiIKKyIuZW5kICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRo
KSAiXG4iCispOworCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuc2V0
IG5vcmVvcmRlciIgIlxuIgorIi5zZXQgbm9tYWNybyIgIlxuIgorIi5zZXQgbm9taXBzMTYiICJc
biIKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKICIu
ZW50ICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBTWU1CT0xfU1RS
SU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCkBAIC01NTgsNiArNjU0LDMwIEBAIFNZ
TUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAKIGFzbSAoCiAiLnRleHQiICJc
biIKICIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1Ry
YW1wb2xpbmVTbG93cGF0aCkgIlxuIgorSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmVT
bG93cGF0aCkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19Q
QVJBTShjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0
aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6IiAiXG4iCisgICAgIm1vdiByMCwgcjUiICJc
biIKKyAgICAiYmwgIiBMT0NBTF9SRUZFUkVOQ0UoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSAiXG4i
CisgICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIwIGhhcyBjYWxs
RnJhbWUgYW5kIHIxIGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAibGRyIHIxMSwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1IxMV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxk
ciByMTAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SMTBfT0ZGU0VUKSAi
XSIgIlxuIgorICAgICJsZHIgcjksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZF
RF9SOV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciByOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJFU0VSVkVEX1I4X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI3LCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUjdfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJs
ZHIgcjYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SNl9PRkZTRVQpICJd
IiAiXG4iCisgICAgImxkciByNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVE
X1I1X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI0LCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUkVTRVJWRURfUjRfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgbHIsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAi
XG4iCisgICAgImFkZCBzcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihGSVJTVF9TVEFDS19B
UkdVTUVOVCkgIlxuIgorICAgICJieCByMSIgIlxuIgorKTsKKworYXNtICgKKyIudGV4dCIgIlxu
IgorIi5hbGlnbiAyIiAiXG4iCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90
Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiAiLnRo
dW1iIiAiXG4iCkBAIC02MjEsNiArNzQxLDIxIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05v
dENhdWdodCkgIjoiICIKICAgICAiYnggbHIiICJcbiIKICk7CiAKK2FzbSAoCisiLnRleHQiICJc
biIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgp
ICJcbiIKK0hJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0lO
TElORV9BUk1fRlVOQ1RJT04oY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkKK1NZTUJPTF9T
VFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92IHIw
LCByNSIgIlxuIgorICAgICJibCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRo
KSAiXG4iCisgICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIwIGhh
cyBjYWxsRnJhbWUgYW5kIHIxIGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAgImFkZCBzcCwgc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURSNF9PRkZTRVQpICJcbiIKKyAgICAgImxk
bWlhIHNwISwge3I0LXI2LCByOC1yMTEsIGxyfSIgIlxuIgorICAgICAiYWRkIHNwLCBzcCwgIzEy
IiAiXG4iCisgICAgICJieCByMSIgIlxuIgorKTsKKwogI2VsaWYgQ09NUElMRVIoUlZDVCkgJiYg
Q1BVKEFSTV9USFVNQjIpCiAKIF9fYXNtIEVuY29kZWRKU1ZhbHVlIGN0aVRyYW1wb2xpbmUodm9p
ZCosIEpTU3RhY2sqLCBDYWxsRnJhbWUqLCB2b2lkKiAvKnVudXNlZDEqLywgdm9pZCogLyp1bnVz
ZWQyKi8sIFZNKikKQEAgLTM0MzksNiArMzU3NCwxMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkKiwgdm1fdGhyb3cpCiAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbEZyYW1lOwogfQogCitFeGNl
cHRpb25IYW5kbGVyIEpJVF9TVFVCIGN0aV92bV90aHJvd19zbG93cGF0aChDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICBWTSogdm0gPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT52bSgpOwor
ICAgIHJldHVybiBqaXRUaHJvd05ldyh2bSwgY2FsbEZyYW1lLCB2bS0+ZXhjZXB0aW9uKTsKK30K
KwogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIHRvX29iamVjdCkKIHsKICAg
ICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxNDk4MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAog
I2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCisjaW5jbHVkZSAi
SklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpAQCAt
MzA2LDYgKzMwNyw3IEBAIHN0cnVjdCBKSVRTdGFja0ZyYW1lIHsKICNlbmRpZgogCiBleHRlcm4g
IkMiIHZvaWQgY3RpVk1UaHJvd1RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBjdGlWTVRo
cm93VHJhbXBvbGluZVNsb3dwYXRoKCk7CiBleHRlcm4gIkMiIHZvaWQgY3RpT3BUaHJvd05vdENh
dWdodCgpOwogZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBjdGlUcmFtcG9saW5lKHZvaWQqIGNv
ZGUsIEpTU3RhY2sqLCBDYWxsRnJhbWUqLCB2b2lkKiAvKnVudXNlZDEqLywgdm9pZCogLyp1bnVz
ZWQyKi8sIFZNKik7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00NDEsNiArNDQzLDcgQEAgdm9p
ZCogSklUX1NUVUIgY3RpX3ZtX2xhenlMaW5rQ2FsbChTVFVCXwogdm9pZCogSklUX1NUVUIgY3Rp
X3ZtX2xhenlMaW5rQ2xvc3VyZUNhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJO
QUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fbGF6eUxpbmtDb25zdHJ1Y3QoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fdGhyb3coU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKK0V4
Y2VwdGlvbkhhbmRsZXIgSklUX1NUVUIgY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKENhbGxGcmFtZSop
IFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwogfSAvLyBleHRlcm4gIkMiCiAKICNl
bGlmIEVOQUJMRShMTElOVF9DX0xPT1ApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxNDk4MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNo
ZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OwogI2lmICFPUyhXSU5ET1dTKQog
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBY
ODZSZWdpc3RlcnM6OmVkaTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25k
QXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZXNpOwogI2Vsc2UKICAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjplY3g7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVn
aXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkeDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQpAQCAtODksNiArOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gT24g
eDg2IHdlIGFsd2F5cyB1c2UgZmFzdGNhbGwgY29udmVudGlvbnMgPSBidXQgb24KICAgICAgICAg
Ly8gT1MgWCBpZiBtaWdodCBtYWtlIG1vcmUgc2Vuc2UgdG8ganVzdCB1c2UgcmVncGFybS4KICAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2
UmVnaXN0ZXJzOjplY3g7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFy
Z3VtZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkeDsKICAgICAgICAgCiAgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVy
czo6ZXNpOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6ZWRpOwpAQCAtMTA2LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0g
QVJNUmVnaXN0ZXJzOjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVk
UmVzdWx0UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOworICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpyMTsKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0Q291bnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJz
OjpyNzsKQEAgLTEyOCw2ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYw
OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9
IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJz
dEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmEx
OwogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMz
OwpAQCAtMTY0LDYgKzE2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCByZWdUNiA9IFNINFJlZ2lzdGVyczo6cjY7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHJlZ1Q3ID0gU0g0UmVnaXN0ZXJzOjpyNzsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID1yZWdUNDsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRSZWdpc3RlciA9cmVnVDQ7CiAK
ICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IFNI
NFJlZ2lzdGVyczo6cjA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJl
c3VsdFJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpyMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TbG93UGF0aENhbGwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2xv
d1BhdGhDYWxsX2gKKyNkZWZpbmUgU2xvd1BhdGhDYWxsX2gKKworI2luY2x1ZGUgIkNvbW1vblNs
b3dQYXRocy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCisjaWYgRU5B
QkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpJVFNsb3dQYXRoQ2FsbCB7Citw
dWJsaWM6CisgICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBJbnN0cnVjdGlvbiogcGMsIFNs
b3dQYXRoUmV0dXJuVHlwZSAoU0xPV19QQVRIICpzdHViKShFeGVjU3RhdGUqIGV4ZWMsIEluc3Ry
dWN0aW9uKiBwYykpCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fc3R1YihzdHVi
KQorICAgICAgICAsIG1fcGMocGMpCisgICAgeworICAgIH0KKworICAgIEpJVDo6Q2FsbCBjYWxs
KCkKKyAgICB7CisjaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKKyAgICAgICAgaWYgKG1faml0
LT5tX2J5dGVjb2RlT2Zmc2V0ICE9ICh1bnNpZ25lZCktMSkKKyAgICAgICAgICAgIG1faml0LT5z
YW1wbGVJbnN0cnVjdGlvbihtX2ppdC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkgKyBtX2ppdC0+bV9ieXRlY29kZU9mZnNldCwgdHJ1ZSk7CisjZW5kaWYKKyAgICAgICAgbV9q
aXQtPnVwZGF0ZVRvcENhbGxGcmFtZSgpOworI2lmIENQVShYODYpICYmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgICAgIG1faml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigt
OCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0
LT5wdXNoKEpJVDo6VHJ1c3RlZEltbTMyKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSkpOworICAg
ICAgICBtX2ppdC0+cHVzaChKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyNlbHNlCisgICAgICAg
IG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6Zmlyc3RBcmd1bWVudFJl
Z2lzdGVyKTsKKyAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBK
SVQ6OnNlY29uZEFyZ3VtZW50UmVnaXN0ZXIpOworI2VuZGlmCisgICAgICAgIEpJVDo6Q2FsbCBj
YWxsID0gbV9qaXQtPmNhbGwoKTsKKyAgICAgICAgbV9qaXQtPm1fY2FsbHMuYXBwZW5kKENhbGxS
ZWNvcmQoY2FsbCwgbV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXQsIG1fc3R1Yi52YWx1ZSgpKSk7CisK
KyNpZiBDUFUoWDg2KSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBtX2ppdC0+YWRkUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQor
ICAgICAgICBpZiAobV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gKHVuc2lnbmVkKS0xKQorICAg
ICAgICAgICAgbV9qaXQtPnNhbXBsZUluc3RydWN0aW9uKG1faml0LT5tX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCBmYWxzZSk7Cisj
ZW5kaWYKKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbV9qaXQtPnVu
bWFwKCk7CisjZWxzZQorICAgICAgICBtX2ppdC0+a2lsbExhc3RSZXN1bHRSZWdpc3RlcigpOwor
I2VuZGlmCisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIEpJVDo6SnVt
cCBub0V4Y2VwdGlvbiA9IG1faml0LT5icmFuY2gzMihKSVQ6OkVxdWFsLCBKSVQ6OkFic29sdXRl
QWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNoYXIqPigmbV9qaXQtPm1fY29kZUJsb2NrLT52bSgp
LT5leGNlcHRpb24pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBK
SVQ6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisjZWxzZQorICAgICAg
ICBKSVQ6Okp1bXAgbm9FeGNlcHRpb24gPSBtX2ppdC0+YnJhbmNoVGVzdDY0KEpJVDo6WmVybywg
SklUOjpBYnNvbHV0ZUFkZHJlc3MoJm1faml0LT5tX2NvZGVCbG9jay0+dm0oKS0+ZXhjZXB0aW9u
KSk7CisjZW5kaWYKKyAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKEZ1bmN0
aW9uUHRyKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpLnZhbHVlKCkpLCBKSVQ6OnJlZ1Qx
KTsKKyAgICAgICAgbV9qaXQtPmp1bXAoSklUOjpyZWdUMSk7CisgICAgICAgIG5vRXhjZXB0aW9u
LmxpbmsobV9qaXQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgfQorCitw
cml2YXRlOgorICAgIEpJVCogbV9qaXQ7CisgICAgRnVuY3Rpb25QdHIgbV9zdHViOworICAgIElu
c3RydWN0aW9uKiBtX3BjOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlMKKworI2VuZGlmIC8vIEVO
QUJMRShKSVQpCisKKyNlbmRpZiAvLyBTbG93UGF0aENhbGxfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTQ5ODI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTUsMTcgKzM5NSwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IG5hdGl2ZUZvckdlCiAKICAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBqaXQu
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7Ci0K
KyAgICAKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cigmdm0tPmV4
Y2VwdGlvbkxvY2F0aW9uKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKICAgICBqaXQuc3RvcmVQ
dHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwotICAgIGpp
dC5wb2tlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9G
KHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpIC8gc2l6ZW9mKHZvaWQqKSk7CiAKICAg
ICBqaXQuc3RvcmVQdHIoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRv
cENhbGxGcmFtZSk7Ci0gICAgLy8gU2V0IHRoZSByZXR1cm4gYWRkcmVzcy4KLSAgICBqaXQubW92
ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihGdW5jdGlvblB0cihjdGlWTVRocm93VHJh
bXBvbGluZSkudmFsdWUoKSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7Ci0gICAgaml0LnJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CiAKLSAg
ICBqaXQucmV0KCk7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIo
RnVuY3Rpb25QdHIoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkudmFsdWUoKSksIEpTSW50
ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyB0cmFt
cG9saW5lIiwgdG9DU3RyaW5nKGtpbmQpLmRhdGEoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNDk4MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjcsMzQgKzQyNyw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2No
ZWNrKQogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBFeGVj
U3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZt
LmludGVycHJldGVyLT5zdGFjaygpLCBDb2RlRm9yQ2FsbCk7Ci0gICAgaWYgKCFuZXdFeGVjKSB7
Ci0gICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOwot
ICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKLSAgICAgICAgdm0uZXhjZXB0aW9u
ID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICBpbnRlcnByZXRlclRo
cm93SW5DYWxsZXIoZXhlYywgcmV0dXJuUEMpOwotICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOwotICAg
IH0KLSAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOwotfQotCi1MTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCi17Ci0gICAgTExJTlRfQkVH
SU4oKTsKLSAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLCBDb2RlRm9yQ29uc3RydWN0KTsK
LSAgICBpZiAoIW5ld0V4ZWMpIHsKLSAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQyA9
IGV4ZWMtPnJldHVyblBDKCk7Ci0gICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwot
ICAgICAgICB2bS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0g
ICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCByZXR1cm5QQyk7Ci0gICAgICAg
IExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpKSwgZXhlYyk7Ci0gICAgfQotICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7
Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikK
IHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtNDY2LDQyICs0MzgsNiBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FjCiAgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0
aXZhdGlvbikpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2Fy
Z3VtZW50cykKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIEpTVmFsdWUgYXJndW1lbnRzID0g
SlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYykpOwotICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwotICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3Vt
ZW50czsKLSAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihw
Y1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKLSAgICBMTElOVF9FTkQoKTsKLX0KLQotTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotewotICAgIExMSU5UX0JF
R0lOKCk7Ci0gICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KExMSU5UX09QKDIpLmpzVmFsdWUoKS5hc0NlbGwoKSk7Ci0gICAgCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAotICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBBU1NFUlQoY29uc3Ry
dWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0
cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7Ci0jZW5kaWYKLQotICAgIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNvbnN0cnVjdG9yLT5hbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSktPnN0
cnVjdHVyZSgpOwotICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBz
dHJ1Y3R1cmUpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMp
Ci17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOwotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBwY1tPUENPREVfTEVOR1RI
KG9wX3RvX3RoaXMpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPQotICAgICAgICBKU1Zh
bHVlOjplbmNvZGUodjEuc3RydWN0dXJlT3JVbmRlZmluZWQoKSk7Ci0jZW5kaWYKLSAgICBMTElO
VF9SRVRVUk4odjEudG9UaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKSk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9uZXdfb2JqZWN0KQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC01MzUs
MTg3ICs0NzEsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4CiAg
ICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJl
KCksIHJlZ0V4cCkpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQot
ewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9lcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmVxKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfc3RyaWN0ZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25zdHJpY3RlcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xlc3MpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9sZXNzZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXIpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ3JlYXRlcmVxKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHJlX2luYykKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykgKyAxKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcmVfZGVjKQot
ewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKLX0KLQotTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3RvX251bWJlcikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQotewotICAg
IExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfYWRkKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKLSAgICAKLSNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwotICAgIGRhdGFMb2co
IlRyeWluZyB0byBhZGQgIiwgdjEsICIgdG8gIiwgdjIsICIuXG4iKTsKLSNlbmRpZgotICAgIAot
ICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVjdCgpKQotICAgICAgICBMTElOVF9S
RVRVUk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVjKSkpOwot
ICAgIAotICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgIExM
SU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOwotICAg
IAotICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOwotfQotCi0v
LyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRv
IGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVy
LiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKLS8vIGlmIGFuIGV4Y2VwdGlv
biBpcyBhbHJlYWR5IHNldCBvbiB0aGUgRXhlY1N0YXRlLikKLQotTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX211bCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGRvdWJsZSBhID0g
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgZG91YmxlIGIgPSBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoYSAqIGIpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N1
YikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSAtIGIp
KTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RpdikKLXsKLSAgICBMTElO
VF9CRUdJTigpOwotICAgIGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYyk7Ci0gICAgZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSAvIGIpKTsKLX0KLQotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX21vZCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAg
IGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAg
ZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChhLCBiKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbHNoaWZ0KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50MzJf
dCBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICB1aW50MzJf
dCBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7Ci0gICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKGEgPDwgKGIgJiAzMSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3JzaGlmdCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGludDMyX3Qg
YSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgdWludDMyX3Qg
YiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOwotICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihhID4+IChiICYgMzEpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF91cnNoaWZ0KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgdWludDMyX3Qg
YSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOwotICAgIHVpbnQzMl90
IGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKLSAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoYSA+PiAoYiAmIDMxKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfYml0YW5kKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50MzJfdCBh
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBpbnQzMl90IGIg
PSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihhICYgYikpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Yml0b3IpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBpbnQzMl90IGEgPSBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAgIGludDMyX3QgYiA9IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEg
fCBiKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpCi17Ci0g
ICAgTExJTlRfQkVHSU4oKTsKLSAgICBpbnQzMl90IGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b0ludDMyKGV4ZWMpOwotICAgIGludDMyX3QgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgXiBiKSk7Ci19Ci0K
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCiB7CiAg
ICAgTExJTlRfQkVHSU4oKTsKQEAgLTc0MiwzMCArNDk3LDYgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2luc3RhbmNlbwogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNPYmpl
Y3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pKSk7CiB9CiAKLUxMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsK
LSAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX29i
amVjdCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
anNJc09iamVjdFR5cGUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbikKLXsKLSAgICBMTElOVF9C
RUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2luKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcmVzb2x2ZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDE0OTgyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIExMSW50U2xvd1BhdGhzX2gKICNkZWZpbmUg
TExJbnRTbG93UGF0aHNfaAogCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCiAjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0z
OCw1NyArMzksNiBAQCBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIG5hbWVzcGFjZSBMTEludCB7CiAK
LSNpZiBVU0UoSlNWQUxVRTY0KQotLy8gQWNjb3JkaW5nIHRvIEMrKyBydWxlcywgYSB0eXBlIHVz
ZWQgZm9yIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mIGZ1bmN0aW9uIHdpdGggQyBsaW5rYWdlIChp
LmUuCi0vLyAnZXh0ZXJuICJDIicpIG5lZWRzIHRvIGJlIFBPRDsgaGVuY2UgcHV0dGluZyBhbnkg
Y29uc3RydWN0b3JzIGludG8gaXQgY291bGQgY2F1c2UgZWl0aGVyIGNvbXBpbGVyCi0vLyB3YXJu
aW5ncywgb3Igd29yc2UsIGEgY2hhbmdlIGluIHRoZSBBQkkgdXNlZCB0byByZXR1cm4gdGhlc2Ug
dHlwZXMuCi1zdHJ1Y3QgU2xvd1BhdGhSZXR1cm5UeXBlIHsKLSAgICB2b2lkKiBhOwotICAgIEV4
ZWNTdGF0ZSogYjsKLX07Ci0KLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0
KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKLXsKLSAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0
OwotICAgIHJlc3VsdC5hID0gYTsKLSAgICByZXN1bHQuYiA9IGI7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBiKQotewotICAgIGEgPSByZXN1bHQuYTsKLSAgICBi
ID0gcmVzdWx0LmI7Ci19Ci0KLSNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCi10eXBlZGVmIGlu
dDY0X3QgU2xvd1BhdGhSZXR1cm5UeXBlOwotCi10eXBlZGVmIHVuaW9uIHsKLSAgICBzdHJ1Y3Qg
ewotICAgICAgICB2b2lkKiBhOwotICAgICAgICBFeGVjU3RhdGUqIGI7Ci0gICAgfSBwYWlyOwot
ICAgIGludDY0X3QgaTsKLX0gU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2Rpbmc7Ci0KLWlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKLXsK
LSAgICBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OwotICAgIHUucGFpci5hID0gYTsKLSAg
ICB1LnBhaXIuYiA9IGI7Ci0gICAgcmV0dXJuIHUuaTsKLX0KLQotaW5saW5lIHZvaWQgZGVjb2Rl
UmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBi
KQotewotICAgIFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7Ci0gICAgdS5pID0gcmVzdWx0
OwotICAgIGEgPSB1LnBhaXIuYTsKLSAgICBiID0gdS5wYWlyLmI7Ci19Ci0jZW5kaWYgLy8gVVNF
KEpTVkFMVUUzMl82NCkKLQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJh
Y2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBv
cGVyYW5kKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVl
KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOwog
CkBAIC0xMTMsNDcgKzYzLDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChlbnRyeV9v
c3JfZnUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChsb29wX29zcik7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0wocmVwbGFjZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c3RhY2tfY2hlY2spOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxs
X2FyaXR5Q2hlY2spOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25z
dHJ1Y3RfYXJpdHlDaGVjayk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9hY3RpdmF0aW9uKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY3JlYXRlX2FyZ3VtZW50cyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV90aGlzKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9fdGhpcyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19vYmpl
Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXpl
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZl
cik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ub3QpOwotTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX25lcSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3N0cmljdGVxKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbnN0cmlj
dGVxKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbGVzcyk7Ci1MTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xlc3NlcSk7Ci1MTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXIpOwotTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wcmVfaW5jKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHJlX2RlYyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX251
bWJlcik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSk7Ci1M
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2FkZCk7Ci1MTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX211bCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3N1Yik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2Rpdik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX21vZCk7Ci1MTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xzaGlmdCk7Ci1MTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3JzaGlmdCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9iaXRhbmQpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9i
aXRvcik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZSk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlb2YpOwotTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOwotTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpOwotTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2luKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcmVzb2x2ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF90
b19iYXNlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9i
YXNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNDk4MjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIF9sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCiAub3BDcmVhdGVBcmd1
bWVudHNEb25lOgogICAgIGRpc3BhdGNoKDIpCiAKQEAgLTM3MSw3ICszNzEsNyBAQCBfbGxpbnRf
b3BfY3JlYXRlX3RoaXM6CiAgICAgZGlzcGF0Y2goNCkKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCisgICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCiAgICAgZGlzcGF0Y2goNCkKIAogCkBAIC0z
OTgsNyArMzk4LDcgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAgICAgZGlzcGF0Y2goMykKIAogLm9w
VG9UaGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b190aGlzKQor
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgZGlzcGF0Y2goMykKIAog
CkBAIC00NDAsNyArNDQwLDcgQEAgX2xsaW50X29wX25vdDoKICAgICBkaXNwYXRjaCgzKQogCiAu
b3BOb3RTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9ub3QpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC00NjAs
NyArNDYwLDcgQEAgX2xsaW50X29wX2VxOgogICAgIGRpc3BhdGNoKDQpCiAKIC5vcEVxU2xvdzoK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9lcSkKKyAgICBjYWxsU2xvd1BhdGgo
X3Nsb3dfcGF0aF9lcSkKICAgICBkaXNwYXRjaCg0KQogCiAKQEAgLTUwNyw3ICs1MDcsNyBAQCBf
bGxpbnRfb3BfbmVxOgogICAgIGRpc3BhdGNoKDQpCiAKIC5vcE5lcVNsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X25lcSkKICAgICBkaXNwYXRjaCg0KQogICAgIAogCkBAIC01NjQsMTIgKzU2NCwxMiBAQCBlbmQK
IAogX2xsaW50X29wX3N0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBzdHJpY3RF
cShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVu
ZCwgX2xsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcSkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwg
cmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX3Nsb3dfcGF0aF9z
dHJpY3RlcSkKIAogCiBfbGxpbnRfb3BfbnN0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmln
aHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfbnN0cmljdGVxKQorICAgIHN0cmljdEVx
KG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVu
ZCwgX3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCiAKIAogX2xsaW50X29wX2luYzoKQEAgLTU4Miw3ICs1
ODIsNyBAQCBfbGxpbnRfb3BfaW5jOgogICAgIGRpc3BhdGNoKDIpCiAKIC5vcEluY1Nsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2luYykKKyAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9pbmMpCiAgICAgZGlzcGF0Y2goMikKIAogCkBAIC01OTYsNyArNTk2LDcg
QEAgX2xsaW50X29wX2RlYzoKICAgICBkaXNwYXRjaCgyKQogCiAub3BEZWNTbG93OgotICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3ByZV9kZWMpCisgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfZGVjKQogICAgIGRpc3BhdGNoKDIpCiAKIApAQCAtNjEzLDcgKzYxMyw3IEBAIF9s
bGludF9vcF90b19udW1iZXI6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wVG9OdW1iZXJTbG93Ogot
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX251bWJlcikKKyAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF90b19udW1iZXIpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC02MzYs
NyArNjM2LDcgQEAgX2xsaW50X29wX25lZ2F0ZToKICAgICBkaXNwYXRjaCgzKQogCiAub3BOZWdh
dGVTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25lZ2F0ZSkKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZWdhdGUpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC02
OTcsNyArNjk3LDcgQEAgX2xsaW50X29wX2FkZDoKICAgICBiaW5hcnlPcCgKICAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAogICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBf
bGxpbnRfc2xvd19wYXRoX2FkZCkKKyAgICAgICAgX3Nsb3dfcGF0aF9hZGQpCiAKIAogX2xsaW50
X29wX211bDoKQEAgLTcxNSw3ICs3MTUsNyBAQCBfbGxpbnRfb3BfbXVsOgogICAgICAgICAgICAg
c3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KICAgICAgICAgZW5k
LAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAotICAg
ICAgICBfbGxpbnRfc2xvd19wYXRoX211bCkKKyAgICAgICAgX3Nsb3dfcGF0aF9tdWwpCiAKIAog
X2xsaW50X29wX3N1YjoKQEAgLTcyMyw3ICs3MjMsNyBAQCBfbGxpbnRfb3Bfc3ViOgogICAgIGJp
bmFyeU9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCBy
aWdodCwgc2xvdyBlbmQsCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCBy
aWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfc3ViKQorICAgICAgICBfc2xvd19w
YXRoX3N1YikKIAogCiBfbGxpbnRfb3BfZGl2OgpAQCAtNzQyLDcgKzc0Miw3IEBAIF9sbGludF9v
cF9kaXY6CiAgICAgICAgIC5kb25lOgogICAgICAgICBlbmQsCiAgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhf
ZGl2KQorICAgICAgICBfc2xvd19wYXRoX2RpdikKIAogCiBtYWNybyBiaXRPcChvcGVyYXRpb24s
IHNsb3dQYXRoLCBhZHZhbmNlKQpAQCAtNzY3LDcgKzc2Nyw3IEBAIF9sbGludF9vcF9sc2hpZnQ6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xv
d19wYXRoX2xzaGlmdCwKKyAgICAgICAgX3Nsb3dfcGF0aF9sc2hpZnQsCiAgICAgICAgIDQpCiAK
IApAQCAtNzc1LDcgKzc3NSw3IEBAIF9sbGludF9vcF9yc2hpZnQ6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlm
dGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwKKyAg
ICAgICAgX3Nsb3dfcGF0aF9yc2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNzg2LDcgKzc4Niw3
IEBAIF9sbGludF9vcF91cnNoaWZ0OgogICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQK
ICAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKICAgICAgICAgZW5kLAotICAgICAgICBf
bGxpbnRfc2xvd19wYXRoX3Vyc2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfdXJzaGlmdCwKICAg
ICAgICAgNCkKIAogCkBAIC03OTQsNyArNzk0LDcgQEAgX2xsaW50X29wX2JpdGFuZDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0
YW5kLAorICAgICAgICBfc2xvd19wYXRoX2JpdGFuZCwKICAgICAgICAgNSkKIAogCkBAIC04MDIs
NyArODAyLDcgQEAgX2xsaW50X29wX2JpdHhvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Yml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdo
dCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0eG9yLAorICAgICAgICBfc2xvd19w
YXRoX2JpdHhvciwKICAgICAgICAgNSkKIAogCkBAIC04MTAsNyArODEwLDcgQEAgX2xsaW50X29w
X2JpdG9yOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRf
c2xvd19wYXRoX2JpdG9yLAorICAgICAgICBfc2xvd19wYXRoX2JpdG9yLAogICAgICAgICA1KQog
CiAKQEAgLTE2NzEsNyArMTY3MSw3IEBAIF9sbGludF9vcF90b19wcmltaXRpdmU6CiAgICAgZGlz
cGF0Y2goMykKIAogLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKLSAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF90b19wcmltaXRpdmUpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
dG9fcHJpbWl0aXZlKQogICAgIGRpc3BhdGNoKDMpCiAKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDE0OTgyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNyArMjM0LDcgQEAgX2xsaW50X29w
X2NyZWF0ZV9hcmd1bWVudHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MCkKICAgICBicW5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5v
cENyZWF0ZUFyZ3VtZW50c0RvbmUKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9j
cmVhdGVfYXJndW1lbnRzKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9hcmd1
bWVudHMpCiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgogICAgIGRpc3BhdGNoKDIpCiAKQEAgLTI1
Miw3ICsyNTIsNyBAQCBfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CiAgICAgZGlzcGF0Y2goNCkKIAog
Lm9wQ3JlYXRlVGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3Jl
YXRlX3RoaXMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCiAgICAg
ZGlzcGF0Y2goNCkKIAogCkBAIC0yNzgsNyArMjc4LDcgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAg
ICAgZGlzcGF0Y2goMykKIAogLm9wVG9UaGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF90b190aGlzKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3RoaXMp
CiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC0zMTgsNyArMzE4LDcgQEAgX2xsaW50X29wX25vdDoK
ICAgICBkaXNwYXRjaCgzKQogCiAub3BOb3RTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX25vdCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9ub3QpCiAgICAgZGlz
cGF0Y2goMykKIAogCkBAIC0zNDIsMTMgKzM0MiwxMyBAQCBlbmQKIF9sbGludF9vcF9lcToKICAg
ICBlcXVhbGl0eUNvbXBhcmlzb24oCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRo
X2VxKQorICAgICAgICBfc2xvd19wYXRoX2VxKQogCiAKIF9sbGludF9vcF9uZXE6CiAgICAgZXF1
YWxpdHlDb21wYXJpc29uKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2lu
ZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfbmVx
KQorICAgICAgICBfc2xvd19wYXRoX25lcSkKIAogCiBtYWNybyBlcXVhbE51bGxDb21wYXJpc29u
KCkKQEAgLTQxNywxMyArNDE3LDEzIEBAIGVuZAogX2xsaW50X29wX3N0cmljdGVxOgogICAgIHN0
cmljdEVxKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCBy
aWdodCwgcmVzdWx0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcSkKKyAg
ICAgICAgX3Nsb3dfcGF0aF9zdHJpY3RlcSkKIAogCiBfbGxpbnRfb3BfbnN0cmljdGVxOgogICAg
IHN0cmljdEVxKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FuZXEgbGVm
dCwgcmlnaHQsIHJlc3VsdCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfbnN0cmljdGVx
KQorICAgICAgICBfc2xvd19wYXRoX25zdHJpY3RlcSkKIAogCiBtYWNybyBwcmVPcChhcml0aG1l
dGljT3BlcmF0aW9uLCBzbG93UGF0aCkKQEAgLTQ0NCwxMyArNDQ0LDEzIEBAIGVuZAogX2xsaW50
X29wX2luYzoKICAgICBwcmVPcCgKICAgICAgICAgbWFjcm8gKHZhbHVlLCBzbG93KSBiYWRkaW8g
MSwgdmFsdWUsIHNsb3cgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCisg
ICAgICAgIF9zbG93X3BhdGhfaW5jKQogCiAKIF9sbGludF9vcF9kZWM6CiAgICAgcHJlT3AoCiAg
ICAgICAgIG1hY3JvICh2YWx1ZSwgc2xvdykgYnN1YmlvIDEsIHZhbHVlLCBzbG93IGVuZCwKLSAg
ICAgICAgX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVjKQorICAgICAgICBfc2xvd19wYXRoX2RlYykK
IAogCiBfbGxpbnRfb3BfdG9fbnVtYmVyOgpAQCAtNDY1LDcgKzQ2NSw3IEBAIF9sbGludF9vcF90
b19udW1iZXI6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wVG9OdW1iZXJTbG93OgotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX251bWJlcikKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF90b19udW1iZXIpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC00ODcsNyArNDg3LDcg
QEAgX2xsaW50X29wX25lZ2F0ZToKICAgICBkaXNwYXRjaCgzKQogCiAub3BOZWdhdGVTbG93Ogot
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25lZ2F0ZSkKKyAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9uZWdhdGUpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC01NTUsNyArNTU1
LDcgQEAgX2xsaW50X29wX2FkZDoKICAgICBiaW5hcnlPcCgKICAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAogICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xv
d19wYXRoX2FkZCkKKyAgICAgICAgX3Nsb3dfcGF0aF9hZGQpCiAKIAogX2xsaW50X29wX211bDoK
QEAgLTU3Myw3ICs1NzMsNyBAQCBfbGxpbnRfb3BfbXVsOgogICAgICAgICAgICAgc3RvcmVxIHQz
LCBbY2ZyLCBpbmRleCwgOF0KICAgICAgICAgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX211bCkK
KyAgICAgICAgX3Nsb3dfcGF0aF9tdWwpCiAKIAogX2xsaW50X29wX3N1YjoKQEAgLTU4MSw3ICs1
ODEsNyBAQCBfbGxpbnRfb3Bfc3ViOgogICAgIGJpbmFyeU9wKAogICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCiAgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9z
bG93X3BhdGhfc3ViKQorICAgICAgICBfc2xvd19wYXRoX3N1YikKIAogCiBfbGxpbnRfb3BfZGl2
OgpAQCAtNjA1LDcgKzYwNSw3IEBAIF9sbGludF9vcF9kaXY6CiAgICAgICAgICAgICBzdG9yZXEg
dDAsIFtjZnIsIGluZGV4LCA4XQogICAgICAgICBlbmQsCiAgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfZGl2
KQorICAgICAgICBfc2xvd19wYXRoX2RpdikKIAogCiBtYWNybyBiaXRPcChvcGVyYXRpb24sIHNs
b3dQYXRoLCBhZHZhbmNlKQpAQCAtNjMwLDcgKzYzMCw3IEBAIF9sbGludF9vcF9sc2hpZnQ6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19w
YXRoX2xzaGlmdCwKKyAgICAgICAgX3Nsb3dfcGF0aF9sc2hpZnQsCiAgICAgICAgIDQpCiAKIApA
QCAtNjM4LDcgKzYzOCw3IEBAIF9sbGludF9vcF9yc2hpZnQ6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkg
bGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwKKyAgICAg
ICAgX3Nsb3dfcGF0aF9yc2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNjQ5LDcgKzY0OSw3IEBA
IF9sbGludF9vcF91cnNoaWZ0OgogICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKICAg
ICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKICAgICAgICAgZW5kLAotICAgICAgICBfbGxp
bnRfc2xvd19wYXRoX3Vyc2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfdXJzaGlmdCwKICAgICAg
ICAgNCkKIAogCkBAIC02NTcsNyArNjU3LDcgQEAgX2xsaW50X29wX2JpdGFuZDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5k
LAorICAgICAgICBfc2xvd19wYXRoX2JpdGFuZCwKICAgICAgICAgNSkKIAogCkBAIC02NjUsNyAr
NjY1LDcgQEAgX2xsaW50X29wX2JpdHhvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0
T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBl
bmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0eG9yLAorICAgICAgICBfc2xvd19wYXRo
X2JpdHhvciwKICAgICAgICAgNSkKIAogCkBAIC02NzMsNyArNjczLDcgQEAgX2xsaW50X29wX2Jp
dG9yOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xv
d19wYXRoX2JpdG9yLAorICAgICAgICBfc2xvd19wYXRoX2JpdG9yLAogICAgICAgICA1KQogCiAK
QEAgLTE1MDIsNyArMTUwMiw3IEBAIF9sbGludF9vcF90b19wcmltaXRpdmU6CiAgICAgZGlzcGF0
Y2goMykKIAogLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF90b19wcmltaXRpdmUpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9f
cHJpbWl0aXZlKQogICAgIGRpc3BhdGNoKDMpCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTQ5
ODI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC00MzEsMTIgKzQzMSwxMiBAQCBfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrOgogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCi0gICAgZnVuY3Rp
b25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X3Nsb3dfcGF0aF9jYWxs
X2FyaXR5Q2hlY2spCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdp
biwgX3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2s6CiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RD
b2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NvbnN0cnVjdCkKLSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29u
c3RydWN0QmVnaW4sIF9sbGludF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCisgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRo
X2NvbnN0cnVjdF9hcml0eUNoZWNrKQogCiAKICMgVmFsdWUtcmVwcmVzZW50YXRpb24tc3BlY2lm
aWMgY29kZS4KQEAgLTQ3NCw1NSArNDc0LDU1IEBAIF9sbGludF9vcF9uZXdfcmVnZXhwOgogCiBf
bGxpbnRfb3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfbGVzcykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9sZXNzKQog
ICAgIGRpc3BhdGNoKDQpCiAKIAogX2xsaW50X29wX2xlc3NlcToKICAgICB0cmFjZUV4ZWN1dGlv
bigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbGVzc2VxKQorICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX2xlc3NlcSkKICAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9v
cF9ncmVhdGVyOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9ncmVhdGVyKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dyZWF0ZXIp
CiAgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfZ3JlYXRlcmVxOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ncmVhdGVyZXEpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZ3JlYXRlcmVxKQogICAgIGRpc3BhdGNoKDQpCiAK
IAogX2xsaW50X29wX21vZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbW9kKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX21vZCkK
ICAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF90eXBlb2Y6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3R5cGVvZikKKyAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF90eXBlb2YpCiAgICAgZGlzcGF0Y2goMykKIAogCiBfbGxpbnRf
b3BfaXNfb2JqZWN0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9pc19vYmplY3QpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaXNf
b2JqZWN0KQogICAgIGRpc3BhdGNoKDMpCiAKIAogX2xsaW50X29wX2lzX2Z1bmN0aW9uOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19m
dW5jdGlvbikKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pc19mdW5jdGlvbikKICAgICBk
aXNwYXRjaCgzKQogCiAKIF9sbGludF9vcF9pbjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW4pCisgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfaW4pCiAgICAgZGlzcGF0Y2goNCkKIAogbWFjcm8gZ2V0UHV0VG9CYXNlT3BlcmF0aW9u
RmllbGQoc2NyYXRjaCwgc2NyYXRjaDEsIGZpZWxkT2Zmc2V0LCBmaWVsZEdldHRlcikKQEAgLTEx
MzEsNyArMTEzMSw3IEBAIF9sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKIAogX2xsaW50X29w
X3N0cmNhdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfc3RyY2F0KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3N0cmNhdCkKICAg
ICBkaXNwYXRjaCg0KQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE0OTgyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRl
ICJMTEludFNsb3dQYXRocy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJT
bG93UGF0aHMuaCIKICNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKworI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShM
TElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgi
CisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1
ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVk
ZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpT
V2l0aFNjb3BlLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4
Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEJFR0lOX05PX1NFVF9QQygpIFwK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOyAgICAgIFwKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYykKKworI2lmbmRlZiBOREVCVUcKKyNkZWZpbmUgU0VUX1BDX0ZP
Ul9TVFVCUygpIGRvIHsgXAorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQocGMpOyBcCisgICAgICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyAxKTsgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgU0VUX1BDX0ZPUl9TVFVCUygpIGRvIHsgXAor
ICAgICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjICsgMSk7IFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKyNlbmRpZgorCisjZGVmaW5lIEJFR0lOKCkgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgQkVHSU5fTk9fU0VUX1BDKCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgU0VUX1BD
X0ZPUl9TVFVCUygpCisKKyNkZWZpbmUgT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2lu
ZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBPUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0u
dS5vcGVyYW5kKSkKKworI2RlZmluZSBSRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAg
ICAgXAorICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGZpcnN0LCBzZWNvbmQpOyAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEVORF9JTVBMKCkgUkVUVVJOX1RXTyhw
YywgZXhlYykKKworI2RlZmluZSBUSFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB2bS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJv
dyk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcGMgPSBMTEludDo6cmV0dXJuVG9UaHJvdyhl
eGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKSkgeyAgICAgICAgICAg
XAorICAgICAgICAgICAgcGMgPSBMTEludDo6cmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBFTkQoKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDSEVDS19FWENFUFRJT04oKTsgICAgICAgICAg
ICAgICAgXAorICAgICAgICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEJSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8g
eyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgYkNvbmRpdGlvbiA9IChjb25k
aXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIENIRUNLX0VYQ0VQVElP
TigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChiQ29u
ZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAg
ICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgUkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNW
YWx1ZSByUmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgT1AoMSkgPSByUmV0dXJuVmFsdWU7ICAg
ICAgICAgIFwKKyAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyNkZWZpbmUg
UkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisgICAg
ICAgIEpTVmFsdWUgcnBQZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBDSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgT1AoMSkgPSBycFBldHVyblZhbHVlOyAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIFBST0ZJTEVfVkFMVUUob3Bjb2RlLCBycFBldHVyblZhbHVlKTsgICAg
ICAgICAgXAorICAgICAgICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBQUk9GSUxFX1ZBTFVF
KG9wY29kZSwgdmFsdWUpIGRvIHsgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkg
LSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNlbHNl
IC8vIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyNkZWZpbmUgUkVUVVJOX1BST0ZJTEVEKG9wY29k
ZSwgdmFsdWUpIFJFVFVSTih2YWx1ZSkKKworI2RlZmluZSBQUk9GSUxFX1ZBTFVFKG9wY29kZSwg
dmFsdWUpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisKKyNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBSRVRVUk5f
VFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVmaW5lIENBTExfVEhST1coZXhlYywgcGMs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0
ZSogY3RFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEluc3RydWN0aW9uKiBjdFBDID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHZtLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDQUxMX0VORF9JTVBMKGN0RXhlYywgTExJ
bnQ6OmNhbGxUb1Rocm93KGN0RXhlYywgY3RQQykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0g
KHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgQ0FMTF9FTkRfSU1QTChjY2VFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY2NlRXhl
YywgY2NlUEMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIENBTExfUkVUVVJO
KGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEV4ZWNTdGF0ZSogY3JFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBjclBDID0gKHBjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIGNyQ2FsbFRhcmdldCA9IChjYWxs
VGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIENBTExfQ0hFQ0tf
RVhDRVBUSU9OKGNyRXhlYy0+Y2FsbGVyRnJhbWUoKSwgY3JQQyk7ICBcCisgICAgICAgIENBTExf
RU5EX0lNUEwoY3JFeGVjLCBjckNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2sp
Cit7CisgICAgQkVHSU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0
aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLCBDb2RlRm9y
Q2FsbCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJh
bWUoKTsKKyAgICAgICAgdm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMpOworICAgICAgICBMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVy
blBDKTsKKyAgICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgUkVUVVJOX1RXTygwLCBuZXdFeGVj
KTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQor
eworICAgIEJFR0lOKCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhz
Ojphcml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVy
RnJhbWUoKTsKKyAgICAgICAgdm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpOworICAgICAgICBMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJl
dHVyblBDKTsKKyAgICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgUkVUVVJOX1RXTygwLCBuZXdF
eGVjKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCit7
CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRz
OjpjcmVhdGUodm0sIGV4ZWMpKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51
bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVj
a2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1
bWVudHM7CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVf
dGhpcykKK3sKKyAgICBCRUdJTigpOworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganND
YXN0PEpTRnVuY3Rpb24qPihPUCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCkpOworICAgIAorI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNT
RVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisKKyAgICBz
aXplX3QgaW5saW5lQ2FwYWNpdHkgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2Fw
YWNpdHkpLT5zdHJ1Y3R1cmUoKTsKKyAgICBSRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yywgc3RydWN0dXJlKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQor
eworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IE9QKDEpLmpzVmFsdWUoKTsKKyNpZiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF90b190aGlzKSAt
IDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0KKyAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKHYx
LnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkpOworI2VuZGlmCisgICAgUkVUVVJOKHYxLnRvVGhpcyhl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90
U3RyaWN0TW9kZSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQoreworICAg
IEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbighT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29s
ZWFuKGV4ZWMpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lcSkKK3sKKyAgICBC
RUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgT1BfQygy
KS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmVxKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbighSlNW
YWx1ZTo6ZXF1YWwoZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3RyaWN0ZXEpCit7CisgICAgQkVHSU4o
KTsKKyAgICBSRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIE9QX0Mo
MikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25zdHJpY3RlcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xl
YW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xlc3MpCit7Cisg
ICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBPUF9D
KDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9sZXNzZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFu
KGpzTGVzc0VxPHRydWU+KGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUo
KSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXIpCit7CisgICAgQkVH
SU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgT1BfQygzKS5q
c1ZhbHVlKCksIE9QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZ3JlYXRlcmVxKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihq
c0xlc3NFcTxmYWxzZT4oZXhlYywgT1BfQygzKS5qc1ZhbHVlKCksIE9QX0MoMikuanNWYWx1ZSgp
KSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQoreworICAgIEJFR0lOKCk7
CisgICAgUkVUVVJOKGpzTnVtYmVyKE9QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEp
KTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYykKK3sKKyAgICBCRUdJTigpOwor
ICAgIFJFVFVSTihqc051bWJlcihPUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7
Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19udW1iZXIpCit7CisgICAgQkVHSU4o
KTsKKyAgICBSRVRVUk4oanNOdW1iZXIoT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKK3sKKyAgICBCRUdJTigp
OworICAgIFJFVFVSTihqc051bWJlcigtT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKK3sKKyAgICBCRUdJTigpOwor
ICAgIEpTVmFsdWUgdjEgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgCisjaWYgMSAvL0xMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisg
ICAgZGF0YUxvZygiVHJ5aW5nIHRvIGFkZCAiLCB2MSwgIiB0byAiLCB2MiwgIi5cbiIpOworI2Vu
ZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkgJiYgIXYyLmlzT2JqZWN0KCkpCisgICAg
ICAgIFJFVFVSTihqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvU3RyaW5nKGV4ZWMp
KSk7CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAg
ICAgUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAg
CisgICAgUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKKy8vIFRoZSBm
b2xsb3dpbmcgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIG5lZWQgdG8gYmUgc3Vy
ZSB0byBydW4KKy8vIHRvTnVtYmVyKCkgb24gdGhlaXIgb3BlcmFuZHMgaW4gb3JkZXIuICAoQSBj
YWxsIHRvIHRvTnVtYmVyKCkgaXMgaWRlbXBvdGVudAorLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFs
cmVhZHkgc2V0IG9uIHRoZSBFeGVjU3RhdGUuKQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bXVsKQoreworICAgIEJFR0lOKCk7CisgICAgZG91YmxlIGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhICogYikpOworfQorCitTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfc3ViKQoreworICAgIEJFR0lOKCk7CisgICAgZG91YmxlIGEgPSBPUF9DKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9QX0MoMykuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhIC0gYikpOworfQorCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGl2KQoreworICAgIEJFR0lOKCk7CisgICAgZG91Ymxl
IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhIC8g
YikpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQoreworICAgIEJFR0lOKCk7
CisgICAgZG91YmxlIGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBk
b3VibGUgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihq
c051bWJlcihmbW9kKGEsIGIpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hp
ZnQpCit7CisgICAgQkVHSU4oKTsKKyAgICBpbnQzMl90IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpOworICAgIHVpbnQzMl90IGIgPSBPUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoYSA8PCAoYiAmIDMxKSkpOworfQorCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQoreworICAgIEJFR0lOKCk7CisgICAgaW50MzJf
dCBhID0gT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICB1aW50MzJfdCBiID0g
T1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEg
Pj4gKGIgJiAzMSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpCit7
CisgICAgQkVHSU4oKTsKKyAgICB1aW50MzJfdCBhID0gT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50
MzIoZXhlYyk7CisgICAgdWludDMyX3QgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhID4+IChiICYgMzEpKSk7Cit9CisKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpCit7CisgICAgQkVHSU4oKTsKKyAgICBpbnQzMl90IGEg
PSBPUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgYiA9IE9QX0Mo
MykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgJiBiKSk7
Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKK3sKKyAgICBCRUdJTigpOwor
ICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgaW50
MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBSRVRVUk4oanNO
dW1iZXIoYSB8IGIpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKK3sK
KyAgICBCRUdJTigpOworICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYyk7CisgICAgaW50MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsK
KyAgICBSRVRVUk4oanNOdW1iZXIoYSBeIGIpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3R5cGVvZikKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc1R5cGVTdHJpbmdGb3JW
YWx1ZShleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaXNfb2JqZWN0KQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihq
c0lzT2JqZWN0VHlwZShleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJO
KGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKE9QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4pCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwg
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxf
YnlfdmFsKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIp
LmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVj
dChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IE9QX0MoMykuanNWYWx1ZSgp
OworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAg
ICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNl
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwg
ZXhlYywgaSk7CisgICAgZWxzZSBpZiAoaXNOYW1lKHN1YnNjcmlwdCkpCisgICAgICAgIGNvdWxk
RGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9i
amVjdCwgZXhlYywganNDYXN0PE5hbWVJbnN0YW5jZSo+KHN1YnNjcmlwdC5hc0NlbGwoKSktPnBy
aXZhdGVOYW1lKCkpOworICAgIGVsc2UgeworICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAg
ICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxk
RGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9i
amVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVsZXRl
ICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgVEhST1coY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAK
KyAgICBSRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9zdHJjYXQpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNTdHJpbmco
ZXhlYywgJk9QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihPUF9DKDIp
LmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDE0
OTgyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw4ICsyOSwxMCBAQAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCi0jaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIk5h
bWVJbnN0YW5jZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJ
VCkgfHwgRU5BQkxFKExMSU5UKQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtOTcsNiArOTksMTA5
IEBAIGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICByZXR1cm4g
YmFzZU9iai0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHkpOwogfQogCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6Q29tbW9uU2xvd1BhdGhzCit9IC8vIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMK
KworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCisjaWYgVVNFKEpTVkFM
VUU2NCkKKy8vIEFjY29yZGluZyB0byBDKysgcnVsZXMsIGEgdHlwZSB1c2VkIGZvciB0aGUgcmV0
dXJuIHNpZ25hdHVyZSBvZiBmdW5jdGlvbiB3aXRoIEMgbGlua2FnZSAoaS5lLgorLy8gJ2V4dGVy
biAiQyInKSBuZWVkcyB0byBiZSBQT0Q7IGhlbmNlIHB1dHRpbmcgYW55IGNvbnN0cnVjdG9ycyBp
bnRvIGl0IGNvdWxkIGNhdXNlIGVpdGhlciBjb21waWxlcgorLy8gd2FybmluZ3MsIG9yIHdvcnNl
LCBhIGNoYW5nZSBpbiB0aGUgQUJJIHVzZWQgdG8gcmV0dXJuIHRoZXNlIHR5cGVzLgorc3RydWN0
IFNsb3dQYXRoUmV0dXJuVHlwZSB7CisgICAgdm9pZCogYTsKKyAgICBFeGVjU3RhdGUqIGI7Cit9
OworCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVj
U3RhdGUqIGIpCit7CisgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdDsKKyAgICByZXN1bHQu
YSA9IGE7CisgICAgcmVzdWx0LmIgPSBiOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGlu
ZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwg
RXhlY1N0YXRlKiYgYikKK3sKKyAgICBhID0gcmVzdWx0LmE7CisgICAgYiA9IHJlc3VsdC5iOwor
fQorCisjZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQordHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRo
UmV0dXJuVHlwZTsKKwordHlwZWRlZiB1bmlvbiB7CisgICAgc3RydWN0IHsKKyAgICAgICAgdm9p
ZCogYTsKKyAgICAgICAgRXhlY1N0YXRlKiBiOworICAgIH0gcGFpcjsKKyAgICBpbnQ2NF90IGk7
Cit9IFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nOworCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVjU3RhdGUqIGIpCit7CisgICAgU2xvd1BhdGhS
ZXR1cm5UeXBlRW5jb2RpbmcgdTsKKyAgICB1LnBhaXIuYSA9IGE7CisgICAgdS5wYWlyLmIgPSBi
OworICAgIHJldHVybiB1Lmk7Cit9CisKK2lubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0
aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhlY1N0YXRlKiYgYikKK3sKKyAgICBTbG93
UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OworICAgIHUuaSA9IHJlc3VsdDsKKyAgICBhID0gdS5w
YWlyLmE7CisgICAgYiA9IHUucGFpci5iOworfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgCisjZGVmaW5lIFNMT1dfUEFUSAorICAgIAorI2RlZmluZSBTTE9XX1BBVEhfREVDTChu
YW1lKSBcCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggbmFtZShFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKyAgICAKKyNkZWZpbmUgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKG5hbWUpIFwKK1NMT1dfUEFUSF9ERUNMKG5hbWUpIFdURl9JTlRFUk5BTAorICAg
IAorU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3RvX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
b3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7CitTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25lcSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3N0cmljdGVxKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbnN0cmljdGVxKTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbGVzcyk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2xlc3NlcSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dyZWF0ZXIpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyZXEpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbmMpOworU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9kZWMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19u
dW1iZXIpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZGQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9tdWwpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdWIpOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kaXYpOworU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9tb2QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sc2hpZnQp
OworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpOworU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfYml0YW5kKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYml0b3IpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9pc19vYmplY3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlv
bik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luKTsKK1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3N0cmNhdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1p
dGl2ZSk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgfHwg
RU5BQkxFKExMSU5UKQogCiAjZW5kaWYgLy8gQ29tbW9uU2xvd1BhdGhzX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE0OTgyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIGlubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUg
bnVtYmVyKQogY2xhc3MgSlNWYWx1ZSB7CiAgICAgZnJpZW5kIHN0cnVjdCBFbmNvZGVkSlNWYWx1
ZUhhc2hUcmFpdHM7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgSklU
U2xvd1BhdGhDYWxsOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViczsKICAgICBmcmllbmQgY2xh
c3MgSklUU3R1YkNhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpTSW50ZXJmYWNlSklUOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203106</attachid>
            <date>2013-05-28 16:41:41 -0700</date>
            <delta_ts>2013-05-29 16:44:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>116889.patch</filename>
            <type>text/plain</type>
            <size>116111</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTA4NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjEyLDYgKzYxMiw3IEBACiAJCTY1MTEyMkZEMTQwNDZB
NEMwMDJCMTAxRCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk2NTExMjJGRTE0MDQ2QTRDMDAy
QjEwMUQgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGli
ICovOyB9OwogCQk2NTExMjMwNzE0MDQ2QjBBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTExMjJFNTE0MDQ2
OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi87IH07CisJCTY1MTk5NzZFMTc0NDNENjgw
MDczOTNDRSAvKiBDb21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxOTk3NkMxNzQ0MzU0ODAwNzM5M0NFIC8qIENvbW1vblNs
b3dQYXRocy5jcHAgKi87IH07CiAJCTY1MzAzRDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJU
b2tlbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
MzAzRDYzMTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5
MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3Bw
ICovOyB9OwogCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVC
Qjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTgxLDYgKzE1ODIsNyBAQAogCQk2NTA3RDI5
NzBFODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1R5cGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdFJlZ0V4cDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNjUxOTk3NkMxNzQ0MzU0ODAwNzM5
M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25TbG93
UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTMwM0Q2MzE0NDdCOUUx
MDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQwMEMw
RjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5TmFtZUFycmF5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5
TmFtZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5h
bWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU5MCw2ICsxNTkyLDcg
QEAKIAkJNjU2MjFFNkMwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eVNsb3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NTk4N0YyQzE2
N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7IHBhdGgg
PSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9pbnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbnVzZWRQb2ludGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTY1QUM4M0YxMTc0QzE3QUUwMDExRDhBQiAvKiBTbG93UGF0aENh
bGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2xvd1BhdGhDYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RlY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NUM3QTE3MTBBOEVBQUNC
MDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1dyYXBwZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NUM3QTE3MjBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dyYXBwZXJPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyODUsNiArMjI4OCw3IEBACiAJCTE0MjlEOTJDMEVE
MjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTY1QUM4M0YxMTc0QzE3QUUwMDExRDhBQiAvKiBTbG93UGF0aENhbGwuaCAq
LywKIAkJCQkwRjczRDdBQjE2NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGlu
ZS5jcHAgKi8sCiAJCQkJMEY3M0Q3QUMxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1
YlJvdXRpbmUuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJ
VENvZGVNYXAuaCAqLywKQEAgLTI2MTMsNiArMjYxNyw3IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMw
MDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk2NTE5OTc2QzE3NDQzNTQ4MDA3MzkzQ0UgLyogQ29tbW9uU2xvd1BhdGhzLmNw
cCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJ
CQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKIAkJCQlCQzI1N0RF
NTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLywKQEAgLTQxMDgsNiArNDExMyw3
IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk2NTE5OTc2RTE3NDQzRDY4MDA3MzkzQ0Ug
LyogQ29tbW9uU2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJE
MTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0Yz
OUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lk
IEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKFZlY3RvcjxTCiB2b2lkIEludGVycHJldGVyOjph
ZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBl
cnJvcikKIHsKICAgICBWTSogdm0gPSAmY2FsbEZyYW1lLT52bSgpOwotICAgIEFTU0VSVChjYWxs
RnJhbWUgPT0gdm0tPnRvcENhbGxGcmFtZSB8fCBjYWxsRnJhbWUgPT0gY2FsbEZyYW1lLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSB8fCBjYWxsRnJhbWUgPT0gY2FsbEZyYW1l
LT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CisvLyAgICBBU1NFUlQoY2Fs
bEZyYW1lID09IHZtLT50b3BDYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IGNhbGxGcmFtZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkgfHwgY2FsbEZyYW1lID09IGNhbGxGcmFt
ZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpOwogICAgIGlmIChlcnJvci0+
aGFzUHJvcGVydHkoY2FsbEZyYW1lLCB2bS0+cHJvcGVydHlOYW1lcy0+c3RhY2spKQogICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1
MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNiArNDYsNyBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hl
Y2tTCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIK
ICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNp
bmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKQEAgLTE1NiwzOSArMTU3LDMzIEBAIHZvaWQgSklUOjplbWl0VGltZW91dENo
ZWNrKCkKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAjZGVmaW5lIERFRklORV9CSU5BUllfT1Ao
bmFtZSkgXAotICAgIGNhc2UgbmFtZTogeyBcCi0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV8jI25hbWUpOyBcCi0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOyBcCi0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOyBcCi0gICAgICAgIHN0dWJDYWxs
LmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7IFwKLSAgICAgICAgTkVYVF9P
UENPREUobmFtZSk7IFwKKyAgICBjYXNlIG9wXyMjbmFtZTogeyBcCisgICAgICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
IyNuYW1lKTsgXAorICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCisgICAgICAgIE5FWFRf
T1BDT0RFKG9wXyMjbmFtZSk7IFwKICAgICB9CiAKICNkZWZpbmUgREVGSU5FX1VOQVJZX09QKG5h
bWUpIFwKLSAgICBjYXNlIG5hbWU6IHsgXAotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBjdGlfIyNuYW1lKTsgXAotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsgXAotICAgICAgICBzdHViQ2FsbC5jYWxsKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOyBcCi0gICAgICAgIE5FWFRfT1BDT0RFKG5hbWUp
OyBcCisgICAgY2FzZSBvcF8jI25hbWU6IHsgXAorICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoXyMjbmFtZSk7IFwK
KyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAorICAgICAgICBORVhUX09QQ09ERShvcF8j
I25hbWUpOyBcCiAgICAgfQogCiAjZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCiAjZGVmaW5l
IERFRklORV9CSU5BUllfT1AobmFtZSkgXAotICAgIGNhc2UgbmFtZTogeyBcCi0gICAgICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV8jI25hbWUpOyBcCi0gICAgICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QyKTsgXAot
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kLCByZWdUMik7IFwKLSAgICAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsgXAotICAgICAgICBORVhUX09QQ09ERShuYW1lKTsgXAorICAgIGNhc2Ug
b3BfIyNuYW1lOiB7IFwKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAgICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7IFwKKyAgICAgICAgTkVYVF9PUENPREUob3BfIyNuYW1lKTsgXAogICAg
IH0KIAogI2RlZmluZSBERUZJTkVfVU5BUllfT1AobmFtZSkgXAotICAgIGNhc2UgbmFtZTogeyBc
Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV8jI25hbWUpOyBcCi0gICAg
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQs
IHJlZ1QyKTsgXAotICAgICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOyBcCi0gICAgICAgIE5FWFRfT1BDT0RFKG5hbWUpOyBcCisgICAgY2FzZSBvcF8j
I25hbWU6IHsgXAorICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsgXAorICAgICAgICBORVhUX09QQ09ERShvcF8jI25hbWUpOyBcCiAgICAgfQog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKQEAgLTI0NCwxNSArMjM5LDE1IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKLSAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9kZWxfYnlfdmFsKQot
ICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2luKQotICAgICAgICBERUZJTkVfQklOQVJZX09Q
KG9wX2xlc3MpCi0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfbGVzc2VxKQotICAgICAgICBE
RUZJTkVfQklOQVJZX09QKG9wX2dyZWF0ZXIpCi0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3Bf
Z3JlYXRlcmVxKQotICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfZnVuY3Rpb24pCi0gICAg
ICAgIERFRklORV9VTkFSWV9PUChvcF9pc19vYmplY3QpCi0gICAgICAgIERFRklORV9VTkFSWV9P
UChvcF90eXBlb2YpCisgICAgICAgIERFRklORV9CSU5BUllfT1AoZGVsX2J5X3ZhbCkKKyAgICAg
ICAgREVGSU5FX0JJTkFSWV9PUChpbikKKyAgICAgICAgREVGSU5FX0JJTkFSWV9PUChsZXNzKQor
ICAgICAgICBERUZJTkVfQklOQVJZX09QKGxlc3NlcSkKKyAgICAgICAgREVGSU5FX0JJTkFSWV9P
UChncmVhdGVyKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKGdyZWF0ZXJlcSkKKyAgICAgICAg
REVGSU5FX1VOQVJZX09QKGlzX2Z1bmN0aW9uKQorICAgICAgICBERUZJTkVfVU5BUllfT1AoaXNf
b2JqZWN0KQorICAgICAgICBERUZJTkVfVU5BUllfT1AodHlwZW9mKQogCiAgICAgICAgIERFRklO
RV9PUChvcF9hZGQpCiAgICAgICAgIERFRklORV9PUChvcF9iaXRhbmQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw2ICsyODMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB2b2lkIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhDb2RlQmxvY2sqIGNv
ZGVibG9jaywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0ciBuZXdD
YWxsZWVGdW5jdGlvbik7CiAKICAgICBjbGFzcyBKSVQgOiBwcml2YXRlIEpTSW50ZXJmYWNlSklU
IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVFNsb3dQYXRoQ2FsbDsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVFN0dWJDYWxsOwogICAgICAgICBmcmllbmQgc3RydWN0IFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbzsKIApAQCAtNjA4LDcgKzYwOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShSZWdpc3RlcklEIHJlZyk7CiAgICAg
ICAgIHZvaWQgY29tcGlsZUJpbmFyeUFyaXRoT3AoT3Bjb2RlSUQsIHVuc2lnbmVkIGRzdCwgdW5z
aWduZWQgc3JjMSwgdW5zaWduZWQgc3JjMiwgT3BlcmFuZFR5cGVzIG9waSk7Ci0gICAgICAgIHZv
aWQgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShPcGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYsIHVuc2lnbmVkIGRzdCwgdW5zaWduZWQgc3JjMSwgdW5zaWduZWQg
c3JjMiwgT3BlcmFuZFR5cGVzLCBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBib29s
IG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKTsKKyAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5
QXJpdGhPcFNsb3dDYXNlKEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIHNyYzEsIHVuc2lnbmVkIHNy
YzIsIE9wZXJhbmRUeXBlcywgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSwgYm9vbCBv
cDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSk7CiAKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJ
ZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKik7CiAgICAgICAgIHZvaWQgY29tcGls
ZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVy
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkocmV2aXNpb24gMTUw
ODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNp
bmNsdWRlICJTbG93UGF0aENhbGwuaCIKIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxzdGRp
by5oPgpAQCAtODAsOSArODEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKEluc3Ry
dWN0aW9uCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyAweDdmZmZmZmZmIGNoZWNrCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb3VibGUgY2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9uZWdhdGUpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJl
Z1QxLCByZWdUMCk7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmVnYXRl
KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJl
Z1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wKE9wY29kZUlEIG9wY29kZSwgdW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIHVuc2lnbmVk
IHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCkBAIC0xOTgsMTAgKzE5OSw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24KICAgICAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsg
Ly8gaW50MzIgY2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9s
c2hpZnQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9sc2hp
ZnQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwg
cmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogLy8gUmlnaHRTaGlmdCAoPj4pIGFuZCBV
bnNpZ25lZFJpZ2h0U2hpZnQgKD4+PikgaGVscGVyCkBAIC0yOTYsMTAgKzI5Niw5IEBAIHZvaWQg
SklUOjplbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWMKICAgICAgICAgICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsgLy8gQ2FuJ3QgcmVwcmVzZW50IHVuc2lnbmVkIHJlc3VsdCBhcyBhbiBpbW1l
ZGlhdGUKICAgICB9CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBpc1Vuc2lnbmVk
ID8gY3RpX29wX3Vyc2hpZnQgOiBjdGlfb3BfcnNoaWZ0KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwu
Y2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBpc1Vuc2lnbmVkID8gc2xvd19wYXRoX3Vyc2hpZnQgOiBzbG93X3BhdGhf
cnNoaWZ0KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVn
VDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIFJpZ2h0U2hpZnQgKD4+KQpA
QCAtMzYxLDEwICszNjAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0
aW9uCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3BfYml0YW5kKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfYml0YW5kKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRM
b2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIEJpdE9y
ICh8KQpAQCAtNDAyLDEwICs0MDAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYml0b3IoSW5z
dHJ1Y3Rpb24qCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAKLSAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0b3IpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9w
MSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRz
dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9iaXRvcik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBl
bWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAvLyBC
aXRYb3IgKF4pCkBAIC00NDMsMTAgKzQ0MCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXR4
b3IoSW5zdHJ1Y3Rpb24KICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVj
awogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKIAotICAgIEpJVFN0dWJD
YWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXR4b3IpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5j
YWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXR4b3IpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC01MDYsMTAgKzUwMiw5IEBAIHZvaWQgSklUOjplbWl0X29wX2FkZChJbnN0cnVjdGlvbiog
Y3VycmUKIAogICAgIGlmICghdHlwZXMuZmlyc3QoKS5taWdodEJlTnVtYmVyKCkgfHwgIXR5cGVz
LnNlY29uZCgpLm1pZ2h0QmVOdW1iZXIoKSkgewogICAgICAgICBhZGRTbG93Q2FzZSgpOwotICAg
ICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYWRkKTsKLSAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3Ay
KTsKLSAgICAgICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2FkZCk7Cisg
ICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEs
IHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTYxMSwxMCArNjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiog
YwogICAgICAgICB9CiAgICAgfQogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX2FkZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fk
ZCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCBy
ZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAvLyBTdWJ0cmFjdGlvbiAoLSkKQEAgLTY4
OSw3ICs2ODMsNiBAQCB2b2lkIEpJVDo6ZW1pdFN1YjMyQ29uc3RhbnQodW5zaWduZWQgZHN0CiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIG9wMiA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0g
T3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwog
CkBAIC03MTUsMTAgKzcwOCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zdWIoSW5zdHJ1Y3Rp
b24qIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9zdWIpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9zdWIpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdU
MSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRCaW5hcnlE
b3VibGVPcChPcGNvZGVJRCBvcGNvZGVJRCwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBvcDEsIHVu
c2lnbmVkIG9wMiwgT3BlcmFuZFR5cGVzIHR5cGVzLCBKdW1wTGlzdCYgbm90SW50MzJPcDEsIEp1
bXBMaXN0JiBub3RJbnQzMk9wMiwgYm9vbCBvcDFJc0luUmVnaXN0ZXJzLCBib29sIG9wMklzSW5S
ZWdpc3RlcnMpCkBAIC0xMDIyLDExICsxMDE0LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX211
bChJbnN0cnVjdGlvbiogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgTGFiZWwgaml0U3R1YkNh
bGwodGhpcyk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX211bCk7Ci0g
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChv
cDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX211bCk7CisgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZy
YW1lUmVnaXN0ZXIpOwogfQogCiAvLyBEaXZpc2lvbiAoLykKQEAgLTEwOTcsOCArMTA4Nyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmUKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBl
czo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogICAgIGlmICgh
c3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCkBAIC0xMTEzLDEwICsxMTAyLDkgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiogYwogICAgICAgICB9CiAgICAgfQogCi0gICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2Rpdik7Ci0gICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJD
YWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwog
fQogCiAvLyBNb2QgKCUpCkBAIC0xMTUyLDEwICsxMTQwLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bW9kKEluc3RydWN0aW9uKiBjdXJyZQogICAgIG51bWVyYXRvclBvc2l0aXZlLmxpbmsodGhpcyk7
CiAgICAgZW1pdFN0b3JlSW50MzIoZHN0LCByZWdUMSwgKG9wMSA9PSBkc3QgfHwgb3AyID09IGRz
dCkpOwogI2Vsc2UKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbW9kKTsK
LSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBz
bG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKHJlc3VsdCwgcmVnVDEsIHJlZ1QwLCBj
YWxsRnJhbWVSZWdpc3Rlcik7CiAjZW5kaWYKIH0KIApAQCAtMTE2MywxNyArMTE1MCwxNCBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKEluc3RydWN0aW9uKiBjCiB7CiAjaWYgQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkKICAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9t
b2QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7CisgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2Qp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwg
cmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGN1cnJl
bnRJbnN0cnVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGl0ZXIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAxNTA4NDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNsdWRlICJTbG93
UGF0aENhbGwuaCIKIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMjE5
LDE0ICsyMjAsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKEluc3RydWN0aW9uKiBjdQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5z
aWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25l
ZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyAweDdmZmZmZmZmIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBkb3VibGUgY2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9v
cF9uZWdhdGUpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2Fs
bC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZWdhdGUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC0yNDksMTcgKzI1MCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24q
IGN1CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
dW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2ln
bmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBVTlVTRURf
UEFSQU0ob3AxKTsKLSAgICBVTlVTRURfUEFSQU0ob3AyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9sc2hpZnQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMik7Ci0gICAgc3R1YkNhbGwuY2FsbChyZXN1bHQp
OworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfbHNoaWZ0KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX3JzaGlmdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzAzLDMxICsy
OTksMjUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3JzaGlmdChJbnN0cnVjdGlvbgogICAgIHVu
c2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWdu
ZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIEpJVFN0dWJD
YWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9yc2hpZnQpOworICAgIFVOVVNFRF9QQVJBTShvcDEp
OwogCi0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkKICAgICAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIpOwotICAgIH0gZWxzZSB7CisKKyAgICBl
bHNlIHsKICAgICAgICAgaWYgKHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkpIHsKICAg
ICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgICAgIC8vIFdl
J3JlIHJlbG9hZGluZyBvcDEgdG8gcmVnVDAgYXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUg
dGhhdAotICAgICAgICAgICAgLy8gd2UgaGF2ZSBub3QgbXVuZ2VkIHRoZSBvcGVyYW5kLiAgSXQg
bWF5IGhhdmUgYWxyZWFkeSBiZWVuIHNoaWZ0ZWQKLSAgICAgICAgICAgIC8vIGNvcnJlY3RseSwg
YnV0IGl0IHN0aWxsIHdpbGwgbm90IGhhdmUgYmVlbiB0YWdnZWQuCi0gICAgICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChvcDEsIHJlZ1QwKTsKLSAgICAgICAgICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KHJlZ1QyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHJlZ1QyKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0
KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX3JzaGlmdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF91cnNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC00MTgsMTAg
KzQwOCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF91cnNoaWZ0KEluc3RydWN0aW8KICAgICAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBDYW4ndCByZXByZXNlbnQgdW5zaWduZWQgcmVzdWx0
IGFzIGFuIGltbWVkaWF0ZQogICAgIH0KICAgICAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBjdGlfb3BfdXJzaGlmdCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdU
MCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyLCByZWdUMSk7Ci0gICAgc3R1YkNhbGwu
Y2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfdXJzaGlmdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDApOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCwgdW5zaWduZWQgb3AxLCB1bnNpZ25lZCBv
cDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCkBAIC02
MDcsMjYgKzU5NiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24qIGN1
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5z
aWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNp
Z25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVk
IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsK
LSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2JpdGFuZCk7Ci0gICAg
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVnVDIpOwotICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKLSAgICB9
IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKLSAgICAgICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2JpdGFuZCk7Ci0gICAgICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3Ay
LCByZWdUMik7Ci0gICAgICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0YW5kKTsKLSAgICAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdUMik7Ci0gICAgICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICAgICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOwotICAgIH0K
KworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfYml0YW5kKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjQ0LDEzICs2MTks
MTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luYyhJbnN0cnVjdGlvbiogYwogewogICAgIHVu
c2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKLSAgICBK
dW1wIG5vdEltbSA9IGdldFNsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
KyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9pbmMpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNEc3QsIHJlZ1QwKTsK
LSAgICBub3RJbW0ubGluayh0aGlzKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfaW5jKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNh
bGwuY2FsbChzcmNEc3QpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY2OCwxMyArNjQxLDExIEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24qIGMKIHsKICAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCi0gICAgSnVtcCBub3RJbW0gPSBnZXRTbG93
Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfZGVjKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCByZWdUMCk7Ci0gICAgbm90SW1tLmxpbmsodGhp
cyk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2RlYyk7Ci0gICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoc3JjRHN0KTsKIH0K
IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJFR0lOOiBPUF9NT0QgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC03MTksMTAgKzY5MCw5IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9tb2QoSW5zdHJ1Y3Rpb24qIGMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbW9kKTsKLSAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChyZWdUMyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDIpOwotICAgIHN0
dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQog
CiAjZWxzZSAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQpAQCAtNzMzLDEwICs3MDMsMTIgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZQogICAgIHVuc2lnbmVkIG9w
MSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgb3AyID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9tb2QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVn
VDIpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIpOwotICAgIHN0dWJDYWxs
LmNhbGwocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0ob3AxKTsKKyAgICBVTlVTRURfUEFSQU0o
b3AyKTsKKworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9tb2QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTc5Niw3ICs3NjgsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUJpbmFyeUFyaXRoT3AoT3Bjb2RlSUQgCiAgICAgZW1pdEZhc3RBcml0aEludFRv
SW1tTm9DaGVjayhyZWdUMCwgcmVnVDApOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFy
aXRoT3BTbG93Q2FzZShPcGNvZGVJRCBvcGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlciwgdW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9w
MiwgT3BlcmFuZFR5cGVzIHR5cGVzLCBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBi
b29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKQordm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlB
cml0aE9wU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQg
b3Bjb2RlSUQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVk
IHJlc3VsdCwgdW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIE9wZXJhbmRUeXBlcyB0eXBlcywg
Ym9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSwgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRG
YXN0Q2FzZSkKIHsKICAgICAvLyBXZSBhc3N1bWUgdGhhdCBzdWJ0cmFjdGluZyBUYWdUeXBlTnVt
YmVyIGlzIGVxdWl2YWxlbnQgdG8gYWRkaW5nIERvdWJsZUVuY29kZU9mZnNldC4KICAgICBDT01Q
SUxFX0FTU0VSVCgoKFRhZ1R5cGVOdW1iZXIgKyBEb3VibGVFbmNvZGVPZmZzZXQpID09IDApLCBU
YWdUeXBlTnVtYmVyX1BMVVNfRG91YmxlRW5jb2RlT2Zmc2V0X0VRVUFMU18wKTsKQEAgLTgxNSwx
NyArNzg3LDEyIEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKE8KICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIEludGVnZXIgb3ZlcmZsb3cgY2FzZSAtIHdlIGNvdWxk
IGhhbmRsZSB0aGlzIGluIEpJVCBjb2RlLCBidXQgdGhpcyBpcyBsaWtlbHkgcmFyZS4KICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfbXVsICYmICFvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSAmJiAh
b3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpIC8vIG9wX211bCBoYXMgYW4gZXh0cmEgc2xvdyBj
YXNlIHRvIGhhbmRsZSAwICogbmVnYXRpdmUgbnVtYmVyLgogICAgICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIHJlZ1QwKTsKIAogICAgIExh
YmVsIHN0dWJGdW5jdGlvbkNhbGwodGhpcyk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgb3Bjb2RlSUQgPT0gb3BfYWRkID8gY3RpX29wX2FkZCA6IG9wY29kZUlEID09IG9wX3N1YiA/
IGN0aV9vcF9zdWIgOiBjdGlfb3BfbXVsKTsKLSAgICBpZiAob3AxSGFzSW1tZWRpYXRlSW50RmFz
dENhc2UgfHwgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpIHsKLSAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihvcDEsIHJlZ1QwKTsKLSAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihvcDIsIHJlZ1QxKTsKLSAgICB9Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKHJlc3Vs
dCk7CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3Bjb2RlSUQgPT0gb3BfYWRkID8gc2xvd19wYXRoX2FkZCA6IG9wY29kZUlEID09
IG9wX3N1YiA/IHNsb3dfcGF0aF9zdWIgOiBzbG93X3BhdGhfbXVsKTsKKyAgICBzbG93UGF0aENh
bGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiAg
ICAgSnVtcCBlbmQgPSBqdW1wKCk7CiAKICAgICBpZiAob3AxSGFzSW1tZWRpYXRlSW50RmFzdENh
c2UpIHsKQEAgLTg5MywxMSArODYwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0
aW9uKiBjdXJyZQogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUlu
dChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogICAgIGlmICghdHlwZXMuZmly
c3QoKS5taWdodEJlTnVtYmVyKCkgfHwgIXR5cGVzLnNlY29uZCgpLm1pZ2h0QmVOdW1iZXIoKSkg
ewotICAgICAgICBhZGRTbG93Q2FzZSgpOwotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBjdGlfb3BfYWRkKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdU
Mik7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIpOwotICAgICAgICBz
dHViQ2FsbC5jYWxsKHJlc3VsdCk7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYWRkKTsKKyAgICAgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTMxLDcgKzg5
NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rpb24qIGMKIAogICAgIGJv
b2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0
ZUludChvcDEpOwogICAgIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSAhb3AxSGFz
SW1tZWRpYXRlSW50RmFzdENhc2UgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3Ay
KTsKLSAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKG9wX2FkZCwgaXRlciwgcmVzdWx0
LCBvcDEsIG9wMiwgdHlwZXMsIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBvcDJIYXNJbW1l
ZGlhdGVJbnRGYXN0Q2FzZSk7CisgICAgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wX2FkZCwgaXRlciwgcmVzdWx0LCBvcDEsIG9wMiwgdHlwZXMsIG9w
MUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX211bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtOTc2LDcgKzk0MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rp
b24qIGMKIAogICAgIGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSBpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludChvcDEpICYmIGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUlu
dChvcDEpID4gMDsKICAgICBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlID0gIW9wMUhh
c0ltbWVkaWF0ZUludEZhc3RDYXNlICYmIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9w
MikgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMikgPiAwOwotICAgIGNvbXBp
bGVCaW5hcnlBcml0aE9wU2xvd0Nhc2Uob3BfbXVsLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0
eXBlcywgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RD
YXNlKTsKKyAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BfbXVsLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgb3AxSGFzSW1tZWRpYXRl
SW50RmFzdENhc2UsIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZGl2KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDgyLDEw
ICsxMDQ2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiogYwogICAg
ICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIH0KICAgICAvLyBUaGVyZSBpcyBhbiBl
eHRyYSBzbG93IGNhc2UgZm9yIChvcDEgKiAtTikgb3IgKC1OICogb3AyKSwgdG8gY2hlY2sgZm9y
IDAgc2luY2UgdGhpcyBzaG91bGQgcHJvZHVjZSBhIHJlc3VsdCBvZiAtMC4KLSAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZGl2KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChvcDEsIHJlZ1QyKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIsIHJlZ1QyKTsKLSAg
ICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kaXYpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC0xMTA2LDcgKzEwNjksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKEluc3Ry
dWN0aW9uKiBjCiAgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKLSAgICBjb21waWxlQmluYXJ5QXJpdGhP
cFNsb3dDYXNlKG9wX3N1YiwgaXRlciwgcmVzdWx0LCBvcDEsIG9wMiwgdHlwZXMsIGZhbHNlLCBm
YWxzZSk7CisgICAgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rp
b24sIG9wX3N1YiwgaXRlciwgcmVzdWx0LCBvcDEsIG9wMiwgdHlwZXMsIGZhbHNlLCBmYWxzZSk7
CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQ6IE9QX0FERCwgT1Bf
U1VCLCBPUF9NVUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDE1MDg0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDc0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitzdGF0aWMg
Ym9vbCBnZXRFeGNlcHRpb25Mb2NhdGlvbihWTSogdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCB1
bnNpZ25lZCYgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBi
eXRlY29kZU9mZnNldCA9IDA7CisgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJh
bWVGbGFnKCkpOworICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpID8gY2FsbEZyYW1lLT50cnVlQ2FsbGVyRnJhbWUoKSA6IGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKKyAgICBib29sIGNhbGxmcmFtZUlz
SG9zdCA9IGNhbGxlckZyYW1lLT5hZGRIb3N0Q2FsbEZyYW1lRmxhZygpID09IGNhbGxGcmFtZS0+
Y2FsbGVyRnJhbWUoKTsKKyAgICAKKyAgICBpZiAoIWNhbGxGcmFtZSB8fCAhY2FsbEZyYW1lLT5j
b2RlQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKCFjYWxsRnJhbWUtPmhhc1JldHVyblBDKCkpCisg
ICAgICAgIGNhbGxmcmFtZUlzSG9zdCA9IHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKKyAgICBpZiAoY2FsbEZyYW1lLT5pc0lubGluZUNhbGxGcmFtZSgpKQorICAgICAgICBjYWxs
ZnJhbWVJc0hvc3QgPSBmYWxzZTsKKyNlbmRpZgorICAgIAorICAgIGlmIChjYWxsZnJhbWVJc0hv
c3QpIHsKKyAgICAgICAgLy8gRG9uJ3QgbmVlZCB0byBkZWFsIHdpdGggaW5saW5lIGNhbGxmcmFt
ZXMgaGVyZSBhcyBieSBkZWZpbml0aW9uIHdlIGhhdmVuJ3QKKyAgICAgICAgLy8gaW5saW5lZCBh
IGNhbGwgd2l0aCBhbiBpbnRlcnZlbmluZyBuYXRpdmUgY2FsbCBmcmFtZS4KKyNpZiBFTkFCTEUo
SklUKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgICAgIGlmIChj
b2RlQmxvY2sgJiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgp
KSkgeworICAgICAgICAgICAgdW5zaWduZWQgY29kZU9yaWdpbkluZGV4ID0gY2FsbEZyYW1lLT5j
b2RlT3JpZ2luSW5kZXhGb3JERkcoKTsKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29k
ZUJsb2NrLT5jb2RlT3JpZ2luKGNvZGVPcmlnaW5JbmRleCkuYnl0ZWNvZGVJbmRleDsKKyAgICAg
ICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbEZyYW1l
LT5ieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7Cisj
aWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShERkdfSklUKQorICAg
ICAgICBpZiAoY2FsbEZyYW1lLT5pc0lubGluZUNhbGxGcmFtZSgpKSB7CisgICAgICAgICAgICBJ
bmxpbmVDYWxsRnJhbWUqIGljZiA9IGNhbGxGcmFtZS0+aW5saW5lQ2FsbEZyYW1lKCk7CisgICAg
ICAgICAgICBieXRlY29kZU9mZnNldCA9IGljZi0+Y2FsbGVyLmJ5dGVjb2RlSW5kZXg7CisgICAg
ICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBwYXJlbnRDYWxsRnJhbWUgPSBpY2YtPmNhbGxl
ci5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihwYXJlbnRDYWxs
RnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIENvZGVCbG9jayogbmV3
Q29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IocGFyZW50Q2FsbEZy
YW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChuZXdDb2RlQmxvY2spOworICAgICAgICAgICAgICAgIEFTU0VSVChuZXdD
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA+IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAg
ICAgICAgICBjb2RlQmxvY2sgPSBuZXdDb2RlQmxvY2s7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAoY29kZUJsb2NrICYmIEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxv
Y2stPmppdFR5cGUoKSkpIHsKKyAgICAgICAgICAgIENvZGVPcmlnaW4gb3JpZ2luOworICAgICAg
ICAgICAgaWYgKCFjb2RlQmxvY2stPmNvZGVPcmlnaW5Gb3JSZXR1cm4oY2FsbEZyYW1lLT5yZXR1
cm5QQygpLCBvcmlnaW4pKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICBieXRlY29kZU9mZnNldCA9IG9yaWdpbi5ieXRlY29kZUluZGV4
OworICAgICAgICAgICAgaWYgKElubGluZUNhbGxGcmFtZSogaWNmID0gb3JpZ2luLmlubGluZUNh
bGxGcmFtZSkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGljZi0+ZXhlY3V0YWJsZS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSBleGVjdXRhYmxl
LT5iYXNlbGluZUNvZGVCbG9ja0ZvcihpY2YtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5ld0NvZGVCbG9jayk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG5ld0NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpID4gYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jayA9IG5ld0NvZGVCbG9jazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+cmV0dXJuUEMoKSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9
CisKIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KFZNKiB2bSwgRXhlY1N0YXRlKiBjYWxs
RnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVkIHZQQ0luZGV4KQogewogICAg
IFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlvblZhbHVlKTsKQEAgLTU4LDEwICsxMjYsMTkgQEAgRXhj
ZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coVk0qIHZtLCBFeAogICAgIHZtLT50YXJnZXRJbnRl
cnByZXRlclBDRm9yVGhyb3cgPSBjYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAgICAgCiAgICAgUkVM
RUFTRV9BU1NFUlQoY2F0Y2hSb3V0aW5lKTsKLSAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlv
bkhhbmRsZXIgPSB7IGNhdGNoUm91dGluZSwgY2FsbEZyYW1lIH07CisgICAgRXhjZXB0aW9uSGFu
ZGxlciBleGNlcHRpb25IYW5kbGVyID0geyBjYWxsRnJhbWUsIGNhdGNoUm91dGluZX07CiAgICAg
cmV0dXJuIGV4Y2VwdGlvbkhhbmRsZXI7CiB9CiAKK0V4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3dO
ZXcoVk0qIHZtLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSkK
K3sKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7CisgICAgaWYgKCFnZXRFeGNlcHRp
b25Mb2NhdGlvbih2bSwgY2FsbEZyYW1lLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gMDsKKyAgICAKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KHZtLCBjYWxsRnJh
bWUsIGV4Y2VwdGlvblZhbHVlLCBieXRlY29kZU9mZnNldCk7Cit9CisKIEV4Y2VwdGlvbkhhbmRs
ZXIgaml0VGhyb3coVk0qIHZtLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRp
b25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0aW9uKQogewogICAgIHJldHVybiBn
ZW5lcmljVGhyb3codm0sIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDE1
MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTQgQEAgY2xhc3MgVk07CiAvLyBmb3IgdGhlIHRocm93
aW5nIGFuZCBoYW5kbGluZyBleGNlcHRpb25zLgogCiBzdHJ1Y3QgRXhjZXB0aW9uSGFuZGxlciB7
Ci0gICAgdm9pZCogY2F0Y2hSb3V0aW5lOworICAgIC8vIAogICAgIEV4ZWNTdGF0ZSogY2FsbEZy
YW1lOworICAgIHZvaWQqIGNhdGNoUm91dGluZTsKIH07CiAKIEV4Y2VwdGlvbkhhbmRsZXIgZ2Vu
ZXJpY1Rocm93KFZNKiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgdW5zaWdu
ZWQgdlBDSW5kZXgpOwogCitFeGNlcHRpb25IYW5kbGVyIGppdFRocm93TmV3KFZNKiwgRXhlY1N0
YXRlKiwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSk7CiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93
KFZNKiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0
ciBmYXVsdExvY2F0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTA4NDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTE2NywxNCArMTY4LDkgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRp
dgogCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bS0+ZXhjZXB0aW9uTG9jYXRpb24pLCByZWdU
Mik7CiAgICAgc3RvcmVQdHIocmVnVDEsIHJlZ1QyKTsKLSAgICBwb2tlKGNhbGxGcmFtZVJlZ2lz
dGVyLCBPQkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgLyBz
aXplb2Yodm9pZCopKTsKLSAgICAKLSAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1f
dm0tPnRvcENhbGxGcmFtZSk7Ci0gICAgLy8gU2V0IHRoZSByZXR1cm4gYWRkcmVzcy4KLSAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIoY3RpVk1UaHJvd1RyYW1wb2xpbmUpLnZhbHVl
KCkpLCByZWdUMSk7Ci0gICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDEp
OwogCi0gICAgcmV0KCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKEZ1bmN0aW9uUHRyKGN0aVZN
VGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpLnZhbHVlKCkpLCByZWdUMSk7CisgICAganVtcChyZWdU
MSk7CiAKICAgICAvLyBBbGwgdHJhbXBvbGluZXMgY29uc3RydWN0ZWQhIGNvcHkgdGhlIGNvZGUs
IGxpbmsgdXAgY2FsbHMsIGFuZCBzZXQgdGhlIHBvaW50ZXJzIG9uIHRoZSBNYWNoaW5lIG9iamVj
dC4KICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBHTE9CQUxfVEhVTktf
SUQpOwpAQCAtNDMzLDE3ICs0MjksMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3ByaW1p
dGl2ZShJbnN0cgogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX3RvX3ByaW1pdGl2ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF90b19wcmltaXRpdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQo
ZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3Bfc3RyY2F0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3N0cmNhdCk7Ci0gICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
LSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdHJjYXQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTQ3MSwxMyArNDY1LDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX25vdChJbnN0cnVjdGlvbiogY3VycmUKIHZvaWQgSklUOjplbWl0U2xvd19vcF9u
b3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfbm90KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChz
cmMpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25vdCk7CisgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZy
YW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTc1MCwxNyArNzQzLDE0IEBAIHZvaWQgSklUOjplbWl0
X29wX3N0cmljdGVxKEluc3RydWN0aW9uKiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9zdHJpY3Rl
cShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9zdHJpY3RlcSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMSk7
Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3Qp
OworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfc3RyaWN0ZXEpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAg
ZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC03NzEsMTcgKzc2MSwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoSW5zdHJ1
Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAg
ICB1bnNpZ25lZCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCBzcmMyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25zdHJp
Y3RlcSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMSk7Ci0gICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoc3JjMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbnN0
cmljdGVxKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVn
VDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2Vx
X251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDEsOSArOTg4LDkg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX251bWJlcihJbnN0cnVjdAogCiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3Rv
X251bWJlcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAgICBz
dHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19udW1iZXIpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJl
Z2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF9uYW1lX3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMTM3LDkgKzExMjQsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKEluc3RyCiAKICAgICBKdW1wIGFyZ3NDcmVhdGVkID0g
YnJhbmNoMzIoTm90RXF1YWwsIHRhZ0Zvcihkc3QpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1w
dHlWYWx1ZVRhZykpOwogCi0gICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV9hcmd1
bWVudHMpLmNhbGwoKTsKLSAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwotICAgIGVt
aXRTdG9yZSh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoZHN0KSwgcmVnVDEsIHJlZ1QwKTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiAKICAgICBhcmdzQ3JlYXRlZC5saW5rKHRoaXMpOwogfQpAQCAtMTE4Myw5ICsxMTY5LDggQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydQogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmlsZQogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIAotICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhpcyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKLSAgICBz
dHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfY3JlYXRlX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEy
MDUsMTMgKzExOTAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiog
YwogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAg
IHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
Ci0KICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF90b190aGlzKTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChyZWdUMywgcmVnVDIpOwotICAgIHN0dWJDYWxsLmNhbGwodGhpc1JlZ2lz
dGVyKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3RvX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfd2lsbF9jYWxsKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMjgyLDkgKzEyNjQsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfYXJn
dW1lbnRzKS5jYWxsKCk7Ci0gICAgZW1pdFN0b3JlKGFyZ3VtZW50cywgcmVnVDEsIHJlZ1QwKTsK
LSAgICBlbWl0U3RvcmUodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cyksIHJl
Z1QxLCByZWdUMCk7CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiAgICAgCiAgICAgc2tpcEFyZ3VtZW50c0NyZWF0aW9uLmxpbmsodGhp
cyk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV92YWxfZ2Vu
ZXJpYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJl
dmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTM2MCwxMCArMzYxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3Ry
dWN0aQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJjYXQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfc3RyY2F0
KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0z
MihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3N0cmNhdCk7Cisg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtOTM4LDkgKzkzOCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJ
bnN0cnUKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0
aW9uIHByb2ZpbGUKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVk
CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRlX3RoaXMpOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKKyAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3dpbGxf
Y2FsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtOTY0LDI3ICs5NjQsMjgg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1Y3RpbwogewogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX3RvX3RoaXMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOworCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF90b190aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fcHJpbWl0aXZlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX3RvX3ByaW1pdGl2ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19wcmltaXRpdmUpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9ub3QoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgeG9yNjQoVHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVnVDApOwotICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9ub3QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOworICAgIAorICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbm90KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgp
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCkBAIC0xMDA4LDE5ICsxMDA5LDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qdHJ1
ZShJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXR4b3IoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3RpX29wX2JpdHhvcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYml0eG9yKTsKKyAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYml0b3IoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX2JpdG9yKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChy
ZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNh
bGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXRvcik7
CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Vx
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCkBAIC0xMDUxLDEwICsxMDQ4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3N0cmljdGVxKEluc3RydWN0aQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxs
IHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9zdHJpY3RlcSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQocmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2Fs
bC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc3Ry
aWN0ZXEpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTEwNjIsMTAgKzEw
NTgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKEluc3RydWN0CiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25zdHJpY3Rl
cSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfbnN0cmljdGVxKTsKKyAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfaGFzX2lu
c3RhbmNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0xMTIzLDkgKzExMTgsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfdG9fbnVtYmVyKEluc3RydWN0CiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwog
Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX251bWJlcik7Ci0gICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19udW1iZXIpOworICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0x
MTg0LDEwICsxMTc5LDEwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlf
dmEKICAgICAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwotICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfYXJndW1lbnRzKS5jYWxsKCk7
Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpOwotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykpOwotICAg
IAorCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKTsKKyAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOworCiAgICAgc2tpcEFyZ3VtZW50c0NyZWF0aW9uLmxpbmsodGhpcyk7CiAgICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV92YWxfZ2VuZXJpYyk7CiAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoYXJndW1lbnRzLCByZWdUMik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHViQ2FsbC5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgSklUU3R1YkNhbGxfaAogI2RlZmluZSBKSVRTdHViQ2FsbF9oCiAKKyNp
bmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCIKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0zNyw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKSVRTdHViQ2FsbChKSVQqIGppdCwgSlNPYmplY3QqIChKSVRfU1RVQiAqc3R1
YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSkKICAgICAgICAgICAgIDogbV9qaXQoaml0KQogICAg
ICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9wYygwKQogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICwgbV9yZXR1cm5U
eXBlKENlbGwpCiAjZW5kaWYKQEAgLTQ3LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiAoSklUX1NU
VUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTikpCiAgICAgICAgICAgICA6IG1faml0KGpp
dCkKICAgICAgICAgICAgICwgbV9zdHViKHN0dWIpCisgICAgICAgICAgICAsIG1fcGMoMCkKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICAsIG1f
cmV0dXJuVHlwZShDZWxsKQogI2VuZGlmCkBAIC01Nyw3ICs2MCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKSVRTdHViQ2FsbChKSVQqIGppdCwgdm9pZCogKEpJVF9TVFVCICpzdHViKShT
VFVCX0FSR1NfREVDTEFSQVRJT04pKQogICAgICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAg
ICAgICAsIG1fc3R1YihzdHViKQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElT
QUJMRUQgICAgICAKKyAgICAgICAgICAgICwgbV9wYygwKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQp
IHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICwgbV9yZXR1cm5UeXBlKFZvaWRQdHIp
CiAjZW5kaWYKICAgICAgICAgICAgICwgbV9zdGFja0luZGV4KEpJVFNUQUNLRlJBTUVfQVJHU19J
TkRFWCkKQEAgLTY3LDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVFN0dWJD
YWxsKEpJVCogaml0LCBpbnQgKEpJVF9TVFVCICpzdHViKShTVFVCX0FSR1NfREVDTEFSQVRJT04p
KQogICAgICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICAgICAsIG1fc3R1YihzdHViKQor
ICAgICAgICAgICAgLCBtX3BjKDApCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAgICAgLCBtX3JldHVyblR5cGUoSW50KQogI2VuZGlmCkBAIC03Nyw2
ICs4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRTdHViQ2FsbChKSVQqIGppdCwg
Ym9vbCAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTikpCiAgICAgICAgICAg
ICA6IG1faml0KGppdCkKICAgICAgICAgICAgICwgbV9zdHViKHN0dWIpCisgICAgICAgICAgICAs
IG1fcGMoMCkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgICAgICAsIG1fcmV0dXJuVHlwZShJbnQpCiAjZW5kaWYKQEAgLTg3LDYgKzkzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCB2b2lkIChKSVRfU1RV
QiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSkKICAgICAgICAgICAgIDogbV9qaXQoaml0
KQogICAgICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9wYygwKQogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICwgbV9y
ZXR1cm5UeXBlKFZvaWQpCiAjZW5kaWYKQEAgLTk3LDYgKzEwNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKSVRTdHViQ2FsbChKSVQqIGppdCwgRW5jb2RlZEpTVmFsdWUgKEpJVF9TVFVC
ICpzdHViKShTVFVCX0FSR1NfREVDTEFSQVRJT04pKQogICAgICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICAgICAsIG1fc3R1YihzdHViKQorICAgICAgICAgICAgLCBtX3BjKDApCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgLCBtX3Jl
dHVyblR5cGUoVmFsdWUpCiAjZW5kaWYKQEAgLTEwNCw4ICsxMTIsMjkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0
LCBTbG93UGF0aFJldHVyblR5cGUgKEpJVF9TVFVCICpzdHViKShFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykpCisgICAgICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgICAgICwg
bV9zdHViKHN0dWIpCisgICAgICAgICAgICAsIG1fcGMoMCkKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KSB8fCAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICwgbV9yZXR1cm5UeXBlKFZvaWQpCisjZW5k
aWYKKyAgICAgICAgLCBtX3N0YWNrSW5kZXgoSklUU1RBQ0tGUkFNRV9BUkdTX0lOREVYKQorICAg
ICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIEFyZ3VtZW50cyBhcmUgYWRk
ZWQgZmlyc3QgdG8gbGFzdC4KIAorICAgICAgICB2b2lkIHNldFBDKEluc3RydWN0aW9uKiBwYykK
KyAgICAgICAgeworICAgICAgICAgICAgbV9wYyA9IHBjOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBzZXRSZXR1cm5UeXBlSW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9yZXR1cm5U
eXBlID0gSW50OworICAgICAgICB9CisKICAgICAgICAgdm9pZCBza2lwQXJndW1lbnQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBtX3N0YWNrSW5kZXggKz0gc3RhY2tJbmRleFN0ZXA7CkBAIC0y
OTEsNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSklUKiBtX2ppdDsKICAg
ICAgICAgRnVuY3Rpb25QdHIgbV9zdHViOworICAgICAgICBJbnN0cnVjdGlvbiogbV9wYzsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIGVudW0geyBW
b2lkLCBWb2lkUHRyLCBJbnQsIFZhbHVlLCBDZWxsIH0gbV9yZXR1cm5UeXBlOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTUwODQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlJl
cGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNsdWRlICJTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJl
RGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0yNjQ5LDYg
KzI2NTAsMTIgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX3Rocm93KQogICAgIHJl
dHVybiBoYW5kbGVyLmNhbGxGcmFtZTsKIH0KIAorRXhjZXB0aW9uSGFuZGxlciBKSVRfU1RVQiBj
dGlfdm1fdGhyb3dfc2xvd3BhdGgoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0qIHZt
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+dm0oKTsKKyAgICByZXR1cm4gaml0VGhyb3dOZXco
dm0sIGNhbGxGcmFtZSwgdm0tPmV4Y2VwdGlvbik7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCB0b19vYmplY3QpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2
aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgog
I2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKQEAgLTMwNiw2ICszMDcsNyBAQCBzdHJ1Y3Qg
SklUU3RhY2tGcmFtZSB7CiAjZW5kaWYKIAogZXh0ZXJuICJDIiB2b2lkIGN0aVZNVGhyb3dUcmFt
cG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCgp
OwogZXh0ZXJuICJDIiB2b2lkIGN0aU9wVGhyb3dOb3RDYXVnaHQoKTsKIGV4dGVybiAiQyIgRW5j
b2RlZEpTVmFsdWUgY3RpVHJhbXBvbGluZSh2b2lkKiBjb2RlLCBKU1N0YWNrKiwgQ2FsbEZyYW1l
Kiwgdm9pZCogLyp1bnVzZWQxKi8sIHZvaWQqIC8qdW51c2VkMiovLCBWTSopOwogI2lmIEVOQUJM
RShERkdfSklUKQpAQCAtNDQ1LDYgKzQ0Nyw3IEBAIHZvaWQqIEpJVF9TVFVCIGN0aV92bV9sYXp5
TGlua0NhbGwoU1RVQl8KIHZvaWQqIEpJVF9TVFVCIGN0aV92bV9sYXp5TGlua0Nsb3N1cmVDYWxs
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3Rp
X3ZtX2xhenlMaW5rQ29uc3RydWN0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFM
Owogdm9pZCogSklUX1NUVUIgY3RpX3ZtX3Rocm93KFNUVUJfQVJHU19ERUNMQVJBVElPTikgUkVG
RVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CitFeGNlcHRpb25IYW5kbGVyIEpJVF9TVFVC
IGN0aV92bV90aHJvd19zbG93cGF0aChDYWxsRnJhbWUqKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdU
Rl9JTlRFUk5BTDsKIH0gLy8gZXh0ZXJuICJDIgogCiAjZWxpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNBUk0uaAkocmV2aXNpb24g
MTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Miw2ICs5MiwyMSBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RD
YXVnaHQpICI6IiAiCiAgICAgImJ4IGxyIiAiXG4iCiApOwogCithc20gKAorIi50ZXh0IiAiXG4i
CisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAi
XG4iCitISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCitJTkxJ
TkVfQVJNX0ZVTkNUSU9OKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpCitTWU1CT0xfU1RS
SU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6IiAiXG4iCisgICAgIm1vdiByMCwg
cjUiICJcbiIKKyAgICAiYmwgIiBTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93cGF0aCkg
IlxuIgorICAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCByMCBoYXMg
Y2FsbEZyYW1lIGFuZCByMSBoYXMgaGFuZGxlciBhZGRyZXNzCisgICAgICJhZGQgc3AsIHNwLCAj
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEUjRfT0ZGU0VUKSAiXG4iCisgICAgICJsZG1p
YSBzcCEsIHtyNC1yNiwgcjgtcjExLCBscn0iICJcbiIKKyAgICAgImFkZCBzcCwgc3AsICMxMiIg
IlxuIgorICAgICAiYnggcjEiICJcbiIKKyk7CisKICNkZWZpbmUgREVGSU5FX1NUVUJfRlVOQ1RJ
T04ocnR5cGUsIG9wKSBcCiAgICAgZXh0ZXJuICJDIiB7IFwKICAgICAgICAgcnR5cGUgSklUU3R1
YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pOyBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzQVJNdjcuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMyw2ICsxMjMsMzAgQEAgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoi
IAogYXNtICgKICIudGV4dCIgIlxuIgogIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9M
X1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCitISURFX1NZTUJPTChj
dGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1i
X2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJc
biIKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIjoiICJcbiIK
KyAgICAibW92IHIwLCByNSIgIlxuIgorICAgICJibCAiIExPQ0FMX1JFRkVSRU5DRShjdGlfdm1f
dGhyb3dfc2xvd3BhdGgpICJcbiIKKyAgICAgLy8gV2hlbiBjdGlfdm1fdGhyb3dfc2xvd3BhdGgg
cmV0dXJucywgcjAgaGFzIGNhbGxGcmFtZSBhbmQgcjEgaGFzIGhhbmRsZXIgYWRkcmVzcworICAg
ICJsZHIgcjExLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUjExX09GRlNF
VCkgIl0iICJcbiIKKyAgICAibGRyIHIxMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJF
U0VSVkVEX1IxMF9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciByOSwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJFU0VSVkVEX1I5X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI4LCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUjhfT0ZGU0VUKSAiXSIgIlxuIgor
ICAgICJsZHIgcjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SN19PRkZT
RVQpICJdIiAiXG4iCisgICAgImxkciByNiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJF
U0VSVkVEX1I2X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI1LCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUkVTRVJWRURfUjVfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgcjQsIFtz
cCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SNF9PRkZTRVQpICJdIiAiXG4iCisg
ICAgImxkciBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1JFVFVSTl9B
RERSRVNTX09GRlNFVCkgIl0iICJcbiIKKyAgICAiYWRkIHNwLCBzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKEZJUlNUX1NUQUNLX0FSR1VNRU5UKSAiXG4iCisgICAgImJ4IHIxIiAiXG4iCispOwor
Cithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKICIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIEhJREVfU1lNQk9MKGN0aU9wVGhyb3dO
b3RDYXVnaHQpICJcbiIKICIudGh1bWIiICJcbiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnNNSVBTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVic01JUFMuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVic01JUFMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw0
MCBAQCBhc20gKAogIi5zZXQgbm9yZW9yZGVyIiAiXG4iCiAiLnNldCBub21hY3JvIiAiXG4iCiAi
LnNldCBub21pcHMxNiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1Ry
YW1wb2xpbmVTbG93cGF0aCkgIlxuIgorIi5lbnQgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dU
cmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xp
bmVTbG93cGF0aCkgIjoiICJcbiIKKyNpZiBXVEZfTUlQU19QSUMKKyIuc2V0IG1hY3JvIiAiXG4i
CisiLmNwbG9hZCAkMzEiICJcbiIKKyAgICAibGEgICAgJDI1LCIgU1lNQk9MX1NUUklORyhjdGlf
dm1fdGhyb3dfc2xvd3BhdGgpICJcbiIKKyIuc2V0IG5vbWFjcm8iICJcbiIKKyAgICAiYmFsICIg
U1lNQk9MX1NUUklORyhjdGlfdm1fdGhyb3dfc2xvd3BhdGgpICJcbiIKKyAgICAibW92ZSAgJDQs
JDE2IiAiXG4iCisjZWxzZQorICAgICJqYWwgIiBTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19z
bG93cGF0aCkgIlxuIgorICAgICJtb3ZlICAkNCwkMTYiICJcbiIKKyNlbmRpZgorICAgIC8vIFdo
ZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHYwIGhhcyBjYWxsRnJhbWUgYW5kIHYx
IGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAibHcgICAgJDE2LCIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBSRVNFUlZFRF9TMF9PRkZTRVQpICIoJDI5KSIgIlxuIgorICAgICJsdyAgICAkMTcsIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1MxX09GRlNFVCkgIigkMjkpIiAiXG4iCisgICAgImx3
ICAgICQxOCwiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUzJfT0ZGU0VUKSAiKCQyOSki
ICJcbiIKKyAgICAibHcgICAgJDE5LCIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9TM19P
RkZTRVQpICIoJDI5KSIgIlxuIgorICAgICJsdyAgICAkMjAsIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJFU0VSVkVEX1M0X09GRlNFVCkgIigkMjkpIiAiXG4iCisgICAgImx3ICAgICQzMSwiIFNUUklO
R0laRV9WQUxVRV9PRihQUkVTRVJWRURfUkVUVVJOX0FERFJFU1NfT0ZGU0VUKSAiKCQyOSkiICJc
biIKKyAgICAianIgICAgJDMiICJcbiIKKyAgICAiYWRkaXUgJDI5LCQyOSwiIFNUUklOR0laRV9W
QUxVRV9PRihTVEFDS19MRU5HVEgpICJcbiIKKyIuc2V0IHJlb3JkZXIiICJcbiIKKyIuc2V0IG1h
Y3JvIiAiXG4iCisiLmVuZCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93
cGF0aCkgIlxuIgorKTsKKworYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisi
LnNldCBub3Jlb3JkZXIiICJcbiIKKyIuc2V0IG5vbWFjcm8iICJcbiIKKyIuc2V0IG5vbWlwczE2
IiAiXG4iCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4i
CiAiLmVudCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogU1lNQk9M
X1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVic1NINC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnNTSDQuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1NINC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5
OSwzMSBAQCBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgCiApOwogCiBh
c20gdm9sYXRpbGUgKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xp
bmVTbG93cGF0aCkgIlxuIgorSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0
aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiOiIg
IlxuIgorICAgICJtb3YubCAuTDIiU1lNQk9MX1NUUklORyhjdGlfdm1fdGhyb3dfc2xvd3BhdGgp
IixyMCIgIlxuIgorICAgICJtb3YgcjE1LCByNCIgIlxuIgorICAgICJtb3YubCBAKHIwLHIxMiks
cjExIiAiXG4iCisgICAgImpzciBAcjExIiAiXG4iCisgICAgLy8gV2hlbiBjdGlfdm1fdGhyb3df
c2xvd3BhdGggcmV0dXJucywgcjAgaGFzIGNhbGxGcmFtZSBhbmQgcjEgaGFzIGhhbmRsZXIgYWRk
cmVzcworICAgICJub3AiICJcbiIKKyAgICAiYWRkICM2MCwgcjE1IiAiXG4iCisgICAgIm1vdi5s
IEByMTUrLHIxMCIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyMTEiICJcbiIKKyAgICAibW92Lmwg
QHIxNSsscjEzIiAiXG4iCisgICAgImxkcy5sIEByMTUrLHByIiAiXG4iCisgICAgIm1vdi5sIEBy
MTUrLHIxNCIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyOCIgIlxuIgorICAgICJhZGQgIzEyLCBy
MTUiICJcbiIKKyAgICAibW92IHIwLCByNCIgIlxuIgorICAgICJqbXAgQHIxIiAiXG4iCisgICAg
Im5vcCIgIlxuIgorICAgICIuYWxpZ24gMiIgIlxuIgorICAgICIuTDIiU1lNQk9MX1NUUklORyhj
dGlfdm1fdGhyb3dfc2xvd3BhdGgpIjoubG9uZyAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93
X3Nsb3dwYXRoKSJAR09UIFxuIgorKTsKKworYXNtIHZvbGF0aWxlICgKICIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIEhJREVfU1lNQk9MKGN0aU9wVGhy
b3dOb3RDYXVnaHQpICJcbiIKIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoi
ICJcbiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2LmgJKHJldmlz
aW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAko
d29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsMTYgQEAgU1lNQk9MX1NUUklORyhjdGlWTVRocm93
VHJhbXBvbGluZSkgIjoiIAogKTsKIAogYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0
aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0hJREVfU1lNQk9MKGN0aVZNVGhyb3dU
cmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xp
bmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92bCAlZWRpLCAlZWN4IiAiXG4iCisgICAgImNh
bGwgIiBMT0NBTF9SRUZFUkVOQ0UoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSAiXG4iCisgICAgLy8g
V2hlbiBjdGlfdm1fdGhyb3dfc2xvd3BhdGggcmV0dXJucywgZWF4IGhhcyBjYWxsRnJhbWUgYW5k
IGVkeCBoYXMgaGFuZGxlciBhZGRyZXNzCisgICAgImptcCAqJWVkeCIgIlxuIgorKTsKKworYXNt
ICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIEhJ
REVfU1lNQk9MKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIFNZTUJPTF9TVFJJTkcoY3RpT3BU
aHJvd05vdENhdWdodCkgIjoiICJcbiIKQEAgLTIxMyw2ICsyMjMsMjIgQEAgZXh0ZXJuICJDIiB7
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBfX2RlY2xzcGVjKG5ha2VkKSB2b2lkIGN0aVZNVGhy
b3dUcmFtcG9saW5lU2xvd3BhdGgoKQorICAgIHsKKyAgICAgICAgX19hc20geworICAgICAgICAg
ICAgbW92IGVjeCwgZWRpOworICAgICAgICAgICAgY2FsbCBjdGlfdm1fdGhyb3dfc2xvd3BhdGg7
CisgICAgICAgICAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCBlYXgg
aGFzIGNhbGxGcmFtZSBhbmQgZWR4IGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAgICAgICAgIGFk
ZCBlc3AsIDB4M2M7CisgICAgICAgICAgICBwb3AgZWJ4OworICAgICAgICAgICAgcG9wIGVkaTsK
KyAgICAgICAgICAgIHBvcCBlc2k7CisgICAgICAgICAgICBwb3AgZWJwOworICAgICAgICAgICAg
am1wIGVkeAorICAgICAgICAgICAgcmV0OworICAgICAgICB9CisgICAgfQorCiAgICAgX19kZWNs
c3BlYyhuYWtlZCkgdm9pZCBjdGlPcFRocm93Tm90Q2F1Z2h0KCkKICAgICB7CiAgICAgICAgIF9f
YXNtIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODZfNjQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2XzY0LmgJ
KHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNY
ODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksMTYgQEAgU1lNQk9MX1NUUklORyhj
dGlWTVRocm93VHJhbXBvbGluZSkgIjoiIAogKTsKIAogYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0hJREVfU1lNQk9MKGN0
aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJv
d1RyYW1wb2xpbmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92cSAlcjEzLCAlcmRpIiAiXG4i
CisgICAgImNhbGwgIiBMT0NBTF9SRUZFUkVOQ0UoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSAiXG4i
CisgICAgLy8gV2hlbiBjdGlfdm1fdGhyb3dfc2xvd3BhdGggcmV0dXJucywgcmF4IGhhcyBjYWxs
RnJhbWUgYW5kIHJkeCBoYXMgaGFuZGxlciBhZGRyZXNzCisgICAgImptcCAqJXJkeCIgIlxuIgor
KTsKKworYXNtICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQp
ICJcbiIKIEhJREVfU1lNQk9MKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIFNZTUJPTF9TVFJJ
TkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
OCArNTksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7CiAjaWYgIU9TKFdJ
TkRPV1MpCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRpOworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc2k7CiAjZWxzZQogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZS
ZWdpc3RlcnM6OmVjeDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJn
dW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWR4OwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCkBAIC04OSw2ICs5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAvLyBPbiB4ODYgd2UgYWx3YXlzIHVzZSBmYXN0Y2FsbCBjb252ZW50aW9ucyA9IGJ1dCBvbgog
ICAgICAgICAvLyBPUyBYIGlmIG1pZ2h0IG1ha2UgbW9yZSBzZW5zZSB0byBqdXN0IHVzZSByZWdw
YXJtLgogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OmVjeDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
c2Vjb25kQXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWR4OwogICAgICAgICAKICAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0Q291bnRlclJlZ2lzdGVyID0gWDg2
UmVnaXN0ZXJzOjplc2k7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFt
ZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZGk7CkBAIC0xMDYsNiArMTA5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVn
aXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6
cjA7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0
ZXIgPSBBUk1SZWdpc3RlcnM6OnIxOwogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OnI3OwpAQCAtMTI4LDYgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gTUlQU1JlZ2lz
dGVyczo6djA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJl
Z2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmEwOworICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lz
dGVyczo6YTE7CiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0Q291bnRlclJlZ2lzdGVyID0gTUlQU1JlZ2lz
dGVyczo6czM7CkBAIC0xNjQsNiArMTY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1Q2ID0gU0g0UmVnaXN0ZXJzOjpyNjsKICAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDcgPSBTSDRSZWdpc3RlcnM6OnI3OwogICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPXJlZ1Q0Owor
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID1y
ZWdUNDsKIAogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lz
dGVyID0gU0g0UmVnaXN0ZXJzOjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
Y2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnIwOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBTbG93UGF0aENhbGxfaAorI2RlZmluZSBTbG93UGF0aENhbGxfaAorCisjaW5jbHVkZSAi
Q29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisK
KyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSklUU2xvd1BhdGhD
YWxsIHsKK3B1YmxpYzoKKyAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIEluc3RydWN0aW9u
KiBwYywgU2xvd1BhdGhSZXR1cm5UeXBlIChTTE9XX1BBVEggKnN0dWIpKEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjKSkKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9z
dHViKHN0dWIpCisgICAgICAgICwgbV9wYyhwYykKKyAgICB7CisgICAgfQorCisgICAgSklUOjpD
YWxsIGNhbGwoKQorICAgIHsKKyNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQorICAgICAgICBp
ZiAobV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gKHVuc2lnbmVkKS0xKQorICAgICAgICAgICAg
bV9qaXQtPnNhbXBsZUluc3RydWN0aW9uKG1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCB0cnVlKTsKKyNlbmRpZgorICAg
ICAgICBtX2ppdC0+dXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisjaWYgQ1BVKFg4NikgJiYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgbV9qaXQtPmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKC04KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAg
ICAgbV9qaXQtPnB1c2goSklUOjpUcnVzdGVkSW1tMzIoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMp
KSk7CisgICAgICAgIG1faml0LT5wdXNoKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworI2Vsc2UK
KyAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjpmaXJzdEFy
Z3VtZW50UmVnaXN0ZXIpOworICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIo
bV9wYyksIEpJVDo6c2Vjb25kQXJndW1lbnRSZWdpc3Rlcik7CisjZW5kaWYKKyAgICAgICAgSklU
OjpDYWxsIGNhbGwgPSBtX2ppdC0+Y2FsbCgpOworICAgICAgICBtX2ppdC0+bV9jYWxscy5hcHBl
bmQoQ2FsbFJlY29yZChjYWxsLCBtX2ppdC0+bV9ieXRlY29kZU9mZnNldCwgbV9zdHViLnZhbHVl
KCkpKTsKKworI2lmIENQVShYODYpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIG1faml0
LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisjZW5kaWYKKworI2lmIEVOQUJMRShPUENPREVfU0FN
UExJTkcpCisgICAgICAgIGlmIChtX2ppdC0+bV9ieXRlY29kZU9mZnNldCAhPSAodW5zaWduZWQp
LTEpCisgICAgICAgICAgICBtX2ppdC0+c2FtcGxlSW5zdHJ1Y3Rpb24obV9qaXQtPm1fY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXQsIGZh
bHNlKTsKKyNlbmRpZgorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBt
X2ppdC0+dW5tYXAoKTsKKyNlbHNlCisgICAgICAgIG1faml0LT5raWxsTGFzdFJlc3VsdFJlZ2lz
dGVyKCk7CisjZW5kaWYKKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
SklUOjpKdW1wIG5vRXhjZXB0aW9uID0gbV9qaXQtPmJyYW5jaDMyKEpJVDo6RXF1YWwsIEpJVDo6
QWJzb2x1dGVBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZtX2ppdC0+bV9jb2RlQmxv
Y2stPnZtKCktPmV4Y2VwdGlvbikgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
dGFnKSksIEpJVDo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyNlbHNl
CisgICAgICAgIEpJVDo6SnVtcCBub0V4Y2VwdGlvbiA9IG1faml0LT5icmFuY2hUZXN0NjQoSklU
OjpaZXJvLCBKSVQ6OkFic29sdXRlQWRkcmVzcygmbV9qaXQtPm1fY29kZUJsb2NrLT52bSgpLT5l
eGNlcHRpb24pKTsKKyNlbmRpZgorICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1Q
dHIoRnVuY3Rpb25QdHIoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkudmFsdWUoKSksIEpJ
VDo6cmVnVDEpOworICAgICAgICBtX2ppdC0+anVtcChKSVQ6OnJlZ1QxKTsKKyAgICAgICAgbm9F
eGNlcHRpb24ubGluayhtX2ppdCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gY2FsbDsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSklUKiBtX2ppdDsKKyAgICBGdW5jdGlvblB0ciBtX3N0dWI7
CisgICAgSW5zdHJ1Y3Rpb24qIG1fcGM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKUworCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIFNsb3dQYXRoQ2FsbF9oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAx
NTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NSwxNyArMzk1LDE0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbmF0aXZlRm9yR2UKIAogICAgIC8vIEdyYWIgdGhlIHJldHVybiBhZGRyZXNzLgog
ICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QxKTsKLQorICAgIAogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRy
KCZ2bS0+ZXhjZXB0aW9uTG9jYXRpb24pLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAgIGpp
dC5zdG9yZVB0cihKU0ludGVyZmFjZUpJVDo6cmVnVDEsIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7
Ci0gICAgaml0LnBva2UoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBPQkpFQ1Rf
T0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgLyBzaXplb2Yodm9pZCop
KTsKIAogICAgIGppdC5zdG9yZVB0cihKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIs
ICZ2bS0+dG9wQ2FsbEZyYW1lKTsKLSAgICAvLyBTZXQgdGhlIHJldHVybiBhZGRyZXNzLgotICAg
IGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKEZ1bmN0aW9uUHRyKGN0aVZN
VGhyb3dUcmFtcG9saW5lKS52YWx1ZSgpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKLSAgICBq
aXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qx
KTsKIAotICAgIGppdC5yZXQoKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbVB0cihGdW5jdGlvblB0cihjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKS52YWx1ZSgp
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6
cmVnVDEpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgibmF0aXZl
ICVzIHRyYW1wb2xpbmUiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE1
MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyOCwzNCArNDI4LDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c3RhY2tfY2hlY2spCiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KIAotTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKLXsKLSAgICBMTElOVF9CRUdJTigpOwot
ICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcihl
eGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDYWxsKTsKLSAgICBpZiAoIW5l
d0V4ZWMpIHsKLSAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQyA9IGV4ZWMtPnJldHVy
blBDKCk7Ci0gICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwotICAgICAgICB2bS5l
eGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIGludGVy
cHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCByZXR1cm5QQyk7Ci0gICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhl
Yyk7Ci0gICAgfQotICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Ci19Ci0KLUxMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKLXsKLSAgICBM
TElOVF9CRUdJTigpOwotICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDb25z
dHJ1Y3QpOwotICAgIGlmICghbmV3RXhlYykgewotICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVyblBDID0gZXhlYy0+cmV0dXJuUEMoKTsKLSAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7Ci0gICAgICAgIHZtLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjKTsKLSAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVyblBDKTsK
LSAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKLSAgICB9Ci0gICAgTExJTlRfUkVUVVJOX1RXTygwLCBu
ZXdFeGVjKTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hY3Rp
dmF0aW9uKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC00NjcsNDIgKzQzOSw2IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYWMKICAgICBMTElOVF9SRVRVUk4oSlNW
YWx1ZShhY3RpdmF0aW9uKSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfYXJndW1lbnRzKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgSlNWYWx1ZSBhcmd1
bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBleGVjKSk7Ci0gICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQp
ID0gYXJndW1lbnRzOwotICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOwotICAgIExMSU5UX0VORCgpOwot
fQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX3RoaXMpCi17Ci0gICAg
TExJTlRfQkVHSU4oKTsKLSAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIEFTU0VS
VChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3Rv
ciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKLSNlbmRpZgotCi0gICAgc2l6
ZV90IGlubGluZUNhcGFjaXR5ID0gcGNbM10udS5vcGVyYW5kOwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY29uc3RydWN0b3ItPmFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFj
aXR5KS0+c3RydWN0dXJlKCk7Ci0gICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMsIHN0cnVjdHVyZSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
dG9fdGhpcykKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIEpTVmFsdWUgdjEgPSBMTElOVF9P
UCgxKS5qc1ZhbHVlKCk7Ci0jaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHBjW09QQ09E
RV9MRU5HVEgob3BfdG9fdGhpcykgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9Ci0gICAg
ICAgIEpTVmFsdWU6OmVuY29kZSh2MS5zdHJ1Y3R1cmVPclVuZGVmaW5lZCgpKTsKLSNlbmRpZgot
ICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsKLX0KLQogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
QEAgLTUzNiwxODcgKzQ3Miw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
cmVnZXgKICAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBT
dHJ1Y3R1cmUoKSwgcmVnRXhwKSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9ub3QpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpKTsKLX0KLQotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2VxKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9zdHJpY3RlcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbnN0cmljdGVxKQotewotICAgIExMSU5UX0JFR0lOKCk7
Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQot
Ci1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVzcykKLXsKLSAgICBMTElOVF9CRUdJ
TigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xlc3NlcSkKLXsKLSAgICBMTElOVF9CRUdJTigp
OwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQotCi1MTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ3JlYXRlcikKLXsKLSAgICBMTElOVF9CRUdJTigp
OwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyZXEpCi17Ci0gICAgTExJTlRfQkVHSU4o
KTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcmVfaW5jKQotewotICAgIExMSU5UX0JFR0lO
KCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSArIDEpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3By
ZV9kZWMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOwotfQotCi1MTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fbnVtYmVyKQotewotICAgIExMSU5UX0JFR0lOKCk7
Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUp
Ci17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9hZGQpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSB2MiA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpOwotICAgIAotI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCi0gICAg
ZGF0YUxvZygiVHJ5aW5nIHRvIGFkZCAiLCB2MSwgIiB0byAiLCB2MiwgIi5cbiIpOwotI2VuZGlm
Ci0gICAgCi0gICAgaWYgKHYxLmlzU3RyaW5nKCkgJiYgIXYyLmlzT2JqZWN0KCkpCi0gICAgICAg
IExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvU3RyaW5nKGV4
ZWMpKSk7Ci0gICAgCi0gICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAg
ICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigp
KSk7Ci0gICAgCi0gICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7
Ci19Ci0KLS8vIFRoZSBmb2xsb3dpbmcgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25z
IG5lZWQgdG8gYmUgc3VyZSB0byBydW4KLS8vIHRvTnVtYmVyKCkgb24gdGhlaXIgb3BlcmFuZHMg
aW4gb3JkZXIuICAoQSBjYWxsIHRvIHRvTnVtYmVyKCkgaXMgaWRlbXBvdGVudAotLy8gaWYgYW4g
ZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBFeGVjU3RhdGUuKQotCi1MTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgZG91
YmxlIGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBkb3Vi
bGUgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihhICogYikpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfc3ViKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgZG91YmxlIGEgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBkb3VibGUgYiA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihhIC0gYikpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGl2KQotewot
ICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgZG91YmxlIGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKTsKLSAgICBkb3VibGUgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihhIC8gYikpOwotfQot
Ci1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQotewotICAgIExMSU5UX0JFR0lO
KCk7Ci0gICAgZG91YmxlIGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KTsKLSAgICBkb3VibGUgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
OwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKGEsIGIpKSk7Ci19Ci0KLUxMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBpbnQzMl90IGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAg
IHVpbnQzMl90IGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKLSAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSA8PCAoYiAmIDMxKSkpOwotfQotCi1MTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAg
aW50MzJfdCBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICB1
aW50MzJfdCBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7Ci0gICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgPj4gKGIgJiAzMSkpKTsKLX0KLQotTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICB1
aW50MzJfdCBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7Ci0gICAg
dWludDMyX3QgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOwotICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihhID4+IChiICYgMzEpKSk7Ci19Ci0KLUxMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBp
bnQzMl90IGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAgIGlu
dDMyX3QgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKGEgJiBiKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9iaXRvcikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGludDMyX3QgYSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgaW50MzJfdCBiID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoYSB8IGIpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhv
cikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGludDMyX3QgYSA9IExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgaW50MzJfdCBiID0gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSBeIGIp
KTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5j
ZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtNzQzLDMwICs0OTgsNiBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2VvCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBwcm90bykpKTsKIH0K
IAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5cGVvZikKLXsKLSAgICBMTElOVF9C
RUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaXNfb2JqZWN0KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0lzT2JqZWN0VHlwZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsK
LX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQotewotICAg
IExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25U
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaW4pCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9yZXNvbHZlKQogewogICAgIExMSU5UX0JFR0lOKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTUw
ODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgTExJbnRTbG93UGF0aHNfaAog
I2RlZmluZSBMTEludFNsb3dQYXRoc19oCiAKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIK
ICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKQEAgLTM4LDU3ICszOSw2IEBAIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAogbmFtZXNwYWNlIExM
SW50IHsKIAotI2lmIFVTRShKU1ZBTFVFNjQpCi0vLyBBY2NvcmRpbmcgdG8gQysrIHJ1bGVzLCBh
IHR5cGUgdXNlZCBmb3IgdGhlIHJldHVybiBzaWduYXR1cmUgb2YgZnVuY3Rpb24gd2l0aCBDIGxp
bmthZ2UgKGkuZS4KLS8vICdleHRlcm4gIkMiJykgbmVlZHMgdG8gYmUgUE9EOyBoZW5jZSBwdXR0
aW5nIGFueSBjb25zdHJ1Y3RvcnMgaW50byBpdCBjb3VsZCBjYXVzZSBlaXRoZXIgY29tcGlsZXIK
LS8vIHdhcm5pbmdzLCBvciB3b3JzZSwgYSBjaGFuZ2UgaW4gdGhlIEFCSSB1c2VkIHRvIHJldHVy
biB0aGVzZSB0eXBlcy4KLXN0cnVjdCBTbG93UGF0aFJldHVyblR5cGUgewotICAgIHZvaWQqIGE7
Ci0gICAgRXhlY1N0YXRlKiBiOwotfTsKLQotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNv
ZGVSZXN1bHQodm9pZCogYSwgRXhlY1N0YXRlKiBiKQotewotICAgIFNsb3dQYXRoUmV0dXJuVHlw
ZSByZXN1bHQ7Ci0gICAgcmVzdWx0LmEgPSBhOwotICAgIHJlc3VsdC5iID0gYjsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1pbmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5U
eXBlIHJlc3VsdCwgdm9pZComIGEsIEV4ZWNTdGF0ZSomIGIpCi17Ci0gICAgYSA9IHJlc3VsdC5h
OwotICAgIGIgPSByZXN1bHQuYjsKLX0KLQotI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKLXR5
cGVkZWYgaW50NjRfdCBTbG93UGF0aFJldHVyblR5cGU7Ci0KLXR5cGVkZWYgdW5pb24gewotICAg
IHN0cnVjdCB7Ci0gICAgICAgIHZvaWQqIGE7Ci0gICAgICAgIEV4ZWNTdGF0ZSogYjsKLSAgICB9
IHBhaXI7Ci0gICAgaW50NjRfdCBpOwotfSBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZzsKLQot
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCogYSwgRXhlY1N0YXRl
KiBiKQotewotICAgIFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7Ci0gICAgdS5wYWlyLmEg
PSBhOwotICAgIHUucGFpci5iID0gYjsKLSAgICByZXR1cm4gdS5pOwotfQotCi1pbmxpbmUgdm9p
ZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIEV4ZWNT
dGF0ZSomIGIpCi17Ci0gICAgU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsKLSAgICB1Lmkg
PSByZXN1bHQ7Ci0gICAgYSA9IHUucGFpci5hOwotICAgIGIgPSB1LnBhaXIuYjsKLX0KLSNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQotCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVy
ZSwgaW50IG9wZXJhbmQpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJh
Y2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3Bl
cmFuZCk7CiAKQEAgLTExMyw0NyArNjMsMTQgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KGVudHJ5X29zcl9mdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKGxvb3Bfb3NyKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChyZXBsYWNlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzdGFja19jaGVjayk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NhbGxfYXJpdHlDaGVjayk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY3JlYXRlX3RoaXMpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF90b190aGlzKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X29iamVjdCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJheSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93
aXRoX3NpemUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJy
YXlfYnVmZmVyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X3Jl
Z2V4cCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25vdCk7Ci1MTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VxKTsKLUxMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmVxKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfc3RyaWN0ZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uc3RyaWN0ZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sZXNz
KTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbGVzc2VxKTsKLUxMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ3JlYXRlcik7Ci1MTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXJlcSk7Ci1MTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3ByZV9pbmMpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wcmVfZGVjKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfdG9fbnVtYmVyKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmVn
YXRlKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWRkKTsKLUxMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbXVsKTsKLUxMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfc3ViKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZGl2KTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbW9k
KTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbHNoaWZ0KTsKLUxMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcnNoaWZ0KTsKLUxMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfdXJzaGlmdCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2JpdGFuZCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2JpdG9yKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYml0
eG9yKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2lu
c3RhbmNlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5zdGFuY2Vv
Zik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3R5cGVvZik7Ci1MTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdCk7Ci1MTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKLUxMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfaW4pOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9yZXNvbHZlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X3RvX2Jhc2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9y
ZXNvbHZlX2Jhc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE1MDg0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAgX2xsaW50X29wX2NyZWF0ZV9hcmd1
bWVudHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1l
bnRzRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVu
dHMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKIC5vcENy
ZWF0ZUFyZ3VtZW50c0RvbmU6CiAgICAgZGlzcGF0Y2goMikKIApAQCAtMzcxLDcgKzM3MSw3IEBA
IF9sbGludF9vcF9jcmVhdGVfdGhpczoKICAgICBkaXNwYXRjaCg0KQogCiAub3BDcmVhdGVUaGlz
U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykKKyAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICBkaXNwYXRjaCg0KQog
CiAKQEAgLTM5OCw3ICszOTgsNyBAQCBfbGxpbnRfb3BfdG9fdGhpczoKICAgICBkaXNwYXRjaCgz
KQogCiAub3BUb1RoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Rv
X3RoaXMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fdGhpcykKICAgICBkaXNwYXRj
aCgzKQogCiAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBfbGxpbnRfb3Bfbm90OgogICAgIGRpc3BhdGNo
KDMpCiAKIC5vcE5vdFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbm90
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25vdCkKICAgICBkaXNwYXRjaCgzKQogCiAK
QEAgLTQ2MCw3ICs0NjAsNyBAQCBfbGxpbnRfb3BfZXE6CiAgICAgZGlzcGF0Y2goNCkKIAogLm9w
RXFTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2VxKQorICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX2VxKQogICAgIGRpc3BhdGNoKDQpCiAKIApAQCAtNTA3LDcgKzUw
Nyw3IEBAIF9sbGludF9vcF9uZXE6CiAgICAgZGlzcGF0Y2goNCkKIAogLm9wTmVxU2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXEpCisgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfbmVxKQogICAgIGRpc3BhdGNoKDQpCiAgICAgCiAKQEAgLTU2NCwxMiArNTY0LDEy
IEBAIGVuZAogCiBfbGxpbnRfb3Bfc3RyaWN0ZXE6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCBy
ZXN1bHQgZW5kLCBfbGxpbnRfc2xvd19wYXRoX3N0cmljdGVxKQorICAgIHN0cmljdEVxKG1hY3Jv
IChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfc2xv
d19wYXRoX3N0cmljdGVxKQogCiAKIF9sbGludF9vcF9uc3RyaWN0ZXE6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQotICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCisgICAg
c3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCBy
ZXN1bHQgZW5kLCBfc2xvd19wYXRoX25zdHJpY3RlcSkKIAogCiBfbGxpbnRfb3BfaW5jOgpAQCAt
NTgyLDcgKzU4Miw3IEBAIF9sbGludF9vcF9pbmM6CiAgICAgZGlzcGF0Y2goMikKIAogLm9wSW5j
U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKQorICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX2luYykKICAgICBkaXNwYXRjaCgyKQogCiAKQEAgLTU5Niw3
ICs1OTYsNyBAQCBfbGxpbnRfb3BfZGVjOgogICAgIGRpc3BhdGNoKDIpCiAKIC5vcERlY1Nsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykKKyAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF9kZWMpCiAgICAgZGlzcGF0Y2goMikKIAogCkBAIC02MTMsNyArNjEz
LDcgQEAgX2xsaW50X29wX3RvX251bWJlcjoKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb051bWJl
clNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fbnVtYmVyKQorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX251bWJlcikKICAgICBkaXNwYXRjaCgzKQogCiAK
QEAgLTYzNiw3ICs2MzYsNyBAQCBfbGxpbnRfb3BfbmVnYXRlOgogICAgIGRpc3BhdGNoKDMpCiAK
IC5vcE5lZ2F0ZVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVnYXRl
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25lZ2F0ZSkKICAgICBkaXNwYXRjaCgzKQog
CiAKQEAgLTY5Nyw3ICs2OTcsNyBAQCBfbGxpbnRfb3BfYWRkOgogICAgIGJpbmFyeU9wKAogICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBl
bmQsCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCi0g
ICAgICAgIF9sbGludF9zbG93X3BhdGhfYWRkKQorICAgICAgICBfc2xvd19wYXRoX2FkZCkKIAog
CiBfbGxpbnRfb3BfbXVsOgpAQCAtNzE1LDcgKzcxNSw3IEBAIF9sbGludF9vcF9tdWw6CiAgICAg
ICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQogICAg
ICAgICBlbmQsCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBl
bmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfbXVsKQorICAgICAgICBfc2xvd19wYXRoX211
bCkKIAogCiBfbGxpbnRfb3Bfc3ViOgpAQCAtNzIzLDcgKzcyMyw3IEBAIF9sbGludF9vcF9zdWI6
CiAgICAgYmluYXJ5T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1Ymlv
IGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJk
IGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9zdWIpCisgICAgICAg
IF9zbG93X3BhdGhfc3ViKQogCiAKIF9sbGludF9vcF9kaXY6CkBAIC03NDIsNyArNzQyLDcgQEAg
X2xsaW50X29wX2RpdjoKICAgICAgICAgLmRvbmU6CiAgICAgICAgIGVuZCwKICAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9kaXYpCisgICAgICAgIF9zbG93X3BhdGhfZGl2KQogCiAKIG1hY3JvIGJpdE9wKG9w
ZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpCkBAIC03NjcsNyArNzY3LDcgQEAgX2xsaW50X29w
X2xzaGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9s
bGludF9zbG93X3BhdGhfbHNoaWZ0LAorICAgICAgICBfc2xvd19wYXRoX2xzaGlmdCwKICAgICAg
ICAgNCkKIAogCkBAIC03NzUsNyArNzc1LDcgQEAgX2xsaW50X29wX3JzaGlmdDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfcnNo
aWZ0LAorICAgICAgICBfc2xvd19wYXRoX3JzaGlmdCwKICAgICAgICAgNCkKIAogCkBAIC03ODYs
NyArNzg2LDcgQEAgX2xsaW50X29wX3Vyc2hpZnQ6CiAgICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0
LCByaWdodAogICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdwogICAgICAgICBlbmQsCi0g
ICAgICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlmdCwKKyAgICAgICAgX3Nsb3dfcGF0aF91cnNo
aWZ0LAogICAgICAgICA0KQogCiAKQEAgLTc5NCw3ICs3OTQsNyBAQCBfbGxpbnRfb3BfYml0YW5k
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3df
cGF0aF9iaXRhbmQsCisgICAgICAgIF9zbG93X3BhdGhfYml0YW5kLAogICAgICAgICA1KQogCiAK
QEAgLTgwMiw3ICs4MDIsNyBAQCBfbGxpbnRfb3BfYml0eG9yOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxl
ZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXR4b3IsCisgICAgICAg
IF9zbG93X3BhdGhfYml0eG9yLAogICAgICAgICA1KQogCiAKQEAgLTgxMCw3ICs4MTAsNyBAQCBf
bGxpbnRfb3BfYml0b3I6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAogICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAg
IF9sbGludF9zbG93X3BhdGhfYml0b3IsCisgICAgICAgIF9zbG93X3BhdGhfYml0b3IsCiAgICAg
ICAgIDUpCiAKIApAQCAtMTY3MSw3ICsxNjcxLDcgQEAgX2xsaW50X29wX3RvX3ByaW1pdGl2ZToK
ICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgotICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF90b19wcmltaXRpdmUpCiAgICAgZGlzcGF0Y2goMykKIAogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTIzNCw3ICsyMzQsNyBAQCBf
bGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGJxbmVxIFtjZnIsIHQwLCA4XSwgVmFsdWVF
bXB0eSwgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3Jl
YXRlX2FyZ3VtZW50cykKIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CiAgICAgZGlzcGF0Y2goMikK
IApAQCAtMjUyLDcgKzI1Miw3IEBAIF9sbGludF9vcF9jcmVhdGVfdGhpczoKICAgICBkaXNwYXRj
aCg0KQogCiAub3BDcmVhdGVUaGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9jcmVhdGVfdGhpcykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfdGhp
cykKICAgICBkaXNwYXRjaCg0KQogCiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBfbGxpbnRfb3BfdG9f
dGhpczoKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3RvX3RoaXMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
dG9fdGhpcykKICAgICBkaXNwYXRjaCgzKQogCiAKQEAgLTMxOCw3ICszMTgsNyBAQCBfbGxpbnRf
b3Bfbm90OgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcE5vdFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbm90KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25vdCkK
ICAgICBkaXNwYXRjaCgzKQogCiAKQEAgLTM0MiwxMyArMzQyLDEzIEBAIGVuZAogX2xsaW50X29w
X2VxOgogICAgIGVxdWFsaXR5Q29tcGFyaXNvbigKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsCi0gICAgICAgIF9sbGludF9z
bG93X3BhdGhfZXEpCisgICAgICAgIF9zbG93X3BhdGhfZXEpCiAKIAogX2xsaW50X29wX25lcToK
ICAgICBlcXVhbGl0eUNvbXBhcmlzb24oCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVz
dWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3df
cGF0aF9uZXEpCisgICAgICAgIF9zbG93X3BhdGhfbmVxKQogCiAKIG1hY3JvIGVxdWFsTnVsbENv
bXBhcmlzb24oKQpAQCAtNDE3LDEzICs0MTcsMTMgQEAgZW5kCiBfbGxpbnRfb3Bfc3RyaWN0ZXE6
CiAgICAgc3RyaWN0RXEoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcWVx
IGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3N0cmlj
dGVxKQorICAgICAgICBfc2xvd19wYXRoX3N0cmljdGVxKQogCiAKIF9sbGludF9vcF9uc3RyaWN0
ZXE6CiAgICAgc3RyaWN0RXEoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBj
cW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9u
c3RyaWN0ZXEpCisgICAgICAgIF9zbG93X3BhdGhfbnN0cmljdGVxKQogCiAKIG1hY3JvIHByZU9w
KGFyaXRobWV0aWNPcGVyYXRpb24sIHNsb3dQYXRoKQpAQCAtNDQ0LDEzICs0NDQsMTMgQEAgZW5k
CiBfbGxpbnRfb3BfaW5jOgogICAgIHByZU9wKAogICAgICAgICBtYWNybyAodmFsdWUsIHNsb3cp
IGJhZGRpbyAxLCB2YWx1ZSwgc2xvdyBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfcHJl
X2luYykKKyAgICAgICAgX3Nsb3dfcGF0aF9pbmMpCiAKIAogX2xsaW50X29wX2RlYzoKICAgICBw
cmVPcCgKICAgICAgICAgbWFjcm8gKHZhbHVlLCBzbG93KSBic3ViaW8gMSwgdmFsdWUsIHNsb3cg
ZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3ByZV9kZWMpCisgICAgICAgIF9zbG93X3Bh
dGhfZGVjKQogCiAKIF9sbGludF9vcF90b19udW1iZXI6CkBAIC00NjUsNyArNDY1LDcgQEAgX2xs
aW50X29wX3RvX251bWJlcjoKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb051bWJlclNsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fbnVtYmVyKQorICAgIGNhbGxTbG93
UGF0aChfc2xvd19wYXRoX3RvX251bWJlcikKICAgICBkaXNwYXRjaCgzKQogCiAKQEAgLTQ4Nyw3
ICs0ODcsNyBAQCBfbGxpbnRfb3BfbmVnYXRlOgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcE5lZ2F0
ZVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVnYXRlKQorICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX25lZ2F0ZSkKICAgICBkaXNwYXRjaCgzKQogCiAKQEAgLTU1
NSw3ICs1NTUsNyBAQCBfbGxpbnRfb3BfYWRkOgogICAgIGJpbmFyeU9wKAogICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCiAgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9s
bGludF9zbG93X3BhdGhfYWRkKQorICAgICAgICBfc2xvd19wYXRoX2FkZCkKIAogCiBfbGxpbnRf
b3BfbXVsOgpAQCAtNTczLDcgKzU3Myw3IEBAIF9sbGludF9vcF9tdWw6CiAgICAgICAgICAgICBz
dG9yZXEgdDMsIFtjZnIsIGluZGV4LCA4XQogICAgICAgICBlbmQsCiAgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3Bh
dGhfbXVsKQorICAgICAgICBfc2xvd19wYXRoX211bCkKIAogCiBfbGxpbnRfb3Bfc3ViOgpAQCAt
NTgxLDcgKzU4MSw3IEBAIF9sbGludF9vcF9zdWI6CiAgICAgYmluYXJ5T3AoCiAgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKICAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAg
X2xsaW50X3Nsb3dfcGF0aF9zdWIpCisgICAgICAgIF9zbG93X3BhdGhfc3ViKQogCiAKIF9sbGlu
dF9vcF9kaXY6CkBAIC02MDUsNyArNjA1LDcgQEAgX2xsaW50X29wX2RpdjoKICAgICAgICAgICAg
IHN0b3JlcSB0MCwgW2NmciwgaW5kZXgsIDhdCiAgICAgICAgIGVuZCwKICAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3df
cGF0aF9kaXYpCisgICAgICAgIF9zbG93X3BhdGhfZGl2KQogCiAKIG1hY3JvIGJpdE9wKG9wZXJh
dGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpCkBAIC02MzAsNyArNjMwLDcgQEAgX2xsaW50X29wX2xz
aGlmdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGlu
dF9zbG93X3BhdGhfbHNoaWZ0LAorICAgICAgICBfc2xvd19wYXRoX2xzaGlmdCwKICAgICAgICAg
NCkKIAogCkBAIC02MzgsNyArNjM4LDcgQEAgX2xsaW50X29wX3JzaGlmdDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
cnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfcnNoaWZ0
LAorICAgICAgICBfc2xvd19wYXRoX3JzaGlmdCwKICAgICAgICAgNCkKIAogCkBAIC02NDksNyAr
NjQ5LDcgQEAgX2xsaW50X29wX3Vyc2hpZnQ6CiAgICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0LCBy
aWdodAogICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdwogICAgICAgICBlbmQsCi0gICAg
ICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlmdCwKKyAgICAgICAgX3Nsb3dfcGF0aF91cnNoaWZ0
LAogICAgICAgICA0KQogCiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBfbGxpbnRfb3BfYml0YW5kOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0
aF9iaXRhbmQsCisgICAgICAgIF9zbG93X3BhdGhfYml0YW5kLAogICAgICAgICA1KQogCiAKQEAg
LTY2NSw3ICs2NjUsNyBAQCBfbGxpbnRfb3BfYml0eG9yOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQs
IHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXR4b3IsCisgICAgICAgIF9z
bG93X3BhdGhfYml0eG9yLAogICAgICAgICA1KQogCiAKQEAgLTY3Myw3ICs2NzMsNyBAQCBfbGxp
bnRfb3BfYml0b3I6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9s
bGludF9zbG93X3BhdGhfYml0b3IsCisgICAgICAgIF9zbG93X3BhdGhfYml0b3IsCiAgICAgICAg
IDUpCiAKIApAQCAtMTUwMiw3ICsxNTAyLDcgQEAgX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKICAg
ICBkaXNwYXRjaCgzKQogCiAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF90b19wcmltaXRpdmUpCiAgICAgZGlzcGF0Y2goMykKIAogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZp
c2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQzMSwxMiArNDMxLDEyIEBAIF9sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgogCiBfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2s6CiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKLSAg
ICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfc2xvd19w
YXRoX2NhbGxfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9y
Q2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIAogCiBfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNv
bnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9l
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2Vf
YXJpdHlDaGVja19mb3JfY29uc3RydWN0KQotICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVj
aykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9z
bG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAKIAogIyBWYWx1ZS1yZXByZXNlbnRhdGlv
bi1zcGVjaWZpYyBjb2RlLgpAQCAtNDc0LDU1ICs0NzQsNTUgQEAgX2xsaW50X29wX25ld19yZWdl
eHA6CiAKIF9sbGludF9vcF9sZXNzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9sZXNzKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X2xlc3MpCiAgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfbGVzc2VxOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9sZXNzZXEpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzc2VxKQogICAgIGRpc3BhdGNoKDQpCiAKIAog
X2xsaW50X29wX2dyZWF0ZXI6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2dyZWF0ZXIpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
Z3JlYXRlcikKICAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9ncmVhdGVyZXE6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dyZWF0
ZXJlcSkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9ncmVhdGVyZXEpCiAgICAgZGlzcGF0
Y2goNCkKIAogCiBfbGxpbnRfb3BfbW9kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9tb2QpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfbW9kKQogICAgIGRpc3BhdGNoKDQpCiAKIAogX2xsaW50X29wX3R5cGVvZjoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdHlwZW9mKQor
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3R5cGVvZikKICAgICBkaXNwYXRjaCgzKQogCiAK
IF9sbGludF9vcF9pc19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX29iamVjdCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9pc19vYmplY3QpCiAgICAgZGlzcGF0Y2goMykKIAogCiBfbGxpbnRfb3BfaXNfZnVuY3Rp
b246CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2lzX2Z1bmN0aW9uKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2lzX2Z1bmN0aW9u
KQogICAgIGRpc3BhdGNoKDMpCiAKIAogX2xsaW50X29wX2luOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pbikKKyAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9pbikKICAgICBkaXNwYXRjaCg0KQogCiBtYWNybyBnZXRQdXRUb0Jhc2VP
cGVyYXRpb25GaWVsZChzY3JhdGNoLCBzY3JhdGNoMSwgZmllbGRPZmZzZXQsIGZpZWxkR2V0dGVy
KQpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgogCiBf
bGxpbnRfb3Bfc3RyY2F0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9zdHJjYXQpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc3Ry
Y2F0KQogICAgIGRpc3BhdGNoKDQpCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTUwODQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgog
I2luY2x1ZGUgIkxMSW50U2xvd1BhdGhzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2lu
Y2x1ZGUgIlNsb3dQYXRocy5oIgogI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorCisjaWYgRU5BQkxFKEpJVCkgfHwg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQXJyYXlD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVQcm9m
aWxpbmcuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJl
dHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVQuaCIK
KyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUg
IkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNXaXRoU2NvcGUuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUg
IkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgQkVHSU5fTk9fU0VU
X1BDKCkgXAorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7ICAgICAgXAorICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKQorCisjaWZuZGVmIE5ERUJVRworI2RlZmluZSBT
RVRfUENfRk9SX1NUVUJTKCkgZG8geyBcCisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRl
Y29kZU9mZnNldChwYyk7IFwKKyAgICAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyArIDEpOyBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisjZWxzZQorI2RlZmluZSBTRVRfUENfRk9SX1NUVUJTKCkg
ZG8geyBcCisgICAgICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyAxKTsgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorI2VuZGlmCisKKyNkZWZpbmUgQkVHSU4oKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBCRUdJTl9OT19TRVRfUEMoKTsgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBTRVRfUENfRk9SX1NUVUJTKCkKKworI2RlZmluZSBPUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tl
ZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIE9QX0MoaW5kZXgpIChleGVjLT5yKHBj
W2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIFJFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkg
ZG8geyAgICAgICBcCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZmlyc3QsIHNlY29uZCk7
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgRU5EX0lNUEwoKSBSRVRV
Uk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIFRIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZtLmV4Y2VwdGlvbiA9IChleGNlcHRp
b25Ub1Rocm93KTsgICAgICAgICAgICAgICAgXAorICAgICAgICBwYyA9IExMSW50OjpyZXR1cm5U
b1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
RU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBDSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24pKSB7ICAg
ICAgICAgICBcCisgICAgICAgICAgICBwYyA9IExMSW50OjpyZXR1cm5Ub1Rocm93KGV4ZWMsIHBj
KTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEVORCgpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOyAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgQlJBTkNIKG9wY29kZSwgY29uZGl0
aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBiQ29uZGl0aW9u
ID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKGJDb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFu
ZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgo
b3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBSRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU1ZhbHVlIHJSZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBPUCgxKSA9IHJSZXR1cm5W
YWx1ZTsgICAgICAgICAgXAorICAgICAgICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQor
I2RlZmluZSBSRVRVUk5fUFJPRklMRUQob3Bjb2RlLCB2YWx1ZSkgZG8geyAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSlNWYWx1ZSBycFBldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBPUCgxKSA9IHJwUGV0dXJuVmFsdWU7ICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgUFJPRklMRV9WQUxVRShvcGNvZGUsIHJwUGV0dXJuVmFs
dWUpOyAgICAgICAgICBcCisgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIFBST0ZJ
TEVfVkFMVUUob3Bjb2RlLCB2YWx1ZSkgZG8geyBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgo
b3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2Vsc2UgLy8gRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorI2RlZmluZSBSRVRVUk5fUFJPRklM
RUQob3Bjb2RlLCB2YWx1ZSkgUkVUVVJOKHZhbHVlKQorCisjZGVmaW5lIFBST0ZJTEVfVkFMVUUo
b3Bjb2RlLCB2YWx1ZSkgZG8geyB9IHdoaWxlIChmYWxzZSkKKworI2VuZGlmIC8vIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKKworI2RlZmluZSBDQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQp
IFJFVFVSTl9UV08oKGNhbGxUYXJnZXQpLCAoZXhlYykpCisKKyNkZWZpbmUgQ0FMTF9USFJPVyhl
eGVjLCBwYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
RXhlY1N0YXRlKiBjdEV4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN0UEMgPSAocGMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm0uZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRv
VGhyb3cpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIENBTExfRU5EX0lNUEwoY3RF
eGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY3RFeGVjLCBjdFBDKSk7IFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBDQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIGNjZUV4ZWMgPSAoZXhlYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiog
Y2NlUEMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBDQUxMX0VORF9JTVBMKGNjZUV4ZWMsIExMSW50OjpjYWxsVG9UaHJv
dyhjY2VFeGVjLCBjY2VQQykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgQ0FM
TF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRXhlY1N0YXRlKiBjckV4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGNyUEMgPSAocGMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogY3JDYWxsVGFyZ2V0
ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ0FM
TF9DSEVDS19FWENFUFRJT04oY3JFeGVjLT5jYWxsZXJGcmFtZSgpLCBjclBDKTsgIFwKKyAgICAg
ICAgQ0FMTF9FTkRfSU1QTChjckV4ZWMsIGNyQ2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJp
dHlDaGVjaykKK3sKKyAgICBCRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCks
IENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5QQyA9IGV4ZWMtPnJldHVyblBDKCk7CisgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICB2bS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgICAgIExMSW50OjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhl
YywgcmV0dXJuUEMpOworICAgICAgICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBSRVRVUk5fVFdPKDAs
IG5ld0V4ZWMpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5
Q2hlY2spCit7CisgICAgQkVHSU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25T
bG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLCBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5QQyA9IGV4ZWMtPnJldHVyblBDKCk7CisgICAgICAgIGV4ZWMgPSBleGVj
LT5jYWxsZXJGcmFtZSgpOworICAgICAgICB2bS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIExMSW50OjppbnRlcnByZXRlclRocm93SW5DYWxsZXIo
ZXhlYywgcmV0dXJuUEMpOworICAgICAgICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBSRVRVUk5fVFdP
KDAsIG5ld0V4ZWMpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3Vt
ZW50cykKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShB
cmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYykpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAg
IGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVj
LT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQp
KSA9IGFyZ3VtZW50czsKKyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV90aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0
b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KE9QKDIpLmpzVmFsdWUoKS5hc0NlbGwoKSk7CisgICAg
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsK
KyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEo
Y29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYK
KworICAgIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5hbGxvY2F0aW9uUHJvZmlsZShleGVjLCBp
bmxpbmVDYXBhY2l0eSktPnN0cnVjdHVyZSgpOworICAgIFJFVFVSTihjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rv
X3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gT1AoMSkuanNWYWx1ZSgp
OworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX3Rv
X3RoaXMpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPQorICAgICAgICBKU1ZhbHVlOjpl
bmNvZGUodjEuc3RydWN0dXJlT3JVbmRlZmluZWQoKSk7CisjZW5kaWYKKyAgICBSRVRVUk4odjEu
dG9UaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1v
ZGUgOiBOb3RTdHJpY3RNb2RlKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ub3Qp
Cit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKCFPUF9DKDIpLmpzVmFsdWUo
KS50b0Jvb2xlYW4oZXhlYykpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2VxKQor
eworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVj
LCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29s
ZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJpY3RlcSkKK3sKKyAg
ICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhl
YywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbnN0cmljdGVxKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJO
KGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgT1BfQygyKS5qc1ZhbHVlKCks
IE9QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVz
cykKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4
ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2xlc3NlcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihq
c0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ3JlYXRlcikKK3sK
KyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBP
UF9DKDMpLmpzVmFsdWUoKSwgT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9ncmVhdGVyZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNC
b29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBPUF9DKDMpLmpzVmFsdWUoKSwgT1BfQygyKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbmMpCit7CisgICAg
QkVHSU4oKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpICsgMSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVjKQoreworICAgIEJF
R0lOKCk7CisgICAgUkVUVVJOKGpzTnVtYmVyKE9QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSAtIDEpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWJlcikKK3sKKyAg
ICBCRUdJTigpOworICAgIFJFVFVSTihqc051bWJlcihPUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQoreworICAg
IEJFR0lOKCk7CisgICAgUkVUVVJOKGpzTnVtYmVyKC1PUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQoreworICAgIEJF
R0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
djIgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiAxIC8vIExMSU5UX1NMT1dfUEFUSF9U
UkFDSU5HCisgICAgZGF0YUxvZygiVHJ5aW5nIHRvIGFkZCAiLCB2MSwgIiB0byAiLCB2MiwgIi5c
biIpOworI2VuZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkgJiYgIXYyLmlzT2JqZWN0
KCkpCisgICAgICAgIFJFVFVSTihqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvU3Ry
aW5nKGV4ZWMpKSk7CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIo
KSkKKyAgICAgICAgUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigp
KSk7CisgICAgCisgICAgUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisK
Ky8vIFRoZSBmb2xsb3dpbmcgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIG5lZWQg
dG8gYmUgc3VyZSB0byBydW4KKy8vIHRvTnVtYmVyKCkgb24gdGhlaXIgb3BlcmFuZHMgaW4gb3Jk
ZXIuICAoQSBjYWxsIHRvIHRvTnVtYmVyKCkgaXMgaWRlbXBvdGVudAorLy8gaWYgYW4gZXhjZXB0
aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBFeGVjU3RhdGUuKQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbXVsKQoreworICAgIEJFR0lOKCk7CisgICAgZG91YmxlIGEgPSBPUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9QX0MoMykuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhICogYikpOworfQorCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQoreworICAgIEJFR0lOKCk7CisgICAgZG91YmxlIGEg
PSBPUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9QX0Mo
MykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhIC0gYikp
OworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGl2KQoreworICAgIEJFR0lOKCk7Cisg
ICAgZG91YmxlIGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3Vi
bGUgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051
bWJlcihhIC8gYikpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQoreworICAg
IEJFR0lOKCk7CisgICAgZG91YmxlIGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KTsKKyAgICBkb3VibGUgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAg
IFJFVFVSTihqc051bWJlcihmbW9kKGEsIGIpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sc2hpZnQpCit7CisgICAgQkVHSU4oKTsKKyAgICBpbnQzMl90IGEgPSBPUF9DKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAgIHVpbnQzMl90IGIgPSBPUF9DKDMpLmpzVmFsdWUo
KS50b1VJbnQzMihleGVjKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoYSA8PCAoYiAmIDMxKSkpOwor
fQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQoreworICAgIEJFR0lOKCk7Cisg
ICAgaW50MzJfdCBhID0gT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICB1aW50
MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7CisgICAgUkVUVVJOKGpz
TnVtYmVyKGEgPj4gKGIgJiAzMSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vy
c2hpZnQpCit7CisgICAgQkVHSU4oKTsKKyAgICB1aW50MzJfdCBhID0gT1BfQygyKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYyk7CisgICAgdWludDMyX3QgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhID4+IChiICYgMzEpKSk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpCit7CisgICAgQkVHSU4oKTsKKyAgICBp
bnQzMl90IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3Qg
YiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVy
KGEgJiBiKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKK3sKKyAgICBC
RUdJTigpOworICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7
CisgICAgaW50MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBS
RVRVUk4oanNOdW1iZXIoYSB8IGIpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Jp
dHhvcikKK3sKKyAgICBCRUdJTigpOworICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYyk7CisgICAgaW50MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoYSBeIGIpKTsKK30KKworU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3R5cGVvZikKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc1R5cGVT
dHJpbmdGb3JWYWx1ZShleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaXNfb2JqZWN0KQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpz
Qm9vbGVhbihqc0lzT2JqZWN0VHlwZShleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQoreworICAgIEJFR0lOKCk7Cisg
ICAgUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKE9QX0MoMikuanNWYWx1ZSgpKSkp
OworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4pCit7CisgICAgQkVHSU4oKTsKKyAg
ICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBPUF9DKDIpLmpz
VmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9kZWxfYnlfdmFsKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1
ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IE9QX0MoMyku
anNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMy
X3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxl
dGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFz
ZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSBpZiAoaXNOYW1lKHN1YnNjcmlwdCkpCisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkoYmFzZU9iamVjdCwgZXhlYywganNDYXN0PE5hbWVJbnN0YW5jZSo+KHN1YnNjcmlwdC5hc0Nl
bGwoKSktPnByaXZhdGVOYW1lKCkpOworICAgIGVsc2UgeworICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNv
dWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
VEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
KTsKKyAgICAKKyAgICBSRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4o
anNTdHJpbmcoZXhlYywgJk9QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVS
TihPUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw4ICsyOSwxMCBAQAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCi0jaW5jbHVkZSAiSlNBcnJheS5oIgogI2lu
Y2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtOTcs
NiArOTksMTA5IEBAIGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAg
ICByZXR1cm4gYmFzZU9iai0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHkpOwogfQogCi19IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6Q29tbW9uU2xvd1BhdGhzCit9IC8vIG5hbWVzcGFjZSBDb21tb25T
bG93UGF0aHMKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCisjaWYg
VVNFKEpTVkFMVUU2NCkKKy8vIEFjY29yZGluZyB0byBDKysgcnVsZXMsIGEgdHlwZSB1c2VkIGZv
ciB0aGUgcmV0dXJuIHNpZ25hdHVyZSBvZiBmdW5jdGlvbiB3aXRoIEMgbGlua2FnZSAoaS5lLgor
Ly8gJ2V4dGVybiAiQyInKSBuZWVkcyB0byBiZSBQT0Q7IGhlbmNlIHB1dHRpbmcgYW55IGNvbnN0
cnVjdG9ycyBpbnRvIGl0IGNvdWxkIGNhdXNlIGVpdGhlciBjb21waWxlcgorLy8gd2FybmluZ3Ms
IG9yIHdvcnNlLCBhIGNoYW5nZSBpbiB0aGUgQUJJIHVzZWQgdG8gcmV0dXJuIHRoZXNlIHR5cGVz
Lgorc3RydWN0IFNsb3dQYXRoUmV0dXJuVHlwZSB7CisgICAgdm9pZCogYTsKKyAgICBFeGVjU3Rh
dGUqIGI7Cit9OworCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lk
KiBhLCBFeGVjU3RhdGUqIGIpCit7CisgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdDsKKyAg
ICByZXN1bHQuYSA9IGE7CisgICAgcmVzdWx0LmIgPSBiOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2lubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2
b2lkKiYgYSwgRXhlY1N0YXRlKiYgYikKK3sKKyAgICBhID0gcmVzdWx0LmE7CisgICAgYiA9IHJl
c3VsdC5iOworfQorCisjZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQordHlwZWRlZiBpbnQ2NF90
IFNsb3dQYXRoUmV0dXJuVHlwZTsKKwordHlwZWRlZiB1bmlvbiB7CisgICAgc3RydWN0IHsKKyAg
ICAgICAgdm9pZCogYTsKKyAgICAgICAgRXhlY1N0YXRlKiBiOworICAgIH0gcGFpcjsKKyAgICBp
bnQ2NF90IGk7Cit9IFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nOworCitpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVjU3RhdGUqIGIpCit7CisgICAg
U2xvd1BhdGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsKKyAgICB1LnBhaXIuYSA9IGE7CisgICAgdS5w
YWlyLmIgPSBiOworICAgIHJldHVybiB1Lmk7Cit9CisKK2lubGluZSB2b2lkIGRlY29kZVJlc3Vs
dChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhlY1N0YXRlKiYgYikKK3sK
KyAgICBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OworICAgIHUuaSA9IHJlc3VsdDsKKyAg
ICBhID0gdS5wYWlyLmE7CisgICAgYiA9IHUucGFpci5iOworfQorI2VuZGlmIC8vIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgCisjZGVmaW5lIFNMT1dfUEFUSAorICAgIAorI2RlZmluZSBTTE9XX1BB
VEhfREVDTChuYW1lKSBcCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEgg
bmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKyAgICAKKyNkZWZpbmUgU0xP
V19QQVRIX0hJRERFTl9ERUNMKG5hbWUpIFwKK1NMT1dfUEFUSF9ERUNMKG5hbWUpIFdURl9JTlRF
Uk5BTAorICAgIAorU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hl
Y2spOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVj
ayk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CitTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9ub3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lcSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3N0cmljdGVxKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbnN0
cmljdGVxKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbGVzcyk7CitTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xlc3NlcSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dyZWF0ZXIpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ncmVh
dGVyZXEpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbmMpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF90b19udW1iZXIpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZWdhdGUp
OworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZGQpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9tdWwpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
dWIpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kaXYpOworU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9tb2QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9sc2hpZnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0KTsKK1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYml0YW5kKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Yml0b3IpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOworU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9pc19vYmplY3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9p
c19mdW5jdGlvbik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luKTsKK1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3N0cmNhdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3RvX3ByaW1pdGl2ZSk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkgfHwgRU5BQkxFKExMSU5UKQogCiAjZW5kaWYgLy8gQ29tbW9uU2xvd1BhdGhzX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9u
IDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIGlubGluZSB1aW50MzJfdCB0b1VJbnQz
Mihkb3VibGUgbnVtYmVyKQogY2xhc3MgSlNWYWx1ZSB7CiAgICAgZnJpZW5kIHN0cnVjdCBFbmNv
ZGVkSlNWYWx1ZUhhc2hUcmFpdHM7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQg
Y2xhc3MgSklUU2xvd1BhdGhDYWxsOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViczsKICAgICBm
cmllbmQgY2xhc3MgSklUU3R1YkNhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpTSW50ZXJmYWNlSklU
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203289</attachid>
            <date>2013-05-29 16:44:06 -0700</date>
            <delta_ts>2013-06-03 11:56:30 -0700</delta_ts>
            <desc>Updated patch addressing reviewer comments</desc>
            <filename>116889-2.patch</filename>
            <type>text/plain</type>
            <size>120220</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwODU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxMy0wNS0yOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBmb3VydGhUaWVyOiBUaGUgYmFzZWxpbmUgaml0IGFuZCBMTGludCBzaG91bGQgdXNlIGNv
bW1vbiBzbG93IHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTY4ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNb3ZlZCB0aGUgbGxpbnRfc2xvd19wYXRocyB0aGF0IHJldHVybiBKU1ZhbHVlIGFs
b25nIHdpdGggc2V2ZXJhbCBvdGhlcnMgdG8gQ29tbW9uU2xvd1BhdGhzLmNwcC4KKyAgICAgICAg
RWxpbWluYXRlZCB0aGUgcmVsYXRlZCBKSVQgc3R1YnMuICBDaGFuZ2VzIHRoZSBiYXNlbGluZSBK
SVQgdG8gY2FsbCB0aGVzZSBuZXcgY29tbW9uIHN0dWJzLgorICAgICAgICBBZGRlZCBhIHNpbXBs
ZSBzbG93IHBhdGggY2FsbCBjbGFzcyB0aGF0IHVzZXMgYXJndW1lbnQgcmVnaXN0ZXJzIG9yIHRo
ZSBzdGFjayBpbnN0ZWFkIG9mCisgICAgICAgIEpJVFN0YWNrRnJhbWUuICBDaGFuZ2VzIHRoZSBl
eGNlcHRpb24gbWVjaGFuaXNtIGZvciB0byBjaGVjayBmb3IgYW4gZXhjZXB0aW9uIGFmdGVyIG1h
a2luZworICAgICAgICBhIHNsb3dwYXRoIGNhbGwgaW5zdGVhZCBvZiByZXR1cm5pbmcgdG8gdGhl
IGhhbmRsZXIgZGlyZWN0bHkgZm9ybSB0aGUgc2xvd3BhdGggZnVuY3Rpb24uCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmFk
ZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3JzaGlm
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdXJzaGlmdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9pbmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlYyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbXVsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3N1Yik6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2JpdGFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9hZGQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX21vZCk6CisgICAgICAg
ICogaml0L0pJVEV4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnZXRFeGNlcHRpb25Mb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUaHJvdyk6CisgICAgICAgIChKU0M6OmppdFRo
cm93TmV3KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5oOgorICAgICAgICAoRXhjZXB0
aW9uSGFuZGxlcik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc3RyY2F0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9j
cmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9ub3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2JpdHhvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0b3IpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3N0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9uc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Rv
X251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3Ry
Y2F0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9ub3QpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3N0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9uc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX251bWJl
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJVFN0dWJDYWxsLmg6CisgICAg
ICAgIChKU0M6OkpJVFN0dWJDYWxsOjpKSVRTdHViQ2FsbCk6CisgICAgICAgIChKSVRTdHViQ2Fs
bCk6CisgICAgICAgIChKU0M6OkpJVFN0dWJDYWxsOjpzZXRQQyk6CisgICAgICAgIChKU0M6OkpJ
VFN0dWJDYWxsOjpzZXRSZXR1cm5UeXBlSW50KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3Bw
OgorICAgICAgICAoSlNDOjpjdGlfdm1fdGhyb3dfc2xvd3BhdGgpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5oOgorICAgICAgICAqIGppdC9KSVRTdHVic0FSTS5oOgorICAgICAgICAqIGppdC9K
SVRTdHVic0FSTXY3Lmg6CisgICAgICAgICogaml0L0pJVFN0dWJzTUlQUy5oOgorICAgICAgICAq
IGppdC9KSVRTdHVic1NINC5oOgorICAgICAgICAqIGppdC9KSVRTdHVic1g4Ni5oOgorICAgICAg
ICAqIGppdC9KSVRTdHVic1g4Nl82NC5oOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5o
OgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwu
aDogQWRkZWQuCisgICAgICAgIChKSVRTbG93UGF0aENhbGwpOgorICAgICAgICAoSlNDOjpKSVRT
bG93UGF0aENhbGw6OkpJVFNsb3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVFNsb3dQYXRo
Q2FsbDo6Y2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAg
IChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
Lmg6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoU2xvd1BhdGhSZXR1cm5UeXBl
KToKKyAgICAgICAgKEpTQzo6ZW5jb2RlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6ZGVjb2RlUmVz
dWx0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUp
OgorCiAyMDEzLTA1LTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNaXNjIEpJVCBwcm9iZSBlbmhhY2VtZW50cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjEy
LDYgKzYxMiw3IEBACiAJCTY1MTEyMkZEMTQwNDZBNEMwMDJCMTAxRCAvKiBKYXZhU2NyaXB0Q29y
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
ICovOyB9OwogCQk2NTExMjJGRTE0MDQ2QTRDMDAyQjEwMUQgLyogbGliZWRpdC5keWxpYiBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUw
RDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwogCQk2NTExMjMwNzE0MDQ2QjBB
MDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5j
cHAgKi87IH07CisJCTY1MTk5NzZFMTc0NDNENjgwMDczOTNDRSAvKiBDb21tb25TbG93UGF0aHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxOTk3
NkMxNzQ0MzU0ODAwNzM5M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi87IH07CiAJCTY1MzAz
RDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkwNCAvKiBQ
YXJzZXJUb2tlbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1
ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovOyB9OwogCQk3RTRFRTcwOTBFQkI3OTYz
MDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVD
aGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNTgxLDYgKzE1ODIsNyBAQAogCQk2NTA3RDI5NzBFODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBl
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0
ZXN0UmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RS
ZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTExMjMwNTE0MDQ2QTRD
MDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5k
ZXggPSAwOyBwYXRoID0gdGVzdFJlZ0V4cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJNjUxOTk3NkMxNzQ0MzU0ODAwNzM5M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25TbG93UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQwMEMwRjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVy
dHlOYW1lQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b3BlcnR5TmFtZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MDBD
MTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTU5MCw2ICsxNTkyLDcgQEAKIAkJNjU2MjFFNkMwODlFODU5NzAwNzYw
RjM1IC8qIFByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB9OwogCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhp
dENvbXBpbGF0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdP
U1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9u
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTk4N0YyRjE2ODI4QTdFMDAz
QzJGOEQgLyogVW51c2VkUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbnVzZWRQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QUM4M0Yx
MTc0QzE3QUUwMDExRDhBQiAvKiBTbG93UGF0aENhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xvd1Bh
dGhDYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QzAyRkJCMDYzNzQ2MkEw
MDNFN0VFNiAvKiBQcm90ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb3RlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQk2NUM3QTE3MTBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dyYXBwZXJPYmpl
Y3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUM3QTE3MjBBOEVBQUNCMDBG
QTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dyYXBwZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIy
ODUsNiArMjI4OCw3IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY1QUM4M0YxMTc0QzE3
QUUwMDExRDhBQiAvKiBTbG93UGF0aENhbGwuaCAqLywKIAkJCQkwRjczRDdBQjE2NUExNDJBMDBB
Q0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8sCiAJCQkJMEY3M0Q3QUMxNjVB
MTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkQ4MkUz
NzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTI2MTMsNiAr
MjYxNyw3IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTE5OTc2QzE3NDQzNTQ4
MDA3MzkzQ0UgLyogQ29tbW9uU2xvd1BhdGhzLmNwcCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjRE
IC8qIEFyZ0xpc3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1l
bnRzLmNwcCAqLywKQEAgLTQxMDgsNiArNDExMyw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
KwkJCQk2NTE5OTc2RTE3NDQzRDY4MDA3MzkzQ0UgLyogQ29tbW9uU2xvd1BhdGhzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1
bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6U1NFMkNoZWNrUwogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJS
ZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisjaW5jbHVkZSAiU2xvd1Bh
dGhDYWxsLmgiCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xNTYsMzkgKzE1NywzMyBAQCB2b2lkIEpJVDo6
ZW1pdFRpbWVvdXRDaGVjaygpCiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI2RlZmluZSBERUZJ
TkVfQklOQVJZX09QKG5hbWUpIFwKLSAgICBjYXNlIG5hbWU6IHsgXAotICAgICAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfIyNuYW1lKTsgXAotICAgICAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsgXAotICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsgXAotICAg
ICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOyBcCi0g
ICAgICAgIE5FWFRfT1BDT0RFKG5hbWUpOyBcCisgICAgY2FzZSBvcF8jI25hbWU6IHsgXAorICAg
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAor
ICAgICAgICBORVhUX09QQ09ERShvcF8jI25hbWUpOyBcCiAgICAgfQogCiAjZGVmaW5lIERFRklO
RV9VTkFSWV9PUChuYW1lKSBcCi0gICAgY2FzZSBuYW1lOiB7IFwKLSAgICAgICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpXyMjbmFtZSk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7IFwKLSAgICAgICAgc3R1YkNh
bGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsgXAotICAgICAgICBORVhU
X09QQ09ERShuYW1lKTsgXAorICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKKyAgICAgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF8jI25hbWUpOyBcCisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKKyAgICAgICAgTkVY
VF9PUENPREUob3BfIyNuYW1lKTsgXAogICAgIH0KIAogI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82
NCkKIAogI2RlZmluZSBERUZJTkVfQklOQVJZX09QKG5hbWUpIFwKLSAgICBjYXNlIG5hbWU6IHsg
XAotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfIyNuYW1lKTsgXAotICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
LCByZWdUMik7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCwgcmVnVDIpOyBcCi0gICAgICAgIHN0dWJDYWxsLmNhbGwoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7IFwKLSAgICAgICAgTkVYVF9PUENPREUobmFtZSk7
IFwKKyAgICBjYXNlIG9wXyMjbmFtZTogeyBcCisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfIyNuYW1lKTsgXAor
ICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCisgICAgICAgIE5FWFRfT1BDT0RFKG9wXyMj
bmFtZSk7IFwKICAgICB9CiAKICNkZWZpbmUgREVGSU5FX1VOQVJZX09QKG5hbWUpIFwKLSAgICBj
YXNlIG5hbWU6IHsgXAotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfIyNu
YW1lKTsgXAotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kLCByZWdUMik7IFwKLSAgICAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsgXAotICAgICAgICBORVhUX09QQ09ERShuYW1lKTsgXAor
ICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAg
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKKyAgICAgICAgTkVYVF9PUENPREUob3BfIyNuYW1l
KTsgXAogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkBAIC0yNDQsMTUgKzIz
OSwxNSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIH0KIAog
ICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3Bf
ZGVsX2J5X3ZhbCkKLSAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9pbikKLSAgICAgICAgREVG
SU5FX0JJTkFSWV9PUChvcF9sZXNzKQotICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2xlc3Nl
cSkKLSAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9ncmVhdGVyKQotICAgICAgICBERUZJTkVf
QklOQVJZX09QKG9wX2dyZWF0ZXJlcSkKLSAgICAgICAgREVGSU5FX1VOQVJZX09QKG9wX2lzX2Z1
bmN0aW9uKQotICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfb2JqZWN0KQotICAgICAgICBE
RUZJTkVfVU5BUllfT1Aob3BfdHlwZW9mKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKGRlbF9i
eV92YWwpCisgICAgICAgIERFRklORV9CSU5BUllfT1AoaW4pCisgICAgICAgIERFRklORV9CSU5B
UllfT1AobGVzcykKKyAgICAgICAgREVGSU5FX0JJTkFSWV9PUChsZXNzZXEpCisgICAgICAgIERF
RklORV9CSU5BUllfT1AoZ3JlYXRlcikKKyAgICAgICAgREVGSU5FX0JJTkFSWV9PUChncmVhdGVy
ZXEpCisgICAgICAgIERFRklORV9VTkFSWV9PUChpc19mdW5jdGlvbikKKyAgICAgICAgREVGSU5F
X1VOQVJZX09QKGlzX29iamVjdCkKKyAgICAgICAgREVGSU5FX1VOQVJZX09QKHR5cGVvZikKIAog
ICAgICAgICBERUZJTkVfT1Aob3BfYWRkKQogICAgICAgICBERUZJTkVfT1Aob3BfYml0YW5kKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNiArMjgzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdm9pZCBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
Q29kZUJsb2NrKiBjb2RlYmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgRnVu
Y3Rpb25QdHIgbmV3Q2FsbGVlRnVuY3Rpb24pOwogCiAgICAgY2xhc3MgSklUIDogcHJpdmF0ZSBK
U0ludGVyZmFjZUpJVCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVRTbG93UGF0aENhbGw7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViQ2FsbDsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBQ
cm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm87CiAKQEAgLTYwOCw3ICs2MDksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUoUmVnaXN0ZXJJ
RCByZWcpOwogICAgICAgICB2b2lkIGNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlELCB1bnNp
Z25lZCBkc3QsIHVuc2lnbmVkIHNyYzEsIHVuc2lnbmVkIHNyYzIsIE9wZXJhbmRUeXBlcyBvcGkp
OwotICAgICAgICB2b2lkIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoT3Bjb2RlSUQsIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIHNy
YzEsIHVuc2lnbmVkIHNyYzIsIE9wZXJhbmRUeXBlcywgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRG
YXN0Q2FzZSwgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSk7CisgICAgICAgIHZvaWQg
Y29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShJbnN0cnVjdGlvbiosIE9wY29kZUlELCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBzcmMx
LCB1bnNpZ25lZCBzcmMyLCBPcGVyYW5kVHlwZXMsIGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFz
dENhc2UsIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOwogCiAgICAgICAgIHZvaWQg
Y29tcGlsZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlVlJlZywgSWRlbnRpZmllciopOwogICAgICAg
ICB2b2lkIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBiYXNlVlJl
ZywgSWRlbnRpZmllciosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJ
KHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYzMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxp
bmdUb29sLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAKICNpZm5kZWYgTkRFQlVHCiAj
aW5jbHVkZSA8c3RkaW8uaD4KQEAgLTgwLDkgKzgxLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X25lZ2F0ZShJbnN0cnVjdGlvbgogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gMHg3ZmZmZmZm
ZiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG91YmxlIGNoZWNrCiAKLSAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbmVnYXRlKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX25lZ2F0ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChk
c3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCBvcGNvZGUsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQg
b3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQpAQCAt
MTk4LDEwICsxOTksOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KEluc3RydWN0aW9u
CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBjdGlfb3BfbHNoaWZ0KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfbHNoaWZ0KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2Fk
KGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIFJpZ2h0U2hp
ZnQgKD4+KSBhbmQgVW5zaWduZWRSaWdodFNoaWZ0ICg+Pj4pIGhlbHBlcgpAQCAtMjk2LDEwICsy
OTYsOSBAQCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjCiAgICAgICAg
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIENhbid0IHJlcHJlc2VudCB1bnNpZ25lZCByZXN1
bHQgYXMgYW4gaW1tZWRpYXRlCiAgICAgfQogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgaXNVbnNpZ25lZCA/IGN0aV9vcF91cnNoaWZ0IDogY3RpX29wX3JzaGlmdCk7Ci0gICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwot
ICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXNVbnNpZ25lZCA/IHNsb3dfcGF0aF91cnNoaWZ0
IDogc2xvd19wYXRoX3JzaGlmdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0
TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAvLyBSaWdo
dFNoaWZ0ICg+PikKQEAgLTM2MSwxMCArMzYwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Jp
dGFuZChJbnN0cnVjdGlvbgogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNo
ZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCi0gICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2JpdGFuZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxs
LmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2JpdGFuZCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwog
fQogCiAvLyBCaXRPciAofCkKQEAgLTQwMiwxMCArNDAwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2JpdG9yKEluc3RydWN0aW9uKgogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGlu
dDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCi0gICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2JpdG9yKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1
YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYml0b3IpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVy
KTsKIH0KIAogLy8gQml0WG9yICheKQpAQCAtNDQzLDEwICs0NDAsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfYml0eG9yKEluc3RydWN0aW9uCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsg
Ly8gaW50MzIgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0eG9yKTsKLSAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0g
ICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYml0eG9yKTsKKyAgICBzbG93UGF0
aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVS
ZWdpc3Rlcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpAQCAtNTA2LDEwICs1MDIsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQo
SW5zdHJ1Y3Rpb24qIGN1cnJlCiAKICAgICBpZiAoIXR5cGVzLmZpcnN0KCkubWlnaHRCZU51bWJl
cigpIHx8ICF0eXBlcy5zZWNvbmQoKS5taWdodEJlTnVtYmVyKCkpIHsKICAgICAgICAgYWRkU2xv
d0Nhc2UoKTsKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2FkZCk7
Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KG9wMik7Ci0gICAgICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9hZGQpOworICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgICAgICBlbWl0TG9h
ZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02MTEsMTAgKzYwNiw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQo
SW5zdHJ1Y3Rpb24qIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9hZGQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0g
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9hZGQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQo
ZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogLy8gU3VidHJhY3Rp
b24gKC0pCkBAIC02ODksNyArNjgzLDYgQEAgdm9pZCBKSVQ6OmVtaXRTdWIzMkNvbnN0YW50KHVu
c2lnbmVkIGRzdAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N1YihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAg
dW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICB1bnNp
Z25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRU
eXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKTsKIApAQCAtNzE1LDEwICs3MDgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
c3ViKEluc3RydWN0aW9uKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBjdGlfb3Bfc3ViKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEp
OwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3Qp
OworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfc3ViKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRM
b2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIHZvaWQgSklU
OjplbWl0QmluYXJ5RG91YmxlT3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIHVuc2lnbmVkIGRzdCwgdW5z
aWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIE9wZXJhbmRUeXBlcyB0eXBlcywgSnVtcExpc3QmIG5v
dEludDMyT3AxLCBKdW1wTGlzdCYgbm90SW50MzJPcDIsIGJvb2wgb3AxSXNJblJlZ2lzdGVycywg
Ym9vbCBvcDJJc0luUmVnaXN0ZXJzKQpAQCAtMTAyMiwxMSArMTAxNCw5IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIExh
YmVsIGppdFN0dWJDYWxsKHRoaXMpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0
aV9vcF9tdWwpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9t
dWwpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwg
cmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogLy8gRGl2aXNpb24gKC8pCkBAIC0xMDk3
LDggKzEwODcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlCiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMg
PSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7
CiAKICAgICBpZiAoIXN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQpAQCAtMTExMywxMCArMTEwMiw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kaXYoSW5zdHJ1Y3Rpb24qIGMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9kaXYpOwotICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3Ay
KTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kaXYpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKIH0KIAogLy8gTW9kICglKQpAQCAtMTE1MiwxMCArMTE0MCw5IEBAIHZvaWQg
SklUOjplbWl0X29wX21vZChJbnN0cnVjdGlvbiogY3VycmUKICAgICBudW1lcmF0b3JQb3NpdGl2
ZS5saW5rKHRoaXMpOwogICAgIGVtaXRTdG9yZUludDMyKGRzdCwgcmVnVDEsIChvcDEgPT0gZHN0
IHx8IG9wMiA9PSBkc3QpKTsKICNlbHNlCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wX21vZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X21vZCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChyZXN1bHQsIHJl
Z1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogI2VuZGlmCiB9CiAKQEAgLTExNjMsMTcg
KzExNTAsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChJbnN0cnVjdGlvbiogYwogewog
I2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQ7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBjdGlfb3BfbW9kKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfbW9kKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKHJl
c3VsdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShpdGVyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNp
b24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisj
aW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8c3Rk
aW8uaD4KQEAgLTIxOSwxNCArMjIwLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShJbnN0
cnVjdGlvbiogY3UKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
IAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gMHg3ZmZmZmZmZiBjaGVjawogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsgLy8gZG91YmxlIGNoZWNrCiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3BfbmVnYXRlKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7
Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmVnYXRlKTsKKyAgICBzbG93
UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdU
MCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2xzaGlmdChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtMjQ5LDE3ICsyNTAsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0
KEluc3RydWN0aW9uKiBjdQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xzaGlmdChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwog
Ci0gICAgVU5VU0VEX1BBUkFNKG9wMSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9wMik7CiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbHNoaWZ0KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDIpOwotICAgIHN0dWJDYWxs
LmNhbGwocmVzdWx0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2xzaGlmdCk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9yc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTMwMywzMSArMjk5LDI1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yc2hpZnQoSW5zdHJ1
Y3Rpb24KICAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OwogICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcnNoaWZ0KTsKKyAgICBVTlVT
RURfUEFSQU0ob3AxKTsKIAotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChv
cDIpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpCiAgICAg
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVn
VDApOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIsIHJlZ1QyKTsKLSAgICB9IGVs
c2UgeworCisgICAgZWxzZSB7CiAgICAgICAgIGlmIChzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVu
Y2F0ZSgpKSB7CiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgICAgICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAg
ICAgICAgICAvLyBXZSdyZSByZWxvYWRpbmcgb3AxIHRvIHJlZ1QwIGFzIHdlIGNhbiBubyBsb25n
ZXIgZ3VhcmFudGVlIHRoYXQKLSAgICAgICAgICAgIC8vIHdlIGhhdmUgbm90IG11bmdlZCB0aGUg
b3BlcmFuZC4gIEl0IG1heSBoYXZlIGFscmVhZHkgYmVlbiBzaGlmdGVkCi0gICAgICAgICAgICAv
LyBjb3JyZWN0bHksIGJ1dCBpdCBzdGlsbCB3aWxsIG5vdCBoYXZlIGJlZW4gdGFnZ2VkLgotICAg
ICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdUMCk7Ci0gICAgICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0g
ICAgICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChyZWdUMik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdHViQ2Fs
bC5jYWxsKHJlc3VsdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yc2hpZnQpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNDE4LDEwICs0MDgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdXJzaGlmdChJbnN0
cnVjdGlvCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gQ2FuJ3QgcmVwcmVzZW50IHVu
c2lnbmVkIHJlc3VsdCBhcyBhbiBpbW1lZGlhdGUKICAgICB9CiAgICAgCi0gICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3Vyc2hpZnQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KG9wMSwgcmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDEpOwot
ICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Vyc2hpZnQpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQsIHVuc2lnbmVkIG9w
MSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZGl0aW9uKQpAQCAtNjA3LDI2ICs1OTYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYml0YW5kKElu
c3RydWN0aW9uKiBjdQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
LSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0
ZUludChvcDEpKSB7Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9i
aXRhbmQpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJlZ1QyKTsKLSAgICAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgICAgICBzdHViQ2FsbC5jYWxsKHJl
c3VsdCk7Ci0gICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIp
KSB7Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXRhbmQpOwot
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KG9wMiwgcmVnVDIpOwotICAgICAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2Jp
dGFuZCk7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVnVDIpOwotICAgICAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAgICAgIHN0dWJDYWxsLmNhbGwocmVz
dWx0KTsKLSAgICB9CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2JpdGFuZCk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTY0NCwxMyArNjE5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbmMoSW5zdHJ1Y3Rpb24q
IGMKIHsKICAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogCi0gICAgSnVtcCBub3RJbW0gPSBnZXRTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfaW5jKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
RHN0LCByZWdUMCk7Ci0gICAgbm90SW1tLmxpbmsodGhpcyk7Ci0gICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX2luYyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDAp
OwotICAgIHN0dWJDYWxsLmNhbGwoc3JjRHN0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVj
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02NjgsMTMgKzY0MSwxMSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVjKEluc3RydWN0aW9uKiBjCiB7CiAgICAgdW5zaWduZWQg
c3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAotICAgIEp1bXAgbm90
SW1tID0gZ2V0U2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2RlYyk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDApOwotICAgIG5v
dEltbS5saW5rKHRoaXMpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9k
ZWMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxs
KHNyY0RzdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCRUdJTjog
T1BfTU9EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNzE5LDEwICs2OTAs
OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKEluc3RydWN0aW9uKiBjCiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX21vZCk7Ci0gICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJl
Z1QyKTsKLSAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQs
IHJlZ1QwKTsKIH0KIAogI2Vsc2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKQEAgLTczMywx
MCArNzAzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX21vZChJbnN0cnVjdGlvbiogY3VycmUKICAg
ICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIHVu
c2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbW9kKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChvcDEsIHJlZ1QyKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIsIHJlZ1QyKTsK
LSAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7CisgICAgVU5VU0VEX1BBUkFNKG9wMSk7CisgICAg
VU5VU0VEX1BBUkFNKG9wMik7CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC03OTYsNyArNzY4
LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlEIAogICAgIGVtaXRG
YXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDAsIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmNv
bXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoT3Bjb2RlSUQgb3Bjb2RlSUQsIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkIHJlc3VsdCwgdW5zaWduZWQgb3Ax
LCB1bnNpZ25lZCBvcDIsIE9wZXJhbmRUeXBlcyB0eXBlcywgYm9vbCBvcDFIYXNJbW1lZGlhdGVJ
bnRGYXN0Q2FzZSwgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSkKK3ZvaWQgSklUOjpj
b21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIE9wY29kZUlEIG9wY29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyLCB1bnNpZ25lZCByZXN1bHQsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCBPcGVyYW5k
VHlwZXMgdHlwZXMsIGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIGJvb2wgb3AySGFz
SW1tZWRpYXRlSW50RmFzdENhc2UpCiB7CiAgICAgLy8gV2UgYXNzdW1lIHRoYXQgc3VidHJhY3Rp
bmcgVGFnVHlwZU51bWJlciBpcyBlcXVpdmFsZW50IHRvIGFkZGluZyBEb3VibGVFbmNvZGVPZmZz
ZXQuCiAgICAgQ09NUElMRV9BU1NFUlQoKChUYWdUeXBlTnVtYmVyICsgRG91YmxlRW5jb2RlT2Zm
c2V0KSA9PSAwKSwgVGFnVHlwZU51bWJlcl9QTFVTX0RvdWJsZUVuY29kZU9mZnNldF9FUVVBTFNf
MCk7CkBAIC04MTUsMTcgKzc4NywxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3BT
bG93Q2FzZShPCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBJbnRlZ2VyIG92ZXJmbG93IGNh
c2UgLSB3ZSBjb3VsZCBoYW5kbGUgdGhpcyBpbiBKSVQgY29kZSwgYnV0IHRoaXMgaXMgbGlrZWx5
IHJhcmUuCiAgICAgaWYgKG9wY29kZUlEID09IG9wX211bCAmJiAhb3AxSGFzSW1tZWRpYXRlSW50
RmFzdENhc2UgJiYgIW9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKSAvLyBvcF9tdWwgaGFzIGFu
IGV4dHJhIHNsb3cgY2FzZSB0byBoYW5kbGUgMCAqIG5lZ2F0aXZlIG51bWJlci4KICAgICAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdU
MCk7CiAKICAgICBMYWJlbCBzdHViRnVuY3Rpb25DYWxsKHRoaXMpOwotICAgIEpJVFN0dWJDYWxs
IHN0dWJDYWxsKHRoaXMsIG9wY29kZUlEID09IG9wX2FkZCA/IGN0aV9vcF9hZGQgOiBvcGNvZGVJ
RCA9PSBvcF9zdWIgPyBjdGlfb3Bfc3ViIDogY3RpX29wX211bCk7Ci0gICAgaWYgKG9wMUhhc0lt
bWVkaWF0ZUludEZhc3RDYXNlIHx8IG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKSB7Ci0gICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdUMCk7Ci0gICAgICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMSk7Ci0gICAgfQotICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAgc3R1YkNh
bGwuY2FsbChyZXN1bHQpOworCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wY29kZUlEID09IG9wX2FkZCA/IHNsb3dfcGF0aF9hZGQg
OiBvcGNvZGVJRCA9PSBvcF9zdWIgPyBzbG93X3BhdGhfc3ViIDogc2xvd19wYXRoX211bCk7Cisg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dCwgcmVnVDApOwogICAgIEp1bXAgZW5kID0ganVtcCgpOwogCiAgICAgaWYgKG9wMUhhc0ltbWVk
aWF0ZUludEZhc3RDYXNlKSB7CkBAIC04OTMsMTEgKzg2MCw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2FkZChJbnN0cnVjdGlvbiogY3VycmUKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5k
VHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKICAgICBp
ZiAoIXR5cGVzLmZpcnN0KCkubWlnaHRCZU51bWJlcigpIHx8ICF0eXBlcy5zZWNvbmQoKS5taWdo
dEJlTnVtYmVyKCkpIHsKLSAgICAgICAgYWRkU2xvd0Nhc2UoKTsKLSAgICAgICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2FkZCk7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KG9wMSwgcmVnVDIpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIsIHJlZ1Qy
KTsKLSAgICAgICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAgICAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2FkZCk7
CisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTkzMSw3ICs4OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYWRkKEluc3RydWN0aW9u
KiBjCiAKICAgICBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlID0gaXNPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVJbnQob3AxKTsKICAgICBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RD
YXNlID0gIW9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlICYmIGlzT3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlSW50KG9wMik7Ci0gICAgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShvcF9hZGQs
IGl0ZXIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVzLCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2Fz
ZSwgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOworICAgIGNvbXBpbGVCaW5hcnlBcml0aE9w
U2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLCBvcF9hZGQsIGl0ZXIsIHJlc3VsdCwgb3AxLCBv
cDIsIHR5cGVzLCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSwgb3AySGFzSW1tZWRpYXRlSW50
RmFzdENhc2UpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKQEAgLTk3Niw3ICs5NDAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bXVsKEluc3RydWN0aW9uKiBjCiAKICAgICBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNl
ID0gaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSAmJiBnZXRDb25zdGFudE9wZXJh
bmRJbW1lZGlhdGVJbnQob3AxKSA+IDA7CiAgICAgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0
Q2FzZSA9ICFvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSAmJiBpc09wZXJhbmRDb25zdGFudElt
bWVkaWF0ZUludChvcDIpICYmIGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDIpID4g
MDsKLSAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKG9wX211bCwgaXRlciwgcmVzdWx0
LCBvcDEsIG9wMiwgdHlwZXMsIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBvcDJIYXNJbW1l
ZGlhdGVJbnRGYXN0Q2FzZSk7CisgICAgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wX211bCwgaXRlciwgcmVzdWx0LCBvcDEsIG9wMiwgdHlwZXMsIG9w
MUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtMTA4MiwxMCArMTA0Niw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kaXYoSW5zdHJ1
Y3Rpb24qIGMKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICB9CiAgICAgLy8g
VGhlcmUgaXMgYW4gZXh0cmEgc2xvdyBjYXNlIGZvciAob3AxICogLU4pIG9yICgtTiAqIG9wMiks
IHRvIGNoZWNrIGZvciAwIHNpbmNlIHRoaXMgc2hvdWxkIHByb2R1Y2UgYSByZXN1bHQgb2YgLTAu
Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2Rpdik7Ci0gICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQob3AxLCByZWdUMik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3Ay
LCByZWdUMik7Ci0gICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGl2KTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3N1YihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtMTEwNiw3ICsxMDY5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3N1YihJbnN0cnVjdGlvbiogYwogICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQ7CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVz
Ojpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgY29tcGls
ZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShvcF9zdWIsIGl0ZXIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5
cGVzLCBmYWxzZSwgZmFsc2UpOworICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoY3Vy
cmVudEluc3RydWN0aW9uLCBvcF9zdWIsIGl0ZXIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVzLCBm
YWxzZSwgZmFsc2UpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRU5E
OiBPUF9BREQsIE9QX1NVQiwgT1BfTVVMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq
LwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShy
ZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3NCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorc3RhdGljIGJvb2wgZ2V0RXhjZXB0aW9uTG9jYXRpb24oVk0qIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdW5zaWduZWQmIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJB
TSh2bSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSAwOworICAgIEFTU0VSVCghY2FsbEZyYW1lLT5o
YXNIb3N0Q2FsbEZyYW1lRmxhZygpKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKSA/IGNhbGxGcmFtZS0+dHJ1ZUNhbGxlckZyYW1lKCkgOiBjYWxs
RnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisgICAgYm9v
bCBjYWxsZnJhbWVJc0hvc3QgPSBjYWxsZXJGcmFtZS0+YWRkSG9zdENhbGxGcmFtZUZsYWcoKSA9
PSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CisgICAgCisgICAgaWYgKCFjYWxsRnJhbWUgfHwg
IWNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgCisj
aWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmICghY2FsbEZyYW1lLT5oYXNS
ZXR1cm5QQygpKQorICAgICAgICBjYWxsZnJhbWVJc0hvc3QgPSB0cnVlOworI2VuZGlmCisjaWYg
RU5BQkxFKERGR19KSVQpCisgICAgaWYgKGNhbGxGcmFtZS0+aXNJbmxpbmVDYWxsRnJhbWUoKSkK
KyAgICAgICAgY2FsbGZyYW1lSXNIb3N0ID0gZmFsc2U7CisjZW5kaWYKKyAgICAKKyAgICBpZiAo
Y2FsbGZyYW1lSXNIb3N0KSB7CisgICAgICAgIC8vIERvbid0IG5lZWQgdG8gZGVhbCB3aXRoIGlu
bGluZSBjYWxsZnJhbWVzIGhlcmUgYXMgYnkgZGVmaW5pdGlvbiB3ZSBoYXZlbid0CisgICAgICAg
IC8vIGlubGluZWQgYSBjYWxsIHdpdGggYW4gaW50ZXJ2ZW5pbmcgbmF0aXZlIGNhbGwgZnJhbWUu
CisjaWYgRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQorI2lmIEVOQUJMRShERkdfSklUKQor
ICAgICAgICBpZiAoY29kZUJsb2NrICYmIEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxv
Y2stPmppdFR5cGUoKSkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVPcmlnaW5JbmRleCA9
IGNhbGxGcmFtZS0+Y29kZU9yaWdpbkluZGV4Rm9yREZHKCk7CisgICAgICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Y29kZU9yaWdpbihjb2RlT3JpZ2luSW5kZXgpLmJ5dGVjb2Rl
SW5kZXg7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICBieXRlY29kZU9mZnNl
dCA9IGNhbGxGcmFtZS0+Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCk7CisjZW5kaWYKKyAg
ICB9IGVsc2UgeworI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKyAgICAgICAgaWYgKGNhbGxGcmFtZS0+aXNJbmxpbmVDYWxsRnJhbWUoKSkgewor
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpY2YgPSBjYWxsRnJhbWUtPmlubGluZUNhbGxG
cmFtZSgpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBpY2YtPmNhbGxlci5ieXRlY29k
ZUluZGV4OworICAgICAgICAgICAgaWYgKElubGluZUNhbGxGcmFtZSogcGFyZW50Q2FsbEZyYW1l
ID0gaWNmLT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4ocGFyZW50Q2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9y
KHBhcmVudENhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJsb2NrKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQobmV3Q29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPiBieXRlY29kZU9mZnNl
dCk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrID0gbmV3Q29kZUJsb2NrOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNvZGVCbG9jayAmJiBKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7CisgICAgICAgICAgICBDb2RlT3JpZ2luIG9y
aWdpbjsKKyAgICAgICAgICAgIGlmICghY29kZUJsb2NrLT5jb2RlT3JpZ2luRm9yUmV0dXJuKGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSwgb3JpZ2luKSkKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBvcmlnaW4u
Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUqIGljZiA9IG9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihpY2YtPmV4
ZWN1dGFibGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2Nr
ID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoaWNmLT5pc0NhbGwgPyBDb2RlRm9y
Q2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgICAgIEFTU0VSVChuZXdDb2Rl
QmxvY2spOworICAgICAgICAgICAgICAgIEFTU0VSVChuZXdDb2RlQmxvY2stPmluc3RydWN0aW9u
Q291bnQoKSA+IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2sgPSBu
ZXdDb2RlQmxvY2s7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAg
ICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCiBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhWTSogdm0sIEV4
ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCB2UENJ
bmRleCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChleGNlcHRpb25WYWx1ZSk7CkBAIC01OCwxMCAr
MTI2LDE5IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KFZNKiB2bSwgRXgKICAgICB2
bS0+dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93ID0gY2F0Y2hQQ0ZvckludGVycHJldGVyOwog
ICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKGNhdGNoUm91dGluZSk7Ci0gICAgRXhjZXB0aW9uSGFu
ZGxlciBleGNlcHRpb25IYW5kbGVyID0geyBjYXRjaFJvdXRpbmUsIGNhbGxGcmFtZSB9OworICAg
IEV4Y2VwdGlvbkhhbmRsZXIgZXhjZXB0aW9uSGFuZGxlciA9IHsgY2FsbEZyYW1lLCBjYXRjaFJv
dXRpbmV9OwogICAgIHJldHVybiBleGNlcHRpb25IYW5kbGVyOwogfQogCitFeGNlcHRpb25IYW5k
bGVyIGppdFRocm93TmV3KFZNKiB2bSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhj
ZXB0aW9uVmFsdWUpCit7CisgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOworICAgIGlm
ICghZ2V0RXhjZXB0aW9uTG9jYXRpb24odm0sIGNhbGxGcmFtZSwgYnl0ZWNvZGVPZmZzZXQpKQor
ICAgICAgICBieXRlY29kZU9mZnNldCA9IDA7CisgICAgCisgICAgcmV0dXJuIGdlbmVyaWNUaHJv
dyh2bSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgYnl0ZWNvZGVPZmZzZXQpOworfQorCiBF
eGNlcHRpb25IYW5kbGVyIGppdFRocm93KFZNKiB2bSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpT
VmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsK
ICAgICByZXR1cm4gZ2VuZXJpY1Rocm93KHZtLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9j
YXRpb24pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5o
CShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2Vw
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDEzIEBAIGNsYXNzIFZNOwogLy8g
Zm9yIHRoZSB0aHJvd2luZyBhbmQgaGFuZGxpbmcgZXhjZXB0aW9ucy4KIAogc3RydWN0IEV4Y2Vw
dGlvbkhhbmRsZXIgewotICAgIHZvaWQqIGNhdGNoUm91dGluZTsKICAgICBFeGVjU3RhdGUqIGNh
bGxGcmFtZTsKKyAgICB2b2lkKiBjYXRjaFJvdXRpbmU7CiB9OwogCiBFeGNlcHRpb25IYW5kbGVy
IGdlbmVyaWNUaHJvdyhWTSosIEV4ZWNTdGF0ZSosIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIHVu
c2lnbmVkIHZQQ0luZGV4KTsKIAorRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvd05ldyhWTSosIEV4
ZWNTdGF0ZSosIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUpOwogRXhjZXB0aW9uSGFuZGxlciBqaXRU
aHJvdyhWTSosIEV4ZWNTdGF0ZSosIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJl
c3NQdHIgZmF1bHRMb2NhdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTUw
ODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC0xNjcsMTQgKzE2OCwxMCBAQCBKSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNU
SU5hdGl2CiAKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtLT5leGNlcHRpb25Mb2NhdGlvbiks
IHJlZ1QyKTsKICAgICBzdG9yZVB0cihyZWdUMSwgcmVnVDIpOwotICAgIHBva2UoY2FsbEZyYW1l
UmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1l
KSAvIHNpemVvZih2b2lkKikpOwotICAgIAogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVy
LCAmbV92bS0+dG9wQ2FsbEZyYW1lKTsKLSAgICAvLyBTZXQgdGhlIHJldHVybiBhZGRyZXNzLgot
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihGdW5jdGlvblB0cihjdGlWTVRocm93VHJhbXBvbGluZSku
dmFsdWUoKSksIHJlZ1QxKTsKLSAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihy
ZWdUMSk7CiAKLSAgICByZXQoKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIo
Y3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkudmFsdWUoKSksIHJlZ1QxKTsKKyAgICBqdW1w
KHJlZ1QxKTsKIAogICAgIC8vIEFsbCB0cmFtcG9saW5lcyBjb25zdHJ1Y3RlZCEgY29weSB0aGUg
Y29kZSwgbGluayB1cCBjYWxscywgYW5kIHNldCB0aGUgcG9pbnRlcnMgb24gdGhlIE1hY2hpbmUg
b2JqZWN0LgogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sIHRoaXMsIEdMT0JBTF9U
SFVOS19JRCk7CkBAIC00MzMsMTcgKzQzMCwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9f
cHJpbWl0aXZlKEluc3RyCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdG9fcHJpbWl0aXZlKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3RvX3ByaW1pdGl2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0
TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9zdHJjYXQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfc3RyY2F0KTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3N0cmNhdCk7CisgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNDcxLDEzICs0NjYsMTIgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfbm90KEluc3RydWN0aW9uKiBjdXJyZQogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX25vdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9ub3QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHNyYyk7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbm90KTsKKyAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBj
YWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2pmYWxzZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNzUwLDE3ICs3NDQsMTQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N0
cmljdGVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMxID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMyID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX3N0cmljdGVxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChz
cmMxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChzcmMyKTsKLSAgICBzdHViQ2FsbC5jYWxs
KGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdHJpY3RlcSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
KyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKQEAgLTc3MSwxNyArNzYyLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX25zdHJpY3RlcShJ
bnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwotICAgIHVuc2lnbmVkIHNyYzEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwot
ICAgIHVuc2lnbmVkIHNyYzIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
bnN0cmljdGVxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChzcmMxKTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChzcmMyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9uc3RyaWN0ZXEpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0
LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTAwMSw5ICs5
ODksOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKEluc3RydWN0CiAKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfdG9fbnVtYmVyKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwot
ICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX251bWJlcik7CisgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZy
YW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXNoX25hbWVfc2NvcGUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTExMzcsOSArMTEyNSw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5zdHIKIAogICAgIEp1bXAgYXJnc0NyZWF0
ZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGRzdCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSk7CiAKLSAgICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRl
X2FyZ3VtZW50cykuY2FsbCgpOwotICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Ci0g
ICAgZW1pdFN0b3JlKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihkc3QpLCByZWdUMSwgcmVn
VDApOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cyk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIAogICAgIGFyZ3NDcmVhdGVkLmxpbmsodGhpcyk7CiB9CkBAIC0xMTgzLDkgKzExNzAs
OCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1CiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogCi0gICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV90aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwot
ICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9jcmVhdGVfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpA
QCAtMTIwNSwxMyArMTE5MSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0
aW9uKiBjCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
Ci0gICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKLQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX3RoaXMpOwotICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QzLCByZWdUMik7Ci0gICAgc3R1YkNhbGwuY2FsbCh0aGlz
UmVnaXN0ZXIpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfdG9fdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV93aWxsX2NhbGwoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEyODIsOSArMTI2NSw5IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmEKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0
ZV9hcmd1bWVudHMpLmNhbGwoKTsKLSAgICBlbWl0U3RvcmUoYXJndW1lbnRzLCByZWdUMSwgcmVn
VDApOwotICAgIGVtaXRTdG9yZSh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
KSwgcmVnVDEsIHJlZ1QwKTsKKworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cyk7CisgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICAKICAgICBza2lwQXJndW1lbnRzQ3JlYXRpb24ubGlu
ayh0aGlzKTsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X3Zh
bF9nZW5lcmljKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMzYwLDEwICszNjEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUo
SW5zdHJ1Y3RpCiAKIHZvaWQgSklUOjplbWl0X29wX3N0cmNhdChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9z
dHJjYXQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3Rl
ZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKLSAgICBzdHViQ2FsbC5j
YWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc3RyY2F0
KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkBAIC05MzgsOSArOTM4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90
aGlzKEluc3RydQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFs
bG9jYXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBm
YWlsZWQKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhp
cyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfY3JlYXRlX3RoaXMpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVf
d2lsbF9jYWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC05NjQsMjcgKzk2
NCwyOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyhJbnN0cnVjdGlvCiB7CiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdG9fdGhpcyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19wcmltaXRpdmUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdG9fcHJpbWl0aXZlKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25vdChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICB4b3I2NChUcnVz
dGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7Ci0gICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25vdCk7Ci0gICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CisgICAgCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9ub3QpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9qZmFsc2UoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTEwMDgsMTkgKzEwMDksMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2p0cnVlKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdHhvcihJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfYml0eG9yKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdU
MCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXR4b3IpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRv
cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0b3IpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAgc3R1YkNh
bGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Jp
dG9yKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTEwNTEsMTAgKzEwNDgsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3Bfc3RyaWN0ZXEoSW5zdHJ1Y3RpCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3N0cmljdGVxKTsKLSAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0
dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9zdHJpY3RlcSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX25zdHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTA2Miwx
MCArMTA1OCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3QKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbnN0
cmljdGVxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uc3RyaWN0ZXEpOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19o
YXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTExMjMsOSArMTExOCw5IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF90b19udW1iZXIoSW5zdHJ1Y3QKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdG9fbnVtYmVyKTsK
LSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX251bWJlcik7Cisg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTExODQsMTAgKzExNzksMTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVu
dF9ieV92YQogICAgIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7Ci0gICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMpLmNh
bGwoKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cyk7Ci0gICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSk7
Ci0gICAgCisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CisKICAgICBza2lwQXJndW1lbnRzQ3JlYXRpb24ubGluayh0aGlzKTsKICAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X3ZhbF9nZW5lcmljKTsKICAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChhcmd1bWVudHMsIHJlZ1QyKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YkNhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YkNhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBKSVRTdHViQ2FsbF9oCiAjZGVmaW5lIEpJVFN0dWJDYWxsX2gK
IAorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTM3LDYgKzM4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCBKU09iamVjdCogKEpJVF9TVFVC
ICpzdHViKShTVFVCX0FSR1NfREVDTEFSQVRJT04pKQogICAgICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICAgICAsIG1fc3R1YihzdHViKQorICAgICAgICAgICAgLCBtX3BjKDApCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgLCBtX3Jl
dHVyblR5cGUoQ2VsbCkKICNlbmRpZgpAQCAtNDcsNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSklUU3R1YkNhbGwoSklUKiBqaXQsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIChK
SVRfU1RVQiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSkKICAgICAgICAgICAgIDogbV9q
aXQoaml0KQogICAgICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9wYygw
KQogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAg
ICwgbV9yZXR1cm5UeXBlKENlbGwpCiAjZW5kaWYKQEAgLTU3LDcgKzYwLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCB2b2lkKiAoSklUX1NUVUIgKnN0
dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTikpCiAgICAgICAgICAgICA6IG1faml0KGppdCkKICAg
ICAgICAgICAgICwgbV9zdHViKHN0dWIpCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VS
VF9ESVNBQkxFRCAgICAgIAorICAgICAgICAgICAgLCBtX3BjKDApCisjaWYgVVNFKEpTVkFMVUUz
Ml82NCkgfHwgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgLCBtX3JldHVyblR5cGUoVm9p
ZFB0cikKICNlbmRpZgogICAgICAgICAgICAgLCBtX3N0YWNrSW5kZXgoSklUU1RBQ0tGUkFNRV9B
UkdTX0lOREVYKQpAQCAtNjcsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklU
U3R1YkNhbGwoSklUKiBqaXQsIGludCAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJB
VElPTikpCiAgICAgICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgICAgICwgbV9zdHViKHN0
dWIpCisgICAgICAgICAgICAsIG1fcGMoMCkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNT
RVJUX0RJU0FCTEVECiAgICAgICAgICAgICAsIG1fcmV0dXJuVHlwZShJbnQpCiAjZW5kaWYKQEAg
LTc3LDYgKzgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCog
aml0LCBib29sIChKSVRfU1RVQiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSkKICAgICAg
ICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAg
ICAgICwgbV9wYygwKQogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgICAgICwgbV9yZXR1cm5UeXBlKEludCkKICNlbmRpZgpAQCAtODcsNiArOTMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUU3R1YkNhbGwoSklUKiBqaXQsIHZvaWQgKEpJ
VF9TVFVCICpzdHViKShTVFVCX0FSR1NfREVDTEFSQVRJT04pKQogICAgICAgICAgICAgOiBtX2pp
dChqaXQpCiAgICAgICAgICAgICAsIG1fc3R1YihzdHViKQorICAgICAgICAgICAgLCBtX3BjKDAp
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAg
LCBtX3JldHVyblR5cGUoVm9pZCkKICNlbmRpZgpAQCAtOTcsNiArMTA0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCBFbmNvZGVkSlNWYWx1ZSAoSklU
X1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTikpCiAgICAgICAgICAgICA6IG1faml0
KGppdCkKICAgICAgICAgICAgICwgbV9zdHViKHN0dWIpCisgICAgICAgICAgICAsIG1fcGMoMCkK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICAs
IG1fcmV0dXJuVHlwZShWYWx1ZSkKICNlbmRpZgpAQCAtMTA0LDggKzExMiwyOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgSklUU3R1YkNhbGwoSklU
KiBqaXQsIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX1NUVUIgKnN0dWIpKEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjKSkKKyAgICAgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAg
ICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9wYygwKQorI2lmIFVTRShKU1ZBTFVF
MzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgLCBtX3JldHVyblR5cGUoVm9pZCkK
KyNlbmRpZgorICAgICAgICAsIG1fc3RhY2tJbmRleChKSVRTVEFDS0ZSQU1FX0FSR1NfSU5ERVgp
CisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gQXJndW1lbnRzIGFy
ZSBhZGRlZCBmaXJzdCB0byBsYXN0LgogCisgICAgICAgIHZvaWQgc2V0UEMoSW5zdHJ1Y3Rpb24q
IHBjKQorICAgICAgICB7CisgICAgICAgICAgICBtX3BjID0gcGM7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIHNldFJldHVyblR5cGVJbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX3Jl
dHVyblR5cGUgPSBJbnQ7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHNraXBBcmd1bWVudCgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc3RhY2tJbmRleCArPSBzdGFja0luZGV4U3RlcDsK
QEAgLTI5MSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKSVQqIG1faml0
OwogICAgICAgICBGdW5jdGlvblB0ciBtX3N0dWI7CisgICAgICAgIEluc3RydWN0aW9uKiBtX3Bj
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgZW51
bSB7IFZvaWQsIFZvaWRQdHIsIEludCwgVmFsdWUsIENlbGwgfSBtX3JldHVyblR5cGU7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAx
NTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVk
ZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUg
IlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTI2
NDksNiArMjY1MCwxMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgdm1fdGhyb3cpCiAg
ICAgcmV0dXJuIGhhbmRsZXIuY2FsbEZyYW1lOwogfQogCitFeGNlcHRpb25IYW5kbGVyIEpJVF9T
VFVCIGN0aV92bV90aHJvd19zbG93cGF0aChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBW
TSogdm0gPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT52bSgpOworICAgIHJldHVybiBqaXRUaHJv
d05ldyh2bSwgY2FsbEZyYW1lLCB2bS0+ZXhjZXB0aW9uKTsKK30KKwogREVGSU5FX1NUVUJfRlVO
Q1RJT04oRW5jb2RlZEpTVmFsdWUsIHRvX29iamVjdCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
CShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkNhbGxEYXRh
LmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgog
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpAQCAtMzA2LDYgKzMwNyw3IEBAIHN0
cnVjdCBKSVRTdGFja0ZyYW1lIHsKICNlbmRpZgogCiBleHRlcm4gIkMiIHZvaWQgY3RpVk1UaHJv
d1RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBjdGlWTVRocm93VHJhbXBvbGluZVNsb3dw
YXRoKCk7CiBleHRlcm4gIkMiIHZvaWQgY3RpT3BUaHJvd05vdENhdWdodCgpOwogZXh0ZXJuICJD
IiBFbmNvZGVkSlNWYWx1ZSBjdGlUcmFtcG9saW5lKHZvaWQqIGNvZGUsIEpTU3RhY2sqLCBDYWxs
RnJhbWUqLCB2b2lkKiAvKnVudXNlZDEqLywgdm9pZCogLyp1bnVzZWQyKi8sIFZNKik7CiAjaWYg
RU5BQkxFKERGR19KSVQpCkBAIC00NDUsNiArNDQ3LDcgQEAgdm9pZCogSklUX1NUVUIgY3RpX3Zt
X2xhenlMaW5rQ2FsbChTVFVCXwogdm9pZCogSklUX1NUVUIgY3RpX3ZtX2xhenlMaW5rQ2xvc3Vy
ZUNhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RV
QiBjdGlfdm1fbGF6eUxpbmtDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fdGhyb3coU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKK0V4Y2VwdGlvbkhhbmRsZXIgSklU
X1NUVUIgY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKENhbGxGcmFtZSopIFJFRkVSRU5DRURfRlJPTV9B
U00gV1RGX0lOVEVSTkFMOwogfSAvLyBleHRlcm4gIkMiCiAKICNlbGlmIEVOQUJMRShMTElOVF9D
X0xPT1ApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzQVJNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTS5oCShyZXZp
c2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzQVJNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDIxIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJv
d05vdENhdWdodCkgIjoiICIKICAgICAiYnggbHIiICJcbiIKICk7CiAKK2FzbSAoCisiLnRleHQi
ICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3Bh
dGgpICJcbiIKK0hJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIK
K0lOTElORV9BUk1fRlVOQ1RJT04oY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkKK1NZTUJP
TF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92
IHIwLCByNSIgIlxuIgorICAgICJibCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dw
YXRoKSAiXG4iCisgICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIw
IGhhcyBjYWxsRnJhbWUgYW5kIHIxIGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAgImFkZCBzcCwg
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURSNF9PRkZTRVQpICJcbiIKKyAgICAg
ImxkbWlhIHNwISwge3I0LXI2LCByOC1yMTEsIGxyfSIgIlxuIgorICAgICAiYWRkIHNwLCBzcCwg
IzEyIiAiXG4iCisgICAgICJieCByMSIgIlxuIgorKTsKKwogI2RlZmluZSBERUZJTkVfU1RVQl9G
VU5DVElPTihydHlwZSwgb3ApIFwKICAgICBleHRlcm4gIkMiIHsgXAogICAgICAgICBydHlwZSBK
SVRTdHViVGh1bmtlZF8jI29wKFNUVUJfQVJHU19ERUNMQVJBVElPTik7IFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNBUk12Ny5oCShyZXZpc2lvbiAxNTA4NDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzQVJNdjcuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIzLDYgKzEyMywzMCBAQCBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5l
KSAiOiIgCiBhc20gKAogIi50ZXh0IiAiXG4iCiAiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0hJREVfU1lN
Qk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKKyIudGh1bWIiICJcbiIKKyIu
dGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0
aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiOiIg
IlxuIgorICAgICJtb3YgcjAsIHI1IiAiXG4iCisgICAgImJsICIgTE9DQUxfUkVGRVJFTkNFKGN0
aV92bV90aHJvd19zbG93cGF0aCkgIlxuIgorICAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93
cGF0aCByZXR1cm5zLCByMCBoYXMgY2FsbEZyYW1lIGFuZCByMSBoYXMgaGFuZGxlciBhZGRyZXNz
CisgICAgImxkciByMTEsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SMTFf
T0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgcjEwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUkVTRVJWRURfUjEwX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI5LCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUjlfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIg
cjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SOF9PRkZTRVQpICJdIiAi
XG4iCisgICAgImxkciByNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1I3
X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUkVTRVJWRURfUjZfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgcjUsIFtzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SNV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciBy
NCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1I0X09GRlNFVCkgIl0iICJc
biIKKyAgICAibGRyIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUkVU
VVJOX0FERFJFU1NfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJhZGQgc3AsIHNwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoRklSU1RfU1RBQ0tfQVJHVU1FTlQpICJcbiIKKyAgICAiYnggcjEiICJcbiIK
Kyk7CisKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgogIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogSElERV9TWU1CT0woY3RpT3BU
aHJvd05vdENhdWdodCkgIlxuIgogIi50aHVtYiIgIlxuIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVic01JUFMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzTUlQUy5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzTUlQUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiAr
MTM0LDQwIEBAIGFzbSAoCiAiLnNldCBub3Jlb3JkZXIiICJcbiIKICIuc2V0IG5vbWFjcm8iICJc
biIKICIuc2V0IG5vbWlwczE2IiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRo
cm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCisiLmVudCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1U
aHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJh
bXBvbGluZVNsb3dwYXRoKSAiOiIgIlxuIgorI2lmIFdURl9NSVBTX1BJQworIi5zZXQgbWFjcm8i
ICJcbiIKKyIuY3Bsb2FkICQzMSIgIlxuIgorICAgICJsYSAgICAkMjUsIiBTWU1CT0xfU1RSSU5H
KGN0aV92bV90aHJvd19zbG93cGF0aCkgIlxuIgorIi5zZXQgbm9tYWNybyIgIlxuIgorICAgICJi
YWwgIiBTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93cGF0aCkgIlxuIgorICAgICJtb3Zl
ICAkNCwkMTYiICJcbiIKKyNlbHNlCisgICAgImphbCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Ro
cm93X3Nsb3dwYXRoKSAiXG4iCisgICAgIm1vdmUgICQ0LCQxNiIgIlxuIgorI2VuZGlmCisgICAg
Ly8gV2hlbiBjdGlfdm1fdGhyb3dfc2xvd3BhdGggcmV0dXJucywgdjAgaGFzIGNhbGxGcmFtZSBh
bmQgdjEgaGFzIGhhbmRsZXIgYWRkcmVzcworICAgICJsdyAgICAkMTYsIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJFU0VSVkVEX1MwX09GRlNFVCkgIigkMjkpIiAiXG4iCisgICAgImx3ICAgICQxNywi
IFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUzFfT0ZGU0VUKSAiKCQyOSkiICJcbiIKKyAg
ICAibHcgICAgJDE4LCIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9TMl9PRkZTRVQpICIo
JDI5KSIgIlxuIgorICAgICJsdyAgICAkMTksIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVE
X1MzX09GRlNFVCkgIigkMjkpIiAiXG4iCisgICAgImx3ICAgICQyMCwiIFNUUklOR0laRV9WQUxV
RV9PRihQUkVTRVJWRURfUzRfT0ZGU0VUKSAiKCQyOSkiICJcbiIKKyAgICAibHcgICAgJDMxLCIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SRVRVUk5fQUREUkVTU19PRkZTRVQpICIoJDI5
KSIgIlxuIgorICAgICJqciAgICAkMyIgIlxuIgorICAgICJhZGRpdSAkMjksJDI5LCIgU1RSSU5H
SVpFX1ZBTFVFX09GKFNUQUNLX0xFTkdUSCkgIlxuIgorIi5zZXQgcmVvcmRlciIgIlxuIgorIi5z
ZXQgbWFjcm8iICJcbiIKKyIuZW5kICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGlu
ZVNsb3dwYXRoKSAiXG4iCispOworCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJc
biIKKyIuc2V0IG5vcmVvcmRlciIgIlxuIgorIi5zZXQgbm9tYWNybyIgIlxuIgorIi5zZXQgbm9t
aXBzMTYiICJcbiIKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQp
ICJcbiIKICIuZW50ICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBT
WU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1NINC5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzU0g0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5
LDYgKzk5LDMxIEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAKICk7
CiAKIGFzbSB2b2xhdGlsZSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJh
bXBvbGluZVNsb3dwYXRoKSAiXG4iCitISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZVNs
b3dwYXRoKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgp
ICI6IiAiXG4iCisgICAgIm1vdi5sIC5MMiJTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93
cGF0aCkiLHIwIiAiXG4iCisgICAgIm1vdiByMTUsIHI0IiAiXG4iCisgICAgIm1vdi5sIEAocjAs
cjEyKSxyMTEiICJcbiIKKyAgICAianNyIEByMTEiICJcbiIKKyAgICAvLyBXaGVuIGN0aV92bV90
aHJvd19zbG93cGF0aCByZXR1cm5zLCByMCBoYXMgY2FsbEZyYW1lIGFuZCByMSBoYXMgaGFuZGxl
ciBhZGRyZXNzCisgICAgIm5vcCIgIlxuIgorICAgICJhZGQgIzYwLCByMTUiICJcbiIKKyAgICAi
bW92LmwgQHIxNSsscjEwIiAiXG4iCisgICAgIm1vdi5sIEByMTUrLHIxMSIgIlxuIgorICAgICJt
b3YubCBAcjE1KyxyMTMiICJcbiIKKyAgICAibGRzLmwgQHIxNSsscHIiICJcbiIKKyAgICAibW92
LmwgQHIxNSsscjE0IiAiXG4iCisgICAgIm1vdi5sIEByMTUrLHI4IiAiXG4iCisgICAgImFkZCAj
MTIsIHIxNSIgIlxuIgorICAgICJtb3YgcjAsIHI0IiAiXG4iCisgICAgImptcCBAcjEiICJcbiIK
KyAgICAibm9wIiAiXG4iCisgICAgIi5hbGlnbiAyIiAiXG4iCisgICAgIi5MMiJTWU1CT0xfU1RS
SU5HKGN0aV92bV90aHJvd19zbG93cGF0aCkiOi5sb25nICIgU1lNQk9MX1NUUklORyhjdGlfdm1f
dGhyb3dfc2xvd3BhdGgpIkBHT1QgXG4iCispOworCithc20gdm9sYXRpbGUgKAogIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogSElERV9TWU1CT0woY3Rp
T3BUaHJvd05vdENhdWdodCkgIlxuIgogU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0
KSAiOiIgIlxuIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Ni5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAko
cmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4
Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxNiBAQCBTWU1CT0xfU1RSSU5HKGN0aVZN
VGhyb3dUcmFtcG9saW5lKSAiOiIgCiApOwogCiBhc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorSElERV9TWU1CT0woY3RpVk1U
aHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJh
bXBvbGluZVNsb3dwYXRoKSAiOiIgIlxuIgorICAgICJtb3ZsICVlZGksICVlY3giICJcbiIKKyAg
ICAiY2FsbCAiIExPQ0FMX1JFRkVSRU5DRShjdGlfdm1fdGhyb3dfc2xvd3BhdGgpICJcbiIKKyAg
ICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCBlYXggaGFzIGNhbGxGcmFt
ZSBhbmQgZWR4IGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAiam1wIColZWR4IiAiXG4iCispOwor
Cithc20gKAogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxu
IgogSElERV9TWU1CT0woY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogU1lNQk9MX1NUUklORyhj
dGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgpAQCAtMjEzLDYgKzIyMywyMiBAQCBleHRlcm4g
IkMiIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIF9fZGVjbHNwZWMobmFrZWQpIHZvaWQgY3Rp
Vk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCgpCisgICAgeworICAgICAgICBfX2FzbSB7CisgICAg
ICAgICAgICBtb3YgZWN4LCBlZGk7CisgICAgICAgICAgICBjYWxsIGN0aV92bV90aHJvd19zbG93
cGF0aDsKKyAgICAgICAgICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMs
IGVheCBoYXMgY2FsbEZyYW1lIGFuZCBlZHggaGFzIGhhbmRsZXIgYWRkcmVzcworICAgICAgICAg
ICAgYWRkIGVzcCwgMHgzYzsKKyAgICAgICAgICAgIHBvcCBlYng7CisgICAgICAgICAgICBwb3Ag
ZWRpOworICAgICAgICAgICAgcG9wIGVzaTsKKyAgICAgICAgICAgIHBvcCBlYnA7CisgICAgICAg
ICAgICBqbXAgZWR4CisgICAgICAgICAgICByZXQ7CisgICAgICAgIH0KKyAgICB9CisKICAgICBf
X2RlY2xzcGVjKG5ha2VkKSB2b2lkIGN0aU9wVGhyb3dOb3RDYXVnaHQoKQogICAgIHsKICAgICAg
ICAgX19hc20gewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Nl82
NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODZf
NjQuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVic1g4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxNiBAQCBTWU1CT0xfU1RS
SU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgCiApOwogCiBhc20gKAorIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorSElERV9TWU1C
T0woY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlW
TVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiOiIgIlxuIgorICAgICJtb3ZxICVyMTMsICVyZGki
ICJcbiIKKyAgICAiY2FsbCAiIExPQ0FMX1JFRkVSRU5DRShjdGlfdm1fdGhyb3dfc2xvd3BhdGgp
ICJcbiIKKyAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCByYXggaGFz
IGNhbGxGcmFtZSBhbmQgcmR4IGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAiam1wIColcmR4IiAi
XG4iCispOworCithc20gKAogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENh
dWdodCkgIlxuIgogSElERV9TWU1CT0woY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogU1lNQk9M
X1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw4ICs1OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKICNpZiAh
T1MoV0lORE9XUykKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVu
dFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZGk7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzaTsKICNlbHNl
CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9
IFg4NlJlZ2lzdGVyczo6ZWN4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNv
bmRBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZHg7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTg5LDYgKzkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIC8vIE9uIHg4NiB3ZSBhbHdheXMgdXNlIGZhc3RjYWxsIGNvbnZlbnRpb25zID0gYnV0
IG9uCiAgICAgICAgIC8vIE9TIFggaWYgbWlnaHQgbWFrZSBtb3JlIHNlbnNlIHRvIGp1c3QgdXNl
IHJlZ3Bhcm0uCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRS
ZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWN4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZHg7CiAgICAgICAg
IAogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIg
PSBYODZSZWdpc3RlcnM6OmVzaTsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2Fs
bEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkaTsKQEAgLTEwNiw2ICsxMDksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFs
dWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKICAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gQVJNUmVnaXN0
ZXJzOjpyMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRS
ZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjE7CiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9
IEFSTVJlZ2lzdGVyczo6cjc7CkBAIC0xMjgsNiArMTMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBNSVBT
UmVnaXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVz
dWx0UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBT
UmVnaXN0ZXJzOjphMTsKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBT
UmVnaXN0ZXJzOjpzMzsKQEAgLTE2NCw2ICsxNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDYgPSBTSDRSZWdpc3RlcnM6OnI2OwogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUNyA9IFNINFJlZ2lzdGVyczo6cjc7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9cmVn
VDQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0
ZXIgPXJlZ1Q0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVl
UmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6cjA7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIFNsb3dQYXRoQ2FsbF9oCisjZGVmaW5lIFNsb3dQYXRoQ2FsbF9oCisKKyNpbmNs
dWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKSVRTbG93
UGF0aENhbGwgeworcHVibGljOgorICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgSW5zdHJ1
Y3Rpb24qIHBjLCBTbG93UGF0aFJldHVyblR5cGUgKFNMT1dfUEFUSCAqc3R1YikoRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMpKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAg
LCBtX3N0dWIoc3R1YikKKyAgICAgICAgLCBtX3BjKHBjKQorICAgIHsKKyAgICB9CisKKyAgICBK
SVQ6OkNhbGwgY2FsbCgpCisgICAgeworI2lmIEVOQUJMRShPUENPREVfU0FNUExJTkcpCisgICAg
ICAgIGlmIChtX2ppdC0+bV9ieXRlY29kZU9mZnNldCAhPSAodW5zaWduZWQpLTEpCisgICAgICAg
ICAgICBtX2ppdC0+c2FtcGxlSW5zdHJ1Y3Rpb24obV9qaXQtPm1fY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpICsgbV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXQsIHRydWUpOworI2VuZGlm
CisgICAgICAgIG1faml0LT51cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyNpZiBDUFUoWDg2KSAmJiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBtX2ppdC0+YWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoLTgpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgICAgICBtX2ppdC0+cHVzaChKSVQ6OlRydXN0ZWRJbW0zMihKSVQ6OlRydXN0ZWRJbW1QdHIo
bV9wYykpKTsKKyAgICAgICAgbV9qaXQtPnB1c2goSklUOjpjYWxsRnJhbWVSZWdpc3Rlcik7Cisj
ZWxzZQorICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmZp
cnN0QXJndW1lbnRSZWdpc3Rlcik7CisgICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZElt
bVB0cihtX3BjKSwgSklUOjpzZWNvbmRBcmd1bWVudFJlZ2lzdGVyKTsKKyNlbmRpZgorICAgICAg
ICBKSVQ6OkNhbGwgY2FsbCA9IG1faml0LT5jYWxsKCk7CisgICAgICAgIG1faml0LT5tX2NhbGxz
LmFwcGVuZChDYWxsUmVjb3JkKGNhbGwsIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCBtX3N0dWIu
dmFsdWUoKSkpOworCisjaWYgQ1BVKFg4NikgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
bV9qaXQtPmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDE2KSwgTWFjcm9Bc3Nl
bWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE9QQ09E
RV9TQU1QTElORykKKyAgICAgICAgaWYgKG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9ICh1bnNp
Z25lZCktMSkKKyAgICAgICAgICAgIG1faml0LT5zYW1wbGVJbnN0cnVjdGlvbihtX2ppdC0+bV9j
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBtX2ppdC0+bV9ieXRlY29kZU9mZnNl
dCwgZmFsc2UpOworI2VuZGlmCisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgIG1faml0LT51bm1hcCgpOworI2Vsc2UKKyAgICAgICAgbV9qaXQtPmtpbGxMYXN0UmVzdWx0
UmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
ICAgICBKSVQ6Okp1bXAgbm9FeGNlcHRpb24gPSBtX2ppdC0+YnJhbmNoMzIoSklUOjpFcXVhbCwg
SklUOjpBYnNvbHV0ZUFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJm1faml0LT5tX2Nv
ZGVCbG9jay0+dm0oKS0+ZXhjZXB0aW9uKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSwgSklUOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwor
I2Vsc2UKKyAgICAgICAgSklUOjpKdW1wIG5vRXhjZXB0aW9uID0gbV9qaXQtPmJyYW5jaFRlc3Q2
NChKSVQ6Olplcm8sIEpJVDo6QWJzb2x1dGVBZGRyZXNzKCZtX2ppdC0+bV9jb2RlQmxvY2stPnZt
KCktPmV4Y2VwdGlvbikpOworI2VuZGlmCisgICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3Rl
ZEltbVB0cihGdW5jdGlvblB0cihjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKS52YWx1ZSgp
KSwgSklUOjpyZWdUMSk7CisgICAgICAgIG1faml0LT5qdW1wKEpJVDo6cmVnVDEpOworICAgICAg
ICBub0V4Y2VwdGlvbi5saW5rKG1faml0KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBjYWxs
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBKSVQqIG1faml0OworICAgIEZ1bmN0aW9uUHRyIG1f
c3R1YjsKKyAgICBJbnN0cnVjdGlvbiogbV9wYzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTCisK
KyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gU2xvd1BhdGhDYWxsX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlz
aW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk1LDE3ICszOTUsMTQgQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogCiAgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFkZHJl
c3MuCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChKU0ludGVyZmFjZUpJ
VDo6cmVnVDEpOwotCisgICAgCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW1QdHIoJnZtLT5leGNlcHRpb25Mb2NhdGlvbiksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CiAg
ICAgaml0LnN0b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdUMSwgSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QyKTsKLSAgICBqaXQucG9rZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9C
SkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2
b2lkKikpOwogCiAgICAgaml0LnN0b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOwotICAgIC8vIFNldCB0aGUgcmV0dXJuIGFkZHJlc3Mu
Ci0gICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIo
Y3RpVk1UaHJvd1RyYW1wb2xpbmUpLnZhbHVlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOwot
ICAgIGppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihKU0ludGVyZmFjZUpJVDo6
cmVnVDEpOwogCi0gICAgaml0LnJldCgpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpU
cnVzdGVkSW1tUHRyKEZ1bmN0aW9uUHRyKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpLnZh
bHVlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNl
SklUOjpyZWdUMSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJu
YXRpdmUgJXMgdHJhbXBvbGluZSIsIHRvQ1N0cmluZyhraW5kKS5kYXRhKCkpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDM0ICs0MjgsNiBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzdGFja19jaGVjaykKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQogCi1MTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQotewotICAgIExMSU5UX0JFR0lO
KCk7Ci0gICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNr
Rm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwotICAgIGlm
ICghbmV3RXhlYykgewotICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDID0gZXhlYy0+
cmV0dXJuUEMoKTsKLSAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Ci0gICAgICAg
IHZtLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKLSAgICAgICAg
aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVyblBDKTsKLSAgICAgICAgTExJTlRf
UkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkp
LCBleGVjKTsKLSAgICB9Ci0gICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKLX0KLQot
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQotewot
ICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZv
ckNvbnN0cnVjdCk7Ci0gICAgaWYgKCFuZXdFeGVjKSB7Ci0gICAgICAgIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOwotICAgICAgICBleGVjID0gZXhlYy0+Y2Fs
bGVyRnJhbWUoKTsKLSAgICAgICAgdm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGV4ZWMpOwotICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgcmV0dXJu
UEMpOwotICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOwotICAgIH0KLSAgICBMTElOVF9SRVRVUk5fVFdP
KDAsIG5ld0V4ZWMpOwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRl
X2FjdGl2YXRpb24pCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTQ2Nyw0MiArNDM5LDYgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hYwogICAgIExMSU5UX1JFVFVS
TihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9hcmd1bWVudHMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUodm0sIGV4ZWMpKTsKLSAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3Bl
cmFuZCkgPSBhcmd1bWVudHM7Ci0gICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7Ci0gICAgTExJTlRfRU5E
KCk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKLXsK
LSAgICBMTElOVF9CRUdJTigpOwotICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNDYXN0
PEpTRnVuY3Rpb24qPihMTElOVF9PUCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCkpOwotICAgIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAg
QVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0
cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwotI2VuZGlmCi0KLSAg
ICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5l
Q2FwYWNpdHkpLT5zdHJ1Y3R1cmUoKTsKLSAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYywgc3RydWN0dXJlKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF90b190aGlzKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QKDEpLmpzVmFsdWUoKTsKLSNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcGNb
T1BDT0RFX0xFTkdUSChvcF90b190aGlzKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0K
LSAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKHYxLnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkpOwotI2Vu
ZGlmCi0gICAgTExJTlRfUkVUVVJOKHYxLnRvVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOwotfQotCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X29iamVjdCkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwpAQCAtNTM2LDE4NyArNDcyLDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19yZWdleAogICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZSh2bSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJl
Z0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25vdCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOwotfQotCi1M
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsK
LSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmljdGVxKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0g
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uc3RyaWN0ZXEpCi17Ci0gICAgTExJTlRfQkVH
SU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sZXNzKQotewotICAgIExMSU5U
X0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQot
Ci1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVzc2VxKQotewotICAgIExMSU5UX0JF
R0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0K
LUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyKQotewotICAgIExMSU5UX0JF
R0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKLX0KLQot
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXJlcSkKLXsKLSAgICBMTElOVF9C
RUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMs
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKLX0K
LQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3ByZV9pbmMpCi17Ci0gICAgTExJTlRf
QkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpICsgMSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHJlX2RlYykKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Ci19Ci0KLUxM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19udW1iZXIpCi17Ci0gICAgTExJTlRfQkVH
SU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25l
Z2F0ZSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcigt
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKLX0KLQotTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIEpT
VmFsdWUgdjEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHYyID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCk7Ci0gICAgCi0jaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcK
LSAgICBkYXRhTG9nKCJUcnlpbmcgdG8gYWRkICIsIHYxLCAiIHRvICIsIHYyLCAiLlxuIik7Ci0j
ZW5kaWYKLSAgICAKLSAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKLSAg
ICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJp
bmcoZXhlYykpKTsKLSAgICAKLSAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigp
KQotICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVt
YmVyKCkpKTsKLSAgICAKLSAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwg
djIpKTsKLX0KLQotLy8gVGhlIGZvbGxvd2luZyBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJh
dGlvbnMgbmVlZCB0byBiZSBzdXJlIHRvIHJ1bgotLy8gdG9OdW1iZXIoKSBvbiB0aGVpciBvcGVy
YW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdG9OdW1iZXIoKSBpcyBpZGVtcG90ZW50Ci0vLyBp
ZiBhbiBleGNlcHRpb24gaXMgYWxyZWFkeSBzZXQgb24gdGhlIEV4ZWNTdGF0ZS4pCi0KLUxMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tdWwpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBkb3VibGUgYSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAg
IGRvdWJsZSBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgKiBiKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9zdWIpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBkb3VibGUgYSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAgIGRvdWJsZSBiID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKGEgLSBiKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYp
Ci17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBkb3VibGUgYSA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAgIGRvdWJsZSBiID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgLyBiKSk7
Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tb2QpCi17Ci0gICAgTExJTlRf
QkVHSU4oKTsKLSAgICBkb3VibGUgYSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpOwotICAgIGRvdWJsZSBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoYSwgYikpKTsKLX0KLQotTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKLXsKLSAgICBMTElOVF9CRUdJTigp
OwotICAgIGludDMyX3QgYSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7
Ci0gICAgdWludDMyX3QgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMp
OwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihhIDw8IChiICYgMzEpKSk7Ci19Ci0KLUxMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsK
LSAgICBpbnQzMl90IGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwot
ICAgIHVpbnQzMl90IGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsK
LSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSA+PiAoYiAmIDMxKSkpOwotfQotCi1MTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwot
ICAgIHVpbnQzMl90IGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsK
LSAgICB1aW50MzJfdCBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7
Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgPj4gKGIgJiAzMSkpKTsKLX0KLQotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwot
ICAgIGludDMyX3QgYSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0g
ICAgaW50MzJfdCBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSAmIGIpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2JpdG9yKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50MzJfdCBh
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBpbnQzMl90IGIg
PSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihhIHwgYikpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Yml0eG9yKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50MzJfdCBhID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBpbnQzMl90IGIgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihh
IF4gYikpOwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2lu
c3RhbmNlKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC03NDMsMzAgKzQ5OCw2IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW8KICAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkp
OwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHlwZW9mKQotewotICAgIExM
SU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pc19vYmplY3QpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCi17
Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5j
dGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lv
biAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBMTEludFNsb3dQYXRo
c19oCiAjZGVmaW5lIExMSW50U2xvd1BhdGhzX2gKIAorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
cy5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIApAQCAtMzgsNTcgKzM5LDYgQEAgc3RydWN0IEluc3RydWN0aW9uOwogCiBuYW1lc3Bh
Y2UgTExJbnQgewogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLS8vIEFjY29yZGluZyB0byBDKysgcnVs
ZXMsIGEgdHlwZSB1c2VkIGZvciB0aGUgcmV0dXJuIHNpZ25hdHVyZSBvZiBmdW5jdGlvbiB3aXRo
IEMgbGlua2FnZSAoaS5lLgotLy8gJ2V4dGVybiAiQyInKSBuZWVkcyB0byBiZSBQT0Q7IGhlbmNl
IHB1dHRpbmcgYW55IGNvbnN0cnVjdG9ycyBpbnRvIGl0IGNvdWxkIGNhdXNlIGVpdGhlciBjb21w
aWxlcgotLy8gd2FybmluZ3MsIG9yIHdvcnNlLCBhIGNoYW5nZSBpbiB0aGUgQUJJIHVzZWQgdG8g
cmV0dXJuIHRoZXNlIHR5cGVzLgotc3RydWN0IFNsb3dQYXRoUmV0dXJuVHlwZSB7Ci0gICAgdm9p
ZCogYTsKLSAgICBFeGVjU3RhdGUqIGI7Ci19OwotCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVjU3RhdGUqIGIpCi17Ci0gICAgU2xvd1BhdGhSZXR1
cm5UeXBlIHJlc3VsdDsKLSAgICByZXN1bHQuYSA9IGE7Ci0gICAgcmVzdWx0LmIgPSBiOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJl
dHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhlY1N0YXRlKiYgYikKLXsKLSAgICBhID0gcmVz
dWx0LmE7Ci0gICAgYiA9IHJlc3VsdC5iOwotfQotCi0jZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0
KQotdHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRoUmV0dXJuVHlwZTsKLQotdHlwZWRlZiB1bmlvbiB7
Ci0gICAgc3RydWN0IHsKLSAgICAgICAgdm9pZCogYTsKLSAgICAgICAgRXhlY1N0YXRlKiBiOwot
ICAgIH0gcGFpcjsKLSAgICBpbnQ2NF90IGk7Ci19IFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5n
OwotCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVj
U3RhdGUqIGIpCi17Ci0gICAgU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsKLSAgICB1LnBh
aXIuYSA9IGE7Ci0gICAgdS5wYWlyLmIgPSBiOwotICAgIHJldHVybiB1Lmk7Ci19Ci0KLWlubGlu
ZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwg
RXhlY1N0YXRlKiYgYikKLXsKLSAgICBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OwotICAg
IHUuaSA9IHJlc3VsdDsKLSAgICBhID0gdS5wYWlyLmE7Ci0gICAgYiA9IHUucGFpci5iOwotfQot
I2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCi0KIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJv
bVdoZXJlLCBpbnQgb3BlcmFuZCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKTsKIApAQCAtMTEzLDQ3ICs2MywxNCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woZW50cnlfb3NyX2Z1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wobG9vcF9vc3Ip
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHJlcGxhY2UpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHN0YWNrX2NoZWNrKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOwotTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3RvX3RoaXMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfb2JqZWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2FycmF5KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fy
cmF5X3dpdGhfc2l6ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19hcnJheV9idWZmZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
ZXdfcmVnZXhwKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbm90KTsK
LUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZXEpOwotTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9zdHJpY3RlcSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25zdHJpY3RlcSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2xlc3MpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sZXNzZXEpOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyKTsKLUxMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ3JlYXRlcmVxKTsKLUxMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcHJlX2luYyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3ByZV9kZWMpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF90b19udW1iZXIpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZWdhdGUpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZGQpOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9tdWwpOwotTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdWIpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9kaXYpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9tb2QpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpOwotTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0KTsKLUxMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfYml0YW5kKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfYml0b3IpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9iaXR4b3IpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19o
YXNfaW5zdGFuY2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbnN0
YW5jZW9mKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdHlwZW9mKTsK
LUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfb2JqZWN0KTsKLUxMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwotTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfdG9fYmFzZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfYmFzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTUwODQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCBfbGxpbnRfb3BfY3JlYXRl
X2FyZ3VtZW50czoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVB
cmd1bWVudHNEb25lCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2Fy
Z3VtZW50cykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQog
Lm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKICAgICBkaXNwYXRjaCgyKQogCkBAIC0zNzEsNyArMzcx
LDcgQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIGRpc3BhdGNoKDQpCiAKIC5vcENyZWF0
ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlz
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAgIGRpc3BhdGNo
KDQpCiAKIApAQCAtMzk4LDcgKzM5OCw3IEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGRpc3Bh
dGNoKDMpCiAKIC5vcFRvVGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfdG9fdGhpcykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQogICAgIGRp
c3BhdGNoKDMpCiAKIApAQCAtNDQwLDcgKzQ0MCw3IEBAIF9sbGludF9vcF9ub3Q6CiAgICAgZGlz
cGF0Y2goMykKIAogLm9wTm90U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9ub3QpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbm90KQogICAgIGRpc3BhdGNoKDMp
CiAKIApAQCAtNDYwLDcgKzQ2MCw3IEBAIF9sbGludF9vcF9lcToKICAgICBkaXNwYXRjaCg0KQog
CiAub3BFcVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZXEpCisgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZXEpCiAgICAgZGlzcGF0Y2goNCkKIAogCkBAIC01MDcs
NyArNTA3LDcgQEAgX2xsaW50X29wX25lcToKICAgICBkaXNwYXRjaCg0KQogCiAub3BOZXFTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25lcSkKKyAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9uZXEpCiAgICAgZGlzcGF0Y2goNCkKICAgICAKIApAQCAtNTY0LDEyICs1
NjQsMTIgQEAgZW5kCiAKIF9sbGludF9vcF9zdHJpY3RlcToKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmln
aHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfc3RyaWN0ZXEpCisgICAgc3RyaWN0RXEo
bWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQs
IF9zbG93X3BhdGhfc3RyaWN0ZXEpCiAKIAogX2xsaW50X29wX25zdHJpY3RlcToKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNp
bmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfc2xvd19wYXRoX25zdHJpY3RlcSkK
KyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmln
aHQsIHJlc3VsdCBlbmQsIF9zbG93X3BhdGhfbnN0cmljdGVxKQogCiAKIF9sbGludF9vcF9pbmM6
CkBAIC01ODIsNyArNTgyLDcgQEAgX2xsaW50X29wX2luYzoKICAgICBkaXNwYXRjaCgyKQogCiAu
b3BJbmNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaW5jKQogICAgIGRpc3BhdGNoKDIpCiAKIApAQCAt
NTk2LDcgKzU5Niw3IEBAIF9sbGludF9vcF9kZWM6CiAgICAgZGlzcGF0Y2goMikKIAogLm9wRGVj
U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVjKQorICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX2RlYykKICAgICBkaXNwYXRjaCgyKQogCiAKQEAgLTYxMyw3
ICs2MTMsNyBAQCBfbGxpbnRfb3BfdG9fbnVtYmVyOgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRv
TnVtYmVyU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b19udW1iZXIp
CisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fbnVtYmVyKQogICAgIGRpc3BhdGNoKDMp
CiAKIApAQCAtNjM2LDcgKzYzNiw3IEBAIF9sbGludF9vcF9uZWdhdGU6CiAgICAgZGlzcGF0Y2go
MykKIAogLm9wTmVnYXRlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZWdhdGUpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmVnYXRlKQogICAgIGRpc3BhdGNo
KDMpCiAKIApAQCAtNjk3LDcgKzY5Nyw3IEBAIF9sbGludF9vcF9hZGQ6CiAgICAgYmluYXJ5T3Ao
CiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBz
bG93IGVuZCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVu
ZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9hZGQpCisgICAgICAgIF9zbG93X3BhdGhfYWRk
KQogCiAKIF9sbGludF9vcF9tdWw6CkBAIC03MTUsNyArNzE1LDcgQEAgX2xsaW50X29wX211bDoK
ICAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhd
CiAgICAgICAgIGVuZCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJp
Z2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9tdWwpCisgICAgICAgIF9zbG93X3Bh
dGhfbXVsKQogCiAKIF9sbGludF9vcF9zdWI6CkBAIC03MjMsNyArNzIzLDcgQEAgX2xsaW50X29w
X3N1YjoKICAgICBiaW5hcnlPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
c3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IHN1YmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3N1YikKKyAg
ICAgICAgX3Nsb3dfcGF0aF9zdWIpCiAKIAogX2xsaW50X29wX2RpdjoKQEAgLTc0Miw3ICs3NDIs
NyBAQCBfbGxpbnRfb3BfZGl2OgogICAgICAgICAuZG9uZToKICAgICAgICAgZW5kLAogICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxp
bnRfc2xvd19wYXRoX2RpdikKKyAgICAgICAgX3Nsb3dfcGF0aF9kaXYpCiAKIAogbWFjcm8gYml0
T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKQEAgLTc2Nyw3ICs3NjcsNyBAQCBfbGxp
bnRfb3BfbHNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAg
ICAgX2xsaW50X3Nsb3dfcGF0aF9sc2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfbHNoaWZ0LAog
ICAgICAgICA0KQogCiAKQEAgLTc3NSw3ICs3NzUsNyBAQCBfbGxpbnRfb3BfcnNoaWZ0OgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0
aF9yc2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfcnNoaWZ0LAogICAgICAgICA0KQogCiAKQEAg
LTc4Niw3ICs3ODYsNyBAQCBfbGxpbnRfb3BfdXJzaGlmdDoKICAgICAgICAgICAgIHVyc2hpZnRp
IGxlZnQsIHJpZ2h0CiAgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CiAgICAgICAgIGVu
ZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF91cnNoaWZ0LAorICAgICAgICBfc2xvd19wYXRo
X3Vyc2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNzk0LDcgKzc5NCw3IEBAIF9sbGludF9vcF9i
aXRhbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRf
c2xvd19wYXRoX2JpdGFuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXRhbmQsCiAgICAgICAgIDUp
CiAKIApAQCAtODAyLDcgKzgwMiw3IEBAIF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhv
cmkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwKKyAg
ICAgICAgX3Nsb3dfcGF0aF9iaXR4b3IsCiAgICAgICAgIDUpCiAKIApAQCAtODEwLDcgKzgxMCw3
IEBAIF9sbGludF9vcF9iaXRvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKLSAg
ICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXRvciwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXRvciwK
ICAgICAgICAgNSkKIAogCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0
aXZlOgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6Ci0gICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fcHJpbWl0aXZlKQorICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSkKICAgICBkaXNwYXRjaCgzKQogCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3
IEBAIF9sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAgYnFuZXEgW2NmciwgdDAsIDhdLCBW
YWx1ZUVtcHR5LCAub3BDcmVhdGVBcmd1bWVudHNEb25lCi0gICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9jcmVhdGVfYXJndW1lbnRzKQogLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKICAgICBkaXNwYXRj
aCgyKQogCkBAIC0yNTIsNyArMjUyLDcgQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIGRp
c3BhdGNoKDQpCiAKIC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2NyZWF0ZV90aGlzKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0
ZV90aGlzKQogICAgIGRpc3BhdGNoKDQpCiAKIApAQCAtMjc4LDcgKzI3OCw3IEBAIF9sbGludF9v
cF90b190aGlzOgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvVGhpc1Nsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fdGhpcykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF90b190aGlzKQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtMzE4LDcgKzMxOCw3IEBAIF9s
bGludF9vcF9ub3Q6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wTm90U2xvdzoKLSAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ub3QpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
bm90KQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtMzQyLDEzICszNDIsMTMgQEAgZW5kCiBfbGxp
bnRfb3BfZXE6CiAgICAgZXF1YWxpdHlDb21wYXJpc29uKAogICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwKLSAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9lcSkKKyAgICAgICAgX3Nsb3dfcGF0aF9lcSkKIAogCiBfbGxpbnRfb3Bf
bmVxOgogICAgIGVxdWFsaXR5Q29tcGFyaXNvbigKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLAotICAgICAgICBfbGxpbnRf
c2xvd19wYXRoX25lcSkKKyAgICAgICAgX3Nsb3dfcGF0aF9uZXEpCiAKIAogbWFjcm8gZXF1YWxO
dWxsQ29tcGFyaXNvbigpCkBAIC00MTcsMTMgKzQxNywxMyBAQCBlbmQKIF9sbGludF9vcF9zdHJp
Y3RlcToKICAgICBzdHJpY3RFcSgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQp
IGNxZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhf
c3RyaWN0ZXEpCisgICAgICAgIF9zbG93X3BhdGhfc3RyaWN0ZXEpCiAKIAogX2xsaW50X29wX25z
dHJpY3RlcToKICAgICBzdHJpY3RFcSgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1
bHQpIGNxbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19w
YXRoX25zdHJpY3RlcSkKKyAgICAgICAgX3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCiAKIAogbWFjcm8g
cHJlT3AoYXJpdGhtZXRpY09wZXJhdGlvbiwgc2xvd1BhdGgpCkBAIC00NDQsMTMgKzQ0NCwxMyBA
QCBlbmQKIF9sbGludF9vcF9pbmM6CiAgICAgcHJlT3AoCiAgICAgICAgIG1hY3JvICh2YWx1ZSwg
c2xvdykgYmFkZGlvIDEsIHZhbHVlLCBzbG93IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0
aF9wcmVfaW5jKQorICAgICAgICBfc2xvd19wYXRoX2luYykKIAogCiBfbGxpbnRfb3BfZGVjOgog
ICAgIHByZU9wKAogICAgICAgICBtYWNybyAodmFsdWUsIHNsb3cpIGJzdWJpbyAxLCB2YWx1ZSwg
c2xvdyBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykKKyAgICAgICAgX3Ns
b3dfcGF0aF9kZWMpCiAKIAogX2xsaW50X29wX3RvX251bWJlcjoKQEAgLTQ2NSw3ICs0NjUsNyBA
QCBfbGxpbnRfb3BfdG9fbnVtYmVyOgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvTnVtYmVyU2xv
dzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b19udW1iZXIpCisgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fbnVtYmVyKQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAt
NDg3LDcgKzQ4Nyw3IEBAIF9sbGludF9vcF9uZWdhdGU6CiAgICAgZGlzcGF0Y2goMykKIAogLm9w
TmVnYXRlU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmVnYXRlKQogICAgIGRpc3BhdGNoKDMpCiAKIApA
QCAtNTU1LDcgKzU1NSw3IEBAIF9sbGludF9vcF9hZGQ6CiAgICAgYmluYXJ5T3AoCiAgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwK
ICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAg
ICAgX2xsaW50X3Nsb3dfcGF0aF9hZGQpCisgICAgICAgIF9zbG93X3BhdGhfYWRkKQogCiAKIF9s
bGludF9vcF9tdWw6CkBAIC01NzMsNyArNTczLDcgQEAgX2xsaW50X29wX211bDoKICAgICAgICAg
ICAgIHN0b3JlcSB0MywgW2NmciwgaW5kZXgsIDhdCiAgICAgICAgIGVuZCwKICAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9tdWwpCisgICAgICAgIF9zbG93X3BhdGhfbXVsKQogCiAKIF9sbGludF9vcF9zdWI6
CkBAIC01ODEsNyArNTgxLDcgQEAgX2xsaW50X29wX3N1YjoKICAgICBiaW5hcnlPcCgKICAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5k
LAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAotICAg
ICAgICBfbGxpbnRfc2xvd19wYXRoX3N1YikKKyAgICAgICAgX3Nsb3dfcGF0aF9zdWIpCiAKIAog
X2xsaW50X29wX2RpdjoKQEAgLTYwNSw3ICs2MDUsNyBAQCBfbGxpbnRfb3BfZGl2OgogICAgICAg
ICAgICAgc3RvcmVxIHQwLCBbY2ZyLCBpbmRleCwgOF0KICAgICAgICAgZW5kLAogICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRf
c2xvd19wYXRoX2RpdikKKyAgICAgICAgX3Nsb3dfcGF0aF9kaXYpCiAKIAogbWFjcm8gYml0T3Ao
b3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKQEAgLTYzMCw3ICs2MzAsNyBAQCBfbGxpbnRf
b3BfbHNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAg
X2xsaW50X3Nsb3dfcGF0aF9sc2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfbHNoaWZ0LAogICAg
ICAgICA0KQogCiAKQEAgLTYzOCw3ICs2MzgsNyBAQCBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9y
c2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfcnNoaWZ0LAogICAgICAgICA0KQogCiAKQEAgLTY0
OSw3ICs2NDksNyBAQCBfbGxpbnRfb3BfdXJzaGlmdDoKICAgICAgICAgICAgIHVyc2hpZnRpIGxl
ZnQsIHJpZ2h0CiAgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CiAgICAgICAgIGVuZCwK
LSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF91cnNoaWZ0LAorICAgICAgICBfc2xvd19wYXRoX3Vy
c2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNjU3LDcgKzY1Nyw3IEBAIF9sbGludF9vcF9iaXRh
bmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xv
d19wYXRoX2JpdGFuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXRhbmQsCiAgICAgICAgIDUpCiAK
IApAQCAtNjY1LDcgKzY2NSw3IEBAIF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkg
bGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwKKyAgICAg
ICAgX3Nsb3dfcGF0aF9iaXR4b3IsCiAgICAgICAgIDUpCiAKIApAQCAtNjczLDcgKzY3Myw3IEBA
IF9sbGludF9vcF9iaXRvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAg
ICAgX2xsaW50X3Nsb3dfcGF0aF9iaXRvciwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXRvciwKICAg
ICAgICAgNSkKIAogCkBAIC0xNTAyLDcgKzE1MDIsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZl
OgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fcHJpbWl0aXZlKQorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX3RvX3ByaW1pdGl2ZSkKICAgICBkaXNwYXRjaCgzKQogCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDMxLDEyICs0MzEsMTIgQEAgX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CiAKIF9sbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjazoKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQotICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9z
bG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rp
b25Gb3JDYWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogCiAKIF9sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgogICAgIHByb2xvZ3VlKGZ1bmN0aW9u
Rm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xs
aW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90
cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCi0gICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5m
dW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdp
biwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIAogCiAjIFZhbHVlLXJlcHJlc2Vu
dGF0aW9uLXNwZWNpZmljIGNvZGUuCkBAIC00NzQsNTUgKzQ3NCw1NSBAQCBfbGxpbnRfb3BfbmV3
X3JlZ2V4cDoKIAogX2xsaW50X29wX2xlc3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xlc3MpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfbGVzcykKICAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9sZXNzZXE6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xlc3Nl
cSkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9sZXNzZXEpCiAgICAgZGlzcGF0Y2goNCkK
IAogCiBfbGxpbnRfb3BfZ3JlYXRlcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ3JlYXRlcikKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9ncmVhdGVyKQogICAgIGRpc3BhdGNoKDQpCiAKIAogX2xsaW50X29wX2dyZWF0ZXJlcToK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Z3JlYXRlcmVxKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dyZWF0ZXJlcSkKICAgICBk
aXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9tb2Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX21vZCkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9tb2QpCiAgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfdHlwZW9mOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90eXBl
b2YpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdHlwZW9mKQogICAgIGRpc3BhdGNoKDMp
CiAKIAogX2xsaW50X29wX2lzX29iamVjdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfb2JqZWN0KQorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX2lzX29iamVjdCkKICAgICBkaXNwYXRjaCgzKQogCiAKIF9sbGludF9vcF9pc19m
dW5jdGlvbjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfaXNfZnVuY3Rpb24pCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaXNfZnVu
Y3Rpb24pCiAgICAgZGlzcGF0Y2goMykKIAogCiBfbGxpbnRfb3BfaW46CiAgICAgdHJhY2VFeGVj
dXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2luKQorICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX2luKQogICAgIGRpc3BhdGNoKDQpCiAKIG1hY3JvIGdldFB1dFRv
QmFzZU9wZXJhdGlvbkZpZWxkKHNjcmF0Y2gsIHNjcmF0Y2gxLCBmaWVsZE9mZnNldCwgZmllbGRH
ZXR0ZXIpCkBAIC0xMTMxLDcgKzExMzEsNyBAQCBfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6
CiAKIF9sbGludF9vcF9zdHJjYXQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3N0cmNhdCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9zdHJjYXQpCiAgICAgZGlzcGF0Y2goNCkKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNTA4
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJMTEludENMb29w
LmgiCiAjaW5jbHVkZSAiTExJbnRTbG93UGF0aHMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CisjaW5jbHVkZSAiU2xvd1BhdGhzLmgiCiAjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisKKyNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJB
cnJheUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29k
ZVByb2ZpbGluZy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJ
VC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5j
bHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
KyNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5j
bHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBCRUdJTl9O
T19TRVRfUEMoKSBcCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsgICAgICBcCisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpCisKKyNpZm5kZWYgTkRFQlVHCisjZGVm
aW5lIFNFVF9QQ19GT1JfU1RVQlMoKSBkbyB7IFwKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCkt
PmJ5dGVjb2RlT2Zmc2V0KHBjKTsgXAorICAgICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjICsg
MSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFNFVF9QQ19GT1JfU1RV
QlMoKSBkbyB7IFwKKyAgICAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyArIDEpOyBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKworI2RlZmluZSBCRUdJTigpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEJFR0lOX05PX1NFVF9QQygpOyAgICAgICAgICAgICAgICAgICAg
XAorICAgIFNFVF9QQ19GT1JfU1RVQlMoKQorCisjZGVmaW5lIE9QKGluZGV4KSAoZXhlYy0+dW5j
aGVja2VkUihwY1tpbmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgT1BfQyhpbmRleCkgKGV4ZWMt
PnIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgUkVUVVJOX1RXTyhmaXJzdCwgc2Vj
b25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChmaXJzdCwgc2Vj
b25kKTsgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBFTkRfSU1QTCgp
IFJFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgVEhST1coZXhjZXB0aW9uVG9UaHJvdykg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm0uZXhjZXB0aW9uID0gKGV4
Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjID0gTExJbnQ6OnJl
dHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIENIRUNLX0VYQ0VQVElPTigpIGRvIHsg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbikp
IHsgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjID0gTExJbnQ6OnJldHVyblRvVGhyb3coZXhl
YywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgRU5E
KCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBCUkFOQ0gob3Bjb2RlLCBj
b25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIGJDb25k
aXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBD
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBpZiAoYkNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5v
cGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xF
TkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIFJFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBc
CisgICAgICAgIEpTVmFsdWUgclJldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAg
IENIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIE9QKDEpID0gclJl
dHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisjZGVmaW5lIFJFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU1ZhbHVlIHJwUGV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9QKDEpID0gcnBQZXR1cm5WYWx1ZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQUk9GSUxFX1ZBTFVFKG9wY29kZSwgcnBQZXR1
cm5WYWx1ZSk7ICAgICAgICAgIFwKKyAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
UFJPRklMRV9WQUxVRShvcGNvZGUsIHZhbHVlKSBkbyB7IFwKKyAgICAgICAgcGNbT1BDT0RFX0xF
TkdUSChvcGNvZGUpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBcCisgICAgICAgIEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZWxzZSAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisjZGVmaW5lIFJFVFVSTl9Q
Uk9GSUxFRChvcGNvZGUsIHZhbHVlKSBSRVRVUk4odmFsdWUpCisKKyNkZWZpbmUgUFJPRklMRV9W
QUxVRShvcGNvZGUsIHZhbHVlKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQorCisjZW5kaWYgLy8gRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQorCisjZGVmaW5lIENBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRh
cmdldCkgUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBDQUxMX1RI
Uk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAg
ICAgICBFeGVjU3RhdGUqIGN0RXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogY3RQQyA9IChwYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2bS5leGNlcHRpb24gPSAoZXhjZXB0
aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ0FMTF9FTkRfSU1Q
TChjdEV4ZWMsIExMSW50OjpjYWxsVG9UaHJvdyhjdEV4ZWMsIGN0UEMpKTsgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIENBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogY2NlRXhlYyA9IChl
eGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0
aW9uKiBjY2VQQyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24pKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIENBTExfRU5EX0lNUEwoY2NlRXhlYywgTExJbnQ6OmNhbGxU
b1Rocm93KGNjZUV4ZWMsIGNjZVBDKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBDQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBFeGVjU3RhdGUqIGNyRXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogY3JQQyA9IChwYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBjckNhbGxU
YXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBDQUxMX0NIRUNLX0VYQ0VQVElPTihjckV4ZWMtPmNhbGxlckZyYW1lKCksIGNyUEMpOyAgXAor
ICAgICAgICBDQUxMX0VORF9JTVBMKGNyRXhlYywgY3JDYWxsVGFyZ2V0KTsgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2Fs
bF9hcml0eUNoZWNrKQoreworICAgIEJFR0lOKCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0g
Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3Rh
Y2soKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVyblBDID0gZXhlYy0+cmV0dXJuUEMoKTsKKyAgICAgICAgZXhlYyA9IGV4
ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIHZtLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3Zl
cmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgTExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cihleGVjLCByZXR1cm5QQyk7CisgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIFJFVFVSTl9U
V08oMCwgbmV3RXhlYyk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaykKK3sKKyAgICBCRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENv
bW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNr
KCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBSZXR1
cm5BZGRyZXNzUHRyIHJldHVyblBDID0gZXhlYy0+cmV0dXJuUEMoKTsKKyAgICAgICAgZXhlYyA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIHZtLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgTExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNh
bGxlcihleGVjLCByZXR1cm5QQyk7CisgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIFJFVFVS
Tl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1Zh
bHVlKEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBleGVjKSk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQpID0gYXJndW1lbnRzOworICAg
IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3Bl
cmFuZCkpID0gYXJndW1lbnRzOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY3JlYXRlX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25z
dHJ1Y3RvciA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oT1AoMikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsK
KyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3RE
YXRhOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0
RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNl
bmRpZgorCisgICAgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gcGNbM10udS5vcGVyYW5kOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uc3RydWN0b3ItPmFsbG9jYXRpb25Qcm9maWxlKGV4
ZWMsIGlubGluZUNhcGFjaXR5KS0+c3RydWN0dXJlKCk7CisgICAgUkVUVVJOKGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfdG9fdGhpcykKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgdjEgPSBPUCgxKS5qc1Zh
bHVlKCk7CisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIHBjW09QQ09ERV9MRU5HVEgo
b3BfdG9fdGhpcykgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9CisgICAgICAgIEpTVmFs
dWU6OmVuY29kZSh2MS5zdHJ1Y3R1cmVPclVuZGVmaW5lZCgpKTsKKyNlbmRpZgorICAgIFJFVFVS
Tih2MS50b1RoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gU3Ry
aWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25vdCkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oIU9QX0MoMikuanNW
YWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFs
KGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25lcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihq
c0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmljdGVxKQor
eworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVh
bChleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uc3RyaWN0ZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBS
RVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBPUF9DKDIpLmpzVmFs
dWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9sZXNzKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1
ZT4oZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVzc2VxKQoreworICAgIEJFR0lOKCk7CisgICAgUkVU
VVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ncmVhdGVy
KQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4
ZWMsIE9QX0MoMykuanNWYWx1ZSgpLCBPUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXJlcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVS
Tihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIE9QX0MoMykuanNWYWx1ZSgpLCBPUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luYykKK3sK
KyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc051bWJlcihPUCgxKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykgKyAxKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMpCit7Cisg
ICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpIC0gMSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fbnVtYmVyKQor
eworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzTnVtYmVyKE9QX0MoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCit7
CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoLU9QX0MoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCit7Cisg
ICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB2MiA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIDEgLy8gTExJTlRfU0xPV19Q
QVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJUcnlpbmcgdG8gYWRkICIsIHYxLCAiIHRvICIsIHYy
LCAiLlxuIik7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNP
YmplY3QoKSkKKyAgICAgICAgUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIu
dG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051
bWJlcigpKQorICAgICAgICBSRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVt
YmVyKCkpKTsKKyAgICAKKyAgICBSRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsK
K30KKworLy8gVGhlIGZvbGxvd2luZyBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMg
bmVlZCB0byBiZSBzdXJlIHRvIHJ1bgorLy8gdG9OdW1iZXIoKSBvbiB0aGVpciBvcGVyYW5kcyBp
biBvcmRlci4gIChBIGNhbGwgdG8gdG9OdW1iZXIoKSBpcyBpZGVtcG90ZW50CisvLyBpZiBhbiBl
eGNlcHRpb24gaXMgYWxyZWFkeSBzZXQgb24gdGhlIEV4ZWNTdGF0ZS4pCisKK1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9tdWwpCit7CisgICAgQkVHSU4oKTsKKyAgICBkb3VibGUgYSA9IE9QX0Mo
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBiID0gT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgKiBiKSk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCit7CisgICAgQkVHSU4oKTsKKyAgICBkb3Vi
bGUgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBiID0g
T1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEg
LSBiKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCit7CisgICAgQkVHSU4o
KTsKKyAgICBkb3VibGUgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAg
IGRvdWJsZSBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgUkVUVVJO
KGpzTnVtYmVyKGEgLyBiKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tb2QpCit7
CisgICAgQkVHSU4oKTsKKyAgICBkb3VibGUgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpOworICAgIGRvdWJsZSBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7
CisgICAgUkVUVVJOKGpzTnVtYmVyKGZtb2QoYSwgYikpKTsKK30KKworU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2xzaGlmdCkKK3sKKyAgICBCRUdJTigpOworICAgIGludDMyX3QgYSA9IE9QX0Mo
MikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgdWludDMyX3QgYiA9IE9QX0MoMykuanNW
YWx1ZSgpLnRvVUludDMyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhIDw8IChiICYgMzEp
KSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCit7CisgICAgQkVHSU4o
KTsKKyAgICBpbnQzMl90IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAg
IHVpbnQzMl90IGIgPSBPUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKKyAgICBSRVRV
Uk4oanNOdW1iZXIoYSA+PiAoYiAmIDMxKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfdXJzaGlmdCkKK3sKKyAgICBCRUdJTigpOworICAgIHVpbnQzMl90IGEgPSBPUF9DKDIpLmpz
VmFsdWUoKS50b1VJbnQzMihleGVjKTsKKyAgICB1aW50MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgPj4gKGIgJiAzMSkpKTsK
K30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKK3sKKyAgICBCRUdJTigpOwor
ICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgaW50
MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBSRVRVUk4oanNO
dW1iZXIoYSAmIGIpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQorewor
ICAgIEJFR0lOKCk7CisgICAgaW50MzJfdCBhID0gT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihl
eGVjKTsKKyAgICBpbnQzMl90IGIgPSBPUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwor
ICAgIFJFVFVSTihqc051bWJlcihhIHwgYikpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYml0eG9yKQoreworICAgIEJFR0lOKCk7CisgICAgaW50MzJfdCBhID0gT1BfQygyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGIgPSBPUF9DKDMpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhIF4gYikpOworfQorCitTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfdHlwZW9mKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpz
VHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRV
Uk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpKSkpOwor
fQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCit7CisgICAgQkVHSU4o
KTsKKyAgICBSRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoT1BfQygyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbikKK3sKKyAgICBCRUdJTigp
OworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIE9QX0Mo
MikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFz
ZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1
aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIGlmIChpc05hbWUoc3Vic2NyaXB0KSkK
KyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBqc0Nhc3Q8TmFtZUluc3RhbmNlKj4oc3Vic2NyaXB0
LmFzQ2VsbCgpKS0+cHJpdmF0ZU5hbWUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlm
ICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVy
dHkuIikpOworICAgIAorICAgIFJFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKwor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmNhdCkKK3sKKyAgICBCRUdJTigpOworICAgIFJF
VFVSTihqc1N0cmluZyhleGVjLCAmT1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKQoreworICAgIEJFR0lOKCk7CisgICAg
UkVUVVJOKE9QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDggKzI5LDEwIEBA
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKLSNpbmNsdWRlICJKU0FycmF5Lmgi
CiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC05Nyw2ICs5OSwxMDkgQEAgaW5saW5lIGJvb2wgb3BJbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dQogICAgIHJldHVybiBiYXNlT2JqLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eSk7CiB9CiAK
LX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpDb21tb25TbG93UGF0aHMKK30gLy8gbmFtZXNwYWNlIENv
bW1vblNsb3dQYXRocworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorLy8gQWNjb3JkaW5nIHRvIEMrKyBydWxlcywgYSB0eXBlIHVz
ZWQgZm9yIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mIGZ1bmN0aW9uIHdpdGggQyBsaW5rYWdlIChp
LmUuCisvLyAnZXh0ZXJuICJDIicpIG5lZWRzIHRvIGJlIFBPRDsgaGVuY2UgcHV0dGluZyBhbnkg
Y29uc3RydWN0b3JzIGludG8gaXQgY291bGQgY2F1c2UgZWl0aGVyIGNvbXBpbGVyCisvLyB3YXJu
aW5ncywgb3Igd29yc2UsIGEgY2hhbmdlIGluIHRoZSBBQkkgdXNlZCB0byByZXR1cm4gdGhlc2Ug
dHlwZXMuCitzdHJ1Y3QgU2xvd1BhdGhSZXR1cm5UeXBlIHsKKyAgICB2b2lkKiBhOworICAgIEV4
ZWNTdGF0ZSogYjsKK307CisKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0
KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKK3sKKyAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0
OworICAgIHJlc3VsdC5hID0gYTsKKyAgICByZXN1bHQuYiA9IGI7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBiKQoreworICAgIGEgPSByZXN1bHQuYTsKKyAgICBi
ID0gcmVzdWx0LmI7Cit9CisKKyNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCit0eXBlZGVmIGlu
dDY0X3QgU2xvd1BhdGhSZXR1cm5UeXBlOworCit0eXBlZGVmIHVuaW9uIHsKKyAgICBzdHJ1Y3Qg
eworICAgICAgICB2b2lkKiBhOworICAgICAgICBFeGVjU3RhdGUqIGI7CisgICAgfSBwYWlyOwor
ICAgIGludDY0X3QgaTsKK30gU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2Rpbmc7CisKK2lubGluZSBT
bG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKK3sK
KyAgICBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OworICAgIHUucGFpci5hID0gYTsKKyAg
ICB1LnBhaXIuYiA9IGI7CisgICAgcmV0dXJuIHUuaTsKK30KKworaW5saW5lIHZvaWQgZGVjb2Rl
UmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBi
KQoreworICAgIFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7CisgICAgdS5pID0gcmVzdWx0
OworICAgIGEgPSB1LnBhaXIuYTsKKyAgICBiID0gdS5wYWlyLmI7Cit9CisjZW5kaWYgLy8gVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAKKyNkZWZpbmUgU0xPV19QQVRICisgICAgCisjZGVmaW5lIFNM
T1dfUEFUSF9ERUNMKG5hbWUpIFwKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1df
UEFUSCBuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorICAgIAorI2RlZmlu
ZSBTTE9XX1BBVEhfSElEREVOX0RFQ0wobmFtZSkgXAorU0xPV19QQVRIX0RFQ0wobmFtZSkgV1RG
X0lOVEVSTkFMCisgICAgCitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJp
dHlDaGVjayk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0
eUNoZWNrKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50
cyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKK1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX25vdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VxKTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmVxKTsKK1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfc3RyaWN0ZXEpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uc3RyaWN0ZXEpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sZXNzKTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbGVzc2VxKTsKK1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfZ3JlYXRlcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dyZWF0ZXJlcSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luYyk7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlYyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3RvX251bWJlcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
Z2F0ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2FkZCk7CitTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX211bCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3N1Yik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Rpdik7CitTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX21vZCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2xzaGlmdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3JzaGlmdCk7
CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpOworU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9iaXRvcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CitT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3R5cGVvZik7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2lzX29iamVjdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2lzX2Z1bmN0aW9uKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW4pOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKK1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfc3RyY2F0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfdG9fcHJpbWl0aXZlKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiAKICNlbmRpZiAvLyBDb21tb25TbG93UGF0aHNf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2
aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAgaW5saW5lIHVpbnQzMl90IHRv
VUludDMyKGRvdWJsZSBudW1iZXIpCiBjbGFzcyBKU1ZhbHVlIHsKICAgICBmcmllbmQgc3RydWN0
IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0czsKICAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZy
aWVuZCBjbGFzcyBKSVRTbG93UGF0aENhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJzOwog
ICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViQ2FsbDsKICAgICBmcmllbmQgY2xhc3MgSlNJbnRlcmZh
Y2VKSVQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203617</attachid>
            <date>2013-06-03 11:56:30 -0700</date>
            <delta_ts>2013-06-03 13:15:20 -0700</delta_ts>
            <desc>Patch with redundant hit stubs removed</desc>
            <filename>116889-3.patch</filename>
            <type>text/plain</type>
            <size>141289</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxMTIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxMy0wNi0wMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBmb3VydGhUaWVyOiBUaGUgYmFzZWxpbmUgaml0IGFuZCBMTGludCBzaG91bGQgdXNlIGNv
bW1vbiBzbG93IHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTY4ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNb3ZlZCB0aGUgbGxpbnRfc2xvd19wYXRocyB0aGF0IHJldHVybiBKU1ZhbHVlIGFs
b25nIHdpdGggc2V2ZXJhbCBvdGhlcnMgdG8gQ29tbW9uU2xvd1BhdGhzLmNwcC4KKyAgICAgICAg
RWxpbWluYXRlZCB0aGUgcmVsYXRlZCBKSVQgc3R1YnMuICBDaGFuZ2VzIHRoZSBiYXNlbGluZSBK
SVQgdG8gY2FsbCB0aGVzZSBuZXcgY29tbW9uIHN0dWJzLgorICAgICAgICBBZGRlZCBhIHNpbXBs
ZSBzbG93IHBhdGggY2FsbCBjbGFzcyB0aGF0IHVzZXMgYXJndW1lbnQgcmVnaXN0ZXJzIG9yIHRo
ZSBzdGFjayBpbnN0ZWFkIG9mCisgICAgICAgIEpJVFN0YWNrRnJhbWUuICBDaGFuZ2VzIHRoZSBl
eGNlcHRpb24gbWVjaGFuaXNtIGZvciB0byBjaGVjayBmb3IgYW4gZXhjZXB0aW9uIGFmdGVyIG1h
a2luZworICAgICAgICBhIHNsb3dwYXRoIGNhbGwgaW5zdGVhZCBvZiByZXR1cm5pbmcgdG8gdGhl
IGhhbmRsZXIgZGlyZWN0bHkgZm9ybSB0aGUgc2xvd3BhdGggZnVuY3Rpb24uCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9yc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Vy
c2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2JpdGFuZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9kZWMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX21vZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVCaW5h
cnlBcml0aE9wU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX211bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGl2KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgorICAgICAgICAqIGppdC9KSVRBcml0
aG1ldGljMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0UmlnaHRTaGlmdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2JpdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9iaXR4b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVjKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX211bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OmdldEV4Y2VwdGlvbkxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1Rocm93KToKKyAgICAgICAgKEpTQzo6aml0VGhyb3dOZXcpOgorICAgICAgICAq
IGppdC9KSVRFeGNlcHRpb25zLmg6CisgICAgICAgIChFeGNlcHRpb25IYW5kbGVyKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zdHJj
YXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X25vdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0eG9yKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9iaXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3Bfc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25zdHJpY3Rl
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zdHJjYXQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX25vdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3Bfc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25zdHJpY3RlcSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90
b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlf
dmFsKToKKyAgICAgICAgKiBqaXQvSklUU3R1YkNhbGwuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1
YkNhbGw6OkpJVFN0dWJDYWxsKToKKyAgICAgICAgKEpJVFN0dWJDYWxsKToKKyAgICAgICAgKEpT
Qzo6SklUU3R1YkNhbGw6OnNldFBDKToKKyAgICAgICAgKEpTQzo6SklUU3R1YkNhbGw6OnNldFJl
dHVyblR5cGVJbnQpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6
OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6Y3RpX3ZtX3Rocm93X3Nsb3dw
YXRoKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBqaXQvSklUU3R1YnNB
Uk0uaDoKKyAgICAgICAgKiBqaXQvSklUU3R1YnNBUk12Ny5oOgorICAgICAgICAqIGppdC9KSVRT
dHVic01JUFMuaDoKKyAgICAgICAgKiBqaXQvSklUU3R1YnNTSDQuaDoKKyAgICAgICAgKiBqaXQv
SklUU3R1YnNYODYuaDoKKyAgICAgICAgKiBqaXQvSklUU3R1YnNYODZfNjQuaDoKKyAgICAgICAg
KiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKEpTSW50ZXJmYWNlSklUKToKKyAgICAg
ICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6IEFkZGVkLgorICAgICAgICAoSklUU2xvd1BhdGhDYWxs
KToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpKSVRTbG93UGF0aENhbGwpOgorICAg
ICAgICAoSlNDOjpKSVRTbG93UGF0aENhbGw6OmNhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dl
bmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAg
ICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAg
ICAgKFNsb3dQYXRoUmV0dXJuVHlwZSk6CisgICAgICAgIChKU0M6OmVuY29kZVJlc3VsdCk6Cisg
ICAgICAgIChKU0M6OmRlY29kZVJlc3VsdCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
Lmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAxMy0wNi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGZvdXJ0aFRpZXI6IEdldCByaWQgb2YgU3RydWN0dXJl
U3R1YkluZm86OmJ5dGVjb2RlSW5kZXgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjEyLDYgKzYx
Miw3IEBACiAJCTY1MTEyMkZEMTQwNDZBNEMwMDJCMTAxRCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9
OwogCQk2NTExMjJGRTE0MDQ2QTRDMDAyQjEwMUQgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUw
MEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwogCQk2NTExMjMwNzE0MDQ2QjBBMDAyQjEw
MUQgLyogdGVzdFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi87
IH07CisJCTY1MTk5NzZFMTc0NDNENjgwMDczOTNDRSAvKiBDb21tb25TbG93UGF0aHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxOTk3NkMxNzQ0
MzU0ODAwNzM5M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi87IH07CiAJCTY1MzAzRDY0MTQ0
N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJU
b2tlbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFB
OTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovOyB9OwogCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0
QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTgx
LDYgKzE1ODIsNyBAQAogCQk2NTA3RDI5NzBFODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVn
RXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RSZWdFeHAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEw
MUQgLyogdGVzdFJlZ0V4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gdGVzdFJlZ0V4cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJNjUxOTk3NkMxNzQ0MzU0ODAwNzM5M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb21tb25TbG93UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NTQwMEMwRjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1l
QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5
TmFtZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MDBDMTAwQTY5
QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTU5MCw2ICsxNTkyLDcgQEAKIAkJNjU2MjFFNkMwODlFODU5NzAwNzYwRjM1IC8q
IFByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBp
bGF0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0
Q29tcGlsYXRpb25JbmZvLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQg
LyogVW51c2VkUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbnVz
ZWRQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QUM4M0YxMTc0QzE3
QUUwMDExRDhBQiAvKiBTbG93UGF0aENhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xvd1BhdGhDYWxs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VF
NiAvKiBQcm90ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb3RlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB9OwogCQk2NUM3QTE3MTBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dyYXBwZXJPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUM3QTE3MjBBOEVBQUNCMDBGQTM3RUEg
LyogSlNXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dyYXBwZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyODUsNiAr
MjI4OCw3IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY1QUM4M0YxMTc0QzE3QUUwMDEx
RDhBQiAvKiBTbG93UGF0aENhbGwuaCAqLywKIAkJCQkwRjczRDdBQjE2NUExNDJBMDBBQ0FCNzEg
LyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8sCiAJCQkJMEY3M0Q3QUMxNjVBMTQyQTAw
QUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFC
MTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTI2MTMsNiArMjYxNyw3
IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTE5OTc2QzE3NDQzNTQ4MDA3Mzkz
Q0UgLyogQ29tbW9uU2xvd1BhdGhzLmNwcCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2
NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFy
Z0xpc3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNw
cCAqLywKQEAgLTQxMDgsNiArNDExMyw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk2
NTE5OTc2RTE3NDQzRDY4MDA3MzkzQ0UgLyogQ29tbW9uU2xvd1BhdGhzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1bWVudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZp
c2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
U1NFMkNoZWNrUwogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRU
eXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxs
LmgiCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xNTYsMzkgKzE1NywzMyBAQCB2b2lkIEpJVDo6ZW1pdFRp
bWVvdXRDaGVjaygpCiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI2RlZmluZSBERUZJTkVfQklO
QVJZX09QKG5hbWUpIFwKLSAgICBjYXNlIG5hbWU6IHsgXAotICAgICAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBjdGlfIyNuYW1lKTsgXAotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsgXAotICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsgXAotICAgICAgICBz
dHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOyBcCi0gICAgICAg
IE5FWFRfT1BDT0RFKG5hbWUpOyBcCisgICAgY2FzZSBvcF8jI25hbWU6IHsgXAorICAgICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAorICAgICAg
ICBORVhUX09QQ09ERShvcF8jI25hbWUpOyBcCiAgICAgfQogCiAjZGVmaW5lIERFRklORV9VTkFS
WV9PUChuYW1lKSBcCi0gICAgY2FzZSBuYW1lOiB7IFwKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpXyMjbmFtZSk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7IFwKLSAgICAgICAgc3R1YkNhbGwuY2Fs
bChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsgXAotICAgICAgICBORVhUX09QQ09E
RShuYW1lKTsgXAorICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKKyAgICAgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25h
bWUpOyBcCisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKKyAgICAgICAgTkVYVF9PUENP
REUob3BfIyNuYW1lKTsgXAogICAgIH0KIAogI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAog
I2RlZmluZSBERUZJTkVfQklOQVJZX09QKG5hbWUpIFwKLSAgICBjYXNlIG5hbWU6IHsgXAotICAg
ICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfIyNuYW1lKTsgXAotICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
Mik7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCwgcmVnVDIpOyBcCi0gICAgICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7IFwKLSAgICAgICAgTkVYVF9PUENPREUobmFtZSk7IFwKKyAg
ICBjYXNlIG9wXyMjbmFtZTogeyBcCisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCisgICAgICAgIE5FWFRfT1BDT0RFKG9wXyMjbmFtZSk7
IFwKICAgICB9CiAKICNkZWZpbmUgREVGSU5FX1VOQVJZX09QKG5hbWUpIFwKLSAgICBjYXNlIG5h
bWU6IHsgXAotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfIyNuYW1lKTsg
XAotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kLCByZWdUMik7IFwKLSAgICAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsgXAotICAgICAgICBORVhUX09QQ09ERShuYW1lKTsgXAorICAgIGNh
c2Ugb3BfIyNuYW1lOiB7IFwKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAgICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7IFwKKyAgICAgICAgTkVYVF9PUENPREUob3BfIyNuYW1lKTsgXAog
ICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkBAIC0yNDQsMTUgKzIzOSwxNSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIH0KIAogICAgICAg
ICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfZGVsX2J5
X3ZhbCkKLSAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9pbikKLSAgICAgICAgREVGSU5FX0JJ
TkFSWV9PUChvcF9sZXNzKQotICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2xlc3NlcSkKLSAg
ICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9ncmVhdGVyKQotICAgICAgICBERUZJTkVfQklOQVJZ
X09QKG9wX2dyZWF0ZXJlcSkKLSAgICAgICAgREVGSU5FX1VOQVJZX09QKG9wX2lzX2Z1bmN0aW9u
KQotICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfb2JqZWN0KQotICAgICAgICBERUZJTkVf
VU5BUllfT1Aob3BfdHlwZW9mKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKGRlbF9ieV92YWwp
CisgICAgICAgIERFRklORV9CSU5BUllfT1AoaW4pCisgICAgICAgIERFRklORV9CSU5BUllfT1Ao
bGVzcykKKyAgICAgICAgREVGSU5FX0JJTkFSWV9PUChsZXNzZXEpCisgICAgICAgIERFRklORV9C
SU5BUllfT1AoZ3JlYXRlcikKKyAgICAgICAgREVGSU5FX0JJTkFSWV9PUChncmVhdGVyZXEpCisg
ICAgICAgIERFRklORV9VTkFSWV9PUChpc19mdW5jdGlvbikKKyAgICAgICAgREVGSU5FX1VOQVJZ
X09QKGlzX29iamVjdCkKKyAgICAgICAgREVGSU5FX1VOQVJZX09QKHR5cGVvZikKIAogICAgICAg
ICBERUZJTkVfT1Aob3BfYWRkKQogICAgICAgICBERUZJTkVfT1Aob3BfYml0YW5kKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNiArMjgzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgdm9pZCBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoQ29kZUJs
b2NrKiBjb2RlYmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgRnVuY3Rpb25Q
dHIgbmV3Q2FsbGVlRnVuY3Rpb24pOwogCiAgICAgY2xhc3MgSklUIDogcHJpdmF0ZSBKU0ludGVy
ZmFjZUpJVCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVRTbG93UGF0aENhbGw7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVRTdHViQ2FsbDsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm87CiAKQEAgLTYwOCw3ICs2MDksNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUoUmVnaXN0ZXJJRCByZWcp
OwogICAgICAgICB2b2lkIGNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlELCB1bnNpZ25lZCBk
c3QsIHVuc2lnbmVkIHNyYzEsIHVuc2lnbmVkIHNyYzIsIE9wZXJhbmRUeXBlcyBvcGkpOwotICAg
ICAgICB2b2lkIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoT3Bjb2RlSUQsIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIHNyYzEsIHVu
c2lnbmVkIHNyYzIsIE9wZXJhbmRUeXBlcywgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2Fz
ZSwgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSk7CisgICAgICAgIHZvaWQgY29tcGls
ZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShJbnN0cnVjdGlvbiosIE9wY29kZUlELCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBzcmMxLCB1bnNp
Z25lZCBzcmMyLCBPcGVyYW5kVHlwZXMsIGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2Us
IGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOwogCiAgICAgICAgIHZvaWQgY29tcGls
ZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlVlJlZywgSWRlbnRpZmllciopOwogICAgICAgICB2b2lk
IGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBiYXNlVlJlZywgSWRl
bnRpZmllciosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHJldmlz
aW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29s
LmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVk
ZSA8c3RkaW8uaD4KQEAgLTgwLDkgKzgxLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0
ZShJbnN0cnVjdGlvbgogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gMHg3ZmZmZmZmZiBjaGVj
awogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG91YmxlIGNoZWNrCiAKLSAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbmVnYXRlKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChyZWdUMSwgcmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X25lZ2F0ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJl
Z1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9jb21w
YXJlQW5kSnVtcChPcGNvZGVJRCBvcGNvZGUsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1
bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQpAQCAtMTk4LDEw
ICsxOTksOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KEluc3RydWN0aW9uCiAgICAg
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7IC8vIGludDMyIGNoZWNrCiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfbHNoaWZ0KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfbHNoaWZ0KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwg
cmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIFJpZ2h0U2hpZnQgKD4+
KSBhbmQgVW5zaWduZWRSaWdodFNoaWZ0ICg+Pj4pIGhlbHBlcgpAQCAtMjk2LDEwICsyOTYsOSBA
QCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjCiAgICAgICAgICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7IC8vIENhbid0IHJlcHJlc2VudCB1bnNpZ25lZCByZXN1bHQgYXMg
YW4gaW1tZWRpYXRlCiAgICAgfQogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgaXNV
bnNpZ25lZCA/IGN0aV9vcF91cnNoaWZ0IDogY3RpX29wX3JzaGlmdCk7Ci0gICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0
dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgaXNVbnNpZ25lZCA/IHNsb3dfcGF0aF91cnNoaWZ0IDogc2xv
d19wYXRoX3JzaGlmdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChk
c3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAvLyBSaWdodFNoaWZ0
ICg+PikKQEAgLTM2MSwxMCArMzYwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdGFuZChJ
bnN0cnVjdGlvbgogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCi0gICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX2JpdGFuZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
b3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwo
ZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2JpdGFuZCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAg
ICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAv
LyBCaXRPciAofCkKQEAgLTQwMiwxMCArNDAwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Jp
dG9yKEluc3RydWN0aW9uKgogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNo
ZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCi0gICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2JpdG9yKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwu
Y2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfYml0b3IpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0K
IAogLy8gQml0WG9yICheKQpAQCAtNDQzLDEwICs0NDAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfYml0eG9yKEluc3RydWN0aW9uCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50
MzIgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAKLSAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0eG9yKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1
YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYml0eG9yKTsKKyAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rl
cik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtNDY3LDkgKzQ2Myw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbmMoSW5z
dHJ1Y3Rpb24qIGMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBvdmVyZmxvdyBjaGVjawogCi0gICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX2luYyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3Jj
RHN0KTsKLSAgICBzdHViQ2FsbC5jYWxsKHNyY0RzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9pbmMpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoc3JjRHN0LCByZWdUMSwgcmVnVDAs
IGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC00OTAsOSArNDg2LDkgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2RlYyhJbnN0cnVjdGlvbiogYwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
aW50MzIgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG92ZXJmbG93IGNoZWNrCiAK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZGVjKTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChzcmNEc3QpOwotICAgIHN0dWJDYWxsLmNhbGwoc3JjRHN0KTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX2RlYyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChzcmNE
c3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAvLyBBZGRpdGlvbiAo
KykKQEAgLTUwNiwxMCArNTAyLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0aW9u
KiBjdXJyZQogCiAgICAgaWYgKCF0eXBlcy5maXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8fCAhdHlw
ZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigpKSB7CiAgICAgICAgIGFkZFNsb3dDYXNlKCk7Ci0g
ICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9hZGQpOwotICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChv
cDIpOwotICAgICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYWRkKTsK
KyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICAgICAgZW1pdExvYWQoZHN0LCByZWdU
MSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjExLDEwICs2MDYsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYWRkKEluc3RydWN0aW9u
KiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfYWRkKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
YWRkKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEs
IHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIFN1YnRyYWN0aW9uICgtKQpAQCAt
Njg5LDcgKzY4Myw2IEBAIHZvaWQgSklUOjplbWl0U3ViMzJDb25zdGFudCh1bnNpZ25lZCBkc3QK
IHZvaWQgSklUOjplbWl0U2xvd19vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25l
ZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9w
MSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgb3AyID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMg
PSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7
CiAKQEAgLTcxNSwxMCArNzA4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N1YihJbnN0cnVj
dGlvbiogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX3N1Yik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX3N1Yik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJl
Z1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEJpbmFy
eURvdWJsZU9wKE9wY29kZUlEIG9wY29kZUlELCB1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wMSwg
dW5zaWduZWQgb3AyLCBPcGVyYW5kVHlwZXMgdHlwZXMsIEp1bXBMaXN0JiBub3RJbnQzMk9wMSwg
SnVtcExpc3QmIG5vdEludDMyT3AyLCBib29sIG9wMUlzSW5SZWdpc3RlcnMsIGJvb2wgb3AySXNJ
blJlZ2lzdGVycykKQEAgLTEwMjIsMTEgKzEwMTQsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bXVsKEluc3RydWN0aW9uKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBMYWJlbCBqaXRTdHVi
Q2FsbCh0aGlzKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbXVsKTsK
LSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KG9wMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbXVsKTsKKyAgICBz
bG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxs
RnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIERpdmlzaW9uICgvKQpAQCAtMTA5Nyw4ICsxMDg3LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KEluc3RydWN0aW9uKiBjdXJyZQogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOworCiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5
cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYg
KCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKQEAgLTExMTMsMTAgKzExMDIsOSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZGl2KTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1
YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGl2KTsKKyAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7
CiB9CiAKIC8vIE1vZCAoJSkKQEAgLTExNTIsMTAgKzExNDAsOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9tb2QoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgbnVtZXJhdG9yUG9zaXRpdmUubGluayh0aGlz
KTsKICAgICBlbWl0U3RvcmVJbnQzMihkc3QsIHJlZ1QxLCAob3AxID09IGRzdCB8fCBvcDIgPT0g
ZHN0KSk7CiAjZWxzZQotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9tb2Qp
OwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDAs
IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICNlbmRpZgogfQogCkBAIC0xMTYzLDE3ICsxMTUwLDE0IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoSW5zdHJ1Y3Rpb24qIGMKIHsKICNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X21vZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21v
ZCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChyZXN1bHQsIHJlZ1Qx
LCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3Vy
cmVudEluc3RydWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oaXRlcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHJldmlzaW9uIDE1MDg0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNs
b3dQYXRoQ2FsbC5oIgogCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0y
MTksMTQgKzIyMCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qIGN1
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1
bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2ln
bmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIDB4N2ZmZmZmZmYgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7IC8vIGRvdWJsZSBjaGVjawogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX25lZ2F0ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJD
YWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25lZ2F0ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTI0OSwxNyArMjUwLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2xzaGlmdChJbnN0cnVjdGlv
biogY3UKIHZvaWQgSklUOjplbWl0U2xvd19vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAg
IHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5z
aWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIFVOVVNF
RF9QQVJBTShvcDEpOwotICAgIFVOVVNFRF9QQVJBTShvcDIpOwogICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3RpX29wX2xzaGlmdCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QyKTsKLSAgICBzdHViQ2FsbC5jYWxsKHJlc3Vs
dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9sc2hpZnQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zMDMsMzEg
KzI5OSwyNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcnNoaWZ0KEluc3RydWN0aW9uCiAgICAg
dW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICB1bnNp
Z25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3JzaGlmdCk7CisgICAgVU5VU0VEX1BBUkFNKG9w
MSk7CiAKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKQogICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyLCByZWdUMik7Ci0gICAgfSBlbHNlIHsKKworICAg
IGVsc2UgewogICAgICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSkgewog
ICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgICAgICAgICAgLy8g
V2UncmUgcmVsb2FkaW5nIG9wMSB0byByZWdUMCBhcyB3ZSBjYW4gbm8gbG9uZ2VyIGd1YXJhbnRl
ZSB0aGF0Ci0gICAgICAgICAgICAvLyB3ZSBoYXZlIG5vdCBtdW5nZWQgdGhlIG9wZXJhbmQuICBJ
dCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gc2hpZnRlZAotICAgICAgICAgICAgLy8gY29ycmVjdGx5
LCBidXQgaXQgc3RpbGwgd2lsbCBub3QgaGF2ZSBiZWVuIHRhZ2dlZC4KLSAgICAgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVnVDApOwotICAgICAgICAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQocmVnVDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgICAgICAgICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgICAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3R1YkNhbGwuY2FsbChyZXN1
bHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfcnNoaWZ0KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX3Vyc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTQxOCwx
MCArNDA4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Vyc2hpZnQoSW5zdHJ1Y3RpbwogICAg
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIENhbid0IHJlcHJlc2VudCB1bnNpZ25lZCByZXN1
bHQgYXMgYW4gaW1tZWRpYXRlCiAgICAgfQogICAgIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF91cnNoaWZ0KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJl
Z1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIsIHJlZ1QxKTsKLSAgICBzdHViQ2Fs
bC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF91cnNoaWZ0KTsKKyAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVk
IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKQEAg
LTYwNywyNiArNTk2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2JpdGFuZChJbnN0cnVjdGlvbiog
Y3UKIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1
bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVu
c2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWdu
ZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkg
ewotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0YW5kKTsKLSAg
ICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdUMik7Ci0gICAgICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICAgICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOwotICAg
IH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgewotICAgICAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0YW5kKTsKLSAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChv
cDIsIHJlZ1QyKTsKLSAgICAgICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXRhbmQpOwotICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJlZ1QyKTsKLSAgICAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQocmVnVDEpOwotICAgICAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7Ci0gICAg
fQorCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9iaXRhbmQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02NDQsMTMgKzYx
OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5jKEluc3RydWN0aW9uKiBjCiB7CiAgICAg
dW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAotICAg
IEp1bXAgbm90SW1tID0gZ2V0U2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2luYyk7CisgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDAp
OwotICAgIG5vdEltbS5saW5rKHRoaXMpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9pbmMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHVi
Q2FsbC5jYWxsKHNyY0RzdCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjY4LDEzICs2NDEsMTEgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2RlYyhJbnN0cnVjdGlvbiogYwogewogICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKLSAgICBKdW1wIG5vdEltbSA9IGdldFNs
b3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNEc3QsIHJlZ1QwKTsKLSAgICBub3RJbW0ubGluayh0
aGlzKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZGVjKTsKLSAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuY2FsbChzcmNEc3QpOwog
fQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQkVHSU46IE9QX01PRCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTcxOSwxMCArNjkwLDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX21vZChJbnN0cnVjdGlvbiogYwogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9tb2QpOwotICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KHJlZ1QzKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMik7Ci0gICAg
c3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBzbG93UGF0aENh
bGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9
CiAKICNlbHNlIC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCkBAIC03MzMsMTAgKzcwMywxMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgdW5zaWduZWQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCBvcDIg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX21vZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCBy
ZWdUMik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyLCByZWdUMik7Ci0gICAgc3R1YkNh
bGwuY2FsbChyZXN1bHQpOworICAgIFVOVVNFRF9QQVJBTShvcDEpOworICAgIFVOVVNFRF9QQVJB
TShvcDIpOworCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX21vZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNzk2LDcgKzc2OCw3IEBAIHZvaWQg
SklUOjpjb21waWxlQmluYXJ5QXJpdGhPcChPcGNvZGVJRCAKICAgICBlbWl0RmFzdEFyaXRoSW50
VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlQmluYXJ5
QXJpdGhPcFNsb3dDYXNlKE9wY29kZUlEIG9wY29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCB1bnNpZ25lZCByZXN1bHQsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQg
b3AyLCBPcGVyYW5kVHlwZXMgdHlwZXMsIGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2Us
IGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpCit2b2lkIEpJVDo6Y29tcGlsZUJpbmFy
eUFyaXRoT3BTbG93Q2FzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJ
RCBvcGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5zaWdu
ZWQgcmVzdWx0LCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgT3BlcmFuZFR5cGVzIHR5cGVz
LCBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBib29sIG9wMkhhc0ltbWVkaWF0ZUlu
dEZhc3RDYXNlKQogewogICAgIC8vIFdlIGFzc3VtZSB0aGF0IHN1YnRyYWN0aW5nIFRhZ1R5cGVO
dW1iZXIgaXMgZXF1aXZhbGVudCB0byBhZGRpbmcgRG91YmxlRW5jb2RlT2Zmc2V0LgogICAgIENP
TVBJTEVfQVNTRVJUKCgoVGFnVHlwZU51bWJlciArIERvdWJsZUVuY29kZU9mZnNldCkgPT0gMCks
IFRhZ1R5cGVOdW1iZXJfUExVU19Eb3VibGVFbmNvZGVPZmZzZXRfRVFVQUxTXzApOwpAQCAtODE1
LDE3ICs3ODcsMTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoTwog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gSW50ZWdlciBvdmVyZmxvdyBjYXNlIC0gd2UgY291
bGQgaGFuZGxlIHRoaXMgaW4gSklUIGNvZGUsIGJ1dCB0aGlzIGlzIGxpa2VseSByYXJlLgogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9tdWwgJiYgIW9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlICYm
ICFvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSkgLy8gb3BfbXVsIGhhcyBhbiBleHRyYSBzbG93
IGNhc2UgdG8gaGFuZGxlIDAgKiBuZWdhdGl2ZSBudW1iZXIuCiAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOwogCiAgICAg
TGFiZWwgc3R1YkZ1bmN0aW9uQ2FsbCh0aGlzKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBvcGNvZGVJRCA9PSBvcF9hZGQgPyBjdGlfb3BfYWRkIDogb3Bjb2RlSUQgPT0gb3Bfc3Vi
ID8gY3RpX29wX3N1YiA6IGN0aV9vcF9tdWwpOwotICAgIGlmIChvcDFIYXNJbW1lZGlhdGVJbnRG
YXN0Q2FzZSB8fCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSkgewotICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOwotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wMiwgcmVnVDEpOwotICAgIH0KLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7
Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwocmVz
dWx0KTsKKworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBvcGNvZGVJRCA9PSBvcF9hZGQgPyBzbG93X3BhdGhfYWRkIDogb3Bjb2RlSUQg
PT0gb3Bfc3ViID8gc2xvd19wYXRoX3N1YiA6IHNsb3dfcGF0aF9tdWwpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsK
ICAgICBKdW1wIGVuZCA9IGp1bXAoKTsKIAogICAgIGlmIChvcDFIYXNJbW1lZGlhdGVJbnRGYXN0
Q2FzZSkgewpAQCAtODkzLDExICs4NjAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoSW5zdHJ1
Y3Rpb24qIGN1cnJlCiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9t
SW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYgKCF0eXBlcy5m
aXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8fCAhdHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigp
KSB7Ci0gICAgICAgIGFkZFNsb3dDYXNlKCk7Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9hZGQpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJl
Z1QyKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyLCByZWdUMik7Ci0gICAgICAg
IHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hZGQpOworICAgICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MzEsNyAr
ODk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiogYwogCiAgICAg
Ym9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9IGlzT3BlcmFuZENvbnN0YW50SW1tZWRp
YXRlSW50KG9wMSk7CiAgICAgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9ICFvcDFI
YXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSAmJiBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChv
cDIpOwotICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2Uob3BfYWRkLCBpdGVyLCByZXN1
bHQsIG9wMSwgb3AyLCB0eXBlcywgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIG9wMkhhc0lt
bWVkaWF0ZUludEZhc3RDYXNlKTsKKyAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKGN1
cnJlbnRJbnN0cnVjdGlvbiwgb3BfYWRkLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywg
b3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC05NzYsNyArOTQwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX211bChJbnN0cnVj
dGlvbiogYwogCiAgICAgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9IGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRl
SW50KG9wMSkgPiAwOwogICAgIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSAhb3Ax
SGFzSW1tZWRpYXRlSW50RmFzdENhc2UgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQo
b3AyKSAmJiBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSA+IDA7Ci0gICAgY29t
cGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShvcF9tdWwsIGl0ZXIsIHJlc3VsdCwgb3AxLCBvcDIs
IHR5cGVzLCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSwgb3AySGFzSW1tZWRpYXRlSW50RmFz
dENhc2UpOworICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoY3VycmVudEluc3RydWN0
aW9uLCBvcF9tdWwsIGl0ZXIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVzLCBvcDFIYXNJbW1lZGlh
dGVJbnRGYXN0Q2FzZSwgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwODIs
MTAgKzEwNDYsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiBjCiAg
ICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgfQogICAgIC8vIFRoZXJlIGlzIGFu
IGV4dHJhIHNsb3cgY2FzZSBmb3IgKG9wMSAqIC1OKSBvciAoLU4gKiBvcDIpLCB0byBjaGVjayBm
b3IgMCBzaW5jZSB0aGlzIHNob3VsZCBwcm9kdWNlIGEgcmVzdWx0IG9mIC0wLgotICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9kaXYpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KG9wMSwgcmVnVDIpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIpOwot
ICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDAp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKQEAgLTExMDYsNyArMTA2OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zdWIoSW5z
dHJ1Y3Rpb24qIGMKICAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAgIGNvbXBpbGVCaW5hcnlBcml0
aE9wU2xvd0Nhc2Uob3Bfc3ViLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgZmFsc2Us
IGZhbHNlKTsKKyAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVj
dGlvbiwgb3Bfc3ViLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgZmFsc2UsIGZhbHNl
KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORDogT1BfQURELCBP
UF9TVUIsIE9QX01VTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTUw
ODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNzQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0YXRp
YyBib29sIGdldEV4Y2VwdGlvbkxvY2F0aW9uKFZNKiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHVuc2lnbmVkJiBieXRlY29kZU9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gMDsKKyAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFzSG9zdENhbGxG
cmFtZUZsYWcoKSk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCkgPyBjYWxsRnJhbWUtPnRydWVDYWxsZXJGcmFtZSgpIDogY2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGJvb2wgY2FsbGZyYW1l
SXNIb3N0ID0gY2FsbGVyRnJhbWUtPmFkZEhvc3RDYWxsRnJhbWVGbGFnKCkgPT0gY2FsbEZyYW1l
LT5jYWxsZXJGcmFtZSgpOworICAgIAorICAgIGlmICghY2FsbEZyYW1lIHx8ICFjYWxsRnJhbWUt
PmNvZGVCbG9jaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShK
SVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAoIWNhbGxGcmFtZS0+aGFzUmV0dXJuUEMoKSkK
KyAgICAgICAgY2FsbGZyYW1lSXNIb3N0ID0gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShERkdf
SklUKQorICAgIGlmIChjYWxsRnJhbWUtPmlzSW5saW5lQ2FsbEZyYW1lKCkpCisgICAgICAgIGNh
bGxmcmFtZUlzSG9zdCA9IGZhbHNlOworI2VuZGlmCisgICAgCisgICAgaWYgKGNhbGxmcmFtZUlz
SG9zdCkgeworICAgICAgICAvLyBEb24ndCBuZWVkIHRvIGRlYWwgd2l0aCBpbmxpbmUgY2FsbGZy
YW1lcyBoZXJlIGFzIGJ5IGRlZmluaXRpb24gd2UgaGF2ZW4ndAorICAgICAgICAvLyBpbmxpbmVk
IGEgY2FsbCB3aXRoIGFuIGludGVydmVuaW5nIG5hdGl2ZSBjYWxsIGZyYW1lLgorI2lmIEVOQUJM
RShKSVQpIHx8IEVOQUJMRShMTElOVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgaWYg
KGNvZGVCbG9jayAmJiBKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBl
KCkpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjb2RlT3JpZ2luSW5kZXggPSBjYWxsRnJhbWUt
PmNvZGVPcmlnaW5JbmRleEZvckRGRygpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmNvZGVPcmlnaW4oY29kZU9yaWdpbkluZGV4KS5ieXRlY29kZUluZGV4OworICAg
ICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsRnJh
bWUtPmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpOworI2VuZGlmCisgICAgfSBlbHNlIHsK
KyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgICAgIGlmIChjYWxsRnJhbWUtPmlzSW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAg
IElubGluZUNhbGxGcmFtZSogaWNmID0gY2FsbEZyYW1lLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAg
ICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gaWNmLT5jYWxsZXIuYnl0ZWNvZGVJbmRleDsKKyAg
ICAgICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUqIHBhcmVudENhbGxGcmFtZSA9IGljZi0+Y2Fs
bGVyLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHBhcmVudENh
bGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBu
ZXdDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihwYXJlbnRDYWxs
RnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG5ld0NvZGVCbG9jayk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5l
d0NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpID4gYnl0ZWNvZGVPZmZzZXQpOworICAgICAg
ICAgICAgICAgIGNvZGVCbG9jayA9IG5ld0NvZGVCbG9jazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmIChjb2RlQmxvY2sgJiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVC
bG9jay0+aml0VHlwZSgpKSkgeworICAgICAgICAgICAgQ29kZU9yaWdpbiBvcmlnaW47CisgICAg
ICAgICAgICBpZiAoIWNvZGVCbG9jay0+Y29kZU9yaWdpbkZvclJldHVybihjYWxsRnJhbWUtPnJl
dHVyblBDKCksIG9yaWdpbikpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gb3JpZ2luLmJ5dGVjb2RlSW5k
ZXg7CisgICAgICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBpY2YgPSBvcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oaWNmLT5leGVjdXRhYmxlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGljZi0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2Rl
Rm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJsb2NrKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPiBi
eXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrID0gbmV3Q29kZUJsb2Nr
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coVk0qIHZtLCBFeGVjU3RhdGUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgdW5zaWduZWQgdlBDSW5kZXgpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoZXhjZXB0aW9uVmFsdWUpOwpAQCAtNTgsMTAgKzEyNiwxOSBAQCBF
eGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhWTSogdm0sIEV4CiAgICAgdm0tPnRhcmdldElu
dGVycHJldGVyUENGb3JUaHJvdyA9IGNhdGNoUENGb3JJbnRlcnByZXRlcjsKICAgICAKICAgICBS
RUxFQVNFX0FTU0VSVChjYXRjaFJvdXRpbmUpOwotICAgIEV4Y2VwdGlvbkhhbmRsZXIgZXhjZXB0
aW9uSGFuZGxlciA9IHsgY2F0Y2hSb3V0aW5lLCBjYWxsRnJhbWUgfTsKKyAgICBFeGNlcHRpb25I
YW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIgPSB7IGNhbGxGcmFtZSwgY2F0Y2hSb3V0aW5lfTsKICAg
ICByZXR1cm4gZXhjZXB0aW9uSGFuZGxlcjsKIH0KIAorRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJv
d05ldyhWTSogdm0sIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVl
KQoreworICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsKKyAgICBpZiAoIWdldEV4Y2Vw
dGlvbkxvY2F0aW9uKHZtLCBjYWxsRnJhbWUsIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSAwOworICAgIAorICAgIHJldHVybiBnZW5lcmljVGhyb3codm0sIGNhbGxG
cmFtZSwgZXhjZXB0aW9uVmFsdWUsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwogRXhjZXB0aW9uSGFu
ZGxlciBqaXRUaHJvdyhWTSogdm0sIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2Vw
dGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7CiAgICAgcmV0dXJu
IGdlbmVyaWNUaHJvdyh2bSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAkocmV2aXNpb24g
MTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxMyBAQCBjbGFzcyBWTTsKIC8vIGZvciB0aGUgdGhy
b3dpbmcgYW5kIGhhbmRsaW5nIGV4Y2VwdGlvbnMuCiAKIHN0cnVjdCBFeGNlcHRpb25IYW5kbGVy
IHsKLSAgICB2b2lkKiBjYXRjaFJvdXRpbmU7CiAgICAgRXhlY1N0YXRlKiBjYWxsRnJhbWU7Cisg
ICAgdm9pZCogY2F0Y2hSb3V0aW5lOwogfTsKIAogRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhy
b3coVk0qLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCB2UENJ
bmRleCk7CiAKK0V4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3dOZXcoVk0qLCBFeGVjU3RhdGUqLCBK
U1ZhbHVlIGV4Y2VwdGlvblZhbHVlKTsKIEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3coVk0qLCBF
eGVjU3RhdGUqLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0
TG9jYXRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE1MDg0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgor
I2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTY3LDE0
ICsxNjgsMTAgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgogCiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bS0+ZXhjZXB0aW9uTG9jYXRpb24pLCByZWdUMik7CiAg
ICAgc3RvcmVQdHIocmVnVDEsIHJlZ1QyKTsKLSAgICBwb2tlKGNhbGxGcmFtZVJlZ2lzdGVyLCBP
QkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgLyBzaXplb2Yo
dm9pZCopKTsKLSAgICAKICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1fdm0tPnRv
cENhbGxGcmFtZSk7Ci0gICAgLy8gU2V0IHRoZSByZXR1cm4gYWRkcmVzcy4KLSAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIoY3RpVk1UaHJvd1RyYW1wb2xpbmUpLnZhbHVlKCkpLCBy
ZWdUMSk7Ci0gICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDEpOwogCi0g
ICAgcmV0KCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKEZ1bmN0aW9uUHRyKGN0aVZNVGhyb3dU
cmFtcG9saW5lU2xvd3BhdGgpLnZhbHVlKCkpLCByZWdUMSk7CisgICAganVtcChyZWdUMSk7CiAK
ICAgICAvLyBBbGwgdHJhbXBvbGluZXMgY29uc3RydWN0ZWQhIGNvcHkgdGhlIGNvZGUsIGxpbmsg
dXAgY2FsbHMsIGFuZCBzZXQgdGhlIHBvaW50ZXJzIG9uIHRoZSBNYWNoaW5lIG9iamVjdC4KICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBHTE9CQUxfVEhVTktfSUQpOwpA
QCAtNDMzLDE3ICs0MzAsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3ByaW1pdGl2ZShJ
bnN0cgogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX3RvX3ByaW1pdGl2ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDEsIHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19w
cmltaXRpdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCBy
ZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
c3RyY2F0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3N0cmNhdCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdHJjYXQpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTQ3MSwxMyArNDY2LDEyIEBAIHZvaWQgSklUOjplbWl0
X29wX25vdChJbnN0cnVjdGlvbiogY3VycmUKIHZvaWQgSklUOjplbWl0U2xvd19vcF9ub3QoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3Bfbm90KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChzcmMpOwot
ICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25vdCk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVn
aXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKQEAgLTc1MCwxNyArNzQ0LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3N0
cmljdGVxKEluc3RydWN0aW9uKiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9zdHJpY3RlcShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9zdHJpY3RlcSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMSk7Ci0gICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfc3RyaWN0ZXEpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExv
YWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfbnN0cmljdGVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC03
NzEsMTcgKzc2MiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24q
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
dW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNp
Z25lZCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25l
ZCBzcmMyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25zdHJpY3RlcSk7
Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoc3JjMik7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbnN0cmljdGVx
KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJl
Z1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDEsOSArOTg5LDkgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3RvX251bWJlcihJbnN0cnVjdAogCiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX251bWJl
cik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAgICBzdHViQ2Fs
bC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19udW1iZXIpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVy
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF9uYW1lX3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMTM3LDkgKzExMjUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jcmVhdGVfYXJndW1lbnRzKEluc3RyCiAKICAgICBKdW1wIGFyZ3NDcmVhdGVkID0gYnJhbmNo
MzIoTm90RXF1YWwsIHRhZ0Zvcihkc3QpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1
ZVRhZykpOwogCi0gICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMp
LmNhbGwoKTsKLSAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwotICAgIGVtaXRTdG9y
ZSh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoZHN0KSwgcmVnVDEsIHJlZ1QwKTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAg
ICBhcmdzQ3JlYXRlZC5saW5rKHRoaXMpOwogfQpAQCAtMTE4Myw5ICsxMTcwLDggQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydQogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhpcyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1
c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKLSAgICBzdHViQ2Fs
bC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfY3Jl
YXRlX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEyMDUsMTMg
KzExOTEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogCiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2ln
bmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0KICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF90b190aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChyZWdUMywgcmVnVDIpOwotICAgIHN0dWJDYWxsLmNhbGwodGhpc1JlZ2lzdGVyKTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3RvX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX3Byb2ZpbGVfd2lsbF9jYWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0xMjgyLDkgKzEyNjUsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfYXJndW1lbnRz
KS5jYWxsKCk7Ci0gICAgZW1pdFN0b3JlKGFyZ3VtZW50cywgcmVnVDEsIHJlZ1QwKTsKLSAgICBl
bWl0U3RvcmUodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cyksIHJlZ1QxLCBy
ZWdUMCk7CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiAgICAgCiAgICAgc2tpcEFyZ3VtZW50c0NyZWF0aW9uLmxpbmsodGhpcyk7CiAg
ICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV92YWxfZ2VuZXJpYyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9u
IDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM2
MCwxMCArMzYxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJjYXQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfc3RyY2F0KTsKLSAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3N0cmNhdCk7CisgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW5z
dXJlX3Byb3BlcnR5X2V4aXN0cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAt
OTM4LDkgKzkzOCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnUK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9uIHBy
b2ZpbGUKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCiAKLSAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRlX3RoaXMpOwotICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgp
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3dpbGxfY2FsbChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtOTY0LDI3ICs5NjQsMjggQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1Y3RpbwogewogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX3RvX3RoaXMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1Qx
KTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwor
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF90b190aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVn
VDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX3RvX3ByaW1pdGl2ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF90b19wcmltaXRpdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9ub3QoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgeG9yNjQoVHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVnVDApOwotICAgIEpJVFN0dWJDYWxs
IHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9ub3QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJl
Z1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OworICAgIAorICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfbm90KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CkBAIC0xMDA4LDE5ICsxMDA5LDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qdHJ1ZShJbnN0
cnVjdGlvbioKIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXR4b3IoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wX2JpdHhvcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYml0eG9yKTsKKyAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYml0b3IoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX2JpdG9yKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7
Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgIHN0dWJDYWxsLmNhbGwoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXRvcik7CisgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCkBAIC0xMDUxLDEwICsxMDQ4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N0
cmljdGVxKEluc3RydWN0aQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9zdHJpY3RlcSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVn
VDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxs
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc3RyaWN0ZXEp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTEwNjIsMTAgKzEwNTgsOSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKEluc3RydWN0CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25zdHJpY3RlcSk7Ci0g
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfbnN0cmljdGVxKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfaGFzX2luc3RhbmNl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCkBAIC0xMTIzLDkgKzExMTgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfdG9fbnVtYmVyKEluc3RydWN0CiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX251bWJlcik7Ci0gICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19udW1iZXIpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1
bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViQ2FsbC5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSklUU3R1YkNhbGxfaAogI2RlZmluZSBKSVRTdHViQ2Fs
bF9oCiAKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaCIKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0zNyw2ICszOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKSVRTdHViQ2FsbChKSVQqIGppdCwgSlNPYmplY3QqIChKSVRf
U1RVQiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSkKICAgICAgICAgICAgIDogbV9qaXQo
aml0KQogICAgICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9wYygwKQog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICwg
bV9yZXR1cm5UeXBlKENlbGwpCiAjZW5kaWYKQEAgLTQ3LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTikpCiAgICAgICAgICAgICA6
IG1faml0KGppdCkKICAgICAgICAgICAgICwgbV9zdHViKHN0dWIpCisgICAgICAgICAgICAsIG1f
cGMoMCkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
ICAgICAsIG1fcmV0dXJuVHlwZShDZWxsKQogI2VuZGlmCkBAIC01Nyw3ICs2MCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKSVRTdHViQ2FsbChKSVQqIGppdCwgdm9pZCogKEpJVF9TVFVC
ICpzdHViKShTVFVCX0FSR1NfREVDTEFSQVRJT04pKQogICAgICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICAgICAsIG1fc3R1YihzdHViKQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFB
U1NFUlRfRElTQUJMRUQgICAgICAKKyAgICAgICAgICAgICwgbV9wYygwKQorI2lmIFVTRShKU1ZB
TFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICwgbV9yZXR1cm5UeXBl
KFZvaWRQdHIpCiAjZW5kaWYKICAgICAgICAgICAgICwgbV9zdGFja0luZGV4KEpJVFNUQUNLRlJB
TUVfQVJHU19JTkRFWCkKQEAgLTY3LDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpJVFN0dWJDYWxsKEpJVCogaml0LCBpbnQgKEpJVF9TVFVCICpzdHViKShTVFVCX0FSR1NfREVD
TEFSQVRJT04pKQogICAgICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICAgICAsIG1fc3R1
YihzdHViKQorICAgICAgICAgICAgLCBtX3BjKDApCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwg
IUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgLCBtX3JldHVyblR5cGUoSW50KQogI2VuZGlm
CkBAIC03Nyw2ICs4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRTdHViQ2FsbChK
SVQqIGppdCwgYm9vbCAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTikpCiAg
ICAgICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgICAgICwgbV9zdHViKHN0dWIpCisgICAg
ICAgICAgICAsIG1fcGMoMCkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FC
TEVECiAgICAgICAgICAgICAsIG1fcmV0dXJuVHlwZShJbnQpCiAjZW5kaWYKQEAgLTg3LDYgKzkz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVFN0dWJDYWxsKEpJVCogaml0LCB2b2lk
IChKSVRfU1RVQiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSkKICAgICAgICAgICAgIDog
bV9qaXQoaml0KQogICAgICAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAgICAgICAgICwgbV9w
YygwKQogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
ICAgICwgbV9yZXR1cm5UeXBlKFZvaWQpCiAjZW5kaWYKQEAgLTk3LDYgKzEwNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKSVRTdHViQ2FsbChKSVQqIGppdCwgRW5jb2RlZEpTVmFsdWUg
KEpJVF9TVFVCICpzdHViKShTVFVCX0FSR1NfREVDTEFSQVRJT04pKQogICAgICAgICAgICAgOiBt
X2ppdChqaXQpCiAgICAgICAgICAgICAsIG1fc3R1YihzdHViKQorICAgICAgICAgICAgLCBtX3Bj
KDApCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAg
ICAgLCBtX3JldHVyblR5cGUoVmFsdWUpCiAjZW5kaWYKQEAgLTEwNCw4ICsxMTIsMjkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIEpJVFN0dWJDYWxs
KEpJVCogaml0LCBTbG93UGF0aFJldHVyblR5cGUgKEpJVF9TVFVCICpzdHViKShFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYykpCisgICAgICAgICAgICA6IG1faml0KGppdCkKKyAgICAg
ICAgICAgICwgbV9zdHViKHN0dWIpCisgICAgICAgICAgICAsIG1fcGMoMCkKKyNpZiBVU0UoSlNW
QUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICwgbV9yZXR1cm5UeXBlKFZv
aWQpCisjZW5kaWYKKyAgICAgICAgLCBtX3N0YWNrSW5kZXgoSklUU1RBQ0tGUkFNRV9BUkdTX0lO
REVYKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIEFyZ3VtZW50
cyBhcmUgYWRkZWQgZmlyc3QgdG8gbGFzdC4KIAorICAgICAgICB2b2lkIHNldFBDKEluc3RydWN0
aW9uKiBwYykKKyAgICAgICAgeworICAgICAgICAgICAgbV9wYyA9IHBjOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBzZXRSZXR1cm5UeXBlSW50KCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV9yZXR1cm5UeXBlID0gSW50OworICAgICAgICB9CisKICAgICAgICAgdm9pZCBza2lwQXJndW1l
bnQoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3N0YWNrSW5kZXggKz0gc3RhY2tJbmRleFN0
ZXA7CkBAIC0yOTEsNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSklUKiBt
X2ppdDsKICAgICAgICAgRnVuY3Rpb25QdHIgbV9zdHViOworICAgICAgICBJbnN0cnVjdGlvbiog
bV9wYzsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
IGVudW0geyBWb2lkLCBWb2lkUHRyLCBJbnQsIFZhbHVlLCBDZWxsIH0gbV9yZXR1cm5UeXBlOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNp
b24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2lu
Y2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNs
dWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBA
IC0zNzgsNzEgKzM3OSw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIHRocm93RXhj
ZXAKICNkZWZpbmUgREVGSU5FX1NUVUJfRlVOQ1RJT04ocnR5cGUsIG9wKSBydHlwZSBKSVRfU1RV
QiBjdGlfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pCiAjZW5kaWYKIAotREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2NyZWF0ZV90aGlzKQotewotICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0
YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IHN0YWNrRnJh
bWUuYXJnc1swXS5pbnQzMigpOwotCi0gICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotI2lmICFBU1NFUlRfRElTQUJM
RUQKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQVNTRVJUKGNvbnN0cnVj
dG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1
Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwotI2VuZGlmCi0KLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5hbGxvY2F0aW9uUHJvZmlsZShjYWxsRnJhbWUsIGlubGlu
ZUNhcGFjaXR5KS0+c3RydWN0dXJlKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChjYWxsRnJhbWUsIHN0cnVjdHVyZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVl
LCBvcF90b190aGlzKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsK
LQotICAgIEpTVmFsdWUgdjEgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBKU1ZhbHVl
IHJlc3VsdCA9IHYxLnRvVGhpcyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwotICAgIENIRUNLX0ZP
Ul9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfYWRkKQotewot
ICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgdjEg
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgdjIgPSBzdGFja0Zy
YW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tG
cmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3Qo
KSkgewotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGNhbGxGcmFtZSwgYXNTdHJp
bmcodjEpLCB2Mi50b1N0cmluZyhjYWxsRnJhbWUpKTsKLSAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQ
VElPTl9BVF9FTkQoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwot
ICAgIH0KLQotICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVt
YmVyKCkpKTsKLQotICAgIC8vIEFsbCBvdGhlciBjYXNlcyBhcmUgcHJldHR5IHVuY29tbW9uCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZFNsb3dDYXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKLSAg
ICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
X2luYykKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBK
U1ZhbHVlIHYgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotCi0gICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKHYudG9OdW1iZXIoY2FsbEZyYW1lKSArIDEpOwotICAgIENIRUNLX0ZPUl9FWENF
UFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQot
CiBERUZJTkVfU1RVQl9GVU5DVElPTihpbnQsIHRpbWVvdXRfY2hlY2spCiB7CiAgICAgU1RVQl9J
TklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMTE1OCwyMiArMTA5NCw2IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVl
LCBvcF9tdWwpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0g
ICAgSlNWYWx1ZSBzcmMxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1Zh
bHVlIHNyYzIgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotCi0gICAgaWYgKHNyYzEu
aXNOdW1iZXIoKSAmJiBzcmMyLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoc3JjMS5hc051bWJlcigpICogc3JjMi5hc051bWJlcigpKSk7Ci0KLSAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoc3JjMS50b051bWJlcihjYWxsRnJhbWUpICogc3JjMi50b051
bWJlcihjYWxsRnJhbWUpKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJ
T04oSlNPYmplY3QqLCBvcF9uZXdfZnVuYykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUo
c3RhY2tGcmFtZSk7CkBAIC0xNzA4LDIyICsxNjI4LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
RW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQotICAgIAotREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3N1YikKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNyYzEgPSBzdGFja0ZyYW1lLmFyZ3Nb
MF0uanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgc3JjMiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1Zh
bHVlKCk7Ci0KLSAgICBpZiAoc3JjMS5pc051bWJlcigpICYmIHNyYzIuaXNOdW1iZXIoKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzcmMxLmFzTnVtYmVyKCkgLSBz
cmMyLmFzTnVtYmVyKCkpKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvTnVtYmVy
KGNhbGxGcmFtZSkgLSBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwotICAgIENIRUNLX0ZPUl9F
WENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwot
fQogCiBzdGF0aWMgdm9pZCBwdXRCeVZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBi
YXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlKQogewpAQCAtMTgxMyw0
NiArMTcxNyw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWwKICAg
ICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfbGVzcykKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUo
c3RhY2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGpzTGVzczx0cnVlPihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCksIHN0YWNrRnJhbWUuYXJnc1sxXS5q
c1ZhbHVlKCkpKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wX2xlc3NlcSkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGNhbGxG
cmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpz
VmFsdWUoKSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfZ3JlYXRlcikKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGpzTGVzczxmYWxzZT4oY2FsbEZy
YW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpLCBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9ncmVhdGVyZXEpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oY2Fs
bEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpLCBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQqLCBvcF9sb2FkX3ZhcmFyZ3MpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNr
RnJhbWUpOwpAQCAtMTg2OSwyMSArMTczMyw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQq
LCBvcF9sb2FkX3ZhcmEKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi1ERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfbmVnYXRlKQotewotICAgIFNUVUJfSU5JVF9T
VEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgc3JjID0gc3RhY2tGcmFtZS5h
cmdzWzBdLmpzVmFsdWUoKTsKLQotICAgIGlmIChzcmMuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtc3JjLmFzTnVtYmVyKCkpKTsKLQotICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcigtc3JjLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwotICAgIENIRUNLX0ZP
Ul9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV9i
YXNlKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTE5MzUs
MzQgKzE3ODQsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlKTsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJ
T04oRW5jb2RlZEpTVmFsdWUsIG9wX2RpdikKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUo
c3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNyYzEgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpOwotICAgIEpTVmFsdWUgc3JjMiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7
Ci0KLSAgICBpZiAoc3JjMS5pc051bWJlcigpICYmIHNyYzIuaXNOdW1iZXIoKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzcmMxLmFzTnVtYmVyKCkgLyBzcmMyLmFz
TnVtYmVyKCkpKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWU7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvTnVtYmVyKGNhbGxG
cmFtZSkgLyBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJ
T05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1E
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZGVjKQotewotICAgIFNUVUJf
SU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgdiA9IHN0YWNrRnJh
bWUuYXJnc1swXS5qc1ZhbHVlKCk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNr
RnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIodi50b051bWJl
cihjYWxsRnJhbWUpIC0gMSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNU
SU9OKGludCwgb3Bfamxlc3MpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJh
bWUpOwpAQCAtMjAxNSwxNyArMTgzNiw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKGludCwgb3Bf
amdyZWF0ZXJlcSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3Bfbm90KQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgc3JjID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFs
dWUoKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKCFzcmMudG9Cb29sZWFuKHN0
YWNrRnJhbWUuY2FsbEZyYW1lKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZV
TkNUSU9OKGludCwgb3BfanRydWUpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNr
RnJhbWUpOwpAQCAtMjE1Myw0NyArMTk2Myw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKGludCwg
b3BfZXFfc3RyaW5ncykKICNlbmRpZgogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVk
SlNWYWx1ZSwgb3BfbHNoaWZ0KQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0Zy
YW1lKTsKLQotICAgIEpTVmFsdWUgdmFsID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsK
LSAgICBKU1ZhbHVlIHNoaWZ0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLQotICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcigodmFsLnRvSW50MzIoY2FsbEZyYW1lKSkgPDwgKHNoaWZ0LnRv
VUludDMyKGNhbGxGcmFtZSkgJiAweDFmKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9F
TkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLURFRklORV9T
VFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9iaXRhbmQpCi17Ci0gICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMxID0gc3RhY2tGcmFt
ZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNyYzIgPSBzdGFja0ZyYW1lLmFyZ3Nb
MV0uanNWYWx1ZSgpOwotCi0gICAgQVNTRVJUKCFzcmMxLmlzSW50MzIoKSB8fCAhc3JjMi5pc0lu
dDMyKCkpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvSW50MzIoY2FsbEZyYW1lKSAm
IHNyYzIudG9JbnQzMihjYWxsRnJhbWUpKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VO
RCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQotREVGSU5FX1NU
VUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3JzaGlmdCkKLXsKLSAgICBTVFVCX0lOSVRf
U1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHZhbCA9IHN0YWNrRnJhbWUu
YXJnc1swXS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBzaGlmdCA9IHN0YWNrRnJhbWUuYXJnc1sx
XS5qc1ZhbHVlKCk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoKHZhbC50b0ludDMyKGNhbGxG
cmFtZSkpID4+IChzaGlmdC50b1VJbnQzMihjYWxsRnJhbWUpICYgMHgxZikpOwotCi0gICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNv
bHZlX3dpdGhfYmFzZSkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7
CkBAIC0yMjM4LDQ3ICsyMDA3LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBv
cF9uZXdfZgogICAgIHJldHVybiBmdW5jOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfbW9kKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0Zy
YW1lKTsKLQotICAgIEpTVmFsdWUgZGl2aWRlbmRWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5q
c1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBkaXZpc29yVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMV0u
anNWYWx1ZSgpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBkb3VibGUgZCA9IGRpdmlkZW5kVmFsdWUudG9OdW1iZXIoY2FsbEZyYW1lKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGZtb2QoZCwgZGl2aXNvclZhbHVlLnRvTnVt
YmVyKGNhbGxGcmFtZSkpKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJ
T04oRW5jb2RlZEpTVmFsdWUsIG9wX3Vyc2hpZnQpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSB2YWwgPSBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpOwotICAgIEpTVmFsdWUgc2hpZnQgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1
ZSgpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKCh2YWwudG9VSW50MzIoY2FsbEZyYW1lKSkg
Pj4gKHNoaWZ0LnRvVUludDMyKGNhbGxGcmFtZSkgJiAweDFmKSk7Ci0gICAgQ0hFQ0tfRk9SX0VY
Q0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19
Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9iaXR4b3IpCi17Ci0g
ICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMx
ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNyYzIgPSBzdGFj
a0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3Jj
MS50b0ludDMyKGNhbGxGcmFtZSkgXiBzcmMyLnRvSW50MzIoY2FsbEZyYW1lKSk7Ci0gICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X3JlZ2V4
cCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBAIC0yMjk0LDIw
ICsyMDIyLDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9uZXdfcgogICAg
IHJldHVybiBSZWdFeHBPYmplY3Q6OmNyZWF0ZSgqc3RhY2tGcmFtZS52bSwgc3RhY2tGcmFtZS5j
YWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCk7CiB9CiAKLURF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9iaXRvcikKLXsKLSAgICBTVFVC
X0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNyYzEgPSBzdGFj
a0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgc3JjMiA9IHN0YWNrRnJhbWUu
YXJnc1sxXS5qc1ZhbHVlKCk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJh
bWUuY2FsbEZyYW1lOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvSW50
MzIoY2FsbEZyYW1lKSB8IHNyYzIudG9JbnQzMihjYWxsRnJhbWUpKTsKLSAgICBDSEVDS19GT1Jf
RVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
LX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2NhbGxfZXZhbCkK
IHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBAIC0yMzgwLDEwNiAr
MjA5NCw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3BvcF9zY29wZSkKICAgICBz
dGFja0ZyYW1lLmNhbGxGcmFtZS0+c2V0U2NvcGUoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPnNjb3Bl
KCktPm5leHQoKSk7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF90eXBlb2YpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1R5cGVTdHJpbmdGb3JWYWx1ZShzdGFja0ZyYW1l
LmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSkpOwotfQotCi1ERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfaXNfb2JqZWN0KQotewotICAgIFNUVUJf
SU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLmFyZ3NbMF0uanNWYWx1ZSgpKSkpOwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfaXNfZnVuY3Rpb24pCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oanNJ
c0Z1bmN0aW9uVHlwZShzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKSkpOwotfQotCi1ERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bfc3RyaWN0ZXEpCi17Ci0gICAgU1RV
Ql9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMxID0gc3Rh
Y2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNyYzIgPSBzdGFja0ZyYW1l
LmFyZ3NbMV0uanNWYWx1ZSgpOwotICAgIAotICAgIGJvb2wgcmVzdWx0ID0gSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHNyYzEsIHNyYzIpOwotICAgIENIRUNLX0ZP
Ul9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4ocmVzdWx0KSk7Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF90b19wcmltaXRpdmUpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1
ZSgpLnRvUHJpbWl0aXZlKHN0YWNrRnJhbWUuY2FsbEZyYW1lKSk7Ci19Ci0KLURFRklORV9TVFVC
X0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9zdHJjYXQpCi17Ci0gICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhz
dGFja0ZyYW1lLmNhbGxGcmFtZSwgJnN0YWNrRnJhbWUuY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtz
dGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKV0sIHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKTsK
LSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUs
IG9wX25zdHJpY3RlcSkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7
Ci0KLSAgICBKU1ZhbHVlIHNyYzEgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAg
IEpTVmFsdWUgc3JjMiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7Ci0KLSAgICBib29s
IHJlc3VsdCA9ICFKU1ZhbHVlOjpzdHJpY3RFcXVhbChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3Jj
MSwgc3JjMik7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKLX0KLQotREVGSU5FX1NUVUJfRlVO
Q1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3RvX251bWJlcikKLXsKLSAgICBTVFVCX0lOSVRfU1RB
Q0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNyYyA9IHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZTsKLQotICAgIGRvdWJsZSBudW1iZXIgPSBzcmMudG9OdW1iZXIoY2FsbEZyYW1lKTsK
LSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIobnVtYmVyKSk7Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9pbikKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFt
ZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwot
ICAgIEpTVmFsdWUgYmFzZVZhbCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7Ci0KLSAg
ICBpZiAoIWJhc2VWYWwuaXNPYmplY3QoKSkgewotICAgICAgICBzdGFja0ZyYW1lLnZtLT5leGNl
cHRpb24gPSBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihzdGFja0ZyYW1lLmNhbGxGcmFtZSwgImlu
IiwgYmFzZVZhbCk7Ci0gICAgICAgIFZNX1RIUk9XX0VYQ0VQVElPTigpOwotICAgIH0KLQotICAg
IEpTVmFsdWUgcHJvcE5hbWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIEpT
T2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoYmFzZVZhbCk7Ci0KLSAgICB1aW50MzJfdCBpOwot
ICAgIGlmIChwcm9wTmFtZS5nZXRVSW50MzIoaSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGJhc2VPYmotPmhhc1Byb3BlcnR5KGNhbGxGcmFtZSwgaSkpKTsKLQot
ICAgIGlmIChpc05hbWUocHJvcE5hbWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihiYXNlT2JqLT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGpzQ2FzdDxOYW1lSW5z
dGFuY2UqPihwcm9wTmFtZS5hc0NlbGwoKSktPnByaXZhdGVOYW1lKCkpKSk7Ci0KLSAgICBJZGVu
dGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcE5hbWUudG9TdHJpbmcoY2FsbEZyYW1lKS0+
dmFsdWUoY2FsbEZyYW1lKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmotPmhhc1Byb3BlcnR5KGNhbGxGcmFt
ZSwgcHJvcGVydHkpKSk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1c2hf
bmFtZV9zY29wZSkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBA
IC0yNTU5LDM2ICsyMTczLDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX3N3aXRj
aF9zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9kZWxfYnlfdmFsKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWU7Ci0KLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1Zh
bHVlKCk7Ci0gICAgSlNPYmplY3QqIGJhc2VPYmogPSBiYXNlVmFsdWUudG9PYmplY3QoY2FsbEZy
YW1lKTsgLy8gbWF5IHRocm93Ci0KLSAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUu
YXJnc1sxXS5qc1ZhbHVlKCk7Ci0gICAgYm9vbCByZXN1bHQ7Ci0gICAgdWludDMyX3QgaTsKLSAg
ICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKLSAgICAgICAgcmVzdWx0ID0gYmFzZU9iai0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmosIGNhbGxGcmFtZSwg
aSk7Ci0gICAgZWxzZSBpZiAoaXNOYW1lKHN1YnNjcmlwdCkpCi0gICAgICAgIHJlc3VsdCA9IGJh
c2VPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGNhbGxGcmFtZSwg
anNDYXN0PE5hbWVJbnN0YW5jZSo+KHN1YnNjcmlwdC5hc0NlbGwoKSktPnByaXZhdGVOYW1lKCkp
OwotICAgIGVsc2UgewotICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgIElk
ZW50aWZpZXIgcHJvcGVydHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1l
KS0+dmFsdWUoY2FsbEZyYW1lKSk7Ci0gICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAg
ICAgICAgcmVzdWx0ID0gYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFz
ZU9iaiwgY2FsbEZyYW1lLCBwcm9wZXJ0eSk7Ci0gICAgfQotCi0gICAgaWYgKCFyZXN1bHQgJiYg
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHN0YWNrRnJh
bWUudm0tPmV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihzdGFja0ZyYW1lLmNhbGxGcmFtZSwg
IlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7Ci0KLSAgICBDSEVDS19GT1JfRVhDRVBUSU9O
X0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkp
OwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfZ2V0dGVyX3NldHRlcikK
IHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBAIC0yNjQ5LDYgKzIy
MzMsMTIgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX3Rocm93KQogICAgIHJldHVy
biBoYW5kbGVyLmNhbGxGcmFtZTsKIH0KIAorRXhjZXB0aW9uSGFuZGxlciBKSVRfU1RVQiBjdGlf
dm1fdGhyb3dfc2xvd3BhdGgoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0qIHZtID0g
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+dm0oKTsKKyAgICByZXR1cm4gaml0VGhyb3dOZXcodm0s
IGNhbGxGcmFtZSwgdm0tPmV4Y2VwdGlvbik7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCB0b19vYmplY3QpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNp
b24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgogI2lu
Y2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKQEAgLTMwNiw2ICszMDcsNyBAQCBzdHJ1Y3QgSklU
U3RhY2tGcmFtZSB7CiAjZW5kaWYKIAogZXh0ZXJuICJDIiB2b2lkIGN0aVZNVGhyb3dUcmFtcG9s
aW5lKCk7CitleHRlcm4gIkMiIHZvaWQgY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCgpOwog
ZXh0ZXJuICJDIiB2b2lkIGN0aU9wVGhyb3dOb3RDYXVnaHQoKTsKIGV4dGVybiAiQyIgRW5jb2Rl
ZEpTVmFsdWUgY3RpVHJhbXBvbGluZSh2b2lkKiBjb2RlLCBKU1N0YWNrKiwgQ2FsbEZyYW1lKiwg
dm9pZCogLyp1bnVzZWQxKi8sIHZvaWQqIC8qdW51c2VkMiovLCBWTSopOwogI2lmIEVOQUJMRShE
RkdfSklUKQpAQCAtMzI1LDIwICszMjcsMTIgQEAgZXh0ZXJuICJDIiB2b2lkIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUoKQogdm9pZCBwZXJmb3JtUGxhdGZvcm1TcGVjaWZpY0pJVEFzc2VydGlvbnMo
Vk0qKTsKIAogZXh0ZXJuICJDIiB7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfYWRk
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklU
X1NUVUIgY3RpX29wX2JpdGFuZChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9iaXRvcihTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9iaXR4b3Io
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
U1RVQiBjdGlfb3BfY2FsbF9Ob3RKU0Z1bmN0aW9uKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NhbGxfZXZhbChTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVC
IGN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY2hlY2tfaGFzX2lu
c3RhbmNlKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX2NyZWF0ZV90aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3RvX3RoaXMoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBj
dGlfb3BfY3JlYXRlX2FyZ3VtZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9kZWxfYnlfaWQoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3Bf
ZGVsX2J5X3ZhbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRK
U1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9kaXYoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X2lkKFNUVUJfQVJH
U19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3Rp
X29wX2dldF9ieV9pZF9hcnJheV9mYWlsKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9pZF9jdXN0b21fc3R1
YihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKQEAgLTM1MiwyNiArMzQ2LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfaWQKIEVuY29kZWRKU1Zh
bHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfdmFsKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV92YWxfZ2Vu
ZXJpYyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfdmFsX3N0cmluZyhTVFVCX0FSR1NfREVDTEFSQVRJT04p
IFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9pbihTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF9pbnN0YW5jZW9mKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2lzX2Jvb2xlYW4oU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfaXNfZnVu
Y3Rpb24oU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfU1RVQiBjdGlfb3BfaXNfbnVtYmVyKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lO
VEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2lzX29iamVjdChTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF9pc19zdHJpbmcoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfaXNfdW5kZWZpbmVkKFNUVUJfQVJHU19ERUNMQVJB
VElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2xlc3Mo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRf
U1RVQiBjdGlfb3BfbGVzc2VxKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dyZWF0ZXIoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ3JlYXRl
cmVxKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUg
SklUX1NUVUIgY3RpX29wX2xzaGlmdChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9tb2QoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfbXVsKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NU
VUIgY3RpX29wX25lZ2F0ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9ub3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfbnN0cmljdGVxKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NU
VUIgY3RpX29wX2RlYyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9pbmMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfcmVzb2x2ZShTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF9yZXNvbHZlX2Jhc2UoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfcmVzb2x2ZV9iYXNlX3N0cmljdF9wdXQoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkBAIC0zNzksMTQgKzM1OCw2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9lbnN1cmVfcHIKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9TVFVCIGN0aV9vcF9yZXNvbHZlX3dpdGhfYmFzZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9yZXNvbHZlX3dpdGhf
dGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX1NUVUIg
Y3RpX29wX3B1dF90b19iYXNlKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3JzaGlmdChTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9zdHJjYXQo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRf
U1RVQiBjdGlfb3Bfc3RyaWN0ZXEoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3Bfc3ViKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3RvX251bWJl
cihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9TVFVCIGN0aV9vcF90b19wcmltaXRpdmUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfdHlwZW9mKFNUVUJfQVJHU19E
RUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29w
X3Vyc2hpZnQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfU1RVQiBjdGlfdG9fb2JqZWN0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lO
VEVSTkFMOwogSlNPYmplY3QqIEpJVF9TVFVCIGN0aV9vcF9uZXdfYXJyYXkoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBKU09iamVjdCogSklUX1NUVUIgY3RpX29wX25ld19h
cnJheV93aXRoX3NpemUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkBAIC00
NDUsNiArNDE2LDcgQEAgdm9pZCogSklUX1NUVUIgY3RpX3ZtX2xhenlMaW5rQ2FsbChTVFVCXwog
dm9pZCogSklUX1NUVUIgY3RpX3ZtX2xhenlMaW5rQ2xvc3VyZUNhbGwoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fbGF6eUxpbmtDb25z
dHJ1Y3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RV
QiBjdGlfdm1fdGhyb3coU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBSRUZFUkVOQ0VEX0ZST01fQVNN
IFdURl9JTlRFUk5BTDsKK0V4Y2VwdGlvbkhhbmRsZXIgSklUX1NUVUIgY3RpX3ZtX3Rocm93X3Ns
b3dwYXRoKENhbGxGcmFtZSopIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwogfSAv
LyBleHRlcm4gIkMiCiAKICNlbGlmIEVOQUJMRShMTElOVF9DX0xPT1ApCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTS5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzQVJNLmgJKHdvcmtpbmcgY29weSkKQEAgLTky
LDYgKzkyLDIxIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICIKICAg
ICAiYnggbHIiICJcbiIKICk7CiAKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0hJREVfU1lNQk9M
KGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0lOTElORV9BUk1fRlVOQ1RJT04o
Y3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1Ry
YW1wb2xpbmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92IHIwLCByNSIgIlxuIgorICAgICJi
bCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSAiXG4iCisgICAgIC8vIFdo
ZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIwIGhhcyBjYWxsRnJhbWUgYW5kIHIx
IGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAgImFkZCBzcCwgc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUkVTRVJWRURSNF9PRkZTRVQpICJcbiIKKyAgICAgImxkbWlhIHNwISwge3I0LXI2LCBy
OC1yMTEsIGxyfSIgIlxuIgorICAgICAiYWRkIHNwLCBzcCwgIzEyIiAiXG4iCisgICAgICJieCBy
MSIgIlxuIgorKTsKKwogI2RlZmluZSBERUZJTkVfU1RVQl9GVU5DVElPTihydHlwZSwgb3ApIFwK
ICAgICBleHRlcm4gIkMiIHsgXAogICAgICAgICBydHlwZSBKSVRTdHViVGh1bmtlZF8jI29wKFNU
VUJfQVJHU19ERUNMQVJBVElPTik7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnNBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnNBUk12Ny5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMywzMCBA
QCBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgCiBhc20gKAogIi50ZXh0
IiAiXG4iCiAiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhy
b3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0hJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9s
aW5lU2xvd3BhdGgpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1CX0ZV
TkNfUEFSQU0oY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorU1lNQk9MX1NUUklO
RyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiOiIgIlxuIgorICAgICJtb3YgcjAsIHI1
IiAiXG4iCisgICAgImJsICIgTE9DQUxfUkVGRVJFTkNFKGN0aV92bV90aHJvd19zbG93cGF0aCkg
IlxuIgorICAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCByMCBoYXMg
Y2FsbEZyYW1lIGFuZCByMSBoYXMgaGFuZGxlciBhZGRyZXNzCisgICAgImxkciByMTEsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SMTFfT0ZGU0VUKSAiXSIgIlxuIgorICAg
ICJsZHIgcjEwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUjEwX09GRlNF
VCkgIl0iICJcbiIKKyAgICAibGRyIHI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVT
RVJWRURfUjlfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgcjgsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBSRVNFUlZFRF9SOF9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciByNywgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1I3X09GRlNFVCkgIl0iICJcbiIKKyAg
ICAibGRyIHI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUjZfT0ZGU0VU
KSAiXSIgIlxuIgorICAgICJsZHIgcjUsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNF
UlZFRF9SNV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciByNCwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJFU0VSVkVEX1I0X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIGxyLCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUkVUVVJOX0FERFJFU1NfT0ZGU0VUKSAi
XSIgIlxuIgorICAgICJhZGQgc3AsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoRklSU1RfU1RB
Q0tfQVJHVU1FTlQpICJcbiIKKyAgICAiYnggcjEiICJcbiIKKyk7CisKK2FzbSAoCisiLnRleHQi
ICJcbiIKKyIuYWxpZ24gMiIgIlxuIgogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJv
d05vdENhdWdodCkgIlxuIgogSElERV9TWU1CT0woY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgog
Ii50aHVtYiIgIlxuIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic01J
UFMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzTUlQ
Uy5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzTUlQUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDQwIEBAIGFzbSAoCiAiLnNl
dCBub3Jlb3JkZXIiICJcbiIKICIuc2V0IG5vbWFjcm8iICJcbiIKICIuc2V0IG5vbWlwczE2IiAi
XG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRo
KSAiXG4iCisiLmVudCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0
aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiOiIg
IlxuIgorI2lmIFdURl9NSVBTX1BJQworIi5zZXQgbWFjcm8iICJcbiIKKyIuY3Bsb2FkICQzMSIg
IlxuIgorICAgICJsYSAgICAkMjUsIiBTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93cGF0
aCkgIlxuIgorIi5zZXQgbm9tYWNybyIgIlxuIgorICAgICJiYWwgIiBTWU1CT0xfU1RSSU5HKGN0
aV92bV90aHJvd19zbG93cGF0aCkgIlxuIgorICAgICJtb3ZlICAkNCwkMTYiICJcbiIKKyNlbHNl
CisgICAgImphbCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSAiXG4iCisg
ICAgIm1vdmUgICQ0LCQxNiIgIlxuIgorI2VuZGlmCisgICAgLy8gV2hlbiBjdGlfdm1fdGhyb3df
c2xvd3BhdGggcmV0dXJucywgdjAgaGFzIGNhbGxGcmFtZSBhbmQgdjEgaGFzIGhhbmRsZXIgYWRk
cmVzcworICAgICJsdyAgICAkMTYsIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1MwX09G
RlNFVCkgIigkMjkpIiAiXG4iCisgICAgImx3ICAgICQxNywiIFNUUklOR0laRV9WQUxVRV9PRihQ
UkVTRVJWRURfUzFfT0ZGU0VUKSAiKCQyOSkiICJcbiIKKyAgICAibHcgICAgJDE4LCIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9TMl9PRkZTRVQpICIoJDI5KSIgIlxuIgorICAgICJsdyAg
ICAkMTksIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1MzX09GRlNFVCkgIigkMjkpIiAi
XG4iCisgICAgImx3ICAgICQyMCwiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUzRfT0ZG
U0VUKSAiKCQyOSkiICJcbiIKKyAgICAibHcgICAgJDMxLCIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
RVNFUlZFRF9SRVRVUk5fQUREUkVTU19PRkZTRVQpICIoJDI5KSIgIlxuIgorICAgICJqciAgICAk
MyIgIlxuIgorICAgICJhZGRpdSAkMjksJDI5LCIgU1RSSU5HSVpFX1ZBTFVFX09GKFNUQUNLX0xF
TkdUSCkgIlxuIgorIi5zZXQgcmVvcmRlciIgIlxuIgorIi5zZXQgbWFjcm8iICJcbiIKKyIuZW5k
ICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCispOwor
Cithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuc2V0IG5vcmVvcmRlciIg
IlxuIgorIi5zZXQgbm9tYWNybyIgIlxuIgorIi5zZXQgbm9taXBzMTYiICJcbiIKICIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKICIuZW50ICIgU1lNQk9M
X1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhy
b3dOb3RDYXVnaHQpICI6IiAiXG4iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVic1NINC5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzU0g0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDMxIEBAIFNZTUJPTF9T
VFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAKICk7CiAKIGFzbSB2b2xhdGlsZSAoCisi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4i
CitISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCitTWU1CT0xf
U1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6IiAiXG4iCisgICAgIm1vdi5s
IC5MMiJTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93cGF0aCkiLHIwIiAiXG4iCisgICAg
Im1vdiByMTUsIHI0IiAiXG4iCisgICAgIm1vdi5sIEAocjAscjEyKSxyMTEiICJcbiIKKyAgICAi
anNyIEByMTEiICJcbiIKKyAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5z
LCByMCBoYXMgY2FsbEZyYW1lIGFuZCByMSBoYXMgaGFuZGxlciBhZGRyZXNzCisgICAgIm5vcCIg
IlxuIgorICAgICJhZGQgIzYwLCByMTUiICJcbiIKKyAgICAibW92LmwgQHIxNSsscjEwIiAiXG4i
CisgICAgIm1vdi5sIEByMTUrLHIxMSIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyMTMiICJcbiIK
KyAgICAibGRzLmwgQHIxNSsscHIiICJcbiIKKyAgICAibW92LmwgQHIxNSsscjE0IiAiXG4iCisg
ICAgIm1vdi5sIEByMTUrLHI4IiAiXG4iCisgICAgImFkZCAjMTIsIHIxNSIgIlxuIgorICAgICJt
b3YgcjAsIHI0IiAiXG4iCisgICAgImptcCBAcjEiICJcbiIKKyAgICAibm9wIiAiXG4iCisgICAg
Ii5hbGlnbiAyIiAiXG4iCisgICAgIi5MMiJTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93
cGF0aCkiOi5sb25nICIgU1lNQk9MX1NUUklORyhjdGlfdm1fdGhyb3dfc2xvd3BhdGgpIkBHT1Qg
XG4iCispOworCithc20gdm9sYXRpbGUgKAogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BU
aHJvd05vdENhdWdodCkgIlxuIgogSElERV9TWU1CT0woY3RpT3BUaHJvd05vdENhdWdodCkgIlxu
IgogU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Ni5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAkocmV2aXNpb24gMTUwODQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Ni5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4NiwxNiBAQCBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIg
CiApOwogCiBhc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xp
bmVTbG93cGF0aCkgIlxuIgorSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0
aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiOiIg
IlxuIgorICAgICJtb3ZsICVlZGksICVlY3giICJcbiIKKyAgICAiY2FsbCAiIExPQ0FMX1JFRkVS
RU5DRShjdGlfdm1fdGhyb3dfc2xvd3BhdGgpICJcbiIKKyAgICAvLyBXaGVuIGN0aV92bV90aHJv
d19zbG93cGF0aCByZXR1cm5zLCBlYXggaGFzIGNhbGxGcmFtZSBhbmQgZWR4IGhhcyBoYW5kbGVy
IGFkZHJlc3MKKyAgICAiam1wIColZWR4IiAiXG4iCispOworCithc20gKAogIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogSElERV9TWU1CT0woY3RpT3BU
aHJvd05vdENhdWdodCkgIlxuIgogU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAi
OiIgIlxuIgpAQCAtMjEzLDYgKzIyMywyMiBAQCBleHRlcm4gIkMiIHsKICAgICAgICAgfQogICAg
IH0KIAorICAgIF9fZGVjbHNwZWMobmFrZWQpIHZvaWQgY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93
cGF0aCgpCisgICAgeworICAgICAgICBfX2FzbSB7CisgICAgICAgICAgICBtb3YgZWN4LCBlZGk7
CisgICAgICAgICAgICBjYWxsIGN0aV92bV90aHJvd19zbG93cGF0aDsKKyAgICAgICAgICAgIC8v
IFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIGVheCBoYXMgY2FsbEZyYW1lIGFu
ZCBlZHggaGFzIGhhbmRsZXIgYWRkcmVzcworICAgICAgICAgICAgYWRkIGVzcCwgMHgzYzsKKyAg
ICAgICAgICAgIHBvcCBlYng7CisgICAgICAgICAgICBwb3AgZWRpOworICAgICAgICAgICAgcG9w
IGVzaTsKKyAgICAgICAgICAgIHBvcCBlYnA7CisgICAgICAgICAgICBqbXAgZWR4CisgICAgICAg
ICAgICByZXQ7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfX2RlY2xzcGVjKG5ha2VkKSB2b2lk
IGN0aU9wVGhyb3dOb3RDYXVnaHQoKQogICAgIHsKICAgICAgICAgX19hc20gewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Nl82NC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODZfNjQuaAkocmV2aXNpb24gMTUwODQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Nl82NC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw2ICs5OSwxNiBAQCBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9s
aW5lKSAiOiIgCiApOwogCiBhc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJv
d1RyYW1wb2xpbmVTbG93cGF0aCkgIlxuIgorSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xp
bmVTbG93cGF0aCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dw
YXRoKSAiOiIgIlxuIgorICAgICJtb3ZxICVyMTMsICVyZGkiICJcbiIKKyAgICAiY2FsbCAiIExP
Q0FMX1JFRkVSRU5DRShjdGlfdm1fdGhyb3dfc2xvd3BhdGgpICJcbiIKKyAgICAvLyBXaGVuIGN0
aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCByYXggaGFzIGNhbGxGcmFtZSBhbmQgcmR4IGhh
cyBoYW5kbGVyIGFkZHJlc3MKKyAgICAiam1wIColcmR4IiAiXG4iCispOworCithc20gKAogIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogSElERV9TWU1C
T0woY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90
Q2F1Z2h0KSAiOiIgIlxuIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVy
ZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRl
cmZhY2VKSVQuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0
UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKICNpZiAhT1MoV0lORE9XUykKICAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0
ZXJzOjplZGk7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50
UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzaTsKICNlbHNlCiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWN4Owor
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0g
WDg2UmVnaXN0ZXJzOjplZHg7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
QEAgLTg5LDYgKzkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIE9uIHg4NiB3ZSBh
bHdheXMgdXNlIGZhc3RjYWxsIGNvbnZlbnRpb25zID0gYnV0IG9uCiAgICAgICAgIC8vIE9TIFgg
aWYgbWlnaHQgbWFrZSBtb3JlIHNlbnNlIHRvIGp1c3QgdXNlIHJlZ3Bhcm0uCiAgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVy
czo6ZWN4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJl
Z2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZHg7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzaTsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZS
ZWdpc3RlcnM6OmVkaTsKQEAgLTEwNiw2ICsxMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IEFSTVJlZ2lz
dGVyczo6cjA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJl
Z2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRSZWdpc3RlciA9IEFSTVJlZ2lzdGVy
czo6cjE7CiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjc7CkBA
IC0xMjgsNiArMTMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBNSVBTUmVn
aXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVu
dFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMTsKICAgICAg
ICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMzsKQEAgLTE2
NCw2ICsxNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDYgPSBTSDRSZWdpc3RlcnM6OnI2OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCByZWdUNyA9IFNINFJlZ2lzdGVyczo6cjc7CiAgICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9cmVnVDQ7CisgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIgPXJlZ1Q0OwogCiAgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBTSDRSZWdpc3Rl
cnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdp
c3RlciA9IFNINFJlZ2lzdGVyczo6cjA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1Nsb3dQYXRoQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U2xvd1BhdGhDYWxsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1Nsb3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFNsb3dQYXRoQ2Fs
bF9oCisjZGVmaW5lIFNsb3dQYXRoQ2FsbF9oCisKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMu
aCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworI2lmIEVOQUJMRShKSVQp
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKSVRTbG93UGF0aENhbGwgeworcHVibGljOgor
ICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgSW5zdHJ1Y3Rpb24qIHBjLCBTbG93UGF0aFJl
dHVyblR5cGUgKFNMT1dfUEFUSCAqc3R1YikoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMpKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX3N0dWIoc3R1YikKKyAgICAg
ICAgLCBtX3BjKHBjKQorICAgIHsKKyAgICB9CisKKyAgICBKSVQ6OkNhbGwgY2FsbCgpCisgICAg
eworI2lmIEVOQUJMRShPUENPREVfU0FNUExJTkcpCisgICAgICAgIGlmIChtX2ppdC0+bV9ieXRl
Y29kZU9mZnNldCAhPSAodW5zaWduZWQpLTEpCisgICAgICAgICAgICBtX2ppdC0+c2FtcGxlSW5z
dHJ1Y3Rpb24obV9qaXQtPm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbV9q
aXQtPm1fYnl0ZWNvZGVPZmZzZXQsIHRydWUpOworI2VuZGlmCisgICAgICAgIG1faml0LT51cGRh
dGVUb3BDYWxsRnJhbWUoKTsKKyNpZiBDUFUoWDg2KSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
ICAgICBtX2ppdC0+YWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLTgpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBtX2ppdC0+cHVzaChK
SVQ6OlRydXN0ZWRJbW0zMihKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYykpKTsKKyAgICAgICAgbV9q
aXQtPnB1c2goSklUOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisjZWxzZQorICAgICAgICBtX2ppdC0+
bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmZpcnN0QXJndW1lbnRSZWdpc3Rlcik7
CisgICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjpzZWNv
bmRBcmd1bWVudFJlZ2lzdGVyKTsKKyNlbmRpZgorICAgICAgICBKSVQ6OkNhbGwgY2FsbCA9IG1f
aml0LT5jYWxsKCk7CisgICAgICAgIG1faml0LT5tX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGNh
bGwsIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCBtX3N0dWIudmFsdWUoKSkpOworCisjaWYgQ1BV
KFg4NikgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbV9qaXQtPmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKKyAgICAgICAg
aWYgKG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9ICh1bnNpZ25lZCktMSkKKyAgICAgICAgICAg
IG1faml0LT5zYW1wbGVJbnN0cnVjdGlvbihtX2ppdC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBtX2ppdC0+bV9ieXRlY29kZU9mZnNldCwgZmFsc2UpOworI2VuZGlmCisg
ICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIG1faml0LT51bm1hcCgpOwor
I2Vsc2UKKyAgICAgICAgbV9qaXQtPmtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKKyNlbmRpZgor
ICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBKSVQ6Okp1bXAgbm9FeGNl
cHRpb24gPSBtX2ppdC0+YnJhbmNoMzIoSklUOjpFcXVhbCwgSklUOjpBYnNvbHV0ZUFkZHJlc3Mo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJm1faml0LT5tX2NvZGVCbG9jay0+dm0oKS0+ZXhjZXB0
aW9uKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgSklUOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworI2Vsc2UKKyAgICAgICAgSklUOjpK
dW1wIG5vRXhjZXB0aW9uID0gbV9qaXQtPmJyYW5jaFRlc3Q2NChKSVQ6Olplcm8sIEpJVDo6QWJz
b2x1dGVBZGRyZXNzKCZtX2ppdC0+bV9jb2RlQmxvY2stPnZtKCktPmV4Y2VwdGlvbikpOworI2Vu
ZGlmCisgICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihGdW5jdGlvblB0cihj
dGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKS52YWx1ZSgpKSwgSklUOjpyZWdUMSk7CisgICAg
ICAgIG1faml0LT5qdW1wKEpJVDo6cmVnVDEpOworICAgICAgICBub0V4Y2VwdGlvbi5saW5rKG1f
aml0KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBjYWxsOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBKSVQqIG1faml0OworICAgIEZ1bmN0aW9uUHRyIG1fc3R1YjsKKyAgICBJbnN0cnVjdGlv
biogbV9wYzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTCisKKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQorCisjZW5kaWYgLy8gU2xvd1BhdGhDYWxsX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzk1LDE3ICszOTUsMTQgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVG
b3JHZQogCiAgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFkZHJlc3MuCiAgICAgaml0LnByZXNlcnZl
UmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChKU0ludGVyZmFjZUpJVDo6cmVnVDEpOwotCisgICAgCiAg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoJnZtLT5leGNlcHRpb25M
b2NhdGlvbiksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CiAgICAgaml0LnN0b3JlUHRyKEpTSW50
ZXJmYWNlSklUOjpyZWdUMSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKLSAgICBqaXQucG9rZShK
U0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3Qg
SklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2b2lkKikpOwogCiAgICAgaml0LnN0
b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJh
bWUpOwotICAgIC8vIFNldCB0aGUgcmV0dXJuIGFkZHJlc3MuCi0gICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIoY3RpVk1UaHJvd1RyYW1wb2xpbmUp
LnZhbHVlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOwotICAgIGppdC5yZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihKU0ludGVyZmFjZUpJVDo6cmVnVDEpOwogCi0gICAgaml0LnJl
dCgpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKEZ1bmN0aW9u
UHRyKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpLnZhbHVlKCkpLCBKU0ludGVyZmFjZUpJ
VDo6cmVnVDEpOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJuYXRpdmUgJXMgdHJhbXBvbGluZSIs
IHRvQ1N0cmluZyhraW5kKS5kYXRhKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI4LDM0ICs0MjgsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKICAg
ICBMTElOVF9FTkRfSU1QTCgpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y2FsbF9hcml0eUNoZWNrKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgRXhlY1N0YXRlKiBu
ZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnBy
ZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwotICAgIGlmICghbmV3RXhlYykgewotICAgICAg
ICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDID0gZXhlYy0+cmV0dXJuUEMoKTsKLSAgICAgICAg
ZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Ci0gICAgICAgIHZtLmV4Y2VwdGlvbiA9IGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKLSAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2Fs
bGVyKGV4ZWMsIHJldHVyblBDKTsKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKLSAgICB9Ci0gICAg
TExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0g
ICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4
ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgaWYg
KCFuZXdFeGVjKSB7Ci0gICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5y
ZXR1cm5QQygpOwotICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKLSAgICAgICAg
dm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICBp
bnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgcmV0dXJuUEMpOwotICAgICAgICBMTElOVF9S
RVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSks
IGV4ZWMpOwotICAgIH0KLSAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOwotfQotCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pCiB7CiAgICAg
TExJTlRfQkVHSU4oKTsKQEAgLTQ2Nyw0MiArNDM5LDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NyZWF0ZV9hYwogICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24p
KTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMp
Ci17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUo
QXJndW1lbnRzOjpjcmVhdGUodm0sIGV4ZWMpKTsKLSAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKLSAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7Ci0g
ICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5v
cGVyYW5kKSkgPSBhcmd1bWVudHM7Ci0gICAgTExJTlRfRU5EKCk7Ci19Ci0KLUxMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKLXsKLSAgICBMTElOVF9CRUdJTigpOwot
ICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTRnVuY3Rpb24qPihMTElOVF9P
UCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCkpOwotICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5t
ZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRh
KSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwotI2VuZGlmCi0KLSAgICBzaXplX3QgaW5saW5lQ2FwYWNp
dHkgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25zdHJ1
Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5zdHJ1Y3R1cmUo
KTsKLSAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJl
KSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQotewotICAg
IExMSU5UX0JFR0lOKCk7Ci0gICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsK
LSNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcGNbT1BDT0RFX0xFTkdUSChvcF90b190
aGlzKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0KLSAgICAgICAgSlNWYWx1ZTo6ZW5j
b2RlKHYxLnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkpOwotI2VuZGlmCi0gICAgTExJTlRfUkVUVVJO
KHYxLnRvVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJp
Y3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X29iamVjdCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtNTM2LDE4NyArNDcy
LDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdleAogICAgIExMSU5U
X1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdF
eHApKTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkKLXsKLSAgICBM
TElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX25lcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3N0cmljdGVxKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9uc3RyaWN0ZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9sZXNzKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbGVzc2VxKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9ncmVhdGVyKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dyZWF0ZXJlcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3ByZV9pbmMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkp
OwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJlX2RlYykKLXsKLSAgICBM
TElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90b19udW1iZXIpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKLX0K
LQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKLXsKLSAgICBMTElOVF9C
RUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2FkZCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
Ci0gICAgCi0jaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKLSAgICBkYXRhTG9nKCJUcnlpbmcg
dG8gYWRkICIsIHYxLCAiIHRvICIsIHYyLCAiLlxuIik7Ci0jZW5kaWYKLSAgICAKLSAgICBpZiAo
djEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKLSAgICAgICAgTExJTlRfUkVUVVJOKGpz
U3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKLSAgICAKLSAg
ICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQotICAgICAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKLSAgICAKLSAgICBM
TElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKLX0KLQotLy8gVGhlIGZv
bGxvd2luZyBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgbmVlZCB0byBiZSBzdXJl
IHRvIHJ1bgotLy8gdG9OdW1iZXIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNh
bGwgdG8gdG9OdW1iZXIoKSBpcyBpZGVtcG90ZW50Ci0vLyBpZiBhbiBleGNlcHRpb24gaXMgYWxy
ZWFkeSBzZXQgb24gdGhlIEV4ZWNTdGF0ZS4pCi0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9tdWwpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBkb3VibGUgYSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAgIGRvdWJsZSBiID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KGEgKiBiKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCi17Ci0g
ICAgTExJTlRfQkVHSU4oKTsKLSAgICBkb3VibGUgYSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpOwotICAgIGRvdWJsZSBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgLSBiKSk7Ci19Ci0K
LUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCi17Ci0gICAgTExJTlRfQkVHSU4o
KTsKLSAgICBkb3VibGUgYSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
OwotICAgIGRvdWJsZSBiID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7
Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgLyBiKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9tb2QpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBkb3VibGUg
YSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAgIGRvdWJsZSBi
ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKGZtb2QoYSwgYikpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2xzaGlmdCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGludDMyX3QgYSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgdWludDMyX3QgYiA9IExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihhIDw8IChiICYgMzEpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9yc2hpZnQpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBpbnQzMl90IGEgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAgIHVpbnQzMl90IGIgPSBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoYSA+PiAoYiAmIDMxKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfdXJzaGlmdCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIHVpbnQzMl90IGEgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKLSAgICB1aW50MzJfdCBiID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKGEgPj4gKGIgJiAzMSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2JpdGFuZCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGludDMyX3QgYSA9IExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgaW50MzJfdCBiID0gTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoYSAmIGIpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQot
ewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50MzJfdCBhID0gTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBpbnQzMl90IGIgPSBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihhIHwgYikpOwot
fQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQotewotICAgIExMSU5U
X0JFR0lOKCk7Ci0gICAgaW50MzJfdCBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKTsKLSAgICBpbnQzMl90IGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihhIF4gYikpOwotfQotCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKQogewogICAgIExMSU5U
X0JFR0lOKCk7CkBAIC03NDMsMzAgKzQ5OCw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9pbnN0YW5jZW8KICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0OjpkZWZh
dWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkpOwogfQogCi1MTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfdHlwZW9mKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJ
TlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpCi17
Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmpl
Y3RUeXBlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCi17Ci0gICAgTExJTlRfQkVHSU4oKTsK
LSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbikK
LXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9u
U2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpKTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jl
c29sdmUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBMTEludFNsb3dQYXRoc19oCiAjZGVmaW5lIExMSW50U2xv
d1BhdGhzX2gKIAorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMzgsNTcgKzM5
LDYgQEAgc3RydWN0IEluc3RydWN0aW9uOwogCiBuYW1lc3BhY2UgTExJbnQgewogCi0jaWYgVVNF
KEpTVkFMVUU2NCkKLS8vIEFjY29yZGluZyB0byBDKysgcnVsZXMsIGEgdHlwZSB1c2VkIGZvciB0
aGUgcmV0dXJuIHNpZ25hdHVyZSBvZiBmdW5jdGlvbiB3aXRoIEMgbGlua2FnZSAoaS5lLgotLy8g
J2V4dGVybiAiQyInKSBuZWVkcyB0byBiZSBQT0Q7IGhlbmNlIHB1dHRpbmcgYW55IGNvbnN0cnVj
dG9ycyBpbnRvIGl0IGNvdWxkIGNhdXNlIGVpdGhlciBjb21waWxlcgotLy8gd2FybmluZ3MsIG9y
IHdvcnNlLCBhIGNoYW5nZSBpbiB0aGUgQUJJIHVzZWQgdG8gcmV0dXJuIHRoZXNlIHR5cGVzLgot
c3RydWN0IFNsb3dQYXRoUmV0dXJuVHlwZSB7Ci0gICAgdm9pZCogYTsKLSAgICBFeGVjU3RhdGUq
IGI7Ci19OwotCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBh
LCBFeGVjU3RhdGUqIGIpCi17Ci0gICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdDsKLSAgICBy
ZXN1bHQuYSA9IGE7Ci0gICAgcmVzdWx0LmIgPSBiOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LWlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lk
KiYgYSwgRXhlY1N0YXRlKiYgYikKLXsKLSAgICBhID0gcmVzdWx0LmE7Ci0gICAgYiA9IHJlc3Vs
dC5iOwotfQotCi0jZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQotdHlwZWRlZiBpbnQ2NF90IFNs
b3dQYXRoUmV0dXJuVHlwZTsKLQotdHlwZWRlZiB1bmlvbiB7Ci0gICAgc3RydWN0IHsKLSAgICAg
ICAgdm9pZCogYTsKLSAgICAgICAgRXhlY1N0YXRlKiBiOwotICAgIH0gcGFpcjsKLSAgICBpbnQ2
NF90IGk7Ci19IFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nOwotCi1pbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVjU3RhdGUqIGIpCi17Ci0gICAgU2xv
d1BhdGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsKLSAgICB1LnBhaXIuYSA9IGE7Ci0gICAgdS5wYWly
LmIgPSBiOwotICAgIHJldHVybiB1Lmk7Ci19Ci0KLWlubGluZSB2b2lkIGRlY29kZVJlc3VsdChT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhlY1N0YXRlKiYgYikKLXsKLSAg
ICBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OwotICAgIHUuaSA9IHJlc3VsdDsKLSAgICBh
ID0gdS5wYWlyLmE7Ci0gICAgYiA9IHUucGFpci5iOwotfQotI2VuZGlmIC8vIFVTRShKU1ZBTFVF
MzJfNjQpCi0KIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJh
bmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3Rh
dGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKIApAQCAtMTEz
LDQ3ICs2MywxNCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woZW50cnlfb3NyX2Z1CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wobG9vcF9vc3IpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHJlcGxhY2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHN0YWNrX2No
ZWNrKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNo
ZWNrKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0X2Fy
aXR5Q2hlY2spOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVf
YWN0aXZhdGlvbik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0
ZV9hcmd1bWVudHMpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfdGhpcyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfb2JqZWN0KTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5KTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc2l6ZSk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfcmVnZXhwKTsKLUxMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbm90KTsKLUxMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJpY3Rl
cSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25zdHJpY3RlcSk7Ci1M
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xlc3MpOwotTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sZXNzZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ3JlYXRlcmVxKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHJlX2luYyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3ByZV9k
ZWMpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19udW1iZXIpOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpOwotTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZGQpOwotTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9tdWwpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9zdWIpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kaXYpOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9tb2QpOwotTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpOwotTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF91cnNoaWZ0KTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Yml0YW5kKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYml0b3IpOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKLUxMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdHlwZW9mKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfaXNfb2JqZWN0KTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9pbik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29s
dmUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fYmFzZSk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfYmFzZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTM1Miw3ICszNTIsNyBAQCBfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCi0gICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKKyAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQogLm9wQ3JlYXRlQXJndW1lbnRzRG9u
ZToKICAgICBkaXNwYXRjaCgyKQogCkBAIC0zNzEsNyArMzcxLDcgQEAgX2xsaW50X29wX2NyZWF0
ZV90aGlzOgogICAgIGRpc3BhdGNoKDQpCiAKIC5vcENyZWF0ZVRoaXNTbG93OgotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAgIGRpc3BhdGNoKDQpCiAKIApAQCAtMzk4LDcgKzM5
OCw3IEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvVGhpc1Ns
b3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fdGhpcykKKyAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtNDQw
LDcgKzQ0MCw3IEBAIF9sbGludF9vcF9ub3Q6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wTm90U2xv
dzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ub3QpCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfbm90KQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtNDYwLDcgKzQ2MCw3
IEBAIF9sbGludF9vcF9lcToKICAgICBkaXNwYXRjaCg0KQogCiAub3BFcVNsb3c6Ci0gICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZXEpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfZXEpCiAgICAgZGlzcGF0Y2goNCkKIAogCkBAIC01MDcsNyArNTA3LDcgQEAgX2xsaW50X29w
X25lcToKICAgICBkaXNwYXRjaCg0KQogCiAub3BOZXFTbG93OgotICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX25lcSkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXEpCiAg
ICAgZGlzcGF0Y2goNCkKICAgICAKIApAQCAtNTY0LDEyICs1NjQsMTIgQEAgZW5kCiAKIF9sbGlu
dF9vcF9zdHJpY3RlcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgc3RyaWN0RXEobWFjcm8g
KGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGlu
dF9zbG93X3BhdGhfc3RyaWN0ZXEpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCBy
ZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9zbG93X3BhdGhfc3RyaWN0ZXEp
CiAKIAogX2xsaW50X29wX25zdHJpY3RlcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgc3Ry
aWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1
bHQgZW5kLCBfbGxpbnRfc2xvd19wYXRoX25zdHJpY3RlcSkKKyAgICBzdHJpY3RFcShtYWNybyAo
bGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9zbG93
X3BhdGhfbnN0cmljdGVxKQogCiAKIF9sbGludF9vcF9pbmM6CkBAIC01ODIsNyArNTgyLDcgQEAg
X2xsaW50X29wX2luYzoKICAgICBkaXNwYXRjaCgyKQogCiAub3BJbmNTbG93OgotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfaW5jKQogICAgIGRpc3BhdGNoKDIpCiAKIApAQCAtNTk2LDcgKzU5Niw3IEBAIF9sbGlu
dF9vcF9kZWM6CiAgICAgZGlzcGF0Y2goMikKIAogLm9wRGVjU2xvdzoKLSAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVjKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X2RlYykKICAgICBkaXNwYXRjaCgyKQogCiAKQEAgLTYxMyw3ICs2MTMsNyBAQCBfbGxpbnRfb3Bf
dG9fbnVtYmVyOgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvTnVtYmVyU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b19udW1iZXIpCisgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfdG9fbnVtYmVyKQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtNjM2LDcgKzYzNiw3
IEBAIF9sbGludF9vcF9uZWdhdGU6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wTmVnYXRlU2xvdzoK
LSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfbmVnYXRlKQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtNjk3LDcgKzY5
Nyw3IEBAIF9sbGludF9vcF9hZGQ6CiAgICAgYmluYXJ5T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKICAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9hZGQpCisgICAgICAgIF9zbG93X3BhdGhfYWRkKQogCiAKIF9sbGludF9vcF9tdWw6
CkBAIC03MTUsNyArNzE1LDcgQEAgX2xsaW50X29wX211bDoKICAgICAgICAgICAgIHN0b3JlaSBz
Y3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCiAgICAgICAgIGVuZCwKICAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9tdWwpCisgICAgICAgIF9zbG93X3BhdGhfbXVsKQogCiAKIF9sbGludF9v
cF9zdWI6CkBAIC03MjMsNyArNzIzLDcgQEAgX2xsaW50X29wX3N1YjoKICAgICBiaW5hcnlPcCgK
ICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNs
b3cgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5k
LAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3N1YikKKyAgICAgICAgX3Nsb3dfcGF0aF9zdWIp
CiAKIAogX2xsaW50X29wX2RpdjoKQEAgLTc0Miw3ICs3NDIsNyBAQCBfbGxpbnRfb3BfZGl2Ogog
ICAgICAgICAuZG9uZToKICAgICAgICAgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2RpdikKKyAg
ICAgICAgX3Nsb3dfcGF0aF9kaXYpCiAKIAogbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0
aCwgYWR2YW5jZSkKQEAgLTc2Nyw3ICs3NjcsNyBAQCBfbGxpbnRfb3BfbHNoaWZ0OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9s
c2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfbHNoaWZ0LAogICAgICAgICA0KQogCiAKQEAgLTc3
NSw3ICs3NzUsNyBAQCBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxlZnQs
IHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9yc2hpZnQsCisgICAgICAgIF9z
bG93X3BhdGhfcnNoaWZ0LAogICAgICAgICA0KQogCiAKQEAgLTc4Niw3ICs3ODYsNyBAQCBfbGxp
bnRfb3BfdXJzaGlmdDoKICAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CiAgICAgICAg
ICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CiAgICAgICAgIGVuZCwKLSAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF91cnNoaWZ0LAorICAgICAgICBfc2xvd19wYXRoX3Vyc2hpZnQsCiAgICAgICAgIDQp
CiAKIApAQCAtNzk0LDcgKzc5NCw3IEBAIF9sbGludF9vcF9iaXRhbmQ6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFu
ZGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdGFuZCwKKyAg
ICAgICAgX3Nsb3dfcGF0aF9iaXRhbmQsCiAgICAgICAgIDUpCiAKIApAQCAtODAyLDcgKzgwMiw3
IEBAIF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAog
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAot
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXR4
b3IsCiAgICAgICAgIDUpCiAKIApAQCAtODEwLDcgKzgxMCw3IEBAIF9sbGludF9vcF9iaXRvcjoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0
aF9iaXRvciwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXRvciwKICAgICAgICAgNSkKIAogCkBAIC0x
NjcxLDcgKzE2NzEsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGRpc3BhdGNoKDMp
CiAKIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfdG9fcHJpbWl0aXZlKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3ByaW1p
dGl2ZSkKICAgICBkaXNwYXRjaCgzKQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNTA4
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3IEBAIF9sbGludF9vcF9jcmVhdGVf
YXJndW1lbnRzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDApCiAgICAgYnFuZXEgW2NmciwgdDAsIDhdLCBWYWx1ZUVtcHR5LCAub3BDcmVhdGVB
cmd1bWVudHNEb25lCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX2Fy
Z3VtZW50cykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQog
Lm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKICAgICBkaXNwYXRjaCgyKQogCkBAIC0yNTIsNyArMjUy
LDcgQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIGRpc3BhdGNoKDQpCiAKIC5vcENyZWF0
ZVRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlz
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAgIGRpc3BhdGNo
KDQpCiAKIApAQCAtMjc4LDcgKzI3OCw3IEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGRpc3Bh
dGNoKDMpCiAKIC5vcFRvVGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfdG9fdGhpcykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQogICAgIGRp
c3BhdGNoKDMpCiAKIApAQCAtMzE4LDcgKzMxOCw3IEBAIF9sbGludF9vcF9ub3Q6CiAgICAgZGlz
cGF0Y2goMykKIAogLm9wTm90U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9ub3QpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbm90KQogICAgIGRpc3BhdGNoKDMp
CiAKIApAQCAtMzQyLDEzICszNDIsMTMgQEAgZW5kCiBfbGxpbnRfb3BfZXE6CiAgICAgZXF1YWxp
dHlDb21wYXJpc29uKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9lcSkKKyAg
ICAgICAgX3Nsb3dfcGF0aF9lcSkKIAogCiBfbGxpbnRfb3BfbmVxOgogICAgIGVxdWFsaXR5Q29t
cGFyaXNvbigKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQs
IHJpZ2h0LCByZXN1bHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX25lcSkKKyAgICAg
ICAgX3Nsb3dfcGF0aF9uZXEpCiAKIAogbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCkBAIC00
MTcsMTMgKzQxNywxMyBAQCBlbmQKIF9sbGludF9vcF9zdHJpY3RlcToKICAgICBzdHJpY3RFcSgK
ICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxZXEgbGVmdCwgcmlnaHQsIHJl
c3VsdCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfc3RyaWN0ZXEpCisgICAgICAgIF9z
bG93X3BhdGhfc3RyaWN0ZXEpCiAKIAogX2xsaW50X29wX25zdHJpY3RlcToKICAgICBzdHJpY3RF
cSgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxbmVxIGxlZnQsIHJpZ2h0
LCByZXN1bHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX25zdHJpY3RlcSkKKyAgICAg
ICAgX3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCiAKIAogbWFjcm8gcHJlT3AoYXJpdGhtZXRpY09wZXJh
dGlvbiwgc2xvd1BhdGgpCkBAIC00NDQsMTMgKzQ0NCwxMyBAQCBlbmQKIF9sbGludF9vcF9pbmM6
CiAgICAgcHJlT3AoCiAgICAgICAgIG1hY3JvICh2YWx1ZSwgc2xvdykgYmFkZGlvIDEsIHZhbHVl
LCBzbG93IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKQorICAgICAgICBf
c2xvd19wYXRoX2luYykKIAogCiBfbGxpbnRfb3BfZGVjOgogICAgIHByZU9wKAogICAgICAgICBt
YWNybyAodmFsdWUsIHNsb3cpIGJzdWJpbyAxLCB2YWx1ZSwgc2xvdyBlbmQsCi0gICAgICAgIF9s
bGludF9zbG93X3BhdGhfcHJlX2RlYykKKyAgICAgICAgX3Nsb3dfcGF0aF9kZWMpCiAKIAogX2xs
aW50X29wX3RvX251bWJlcjoKQEAgLTQ2NSw3ICs0NjUsNyBAQCBfbGxpbnRfb3BfdG9fbnVtYmVy
OgogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvTnVtYmVyU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF90b19udW1iZXIpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
dG9fbnVtYmVyKQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtNDg3LDcgKzQ4Nyw3IEBAIF9sbGlu
dF9vcF9uZWdhdGU6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wTmVnYXRlU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZWdhdGUpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfbmVnYXRlKQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtNTU1LDcgKzU1NSw3IEBAIF9s
bGludF9vcF9hZGQ6CiAgICAgYmluYXJ5T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKICAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9h
ZGQpCisgICAgICAgIF9zbG93X3BhdGhfYWRkKQogCiAKIF9sbGludF9vcF9tdWw6CkBAIC01NzMs
NyArNTczLDcgQEAgX2xsaW50X29wX211bDoKICAgICAgICAgICAgIHN0b3JlcSB0MywgW2Nmciwg
aW5kZXgsIDhdCiAgICAgICAgIGVuZCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxk
IGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9tdWwpCisgICAgICAg
IF9zbG93X3BhdGhfbXVsKQogCiAKIF9sbGludF9vcF9zdWI6CkBAIC01ODEsNyArNTgxLDcgQEAg
X2xsaW50X29wX3N1YjoKICAgICBiaW5hcnlPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAogICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRo
X3N1YikKKyAgICAgICAgX3Nsb3dfcGF0aF9zdWIpCiAKIAogX2xsaW50X29wX2RpdjoKQEAgLTYw
NSw3ICs2MDUsNyBAQCBfbGxpbnRfb3BfZGl2OgogICAgICAgICAgICAgc3RvcmVxIHQwLCBbY2Zy
LCBpbmRleCwgOF0KICAgICAgICAgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRp
dmQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2RpdikKKyAgICAg
ICAgX3Nsb3dfcGF0aF9kaXYpCiAKIAogbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwg
YWR2YW5jZSkKQEAgLTYzMCw3ICs2MzAsNyBAQCBfbGxpbnRfb3BfbHNoaWZ0OgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9sc2hp
ZnQsCisgICAgICAgIF9zbG93X3BhdGhfbHNoaWZ0LAogICAgICAgICA0KQogCiAKQEAgLTYzOCw3
ICs2MzgsNyBAQCBfbGxpbnRfb3BfcnNoaWZ0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBi
aXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxlZnQsIHJp
Z2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9yc2hpZnQsCisgICAgICAgIF9zbG93
X3BhdGhfcnNoaWZ0LAogICAgICAgICA0KQogCiAKQEAgLTY0OSw3ICs2NDksNyBAQCBfbGxpbnRf
b3BfdXJzaGlmdDoKICAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CiAgICAgICAgICAg
ICBiaWx0IHJpZ2h0LCAwLCBzbG93CiAgICAgICAgIGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3df
cGF0aF91cnNoaWZ0LAorICAgICAgICBfc2xvd19wYXRoX3Vyc2hpZnQsCiAgICAgICAgIDQpCiAK
IApAQCAtNjU3LDcgKzY1Nyw3IEBAIF9sbGludF9vcF9iaXRhbmQ6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkg
bGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdGFuZCwKKyAgICAg
ICAgX3Nsb3dfcGF0aF9iaXRhbmQsCiAgICAgICAgIDUpCiAKIApAQCAtNjY1LDcgKzY2NSw3IEBA
IF9sbGludF9vcF9iaXR4b3I6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAogICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAotICAg
ICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXR4b3Is
CiAgICAgICAgIDUpCiAKIApAQCAtNjczLDcgKzY3Myw3IEBAIF9sbGludF9vcF9iaXRvcjoKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9i
aXRvciwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXRvciwKICAgICAgICAgNSkKIAogCkBAIC0xNTAy
LDcgKzE1MDIsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGRpc3BhdGNoKDMpCiAK
IC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfdG9fcHJpbWl0aXZlKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3ByaW1pdGl2
ZSkKICAgICBkaXNwYXRjaCgzKQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE1MDg0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29y
a2luZyBjb3B5KQpAQCAtNDMxLDEyICs0MzEsMTIgQEAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWU6CiAKIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoK
ICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hl
Y2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQotICAgIGZ1bmN0aW9uQXJpdHlD
aGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9zbG93X3BhdGhfY2FsbF9hcml0eUNo
ZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93
X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogCiAKIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrOgogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2Nr
R2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9j
b25zdHJ1Y3QpCi0gICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJl
Z2luLCBfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9u
QXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1
Y3RfYXJpdHlDaGVjaykKIAogCiAjIFZhbHVlLXJlcHJlc2VudGF0aW9uLXNwZWNpZmljIGNvZGUu
CkBAIC00NzQsNTUgKzQ3NCw1NSBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKIAogX2xsaW50X29w
X2xlc3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2xlc3MpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykKICAgICBkaXNw
YXRjaCg0KQogCiAKIF9sbGludF9vcF9sZXNzZXE6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xlc3NlcSkKKyAgICBjYWxsU2xvd1BhdGgo
X3Nsb3dfcGF0aF9sZXNzZXEpCiAgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfZ3JlYXRl
cjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ3JlYXRlcikKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9ncmVhdGVyKQogICAgIGRp
c3BhdGNoKDQpCiAKIAogX2xsaW50X29wX2dyZWF0ZXJlcToKICAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ3JlYXRlcmVxKQorICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX2dyZWF0ZXJlcSkKICAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGlu
dF9vcF9tb2Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX21vZCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9tb2QpCiAgICAgZGlz
cGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfdHlwZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90eXBlb2YpCisgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfdHlwZW9mKQogICAgIGRpc3BhdGNoKDMpCiAKIAogX2xsaW50X29wX2lzX29i
amVjdDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfaXNfb2JqZWN0KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2lzX29iamVjdCkK
ICAgICBkaXNwYXRjaCgzKQogCiAKIF9sbGludF9vcF9pc19mdW5jdGlvbjoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfZnVuY3Rpb24p
CisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaXNfZnVuY3Rpb24pCiAgICAgZGlzcGF0Y2go
MykKIAogCiBfbGxpbnRfb3BfaW46CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2luKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2lu
KQogICAgIGRpc3BhdGNoKDQpCiAKIG1hY3JvIGdldFB1dFRvQmFzZU9wZXJhdGlvbkZpZWxkKHNj
cmF0Y2gsIHNjcmF0Y2gxLCBmaWVsZE9mZnNldCwgZmllbGRHZXR0ZXIpCkBAIC0xMTMxLDcgKzEx
MzEsNyBAQCBfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6CiAKIF9sbGludF9vcF9zdHJjYXQ6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X3N0cmNhdCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9zdHJjYXQpCiAgICAgZGlzcGF0
Y2goNCkKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJMTEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJbnRT
bG93UGF0aHMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhz
LmgiCiAjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q29tbW9uU2xvd1BhdGhzLmgiCisKKyNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5oIgorI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERy
aXZlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCisjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1dpdGhTY29w
ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25z
LmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9iamVjdENv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZVJhcmVEYXRhSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBCRUdJTl9OT19TRVRfUEMoKSBcCisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsgICAgICBcCisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpCisKKyNpZm5kZWYgTkRFQlVHCisjZGVmaW5lIFNFVF9QQ19GT1JfU1RVQlMo
KSBkbyB7IFwKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KHBjKTsg
XAorICAgICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjICsgMSk7IFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKyNlbHNlCisjZGVmaW5lIFNFVF9QQ19GT1JfU1RVQlMoKSBkbyB7IFwKKyAgICAgICAg
ZXhlYy0+c2V0Q3VycmVudFZQQyhwYyArIDEpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5k
aWYKKworI2RlZmluZSBCRUdJTigpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEJF
R0lOX05PX1NFVF9QQygpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIFNFVF9QQ19GT1JfU1RV
QlMoKQorCisjZGVmaW5lIE9QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5v
cGVyYW5kKSkKKyNkZWZpbmUgT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3BlcmFu
ZCkpCisKKyNkZWZpbmUgUkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAgICAgIFwKKyAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChmaXJzdCwgc2Vjb25kKTsgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBFTkRfSU1QTCgpIFJFVFVSTl9UV08ocGMsIGV4ZWMp
CisKKyNkZWZpbmUgVEhST1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgdm0uZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHBjID0gTExJbnQ6OnJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFTkRfSU1QTCgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIENIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbikpIHsgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHBjID0gTExJbnQ6OnJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgRU5EKCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBCUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIGJDb25kaXRpb24gPSAoY29uZGl0aW9uKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDSEVDS19FWENFUFRJT04oKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoYkNvbmRpdGlvbikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMg
Kz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAg
ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IFJFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgclJl
dHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOyAg
ICAgICAgICAgICAgICBcCisgICAgICAgIE9QKDEpID0gclJldHVyblZhbHVlOyAgICAgICAgICBc
CisgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisjZGVmaW5lIFJFVFVSTl9Q
Uk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1Zh
bHVlIHJwUGV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIE9QKDEpID0gcnBQZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBQUk9GSUxFX1ZBTFVFKG9wY29kZSwgcnBQZXR1cm5WYWx1ZSk7ICAgICAgICAgIFwK
KyAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgUFJPRklMRV9WQUxVRShvcGNvZGUs
IHZhbHVlKSBkbyB7IFwKKyAgICAgICAgcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5w
cm9maWxlLT5tX2J1Y2tldHNbMF0gPSBcCisgICAgICAgIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZWxzZSAvLyBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCisjZGVmaW5lIFJFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVl
KSBSRVRVUk4odmFsdWUpCisKKyNkZWZpbmUgUFJPRklMRV9WQUxVRShvcGNvZGUsIHZhbHVlKSBk
byB7IH0gd2hpbGUgKGZhbHNlKQorCisjZW5kaWYgLy8gRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQor
CisjZGVmaW5lIENBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgUkVUVVJOX1RXTygoY2Fs
bFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBDQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRp
b25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIGN0RXhl
YyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJ
bnN0cnVjdGlvbiogY3RQQyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICB2bS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgQ0FMTF9FTkRfSU1QTChjdEV4ZWMsIExMSW50OjpjYWxs
VG9UaHJvdyhjdEV4ZWMsIGN0UEMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IENBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIEV4ZWNTdGF0ZSogY2NlRXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBjY2VQQyA9IChwYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IENBTExfRU5EX0lNUEwoY2NlRXhlYywgTExJbnQ6OmNhbGxUb1Rocm93KGNjZUV4ZWMsIGNjZVBD
KSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBDQUxMX1JFVFVSTihleGVjLCBw
YywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3Rh
dGUqIGNyRXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBJbnN0cnVjdGlvbiogY3JQQyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBjckNhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDQUxMX0NIRUNLX0VYQ0VQVElP
TihjckV4ZWMtPmNhbGxlckZyYW1lKCksIGNyUEMpOyAgXAorICAgICAgICBDQUxMX0VORF9JTVBM
KGNyRXhlYywgY3JDYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQoreworICAg
IEJFR0lOKCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0
eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwor
ICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDID0g
ZXhlYy0+cmV0dXJuUEMoKTsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Cisg
ICAgICAgIHZtLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAg
ICAgICAgTExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCByZXR1cm5QQyk7Cisg
ICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIFJFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBC
RUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBD
ID0gZXhlYy0+cmV0dXJuUEMoKTsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7
CisgICAgICAgIHZtLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsK
KyAgICAgICAgTExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCByZXR1cm5QQyk7
CisgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIFJFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEJF
R0lOKCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRl
KHZtLCBleGVjKSk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2Vk
UihwY1sxXS51Lm9wZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOwor
ICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX3RoaXMpCit7
CisgICAgQkVHSU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oT1AoMikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25z
dHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29u
c3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorCisgICAgc2l6ZV90IGlu
bGluZUNhcGFjaXR5ID0gcGNbM10udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gY29uc3RydWN0b3ItPmFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+
c3RydWN0dXJlKCk7CisgICAgUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykKK3sKKyAgICBC
RUdJTigpOworICAgIEpTVmFsdWUgdjEgPSBPUCgxKS5qc1ZhbHVlKCk7CisjaWYgRU5BQkxFKFZB
TFVFX1BST0ZJTEVSKQorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfdG9fdGhpcykgLSAxXS51LnBy
b2ZpbGUtPm1fYnVja2V0c1swXSA9CisgICAgICAgIEpTVmFsdWU6OmVuY29kZSh2MS5zdHJ1Y3R1
cmVPclVuZGVmaW5lZCgpKTsKKyNlbmRpZgorICAgIFJFVFVSTih2MS50b1RoaXMoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1v
ZGUpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkKK3sKKyAgICBCRUdJTigp
OworICAgIFJFVFVSTihqc0Jvb2xlYW4oIU9QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVj
KSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZXEpCit7CisgICAgQkVHSU4oKTsK
KyAgICBSRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1
ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25lcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVx
dWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKwor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmljdGVxKQoreworICAgIEJFR0lOKCk7CisgICAg
UkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBPUF9DKDIpLmpzVmFs
dWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uc3RyaWN0ZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKCFKU1Zh
bHVlOjpzdHJpY3RFcXVhbChleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sZXNzKQoreworICAgIEJFR0lO
KCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgT1BfQygyKS5qc1Zh
bHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbGVzc2VxKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NF
cTx0cnVlPihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyKQoreworICAgIEJFR0lOKCk7Cisg
ICAgUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIE9QX0MoMykuanNWYWx1ZSgp
LCBPUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dy
ZWF0ZXJlcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8
ZmFsc2U+KGV4ZWMsIE9QX0MoMykuanNWYWx1ZSgpLCBPUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30K
KworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luYykKK3sKKyAgICBCRUdJTigpOworICAgIFJF
VFVSTihqc051bWJlcihPUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRV
Uk4oanNOdW1iZXIoT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fbnVtYmVyKQoreworICAgIEJFR0lOKCk7CisgICAg
UkVUVVJOKGpzTnVtYmVyKE9QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCit7CisgICAgQkVHSU4oKTsKKyAgICBS
RVRVUk4oanNOdW1iZXIoLU9QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIHYxID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IE9QX0MoMykuanNW
YWx1ZSgpOworICAgIAorI2lmIDEgLy8gTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRh
TG9nKCJUcnlpbmcgdG8gYWRkICIsIHYxLCAiIHRvICIsIHYyLCAiLlxuIik7CisjZW5kaWYKKyAg
ICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgUkVU
VVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAg
ICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBSRVRV
Uk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBS
RVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworLy8gVGhlIGZvbGxvd2lu
ZyBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgbmVlZCB0byBiZSBzdXJlIHRvIHJ1
bgorLy8gdG9OdW1iZXIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8g
dG9OdW1iZXIoKSBpcyBpZGVtcG90ZW50CisvLyBpZiBhbiBleGNlcHRpb24gaXMgYWxyZWFkeSBz
ZXQgb24gdGhlIEV4ZWNTdGF0ZS4pCisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tdWwpCit7
CisgICAgQkVHSU4oKTsKKyAgICBkb3VibGUgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpOworICAgIGRvdWJsZSBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7
CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgKiBiKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9zdWIpCit7CisgICAgQkVHSU4oKTsKKyAgICBkb3VibGUgYSA9IE9QX0MoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgLSBiKSk7Cit9CisKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9kaXYpCit7CisgICAgQkVHSU4oKTsKKyAgICBkb3VibGUgYSA9IE9Q
X0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBiID0gT1BfQygzKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgLyBiKSk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tb2QpCit7CisgICAgQkVHSU4oKTsKKyAgICBk
b3VibGUgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBi
ID0gT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVy
KGZtb2QoYSwgYikpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKK3sK
KyAgICBCRUdJTigpOworICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYyk7CisgICAgdWludDMyX3QgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMp
OworICAgIFJFVFVSTihqc051bWJlcihhIDw8IChiICYgMzEpKSk7Cit9CisKK1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9yc2hpZnQpCit7CisgICAgQkVHSU4oKTsKKyAgICBpbnQzMl90IGEgPSBP
UF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAgIHVpbnQzMl90IGIgPSBPUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoYSA+PiAoYiAm
IDMxKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKK3sKKyAgICBC
RUdJTigpOworICAgIHVpbnQzMl90IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVj
KTsKKyAgICB1aW50MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7Cisg
ICAgUkVUVVJOKGpzTnVtYmVyKGEgPj4gKGIgJiAzMSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2JpdGFuZCkKK3sKKyAgICBCRUdJTigpOworICAgIGludDMyX3QgYSA9IE9QX0Mo
MikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgaW50MzJfdCBiID0gT1BfQygzKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoYSAmIGIpKTsKK30KKwor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQoreworICAgIEJFR0lOKCk7CisgICAgaW50
MzJfdCBhID0gT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGIg
PSBPUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihh
IHwgYikpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQoreworICAgIEJF
R0lOKCk7CisgICAgaW50MzJfdCBhID0gT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsK
KyAgICBpbnQzMl90IGIgPSBPUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAgIFJF
VFVSTihqc051bWJlcihhIF4gYikpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHlw
ZW9mKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4
ZWMsIE9QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9p
c19vYmplY3QpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKGpzSXNPYmpl
Y3RUeXBlKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXNfZnVuY3Rpb24pCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29s
ZWFuKGpzSXNGdW5jdGlvblR5cGUoT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbikKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xl
YW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwp
Cit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMikuanNWYWx1
ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMp
OworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
CisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChz
dWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBp
KTsKKyAgICBlbHNlIGlmIChpc05hbWUoc3Vic2NyaXB0KSkKKyAgICAgICAgY291bGREZWxldGUg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBl
eGVjLCBqc0Nhc3Q8TmFtZUluc3RhbmNlKj4oc3Vic2NyaXB0LmFzQ2VsbCgpKS0+cHJpdmF0ZU5h
bWUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOworICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxldGUg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYgZXhl
Yy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIFJF
VFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3N0cmNhdCkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc1N0cmluZyhleGVjLCAm
T1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
dG9fcHJpbWl0aXZlKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKE9QX0MoMikuanNWYWx1
ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTUwODQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDggKzI5LDEwIEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiTmFtZUluc3Rh
bmNlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKSB8fCBF
TkFCTEUoTExJTlQpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC05Nyw2ICs5OSwxMDkgQEAgaW5s
aW5lIGJvb2wgb3BJbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgIHJldHVybiBiYXNlT2Jq
LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eSk7CiB9CiAKLX0gfSAvLyBuYW1lc3BhY2UgSlND
OjpDb21tb25TbG93UGF0aHMKK30gLy8gbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocworCitjbGFz
cyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKKyNpZiBVU0UoSlNWQUxVRTY0KQor
Ly8gQWNjb3JkaW5nIHRvIEMrKyBydWxlcywgYSB0eXBlIHVzZWQgZm9yIHRoZSByZXR1cm4gc2ln
bmF0dXJlIG9mIGZ1bmN0aW9uIHdpdGggQyBsaW5rYWdlIChpLmUuCisvLyAnZXh0ZXJuICJDIicp
IG5lZWRzIHRvIGJlIFBPRDsgaGVuY2UgcHV0dGluZyBhbnkgY29uc3RydWN0b3JzIGludG8gaXQg
Y291bGQgY2F1c2UgZWl0aGVyIGNvbXBpbGVyCisvLyB3YXJuaW5ncywgb3Igd29yc2UsIGEgY2hh
bmdlIGluIHRoZSBBQkkgdXNlZCB0byByZXR1cm4gdGhlc2UgdHlwZXMuCitzdHJ1Y3QgU2xvd1Bh
dGhSZXR1cm5UeXBlIHsKKyAgICB2b2lkKiBhOworICAgIEV4ZWNTdGF0ZSogYjsKK307CisKK2lu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNTdGF0ZSog
YikKK3sKKyAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0OworICAgIHJlc3VsdC5hID0gYTsK
KyAgICByZXN1bHQuYiA9IGI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIHZvaWQg
ZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCBFeGVjU3Rh
dGUqJiBiKQoreworICAgIGEgPSByZXN1bHQuYTsKKyAgICBiID0gcmVzdWx0LmI7Cit9CisKKyNl
bHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCit0eXBlZGVmIGludDY0X3QgU2xvd1BhdGhSZXR1cm5U
eXBlOworCit0eXBlZGVmIHVuaW9uIHsKKyAgICBzdHJ1Y3QgeworICAgICAgICB2b2lkKiBhOwor
ICAgICAgICBFeGVjU3RhdGUqIGI7CisgICAgfSBwYWlyOworICAgIGludDY0X3QgaTsKK30gU2xv
d1BhdGhSZXR1cm5UeXBlRW5jb2Rpbmc7CisKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5j
b2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKK3sKKyAgICBTbG93UGF0aFJldHVyblR5
cGVFbmNvZGluZyB1OworICAgIHUucGFpci5hID0gYTsKKyAgICB1LnBhaXIuYiA9IGI7CisgICAg
cmV0dXJuIHUuaTsKK30KKworaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJu
VHlwZSByZXN1bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBiKQoreworICAgIFNsb3dQYXRoUmV0
dXJuVHlwZUVuY29kaW5nIHU7CisgICAgdS5pID0gcmVzdWx0OworICAgIGEgPSB1LnBhaXIuYTsK
KyAgICBiID0gdS5wYWlyLmI7Cit9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKKyAgICAK
KyNkZWZpbmUgU0xPV19QQVRICisgICAgCisjZGVmaW5lIFNMT1dfUEFUSF9ERUNMKG5hbWUpIFwK
K2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBuYW1lKEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorICAgIAorI2RlZmluZSBTTE9XX1BBVEhfSElEREVOX0RF
Q0wobmFtZSkgXAorU0xPV19QQVRIX0RFQ0wobmFtZSkgV1RGX0lOVEVSTkFMCisgICAgCitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjayk7CitTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cyk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfdG9fdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25vdCk7CitT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VxKTsKK1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbmVxKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3RyaWN0
ZXEpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uc3RyaWN0ZXEpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sZXNzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbGVzc2VxKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ3JlYXRl
cik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXJlcSk7CitTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luYyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2RlYyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX251bWJlcik7
CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSk7CitTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2FkZCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X211bCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N1Yik7CitTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2Rpdik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX21vZCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xzaGlmdCk7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3JzaGlmdCk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3Vyc2hpZnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9i
aXRhbmQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXRvcik7CitTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3R5cGVvZik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29i
amVjdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW4pOworU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
c3RyY2F0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKSB8fCBFTkFCTEUo
TExJTlQpCiAKICNlbmRpZiAvLyBDb21tb25TbG93UGF0aHNfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNiArMTExLDcgQEAgaW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIp
CiBjbGFzcyBKU1ZhbHVlIHsKICAgICBmcmllbmQgc3RydWN0IEVuY29kZWRKU1ZhbHVlSGFzaFRy
YWl0czsKICAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBKSVRTbG93UGF0
aENhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJzOwogICAgIGZyaWVuZCBjbGFzcyBKSVRT
dHViQ2FsbDsKICAgICBmcmllbmQgY2xhc3MgSlNJbnRlcmZhY2VKSVQ7Cg==
</data>
<flag name="review"
          id="225068"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204074</attachid>
            <date>2013-06-07 16:45:30 -0700</date>
            <delta_ts>2013-06-07 16:45:30 -0700</delta_ts>
            <desc>Patch for landing with minor merge up changes.</desc>
            <filename>116889-4.patch</filename>
            <type>text/plain</type>
            <size>134681</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxMzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBA
QAorMjAxMy0wNi0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBmb3VydGhUaWVyOiBUaGUgYmFzZWxpbmUgaml0IGFuZCBMTGludCBzaG91bGQgdXNlIGNv
bW1vbiBzbG93IHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTY4ODkKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAg
ICAgICBNb3ZlZCB0aGUgbGxpbnRfc2xvd19wYXRocyB0aGF0IHJldHVybiBKU1ZhbHVlIGFsb25n
IHdpdGggc2V2ZXJhbCBvdGhlcnMgdG8gQ29tbW9uU2xvd1BhdGhzLmNwcC4KKyAgICAgICAgRWxp
bWluYXRlZCB0aGUgcmVsYXRlZCBKSVQgc3R1YnMuICBDaGFuZ2VzIHRoZSBiYXNlbGluZSBKSVQg
dG8gY2FsbCB0aGVzZSBuZXcgY29tbW9uIHN0dWJzLgorICAgICAgICBBZGRlZCBhIHNpbXBsZSBz
bG93IHBhdGggY2FsbCBjbGFzcyB0aGF0IHVzZXMgYXJndW1lbnQgcmVnaXN0ZXJzIG9yIHRoZSBz
dGFjayBpbnN0ZWFkIG9mCisgICAgICAgIEpJVFN0YWNrRnJhbWUuICBDaGFuZ2VzIHRoZSBleGNl
cHRpb24gbWVjaGFuaXNtIGZvciB0byBjaGVjayBmb3IgYW4gZXhjZXB0aW9uIGFmdGVyIG1ha2lu
ZworICAgICAgICBhIHNsb3dwYXRoIGNhbGwgaW5zdGVhZCBvZiByZXR1cm5pbmcgdG8gdGhlIGhh
bmRsZXIgZGlyZWN0bHkgZm9ybSB0aGUgc2xvd3BhdGggZnVuY3Rpb24uCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVEFyaXRo
bWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9yc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Vyc2hp
ZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2JpdGFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX21vZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVCaW5hcnlB
cml0aE9wU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX211bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1l
dGljMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0UmlnaHRTaGlmdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2JpdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9iaXR4b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVjKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX211bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6OmdldEV4Y2VwdGlvbkxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6
Z2VuZXJpY1Rocm93KToKKyAgICAgICAgKEpTQzo6aml0VGhyb3dOZXcpOgorICAgICAgICAqIGpp
dC9KSVRFeGNlcHRpb25zLmg6CisgICAgICAgIChFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zdHJjYXQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25v
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0eG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9iaXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3Bfc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25zdHJpY3RlcSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3ByaW1p
dGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zdHJjYXQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX25vdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
c3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25zdHJpY3RlcSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b190
aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFs
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0M6OmN0aV92bV90aHJvd19zbG93cGF0aCk6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogaml0L0pJVFN0dWJzQVJNLmg6CisgICAg
ICAgICogaml0L0pJVFN0dWJzQVJNdjcuaDoKKyAgICAgICAgKiBqaXQvSklUU3R1YnNNSVBTLmg6
CisgICAgICAgICogaml0L0pJVFN0dWJzU0g0Lmg6CisgICAgICAgICogaml0L0pJVFN0dWJzWDg2
Lmg6CisgICAgICAgICogaml0L0pJVFN0dWJzWDg2XzY0Lmg6CisgICAgICAgICogaml0L0pTSW50
ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6CisgICAgICAgICogaml0L1Ns
b3dQYXRoQ2FsbC5oOiBBZGRlZC4KKyAgICAgICAgKEpJVFNsb3dQYXRoQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKEpTQzo6
SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cDoKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChTbG93UGF0
aFJldHVyblR5cGUpOgorICAgICAgICAoSlNDOjplbmNvZGVSZXN1bHQpOgorICAgICAgICAoSlND
OjpkZWNvZGVSZXN1bHQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAg
ICAoSlNWYWx1ZSk6CisKIDIwMTMtMDYtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggcmVsZWFzZSBidWlsZC4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjExLDYgKzYxMSw3IEBACiAJCTY1MTEyMkZEMTQwNDZBNEMwMDJCMTAxRCAv
KiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk2NTExMjJGRTE0MDQ2QTRDMDAyQjEwMUQgLyogbGli
ZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwogCQk2
NTExMjMwNzE0MDQ2QjBBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQg
LyogdGVzdFJlZ0V4cC5jcHAgKi87IH07CisJCTY1MTk5NzZFMTc0NDNENjgwMDczOTNDRSAvKiBD
b21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjUxOTk3NkMxNzQ0MzU0ODAwNzM5M0NFIC8qIENvbW1vblNsb3dQYXRocy5jcHAg
Ki87IH07CiAJCTY1MzAzRDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0N0I5
RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXND
b2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovOyB9OwogCQk3
RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5MzRB
QSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNTgzLDYgKzE1ODQsNyBAQAogCQk2NTA3RDI5NzBFODcxRTRBMDBE
N0Q4OTYgLyogSlNUeXBlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1R5cGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMkU1MTQwNDY5
QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHRlc3RSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxl
IjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdFJlZ0V4cDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNjUxOTk3NkMxNzQ0MzU0ODAwNzM5M0NFIC8qIENvbW1v
blNsb3dQYXRocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25TbG93UGF0aHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyog
UGFyc2VyVG9rZW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlclRv
a2Vucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQwMEMwRjBBNjlCQUYyMDA1
MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByb3BlcnR5TmFtZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU5Miw2ICsxNTk0LDcgQEAKIAkJNjU2MjFF
NkMwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJG
OEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7IHBhdGggPSBkZmcvREZHT1NS
RXhpdENvbXBpbGF0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTk4
N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVbnVzZWRQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTY1QUM4M0YxMTc0QzE3QUUwMDExRDhBQiAvKiBTbG93UGF0aENhbGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2xvd1BhdGhDYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RlY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NUM3QTE3MTBBOEVBQUNCMDBGQTM3RUEgLyog
SlNXcmFwcGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dyYXBwZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUM3
QTE3MjBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dyYXBwZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyOTIsNiArMjI5NSw3IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYx
OSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTY1QUM4M0YxMTc0QzE3QUUwMDExRDhBQiAvKiBTbG93UGF0aENhbGwuaCAqLywKIAkJCQkwRjcz
RDdBQjE2NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8sCiAJ
CQkJMEY3M0Q3QUMxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAq
LywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAq
LywKQEAgLTI2MjAsNiArMjYyNCw3IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBy
dW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2
NTE5OTc2QzE3NDQzNTQ4MDA3MzkzQ0UgLyogQ29tbW9uU2xvd1BhdGhzLmNwcCAqLywKIAkJCQlC
Q0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIw
RTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAx
NkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLywKQEAgLTQxMTgsNiArNDEyMyw3IEBACiAJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKKwkJCQk2NTE5OTc2RTE3NDQzRDY4MDA3MzkzQ0UgLyogQ29tbW9uU2xv
d1BhdGhzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQy
N0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJFMTA3RUMzNzYw
MDQyN0E0OCAvKiBBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6U1NFMkNoZWNrUwogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIu
aCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisj
aW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xMjMsMzkgKzEyNCwz
MyBAQCB2b2lkIEpJVDo6ZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKQogCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICNkZWZpbmUgREVGSU5FX0JJTkFSWV9PUChuYW1lKSBcCi0gICAgY2FzZSBu
YW1lOiB7IFwKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpXyMjbmFtZSk7
IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7IFwKLSAgICAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsgXAotICAgICAgICBORVhUX09QQ09ERShuYW1lKTsgXAorICAg
IGNhc2Ugb3BfIyNuYW1lOiB7IFwKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAgICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKKyAgICAgICAgTkVYVF9PUENPREUob3BfIyNuYW1lKTsg
XAogICAgIH0KIAogI2RlZmluZSBERUZJTkVfVU5BUllfT1AobmFtZSkgXAotICAgIGNhc2UgbmFt
ZTogeyBcCi0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV8jI25hbWUpOyBc
Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpOyBcCi0gICAgICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7IFwKLSAgICAgICAgTkVYVF9PUENPREUobmFtZSk7IFwKKyAgICBjYXNlIG9wXyMj
bmFtZTogeyBcCisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOyBcCisgICAgICAgIE5FWFRfT1BDT0RFKG9wXyMjbmFtZSk7IFwKICAgICB9CiAK
ICNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKICNkZWZpbmUgREVGSU5FX0JJTkFSWV9PUChu
YW1lKSBcCi0gICAgY2FzZSBuYW1lOiB7IFwKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3RpXyMjbmFtZSk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDIpOyBcCi0gICAgICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QyKTsgXAotICAg
ICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOyBcCi0g
ICAgICAgIE5FWFRfT1BDT0RFKG5hbWUpOyBcCisgICAgY2FzZSBvcF8jI25hbWU6IHsgXAorICAg
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAor
ICAgICAgICBORVhUX09QQ09ERShvcF8jI25hbWUpOyBcCiAgICAgfQogCiAjZGVmaW5lIERFRklO
RV9VTkFSWV9PUChuYW1lKSBcCi0gICAgY2FzZSBuYW1lOiB7IFwKLSAgICAgICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpXyMjbmFtZSk7IFwKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDIpOyBcCi0gICAgICAg
IHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7IFwKLSAgICAg
ICAgTkVYVF9PUENPREUobmFtZSk7IFwKKyAgICBjYXNlIG9wXyMjbmFtZTogeyBcCisgICAgICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCisgICAg
ICAgIE5FWFRfT1BDT0RFKG9wXyMjbmFtZSk7IFwKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFM
VUUzMl82NCkKIApAQCAtMjExLDE1ICsyMDYsMTUgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAg
ICAgICBERUZJTkVfQklOQVJZX09QKG9wX2RlbF9ieV92YWwpCi0gICAgICAgIERFRklORV9CSU5B
UllfT1Aob3BfaW4pCi0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfbGVzcykKLSAgICAgICAg
REVGSU5FX0JJTkFSWV9PUChvcF9sZXNzZXEpCi0gICAgICAgIERFRklORV9CSU5BUllfT1Aob3Bf
Z3JlYXRlcikKLSAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9ncmVhdGVyZXEpCi0gICAgICAg
IERFRklORV9VTkFSWV9PUChvcF9pc19mdW5jdGlvbikKLSAgICAgICAgREVGSU5FX1VOQVJZX09Q
KG9wX2lzX29iamVjdCkKLSAgICAgICAgREVGSU5FX1VOQVJZX09QKG9wX3R5cGVvZikKKyAgICAg
ICAgREVGSU5FX0JJTkFSWV9PUChkZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfQklOQVJZX09Q
KGluKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKGxlc3MpCisgICAgICAgIERFRklORV9CSU5B
UllfT1AobGVzc2VxKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKGdyZWF0ZXIpCisgICAgICAg
IERFRklORV9CSU5BUllfT1AoZ3JlYXRlcmVxKQorICAgICAgICBERUZJTkVfVU5BUllfT1AoaXNf
ZnVuY3Rpb24pCisgICAgICAgIERFRklORV9VTkFSWV9PUChpc19vYmplY3QpCisgICAgICAgIERF
RklORV9VTkFSWV9PUCh0eXBlb2YpCiAKICAgICAgICAgREVGSU5FX09QKG9wX2FkZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2JpdGFuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2
aXNpb24gMTUxMzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgzLDYgKzI4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHZvaWQgY3Rp
UGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKENvZGVCbG9jayogY29kZWJsb2NrLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIAog
ICAgIGNsYXNzIEpJVCA6IHByaXZhdGUgSlNJbnRlcmZhY2VKSVQgeworICAgICAgICBmcmllbmQg
Y2xhc3MgSklUU2xvd1BhdGhDYWxsOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7
CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOwogCkBA
IC02MDksNyArNjEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0VGFn
QXNCb29sSW1tZWRpYXRlKFJlZ2lzdGVySUQgcmVnKTsKICAgICAgICAgdm9pZCBjb21waWxlQmlu
YXJ5QXJpdGhPcChPcGNvZGVJRCwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBzcmMxLCB1bnNpZ25l
ZCBzcmMyLCBPcGVyYW5kVHlwZXMgb3BpKTsKLSAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5QXJp
dGhPcFNsb3dDYXNlKE9wY29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwg
dW5zaWduZWQgZHN0LCB1bnNpZ25lZCBzcmMxLCB1bnNpZ25lZCBzcmMyLCBPcGVyYW5kVHlwZXMs
IGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50
RmFzdENhc2UpOworICAgICAgICB2b2lkIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoSW5z
dHJ1Y3Rpb24qLCBPcGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIHVu
c2lnbmVkIGRzdCwgdW5zaWduZWQgc3JjMSwgdW5zaWduZWQgc3JjMiwgT3BlcmFuZFR5cGVzLCBi
b29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZh
c3RDYXNlKTsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZS
ZWcsIElkZW50aWZpZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGlu
dCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVzdWx0
VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2Fs
bC5oIgogCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC04MCw5ICs4MSw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24KICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7IC8vIDB4N2ZmZmZmZmYgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIGRvdWJsZSBjaGVjawogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X25lZ2F0ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAgICBz
dHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZWdhdGUpOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lz
dGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQgb3Bjb2Rl
LCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmRpdGlvbikKQEAgLTE5OCwxMCArMTk5LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2xzaGlmdChJbnN0cnVjdGlvbgogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8v
IGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCi0g
ICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2xzaGlmdCk7Ci0gICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAg
IHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2xzaGlmdCk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVn
aXN0ZXIpOwogfQogCiAvLyBSaWdodFNoaWZ0ICg+PikgYW5kIFVuc2lnbmVkUmlnaHRTaGlmdCAo
Pj4+KSBoZWxwZXIKQEAgLTI5NiwxMCArMjk2LDkgQEAgdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0
U2xvd0Nhc2UoSW5zdHJ1YwogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBDYW4n
dCByZXByZXNlbnQgdW5zaWduZWQgcmVzdWx0IGFzIGFuIGltbWVkaWF0ZQogICAgIH0KIAotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGlzVW5zaWduZWQgPyBjdGlfb3BfdXJzaGlmdCA6
IGN0aV9vcF9yc2hpZnQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIGlzVW5z
aWduZWQgPyBzbG93X3BhdGhfdXJzaGlmdCA6IHNsb3dfcGF0aF9yc2hpZnQpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKIH0KIAogLy8gUmlnaHRTaGlmdCAoPj4pCkBAIC0zNjEsMTAgKzM2MCw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24KICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
aW50MzIgY2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXRh
bmQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AyKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9iaXRhbmQp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVn
VDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogLy8gQml0T3IgKHwpCkBAIC00MDIsMTAgKzQw
MCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRvcihJbnN0cnVjdGlvbioKICAgICAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gaW50MzIgY2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9v
cF9iaXRvcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Jp
dG9yKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEs
IHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAKIC8vIEJpdFhvciAoXikKQEAgLTQ0Mywx
MCArNDQwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdHhvcihJbnN0cnVjdGlvbgogICAg
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wX2JpdHhvcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX2JpdHhvcik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3Qs
IHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTQ2Nyw5ICs0NjMsOSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5jKEluc3RydWN0aW9uKiBjCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gb3Zl
cmZsb3cgY2hlY2sKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9pbmMp
OwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHNyY0RzdCk7Ci0gICAgc3R1YkNhbGwuY2FsbChz
cmNEc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfaW5jKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAg
IGVtaXRMb2FkKHNyY0RzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpA
QCAtNDkwLDkgKzQ4Niw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24q
IGMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBvdmVyZmxvdyBjaGVjawogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3RpX29wX2RlYyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjRHN0KTsKLSAg
ICBzdHViQ2FsbC5jYWxsKHNyY0RzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWMpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoc3JjRHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKIH0KIAogLy8gQWRkaXRpb24gKCspCkBAIC01MDYsMTAgKzUwMiw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2FkZChJbnN0cnVjdGlvbiogY3VycmUKIAogICAgIGlmICghdHlwZXMu
Zmlyc3QoKS5taWdodEJlTnVtYmVyKCkgfHwgIXR5cGVzLnNlY29uZCgpLm1pZ2h0QmVOdW1iZXIo
KSkgewogICAgICAgICBhZGRTbG93Q2FzZSgpOwotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3BfYWRkKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsK
LSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICAgICAgc3R1YkNhbGwuY2Fs
bChkc3QpOworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2FkZCk7CisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CisgICAgICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rl
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYxMSwxMCArNjA2LDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiogYwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2FkZCk7Ci0gICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0
dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2FkZCk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIp
OwogfQogCiAvLyBTdWJ0cmFjdGlvbiAoLSkKQEAgLTY4OSw3ICs2ODMsNiBAQCB2b2lkIEpJVDo6
ZW1pdFN1YjMyQ29uc3RhbnQodW5zaWduZWQgZHN0CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3Vi
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCkBAIC03MTUsMTAgKzcwOCw5IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9zdWIoSW5zdHJ1Y3Rpb24qIGMKICAgICAgICAgfQogICAgIH0K
IAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9zdWIpOwotICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAg
ICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdWIpOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lz
dGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcChPcGNvZGVJRCBvcGNvZGVJ
RCwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgT3BlcmFuZFR5cGVz
IHR5cGVzLCBKdW1wTGlzdCYgbm90SW50MzJPcDEsIEp1bXBMaXN0JiBub3RJbnQzMk9wMiwgYm9v
bCBvcDFJc0luUmVnaXN0ZXJzLCBib29sIG9wMklzSW5SZWdpc3RlcnMpCkBAIC0xMDIyLDExICsx
MDE0LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX211bChJbnN0cnVjdGlvbiogYwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgTGFiZWwgaml0U3R1YkNhbGwodGhpcyk7Ci0gICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpX29wX211bCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
b3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwo
ZHN0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX211bCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBl
bWl0TG9hZChkc3QsIHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAvLyBE
aXZpc2lvbiAoLykKQEAgLTEwOTcsOCArMTA4Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RpdihJ
bnN0cnVjdGlvbiogY3VycmUKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kaXYoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKwogICAg
IE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogICAgIGlmICghc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
CkBAIC0xMTEzLDEwICsxMTAyLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RpdihJbnN0cnVj
dGlvbiogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX2Rpdik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX2Rpdik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3QsIHJl
Z1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiAvLyBNb2QgKCUpCkBAIC0xMTUy
LDEwICsxMTQwLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZQog
ICAgIG51bWVyYXRvclBvc2l0aXZlLmxpbmsodGhpcyk7CiAgICAgZW1pdFN0b3JlSW50MzIoZHN0
LCByZWdUMSwgKG9wMSA9PSBkc3QgfHwgb3AyID09IGRzdCkpOwogI2Vsc2UKLSAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbW9kKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChvcDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMik7Ci0gICAgc3R1YkNhbGwuY2Fs
bChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAg
IGVtaXRMb2FkKHJlc3VsdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAjZW5k
aWYKIH0KIApAQCAtMTE2MywxNyArMTE1MCwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9k
KEluc3RydWN0aW9uKiBjCiB7CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICB1bnNp
Z25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2ln
bmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQg
b3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9tb2QpOwotICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAgICBzdHViQ2Fs
bC5jYWxsKHJlc3VsdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CisgICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVy
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgVU5V
U0VEX1BBUkFNKGl0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRl
ICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKIAogI2lmbmRlZiBO
REVCVUcKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMjE5LDE0ICsyMjAsMTQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmVnYXRlKEluc3RydWN0aW9uKiBjdQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bmVnYXRlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyAweDdmZmZm
ZmZmIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb3VibGUgY2hlY2sKIAotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZWdhdGUpOwotICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9uZWdhdGUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yNDksMTcgKzI1MCwxMiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1CiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfbHNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBVTlVTRURfUEFSQU0ob3AxKTsKLSAgICBVTlVTRURf
UEFSQU0ob3AyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9sc2hpZnQpOwotICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChy
ZWdUMik7Ci0gICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbHNoaWZ0KTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpAQCAtMzAzLDMxICsyOTksMjUgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3JzaGlmdChJbnN0cnVjdGlvbgogICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9v
cF9yc2hpZnQpOworICAgIFVOVVNFRF9QQVJBTShvcDEpOwogCi0gICAgaWYgKGlzT3BlcmFuZENv
bnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQob3AyKSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9w
MiwgcmVnVDIpOwotICAgIH0gZWxzZSB7CisKKyAgICBlbHNlIHsKICAgICAgICAgaWYgKHN1cHBv
cnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkpIHsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKLSAgICAgICAgICAgIC8vIFdlJ3JlIHJlbG9hZGluZyBvcDEgdG8gcmVn
VDAgYXMgd2UgY2FuIG5vIGxvbmdlciBndWFyYW50ZWUgdGhhdAotICAgICAgICAgICAgLy8gd2Ug
aGF2ZSBub3QgbXVuZ2VkIHRoZSBvcGVyYW5kLiAgSXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHNo
aWZ0ZWQKLSAgICAgICAgICAgIC8vIGNvcnJlY3RseSwgYnV0IGl0IHN0aWxsIHdpbGwgbm90IGhh
dmUgYmVlbiB0YWdnZWQuCi0gICAgICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJl
Z1QwKTsKLSAgICAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QyKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1Qw
KTsKLSAgICAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QyKTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3JzaGlmdCk7
CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJl
c3VsdCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC00MTgsMTAgKzQwOCw5IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF91cnNoaWZ0KEluc3RydWN0aW8KICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAv
LyBDYW4ndCByZXByZXNlbnQgdW5zaWduZWQgcmVzdWx0IGFzIGFuIGltbWVkaWF0ZQogICAgIH0K
ICAgICAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdXJzaGlmdCk7Ci0g
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AyLCByZWdUMSk7Ci0gICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
dXJzaGlmdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGRzdCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChP
cGNvZGVJRCwgdW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCkBAIC02MDcsMjYgKzU5NiwxMiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24qIGN1CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Yml0YW5kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgaWYgKGlzT3Bl
cmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX2JpdGFuZCk7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KG9wMSwgcmVnVDIpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAg
ICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlSW50KG9wMikpIHsKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX2JpdGFuZCk7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsK
LSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyLCByZWdUMik7Ci0gICAgICAgIHN0dWJD
YWxsLmNhbGwocmVzdWx0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfYml0YW5kKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
b3AxLCByZWdUMik7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICAg
ICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOwotICAgIH0KKworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYml0YW5kKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luYyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtNjQ0LDEzICs2MTksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2luYyhJbnN0cnVjdGlvbiogYwogewogICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKLSAgICBKdW1wIG5vdEltbSA9IGdldFNsb3dDYXNl
KGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9pbmMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihzcmNEc3QsIHJlZ1QwKTsKLSAgICBub3RJbW0ubGluayh0aGlzKTsK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfaW5jKTsKLSAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuY2FsbChzcmNEc3QpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTY2OCwxMyArNjQxLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24q
IGMKIHsKICAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogCi0gICAgSnVtcCBub3RJbW0gPSBnZXRTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGVjKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
RHN0LCByZWdUMCk7Ci0gICAgbm90SW1tLmxpbmsodGhpcyk7Ci0gICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX2RlYyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDAp
OwotICAgIHN0dWJDYWxsLmNhbGwoc3JjRHN0KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEJFR0lOOiBPUF9NT0QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCkBAIC03MTksMTAgKzY5MCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoSW5zdHJ1
Y3Rpb24qIGMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlz
LCBjdGlfb3BfbW9kKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMyk7Ci0gICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDIpOwotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX21vZCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCiAjZWxzZSAvLyBDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KQpAQCAtNzMzLDEwICs3MDMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKElu
c3RydWN0aW9uKiBjdXJyZQogICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9tb2QpOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVnVDIpOwotICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KG9wMiwgcmVnVDIpOwotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICBVTlVT
RURfUEFSQU0ob3AxKTsKKyAgICBVTlVTRURfUEFSQU0ob3AyKTsKKworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9k
KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0LCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKQEAgLTc5Niw3ICs3NjgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3Ao
T3Bjb2RlSUQgCiAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhyZWdUMCwgcmVnVDAp
OwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShPcGNvZGVJRCBv
cGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5zaWduZWQg
cmVzdWx0LCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgT3BlcmFuZFR5cGVzIHR5cGVzLCBi
b29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZh
c3RDYXNlKQordm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkIHJlc3VsdCwgdW5zaWduZWQgb3AxLCB1
bnNpZ25lZCBvcDIsIE9wZXJhbmRUeXBlcyB0eXBlcywgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRG
YXN0Q2FzZSwgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSkKIHsKICAgICAvLyBXZSBh
c3N1bWUgdGhhdCBzdWJ0cmFjdGluZyBUYWdUeXBlTnVtYmVyIGlzIGVxdWl2YWxlbnQgdG8gYWRk
aW5nIERvdWJsZUVuY29kZU9mZnNldC4KICAgICBDT01QSUxFX0FTU0VSVCgoKFRhZ1R5cGVOdW1i
ZXIgKyBEb3VibGVFbmNvZGVPZmZzZXQpID09IDApLCBUYWdUeXBlTnVtYmVyX1BMVVNfRG91Ymxl
RW5jb2RlT2Zmc2V0X0VRVUFMU18wKTsKQEAgLTgxNSwxNyArNzg3LDEyIEBAIHZvaWQgSklUOjpj
b21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKE8KICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8v
IEludGVnZXIgb3ZlcmZsb3cgY2FzZSAtIHdlIGNvdWxkIGhhbmRsZSB0aGlzIGluIEpJVCBjb2Rl
LCBidXQgdGhpcyBpcyBsaWtlbHkgcmFyZS4KICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbXVsICYm
ICFvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSAmJiAhb3AySGFzSW1tZWRpYXRlSW50RmFzdENh
c2UpIC8vIG9wX211bCBoYXMgYW4gZXh0cmEgc2xvdyBjYXNlIHRvIGhhbmRsZSAwICogbmVnYXRp
dmUgbnVtYmVyLgogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihvcDEsIHJlZ1QwKTsKIAogICAgIExhYmVsIHN0dWJGdW5jdGlvbkNhbGwodGhp
cyk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgb3Bjb2RlSUQgPT0gb3BfYWRkID8g
Y3RpX29wX2FkZCA6IG9wY29kZUlEID09IG9wX3N1YiA/IGN0aV9vcF9zdWIgOiBjdGlfb3BfbXVs
KTsKLSAgICBpZiAob3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UgfHwgb3AySGFzSW1tZWRpYXRl
SW50RmFzdENhc2UpIHsKLSAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIHJlZ1Qw
KTsKLSAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJlZ1QxKTsKLSAgICB9Ci0g
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKHJlc3VsdCk7CisKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3Bjb2RlSUQgPT0gb3Bf
YWRkID8gc2xvd19wYXRoX2FkZCA6IG9wY29kZUlEID09IG9wX3N1YiA/IHNsb3dfcGF0aF9zdWIg
OiBzbG93X3BhdGhfbXVsKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiAgICAgSnVtcCBlbmQgPSBqdW1wKCk7CiAK
ICAgICBpZiAob3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UpIHsKQEAgLTg5NCwxMCArODYxLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJyZQogCiAgICAgaWYgKCF0
eXBlcy5maXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8fCAhdHlwZXMuc2Vjb25kKCkubWlnaHRCZU51
bWJlcigpKSB7CiAgICAgICAgIGFkZFNsb3dDYXNlKCk7Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9hZGQpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChv
cDEsIHJlZ1QyKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyLCByZWdUMik7Ci0g
ICAgICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hZGQpOworICAg
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
MzEsNyArODk2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiogYwog
CiAgICAgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9IGlzT3BlcmFuZENvbnN0YW50
SW1tZWRpYXRlSW50KG9wMSk7CiAgICAgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9
ICFvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSAmJiBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0
ZUludChvcDIpOwotICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2Uob3BfYWRkLCBpdGVy
LCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIG9w
Mkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKTsKKyAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dD
YXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BfYWRkLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0
eXBlcywgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RD
YXNlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC05NzYsNyArOTQxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX211bChJ
bnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9IGlz
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kSW1t
ZWRpYXRlSW50KG9wMSkgPiAwOwogICAgIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2Ug
PSAhb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlh
dGVJbnQob3AyKSAmJiBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSA+IDA7Ci0g
ICAgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShvcF9tdWwsIGl0ZXIsIHJlc3VsdCwgb3Ax
LCBvcDIsIHR5cGVzLCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSwgb3AySGFzSW1tZWRpYXRl
SW50RmFzdENhc2UpOworICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoY3VycmVudElu
c3RydWN0aW9uLCBvcF9tdWwsIGl0ZXIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVzLCBvcDFIYXNJ
bW1lZGlhdGVJbnRGYXN0Q2FzZSwgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTEwODIsMTAgKzEwNDcsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9u
KiBjCiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgfQogICAgIC8vIFRoZXJl
IGlzIGFuIGV4dHJhIHNsb3cgY2FzZSBmb3IgKG9wMSAqIC1OKSBvciAoLU4gKiBvcDIpLCB0byBj
aGVjayBmb3IgMCBzaW5jZSB0aGlzIHNob3VsZCBwcm9kdWNlIGEgcmVzdWx0IG9mIC0wLgotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9kaXYpOwotICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KG9wMSwgcmVnVDIpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVn
VDIpOwotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwg
cmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTExMDYsNyArMTA3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9z
dWIoSW5zdHJ1Y3Rpb24qIGMKICAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJv
bUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAgIGNvbXBpbGVCaW5h
cnlBcml0aE9wU2xvd0Nhc2Uob3Bfc3ViLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywg
ZmFsc2UsIGZhbHNlKTsKKyAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgb3Bfc3ViLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcywgZmFsc2Us
IGZhbHNlKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORDogT1Bf
QURELCBPUF9TVUIsIE9QX01VTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNp
b24gMTUxMzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K3N0YXRpYyB1bnNpZ25lZCBnZXRFeGNlcHRpb25Mb2NhdGlvbihWTSogdm0sIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgQVNTRVJUKCFjYWxsRnJh
bWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpOworCisgICAgaWYgKGNhbGxGcmFtZS0+aGFzTG9j
YXRpb25Bc0NvZGVPcmlnaW5JbmRleCgpKQorICAgICAgICByZXR1cm4gY2FsbEZyYW1lLT5ieXRl
Y29kZU9mZnNldEZyb21Db2RlT3JpZ2luSW5kZXgoKTsKKworICAgIHJldHVybiBjYWxsRnJhbWUt
PmxvY2F0aW9uQXNCeXRlY29kZU9mZnNldCgpOworfQorCiBFeGNlcHRpb25IYW5kbGVyIGdlbmVy
aWNUaHJvdyhWTSogdm0sIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZh
bHVlLCB1bnNpZ25lZCB2UENJbmRleCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChleGNlcHRpb25W
YWx1ZSk7CkBAIC01OCwxMCArNjksMTcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3co
Vk0qIHZtLCBFeAogICAgIHZtLT50YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cgPSBjYXRjaFBD
Rm9ySW50ZXJwcmV0ZXI7CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoY2F0Y2hSb3V0aW5lKTsK
LSAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIgPSB7IGNhdGNoUm91dGluZSwg
Y2FsbEZyYW1lIH07CisgICAgRXhjZXB0aW9uSGFuZGxlciBleGNlcHRpb25IYW5kbGVyID0geyBj
YWxsRnJhbWUsIGNhdGNoUm91dGluZX07CiAgICAgcmV0dXJuIGV4Y2VwdGlvbkhhbmRsZXI7CiB9
CiAKK0V4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3dOZXcoVk0qIHZtLCBFeGVjU3RhdGUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGdldEV4Y2VwdGlvbkxvY2F0aW9uKHZtLCBjYWxsRnJhbWUpOworICAgIAorICAgIHJl
dHVybiBnZW5lcmljVGhyb3codm0sIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGJ5dGVjb2Rl
T2Zmc2V0KTsKK30KKwogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhWTSogdm0sIEV4ZWNTdGF0
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZh
dWx0TG9jYXRpb24pCiB7CiAgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyh2bSwgY2FsbEZyYW1lLCBl
eGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMTUxMzQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxMyBA
QCBjbGFzcyBWTTsKIC8vIGZvciB0aGUgdGhyb3dpbmcgYW5kIGhhbmRsaW5nIGV4Y2VwdGlvbnMu
CiAKIHN0cnVjdCBFeGNlcHRpb25IYW5kbGVyIHsKLSAgICB2b2lkKiBjYXRjaFJvdXRpbmU7CiAg
ICAgRXhlY1N0YXRlKiBjYWxsRnJhbWU7CisgICAgdm9pZCogY2F0Y2hSb3V0aW5lOwogfTsKIAog
RXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coVk0qLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIGV4
Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCB2UENJbmRleCk7CiAKK0V4Y2VwdGlvbkhhbmRsZXIgaml0
VGhyb3dOZXcoVk0qLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlKTsKIEV4Y2Vw
dGlvbkhhbmRsZXIgaml0VGhyb3coVk0qLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIGV4Y2VwdGlvblZh
bHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtMTY3LDE0ICsxNjgsMTAgQEAgSklUOjpDb2RlUmVmIEpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgogCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bS0+ZXhj
ZXB0aW9uTG9jYXRpb24pLCByZWdUMik7CiAgICAgc3RvcmVQdHIocmVnVDEsIHJlZ1QyKTsKLSAg
ICBwb2tlKGNhbGxGcmFtZVJlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNr
RnJhbWUsIGNhbGxGcmFtZSkgLyBzaXplb2Yodm9pZCopKTsKLSAgICAKICAgICBzdG9yZVB0cihj
YWxsRnJhbWVSZWdpc3RlciwgJm1fdm0tPnRvcENhbGxGcmFtZSk7Ci0gICAgLy8gU2V0IHRoZSBy
ZXR1cm4gYWRkcmVzcy4KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIoY3RpVk1U
aHJvd1RyYW1wb2xpbmUpLnZhbHVlKCkpLCByZWdUMSk7Ci0gICAgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4ocmVnVDEpOwogCi0gICAgcmV0KCk7CisgICAgbW92ZShUcnVzdGVkSW1t
UHRyKEZ1bmN0aW9uUHRyKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpLnZhbHVlKCkpLCBy
ZWdUMSk7CisgICAganVtcChyZWdUMSk7CiAKICAgICAvLyBBbGwgdHJhbXBvbGluZXMgY29uc3Ry
dWN0ZWQhIGNvcHkgdGhlIGNvZGUsIGxpbmsgdXAgY2FsbHMsIGFuZCBzZXQgdGhlIHBvaW50ZXJz
IG9uIHRoZSBNYWNoaW5lIG9iamVjdC4KICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3Zt
LCB0aGlzLCBHTE9CQUxfVEhVTktfSUQpOwpAQCAtNDMzLDE3ICs0MzAsMTUgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3RvX3ByaW1pdGl2ZShJbnN0cgogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX3ByaW1pdGl2ZSk7
Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5j
YWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19wcmltaXRpdmUpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVy
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyY2F0KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3N0cmNh
dCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
MzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmNhbGwo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdHJjYXQpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTQ3MSwx
MyArNDY2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25vdChJbnN0cnVjdGlvbiogY3VycmUKIHZv
aWQgSklUOjplbWl0U2xvd19vcF9ub3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYyA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfbm90KTsKLSAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChzcmMpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX25vdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0TG9hZChkc3Qs
IHJlZ1QxLCByZWdUMCwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTc1MCwxNyArNzQ0
LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKEluc3RydWN0aW9uKiAKIHZvaWQgSklU
OjplbWl0U2xvd19vcF9zdHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIGRz
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMiA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9zdHJpY3RlcSk7Ci0gICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQoc3JjMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMik7Ci0g
ICAgc3R1YkNhbGwuY2FsbChkc3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc3RyaWN0ZXEpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDAsIGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbnN0cmljdGVxKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC03NzEsMTcgKzc2MiwxNCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmlj
dGVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMxID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMyID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX25zdHJpY3RlcSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3Jj
MSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjMik7Ci0gICAgc3R1YkNhbGwuY2FsbChk
c3QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfbnN0cmljdGVxKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwor
ICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKQEAgLTEwMDEsOSArOTg5LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX251bWJlcihJ
bnN0cnVjdAogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX3RvX251bWJlcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDEsIHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19u
dW1iZXIpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdExvYWQoZHN0LCByZWdU
MSwgcmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHVz
aF9uYW1lX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMTM3LDkg
KzExMjUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKEluc3RyCiAKICAg
ICBKdW1wIGFyZ3NDcmVhdGVkID0gYnJhbmNoMzIoTm90RXF1YWwsIHRhZ0Zvcihkc3QpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwogCi0gICAgSklUU3R1YkNhbGwodGhp
cywgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMpLmNhbGwoKTsKLSAgICBlbWl0U3RvcmUoZHN0LCBy
ZWdUMSwgcmVnVDApOwotICAgIGVtaXRTdG9yZSh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
ZHN0KSwgcmVnVDEsIHJlZ1QwKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBhcmdzQ3JlYXRlZC5saW5rKHRoaXMpOwogfQpA
QCAtMTE4Myw5ICsxMTcwLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKElu
c3RydQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRp
b24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQK
IAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhpcyk7Ci0g
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfY3JlYXRlX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKQEAgLTEyMDUsMTMgKzExOTEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dG9fdGhpcyhJbnN0cnVjdGlvbiogYwogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0KICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF90
b190aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMywgcmVnVDIpOwotICAgIHN0
dWJDYWxsLmNhbGwodGhpc1JlZ2lzdGVyKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX3RoaXMpOworICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfd2lsbF9j
YWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMjgyLDkgKzEyNjUsOSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhCiAKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9jcmVhdGVfYXJndW1lbnRzKS5jYWxsKCk7Ci0gICAgZW1pdFN0b3JlKGFyZ3Vt
ZW50cywgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0U3RvcmUodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKGFyZ3VtZW50cyksIHJlZ1QxLCByZWdUMCk7CisKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV9h
cmd1bWVudHMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgCiAgICAgc2tpcEFyZ3Vt
ZW50c0NyZWF0aW9uLmxpbmsodGhpcyk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wX2dldF9ieV92YWxfZ2VuZXJpYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM0MCwxMCArMzQxLDkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJjYXQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3Bfc3RyY2F0KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVk
SW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7
Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3N0cmNhdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtOTE4LDkgKzkxOCw5IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnUKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRv
ZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9uIHByb2ZpbGUKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIGFsbG9jYXRpb24gZmFpbGVkCiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfY3JlYXRlX3RoaXMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0z
MihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2NyZWF0ZV90aGlz
KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9wcm9maWxlX3dpbGxfY2FsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtOTQ0LDI3ICs5NDQsMjggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5z
dHJ1Y3RpbwogewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX3RoaXMpOwotICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b190aGlzKTsKKyAgICBz
bG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX3ByaW1pdGl2ZSk7
Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19wcmltaXRpdmUp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9ub3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
Ci0gICAgeG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2Up
KSwgcmVnVDApOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9ub3QpOwot
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIAorICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbm90KTsKKyAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfamZhbHNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC05ODgsMTkgKzk4OSwxNSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfanRydWUoSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Yml0eG9yKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXR4b3IpOwotICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAg
c3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX2JpdHhvcik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2JpdG9yKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9iaXRvcik7Ci0gICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1Qx
KTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfYml0b3IpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTAzMSwxMCArMTAyOCw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9zdHJpY3RlcShJbnN0cnVjdGkKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfc3RyaWN0ZXEpOwotICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChy
ZWdUMSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX3N0cmljdGVxKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCkBAIC0xMDQyLDEwICsxMDM4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25zdHJpY3Rl
cShJbnN0cnVjdAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9uc3RyaWN0ZXEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsK
LSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25zdHJpY3RlcSk7Cisg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTA4Myw5ICsxMDc4
LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX251bWJlcihJbnN0cnVjdAogewogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKIAotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9v
cF90b19udW1iZXIpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHVi
Q2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
dG9fbnVtYmVyKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJ
KHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiUmVnaXN0ZXIu
aCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgi
CisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgpAQCAtMzc5LDcxICszODAsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCB0
aHJvd0V4Y2VwCiAjZGVmaW5lIERFRklORV9TVFVCX0ZVTkNUSU9OKHJ0eXBlLCBvcCkgcnR5cGUg
SklUX1NUVUIgY3RpXyMjb3AoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKQogI2VuZGlmCiAKLURFRklO
RV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9jcmVhdGVfdGhpcykKLXsKLSAgICBT
VFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBz
dGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKLQotICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9y
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIEFTU0VSVChj
b25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3Rvciwg
Y29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKLSNlbmRpZgotCi0gICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoY2FsbEZyYW1l
LCBpbmxpbmVDYXBhY2l0eSktPnN0cnVjdHVyZSgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUpOwotCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVk
SlNWYWx1ZSwgb3BfdG9fdGhpcykKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHYxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsK
LSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAg
SlNWYWx1ZSByZXN1bHQgPSB2MS50b1RoaXMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKLSAgICBD
SEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2Fk
ZCkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1Zh
bHVlIHYxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHYyID0g
c3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAgaWYgKHYxLmlzU3RyaW5nKCkgJiYgIXYyLmlz
T2JqZWN0KCkpIHsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhjYWxsRnJhbWUs
IGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoY2FsbEZyYW1lKSk7Ci0gICAgICAgIENIRUNLX0ZP
Ul9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKLSAgICB9Ci0KLSAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2
Mi5hc051bWJlcigpKSk7Ci0KLSAgICAvLyBBbGwgb3RoZXIgY2FzZXMgYXJlIHByZXR0eSB1bmNv
bW1vbgotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGRTbG93Q2FzZShjYWxsRnJhbWUsIHYxLCB2
Mik7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1Zh
bHVlLCBvcF9pbmMpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwot
Ci0gICAgSlNWYWx1ZSB2ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLQotICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcih2LnRvTnVtYmVyKGNhbGxGcmFtZSkgKyAxKTsKLSAgICBDSEVDS19G
T1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgaGFuZGxlX3dhdGNoZG9nX3RpbWVy
KQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTExNDksMjIg
KzEwODUsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfbXVsKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgc3JjMSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1Zh
bHVlKCk7Ci0gICAgSlNWYWx1ZSBzcmMyID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsK
LQotICAgIGlmIChzcmMxLmlzTnVtYmVyKCkgJiYgc3JjMi5pc051bWJlcigpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHNyYzEuYXNOdW1iZXIoKSAqIHNyYzIuYXNO
dW1iZXIoKSkpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHNyYzEudG9OdW1iZXIoY2FsbEZy
YW1lKSAqIHNyYzIudG9OdW1iZXIoY2FsbEZyYW1lKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
Tl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIERF
RklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2Z1bmMpCiB7CiAgICAgU1RVQl9J
TklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMTY5OSwyMiArMTYxOSw2IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICBDSEVDS19GT1JfRVhDRVBU
SU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KLSAg
ICAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9zdWIpCi17Ci0gICAg
U1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMxID0g
c3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNyYzIgPSBzdGFja0Zy
YW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotCi0gICAgaWYgKHNyYzEuaXNOdW1iZXIoKSAmJiBzcmMy
LmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3Jj
MS5hc051bWJlcigpIC0gc3JjMi5hc051bWJlcigpKSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoc3JjMS50b051bWJlcihjYWxsRnJhbWUpIC0gc3JjMi50b051bWJlcihjYWxsRnJhbWUpKTsK
LSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKLX0KIAogc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1
ZSkKIHsKQEAgLTE4MDQsNDYgKzE3MDgsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBv
cF9wdXRfYnlfdmFsCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKIH0KIAotREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2xlc3MpCi17Ci0gICAgU1RVQl9J
TklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihq
c0xlc3M8dHJ1ZT4oY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLCBzdGFj
a0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9F
TkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLURFRklORV9T
VFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9sZXNzZXEpCi17Ci0gICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xl
c3NFcTx0cnVlPihjYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCksIHN0YWNr
RnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VO
RCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQotREVGSU5FX1NU
VUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dyZWF0ZXIpCi17Ci0gICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xl
c3M8ZmFsc2U+KGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKSwgc3RhY2tG
cmFtZS5hcmdzWzBdLmpzVmFsdWUoKSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5E
KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1ERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ3JlYXRlcmVxKQotewotICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
c3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oanNM
ZXNzRXE8ZmFsc2U+KGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKSwgc3Rh
Y2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRf
RU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkKiwgb3BfbG9hZF92YXJhcmdzKQogewogICAgIFNUVUJfSU5JVF9T
VEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTE4NjAsMjEgKzE3MjQsNiBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkKiwgb3BfbG9hZF92YXJhCiAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsK
IH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX25lZ2F0ZSkKLXsK
LSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNy
YyA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7Ci0KLSAgICBpZiAoc3JjLmlzTnVtYmVy
KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLXNyYy5hc051bWJl
cigpKSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1l
OwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoLXNyYy50b051bWJlcihjYWxsRnJhbWUp
KTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFs
dWUsIG9wX3Jlc29sdmVfYmFzZSkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7CkBAIC0xOTI2LDM0ICsxNzc1LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wXwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZSk7CiB9CiAKLURF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9kaXYpCi17Ci0gICAgU1RVQl9J
TklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMxID0gc3RhY2tG
cmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNyYzIgPSBzdGFja0ZyYW1lLmFy
Z3NbMV0uanNWYWx1ZSgpOwotCi0gICAgaWYgKHNyYzEuaXNOdW1iZXIoKSAmJiBzcmMyLmlzTnVt
YmVyKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3JjMS5hc051
bWJlcigpIC8gc3JjMi5hc051bWJlcigpKSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3Jj
MS50b051bWJlcihjYWxsRnJhbWUpIC8gc3JjMi50b051bWJlcihjYWxsRnJhbWUpKTsKLSAgICBD
SEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2Rl
YykKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1Zh
bHVlIHYgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotCi0gICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKHYudG9OdW1iZXIoY2FsbEZyYW1lKSAtIDEpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJ
T05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBE
RUZJTkVfU1RVQl9GVU5DVElPTihpbnQsIG9wX2psZXNzKQogewogICAgIFNUVUJfSU5JVF9TVEFD
S19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTIwMDYsMTcgKzE4MjcsNiBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihpbnQsIG9wX2pncmVhdGVyZXEpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX25vdCkKLXsKLSAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNyYyA9IHN0YWNrRnJh
bWUuYXJnc1swXS5qc1ZhbHVlKCk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbigh
c3JjLnRvQm9vbGVhbihzdGFja0ZyYW1lLmNhbGxGcmFtZSkpOwotICAgIENIRUNLX0ZPUl9FWENF
UFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQot
CiBERUZJTkVfU1RVQl9GVU5DVElPTihpbnQsIG9wX2p0cnVlKQogewogICAgIFNUVUJfSU5JVF9T
VEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTIxNDQsNDcgKzE5NTQsNiBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTihpbnQsIG9wX2VxX3N0cmluZ3MpCiAjZW5kaWYKIH0KIAotREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2xzaGlmdCkKLXsKLSAgICBTVFVCX0lOSVRfU1RB
Q0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHZhbCA9IHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBzaGlmdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5q
c1ZhbHVlKCk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoKHZhbC50b0ludDMyKGNhbGxGcmFt
ZSkpIDw8IChzaGlmdC50b1VJbnQzMihjYWxsRnJhbWUpICYgMHgxZikpOwotICAgIENIRUNLX0ZP
Ul9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfYml0YW5kKQot
ewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUg
c3JjMSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBzcmMyID0g
c3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLQotICAgIEFTU0VSVCghc3JjMS5pc0ludDMy
KCkgfHwgIXNyYzIuaXNJbnQzMigpKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNr
RnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3JjMS50b0lu
dDMyKGNhbGxGcmFtZSkgJiBzcmMyLnRvSW50MzIoY2FsbEZyYW1lKSk7Ci0gICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yc2hpZnQpCi17
Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSB2
YWwgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgc2hpZnQgPSBz
dGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKCh2
YWwudG9JbnQzMihjYWxsRnJhbWUpKSA+PiAoc2hpZnQudG9VSW50MzIoY2FsbEZyYW1lKSAmIDB4
MWYpKTsKLQotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVk
SlNWYWx1ZSwgb3BfcmVzb2x2ZV93aXRoX2Jhc2UpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOwpAQCAtMjIyOSw0NyArMTk5OCw2IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2YKICAgICByZXR1cm4gZnVuYzsKIH0KIAotREVGSU5FX1NU
VUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX21vZCkKLXsKLSAgICBTVFVCX0lOSVRfU1RB
Q0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIGRpdmlkZW5kVmFsdWUgPSBzdGFj
a0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgZGl2aXNvclZhbHVlID0gc3Rh
Y2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
c3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgZG91YmxlIGQgPSBkaXZpZGVuZFZhbHVlLnRvTnVt
YmVyKGNhbGxGcmFtZSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihmbW9kKGQsIGRp
dmlzb3JWYWx1ZS50b051bWJlcihjYWxsRnJhbWUpKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
Tl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLURF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF91cnNoaWZ0KQotewotICAgIFNU
VUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgdmFsID0gc3Rh
Y2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNoaWZ0ID0gc3RhY2tGcmFt
ZS5hcmdzWzFdLmpzVmFsdWUoKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tG
cmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcigodmFsLnRvVUlu
dDMyKGNhbGxGcmFtZSkpID4+IChzaGlmdC50b1VJbnQzMihjYWxsRnJhbWUpICYgMHgxZikpOwot
ICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfYml0eG9yKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQot
ICAgIEpTVmFsdWUgc3JjMSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7Ci0gICAgSlNW
YWx1ZSBzcmMyID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLQotICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKHNyYzEudG9JbnQzMihjYWxsRnJhbWUpIF4gc3JjMi50b0ludDMyKGNhbGxG
cmFtZSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVj
dCosIG9wX25ld19yZWdleHApCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJh
bWUpOwpAQCAtMjI4NSwyMCArMjAxMyw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0
Kiwgb3BfbmV3X3IKICAgICByZXR1cm4gUmVnRXhwT2JqZWN0OjpjcmVhdGUoKnN0YWNrRnJhbWUu
dm0sIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0YWNrRnJh
bWUuY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCBy
ZWdFeHApOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfYml0
b3IpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNW
YWx1ZSBzcmMxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNy
YzIgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoc3JjMS50b0ludDMyKGNhbGxGcmFtZSkgfCBzcmMyLnRvSW50MzIoY2FsbEZyYW1lKSk7
Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVl
LCBvcF9jYWxsX2V2YWwpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwpAQCAtMjM3MSwxMDYgKzIwODUsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9w
b3Bfc2NvcGUpCiAgICAgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPnNldFNjb3BlKHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5zY29wZSgpLT5uZXh0KCkpOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihF
bmNvZGVkSlNWYWx1ZSwgb3BfdHlwZW9mKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNUeXBlU3RyaW5nRm9y
VmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkp
KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2lzX29iamVj
dCkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShzdGFja0ZyYW1lLmNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSkpKTsKLX0KLQotREVGSU5FX1NU
VUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2lzX2Z1bmN0aW9uKQotewotICAgIFNUVUJf
SU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUo
KSkpKTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3N0cmlj
dGVxKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpT
VmFsdWUgc3JjMSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBz
cmMyID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLSAgICAKLSAgICBib29sIHJlc3Vs
dCA9IEpTVmFsdWU6OnN0cmljdEVxdWFsKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzcmMxLCBzcmMy
KTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihF
bmNvZGVkSlNWYWx1ZSwgb3BfdG9fcHJpbWl0aXZlKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RhY2tGcmFt
ZS5hcmdzWzBdLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShzdGFja0ZyYW1lLmNhbGxGcmFtZSkpOwot
fQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bfc3RyY2F0KQotewot
ICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmcoc3RhY2tGcmFtZS5jYWxsRnJhbWUsICZzdGFja0ZyYW1lLmNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKClbc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCldLCBzdGFja0ZyYW1lLmFy
Z3NbMV0uaW50MzIoKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9uc3RyaWN0ZXEpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMxID0gc3RhY2tGcmFtZS5hcmdzWzBd
LmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNyYzIgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1
ZSgpOwotCi0gICAgYm9vbCByZXN1bHQgPSAhSlNWYWx1ZTo6c3RyaWN0RXF1YWwoc3RhY2tGcmFt
ZS5jYWxsRnJhbWUsIHNyYzEsIHNyYzIpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5E
KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7Ci19Ci0K
LURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF90b19udW1iZXIpCi17Ci0g
ICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMg
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBkb3VibGUgbnVtYmVyID0gc3JjLnRvTnVt
YmVyKGNhbGxGcmFtZSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlcikpOwotfQotCi1ERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfaW4pCi17Ci0gICAgU1RVQl9JTklUX1NUQUNL
X0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIGJhc2VWYWwgPSBzdGFja0ZyYW1lLmFyZ3NbMV0u
anNWYWx1ZSgpOwotCi0gICAgaWYgKCFiYXNlVmFsLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgc3Rh
Y2tGcmFtZS52bS0+ZXhjZXB0aW9uID0gY3JlYXRlSW52YWxpZFBhcmFtRXJyb3Ioc3RhY2tGcmFt
ZS5jYWxsRnJhbWUsICJpbiIsIGJhc2VWYWwpOwotICAgICAgICBWTV9USFJPV19FWENFUFRJT04o
KTsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIHByb3BOYW1lID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpz
VmFsdWUoKTsKLSAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KGJhc2VWYWwpOwotCi0g
ICAgdWludDMyX3QgaTsKLSAgICBpZiAocHJvcE5hbWUuZ2V0VUludDMyKGkpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihiYXNlT2JqLT5oYXNQcm9wZXJ0eShjYWxs
RnJhbWUsIGkpKSk7Ci0KLSAgICBpZiAoaXNOYW1lKHByb3BOYW1lKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZU9iai0+aGFzUHJvcGVydHkoY2FsbEZyYW1l
LCBqc0Nhc3Q8TmFtZUluc3RhbmNlKj4ocHJvcE5hbWUuYXNDZWxsKCkpLT5wcml2YXRlTmFtZSgp
KSkpOwotCi0gICAgSWRlbnRpZmllciBwcm9wZXJ0eShjYWxsRnJhbWUsIHByb3BOYW1lLnRvU3Ry
aW5nKGNhbGxGcmFtZSktPnZhbHVlKGNhbGxGcmFtZSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJ
T04oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihiYXNlT2JqLT5oYXNQ
cm9wZXJ0eShjYWxsRnJhbWUsIHByb3BlcnR5KSkpOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkLCBvcF9wdXNoX25hbWVfc2NvcGUpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwpAQCAtMjU1MCwzNiArMjE2NCw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQqLCBvcF9zd2l0Y2hfc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZGVsX2J5X3ZhbCkKLXsKLSAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0Zy
YW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYmFzZVZhbHVl
LnRvT2JqZWN0KGNhbGxGcmFtZSk7IC8vIG1heSB0aHJvdwotCi0gICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotICAgIGJvb2wgcmVzdWx0OwotICAg
IHVpbnQzMl90IGk7Ci0gICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCi0gICAgICAgIHJl
c3VsdCA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNl
T2JqLCBjYWxsRnJhbWUsIGkpOwotICAgIGVsc2UgaWYgKGlzTmFtZShzdWJzY3JpcHQpKQotICAg
ICAgICByZXN1bHQgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqLCBjYWxsRnJhbWUsIGpzQ2FzdDxOYW1lSW5zdGFuY2UqPihzdWJzY3JpcHQuYXNDZWxsKCkp
LT5wcml2YXRlTmFtZSgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
TigpOwotICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRv
U3RyaW5nKGNhbGxGcmFtZSktPnZhbHVlKGNhbGxGcmFtZSkpOwotICAgICAgICBDSEVDS19GT1Jf
RVhDRVBUSU9OKCk7Ci0gICAgICAgIHJlc3VsdCA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRl
bGV0ZVByb3BlcnR5KGJhc2VPYmosIGNhbGxGcmFtZSwgcHJvcGVydHkpOwotICAgIH0KLQotICAg
IGlmICghcmVzdWx0ICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQot
ICAgICAgICBzdGFja0ZyYW1lLnZtLT5leGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3Ioc3RhY2tG
cmFtZS5jYWxsRnJhbWUsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOwotCi0gICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihyZXN1bHQpKTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0
X2dldHRlcl9zZXR0ZXIpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwpAQCAtMjY0MCw2ICsyMjI0LDEyIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV90
aHJvdykKICAgICByZXR1cm4gaGFuZGxlci5jYWxsRnJhbWU7CiB9CiAKK0V4Y2VwdGlvbkhhbmRs
ZXIgSklUX1NUVUIgY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNKiB2bSA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnZtKCk7CisgICAgcmV0dXJu
IGppdFRocm93TmV3KHZtLCBjYWxsRnJhbWUsIHZtLT5leGNlcHRpb24pOworfQorCiBERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgdG9fb2JqZWN0KQogewogICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgJKHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAi
Q2FsbERhdGEuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCkBAIC0zMDYsNiArMzA3
LDcgQEAgc3RydWN0IEpJVFN0YWNrRnJhbWUgewogI2VuZGlmCiAKIGV4dGVybiAiQyIgdm9pZCBj
dGlWTVRocm93VHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGN0aVZNVGhyb3dUcmFtcG9s
aW5lU2xvd3BhdGgoKTsKIGV4dGVybiAiQyIgdm9pZCBjdGlPcFRocm93Tm90Q2F1Z2h0KCk7CiBl
eHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgSlNTdGFj
ayosIENhbGxGcmFtZSosIHZvaWQqIC8qdW51c2VkMSovLCB2b2lkKiAvKnVudXNlZDIqLywgVk0q
KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTMyNSwyMCArMzI3LDEyIEBAIGV4dGVybiAiQyIg
dm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCkKIHZvaWQgcGVyZm9ybVBsYXRmb3JtU3BlY2lm
aWNKSVRBc3NlcnRpb25zKFZNKik7CiAKIGV4dGVybiAiQyIgewotRW5jb2RlZEpTVmFsdWUgSklU
X1NUVUIgY3RpX29wX2FkZChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9iaXRhbmQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfYml0b3IoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RV
QiBjdGlfb3BfYml0eG9yKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NhbGxfTm90SlNGdW5jdGlvbihTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9v
cF9jYWxsX2V2YWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY29uc3RydWN0X05vdEpTQ29uc3RydWN0KFNUVUJfQVJH
U19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3Rp
X29wX2NoZWNrX2hhc19pbnN0YW5jZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jcmVhdGVfdGhpcyhTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9v
cF90b190aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX1NUVUIgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZGVsX2J5
X2lkKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUg
SklUX1NUVUIgY3RpX29wX2RlbF9ieV92YWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZGl2KFNUVUJfQVJHU19ERUNM
QVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dl
dF9ieV9pZChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbChTVFVCX0FSR1NfREVDTEFS
QVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRf
YnlfaWRfY3VzdG9tX3N0dWIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkBA
IC0zNTIsMjYgKzM0NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5
X2lkCiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X3ZhbChTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9v
cF9nZXRfYnlfdmFsX2dlbmVyaWMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X3ZhbF9zdHJpbmcoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBj
dGlfb3BfaW4oU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfU1RVQiBjdGlfb3BfaW5zdGFuY2VvZihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9pc19ib29sZWFuKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NU
VUIgY3RpX29wX2lzX2Z1bmN0aW9uKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2lzX251bWJlcihTVFVCX0FSR1NfREVD
TEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9p
c19vYmplY3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfU1RVQiBjdGlfb3BfaXNfc3RyaW5nKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2lzX3VuZGVmaW5lZChT
VFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9T
VFVCIGN0aV9vcF9sZXNzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5j
b2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2xlc3NlcShTVFVCX0FSR1NfREVDTEFSQVRJT04p
IFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9ncmVhdGVyKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NU
VUIgY3RpX29wX2dyZWF0ZXJlcShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9sc2hpZnQoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfbW9kKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NU
VUIgY3RpX29wX211bChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9uZWdhdGUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3Bfbm90KFNUVUJfQVJH
U19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3Rp
X29wX25zdHJpY3RlcShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9kZWMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZf
SU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfaW5jKFNUVUJfQVJHU19E
RUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29w
X3Jlc29sdmUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfU1RVQiBjdGlfb3BfcmVzb2x2ZV9iYXNlKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3Jlc29sdmVfYmFz
ZV9zdHJpY3RfcHV0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwpAQCAtMzc5
LDE0ICszNTgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZW5zdXJlX3ByCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfcmVzb2x2ZV93aXRoX2Jhc2UoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfcmVzb2x2ZV93aXRoX3RoaXMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfdG9fYmFzZShTVFVCX0FSR1NfREVDTEFSQVRJT04p
IFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9yc2hpZnQoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RV
QiBjdGlfb3Bfc3RyY2F0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5j
b2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3N0cmljdGVxKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3N1YihTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVC
IGN0aV9vcF90b19udW1iZXIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfdG9fcHJpbWl0aXZlKFNUVUJfQVJHU19ERUNM
QVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3R5
cGVvZihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVl
IEpJVF9TVFVCIGN0aV9vcF91cnNoaWZ0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX3RvX29iamVjdChTVFVCX0FSR1NfREVD
TEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEpTT2JqZWN0KiBKSVRfU1RVQiBjdGlfb3BfbmV3X2Fy
cmF5KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogSlNPYmplY3QqIEpJVF9T
VFVCIGN0aV9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOwpAQCAtNDQ1LDYgKzQxNiw3IEBAIHZvaWQqIEpJVF9TVFVCIGN0aV92bV9sYXp5
TGlua0NhbGwoU1RVQl8KIHZvaWQqIEpJVF9TVFVCIGN0aV92bV9sYXp5TGlua0Nsb3N1cmVDYWxs
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3Rp
X3ZtX2xhenlMaW5rQ29uc3RydWN0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFM
Owogdm9pZCogSklUX1NUVUIgY3RpX3ZtX3Rocm93KFNUVUJfQVJHU19ERUNMQVJBVElPTikgUkVG
RVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7CitFeGNlcHRpb25IYW5kbGVyIEpJVF9TVFVC
IGN0aV92bV90aHJvd19zbG93cGF0aChDYWxsRnJhbWUqKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdU
Rl9JTlRFUk5BTDsKIH0gLy8gZXh0ZXJuICJDIgogCiAjZWxpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNBUk0uaAkocmV2aXNpb24g
MTUxMzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDIxIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05v
dENhdWdodCkgIjoiICIKICAgICAiYnggbHIiICJcbiIKICk7CiAKK2FzbSAoCisiLnRleHQiICJc
biIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgp
ICJcbiIKK0hJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0lO
TElORV9BUk1fRlVOQ1RJT04oY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkKK1NZTUJPTF9T
VFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92IHIw
LCByNSIgIlxuIgorICAgICJibCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRo
KSAiXG4iCisgICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIwIGhh
cyBjYWxsRnJhbWUgYW5kIHIxIGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAgImFkZCBzcCwgc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURSNF9PRkZTRVQpICJcbiIKKyAgICAgImxk
bWlhIHNwISwge3I0LXI2LCByOC1yMTEsIGxyfSIgIlxuIgorICAgICAiYWRkIHNwLCBzcCwgIzEy
IiAiXG4iCisgICAgICJieCByMSIgIlxuIgorKTsKKwogI2lmIFVTRShNQVNNX1BST0JFKQogYXNt
ICgKICIudGV4dCIgIlxuIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
c0FSTXY3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
c0FSTXY3LmgJKHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnNBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsNiArMjcwLDMwIEBAIFNZTUJP
TF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAKIGFzbSAoCiAiLnRleHQiICJcbiIK
ICIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1w
b2xpbmVTbG93cGF0aCkgIlxuIgorSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93
cGF0aCkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJB
TShjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVZN
VGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6IiAiXG4iCisgICAgIm1vdiByMCwgcjUiICJcbiIK
KyAgICAiYmwgIiBMT0NBTF9SRUZFUkVOQ0UoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSAiXG4iCisg
ICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIwIGhhcyBjYWxsRnJh
bWUgYW5kIHIxIGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAibGRyIHIxMSwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1IxMV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciBy
MTAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SMTBfT0ZGU0VUKSAiXSIg
IlxuIgorICAgICJsZHIgcjksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9S
OV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciByOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJFU0VSVkVEX1I4X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI3LCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUjdfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIg
cjYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SNl9PRkZTRVQpICJdIiAi
XG4iCisgICAgImxkciByNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1I1
X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHI0LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUkVTRVJWRURfUjRfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgbHIsIFtzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAiXG4i
CisgICAgImFkZCBzcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihGSVJTVF9TVEFDS19BUkdV
TUVOVCkgIlxuIgorICAgICJieCByMSIgIlxuIgorKTsKKworYXNtICgKKyIudGV4dCIgIlxuIgor
Ii5hbGlnbiAyIiAiXG4iCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1
Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiAiLnRodW1i
IiAiXG4iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzTUlQUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNNSVBTLmgJKHJl
dmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNNSVBT
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsNDAgQEAgYXNtICgKICIuc2V0IG5vcmVv
cmRlciIgIlxuIgogIi5zZXQgbm9tYWNybyIgIlxuIgogIi5zZXQgbm9taXBzMTYiICJcbiIKKyIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIK
KyIuZW50ICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6IiAiXG4iCisj
aWYgV1RGX01JUFNfUElDCisiLnNldCBtYWNybyIgIlxuIgorIi5jcGxvYWQgJDMxIiAiXG4iCisg
ICAgImxhICAgICQyNSwiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSAiXG4i
CisiLnNldCBub21hY3JvIiAiXG4iCisgICAgImJhbCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Ro
cm93X3Nsb3dwYXRoKSAiXG4iCisgICAgIm1vdmUgICQ0LCQxNiIgIlxuIgorI2Vsc2UKKyAgICAi
amFsICIgU1lNQk9MX1NUUklORyhjdGlfdm1fdGhyb3dfc2xvd3BhdGgpICJcbiIKKyAgICAibW92
ZSAgJDQsJDE2IiAiXG4iCisjZW5kaWYKKyAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0
aCByZXR1cm5zLCB2MCBoYXMgY2FsbEZyYW1lIGFuZCB2MSBoYXMgaGFuZGxlciBhZGRyZXNzCisg
ICAgImx3ICAgICQxNiwiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUzBfT0ZGU0VUKSAi
KCQyOSkiICJcbiIKKyAgICAibHcgICAgJDE3LCIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZF
RF9TMV9PRkZTRVQpICIoJDI5KSIgIlxuIgorICAgICJsdyAgICAkMTgsIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJFU0VSVkVEX1MyX09GRlNFVCkgIigkMjkpIiAiXG4iCisgICAgImx3ICAgICQxOSwi
IFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfUzNfT0ZGU0VUKSAiKCQyOSkiICJcbiIKKyAg
ICAibHcgICAgJDIwLCIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9TNF9PRkZTRVQpICIo
JDI5KSIgIlxuIgorICAgICJsdyAgICAkMzEsIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVE
X1JFVFVSTl9BRERSRVNTX09GRlNFVCkgIigkMjkpIiAiXG4iCisgICAgImpyICAgICQzIiAiXG4i
CisgICAgImFkZGl1ICQyOSwkMjksIiBTVFJJTkdJWkVfVkFMVUVfT0YoU1RBQ0tfTEVOR1RIKSAi
XG4iCisiLnNldCByZW9yZGVyIiAiXG4iCisiLnNldCBtYWNybyIgIlxuIgorIi5lbmQgIiBTWU1C
T0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKKyk7CisKK2FzbSAo
CisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5zZXQgbm9yZW9yZGVyIiAiXG4iCisi
LnNldCBub21hY3JvIiAiXG4iCisiLnNldCBub21pcHMxNiIgIlxuIgogIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogIi5lbnQgIiBTWU1CT0xfU1RSSU5H
KGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENh
dWdodCkgIjoiICJcbiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNT
SDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzU0g0
LmgJKHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnNTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksMzEgQEAgU1lNQk9MX1NUUklORyhj
dGlWTVRocm93VHJhbXBvbGluZSkgIjoiIAogKTsKIAogYXNtIHZvbGF0aWxlICgKKyIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK0hJREVf
U1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICJcbiIKK1NZTUJPTF9TVFJJTkco
Y3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkgIjoiICJcbiIKKyAgICAibW92LmwgLkwyIlNZ
TUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSIscjAiICJcbiIKKyAgICAibW92IHIx
NSwgcjQiICJcbiIKKyAgICAibW92LmwgQChyMCxyMTIpLHIxMSIgIlxuIgorICAgICJqc3IgQHIx
MSIgIlxuIgorICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dwYXRoIHJldHVybnMsIHIwIGhh
cyBjYWxsRnJhbWUgYW5kIHIxIGhhcyBoYW5kbGVyIGFkZHJlc3MKKyAgICAibm9wIiAiXG4iCisg
ICAgImFkZCAjNjAsIHIxNSIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyMTAiICJcbiIKKyAgICAi
bW92LmwgQHIxNSsscjExIiAiXG4iCisgICAgIm1vdi5sIEByMTUrLHIxMyIgIlxuIgorICAgICJs
ZHMubCBAcjE1KyxwciIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyMTQiICJcbiIKKyAgICAibW92
LmwgQHIxNSsscjgiICJcbiIKKyAgICAiYWRkICMxMiwgcjE1IiAiXG4iCisgICAgIm1vdiByMCwg
cjQiICJcbiIKKyAgICAiam1wIEByMSIgIlxuIgorICAgICJub3AiICJcbiIKKyAgICAiLmFsaWdu
IDIiICJcbiIKKyAgICAiLkwyIlNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSI6
LmxvbmcgIiBTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvd19zbG93cGF0aCkiQEdPVCBcbiIKKyk7
CisKK2FzbSB2b2xhdGlsZSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90
Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBTWU1C
T0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Ni5oCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYg
Kzg2LDE2IEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAKICk7CiAK
IGFzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZVNsb3dw
YXRoKSAiXG4iCitISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6IiAiXG4iCisg
ICAgIm1vdmwgJWVkaSwgJWVjeCIgIlxuIgorICAgICJjYWxsICIgTE9DQUxfUkVGRVJFTkNFKGN0
aV92bV90aHJvd19zbG93cGF0aCkgIlxuIgorICAgIC8vIFdoZW4gY3RpX3ZtX3Rocm93X3Nsb3dw
YXRoIHJldHVybnMsIGVheCBoYXMgY2FsbEZyYW1lIGFuZCBlZHggaGFzIGhhbmRsZXIgYWRkcmVz
cworICAgICJqbXAgKiVlZHgiICJcbiIKKyk7CisKK2FzbSAoCiAiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90
Q2F1Z2h0KSAiXG4iCiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4i
CkBAIC0yOTksNiArMzA5LDIyIEBAIGV4dGVybiAiQyIgewogICAgICAgICB9CiAgICAgfQogCisg
ICAgX19kZWNsc3BlYyhuYWtlZCkgdm9pZCBjdGlWTVRocm93VHJhbXBvbGluZVNsb3dwYXRoKCkK
KyAgICB7CisgICAgICAgIF9fYXNtIHsKKyAgICAgICAgICAgIG1vdiBlY3gsIGVkaTsKKyAgICAg
ICAgICAgIGNhbGwgY3RpX3ZtX3Rocm93X3Nsb3dwYXRoOworICAgICAgICAgICAgLy8gV2hlbiBj
dGlfdm1fdGhyb3dfc2xvd3BhdGggcmV0dXJucywgZWF4IGhhcyBjYWxsRnJhbWUgYW5kIGVkeCBo
YXMgaGFuZGxlciBhZGRyZXNzCisgICAgICAgICAgICBhZGQgZXNwLCAweDNjOworICAgICAgICAg
ICAgcG9wIGVieDsKKyAgICAgICAgICAgIHBvcCBlZGk7CisgICAgICAgICAgICBwb3AgZXNpOwor
ICAgICAgICAgICAgcG9wIGVicDsKKyAgICAgICAgICAgIGptcCBlZHgKKyAgICAgICAgICAgIHJl
dDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIF9fZGVjbHNwZWMobmFrZWQpIHZvaWQgY3RpT3BU
aHJvd05vdENhdWdodCgpCiAgICAgewogICAgICAgICBfX2FzbSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1g4Nl82NC5oCShyZXZpc2lvbiAxNTEzNDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2XzY0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTk5LDYgKzk5LDE2IEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6
IiAKICk7CiAKIGFzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBv
bGluZVNsb3dwYXRoKSAiXG4iCitISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZVNsb3dw
YXRoKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lU2xvd3BhdGgpICI6
IiAiXG4iCisgICAgIm1vdnEgJXIxMywgJXJkaSIgIlxuIgorICAgICJjYWxsICIgTE9DQUxfUkVG
RVJFTkNFKGN0aV92bV90aHJvd19zbG93cGF0aCkgIlxuIgorICAgIC8vIFdoZW4gY3RpX3ZtX3Ro
cm93X3Nsb3dwYXRoIHJldHVybnMsIHJheCBoYXMgY2FsbEZyYW1lIGFuZCByZHggaGFzIGhhbmRs
ZXIgYWRkcmVzcworICAgICJqbXAgKiVyZHgiICJcbiIKKyk7CisKK2FzbSAoCiAiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlP
cFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQp
ICI6IiAiXG4iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6ZWF4OwogI2lmICFPUyhXSU5ET1dTKQogICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVk
aTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6ZXNpOwogI2Vsc2UKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplY3g7CisgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OmVkeDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtODgs
NiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gT24geDg2IHdlIGFsd2F5cyB1
c2UgZmFzdGNhbGwgY29udmVudGlvbnMgPSBidXQgb24KICAgICAgICAgLy8gT1MgWCBpZiBtaWdo
dCBtYWtlIG1vcmUgc2Vuc2UgdG8ganVzdCB1c2UgcmVncGFybS4KICAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplY3g7
CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIg
PSBYODZSZWdpc3RlcnM6OmVkeDsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZXNpOwogICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVy
czo6ZWRpOwpAQCAtMTA1LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpy
MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIg
PSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJz
dEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOworICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMTsK
IAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgYnVja2V0Q291bnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNzsKQEAgLTEyNiw2
ICsxMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6
OnYwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0
ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
c2Vjb25kQXJndW1lbnRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmExOwogICAgICAgICAKICNp
ZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklE
IGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMzOwpAQCAtMTYwLDYgKzE2
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBy
ZWdUNiA9IFNINFJlZ2lzdGVyczo6cjY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklE
IHJlZ1Q3ID0gU0g0UmVnaXN0ZXJzOjpyNzsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID1yZWdUNDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgc2Vjb25kQXJndW1lbnRSZWdpc3RlciA9cmVnVDQ7CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6cjA7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0g
U0g0UmVnaXN0ZXJzOjpyMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1Bh
dGhDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0
aENhbGwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1Bh
dGhDYWxsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2xvd1BhdGhDYWxsX2gKKyNk
ZWZpbmUgU2xvd1BhdGhDYWxsX2gKKworI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpJVFNsb3dQYXRoQ2FsbCB7CitwdWJsaWM6CisgICAgSklU
U2xvd1BhdGhDYWxsKEpJVCogaml0LCBJbnN0cnVjdGlvbiogcGMsIFNsb3dQYXRoUmV0dXJuVHlw
ZSAoU0xPV19QQVRIICpzdHViKShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykpCisg
ICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fc3R1YihzdHViKQorICAgICAgICAsIG1f
cGMocGMpCisgICAgeworICAgIH0KKworICAgIEpJVDo6Q2FsbCBjYWxsKCkKKyAgICB7CisjaWYg
RU5BQkxFKE9QQ09ERV9TQU1QTElORykKKyAgICAgICAgaWYgKG1faml0LT5tX2J5dGVjb2RlT2Zm
c2V0ICE9ICh1bnNpZ25lZCktMSkKKyAgICAgICAgICAgIG1faml0LT5zYW1wbGVJbnN0cnVjdGlv
bihtX2ppdC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBtX2ppdC0+bV9i
eXRlY29kZU9mZnNldCwgdHJ1ZSk7CisjZW5kaWYKKyAgICAgICAgbV9qaXQtPnVwZGF0ZVRvcENh
bGxGcmFtZSgpOworI2lmIENQVShYODYpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIG1f
aml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtOCksIE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0LT5wdXNoKEpJVDo6VHJ1
c3RlZEltbTMyKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSkpOworICAgICAgICBtX2ppdC0+cHVz
aChKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyNlbHNlCisgICAgICAgIG1faml0LT5tb3ZlKEpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6Zmlyc3RBcmd1bWVudFJlZ2lzdGVyKTsKKyAgICAg
ICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OnNlY29uZEFyZ3Vt
ZW50UmVnaXN0ZXIpOworI2VuZGlmCisgICAgICAgIEpJVDo6Q2FsbCBjYWxsID0gbV9qaXQtPmNh
bGwoKTsKKyAgICAgICAgbV9qaXQtPm1fY2FsbHMuYXBwZW5kKENhbGxSZWNvcmQoY2FsbCwgbV9q
aXQtPm1fYnl0ZWNvZGVPZmZzZXQsIG1fc3R1Yi52YWx1ZSgpKSk7CisKKyNpZiBDUFUoWDg2KSAm
JiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBtX2ppdC0+YWRkUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworI2VuZGlmCisKKyNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQorICAgICAgICBpZiAobV9q
aXQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gKHVuc2lnbmVkKS0xKQorICAgICAgICAgICAgbV9qaXQt
PnNhbXBsZUluc3RydWN0aW9uKG1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCBmYWxzZSk7CisjZW5kaWYKKyAgICAgICAg
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbV9qaXQtPnVubWFwKCk7CisjZWxzZQor
ICAgICAgICBtX2ppdC0+a2lsbExhc3RSZXN1bHRSZWdpc3RlcigpOworI2VuZGlmCisgICAgICAg
IAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIEpJVDo6SnVtcCBub0V4Y2VwdGlvbiA9
IG1faml0LT5icmFuY2gzMihKSVQ6OkVxdWFsLCBKSVQ6OkFic29sdXRlQWRkcmVzcyhyZWludGVy
cHJldF9jYXN0PGNoYXIqPigmbV9qaXQtPm1fY29kZUJsb2NrLT52bSgpLT5leGNlcHRpb24pICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBKSVQ6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisjZWxzZQorICAgICAgICBKSVQ6Okp1bXAgbm9F
eGNlcHRpb24gPSBtX2ppdC0+YnJhbmNoVGVzdDY0KEpJVDo6WmVybywgSklUOjpBYnNvbHV0ZUFk
ZHJlc3MoJm1faml0LT5tX2NvZGVCbG9jay0+dm0oKS0+ZXhjZXB0aW9uKSk7CisjZW5kaWYKKyAg
ICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKEZ1bmN0aW9uUHRyKGN0aVZNVGhy
b3dUcmFtcG9saW5lU2xvd3BhdGgpLnZhbHVlKCkpLCBKSVQ6OnJlZ1QxKTsKKyAgICAgICAgbV9q
aXQtPmp1bXAoSklUOjpyZWdUMSk7CisgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsobV9qaXQpOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgfQorCitwcml2YXRlOgorICAgIEpJ
VCogbV9qaXQ7CisgICAgRnVuY3Rpb25QdHIgbV9zdHViOworICAgIEluc3RydWN0aW9uKiBtX3Bj
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlMKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNl
bmRpZiAvLyBTbG93UGF0aENhbGxfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTUxMzQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUs
MTcgKzM5NSwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAK
ICAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBqaXQucHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7Ci0KKyAgICAKICAgICBqaXQu
bW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cigmdm0tPmV4Y2VwdGlvbkxvY2F0aW9u
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKICAgICBqaXQuc3RvcmVQdHIoSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QxLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwotICAgIGppdC5wb2tlKEpTSW50ZXJm
YWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFj
a0ZyYW1lLCBjYWxsRnJhbWUpIC8gc2l6ZW9mKHZvaWQqKSk7CiAKICAgICBqaXQuc3RvcmVQdHIo
SlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7Ci0g
ICAgLy8gU2V0IHRoZSByZXR1cm4gYWRkcmVzcy4KLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbVB0cihGdW5jdGlvblB0cihjdGlWTVRocm93VHJhbXBvbGluZSkudmFsdWUo
KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7Ci0gICAgaml0LnJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CiAKLSAgICBqaXQucmV0KCk7Cisg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIoY3Rp
Vk1UaHJvd1RyYW1wb2xpbmVTbG93cGF0aCkudmFsdWUoKSksIEpTSW50ZXJmYWNlSklUOjpyZWdU
MSk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyB0cmFtcG9saW5lIiwgdG9DU3Ry
aW5nKGtpbmQpLmRhdGEoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mjgs
MzQgKzQyOCw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIExMSU5U
X0VORF9JTVBMKCk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2Fy
aXR5Q2hlY2spCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBFeGVjU3RhdGUqIG5ld0V4ZWMg
PSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZtLmludGVycHJldGVyLT5z
dGFjaygpLCBDb2RlRm9yQ2FsbCk7Ci0gICAgaWYgKCFuZXdFeGVjKSB7Ci0gICAgICAgIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOwotICAgICAgICBleGVjID0g
ZXhlYy0+Y2FsbGVyRnJhbWUoKTsKLSAgICAgICAgdm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhl
YywgcmV0dXJuUEMpOwotICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOwotICAgIH0KLSAgICBMTElOVF9S
RVRVUk5fVFdPKDAsIG5ld0V4ZWMpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBFeGVj
U3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZt
LmludGVycHJldGVyLT5zdGFjaygpLCBDb2RlRm9yQ29uc3RydWN0KTsKLSAgICBpZiAoIW5ld0V4
ZWMpIHsKLSAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQyA9IGV4ZWMtPnJldHVyblBD
KCk7Ci0gICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwotICAgICAgICB2bS5leGNl
cHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIGludGVycHJl
dGVyVGhyb3dJbkNhbGxlcihleGVjLCByZXR1cm5QQyk7Ci0gICAgICAgIExMSU5UX1JFVFVSTl9U
V08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7
Ci0gICAgfQotICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Ci19Ci0KIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKIHsKICAgICBMTElOVF9C
RUdJTigpOwpAQCAtNDY3LDQyICs0MzksNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY3JlYXRlX2FjCiAgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOwogfQog
Ci1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKLXsKLSAg
ICBMTElOVF9CRUdJTigpOwotICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVu
dHM6OmNyZWF0ZSh2bSwgZXhlYykpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAg
IGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKLSAgICBleGVj
LT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQp
KSA9IGFyZ3VtZW50czsKLSAgICBMTElOVF9FTkQoKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgSlNG
dW5jdGlvbiogY29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KExMSU5UX09QKDIpLmpz
VmFsdWUoKS5hc0NlbGwoKSk7Ci0gICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRh
YmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENv
bnN0cnVjdFR5cGVKUyk7Ci0jZW5kaWYKLQotICAgIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IHBj
WzNdLnUub3BlcmFuZDsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5h
bGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSktPnN0cnVjdHVyZSgpOwotICAg
IExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKLX0K
LQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCi17Ci0gICAgTExJTlRf
QkVHSU4oKTsKLSAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwotI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBwY1tPUENPREVfTEVOR1RIKG9wX3RvX3RoaXMpIC0g
MV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPQotICAgICAgICBKU1ZhbHVlOjplbmNvZGUodjEu
c3RydWN0dXJlT3JVbmRlZmluZWQoKSk7Ci0jZW5kaWYKLSAgICBMTElOVF9SRVRVUk4odjEudG9U
aGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlKSk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfb2JqZWN0KQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC01MzYsMTg3ICs0NzIsNiBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4CiAgICAgTExJTlRfUkVUVVJO
KFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOwog
fQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQotewotICAgIExMSU5UX0JF
R0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9Cb29sZWFuKGV4ZWMpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9lcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
SlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVx
KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNW
YWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3RyaWN0
ZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpT
VmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25zdHJpY3RlcSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2xlc3MpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sZXNzZXEpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dyZWF0ZXIpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ3JlYXRlcmVxKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHJlX2luYykKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Ci19Ci0K
LUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcmVfZGVjKQotewotICAgIExMSU5UX0JF
R0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSAtIDEpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3RvX251bWJlcikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOwotfQotCi1MTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQotewotICAgIExMSU5UX0JFR0lOKCk7
Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQot
ewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpOwotICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKLSAgICAK
LSNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwotICAgIGRhdGFMb2coIlRyeWluZyB0byBhZGQg
IiwgdjEsICIgdG8gIiwgdjIsICIuXG4iKTsKLSNlbmRpZgotICAgIAotICAgIGlmICh2MS5pc1N0
cmluZygpICYmICF2Mi5pc09iamVjdCgpKQotICAgICAgICBMTElOVF9SRVRVUk4oanNTdHJpbmco
ZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVjKSkpOwotICAgIAotICAgIGlmICh2
MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgIExMSU5UX1JFVFVSTihqc051
bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOwotICAgIAotICAgIExMSU5UX1JF
VFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOwotfQotCi0vLyBUaGUgZm9sbG93aW5n
IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVu
Ci0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0
b051bWJlcigpIGlzIGlkZW1wb3RlbnQKLS8vIGlmIGFuIGV4Y2VwdGlvbiBpcyBhbHJlYWR5IHNl
dCBvbiB0aGUgRXhlY1N0YXRlLikKLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX211
bCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSAqIGIp
KTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N1YikKLXsKLSAgICBMTElO
VF9CRUdJTigpOwotICAgIGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYyk7Ci0gICAgZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoYSAtIGIpKTsKLX0KLQotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RpdikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAg
IGRvdWJsZSBhID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAg
ZG91YmxlIGIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoYSAvIGIpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX21vZCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGRvdWJsZSBhID0gTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgZG91YmxlIGIgPSBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoZm1vZChhLCBiKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bHNoaWZ0KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50MzJfdCBhID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICB1aW50MzJfdCBiID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KGEgPDwgKGIgJiAzMSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jz
aGlmdCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIGludDMyX3QgYSA9IExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7Ci0gICAgdWludDMyX3QgYiA9IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihh
ID4+IChiICYgMzEpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF91cnNo
aWZ0KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgdWludDMyX3QgYSA9IExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOwotICAgIHVpbnQzMl90IGIgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
YSA+PiAoYiAmIDMxKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0
YW5kKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50MzJfdCBhID0gTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKLSAgICBpbnQzMl90IGIgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcihhICYg
YikpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0b3IpCi17Ci0gICAg
TExJTlRfQkVHSU4oKTsKLSAgICBpbnQzMl90IGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpOwotICAgIGludDMyX3QgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYyk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgfCBiKSk7Ci19Ci0KLUxM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpCi17Ci0gICAgTExJTlRfQkVHSU4o
KTsKLSAgICBpbnQzMl90IGEgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
OwotICAgIGludDMyX3QgYiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7
Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGEgXiBiKSk7Ci19Ci0KIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCiB7CiAgICAgTExJTlRfQkVHSU4o
KTsKQEAgLTc0MywzMCArNDk4LDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lu
c3RhbmNlbwogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJ
bnN0YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pKSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90eXBlb2YpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRV
Uk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsK
LX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdCkKLXsKLSAgICBM
TElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUo
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luKQotewotICAg
IExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZSkK
IHsKICAgICBMTElOVF9CRUdJTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIExMSW50U2xvd1BhdGhzX2gKICNkZWZpbmUgTExJbnRTbG93UGF0aHNf
aAogCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zOCw1NyArMzksNiBAQCBz
dHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLSNpZiBVU0UoSlNWQUxV
RTY0KQotLy8gQWNjb3JkaW5nIHRvIEMrKyBydWxlcywgYSB0eXBlIHVzZWQgZm9yIHRoZSByZXR1
cm4gc2lnbmF0dXJlIG9mIGZ1bmN0aW9uIHdpdGggQyBsaW5rYWdlIChpLmUuCi0vLyAnZXh0ZXJu
ICJDIicpIG5lZWRzIHRvIGJlIFBPRDsgaGVuY2UgcHV0dGluZyBhbnkgY29uc3RydWN0b3JzIGlu
dG8gaXQgY291bGQgY2F1c2UgZWl0aGVyIGNvbXBpbGVyCi0vLyB3YXJuaW5ncywgb3Igd29yc2Us
IGEgY2hhbmdlIGluIHRoZSBBQkkgdXNlZCB0byByZXR1cm4gdGhlc2UgdHlwZXMuCi1zdHJ1Y3Qg
U2xvd1BhdGhSZXR1cm5UeXBlIHsKLSAgICB2b2lkKiBhOwotICAgIEV4ZWNTdGF0ZSogYjsKLX07
Ci0KLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNT
dGF0ZSogYikKLXsKLSAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0OwotICAgIHJlc3VsdC5h
ID0gYTsKLSAgICByZXN1bHQuYiA9IGI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW5saW5l
IHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCBF
eGVjU3RhdGUqJiBiKQotewotICAgIGEgPSByZXN1bHQuYTsKLSAgICBiID0gcmVzdWx0LmI7Ci19
Ci0KLSNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCi10eXBlZGVmIGludDY0X3QgU2xvd1BhdGhS
ZXR1cm5UeXBlOwotCi10eXBlZGVmIHVuaW9uIHsKLSAgICBzdHJ1Y3QgewotICAgICAgICB2b2lk
KiBhOwotICAgICAgICBFeGVjU3RhdGUqIGI7Ci0gICAgfSBwYWlyOwotICAgIGludDY0X3QgaTsK
LX0gU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2Rpbmc7Ci0KLWlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgZW5jb2RlUmVzdWx0KHZvaWQqIGEsIEV4ZWNTdGF0ZSogYikKLXsKLSAgICBTbG93UGF0aFJl
dHVyblR5cGVFbmNvZGluZyB1OwotICAgIHUucGFpci5hID0gYTsKLSAgICB1LnBhaXIuYiA9IGI7
Ci0gICAgcmV0dXJuIHUuaTsKLX0KLQotaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRo
UmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCBFeGVjU3RhdGUqJiBiKQotewotICAgIFNsb3dQ
YXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7Ci0gICAgdS5pID0gcmVzdWx0OwotICAgIGEgPSB1LnBh
aXIuYTsKLSAgICBiID0gdS5wYWlyLmI7Ci19Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkK
LQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOwogCkBAIC0xMTMsNDcgKzYz
LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChlbnRyeV9vc3JfZnUKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChsb29wX29zcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0wocmVwbGFjZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc3RhY2tfY2hlY2spOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spOwot
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVj
ayk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0
aW9uKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3Vt
ZW50cyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlz
KTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fdGhpcyk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApOwotTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ub3QpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9lcSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
cSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N0cmljdGVxKTsKLUxM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbnN0cmljdGVxKTsKLUxMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbGVzcyk7Ci1MTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2xlc3NlcSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dyZWF0ZXIpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9ncmVhdGVyZXEpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcmVf
aW5jKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJlX2RlYyk7Ci1M
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX251bWJlcik7Ci1MTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSk7Ci1MTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2FkZCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX211bCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N1
Yik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Rpdik7Ci1MTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX21vZCk7Ci1MTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2xzaGlmdCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3JzaGlmdCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3Vyc2hpZnQpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXRhbmQp
OwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXRvcik7Ci1MTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlb2YpOwotTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9pc19vYmplY3QpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9pc19mdW5jdGlvbik7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2luKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZSk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF90b19iYXNlKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9iYXNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNTEzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzY0
LDcgKzM2NCw3IEBAIF9sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKLSAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgogICAg
IGRpc3BhdGNoKDIpCiAKQEAgLTM4Myw3ICszODMsNyBAQCBfbGxpbnRfb3BfY3JlYXRlX3RoaXM6
CiAgICAgZGlzcGF0Y2goNCkKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfY3JlYXRlX3RoaXMpCiAgICAgZGlzcGF0Y2goNCkKIAogCkBAIC00MTAsNyArNDEwLDcgQEAg
X2xsaW50X29wX3RvX3RoaXM6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wVG9UaGlzU2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b190aGlzKQorICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC00NTIsNyArNDUy
LDcgQEAgX2xsaW50X29wX25vdDoKICAgICBkaXNwYXRjaCgzKQogCiAub3BOb3RTbG93OgotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9ub3QpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC00NzIsNyArNDcyLDcgQEAgX2xs
aW50X29wX2VxOgogICAgIGRpc3BhdGNoKDQpCiAKIC5vcEVxU2xvdzoKLSAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9lcSkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9lcSkK
ICAgICBkaXNwYXRjaCg0KQogCiAKQEAgLTUxOSw3ICs1MTksNyBAQCBfbGxpbnRfb3BfbmVxOgog
ICAgIGRpc3BhdGNoKDQpCiAKIC5vcE5lcVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmVxKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25lcSkKICAgICBkaXNw
YXRjaCg0KQogICAgIAogCkBAIC01NzYsMTIgKzU3NiwxMiBAQCBlbmQKIAogX2xsaW50X29wX3N0
cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBzdHJpY3RFcShtYWNybyAobGVmdCwg
cmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X3Nsb3df
cGF0aF9zdHJpY3RlcSkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkg
Y2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX3Nsb3dfcGF0aF9zdHJpY3RlcSkKIAogCiBf
bGxpbnRfb3BfbnN0cmljdGVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBzdHJpY3RFcSht
YWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQs
IF9sbGludF9zbG93X3BhdGhfbnN0cmljdGVxKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCBy
aWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX3Nsb3dfcGF0aF9u
c3RyaWN0ZXEpCiAKIAogX2xsaW50X29wX2luYzoKQEAgLTU5NCw3ICs1OTQsNyBAQCBfbGxpbnRf
b3BfaW5jOgogICAgIGRpc3BhdGNoKDIpCiAKIC5vcEluY1Nsb3c6Ci0gICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfcHJlX2luYykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9p
bmMpCiAgICAgZGlzcGF0Y2goMikKIAogCkBAIC02MDgsNyArNjA4LDcgQEAgX2xsaW50X29wX2Rl
YzoKICAgICBkaXNwYXRjaCgyKQogCiAub3BEZWNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3ByZV9kZWMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZGVjKQog
ICAgIGRpc3BhdGNoKDIpCiAKIApAQCAtNjI1LDcgKzYyNSw3IEBAIF9sbGludF9vcF90b19udW1i
ZXI6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wVG9OdW1iZXJTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3RvX251bWJlcikKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF90b19udW1iZXIpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC02NDgsNyArNjQ4LDcgQEAgX2xs
aW50X29wX25lZ2F0ZToKICAgICBkaXNwYXRjaCgzKQogCiAub3BOZWdhdGVTbG93OgotICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25lZ2F0ZSkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9uZWdhdGUpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC03MDksNyArNzA5LDcgQEAg
X2xsaW50X29wX2FkZDoKICAgICBiaW5hcnlPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAogICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRo
X2FkZCkKKyAgICAgICAgX3Nsb3dfcGF0aF9hZGQpCiAKIAogX2xsaW50X29wX211bDoKQEAgLTcy
Nyw3ICs3MjcsNyBAQCBfbGxpbnRfb3BfbXVsOgogICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gs
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KICAgICAgICAgZW5kLAogICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xv
d19wYXRoX211bCkKKyAgICAgICAgX3Nsb3dfcGF0aF9tdWwpCiAKIAogX2xsaW50X29wX3N1YjoK
QEAgLTczNSw3ICs3MzUsNyBAQCBfbGxpbnRfb3Bfc3ViOgogICAgIGJpbmFyeU9wKAogICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQs
CiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCi0gICAg
ICAgIF9sbGludF9zbG93X3BhdGhfc3ViKQorICAgICAgICBfc2xvd19wYXRoX3N1YikKIAogCiBf
bGxpbnRfb3BfZGl2OgpAQCAtNzU0LDcgKzc1NCw3IEBAIF9sbGludF9vcF9kaXY6CiAgICAgICAg
IC5kb25lOgogICAgICAgICBlbmQsCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBs
ZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfZGl2KQorICAgICAgICBf
c2xvd19wYXRoX2RpdikKIAogCiBtYWNybyBiaXRPcChvcGVyYXRpb24sIHNsb3dQYXRoLCBhZHZh
bmNlKQpAQCAtNzc5LDcgKzc3OSw3IEBAIF9sbGludF9vcF9sc2hpZnQ6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGxz
aGlmdGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwK
KyAgICAgICAgX3Nsb3dfcGF0aF9sc2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNzg3LDcgKzc4
Nyw3IEBAIF9sbGludF9vcF9yc2hpZnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9w
KAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQg
ZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwKKyAgICAgICAgX3Nsb3dfcGF0
aF9yc2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNzk4LDcgKzc5OCw3IEBAIF9sbGludF9vcF91
cnNoaWZ0OgogICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKICAgICAgICAgICAgIGJp
bHQgcmlnaHQsIDAsIHNsb3cKICAgICAgICAgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRo
X3Vyc2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfdXJzaGlmdCwKICAgICAgICAgNCkKIAogCkBA
IC04MDYsNyArODA2LDcgQEAgX2xsaW50X29wX2JpdGFuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0
LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5kLAorICAgICAgICBf
c2xvd19wYXRoX2JpdGFuZCwKICAgICAgICAgNSkKIAogCkBAIC04MTQsNyArODE0LDcgQEAgX2xs
aW50X29wX2JpdHhvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAg
IF9sbGludF9zbG93X3BhdGhfYml0eG9yLAorICAgICAgICBfc2xvd19wYXRoX2JpdHhvciwKICAg
ICAgICAgNSkKIAogCkBAIC04MjIsNyArODIyLDcgQEAgX2xsaW50X29wX2JpdG9yOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdG9y
LAorICAgICAgICBfc2xvd19wYXRoX2JpdG9yLAogICAgICAgICA1KQogCiAKQEAgLTE2NzIsNyAr
MTY3Miw3IEBAIF9sbGludF9vcF90b19wcmltaXRpdmU6CiAgICAgZGlzcGF0Y2goMykKIAogLm9w
VG9QcmltaXRpdmVTbG93Q2FzZToKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90
b19wcmltaXRpdmUpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fcHJpbWl0aXZlKQog
ICAgIGRpc3BhdGNoKDMpCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE1MTM0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVu
dHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MCkKICAgICBicW5lcSBbY2ZyLCB0MCwgOF0sIFZhbHVlRW1wdHksIC5vcENyZWF0ZUFyZ3VtZW50
c0RvbmUKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRz
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCiAub3BDcmVh
dGVBcmd1bWVudHNEb25lOgogICAgIGRpc3BhdGNoKDIpCiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBf
bGxpbnRfb3BfY3JlYXRlX3RoaXM6CiAgICAgZGlzcGF0Y2goNCkKIAogLm9wQ3JlYXRlVGhpc1Ns
b3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCisgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCiAgICAgZGlzcGF0Y2goNCkKIAog
CkBAIC0yOTEsNyArMjkxLDcgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAgICAgZGlzcGF0Y2goMykK
IAogLm9wVG9UaGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b190
aGlzKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgZGlzcGF0Y2go
MykKIAogCkBAIC0zMzEsNyArMzMxLDcgQEAgX2xsaW50X29wX25vdDoKICAgICBkaXNwYXRjaCgz
KQogCiAub3BOb3RTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25vdCkK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9ub3QpCiAgICAgZGlzcGF0Y2goMykKIAogCkBA
IC0zNTUsMTMgKzM1NSwxMyBAQCBlbmQKIF9sbGludF9vcF9lcToKICAgICBlcXVhbGl0eUNvbXBh
cmlzb24oCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJp
Z2h0LCByZXN1bHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2VxKQorICAgICAgICBf
c2xvd19wYXRoX2VxKQogCiAKIF9sbGludF9vcF9uZXE6CiAgICAgZXF1YWxpdHlDb21wYXJpc29u
KAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQs
IHJlc3VsdCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfbmVxKQorICAgICAgICBfc2xv
d19wYXRoX25lcSkKIAogCiBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKQEAgLTQzMCwxMyAr
NDMwLDEzIEBAIGVuZAogX2xsaW50X29wX3N0cmljdGVxOgogICAgIHN0cmljdEVxKAogICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVu
ZCwKLSAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9zdHJpY3RlcSkKKyAgICAgICAgX3Nsb3dfcGF0
aF9zdHJpY3RlcSkKIAogCiBfbGxpbnRfb3BfbnN0cmljdGVxOgogICAgIHN0cmljdEVxKAogICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FuZXEgbGVmdCwgcmlnaHQsIHJlc3Vs
dCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfbnN0cmljdGVxKQorICAgICAgICBfc2xv
d19wYXRoX25zdHJpY3RlcSkKIAogCiBtYWNybyBwcmVPcChhcml0aG1ldGljT3BlcmF0aW9uLCBz
bG93UGF0aCkKQEAgLTQ1NywxMyArNDU3LDEzIEBAIGVuZAogX2xsaW50X29wX2luYzoKICAgICBw
cmVPcCgKICAgICAgICAgbWFjcm8gKHZhbHVlLCBzbG93KSBiYWRkaW8gMSwgdmFsdWUsIHNsb3cg
ZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCisgICAgICAgIF9zbG93X3Bh
dGhfaW5jKQogCiAKIF9sbGludF9vcF9kZWM6CiAgICAgcHJlT3AoCiAgICAgICAgIG1hY3JvICh2
YWx1ZSwgc2xvdykgYnN1YmlvIDEsIHZhbHVlLCBzbG93IGVuZCwKLSAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9wcmVfZGVjKQorICAgICAgICBfc2xvd19wYXRoX2RlYykKIAogCiBfbGxpbnRfb3Bf
dG9fbnVtYmVyOgpAQCAtNDc4LDcgKzQ3OCw3IEBAIF9sbGludF9vcF90b19udW1iZXI6CiAgICAg
ZGlzcGF0Y2goMykKIAogLm9wVG9OdW1iZXJTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3RvX251bWJlcikKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b19udW1i
ZXIpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC01MDAsNyArNTAwLDcgQEAgX2xsaW50X29wX25l
Z2F0ZToKICAgICBkaXNwYXRjaCgzKQogCiAub3BOZWdhdGVTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25lZ2F0ZSkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9u
ZWdhdGUpCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC01NjgsNyArNTY4LDcgQEAgX2xsaW50X29w
X2FkZDoKICAgICBiaW5hcnlPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
YWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGFkZGQgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2FkZCkKKyAg
ICAgICAgX3Nsb3dfcGF0aF9hZGQpCiAKIAogX2xsaW50X29wX211bDoKQEAgLTU4Niw3ICs1ODYs
NyBAQCBfbGxpbnRfb3BfbXVsOgogICAgICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCBpbmRleCwg
OF0KICAgICAgICAgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwg
cmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX211bCkKKyAgICAgICAgX3Nsb3df
cGF0aF9tdWwpCiAKIAogX2xsaW50X29wX3N1YjoKQEAgLTU5NCw3ICs1OTQsNyBAQCBfbGxpbnRf
b3Bfc3ViOgogICAgIGJpbmFyeU9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfc3ViKQor
ICAgICAgICBfc2xvd19wYXRoX3N1YikKIAogCiBfbGxpbnRfb3BfZGl2OgpAQCAtNjE4LDcgKzYx
OCw3IEBAIF9sbGludF9vcF9kaXY6CiAgICAgICAgICAgICBzdG9yZXEgdDAsIFtjZnIsIGluZGV4
LCA4XQogICAgICAgICBlbmQsCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0
LCByaWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfZGl2KQorICAgICAgICBfc2xv
d19wYXRoX2RpdikKIAogCiBtYWNybyBiaXRPcChvcGVyYXRpb24sIHNsb3dQYXRoLCBhZHZhbmNl
KQpAQCAtNjQzLDcgKzY0Myw3IEBAIF9sbGludF9vcF9sc2hpZnQ6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGJpdE9wKAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGxzaGlm
dGkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwKKyAg
ICAgICAgX3Nsb3dfcGF0aF9sc2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNjUxLDcgKzY1MSw3
IEBAIF9sbGludF9vcF9yc2hpZnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGJpdE9wKAog
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5k
LAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3JzaGlmdCwKKyAgICAgICAgX3Nsb3dfcGF0aF9y
c2hpZnQsCiAgICAgICAgIDQpCiAKIApAQCAtNjYyLDcgKzY2Miw3IEBAIF9sbGludF9vcF91cnNo
aWZ0OgogICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKICAgICAgICAgICAgIGJpbHQg
cmlnaHQsIDAsIHNsb3cKICAgICAgICAgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3Vy
c2hpZnQsCisgICAgICAgIF9zbG93X3BhdGhfdXJzaGlmdCwKICAgICAgICAgNCkKIAogCkBAIC02
NzAsNyArNjcwLDcgQEAgX2xsaW50X29wX2JpdGFuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgYml0T3AoCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCBy
aWdodCBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5kLAorICAgICAgICBfc2xv
d19wYXRoX2JpdGFuZCwKICAgICAgICAgNSkKIAogCkBAIC02NzgsNyArNjc4LDcgQEAgX2xsaW50
X29wX2JpdHhvcjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYml0T3AoCiAgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCi0gICAgICAgIF9s
bGludF9zbG93X3BhdGhfYml0eG9yLAorICAgICAgICBfc2xvd19wYXRoX2JpdHhvciwKICAgICAg
ICAgNSkKIAogCkBAIC02ODYsNyArNjg2LDcgQEAgX2xsaW50X29wX2JpdG9yOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBiaXRPcCgKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdG9yLAor
ICAgICAgICBfc2xvd19wYXRoX2JpdG9yLAogICAgICAgICA1KQogCiAKQEAgLTE1MDUsNyArMTUw
NSw3IEBAIF9sbGludF9vcF90b19wcmltaXRpdmU6CiAgICAgZGlzcGF0Y2goMykKIAogLm9wVG9Q
cmltaXRpdmVTbG93Q2FzZToKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b19w
cmltaXRpdmUpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fcHJpbWl0aXZlKQogICAg
IGRpc3BhdGNoKDMpCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTUxMzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC00MzAsMTIgKzQzMCwxMiBAQCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9w
cm9sb2d1ZToKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgogICAgIHBy
b2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xs
aW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCi0gICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5m
dW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCisg
ICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX3Nsb3dfcGF0aF9j
YWxsX2FyaXR5Q2hlY2spCiAKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2s6CiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIs
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVj
dCkKLSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9s
bGludF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCisgICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQogCiAKICMgVmFsdWUtcmVwcmVzZW50YXRpb24tc3BlY2lmaWMgY29kZS4KQEAgLTQ3
Myw1NSArNDczLDU1IEBAIF9sbGludF9vcF9uZXdfcmVnZXhwOgogCiBfbGxpbnRfb3BfbGVzczoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bGVzcykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9sZXNzKQogICAgIGRpc3BhdGNoKDQp
CiAKIAogX2xsaW50X29wX2xlc3NlcToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbGVzc2VxKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19w
YXRoX2xlc3NlcSkKICAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9ncmVhdGVyOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ncmVh
dGVyKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dyZWF0ZXIpCiAgICAgZGlzcGF0Y2go
NCkKIAogCiBfbGxpbnRfb3BfZ3JlYXRlcmVxOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ncmVhdGVyZXEpCisgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfZ3JlYXRlcmVxKQogICAgIGRpc3BhdGNoKDQpCiAKIAogX2xsaW50X29wX21v
ZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfbW9kKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX21vZCkKICAgICBkaXNwYXRjaCg0
KQogCiAKIF9sbGludF9vcF90eXBlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3R5cGVvZikKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF90eXBlb2YpCiAgICAgZGlzcGF0Y2goMykKIAogCiBfbGxpbnRfb3BfaXNfb2JqZWN0Ogog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9p
c19vYmplY3QpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaXNfb2JqZWN0KQogICAgIGRp
c3BhdGNoKDMpCiAKIAogX2xsaW50X29wX2lzX2Z1bmN0aW9uOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19mdW5jdGlvbikKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pc19mdW5jdGlvbikKICAgICBkaXNwYXRjaCgzKQogCiAK
IF9sbGludF9vcF9pbjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaW4pCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaW4pCiAgICAg
ZGlzcGF0Y2goNCkKIAogbWFjcm8gZ2V0UHV0VG9CYXNlT3BlcmF0aW9uRmllbGQoc2NyYXRjaCwg
c2NyYXRjaDEsIGZpZWxkT2Zmc2V0LCBmaWVsZEdldHRlcikKQEAgLTExMzgsNyArMTEzOCw3IEBA
IF9sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKIAogX2xsaW50X29wX3N0cmNhdDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfc3RyY2F0
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3N0cmNhdCkKICAgICBkaXNwYXRjaCg0KQog
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE1MTM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFNsb3dQYXRo
cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTbG93UGF0aHMuaCIKICNp
bmNsdWRlICJWTUluc3BlY3Rvci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21tb25T
bG93UGF0aHMuaCIKKworI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKKworI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCisjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVyLmgi
CisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCisj
aW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURh
dGFJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCisjZGVmaW5lIEJFR0lOX05PX1NFVF9QQygpIFwKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOyAgICAgIFwKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYykKKworI2lmbmRlZiBOREVCVUcKKyNkZWZpbmUgU0VUX1BDX0ZPUl9TVFVCUygpIGRvIHsg
XAorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQocGMpOyBcCisgICAg
ICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyAxKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
I2Vsc2UKKyNkZWZpbmUgU0VUX1BDX0ZPUl9TVFVCUygpIGRvIHsgXAorICAgICAgICBleGVjLT5z
ZXRDdXJyZW50VlBDKHBjICsgMSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbmRpZgorCisj
ZGVmaW5lIEJFR0lOKCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQkVHSU5fTk9f
U0VUX1BDKCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgU0VUX1BDX0ZPUl9TVFVCUygpCisK
KyNkZWZpbmUgT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQp
KQorI2RlZmluZSBPUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKwor
I2RlZmluZSBSRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KGZpcnN0LCBzZWNvbmQpOyAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIEVORF9JTVBMKCkgUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2Rl
ZmluZSBUSFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICB2bS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcGMgPSBMTEludDo6cmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKSkgeyAgICAgICAgICAgXAorICAgICAgICAgICAg
cGMgPSBMTEludDo6cmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBFTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBDSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAg
ICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIEJSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGJvb2wgYkNvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChiQ29uZGl0aW9uKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tP
UENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVs
c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgUkVUVVJO
KHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSByUmV0dXJuVmFs
dWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgT1AoMSkgPSByUmV0dXJuVmFsdWU7ICAgICAgICAgIFwKKyAgICAg
ICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyNkZWZpbmUgUkVUVVJOX1BST0ZJTEVE
KG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgcnBQ
ZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
T1AoMSkgPSBycFBldHVyblZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IFBST0ZJTEVfVkFMVUUob3Bjb2RlLCBycFBldHVyblZhbHVlKTsgICAgICAgICAgXAorICAgICAg
ICBFTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBQUk9GSUxFX1ZBTFVFKG9wY29kZSwgdmFsdWUp
IGRvIHsgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUt
Pm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNlbHNlIC8vIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKKyNkZWZpbmUgUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIFJFVFVS
Tih2YWx1ZSkKKworI2RlZmluZSBQUk9GSUxFX1ZBTFVFKG9wY29kZSwgdmFsdWUpIGRvIHsgfSB3
aGlsZSAoZmFsc2UpCisKKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisKKyNkZWZp
bmUgQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBSRVRVUk5fVFdPKChjYWxsVGFyZ2V0
KSwgKGV4ZWMpKQorCisjZGVmaW5lIENBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhy
b3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogY3RFeGVjID0gKGV4
ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0
aW9uKiBjdFBDID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHZtLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBDQUxMX0VORF9JTVBMKGN0RXhlYywgTExJbnQ6OmNhbGxUb1Rocm93
KGN0RXhlYywgY3RQQykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRXhlY1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0gKHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2Vw
dGlvbikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgQ0FMTF9F
TkRfSU1QTChjY2VFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY2NlRXhlYywgY2NlUEMpKTsgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIENBTExfUkVUVVJOKGV4ZWMsIHBjLCBjYWxs
VGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogY3JF
eGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEluc3RydWN0aW9uKiBjclBDID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHZvaWQqIGNyQ2FsbFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIENBTExfQ0hFQ0tfRVhDRVBUSU9OKGNyRXhl
Yy0+Y2FsbGVyRnJhbWUoKSwgY3JQQyk7ICBcCisgICAgICAgIENBTExfRU5EX0lNUEwoY3JFeGVj
LCBjckNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgQkVHSU4o
KTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tG
b3IoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYg
KCFuZXdFeGVjKSB7CisgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5y
ZXR1cm5QQygpOworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAg
dm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBM
TEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVyblBDKTsKKyAgICAgICAg
UkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkp
LCBleGVjKTsKKyAgICB9CisgICAgUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIEJFR0lOKCk7
CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
KGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
aWYgKCFuZXdFeGVjKSB7CisgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVj
LT5yZXR1cm5QQygpOworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAg
ICAgdm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAg
ICBMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVyblBDKTsKKyAgICAg
ICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MSkpLCBleGVjKTsKKyAgICB9CisgICAgUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgQkVHSU4oKTsK
KyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUodm0sIGV4
ZWMpKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFd
LnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgRU5E
KCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKK3sKKyAgICBC
RUdJTigpOworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTRnVuY3Rpb24q
PihPUCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9y
LT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RE
YXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisKKyAgICBzaXplX3QgaW5saW5lQ2Fw
YWNpdHkgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25z
dHJ1Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5zdHJ1Y3R1
cmUoKTsKKyAgICBSRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7
Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQoreworICAgIEJFR0lOKCk7
CisgICAgSlNWYWx1ZSB2MSA9IE9QKDEpLmpzVmFsdWUoKTsKKyNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF90b190aGlzKSAtIDFdLnUucHJvZmlsZS0+
bV9idWNrZXRzWzBdID0KKyAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKHYxLnN0cnVjdHVyZU9yVW5k
ZWZpbmVkKCkpOworI2VuZGlmCisgICAgUkVUVVJOKHYxLnRvVGhpcyhleGVjLCBleGVjLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOwor
fQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQoreworICAgIEJFR0lOKCk7CisgICAg
UkVUVVJOKGpzQm9vbGVhbighT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJF
VFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9Q
X0MoMykuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVxKQor
eworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhl
YywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfc3RyaWN0ZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4o
anNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBP
UF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25zdHJp
Y3RlcSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0
cmljdEVxdWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xlc3MpCit7CisgICAgQkVHSU4oKTsKKyAg
ICBSRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwg
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sZXNz
ZXEpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+
KGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXIpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRV
Uk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgT1BfQygzKS5qc1ZhbHVlKCksIE9QX0Mo
MikuanNWYWx1ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ3JlYXRlcmVx
KQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4o
ZXhlYywgT1BfQygzKS5qc1ZhbHVlKCksIE9QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpz
TnVtYmVyKE9QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlYykKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc051
bWJlcihPUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF90b19udW1iZXIpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4o
anNOdW1iZXIoT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihq
c051bWJlcigtT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgdjEg
PSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkgJiYgIXYyLmlzT2JqZWN0KCkpCisgICAgICAg
IFJFVFVSTihqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvU3RyaW5nKGV4ZWMpKSk7
CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAg
UkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisg
ICAgUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKKy8vIFRoZSBmb2xs
b3dpbmcgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIG5lZWQgdG8gYmUgc3VyZSB0
byBydW4KKy8vIHRvTnVtYmVyKCkgb24gdGhlaXIgb3BlcmFuZHMgaW4gb3JkZXIuICAoQSBjYWxs
IHRvIHRvTnVtYmVyKCkgaXMgaWRlbXBvdGVudAorLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVh
ZHkgc2V0IG9uIHRoZSBFeGVjU3RhdGUuKQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVs
KQoreworICAgIEJFR0lOKCk7CisgICAgZG91YmxlIGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhICogYikpOworfQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfc3ViKQoreworICAgIEJFR0lOKCk7CisgICAgZG91YmxlIGEgPSBPUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9QX0MoMykuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhIC0gYikpOworfQorCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZGl2KQoreworICAgIEJFR0lOKCk7CisgICAgZG91YmxlIGEg
PSBPUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYiA9IE9QX0Mo
MykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051bWJlcihhIC8gYikp
OworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQoreworICAgIEJFR0lOKCk7Cisg
ICAgZG91YmxlIGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBkb3Vi
bGUgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIFJFVFVSTihqc051
bWJlcihmbW9kKGEsIGIpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQp
Cit7CisgICAgQkVHSU4oKTsKKyAgICBpbnQzMl90IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b0lu
dDMyKGV4ZWMpOworICAgIHVpbnQzMl90IGIgPSBPUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihl
eGVjKTsKKyAgICBSRVRVUk4oanNOdW1iZXIoYSA8PCAoYiAmIDMxKSkpOworfQorCitTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQoreworICAgIEJFR0lOKCk7CisgICAgaW50MzJfdCBh
ID0gT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICB1aW50MzJfdCBiID0gT1Bf
QygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgPj4g
KGIgJiAzMSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpCit7Cisg
ICAgQkVHSU4oKTsKKyAgICB1aW50MzJfdCBhID0gT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYyk7CisgICAgdWludDMyX3QgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMp
OworICAgIFJFVFVSTihqc051bWJlcihhID4+IChiICYgMzEpKSk7Cit9CisKK1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9iaXRhbmQpCit7CisgICAgQkVHSU4oKTsKKyAgICBpbnQzMl90IGEgPSBP
UF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgYiA9IE9QX0MoMyku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgUkVUVVJOKGpzTnVtYmVyKGEgJiBiKSk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKK3sKKyAgICBCRUdJTigpOworICAg
IGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CisgICAgaW50MzJf
dCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBSRVRVUk4oanNOdW1i
ZXIoYSB8IGIpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKK3sKKyAg
ICBCRUdJTigpOworICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhl
Yyk7CisgICAgaW50MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAg
ICBSRVRVUk4oanNOdW1iZXIoYSBeIGIpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3R5cGVvZikKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1
ZShleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaXNfb2JqZWN0KQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihqc0lz
T2JqZWN0VHlwZShleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQoreworICAgIEJFR0lOKCk7CisgICAgUkVUVVJOKGpz
Qm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKE9QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaW4pCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlf
dmFsKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpz
VmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChl
eGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IE9QX0MoMykuanNWYWx1ZSgpOwor
ICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBp
ZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhl
YywgaSk7CisgICAgZWxzZSBpZiAoaXNOYW1lKHN1YnNjcmlwdCkpCisgICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZXhlYywganNDYXN0PE5hbWVJbnN0YW5jZSo+KHN1YnNjcmlwdC5hc0NlbGwoKSktPnByaXZh
dGVOYW1lKCkpOworICAgIGVsc2UgeworICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICAg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgVEhST1coY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAg
ICBSRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9zdHJjYXQpCit7CisgICAgQkVHSU4oKTsKKyAgICBSRVRVUk4oanNTdHJpbmcoZXhl
YywgJk9QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBCRUdJTigpOworICAgIFJFVFVSTihPUF9DKDIpLmpz
VmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkgfHwgRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDE1MTM0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw4ICsyOSwxMCBAQAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25IZWxwZXJzLmgiCi0jaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIk5hbWVJ
bnN0YW5jZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkg
fHwgRU5BQkxFKExMSU5UKQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtOTcsNiArOTksMTA5IEBA
IGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICByZXR1cm4gYmFz
ZU9iai0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHkpOwogfQogCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6Q29tbW9uU2xvd1BhdGhzCit9IC8vIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMKKwor
Y2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCisjaWYgVVNFKEpTVkFMVUU2
NCkKKy8vIEFjY29yZGluZyB0byBDKysgcnVsZXMsIGEgdHlwZSB1c2VkIGZvciB0aGUgcmV0dXJu
IHNpZ25hdHVyZSBvZiBmdW5jdGlvbiB3aXRoIEMgbGlua2FnZSAoaS5lLgorLy8gJ2V4dGVybiAi
QyInKSBuZWVkcyB0byBiZSBQT0Q7IGhlbmNlIHB1dHRpbmcgYW55IGNvbnN0cnVjdG9ycyBpbnRv
IGl0IGNvdWxkIGNhdXNlIGVpdGhlciBjb21waWxlcgorLy8gd2FybmluZ3MsIG9yIHdvcnNlLCBh
IGNoYW5nZSBpbiB0aGUgQUJJIHVzZWQgdG8gcmV0dXJuIHRoZXNlIHR5cGVzLgorc3RydWN0IFNs
b3dQYXRoUmV0dXJuVHlwZSB7CisgICAgdm9pZCogYTsKKyAgICBFeGVjU3RhdGUqIGI7Cit9Owor
CitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVjU3Rh
dGUqIGIpCit7CisgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdDsKKyAgICByZXN1bHQuYSA9
IGE7CisgICAgcmVzdWx0LmIgPSBiOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSB2
b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhl
Y1N0YXRlKiYgYikKK3sKKyAgICBhID0gcmVzdWx0LmE7CisgICAgYiA9IHJlc3VsdC5iOworfQor
CisjZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQordHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRoUmV0
dXJuVHlwZTsKKwordHlwZWRlZiB1bmlvbiB7CisgICAgc3RydWN0IHsKKyAgICAgICAgdm9pZCog
YTsKKyAgICAgICAgRXhlY1N0YXRlKiBiOworICAgIH0gcGFpcjsKKyAgICBpbnQ2NF90IGk7Cit9
IFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nOworCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IGVuY29kZVJlc3VsdCh2b2lkKiBhLCBFeGVjU3RhdGUqIGIpCit7CisgICAgU2xvd1BhdGhSZXR1
cm5UeXBlRW5jb2RpbmcgdTsKKyAgICB1LnBhaXIuYSA9IGE7CisgICAgdS5wYWlyLmIgPSBiOwor
ICAgIHJldHVybiB1Lmk7Cit9CisKK2lubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJl
dHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgRXhlY1N0YXRlKiYgYikKK3sKKyAgICBTbG93UGF0
aFJldHVyblR5cGVFbmNvZGluZyB1OworICAgIHUuaSA9IHJlc3VsdDsKKyAgICBhID0gdS5wYWly
LmE7CisgICAgYiA9IHUucGFpci5iOworfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgCisjZGVmaW5lIFNMT1dfUEFUSAorICAgIAorI2RlZmluZSBTTE9XX1BBVEhfREVDTChuYW1l
KSBcCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBTTE9XX1BBVEggbmFtZShFeGVjU3Rh
dGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKyAgICAKKyNkZWZpbmUgU0xPV19QQVRIX0hJRERF
Tl9ERUNMKG5hbWUpIFwKK1NMT1dfUEFUSF9ERUNMKG5hbWUpIFdURl9JTlRFUk5BTAorICAgIAor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3RvX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ub3Qp
OworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25lcSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N0
cmljdGVxKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbnN0cmljdGVxKTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbGVzcyk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2xlc3NlcSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dy
ZWF0ZXIpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyZXEpOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbmMpOworU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9kZWMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19udW1i
ZXIpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZGQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9tdWwpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdWIpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kaXYpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9tb2QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfYml0YW5kKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYml0b3IpOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpOworU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF90eXBlb2YpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9p
c19vYmplY3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7
CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luKTsKK1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3N0cmNhdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1pdGl2
ZSk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkgfHwgRU5B
QkxFKExMSU5UKQogCiAjZW5kaWYgLy8gQ29tbW9uU2xvd1BhdGhzX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE1MTM0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTExLDYgKzExMSw3IEBAIGlubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUgbnVt
YmVyKQogY2xhc3MgSlNWYWx1ZSB7CiAgICAgZnJpZW5kIHN0cnVjdCBFbmNvZGVkSlNWYWx1ZUhh
c2hUcmFpdHM7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgSklUU2xv
d1BhdGhDYWxsOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViczsKICAgICBmcmllbmQgY2xhc3Mg
SklUU3R1YkNhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpTSW50ZXJmYWNlSklUOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>