<?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>180607</bug_id>
          
          <creation_ts>2017-12-08 14:24:38 -0800</creation_ts>
          <short_desc>Web Inspector: get rid of remaining uses of OptOutput&lt;T&gt;</short_desc>
          <delta_ts>2018-02-19 01:04:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>bburg</cc>
    
    <cc>csaavedra</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jlewis3</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1379789</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-08 14:24:38 -0800</bug_when>
    <thetext>Gross</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399380</commentid>
    <comment_count>1</comment_count>
      <attachid>333874</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-02-14 21:50:47 -0800</bug_when>
    <thetext>Created attachment 333874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399381</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-14 21:51:31 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399562</commentid>
    <comment_count>3</comment_count>
      <attachid>333928</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-02-15 11:57:40 -0800</bug_when>
    <thetext>Created attachment 333928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399595</commentid>
    <comment_count>4</comment_count>
      <attachid>333928</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-15 13:26:59 -0800</bug_when>
    <thetext>Comment on attachment 333928
Patch

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

r=me, great cleanup! Thanks!

&gt; Source/JavaScriptCore/inspector/InspectorProtocolTypes.h:36
&gt; +template&lt;typename&gt; struct BindingTraits;

I didn&apos;t know you could do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399607</commentid>
    <comment_count>5</comment_count>
      <attachid>333941</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-02-15 14:06:58 -0800</bug_when>
    <thetext>Created attachment 333941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399645</commentid>
    <comment_count>6</comment_count>
      <attachid>333957</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-02-15 15:20:05 -0800</bug_when>
    <thetext>Created attachment 333957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399715</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-02-15 18:14:33 -0800</bug_when>
    <thetext>Committed r228546: &lt;https://trac.webkit.org/changeset/228546&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399716</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-15 18:15:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/37591967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399859</commentid>
    <comment_count>9</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-02-16 05:13:28 -0800</bug_when>
    <thetext>This change seems to have broken inspector/heap/getPreview.html, in WebKitGTK+ and Mac as well. Might be related to the change in signature of InspectorHeapAgent::getPreview(), but I am not sure. Please check it? Below is the failure diff. Seems that the string variable in the test is undefined.


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/inspector/heap/getPreview-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/inspector/heap/getPreview-actual.txt
@@ -9,7 +9,7 @@
 -- Running test case: GetPreviewForString
 PASS: Should not have an error creating a snapshot.
 PASS: Should not have an error getting preview.
-STRING: This is the test string.
+STRING: undefined
 
 -- Running test case: GetPreviewForFunction
 PASS: Should not have an error creating a snapshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399929</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-02-16 10:42:18 -0800</bug_when>
    <thetext>It looks like it has actually cause the same test to crash with an assertion failure on Debug macOS testers as well.

sderr:

LEAK: 6 CachedResource
LEAK: 25 WebCoreNode
Assertion failed: (initialized()), function operator*, file /Volumes/Data/slave/highsierra-debug/build/WebKitBuild/Debug/usr/local/include/wtf/Optional.h, line 595.
LEAK: 2 WebPageProxy


https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r228557%20(2088)/results.html
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/builds/2088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399937</commentid>
    <comment_count>11</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-02-16 10:52:28 -0800</bug_when>
    <thetext>Reverted r228546 for reason:

This caused a consistent crash on all macOS WK2 platforms.

Committed r228563: &lt;https://trac.webkit.org/changeset/228563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399940</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-16 10:58:53 -0800</bug_when>
    <thetext>(In reply to Claudio Saavedra from comment #9)
&gt; This change seems to have broken inspector/heap/getPreview.html, in
&gt; WebKitGTK+ and Mac as well. Might be related to the change in signature of
&gt; InspectorHeapAgent::getPreview(), but I am not sure. Please check it? Below
&gt; is the failure diff. Seems that the string variable in the test is undefined.
&gt; 
&gt; 
&gt; ---
&gt; /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/
&gt; inspector/heap/getPreview-expected.txt
&gt; +++
&gt; /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/
&gt; inspector/heap/getPreview-actual.txt
&gt; @@ -9,7 +9,7 @@
&gt;  -- Running test case: GetPreviewForString
&gt;  PASS: Should not have an error creating a snapshot.
&gt;  PASS: Should not have an error getting preview.
&gt; -STRING: This is the test string.
&gt; +STRING: undefined
&gt;  
&gt;  -- Running test case: GetPreviewForFunction
&gt;  PASS: Should not have an error creating a snapshot.

The code used to do *result = ..., but now it should not use operator*. It should just assign to result. So the crash is using operator* on an empty std::optional. (I&apos;m not sure what the semantics of this, or whether it&apos;s allowed. Should just not use operator* here.)

As for the other ServiceWorker crashes, I have no idea what&apos;s going on and it looks like unrelated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400170</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-02-17 11:10:21 -0800</bug_when>
    <thetext>Committed r228600: &lt;https://trac.webkit.org/changeset/228600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400171</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-02-17 11:10:39 -0800</bug_when>
    <thetext>Re-landed with the offending &quot;*&quot; character removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400291</commentid>
    <comment_count>15</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-02-19 01:04:11 -0800</bug_when>
    <thetext>Thanks, test passing again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333874</attachid>
            <date>2018-02-14 21:50:47 -0800</date>
            <delta_ts>2018-02-15 11:57:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180607-20180214215046.patch</filename>
            <type>text/plain</type>
            <size>160360</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmY3ZDYzODI4ODM1MDZhNzYyNGYyN2E2MThmMDdlODIwYmYyZDIzLi5iODlkNTUwNjg0Y2RhODQ5
ZDdlNDlmYmQ1ZDllZGQ2YjIyMzJiZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NyBAQAorMjAxOC0wMi0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiByZW1haW5pbmcgdXNlcyBvZiBPcHRP
dXRwdXQ8VD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MDYwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHA6IFJlbW92ZWQgZXhwbGljaXQgSW5zcGVj
dG9yIHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUgdGhlIEluc3BlY3Rv
ciBuYW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvQXN5bmNTdGFja1RyYWNlLmg6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHA6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlsaXRpZXMuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2UgcmVtb3ZhbCBhbmQgLi4u
CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmdldFJlZ3VsYXJF
eHByZXNzaW9uTWF0Y2hlc0J5TGluZXMpOiBVc2UgYQorICAgICAgICBWZWN0b3IgaW5zdGVhZCBv
ZiBhIHVuaXF1ZV9wdHI8VmVjdG9yPi4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6bGluZUVuZGluZ3MpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29u
dGVudFNlYXJjaFV0aWxpdGllczo6c3R5bGVzaGVldENvbW1lbnRQYXR0ZXJuKTogRGVsZXRlZC4K
KyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0aWxpdGllczo6ZmluZE1hZ2ljQ29t
bWVudCk6IFVzZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YKKyAgICAgICAgYSBWZWN0b3IgZm9yIGEg
Zml4ZWQgc2l6ZSBhcnJheTsgYWxzbyBnb3QgcmlkIG9mIHJlaW50ZXJwcmV0X2Nhc3QuCisgICAg
ICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmZpbmRTdHlsZXNoZWV0U291
cmNlTWFwVVJMKTogTW92ZWQgdGhlIHJlZ3VsYXIKKyAgICAgICAgZXhwcmVzc2lvbiBoZXJlIHNp
bmNlIGl0J3MgdGhlIG9ubHkgcGxhY2UgaXQgd2FzIHVzZWQuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oOiBDdXQgZG93biBvbiB1bm5lZWRlZCBpbmNsdWRl
cy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6IFJlbW92ZWQgZXhw
bGljaXQgSW5zcGVjdG9yIHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUg
dGhlIEluc3BlY3RvciBuYW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg6IFJlbW92ZWQgT3B0
T3V0cHV0LiBTaW1wbGlmaWVkIGFzc2VydGlvbnMuCisgICAgICAgIFJlbW92ZWQgYmFzZSB0ZW1w
bGF0ZSBmb3IgQmluZGluZ1RyYWl0czsgd2Ugb25seSBuZWVkIHRoZSBzcGVjaWFsaXphdGlvbnMu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZCBleHBs
aWNpdCBJbnNwZWN0b3IgcHJlZml4IGZyb20gY29kZSB0aGF0CisgICAgICAgIGlzIGluc2lkZSB0
aGUgSW5zcGVjdG9yIG5hbWVzcGFjZSBhbHJlYWR5LiBBbHNvIHVzZSBhdXRvIGEgYml0LgorICAg
ICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDogRGl0dG8uCisgICAgICAgICogaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suaDogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5hbWVzcGFj
ZSByZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6IFVzZSBzdGQ6Om9wdGlvbmFsJiBpbnRlYWQgb2YK
KyAgICAgICAgT3B0T3V0cHV0KiBmb3Igb3V0IGFyZ3VtZW50cy4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5h
bWVzcGFjZSByZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVh
cEFnZW50OjpnZXRQcmV2aWV3KTogVXNlIHN0ZDo6b3B0aW9uYWwmIGludGVhZCBvZiBPcHRPdXRw
dXQqCisgICAgICAgIGZvciBvdXQgYXJndW1lbnRzLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2Ug
cmVtb3ZhbCBhbmQgLi4uCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6cGFyc2UpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW50ZWFkIG9mIE9wdE91dHB1dCoKKyAgICAg
ICAgZm9yIG91dCBhcmd1bWVudHMuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6ZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
UnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6IERpdHRvLgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQpOiBEaXR0by4KKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOiBEaXR0by4KKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6IE1v
cmUgSW5zcGVjdG9yIG5hbWVzcGFjZSByZW1vdmFsCisgICAgICAgIGFuZCByZW1vdmVkIHNvbWUg
Ym9ndXMgY29uc3QuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zv
cl91bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcik6IFJlbW92ZWQgc29tZSBib2d1cyBjb25z
dC4KKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfdHlwZV93aXRoX25hbWUpOiBE
aXR0by4KKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291dF9wYXJh
bWV0ZXIpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW5zdGVhZCBvZgorICAgICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQqLgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zv
cl9mb3JtYWxfYXN5bmNfcGFyYW1ldGVyKTogRGl0dG8uCisgICAgICAgIChDcHBHZW5lcmF0b3Iu
Y3BwX3R5cGVfZm9yX3N0YWNrX2luX3BhcmFtZXRlcik6IERpdHRvLgorICAgICAgICAoQ3BwR2Vu
ZXJhdG9yLmNwcF90eXBlX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKTogRGl0dG8uCisKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5
OiBSZW1vdmVkIEFTU0VSVF9ESVNBQkxFRAorICAgICAgICBjb25kaXRpb25hbCBhcm91bmQgYXNz
ZXJ0aW9uIGNvZGUgd2hpY2ggd2lsbCBub3cgY29tcGlsZSB0byBub3RoaW5nIGlmIEFTU0VSVCBp
cyBkaXNhYmxlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENw
cEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2FzeW5j
X2Rpc3BhdGNoZXJfY2xhc3NfZm9yX2RvbWFpbik6CisgICAgICAgIFVzZSBoYXNfdmFsdWUgaW5z
dGVhZCBvZiBpc0Fzc2lnbmVkIGFuZCAqIG9wZXJhdG9yIGluc3RlYWQgb2YgZ2V0VmFsdWUoKSBz
aW5jZSBzdGQ6Om9wdGlvbmFsCisgICAgICAgIHJlcGxhY2UgT3B0T3V0cHV0IGhlcmUuCisgICAg
ICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgUGFzcyBi
eSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyIG5vdy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weToK
KyAgICAgICAgUmVtb3ZlZCBBU1NFUlRfRElTQUJMRUQgY29uZGl0aW9uYWwgYXJvdW5kIGFzc2Vy
dGlvbiBjb2RlIHdoaWNoIHdpbGwgbm93IGNvbXBpbGUgdG8gbm90aGluZworICAgICAgICBpZiBB
U1NFUlQgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAg
KENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfYXNzZXJ0
aW9uX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24pOiBHZW5lcmF0ZQorICAgICAgICB0aGUgYXNzZXJ0
aW9uIGZ1bmN0aW9uIHVuY29uZGl0aW9uYWxseSwgYnV0IGxlYXZlIG91dCB0aGUgYXNzZXJ0aW9u
cyBpZiBBU1NFUlRfRElTQUJMRUQgaXMgdHJ1ZS4KKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcik6IFVzZSBhdXRvIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQg
SlNPTjo6T2JqZWN0OjppdGVyYXRvci4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9l
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVu
dGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKyAgICAgICAgUmViYXNlbGluZWQuCisKIDIwMTgtMDIt
MTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2Ug
c2hvdWxkIGJlIGFibGUgdG8ganNEeW5hbWljQ2FzdCBmcm9tIEpTVHlwZSB3aGVuIHBvc3NpYmxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYzQ5YzM4MmIyZjAwMTJjMjQxZjQwNDM2NTIzMzY5NDM5NjYxNmJhMC4u
MWMyMDEyM2M4NGI3MTQ0MTA1MmUwN2I1Zjk4NDc1ZTY4MjE0ZjFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDE4LTAyLTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIHJlbWFpbmluZyB1c2VzIG9mIE9w
dE91dHB1dDxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwNjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZFNvdXJjZVJhbmdlT2JqZWN0KTogVGFrZSBhIGNvbnN0IFZlY3RvciYgaW5zdGVhZCBv
ZiBhIFZlY3RvciouCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmpl
Y3RGb3JTdHlsZSBjb25zdCk6IFBhc3MgbGluZUVuZGluZ3MoKSBpbnN0ZWFkCisgICAgICAgIG9m
IGxpbmVFbmRpbmdzKCkuZ2V0KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6
c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzIGNvbnN0KTog
UmV0dXJuIGEgVmVjdG9yIGluc3RlYWQgb2YKKyAgICAgICAgYSBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPi4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZTo6bGluZUVuZGluZ3MgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50Lmg6IFJlbW92ZWQgc29tZSBib2d1cyBjb25z
dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDog
RGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
OiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHA6IEltcHJvdmVkIHR5cGUgb2YgZ2xvYmFsIHN0cmluZ3MKKyAgICAgICAgc28g
d2UgZG9uJ3Qgd2FzdGUgc3BhY2Ugd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZy4KKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50TGlzdGVuZXJC
cmVha3BvaW50KTogUmVtb3ZlZAorICAgICAgICBleHBsaWNpdCBjcmVhdGlvbiBvZiBTdHJpbmcs
IHdoaWNoIHdhcyB3YXN0ZWZ1bCBhbmQgdW5uZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1v
dmVFdmVudExpc3RlbmVyQnJlYWtwb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
WEhSQnJlYWtwb2ludCk6IFJlbW92ZWQgYm9ndXMgY29uc3QuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDogUmVtb3ZlZCBib2d1cyBjb25z
dCBhbmQgdXNlCisgICAgICAgIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOiBEaXR0by4KKwogMjAxOC0w
Mi0xNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtSZW5kZXJU
cmVlQnVpbGRlcl0gTW92ZSBSZW5kZXJNYXRoTUxGZW5jZWQ6OmFkZENoaWxkKCkgdG8gUmVuZGVy
VHJlZUJ1aWxkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
QXN5bmNTdGFja1RyYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5
bmNTdGFja1RyYWNlLmNwcAppbmRleCA5ZTY4YjQ5ZDk4YmQ5YWExZjM1ZTNmMTQ3ODE0NzM4MDJm
YzM3MzgxLi4zMTRiODdjNjg3YjgwZWRhODRhNjZjODdhNmE1YThiMTlkMDIxNDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXN5bmNTdGFja1RyYWNlLmgiCiAKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCkBAIC05NiwxNyArOTcsMTcgQEAgdm9pZCBBc3luY1N0YWNrVHJhY2U6
OmRpZENhbmNlbEFzeW5jQ2FsbCgpCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDYW5jZWxlZDsKIH0K
IAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IEFzeW5j
U3RhY2tUcmFjZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAorUmVmUHRyPFByb3RvY29s
OjpDb25zb2xlOjpTdGFja1RyYWNlPiBBc3luY1N0YWNrVHJhY2U6OmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
U3RhY2tUcmFjZT4gdG9wU3RhY2tUcmFjZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gcHJldmlvdXNTdGFja1RyYWNlOworICAgIFJlZlB0cjxQ
cm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gdG9wU3RhY2tUcmFjZTsKKyAgICBSZWZQdHI8
UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IHByZXZpb3VzU3RhY2tUcmFjZTsKIAogICAg
IGF1dG8qIHN0YWNrVHJhY2UgPSB0aGlzOwogICAgIHdoaWxlIChzdGFja1RyYWNlKSB7CiAgICAg
ICAgIGF1dG8mIGNhbGxTdGFjayA9IHN0YWNrVHJhY2UtPm1fY2FsbFN0YWNrOwogICAgICAgICBB
U1NFUlQoY2FsbFN0YWNrLT5zaXplKCkpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNlPiBwcm90b2NvbE9iamVjdCA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U6OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gcHJv
dG9jb2xPYmplY3QgPSBQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZTo6Y3JlYXRlKCkKICAg
ICAgICAgICAgIC5zZXRDYWxsRnJhbWVzKGNhbGxTdGFjay0+YnVpbGRJbnNwZWN0b3JBcnJheSgp
KQogICAgICAgICAgICAgLnJlbGVhc2UoKTsKIApAQCAtMTE2LDEyICsxMTcsMTIgQEAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFj
ZTo6YnVpbGRJbnNwZWN0b3IKICAgICAgICAgICAgIHByb3RvY29sT2JqZWN0LT5zZXRUb3BDYWxs
RnJhbWVJc0JvdW5kYXJ5KHRydWUpOwogCiAgICAgICAgIGlmICghdG9wU3RhY2tUcmFjZSkKLSAg
ICAgICAgICAgIHRvcFN0YWNrVHJhY2UgPSBwcm90b2NvbE9iamVjdDsKKyAgICAgICAgICAgIHRv
cFN0YWNrVHJhY2UgPSBwcm90b2NvbE9iamVjdC5wdHIoKTsKIAogICAgICAgICBpZiAocHJldmlv
dXNTdGFja1RyYWNlKQotICAgICAgICAgICAgcHJldmlvdXNTdGFja1RyYWNlLT5zZXRQYXJlbnRT
dGFja1RyYWNlKHByb3RvY29sT2JqZWN0KTsKKyAgICAgICAgICAgIHByZXZpb3VzU3RhY2tUcmFj
ZS0+c2V0UGFyZW50U3RhY2tUcmFjZShwcm90b2NvbE9iamVjdC5wdHIoKSk7CiAKLSAgICAgICAg
cHJldmlvdXNTdGFja1RyYWNlID0gcHJvdG9jb2xPYmplY3Q7CisgICAgICAgIHByZXZpb3VzU3Rh
Y2tUcmFjZSA9IFdURk1vdmUocHJvdG9jb2xPYmplY3QpOwogICAgICAgICBzdGFja1RyYWNlID0g
c3RhY2tUcmFjZS0+bV9wYXJlbnQuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaAppbmRleCBhNjE4ZmU3YWZmMWY2
ZDUxMGFhNDUwYzMzMGI3YTE4MGUzMGZiYWVmLi4xYzNjY2Y0ODM3YWIxNTcyMTBjMDNmYzgzZmJk
ZDdjNzk3ODUxOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0FzeW5jU3RhY2tUcmFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
QXN5bmNTdGFja1RyYWNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
RGlzcGF0Y2hBc3luY0NhbGwoKTsKICAgICB2b2lkIGRpZENhbmNlbEFzeW5jQ2FsbCgpOwogCi0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IGJ1aWxk
SW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisgICAgUmVmUHRyPFByb3RvY29sOjpDb25zb2xlOjpT
dGFja1RyYWNlPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OwogCiAgICAgfkFzeW5jU3Rh
Y2tUcmFjZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuY3BwCmluZGV4IDRjMTc1MTU2OTNiNDQ1OTFiN2Q2Y2IyMzkxOGQ0MjI3MTU4
YWUzZGEuLjVjZmIwNGRmNGFmODM0ODE5YmY4Zjc4ZmIxZDhlNjE3NzM4Y2FlNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBA
IC0xNTQsNjEgKzE1NCw2MSBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphdXRvZ2VuZXJhdGVNZXRh
ZGF0YShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgfQogfQogCi1zdGF0aWMgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZSBtZXNzYWdlU291cmNlVmFsdWUoTWVz
c2FnZVNvdXJjZSBzb3VyY2UpCitzdGF0aWMgUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3Vy
Y2UgbWVzc2FnZVNvdXJjZVZhbHVlKE1lc3NhZ2VTb3VyY2Ugc291cmNlKQogewogICAgIHN3aXRj
aCAoc291cmNlKSB7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpYTUw6IHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpYTUw7Ci0gICAgY2FzZSBNZXNz
YWdlU291cmNlOjpKUzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5u
ZWxTb3VyY2U6OkphdmFzY3JpcHQ7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpOZXR3b3JrOiBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6TmV0d29y
azsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEk6IHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpDb25zb2xlQVBJOwotICAgIGNhc2Ug
TWVzc2FnZVNvdXJjZTo6U3RvcmFnZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNv
bGU6OkNoYW5uZWxTb3VyY2U6OlN0b3JhZ2U7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpBcHBD
YWNoZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6
OkFwcGNhY2hlOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nOiByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6UmVuZGVyaW5nOwotICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6Q1NTOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q2hhbm5lbFNvdXJjZTo6Q1NTOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHk6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpT
ZWN1cml0eTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkNvbnRlbnRCbG9ja2VyOiByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6Q29udGVudEJsb2Nr
ZXI7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6Ok90aGVyOwotICAgIGNhc2UgTWVzc2FnZVNv
dXJjZTo6TWVkaWE6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
U291cmNlOjpNZWRpYTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OldlYlJUQzogcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OldlYlJUQzsKKyAgICBj
YXNlIE1lc3NhZ2VTb3VyY2U6OlhNTDogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
U291cmNlOjpYTUw7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpKUzogcmV0dXJuIFByb3RvY29s
OjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpKYXZhc2NyaXB0OworICAgIGNhc2UgTWVzc2FnZVNv
dXJjZTo6TmV0d29yazogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpO
ZXR3b3JrOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSTogcmV0dXJuIFByb3Rv
Y29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpDb25zb2xlQVBJOworICAgIGNhc2UgTWVzc2Fn
ZVNvdXJjZTo6U3RvcmFnZTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNl
OjpTdG9yYWdlOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGU6IHJldHVybiBQcm90
b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6QXBwY2FjaGU7CisgICAgY2FzZSBNZXNzYWdl
U291cmNlOjpSZW5kZXJpbmc6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJj
ZTo6UmVuZGVyaW5nOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q1NTOiByZXR1cm4gUHJvdG9j
b2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OkNTUzsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5OiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OlNlY3Vy
aXR5OworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q29udGVudEJsb2NrZXI6IHJldHVybiBQcm90
b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6Q29udGVudEJsb2NrZXI7CisgICAgY2FzZSBN
ZXNzYWdlU291cmNlOjpPdGhlcjogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291
cmNlOjpPdGhlcjsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6Ok1lZGlhOiByZXR1cm4gUHJvdG9j
b2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6Ok1lZGlhOworICAgIGNhc2UgTWVzc2FnZVNvdXJj
ZTo6V2ViUlRDOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OldlYlJU
QzsKICAgICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5u
ZWxTb3VyY2U6Ok90aGVyOworICAgIHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNv
dXJjZTo6T3RoZXI7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZSBtZXNzYWdlVHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5cGUpCitz
dGF0aWMgUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlIG1lc3NhZ2VUeXBl
VmFsdWUoTWVzc2FnZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpMb2c6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOiBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OkNsZWFyOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXI7Ci0gICAgY2FzZSBNZXNz
YWdlVHlwZTo6RGlyWE1MOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OkRpclhNTDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUYWJsZTog
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBl
OjpUYWJsZTsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUcmFjZTogcmV0dXJuIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKLSAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7Ci0gICAgY2FzZSBNZXNzYWdl
VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOwotICAgIGNh
c2UgTWVzc2FnZVR5cGU6OkVuZEdyb3VwOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdyb3VwOwotICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkFzc2VydDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpUeXBlOjpBc3NlcnQ7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6VGltaW5nOiByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRp
bWluZzsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlOiByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7Ci0gICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlRW5kOworICAgIGNhc2UgTWVzc2Fn
ZVR5cGU6OkxvZzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlw
ZTo6TG9nOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOiByZXR1cm4gUHJvdG9jb2w6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpEaXI6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRp
cjsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEaXJYTUw6IHJldHVybiBQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRpclhNTDsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpU
YWJsZTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFi
bGU7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6VHJhY2U6IHJldHVybiBQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRyYWNlOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0
YXJ0R3JvdXA6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OlN0YXJ0R3JvdXA7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDog
cmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91
cENvbGxhcHNlZDsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFbmRHcm91cDogcmV0dXJuIFByb3Rv
Y29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW5kR3JvdXA7CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6QXNzZXJ0OiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpUeXBlOjpBc3NlcnQ7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6VGltaW5nOiByZXR1cm4g
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1pbmc7CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6UHJvZmlsZTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6VHlwZTo6UHJvZmlsZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5k
OiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxl
RW5kOwogICAgIH0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKKyAgICByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29s
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWwgbWVzc2FnZUxldmVsVmFsdWUoTWVzc2Fn
ZUxldmVsIGxldmVsKQorc3RhdGljIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6
TGV2ZWwgbWVzc2FnZUxldmVsVmFsdWUoTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIHN3aXRj
aCAobGV2ZWwpIHsKLSAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6TG9nOiByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7Ci0gICAgY2Fz
ZSBNZXNzYWdlTGV2ZWw6OkluZm86IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkluZm87Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6TGV2ZWw6Oldhcm5pbmc7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkVycm9yOiByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJv
cjsKLSAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6RGVidWc6IHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkRlYnVnOworICAgIGNhc2UgTWVz
c2FnZUxldmVsOjpMb2c6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OkxldmVsOjpMb2c7CisgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkluZm86IHJldHVybiBQcm90b2Nv
bDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpJbmZvOworICAgIGNhc2UgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpMZXZlbDo6V2FybmluZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6RXJyb3I6IHJldHVybiBQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKKyAgICBjYXNl
IE1lc3NhZ2VMZXZlbDo6RGVidWc6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OkxldmVsOjpEZWJ1ZzsKICAgICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOworICAgIHJldHVybiBQcm90
b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKIHZvaWQgQ29u
c29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciYgY29u
c29sZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KQogewotICAgIGF1dG8gbWVzc2FnZU9i
amVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVh
dGUoKQorICAgIGF1dG8gbWVzc2FnZU9iamVjdCA9IFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUo
bV9zb3VyY2UpKQogICAgICAgICAuc2V0TGV2ZWwobWVzc2FnZUxldmVsVmFsdWUobV9sZXZlbCkp
CiAgICAgICAgIC5zZXRUZXh0KG1fbWVzc2FnZSkKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIENv
bnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNv
bnNvbGVGcm9udGVuZERpcwogICAgIGlmICgobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFy
Z3VtZW50Q291bnQoKSkgfHwgbV9qc29uTG9nVmFsdWVzLnNpemUoKSkgewogICAgICAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3Rl
ZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5o
YXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzT2JqZWN0ID0gSlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzT2JqZWN0ID0gSlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBp
ZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChtX3R5cGUgPT0gTWVzc2FnZVR5cGU6OlRhYmxlICYmIGdlbmVyYXRlUHJl
dmlldyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gdGFibGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRp
ZXMuY3BwCmluZGV4IGY5MWIyMTAxYTE5NjZkNWJjNjllZmE1NGFmMGNlNzEwNTUwNTYxMGYuLmFh
YTgxZTI4NjJlMTY1OThlMzI1ZDY0OGNiZTZjYWJjNjIwMjBkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVz
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M6OllhcnI7CiAKQEAgLTc5LDEyICs4MCwxMiBAQCBzdGF0aWMgVmVj
dG9yPHN0ZDo6cGFpcjxzaXplX3QsIFN0cmluZz4+IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hl
c0J5TGluZXMoY29ucwogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gZW5kaW5ncyhsaW5l
RW5kaW5ncyh0ZXh0KSk7Ci0gICAgc2l6ZV90IHNpemUgPSBlbmRpbmdzLT5zaXplKCk7CisgICAg
YXV0byBlbmRpbmdzID0gbGluZUVuZGluZ3ModGV4dCk7CisgICAgc2l6ZV90IHNpemUgPSBlbmRp
bmdzLnNpemUoKTsKICAgICBzaXplX3Qgc3RhcnQgPSAwOwogCiAgICAgZm9yIChzaXplX3QgbGlu
ZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBzaXplOyArK2xpbmVOdW1iZXIpIHsKLSAgICAgICAg
c2l6ZV90IG5leHRTdGFydCA9IGVuZGluZ3MtPmF0KGxpbmVOdW1iZXIpOworICAgICAgICBzaXpl
X3QgbmV4dFN0YXJ0ID0gZW5kaW5nc1tsaW5lTnVtYmVyXTsKICAgICAgICAgU3RyaW5nIGxpbmUg
PSB0ZXh0LnN1YnN0cmluZyhzdGFydCwgbmV4dFN0YXJ0IC0gc3RhcnQpOwogCiAgICAgICAgIGlu
dCBtYXRjaExlbmd0aDsKQEAgLTk3LDMxICs5OCwzMSBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFp
cjxzaXplX3QsIFN0cmluZz4+IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMoY29u
cwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90
Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0KQorVmVjdG9yPHNpemVfdD4gbGluZUVu
ZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8c2l6ZV90Pj4oKTsKKyAgICBWZWN0b3I8c2l6ZV90PiByZXN1bHQ7CiAK
ICAgICBzaXplX3Qgc3RhcnQgPSAwOwogICAgIHdoaWxlIChzdGFydCA8IHRleHQubGVuZ3RoKCkp
IHsKICAgICAgICAgc2l6ZV90IG5leHRTdGFydCA9IHRleHQuZmluZCgnXG4nLCBzdGFydCk7CiAg
ICAgICAgIGlmIChuZXh0U3RhcnQgPT0gbm90Rm91bmQgfHwgbmV4dFN0YXJ0ID09ICh0ZXh0Lmxl
bmd0aCgpIC0gMSkpIHsKLSAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRleHQubGVuZ3RoKCkp
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0ZXh0Lmxlbmd0aCgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgbmV4dFN0YXJ0ICs9IDE7Ci0gICAgICAgIHJl
c3VsdC0+YXBwZW5kKG5leHRTdGFydCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobmV4dFN0YXJ0
KTsKICAgICAgICAgc3RhcnQgPSBuZXh0U3RhcnQ7CiAgICAgfQogCi0gICAgcmVzdWx0LT5hcHBl
bmQodGV4dC5sZW5ndGgoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh0ZXh0Lmxlbmd0aCgpKTsKIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChzaXpl
X3QgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBsaW5lQ29udGVudCkKK3N0YXRpYyBSZWY8UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0
Y2goc2l6ZV90IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQpCiB7Ci0gICAg
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g6OmNy
ZWF0ZSgpCisgICAgcmV0dXJuIFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoOjpj
cmVhdGUoKQogICAgICAgICAuc2V0TGluZU51bWJlcihsaW5lTnVtYmVyKQogICAgICAgICAuc2V0
TGluZUNvbnRlbnQobGluZUNvbnRlbnQpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xNTEsMjcg
KzE1MiwxNSBAQCBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgUmVndWxh
ckV4cHJlc3Npb24mIHJlZ2V4LCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNS
ZWdleCkKK1JlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1h
dGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQog
ewotICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpH
ZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7Ci0KLSAgICBSZWd1bGFyRXhwcmVz
c2lvbiByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1
ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPHNpemVf
dCwgU3RyaW5nPj4gbWF0Y2hlcyA9IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMo
cmVnZXgsIHRleHQpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBtYXRjaCA6IG1hdGNoZXMpIHsK
LSAgICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0
Y2g+IG1hdGNoT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChtYXRjaC5maXJzdCwg
bWF0Y2guc2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LT5hZGRJdGVtKFdURk1vdmUobWF0Y2hPYmpl
Y3QpKTsKLSAgICB9Ci0KKyAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlZ2V4ID0g
Q29udGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5z
aXRpdmUsIGlzUmVnZXgpOworICAgIGZvciAoY29uc3QgYXV0byYgbWF0Y2ggOiBnZXRSZWd1bGFy
RXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KSkKKyAgICAgICAgcmVzdWx0LT5h
ZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2gobWF0Y2guZmlyc3QsIG1hdGNoLnNlY29u
ZCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc3R5bGVzaGVldENv
bW1lbnRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICAvLyAiLyojIDxuYW1lPj08
dmFsdWU+ICovIiBhbmQgZGVwcmVjYXRlZCAiLypAIgotICAgIHJldHVybiAiL1xcKlsjQF1bXDA0
MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSooW15cXHNcJ1wiXSopW1wwNDBcdF0qXFwqLyI7Ci19
Ci0KIHN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQs
IGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIHsKICAgICBpZiAoY29udGVudC5pc0VtcHR5
KCkpCkBAIC0xODUsOSArMTc0LDggQEAgc3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNv
bnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW4KICAgICBBU1NF
UlQoYnl0ZWNvZGVQYXR0ZXJuKTsKIAogICAgIEFTU0VSVChwYXR0ZXJuLm1fbnVtU3VicGF0dGVy
bnMgPT0gMSk7Ci0gICAgVmVjdG9yPGludCwgND4gbWF0Y2hlczsKLSAgICBtYXRjaGVzLmdyb3co
NCk7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gaW50ZXJwcmV0KGJ5dGVjb2RlUGF0dGVybi5nZXQo
KSwgY29udGVudCwgMCwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1hdGNoZXMuZGF0YSgp
KSk7CisgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgND4gbWF0Y2hlczsKKyAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBpbnRlcnByZXQoYnl0ZWNvZGVQYXR0ZXJuLmdldCgpLCBjb250ZW50LCAwLCBtYXRj
aGVzLmRhdGEoKSk7CiAgICAgaWYgKHJlc3VsdCA9PSBvZmZzZXROb01hdGNoKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTE5Nyw3ICsxODUsOCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRN
YWdpY0NvbW1lbnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5T
dHJpbgogCiBTdHJpbmcgZmluZFN0eWxlc2hlZXRTb3VyY2VNYXBVUkwoY29uc3QgU3RyaW5nJiBj
b250ZW50KQogewotICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRlbnQsIHN0eWxlc2hl
ZXRDb21tZW50UGF0dGVybihBU0NJSUxpdGVyYWwoInNvdXJjZU1hcHBpbmdVUkwiKSkpOworICAg
IC8vICIvKiMgPG5hbWU+PTx2YWx1ZT4gKi8iIGFuZCBkZXByZWNhdGVkICIvKkAiCisgICAgcmV0
dXJuIGZpbmRNYWdpY0NvbW1lbnQoY29udGVudCwgQVNDSUlMaXRlcmFsIHsgIi9cXCpbI0BdW1ww
NDBcdF1zb3VyY2VNYXBwaW5nVVJMPVtcMDQwXHRdKihbXlxcc1wnXCJdKilbXDA0MFx0XSpcXCov
IiB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxpdGllcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0
aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGls
aXRpZXMuaAppbmRleCA1NWIxOTFlYTIzODljYzFmOWZmYTc4Y2ZhY2QyMmMxYmMxY2UwNTgxLi5k
MmVhOGVlMGVlY2Y1NzIzYjM0NjQwZWE5ZDJhZjNhN2JhMTJiNmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aApAQCAtMjksOSArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQ
cm90b2NvbE9iamVjdHMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFBvc2l0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJy
IHsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwpAQCAtNDMsOSArNDEsOSBAQCBuYW1lc3BhY2Ug
Q29udGVudFNlYXJjaFV0aWxpdGllcyB7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24gY3JlYXRlU2VhcmNoUmVnZXgoY29uc3QgU3RyaW5nJiBxdWVyeSwg
Ym9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVnZXgpOwogSlNfRVhQT1JUX1BSSVZBVEUgaW50
IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24mLCBjb25zdCBTdHJpbmcmKTsKLUpTX0VYUE9SVF9QUklWQVRFIFJlZjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBz
ZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2Vh
cmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
U3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVn
ZXgpOwogSlNfRVhQT1JUX1BSSVZBVEUgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZyb21PZmZz
ZXQoc2l6ZV90IG9mZnNldCwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGxpbmVFbmRpbmdzKTsKLUpT
X0VYUE9SVF9QUklWQVRFIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGlu
Z3MoY29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBWZWN0b3I8c2l6ZV90PiBsaW5l
RW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbmRT
dHlsZXNoZWV0U291cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXgg
M2VmYzNmZGE1MWMxY2YzMTU0ZGM1ZDY5NzgzZTlkMjRmZTk5NGNkYi4uZmE4MjhkMDA1YTgzZmEy
NjA5MjQ1ODE1ODA2NTI5MDk1NjUyODM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5qZWN0
ZWRTY3JpcHQ6On5JbmplY3RlZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBzYXZlUmVz
dWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBib29sJiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJ
bmRleCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
LCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdl
bmVyYXRlUHJldmlldywgYm9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgYm9vbCYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGlu
dD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZXZhbHVh
dGUiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKQEAgLTY2LDcgKzY2LDcgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24KICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1
bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiB9CiAKLXZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdCwgYm9vbCYgd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9u
T24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVy
bkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgYm9vbCYgd2FzVGhyb3duKQogewogICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBB
U0NJSUxpdGVyYWwoImNhbGxGdW5jdGlvbk9uIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0
SWQpOwpAQCAtNzksNyArNzksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25P
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZQogICAgIG1ha2VF
dmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duLCB1bnVzZWQp
OwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYg
Y2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwg
Ym9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgYm9vbCYgd2FzVGhyb3du
LCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluamVjdGVkU2Ny
aXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpK
U1ZhbHVlIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJv
b2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIGJvb2wmIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdElu
ZGV4KQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImV2YWx1YXRlT25DYWxsRnJhbWUiKSwg
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIEpTQzo6SlNWYWx1ZQogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24s
IHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKIH0KIAotdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkZ1bmN0aW9uRGV0YWlscz4mIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1
bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgcmVz
dWx0KQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImdldEZ1bmN0aW9uRGV0YWlscyIpLCBp
bnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0
YWlscz46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0VmFsdWUpKTsKKyAgICByZXN1bHQgPSBC
aW5kaW5nVHJhaXRzPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPjo6cnVudGlt
ZUNhc3QoV1RGTW92ZShyZXN1bHRWYWx1ZSkpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpm
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6OkpTVmFsdWUgdmFs
dWUsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIHJlc3VsdCkK
QEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpmdW5jdGlvbkRldGFpbHMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6OkpTVmFsdWUgdmFsdQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1
bHRWYWx1ZSkpOworICAgIHJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9i
amVjdFByZXZpZXc+JiByZXN1bHQpCkBAIC0xMzUsMTAgKzEzNSwxMCBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0gQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3Pjo6cnVu
dGltZUNhc3QoV1RGTW92ZShyZXN1bHRWYWx1ZSkpOworICAgIHJlc3VsdCA9IEJpbmRpbmdUcmFp
dHM8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+OjpydW50aW1lQ2FzdChXVEZNb3Zl
KHJlc3VsdFZhbHVlKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93
blByb3BlcnRpZXMsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVy
dGllcykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIGJv
b2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJ
TGl0ZXJhbCgiZ2V0UHJvcGVydGllcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlv
bkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsK
QEAgLTE1MSwxMCArMTUxLDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+Ojpy
dW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOworICAgIHByb3BlcnRpZXMgPSBCaW5kaW5nVHJh
aXRzPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+
OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0
OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4m
IHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29s
IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBwcm9wZXJ0aWVzKQogewogICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxp
dGVyYWwoImdldERpc3BsYXlhYmxlUHJvcGVydGllcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgp
LT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9i
amVjdElkKTsKQEAgLTE2NiwxMCArMTY2LDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldERp
c3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3Jp
cHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOworICAgIHByb3BlcnRpZXMgPSBC
aW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVy
bmFsUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKIHsK
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRJbnRlcm5hbFByb3BlcnRpZXMiKSwgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYXJyYXkgPSBC
aW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQp
KTsKKyAgICBhdXRvIGFycmF5ID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZN
b3ZlKHJlc3VsdCkpOwogICAgIHByb3BlcnRpZXMgPSBhcnJheS0+bGVuZ3RoKCkgPiAwID8gYXJy
YXkgOiBudWxscHRyOwogfQogCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6c2F2ZVJlc3VsdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2Fs
bEFyZ3UKICAgICAgICAgc2F2ZWRSZXN1bHRJbmRleCA9IHJlc3VsdEluZGV4OwogfQogCi1SZWY8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzKSBj
b25zdAorUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJ
bmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVy
YWwoIndyYXBDYWxsRnJhbWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2Fs
bEhhbmRsZXIoKSk7CkBAIC0yMjcsMTYgKzIyNywxNiBAQCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6Ondy
YQogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgYXV0byBjYWxsRnJhbWVzVmFs
dWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7
CiAgICAgaWYgKCFjYWxsRnJhbWVzVmFsdWUpCi0gICAgICAgIHJldHVybiBKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAg
ICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+
OjpjcmVhdGUoKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgUmVmUHRyPEpTT046
OlZhbHVlPiByZXN1bHQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCBjYWxsRnJh
bWVzVmFsdWUpOwogICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6
QXJyYXkpCi0gICAgICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+OjpydW50aW1lQ2FzdChXVEZNb3Zl
KHJlc3VsdCkpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBCaW5kaW5nVHJhaXRz
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+Pjo6cnVudGltZUNh
c3QoV1RGTW92ZShyZXN1bHQpKS5yZWxlYXNlTm9uTnVsbCgpOwogCi0gICAgcmV0dXJuIEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0
ZSgpOworICAgIHJldHVybiBKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lPjo6Y3JlYXRlKCk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25z
dAorUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0
Ojp3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgp
KTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgid3JhcE9iamVjdCIpLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMjU0LDcgKzI1NCw3IEBA
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVj
dGVkU2NyaXB0Ojp3cmFwT2JqZWN0KEpTCiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNw
ZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAotICAgIHJl
dHVybiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CisgICAgcmV0dXJuIEJpbmRpbmdUcmFp
dHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9i
amVjdCk7CiB9CiAKIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcEpTT05TdHJpbmcoY29uc3QgU3RyaW5nJiBqc29uLCBjb25zdCBTdHJp
bmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CkBAIC0yNzcsMTAgKzI3
NywxMCBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRT
Y3JpcHQ6OndyYXBKU09OU3RyaW5nKGNvbnN0IFN0cgogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9
IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIGV2YWxSZXN1bHQpLT5hc09iamVjdChy
ZXN1bHRPYmplY3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2Nl
ZWRlZCk7CiAKLSAgICByZXR1cm4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOworICAgIHJl
dHVybiBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50
aW1lQ2FzdChyZXN1bHRPYmplY3QpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKEpTQzo6SlNW
YWx1ZSB0YWJsZSwgSlNDOjpKU1ZhbHVlIGNvbHVtbnMpIGNvbnN0CitSZWZQdHI8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShKU0M6OkpT
VmFsdWUgdGFibGUsIEpTQzo6SlNWYWx1ZSBjb2x1bW5zKSBjb25zdAogewogICAgIEFTU0VSVCgh
aGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgid3JhcFRhYmxlIiks
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0zMDAs
MTAgKzMwMCwxMCBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKEpTQwogICAgIGJvb2wgY2FzdFN1Y2Nl
ZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIHIpLT5hc09iamVjdChyZXN1
bHRPYmplY3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRl
ZCk7CiAKLSAgICByZXR1cm4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOworICAgIHJldHVy
biBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1l
Q2FzdChyZXN1bHRPYmplY3QpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6T2JqZWN0UHJldmlldz4gSW5qZWN0ZWRTY3JpcHQ6OnByZXZpZXdWYWx1ZShKU0M6OkpT
VmFsdWUgdmFsdWUpIGNvbnN0CitSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZp
ZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSBjb25z
dAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0
ZXJhbCgicHJldmlld1ZhbHVlIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2Fs
bEhhbmRsZXIoKSk7CkBAIC0zMTgsNyArMzE4LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUK
ICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgp
LCByKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNj
ZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCi0gICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz46OnJ1bnRpbWVDYXN0KHJlc3Vs
dE9iamVjdCk7CisgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9i
amVjdFByZXZpZXc+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOwogfQogCiB2b2lkIEluamVj
dGVkU2NyaXB0OjpzZXRFeGNlcHRpb25WYWx1ZShKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlw
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oCmluZGV4IDA3NjU3M2VhNWJkNzMzYjQyMmQ5ZTY4YWY5M2ZmN2QwMmFkOTJlMmIuLjVi
MTU2NWJkYjY4NTA1YjM4ODMwMjYzZjNjOTEyNTliZDhlMTJhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
CkBAIC0zMywxMDQgKzMzLDU3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2Ug
UHJvdG9jb2wgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQmluZGluZ1RyYWl0czsK
K3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQmluZGluZ1RyYWl0czsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNsYXNzIE9wdE91dHB1dCB7Ci1wdWJsaWM6Ci0gICAgT3B0T3V0cHV0KCkgOiBt
X2Fzc2lnbmVkKGZhbHNlKSB7IH0KLQotICAgIHZvaWQgb3BlcmF0b3I9KFQgdmFsdWUpCi0gICAg
ewotICAgICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAgICAgIG1fYXNzaWduZWQgPSB0cnVlOwot
ICAgIH0KLQotICAgIGJvb2wgaXNBc3NpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzaWduZWQ7
IH0KLQotICAgIFQgZ2V0VmFsdWUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQXNzaWduZWQo
KSk7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBUIG1f
dmFsdWU7Ci0gICAgYm9vbCBtX2Fzc2lnbmVkOwotCi0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
T3B0T3V0cHV0KTsKLX07Ci0KLS8vIEhlbHBlciBtZXRob2RzIGZvciBQcm90b2NvbCBhbmQgb3Ro
ZXIgSlNPTiB0eXBlcyBhcmUgcHJvdmlkZWQgYnkKLS8vIHNwZWNpYWxpemF0aW9ucyBvZiBCaW5k
aW5nVHJhaXRzPFQ+LiBTb21lIGFyZSBnZW5lcmF0ZWQgZm9yIHByb3RvY29sIHR5cGVzLgotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEJpbmRpbmdUcmFpdHMgewotICAgIHR5cGVkZWYg
VCBCaW5kaW5nVHlwZTsKLQotICAgIHN0YXRpYyB2b2lkIHB1c2goSlNPTjo6QXJyYXkmLCBCaW5k
aW5nVHlwZSYpOwotICAgIHN0YXRpYyBKU09OOjpWYWx1ZTo6VHlwZSB0eXBlVGFnKCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxUPiBydW50aW1lQ2FzdChSZWZQdHI8SlNPTjo6T2JqZWN0PiYmKTsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUoSlNPTjo6VmFsdWUqKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19OwotCi10
ZW1wbGF0ZTxKU09OOjpWYWx1ZTo6VHlwZSBUWVBFPgotc3RydWN0IFByaW1pdGl2ZUJpbmRpbmdU
cmFpdHMgewotI2lmICFBU1NFUlRfRElTQUJMRUQKK3RlbXBsYXRlPEpTT046OlZhbHVlOjpUeXBl
IHR5cGU+IHN0cnVjdCBQcmltaXRpdmVCaW5kaW5nVHJhaXRzIHsKICAgICBzdGF0aWMgdm9pZCBh
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiAgICAgewotICAg
ICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSAmJiB2YWx1ZS0+dHlwZSgpID09IFRZUEUpOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQodmFsdWUsIHZhbHVlLT50eXBlKCkgPT0gdHlwZSk7CiAgICAgfQotI2VuZGlmIC8vICFBU1NF
UlRfRElTQUJMRUQKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQmluZGluZ1Ry
YWl0czxKU09OOjpBcnJheU9mPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQmlu
ZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFQ+PiB7CiAgICAgc3RhdGljIFJlZlB0cjxKU09OOjpB
cnJheU9mPFQ+PiBydW50aW1lQ2FzdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCiAgICAg
ewogICAgICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgICAgIFJlZlB0cjxKU09O
OjpBcnJheT4gYXJyYXk7CiAgICAgICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc0Fy
cmF5KGFycmF5KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3Vj
Y2VlZGVkKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIGFzc2VydFZhbHVlSGFzRXhw
ZWN0ZWRUeXBlKGFycmF5LmdldCgpKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU09OOjpBcnJheU9mPFQ+KSA9PSBzaXplb2YoSlNP
Tjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxKU09OOjpBcnJheU9mPFQ+Kj4oc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXlCYXNlKj4oYXJyYXku
Z2V0KCkpKTsKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogICAgIHsKKyNp
ZiBBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbHNlCiAg
ICAgICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICAgICAgUmVmUHRyPEpTT046OkFy
cmF5PiBhcnJheTsKICAgICAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzQXJyYXko
YXJyYXkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVk
ZWQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBp
KyspCiAgICAgICAgICAgICBCaW5kaW5nVHJhaXRzPFQ+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZShhcnJheS0+Z2V0KGkpLmdldCgpKTsKLSAgICB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNB
QkxFRAorICAgIH0KIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046
OlZhbHVlPiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGlu
Z1RyYWl0czxKU09OOjpWYWx1ZT4gewogICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhw
ZWN0ZWRUeXBlKEpTT046OlZhbHVlKikKICAgICB7CiAgICAgfQotI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJy
YXk+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkFy
cmF5PiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046Ok9iamVjdD4g
OiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6T2JqZWN0
PiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPFN0cmluZz4gOiBwdWJsaWMg
UHJpbWl0aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6U3RyaW5nPiB7IH07Ci10
ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGJvb2w+IDogcHVibGljIFByaW1pdGl2ZUJp
bmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkJvb2xlYW4+IHsgfTsKLXRlbXBsYXRlPD4g
c3RydWN0IEJpbmRpbmdUcmFpdHM8ZG91YmxlPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJh
aXRzPEpTT046OlZhbHVlOjpUeXBlOjpEb3VibGU+IHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJp
bmRpbmdUcmFpdHM8aW50PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZh
bHVlOjpUeXBlOjpJbnRlZ2VyPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRz
PEpTT046OkFycmF5PiA6IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6
OkFycmF5PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046Ok9iamVj
dD4gOiBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3Q+IHsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8U3RyaW5nPiA6IFByaW1pdGl2ZUJp
bmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OlN0cmluZz4geyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgQmluZGluZ1RyYWl0czxib29sPiA6IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6
VmFsdWU6OlR5cGU6OkJvb2xlYW4+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFp
dHM8ZG91YmxlPiA6IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkRv
dWJsZT4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxpbnQ+IDogUHJpbWl0
aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcj4geyB9OwogCi19IC8v
IG5hbWVzcGFjZSBQcm90b2NvbAorfQogCiB1c2luZyBQcm90b2NvbDo6QmluZGluZ1RyYWl0czsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJh
bWUuY3BwCmluZGV4IGE3MzAwYWYyY2E3ZTJjMzE0OWRkNGYxYTYxMjUyYzE4MDIzZGQxZTUuLjE4
M2ZlZjFmMjVkYWFiMDBmYTRjMTk0NmFjNTIwZDQ4YjhjNGFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTYyLDkg
KzYyLDkgQEAgYm9vbCBTY3JpcHRDYWxsRnJhbWU6OmlzTmF0aXZlKCkgY29uc3QKICAgICByZXR1
cm4gbV9zY3JpcHROYW1lID09ICJbbmF0aXZlIGNvZGVdIjsKIH0KIAotUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4gU2NyaXB0Q2FsbEZyYW1lOjpidWlsZEluc3Bl
Y3Rvck9iamVjdCgpIGNvbnN0CitSZWY8UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4gU2Ny
aXB0Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKKyAgICBy
ZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dEZ1bmN0aW9uTmFtZShtX2Z1bmN0aW9uTmFtZSkKICAgICAgICAgLnNldFVybChtX3NjcmlwdE5h
bWUpCiAgICAgICAgIC5zZXRTY3JpcHRJZChTdHJpbmc6Om51bWJlcihtX3NvdXJjZUlEKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCmlu
ZGV4IDYzN2JlNmYyMmVkODM3NGI3MjY4YjUyOGY2NDgxYWI5NGVlNmFjOTUuLmMyZjVjMjllODVj
ZmQzMjk1NmUyOTcwZTg0MWI5ZWUzMzUwMmExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gaXNFcXVhbChvdGhlcik7IH0KIAotICAgIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7
CisgICAgUmVmPFByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3Bw
CmluZGV4IDk1Y2UzMzEzZTM0NDA2NDk4NGIzYWZjMWZmMTVlODVhN2U4YjY1YjMuLjdkNTNiNGNi
NjljZjcxMmQ1ZmIyNGM3OTQ5ZjI2ZDExZjNjY2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTEwNSw5ICsxMDUs
OSBAQCBib29sIFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNw
ZWN0b3JBcnJheSgpIGNvbnN0CitSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29uc29sZTo6
Q2FsbEZyYW1lPj4gU2NyaXB0Q2FsbFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QK
IHsKLSAgICBhdXRvIGZyYW1lcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgYXV0byBmcmFtZXMgPSBKU09OOjpB
cnJheU9mPFByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgaSsrKQogICAgICAgICBmcmFtZXMt
PmFkZEl0ZW0obV9mcmFtZXMuYXQoaSkuYnVpbGRJbnNwZWN0b3JPYmplY3QoKSk7CiAgICAgcmV0
dXJuIGZyYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5oCmluZGV4IDk5MjgwYjA2NGFjYTc3NTE1NzcwOTNiYjM1NGUzZTg2NDU0Mjcw
MjIuLmY5ZWNjZGM2ZDljY2E2NjlmNTNmMDZkMzMyZjk5NjkzM2IxMmIzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaApAQCAtNTYs
NyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikg
Y29uc3Q7CiAKLSAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25z
b2xlOjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgUmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9y
QXJyYXkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTY3JpcHRDYWxsU3RhY2soKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDVjM2JmN2Q2ZjIyNmQyMTczNmNiMTQ3OGQ0
MzczZDNkOTM3YmU2NDkuLjBkYWQ4MGY2NjdhMzQ4YWNiNmMyODBmNjVhY2QyMTNjZDQ3N2ViZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtMjM5LDEwICsyMzksMTAgQEAg
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxDb25zb2xlTWVzc2FnZT4gY28KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQor
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmlu
ZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNo
YW5uZWxzKQogewogICAgIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gaGFzIG5vIGxvZ2dpbmcg
Y2hhbm5lbHMuCi0gICAgY2hhbm5lbHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNvbnNvbGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAgICBjaGFubmVscyA9IEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuaAppbmRleCBhMWNmNmEyNTQzYzYwMmU2MDUzMmNmYzU4ODZmNTMzMTliZTYz
NmI4Li4zZGJiZWIwMzM0MmNjNWE2NGJhZDAwYTVmZWU4MTdmOTQzZWI3ZjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0
YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgY291bnQoSlND
OjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKTsKIAotICAgIHZvaWQgZ2V0TG9n
Z2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRM
b2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6Q29uc29sZTo6Q2hhbm5lbD4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMb2dnaW5nQ2hh
bm5lbExldmVsKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjaGFubmVsLCBjb25zdCBTdHJp
bmcmIGxldmVsKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBhOGIyMzk4YTRhYjc4NWM1OTk0ZTVlODQyY2JkNTNiM2U2MTFhZDg5
Li4zODU0YzRiZTcyOGIxZjYxMGRiZjZjYTc3OTU0YTMzNzRjZmRkMjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2V0U3VwcHJlc3NBbGxQYXVzZXMoYm9vbCBzdXBwcmVzcykKIAogc3Rh
dGljIFJlZlB0cjxKU09OOjpPYmplY3Q+IGJ1aWxkQXNzZXJ0UGF1c2VSZWFzb24oY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIGF1dG8gcmVhc29uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkFzc2VydFBhdXNlUmVhc29uOjpjcmVhdGUoKS5yZWxlYXNlKCk7CisgICAgYXV0
byByZWFzb24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkFzc2VydFBhdXNlUmVhc29uOjpjcmVhdGUo
KS5yZWxlYXNlKCk7CiAgICAgaWYgKCFtZXNzYWdlLmlzTnVsbCgpKQogICAgICAgICByZWFzb24t
PnNldE1lc3NhZ2UobWVzc2FnZSk7CiAgICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygp
OwpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZEFz
c2VydFBhdXNlUmVhc29uKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogc3RhdGljIFJlZlB0cjxK
U09OOjpPYmplY3Q+IGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RpdmVUZXh0KQogewotICAgIGF1dG8gcmVhc29uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkNTUFZpb2xhdGlvblBhdXNlUmVhc29uOjpjcmVhdGUoKQorICAgIGF1dG8gcmVh
c29uID0gUHJvdG9jb2w6OkRlYnVnZ2VyOjpDU1BWaW9sYXRpb25QYXVzZVJlYXNvbjo6Y3JlYXRl
KCkKICAgICAgICAgLnNldERpcmVjdGl2ZShkaXJlY3RpdmVUZXh0KQogICAgICAgICAucmVsZWFz
ZSgpOwogICAgIHJldHVybiByZWFzb24tPm9wZW5BY2Nlc3NvcnMoKTsKQEAgLTE5NCw3ICsxOTQs
NyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJy
ZWFrcG9pbnRQYXVzZVJlYXNvbihKU0M6OkJyZQogICAgIGlmIChpdCA9PSBtX2RlYnVnZ2VyQnJl
YWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLmVuZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVhc29uID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKKyAgICBh
dXRvIHJlYXNvbiA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludFBhdXNlUmVhc29uOjpj
cmVhdGUoKQogICAgICAgICAuc2V0QnJlYWtwb2ludElkKGl0LT52YWx1ZSkKICAgICAgICAgLnJl
bGVhc2UoKTsKICAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7CkBAIC0zNDIsMTkg
KzM0MiwxOSBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKIAogc3RhdGljIGJvb2wgYnJlYWtwb2ludEFj
dGlvblR5cGVGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBTY3JpcHRCcmVha3Bv
aW50QWN0aW9uVHlwZSogb3V0cHV0KQogewotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7
CisgICAgaWYgKHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlw
ZTo6TG9nKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVM
b2c7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6
RXZhbHVhdGUpKSB7CisgICAgaWYgKHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6Okluc3BlY3Rvckhl
bHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dEFjdGlvbjo6VHlwZTo6RXZhbHVhdGUpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uVHlwZUV2YWx1YXRlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0g
ICAgaWYgKHR5cGVTdHJpbmcgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IFBy
b3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6
RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewogICAgICAgICAqb3V0
cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6Oklu
c3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpQcm9iZSkpIHsKKyAgICBpZiAodHlw
ZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpQcm9iZSkpIHsK
ICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTQwNiwxMSArNDA2LDExIEBAIGJvb2wgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJp
bmcmIGVycm9yU3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiBidWlsZERlYnVnZ2VyTG9jYXRpb24o
Y29uc3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50KQorc3RhdGljIFJlZlB0cjxQcm90b2Nv
bDo6RGVidWdnZXI6OkxvY2F0aW9uPiBidWlsZERlYnVnZ2VyTG9jYXRpb24oY29uc3QgSlNDOjpC
cmVha3BvaW50JiBicmVha3BvaW50KQogewogICAgIEFTU0VSVChicmVha3BvaW50LnJlc29sdmVk
KTsKIAotICAgIGF1dG8gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
TG9jYXRpb246OmNyZWF0ZSgpCisgICAgYXV0byBsb2NhdGlvbiA9IFByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb246OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTY3JpcHRJZChTdHJpbmc6Om51bWJl
cihicmVha3BvaW50LnNvdXJjZUlEKSkKICAgICAgICAgLnNldExpbmVOdW1iZXIoYnJlYWtwb2lu
dC5saW5lKQogICAgICAgICAucmVsZWFzZSgpOwpAQCAtNDM0LDkgKzQzNCw5IEBAIHN0YXRpYyBi
b29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpP
YmplY3QmIGxvY2F0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENv
bHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
Pj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxS
ZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJl
YWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQogewotICAgIGxvY2F0aW9ucyA9IEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7Cisg
ICAgbG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
Pjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkg
ewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRWl0aGVyIHVybCBvciB1cmxS
ZWdleCBtdXN0IGJlIHNwZWNpZmllZC4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDk1LDcgKzQ5
NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpCiAgICAgKm91dEJyZWFrcG9pbnRJZGVudGlm
aWVyID0gYnJlYWtwb2ludElkZW50aWZpZXI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046
Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZp
ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1
YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNv
bnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQogewogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7
CiAgICAgdW5zaWduZWQgbGluZU51bWJlcjsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0CiAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JT
dHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsSXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2Vu
ZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcm
IHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsK
ICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0SURTdHIudG9JbnRQdHIoKTsKICAg
ICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwpAQCAtNjgzLDcgKzY4Myw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5n
JiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgIGVycm9yID0gQVNDSUlMaXRlcmFsKCJO
byBzY3JpcHQgZm9yIGlkOiAiKSArIHNjcmlwdElEU3RyOwogfQogCi12b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz4mIGRldGFpbHMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1bmN0
aW9uSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTgyNiw3
ICs4MjYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25Bc3NlcnRp
b25zKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKQogICAgIG1fcGF1c2VPbkFzc2VydGlvbkZh
aWx1cmVzID0gZW5hYmxlZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBj
YWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlW
YWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIG91dFdhc1Rocm93biwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG91dFNhdmVkUmVzdWx0SW5kZXgp
Cit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5l
cmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBvdXRXYXNU
aHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBpZiAo
IW1fY3VycmVudENhbGxTdGFjaykgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiTm90IHBhdXNlZCIpOwpAQCAtODQ3LDE1ICs4NDcsMTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogcmVt
b3ZlIHRoaXMgYnJpZGdpbmcgY29kZSB3aGVuIGdlbmVyYXRlZCBwcm90b2NvbCBjb21tYW5kcyBu
byBsb25nZXIgdXNlIE9wdE91dHB1dDxUPi4KICAgICBib29sIHdhc1Rocm93bjsKLSAgICBzdGQ6
Om9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKICAgICBpbmplY3RlZFNjcmlwdC5ldmFs
dWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2suZ2V0KCksIGNh
bGxGcmFtZUlkLCBleHByZXNzaW9uLAogICAgICAgICBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91
cCA6IGVtcHR5U3RyaW5nKCksIGluY2x1ZGVDb21tYW5kTGluZUFQSSAmJiAqaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlICYmICpyZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZp
ZXcgJiYgKmdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCAmJiAqc2F2ZVJlc3VsdCwKICAgICAg
ICAgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwotICAgICpvdXRXYXNUaHJv
d24gPSB3YXNUaHJvd247Ci0gICAgaWYgKHNhdmVkUmVzdWx0SW5kZXguaGFzX3ZhbHVlKCkpCi0g
ICAgICAgICpvdXRTYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1bHRJbmRleC52YWx1ZSgpOwor
ICAgIG91dFdhc1Rocm93biA9IHdhc1Rocm93bjsKIAogICAgIGlmIChwYXVzZUFuZE11dGUpIHsK
ICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwpAQCAtODczLDExICs4NjksMTEgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3Ry
aW5nJiBkaXJlY3RpdmUKICAgICAgICAgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9sYXRpb25QYXVzZVJlYXNv
bihkaXJlY3RpdmVUZXh0KSk7CiB9CiAKLVJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW50Q2FsbEZyYW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQpCitSZWY8
SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmpl
Y3RlZFNjcmlwdCkKIHsKICAgICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSk7
CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNy
ZWF0ZSgpOworICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6
OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogCiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBD
YWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjay5nZXQoKSk7CiB9CkBAIC0xMDA5LDcgKzEwMDUs
NyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRl
JiBzY3JpcHRTdGF0ZSwgSlNDOjpKU1ZhbHVlCiAgICAgbV9jb25kaXRpb25Ub0Rpc3BhdGNoUmVz
dW1lZCA9IFNob3VsZERpc3BhdGNoUmVzdW1lZDo6Tm87CiAgICAgbV9lbmFibGVQYXVzZVdoZW5J
ZGxlID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
U3RhY2tUcmFjZT4gYXN5bmNTdGFja1RyYWNlOworICAgIFJlZlB0cjxQcm90b2NvbDo6Q29uc29s
ZTo6U3RhY2tUcmFjZT4gYXN5bmNTdGFja1RyYWNlOwogICAgIGlmIChtX2N1cnJlbnRBc3luY0Nh
bGxJZGVudGlmaWVyKSB7CiAgICAgICAgIGF1dG8gaXQgPSBtX3BlbmRpbmdBc3luY0NhbGxzLmZp
bmQobV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllci52YWx1ZSgpKTsKICAgICAgICAgaWYgKGl0
ICE9IG1fcGVuZGluZ0FzeW5jQ2FsbHMuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKaW5kZXggMzZkNThjMzNiMjI1NDgzNTQwZGEyMTRhMzgwMjI0MmM5N2RiMmVkMi4uYTU0MTI4
NDc4ZmYwMzlhNjIzZTU3YjZmNmJmNWU2MDkxZmI3OGMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaApAQCAtNjMsMTQgKzYzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldEFzeW5jU3RhY2tUcmFjZURlcHRoKEVy
cm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5hbDsKICAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0
aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3RpdmUpIGZpbmFsOwotICAgIHZvaWQgc2V0QnJlYWtw
b2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29u
c3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
Pj4mIGxvY2F0aW9ucykgZmluYWw7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5n
JiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRp
b25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9u
KSBmaW5hbDsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046
Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9u
cykgZmluYWw7CisgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNP
Tjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpIGZpbmFs
OwogICAgIHZvaWQgY29udGludWVVbnRpbE5leHRSdW5Mb29wKEVycm9yU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpP
YmplY3QmIGxvY2F0aW9uKSBmaW5hbDsKLSAgICB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0
IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpH
ZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBmaW5hbDsKKyAgICB2b2lkIHNlYXJjaEluQ29u
dGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0
aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+JikgZmluYWw7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVu
Y3Rpb25EZXRhaWxzPiYpIGZpbmFsOworICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVn
Z2VyOjpGdW5jdGlvbkRldGFpbHM+JikgZmluYWw7CiAgICAgdm9pZCBwYXVzZShFcnJvclN0cmlu
ZyYpIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9p
ZCBzdGVwT3ZlcihFcnJvclN0cmluZyYpIGZpbmFsOwpAQCAtNzgsOCArNzgsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGVwT3V0KEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRQYXVz
ZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGF1c2VTdGF0ZSkgZmlu
YWw7CiAgICAgdm9pZCBzZXRQYXVzZU9uQXNzZXJ0aW9ucyhFcnJvclN0cmluZyYsIGJvb2wgZW5h
YmxlZCkgZmluYWw7Ci0gICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCog
Y29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBjb25zdCBzYXZlUmVzdWx0LCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOwotICAg
IHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqIGNvbnN0
KSBvdmVycmlkZTsKKyAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Y29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBi
b29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJv
b2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CisgICAgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1BhdXNl
ZCgpIGNvbnN0OwogICAgIGJvb2wgYnJlYWtwb2ludHNBY3RpdmUoKSBjb25zdDsKQEAgLTEzNyw3
ICsxMzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyQXN5bmNTdGFj
a1RyYWNlRGF0YSgpIHsgfQogCiBwcml2YXRlOgotICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50Q2FsbEZyYW1lcyhj
b25zdCBJbmplY3RlZFNjcmlwdCYpOworICAgIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoY29uc3QgSW5qZWN0ZWRTY3Jp
cHQmKTsKIAogICAgIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgU2Ny
aXB0JikgZmluYWw7CiAgICAgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3Bw
CmluZGV4IGY2OGQxY2E0MjdjZWZkMWY2ZGYxMzA4Nzc1ZGY2YTQ1MDJjMjRmNzMuLjE4OGM1OWJi
YjlkODhjZDBkMDk0ZjljOWE5Yjg1YjQzYmNkNTQzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50
LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4g
SW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoCiAgICAgcmV0
dXJuIG9wdGlvbmFsTm9kZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZp
ZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcmVzdWx0U3RyaW5nLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGZ1bmN0aW9uRGV0YWls
cywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBv
YmplY3RQcmV2aWV3KQordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4mIHJlc3VsdFN0cmluZywgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRh
aWxzPiYgZnVuY3Rpb25EZXRhaWxzLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFBy
ZXZpZXc+JiBvYmplY3RQcmV2aWV3KQogewogICAgIC8vIFByZXZlbnQgdGhlIGNlbGwgZnJvbSBn
ZXR0aW5nIGNvbGxlY3RlZCBhcyB3ZSBsb29rIGl0IHVwLgogICAgIFZNJiB2bSA9IG1fZW52aXJv
bm1lbnQudm0oKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6
Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsCiAg
ICAgb2JqZWN0UHJldmlldyA9IGluamVjdGVkU2NyaXB0LnByZXZpZXdWYWx1ZShjZWxsKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9iamVjdChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9u
YWxPYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRSZW1vdGVPYmpl
Y3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewogICAgIC8vIFByZXZlbnQgdGhlIGNlbGwgZnJvbSBn
ZXR0aW5nIGNvbGxlY3RlZCBhcyB3ZSBsb29rIGl0IHVwLgogICAgIFZNJiB2bSA9IG1fZW52aXJv
bm1lbnQudm0oKTsKQEAgLTI1MCwxNiArMjUwLDE2IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50
OjpnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVj
CiAgICAgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjZWxsLCBvYmplY3RHcm91
cCwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKENvbGxlY3Rpb25T
Y29wZSBzY29wZSkKK3N0YXRpYyBQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5
cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7
CiAgICAgc3dpdGNoIChzY29wZSkgewogICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpGdWxsOgot
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rp
b246OlR5cGU6OkZ1bGw7CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNv
bGxlY3Rpb246OlR5cGU6OkZ1bGw7CiAgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46Ci0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlv
bjo6VHlwZTo6UGFydGlhbDsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZTo6UGFydGlhbDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0
aW9uOjpUeXBlOjpGdWxsOworICAgIHJldHVybiBQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxl
Y3Rpb246OlR5cGU6OkZ1bGw7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojp3aWxsR2Fy
YmFnZUNvbGxlY3QoKQpAQCAtMzAxLDkgKzMwMSw5IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50
OjpjbGVhckhlYXBTbmFwc2hvdHMoKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwQWdl
bnQ6OmRpc3BhdGNoR2FyYmFnZUNvbGxlY3RlZEV2ZW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6Okhl
YXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlIHR5cGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJs
ZSBlbmRUaW1lKQordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmRpc3BhdGNoR2FyYmFnZUNvbGxl
Y3RlZEV2ZW50KFByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZSB0eXBlLCBk
b3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSkKIHsKLSAgICBhdXRvIHByb3RvY29sT2Jq
ZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OmNyZWF0
ZSgpCisgICAgYXV0byBwcm90b2NvbE9iamVjdCA9IFByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29s
bGVjdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFR5cGUodHlwZSkKICAgICAgICAgLnNldFN0
YXJ0VGltZShzdGFydFRpbWUpCiAgICAgICAgIC5zZXRFbmRUaW1lKGVuZFRpbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5oCmluZGV4IGRhZTM1NzEwMzNhMjdmOGUwMzUzMWRkOTExY2E1ZjE0MDE3NmFi
YTUuLmJlMzA5Mzc2NmRlNDQwZWQxZDE5YzhjZDVhNTNjMWZkMDViYmEzNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5oCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNuYXBzaG90
KEVycm9yU3RyaW5nJiwgZG91YmxlKiB0aW1lc3RhbXAsIFN0cmluZyogc25hcHNob3REYXRhKSBm
aW5hbDsKICAgICB2b2lkIHN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIHN0b3BUcmFja2luZyhFcnJvclN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJldmll
dyhFcnJvclN0cmluZyYsIGludCBoZWFwT2JqZWN0SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiByZXN1bHRTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZnVuY3Rpb25EZXRhaWxzLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4mIG9iamVjdFByZXZpZXcp
IGZpbmFsOwotICAgIHZvaWQgZ2V0UmVtb3RlT2JqZWN0KEVycm9yU3RyaW5nJiwgaW50IGhlYXBP
YmplY3RJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbE9iamVjdEdyb3VwLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBmaW5h
bDsKKyAgICB2b2lkIGdldFByZXZpZXcoRXJyb3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4mIHJlc3VsdFN0cmluZywgUmVmUHRyPFByb3RvY29sOjpEZWJ1
Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0
UHJldmlldz4mKSBmaW5hbDsKKyAgICB2b2lkIGdldFJlbW90ZU9iamVjdChFcnJvclN0cmluZyYs
IGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxPYmplY3RHcm91
cCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIGZpbmFs
OwogCiAgICAgLy8gSGVhcE9ic2VydmVyCiAgICAgdm9pZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBv
dmVycmlkZTsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2xlYXJIZWFwU25hcHNob3RzKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hHYXJiYWdl
Q29sbGVjdGVkRXZlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rp
b246OlR5cGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBlbmRUaW1lKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hHYXJiYWdlQ29sbGVjdGVkRXZlbnQoUHJvdG9jb2w6OkhlYXA6OkdhcmJh
Z2VDb2xsZWN0aW9uOjpUeXBlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSk7CiAK
IHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxKU0M6OkhlYXBTbmFwc2hvdE5vZGU+IG5vZGVG
b3JIZWFwT2JqZWN0SWRlbnRpZmllcihFcnJvclN0cmluZyYsIHVuc2lnbmVkIGhlYXBPYmplY3RJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IGIwN2FhNzRk
ZGZlN2JkNDJlZGIwYjZhN2Y2YzVhZjA0MjJmNThkZTEuLjgxOTY0ZmM5ZmRjNjcxZmMzZjkwOWQ4
ODNkMjJmMjU3YWU5ZTI0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAt
NDcsMTMgKzQ3LDEzIEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL0pTT05WYWx1ZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKLXN0YXRpYyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBiKQordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGIpCiB7
Ci0gICAgcmV0dXJuIGIgPyAqYiA6IGZhbHNlOworICAgIHJldHVybiBiICYmICpiOwogfQogCiBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudChBZ2VudENvbnRleHQm
IGNvbnRleHQpCkBAIC03MCwyMSArNzAsMjEgQEAgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp+SW5z
cGVjdG9yUnVudGltZUFnZW50KCkKIAogc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXB0RGVidWdTZXJ2
ZXImIHNjcmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSBuZXdTdGF0ZSkKIHsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSBwcmVzZW50U3RhdGUgPSBzY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKCk7CisgICAgYXV0byBwcmVzZW50U3RhdGUgPSBzY3JpcHREZWJ1Z1NlcnZlci5w
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiAgICAgaWYgKHByZXNlbnRTdGF0ZSAhPSBuZXdTdGF0
ZSkKICAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShu
ZXdTdGF0ZSk7CiAgICAgcmV0dXJuIHByZXNlbnRTdGF0ZTsKIH0KIAotc3RhdGljIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlPiBidWlsZEVycm9yUmFuZ2VPYmpl
Y3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiB0b2tlbkxvY2F0aW9uKQorc3RhdGljIFJlZjxQcm90
b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKIHsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKKyAgICByZXR1cm4gUHJvdG9j
b2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydE9mZnNl
dCh0b2tlbkxvY2F0aW9uLnN0YXJ0T2Zmc2V0KQogICAgICAgICAuc2V0RW5kT2Zmc2V0KHRva2Vu
TG9jYXRpb24uZW5kT2Zmc2V0KQogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVz
dWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5nZSkKK3Zv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgUHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIG1lc3NhZ2UsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6RXJyb3JSYW5nZT4mIHJhbmdlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fdm0pOwog
CkBAIC05MywyNiArOTMsMjYgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWMKIAogICAgIHN3aXRj
aCAoZXJyb3Iuc3ludGF4RXJyb3JUeXBlKCkpIHsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50
YXhFcnJvck5vbmU6Ci0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpTeW50YXhFcnJvclR5cGU6Ok5vbmU7CisgICAgICAgICpyZXN1bHQgPSBQcm90b2NvbDo6
UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1bHQg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OklycmVjb3Zl
cmFibGU7CisgICAgICAgICpyZXN1bHQgPSBQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JU
eXBlOjpJcnJlY292ZXJhYmxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9y
OjpTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWw6Ci0gICAgICAgICpyZXN1bHQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlVudGVybWluYXRlZExp
dGVyYWw7CisgICAgICAgICpyZXN1bHQgPSBQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JU
eXBlOjpVbnRlcm1pbmF0ZWRMaXRlcmFsOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNl
ckVycm9yOjpTeW50YXhFcnJvclJlY292ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpSZWNvdmVyYWJsZTsKKyAg
ICAgICAgKnJlc3VsdCA9IFByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlJlY292
ZXJhYmxlOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoZXJyb3Iuc3ludGF4RXJy
b3JUeXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZSkgewotICAgICAgICAqbWVz
c2FnZSA9IGVycm9yLm1lc3NhZ2UoKTsKKyAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2Uo
KTsKICAgICAgICAgcmFuZ2UgPSBidWlsZEVycm9yUmFuZ2VPYmplY3QoZXJyb3IudG9rZW4oKS5t
X2xvY2F0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFs
dWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29s
KiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0
IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29s
Piogb3V0X3dhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG91
dF9zYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3Qg
aW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mIG91dFdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQog
ewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKGVycm9yU3RyaW5nLCBleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC0xMjQsMTUgKzEyNCw5IEBAIHZvaWQgSW5zcGVjdG9yUnVu
dGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZXhwCiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUpKQogICAgICAgICBtdXRlQ29uc29sZSgpOwogCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGlz
IGJyaWRnaW5nIGNvZGUgd2hlbiBnZW5lcmF0ZWQgcHJvdG9jb2wgY29tbWFuZHMgbm8gbG9uZ2Vy
IHVzZSBPcHRPdXRwdXQ8VD4uCi0gICAgLy8gPGh0dHBzOi8vd3d3LndlYmtpdC5vcmcvYi8xODA2
MDc+CiAgICAgYm9vbCB3YXNUaHJvd247Ci0gICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNhdmVkUmVz
dWx0SW5kZXg7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGUoZXJyb3JTdHJpbmcsIGV4cHJl
c3Npb24sIG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogU3RyaW5nKCksIGFzQm9vbChpbmNs
dWRlQ29tbWFuZExpbmVBUEkpLCBhc0Jvb2wocmV0dXJuQnlWYWx1ZSksIGFzQm9vbChnZW5lcmF0
ZVByZXZpZXcpLCBhc0Jvb2woc2F2ZVJlc3VsdCksIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJl
c3VsdEluZGV4KTsKLSAgICAKLSAgICAqb3V0X3dhc1Rocm93biA9IHdhc1Rocm93bjsKLSAgICBp
ZiAoc2F2ZWRSZXN1bHRJbmRleC5oYXNfdmFsdWUoKSkKLSAgICAgICAgKm91dF9zYXZlZFJlc3Vs
dEluZGV4ID0gc2F2ZWRSZXN1bHRJbmRleC52YWx1ZSgpOworICAgIG91dFdhc1Rocm93biA9IHdh
c1Rocm93bjsKIAogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlKSkgewogICAgICAgICB1bm11dGVDb25zb2xlKCk7CkBAIC0xNDAsNyArMTM0LDcgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBleHAKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSlNPTjo6QXJy
YXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNv
bnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGJvb2w+KiBvdXRfd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNh
bGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBKU09OOjpBcnJheSogb3B0aW9u
YWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3Rk
OjpvcHRpb25hbDxib29sPiYgb3V0V2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JP
YmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkg
ewpAQCAtMTYyLDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVu
Y3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAKICAgICBpbmpl
Y3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25PbihlcnJvclN0cmluZywgb2JqZWN0SWQsIGV4cHJlc3Np
b24sIGFyZ3VtZW50cywgYXNCb29sKHJldHVybkJ5VmFsdWUpLCBhc0Jvb2woZ2VuZXJhdGVQcmV2
aWV3KSwgcmVzdWx0LCB3YXNUaHJvd24pOwogCi0gICAgKm91dF93YXNUaHJvd24gPSB3YXNUaHJv
d247CisgICAgb3V0V2FzVGhyb3duID0gd2FzVGhyb3duOwogCiAgICAgaWYgKGFzQm9vbChkb05v
dFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKSB7CiAgICAgICAgIHVubXV0ZUNvbnNv
bGUoKTsKQEAgLTE3MCw3ICsxNjQsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2Fs
bEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIH0K
IH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4mIHByZXZpZXcpCit2b2lkIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmll
dz4mIHByZXZpZXcpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsK
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0xODcsNyArMTgxLDcg
QEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG8KICAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KG1fc2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qg
b3duUHJvcGVydGllcywgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2Ny
aXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRp
ZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blBy
b3BlcnRpZXMsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVj
dElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBA
IC0yMDUsNyArMTk5LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5
YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+
JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKK3Zv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBn
ZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQ
cm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0
aWVzKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYg
KGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtMjIzLDcgKzIxNyw3IEBAIHZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjCiAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3Njcmlw
dERlYnVnU2VydmVyLCBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogfQogCi12b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVj
dGlvbkVudHJ5Pj4mIGVudHJpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29s
bGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgs
IGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKQogewogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkgewpAQCAtMjM3LDcgKzIzMSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAg
aW5qZWN0ZWRTY3JpcHQuZ2V0Q29sbGVjdGlvbkVudHJpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElk
LCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6IFN0cmluZygpLCBzdGFydCwgZmV0Y2gsIGVu
dHJpZXMpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2F2ZVJlc3VsdChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgY2FsbEFyZ3VtZW50LCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGludD4qIG91dF9zYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmpl
Y3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIHN0ZDo6b3B0
aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdDsKIApAQCAtMjU0LDE0ICsyNDgsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6c2F2ZVJlc3VsdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9i
agogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgYnJpZGdpbmcgY29kZSB3aGVuIGdlbmVyYXRlZCBwcm90b2NvbCBjb21tYW5kcyBubyBs
b25nZXIgdXNlIE9wdE91dHB1dDxUPi4KLSAgICAvLyA8aHR0cHM6Ly93d3cud2Via2l0Lm9yZy9i
LzE4MDYwNz4KLSAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKLQogICAg
IGluamVjdGVkU2NyaXB0LnNhdmVSZXN1bHQoZXJyb3JTdHJpbmcsIGNhbGxBcmd1bWVudC50b0pT
T05TdHJpbmcoKSwgc2F2ZWRSZXN1bHRJbmRleCk7Ci0KLSAgICBpZiAoc2F2ZWRSZXN1bHRJbmRl
eC5oYXNfdmFsdWUoKSkKLSAgICAgICAgKm91dF9zYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1
bHRJbmRleC52YWx1ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFz
ZU9iamVjdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCkBAIC0yNzYsMTEg
KzI2MywxMSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3Vw
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplYwogICAgIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3Jp
cHRpb24+PiYgdHlwZURlc2NyaXB0aW9ucykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCiB7
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgdHlwZURlc2Ny
aXB0aW9ucyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlw
ZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CisgICAgdHlwZURlc2NyaXB0aW9ucyA9IEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwogICAg
IGlmICghbV92bS50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIFR5cGUgSW5mb3JtYXRpb24u
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxNyw3ICszMDQsNyBAQCB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3Ry
aW5nJiBlcgogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc1ZhbGlkID0gdHlwZUxvY2F0aW9u
ICYmIHR5cGVTZXQgJiYgIXR5cGVTZXQtPmlzRW1wdHkoKTsKLSAgICAgICAgYXV0byBkZXNjcmlw
dGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbjo6Y3Jl
YXRlKCkKKyAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IFByb3RvY29sOjpSdW50aW1lOjpUeXBl
RGVzY3JpcHRpb246OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0SXNWYWxpZChpc1ZhbGlkKQog
ICAgICAgICAgICAgLnJlbGVhc2UoKTsKIApAQCAtMzMzLDcgKzMyMCw3IEBAIHZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJy
b3JTdHJpbmcmIGVyCiAKICAgICBkb3VibGUgZW5kID0gY3VycmVudFRpbWVNUygpOwogICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nRigiSW5zcGVjdG9yOjpnZXRSdW50aW1lVHlwZXNG
b3JWYXJpYWJsZXNBdE9mZnNldHMgdG9vayAlbGZtc1xuIiwgZW5kIC0gc3RhcnQpOworICAgICAg
ICBkYXRhTG9nRigiZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzIHRvb2sgJWxm
bXNcbiIsIGVuZCAtIHN0YXJ0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQpAQCAt
MzkxLDcgKzM3OCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpzZXRDb250cm9sRmxv
d1Byb2ZpbGVyRW5hYmxlZFN0YXRlKGJvb2wgaXNDb250cm9sRmxvCiAgICAgfSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZywgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRCYXNpY0Jsb2NrcyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZywgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MpCiB7CiAgICAgaWYgKCFtX3ZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgewogICAgICAgICBl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBoYXZl
IGEgQ29udHJvbCBGbG93IFByb2ZpbGVyLiIpOwpAQCAtNDAyLDkgKzM4OSw5IEBAIHZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluCiAgICAgaW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2VJREFzU3RyaW5n
LnRvSW50UHRyU3RyaWN0KCZva2F5KTsKICAgICBBU1NFUlQob2theSk7CiAgICAgY29uc3QgVmVj
dG9yPEJhc2ljQmxvY2tSYW5nZT4mIGJhc2ljQmxvY2tSYW5nZXMgPSBtX3ZtLmNvbnRyb2xGbG93
UHJvZmlsZXIoKS0+Z2V0QmFzaWNCbG9ja3NGb3JTb3VyY2VJRChzb3VyY2VJRCwgbV92bSk7Ci0g
ICAgYmFzaWNCbG9ja3MgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkJhc2ljQmxvY2s+OjpjcmVhdGUoKTsKKyAgICBiYXNpY0Jsb2NrcyA9IEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s+OjpjcmVhdGUoKTsKICAgICBmb3IgKGNv
bnN0IEJhc2ljQmxvY2tSYW5nZSYgYmxvY2sgOiBiYXNpY0Jsb2NrUmFuZ2VzKSB7Ci0gICAgICAg
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPiBsb2NhdGlvbiA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s6OmNyZWF0ZSgpCisgICAg
ICAgIGF1dG8gbG9jYXRpb24gPSBQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jazo6Y3JlYXRl
KCkKICAgICAgICAgICAgIC5zZXRTdGFydE9mZnNldChibG9jay5tX3N0YXJ0T2Zmc2V0KQogICAg
ICAgICAgICAgLnNldEVuZE9mZnNldChibG9jay5tX2VuZE9mZnNldCkKICAgICAgICAgICAgIC5z
ZXRIYXNFeGVjdXRlZChibG9jay5tX2hhc0V4ZWN1dGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuaAppbmRleCAyZDVkMjkxNzU2Nzk5ZDdlZWFjOWU3YjYwZjc0NmU0ZTVhYTI5YWViLi4yOTky
N2IxZjQ5NzFkZmI1MTAwNDFjMzVhNzI3YWYyMjBmZGUwMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaApAQCAtNTcsMjIgKzU3LDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQotICAg
IHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBldmFs
dWF0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
KiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIGNvbnN0IGludCogY29uc3QgZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiBjb25z
dCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0
IGJvb2wqIGNvbnN0IHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
c2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgSlNPTjo6QXJyYXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJl
dHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIGZpbmFsOworICAgIHZv
aWQgcGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFByb3RvY29s
OjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUqIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
JiBtZXNzYWdlLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JikgZmluYWw7
CisgICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVl
LCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJl
ZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRl
eCkgZmluYWw7CisgICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSlNPTjo6QXJy
YXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93bikgZmluYWw7CiAgICAgdm9pZCBy
ZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nJiwgY29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBm
aW5hbDsKLSAgICB2b2lkIGdldFByZXZpZXcoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmll
dz4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBi
b29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJv
cGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7Ci0gICAgdm9pZCBn
ZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBy
ZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7
Ci0gICAgdm9pZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGludCog
Y29uc3Qgc3RhcnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50
cnk+PiYgZW50cmllcykgZmluYWw7Ci0gICAgdm9pZCBzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiwg
Y29uc3QgSlNPTjo6T2JqZWN0JiBjYWxsQXJndW1lbnQsIGNvbnN0IGludCogY29uc3QgZXhlY3V0
aW9uQ29udGV4dElkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRS
ZXN1bHRJbmRleCkgZmluYWw7CisgICAgdm9pZCBnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2
aWV3PiYpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wq
IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3Bl
cnRpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlw
dG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6Oklu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGludCogc3RhcnRJbmRl
eCwgY29uc3QgaW50KiBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQg
c2F2ZVJlc3VsdChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgY2FsbEFyZ3VtZW50
LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZl
ZFJlc3VsdEluZGV4KSBmaW5hbDsKICAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIGZpbmFsOwotICAgIHZvaWQgZ2V0UnVu
dGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6
QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFJ1
bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046
OkFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1l
OjpUeXBlRGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlVHlwZVByb2Zp
bGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlVHlwZVByb2ZpbGVy
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlQ29udHJvbEZsb3dQ
cm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3Mo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNp
Y0Jsb2Nrcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgaW5fc291cmNlSUQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29s
OjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAppbmRleCA1ZTg5NWFlODUyMDE1Yjlk
NGNkMDU1MWNmMWI4OWJiOGVmNjMzZjQ0Li41OTdlMDhlZDhhMWFmODEzNDBhMzM5MWIxNDNhNmJh
YTUxZTczYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzbwogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFydFRyYWNraW5nKEVycm9yU3Ry
aW5nJiwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZVNhbXBsZXMpCit2b2lkIEluc3BlY3RvclNj
cmlwdFByb2ZpbGVyQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBib29s
KiBpbmNsdWRlU2FtcGxlcykKIHsKICAgICBpZiAobV90cmFja2luZykKICAgICAgICAgcmV0dXJu
OwpAQCAtMTM1LDI2ICsxMzUsMjYgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
OjpkaWRFdmFsdWF0ZVNjcmlwdChkb3VibGUgc3RhcnRUaW1lLCBQcm9maWxpbmcKICAgICBhZGRF
dmVudChzdGFydFRpbWUsIGVuZFRpbWUsIHJlYXNvbik7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6
OlByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnRUeXBlIHRvUHJvdG9jb2woUHJvZmlsaW5n
UmVhc29uIHJlYXNvbikKK3N0YXRpYyBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlw
ZSB0b1Byb3RvY29sKFByb2ZpbGluZ1JlYXNvbiByZWFzb24pCiB7CiAgICAgc3dpdGNoIChyZWFz
b24pIHsKICAgICBjYXNlIFByb2ZpbGluZ1JlYXNvbjo6QVBJOgotICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlwZTo6QVBJOworICAgICAg
ICByZXR1cm4gUHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVudFR5cGU6OkFQSTsKICAgICBj
YXNlIFByb2ZpbGluZ1JlYXNvbjo6TWljcm90YXNrOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlwZTo6TWljcm90YXNrOworICAgICAg
ICByZXR1cm4gUHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVudFR5cGU6Ok1pY3JvdGFzazsK
ICAgICBjYXNlIFByb2ZpbGluZ1JlYXNvbjo6T3RoZXI6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnRUeXBlOjpPdGhlcjsKKyAgICAgICAg
cmV0dXJuIFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnRUeXBlOjpPdGhlcjsKICAgICB9
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlwZTo6T3RoZXI7CisgICAgcmV0dXJuIFByb3Rv
Y29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnRUeXBlOjpPdGhlcjsKIH0KIAogdm9pZCBJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50OjphZGRFdmVudChkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUg
ZW5kVGltZSwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbikKIHsKICAgICBBU1NFUlQoZW5kVGltZSA+
PSBzdGFydFRpbWUpOwogCi0gICAgYXV0byBldmVudCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNj
cmlwdFByb2ZpbGVyOjpFdmVudDo6Y3JlYXRlKCkKKyAgICBhdXRvIGV2ZW50ID0gUHJvdG9jb2w6
OlNjcmlwdFByb2ZpbGVyOjpFdmVudDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXJ0VGltZShz
dGFydFRpbWUpCiAgICAgICAgIC5zZXRFbmRUaW1lKGVuZFRpbWUpCiAgICAgICAgIC5zZXRUeXBl
KHRvUHJvdG9jb2wocmVhc29uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuaAppbmRleCBjOWI4NzYwN2NmOGMxYmU1YmFiMTA3YmZkZWJlYmU3ZTljYjEwNWM4Li4yYzJm
YTYwZTcyZDQ1ZTc1Y2U2YTk3M2ExNTc4MGM0ZDMzODUwM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOwogCiAgICAgLy8gU2NyaXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKLSAg
ICB2b2lkIHN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBpbmNs
dWRlU2FtcGxlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5n
JiwgY29uc3QgYm9vbCogaW5jbHVkZVNhbXBsZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFRy
YWNraW5nKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHByb2dyYW1tYXRpY0Nh
cHR1cmVTdGFydGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQppbmRleCBhOTBj
MGRiZmU2NmQwYzRlNDNiZDQwNmZjMWQ4OGI4NTg4ZWNiMjgyLi4xNjUyNjQxNDk3MjU3YTcxYmU4
OTJiNTZiMTE2MGE2ODVmMWJlYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkK
QEAgLTE0Miw3ICsxNDIsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAg
ICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBf
bmFtZSA9IENwcEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAg
ICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuICdjb25zdCAlcyogY29uc3QnICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4g
J2NvbnN0ICVzKicgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5yYXdfbmFtZSgp
IGluIFsnc3RyaW5nJ106CiAgICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgY3Bw
X25hbWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNjUsNyArMTY1LDcgQEAgY2xhc3MgQ3BwR2Vu
ZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFsaWFzZWRU
eXBlKToKICAgICAgICAgICAgIGJ1aWxkZXJfdHlwZSA9IENwcEdlbmVyYXRvci5jcHBfcHJvdG9j
b2xfdHlwZV9mb3JfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIGlzX29wdGlvbmFsOgotICAg
ICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqIGNvbnN0JyAlIGJ1aWxkZXJfdHlwZQorICAg
ICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGJ1aWxkZXJfdHlwZQogICAgICAgICAg
ICAgZWxpZiBfdHlwZS5hbGlhc2VkX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ2ludGVnZXIn
LCAnbnVtYmVyJ106CiAgICAgICAgICAgICAgICAgcmV0dXJuIENwcEdlbmVyYXRvci5jcHBfbmFt
ZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUuYWxpYXNlZF90eXBlKQogICAgICAgICAgICAgZWxp
ZiBfdHlwZS5hbGlhc2VkX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ3N0cmluZyddOgpAQCAt
MTc5LDcgKzE3OSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAg
ICAgZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnYW55J106CiAgICAgICAgICAgICAg
ICAgcmV0dXJuICdSZWZQdHI8SlNPTjo6VmFsdWU+JwogICAgICAgICAgICAgZWxpZiBpc19vcHRp
b25hbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKiBjb25zdCcgJSBjcHBfbmFt
ZQorICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGNwcF9uYW1lCiAgICAgICAg
ICAgICBlbGlmIF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4gWydzdHJpbmcnXToKICAgICAgICAg
ICAgICAgICByZXR1cm4gJ2NvbnN0ICVzJicgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxzZToK
QEAgLTIwNyw3ICsyMDcsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAg
ICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBf
bmFtZSA9IENwcEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAg
ICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuICJJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBfbmFtZQorICAg
ICAgICAgICAgICAgIHJldHVybiAic3RkOjpvcHRpb25hbDwlcz4mIiAlIGNwcF9uYW1lCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiAnJXMqJyAlIGNwcF9uYW1lCiAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKToKQEAgLTIzMyw3ICsyMzMsNyBA
QCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShf
dHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFtZSA9IENwcEdlbmVyYXRv
ci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJh
bWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBfbmFtZQorICAgICAgICAgICAgICAgIHJldHVy
biAic3RkOjpvcHRpb25hbDwlcz4mIiAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbGlmIF90eXBl
LnF1YWxpZmllZF9uYW1lKCkgaW4gWydpbnRlZ2VyJywgJ251bWJlciddOgogICAgICAgICAgICAg
ICAgIHJldHVybiBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBl
KQogICAgICAgICAgICAgZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnc3RyaW5nJ106
CkBAIC0yNjUsNyArMjY1LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAg
ICAgICAgICBpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnYW55JywgJ29iamVjdCddOgog
ICAgICAgICAgICAgICAgIHJldHVybiAiUmVmUHRyPCVzPiIgJSBDcHBHZW5lcmF0b3IuY3BwX25h
bWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgZWxpZiBwYXJhbWV0ZXIu
aXNfb3B0aW9uYWwgYW5kIF90eXBlLnF1YWxpZmllZF9uYW1lKCkgbm90IGluIFsnYm9vbGVhbics
ICdzdHJpbmcnLCAnaW50ZWdlciddOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPiIgJSBjcHBfbmFtZQorICAgICAgICAgICAgICAgIHJl
dHVybiAic3RkOjpvcHRpb25hbDwlcz4iICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNwcF9uYW1lCiAKQEAgLTI3NywxMiArMjc3LDEyIEBAIGNs
YXNzIENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBl
LCBBbGlhc2VkVHlwZSk6CiAgICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBDcHBHZW5lcmF0b3Iu
Y3BwX3Byb3RvY29sX3R5cGVfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJhbWV0
ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8JXM+IiAlIGJ1aWxkZXJfdHlwZQorICAgICAgICAgICAgICAgIHJldHVy
biAic3RkOjpvcHRpb25hbDwlcz4iICUgYnVpbGRlcl90eXBlCiAgICAgICAgICAgICByZXR1cm4g
JyVzJyAlIGJ1aWxkZXJfdHlwZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRp
dmVUeXBlKToKICAgICAgICAgICAgIGNwcF9uYW1lID0gQ3BwR2VuZXJhdG9yLmNwcF9uYW1lX2Zv
cl9wcmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRp
b25hbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDwlcz4iICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gInN0ZDo6b3B0aW9u
YWw8JXM+IiAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJl
dHVybiBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDk3
OTMzMmRmZjBkMmRlZTI1NmMzN2U2NmEzNmVmNTRjMGIyOTNlZjcuLmJlMWVjZDE4YmJjYjJiNDA3
ZGZlODQ3NzMzMDQ4ODg3YjMzMmM5OWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0yNDksOSArMjQ5LDcgQEAgJHtjb25zdHJ1Y3RvckV4
YW1wbGV9CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcmVzdWx0OwogICAgIGJvb2wgY2FzdFN1
Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChyZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIEJp
bmRpbmdUcmFpdHM8JHtvYmplY3RUeXBlfT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKHJl
c3VsdC5nZXQoKSk7Ci0jZW5kaWYgIC8vICFBU1NFUlRfRElTQUJMRUQKICAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoJHtvYmplY3RUeXBlfSkgPT0gc2l6ZW9mKEpTT046Ok9iamVjdEJhc2UpLCB0
eXBlX2Nhc3RfcHJvYmxlbSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7b2JqZWN0VHlwZX0q
PihzdGF0aWNfY2FzdDxKU09OOjpPYmplY3RCYXNlKj4ocmVzdWx0LmdldCgpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBkMTdjZTAxZGZhOWNiNWRm
OGUxZTk0MGUwYzJjNTM1ZWNiMmViNzMzLi5iOTNlNjE3ZDU1MDhlYWU2OGJhOTZjOThhZDNlYzBm
NTdjMDY4ZDBkIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAg
LTE2Myw4ICsxNjMsOCBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19v
cHRpb25hbDoKICAgICAgICAgICAgICAgICBpZiBDcHBHZW5lcmF0b3Iuc2hvdWxkX3VzZV93cmFw
cGVyX2Zvcl9yZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSk6Ci0gICAgICAgICAgICAgICAgICAg
IG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgaWYgKCUocGFyYW1ldGVyTmFt
ZSlzLmlzQXNzaWduZWQoKSknICUgcGFyYW1fYXJncykKLSAgICAgICAgICAgICAgICAgICAgb3V0
X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNvbk1lc3NhZ2UtPiUoa2V5
ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgJShwYXJhbWV0
ZXJOYW1lKXMuZ2V0VmFsdWUoKSk7JyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICAgICAgICAg
IG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgaWYgKCUocGFyYW1ldGVyTmFt
ZSlzLmhhc192YWx1ZSgpKScgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgICAgICAgICBvdXRf
cGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBqc29uTWVzc2FnZS0+JShrZXll
ZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCAqJShwYXJhbWV0
ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgaWYgKCUo
cGFyYW1ldGVyTmFtZSlzKScgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgICAgICAgICBvdXRf
cGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBqc29uTWVzc2FnZS0+JShrZXll
ZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCAlKHBhcmFtZXRl
ck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCkBAIC0yNTYsOCArMjU2LDggQEAgY2xhc3MgQ3BwQmFj
a2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfZGVjbGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFy
YW1ldGVyVHlwZSlzIG91dF8lKHBhcmFtZXRlck5hbWUpczsnICUgcGFyYW1fYXJncykKICAgICAg
ICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAgICAgICAgICAgICAg
IGlmIENwcEdlbmVyYXRvci5zaG91bGRfdXNlX3dyYXBwZXJfZm9yX3JldHVybl90eXBlKHBhcmFt
ZXRlci50eXBlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdu
bWVudHMuYXBwZW5kKCcgICAgICAgIGlmIChvdXRfJShwYXJhbWV0ZXJOYW1lKXMuaXNBc3NpZ25l
ZCgpKScgJSBwYXJhbV9hcmdzKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRl
cl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhv
ZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1l
KXMuZ2V0VmFsdWUoKSk7JyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBv
dXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBpZiAob3V0XyUocGFyYW1l
dGVyTmFtZSlzLmhhc192YWx1ZSgpKScgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3Vs
dC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCAq
b3V0XyUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVu
dHMuYXBwZW5kKCcgICAgICAgIGlmIChvdXRfJShwYXJhbWV0ZXJOYW1lKXMpJyAlIHBhcmFtX2Fy
Z3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFw
cGVuZCgnICAgICAgICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFs
KCIlKHBhcmFtZXRlcktleSlzIiksIG91dF8lKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2Fy
Z3MpCkBAIC0yNjYsNyArMjY2LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAg
ICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJL
ZXkpcyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogCi0gICAgICAg
ICAgICAgICAgaWYgQ3BwR2VuZXJhdG9yLnNob3VsZF9wYXNzX2J5X2NvcHlfZm9yX3JldHVybl90
eXBlKHBhcmFtZXRlci50eXBlKToKKyAgICAgICAgICAgICAgICBpZiBDcHBHZW5lcmF0b3Iuc2hv
dWxkX3Bhc3NfYnlfY29weV9mb3JfcmV0dXJuX3R5cGUocGFyYW1ldGVyLnR5cGUpIG9yIHBhcmFt
ZXRlci5pc19vcHRpb25hbCBhbmQgQ3BwR2VuZXJhdG9yLnNob3VsZF91c2Vfd3JhcHBlcl9mb3Jf
cmV0dXJuX3R5cGUocGFyYW1ldGVyLnR5cGUpOgogICAgICAgICAgICAgICAgICAgICBtZXRob2Rf
cGFyYW1ldGVycy5hcHBlbmQoJ291dF8nICsgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKQogICAg
ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9wYXJhbWV0ZXJz
LmFwcGVuZCgnJm91dF8nICsgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIu
cHkKaW5kZXggMmExNTRlMGExMGUyM2Y4NmZkYmM4NzE2MjQxODMyMTY0MTQ4ZjBjNC4uNGVkYWM3
NDI5MDc2ZDM3ZDY1Njc0NGUyZmRhNjE2ZTNhMjQ1OWMzMSAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3Rv
Y29sX3R5cGVzX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBA
IC0zNjUsOSArMzY1LDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0hlYWRlckdlbmVyYXRvcihD
cHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd0ZW1wbGF0ZTw+ICVzIEJp
bmRpbmdUcmFpdHM8JXM+IHsnICUgKCcgJy5qb2luKHN0cnVjdF9rZXl3b3JkcyksIGFyZ3VtZW50
WzBdKSkKICAgICAgICAgICAgIGlmIGFyZ3VtZW50WzFdOgogICAgICAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgnc3RhdGljIFJlZlB0cjwlcz4gcnVudGltZUNhc3QoUmVmUHRyPEpTT046OlZhbHVl
PiYmIHZhbHVlKTsnICUgYXJndW1lbnRbMF0pCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyNp
ZiAhQVNTRVJUX0RJU0FCTEVEJykKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJXMgYXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqKTsnICUgJyAnLmpvaW4oZnVuY3Rpb25f
a2V5d29yZHMpKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9E
SVNBQkxFRCcpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ307JykKICAgICAgICAgcmV0dXJu
ICdcbicuam9pbihsaW5lcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxl
bWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4
IDJlYjA3NjJlZmM2Zjg5NjlkMjhhNjU3N2VhOTZiOTY4M2Q0N2RhNTEuLjVhYWVhMDhiMzExOTc4
YWM4NmYwMGQzMmNkYmFjZjFjNzYxN2NiNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRp
b24ucHkKQEAgLTIwNSw4ICsyMDUsMTAgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAgICAgICAgIHNob3VsZF9jb3VudF9wcm9w
ZXJ0aWVzID0gbm90IEdlbmVyYXRvci50eXBlX2hhc19vcGVuX2ZpZWxkcyhvYmplY3RfZGVjbGFy
YXRpb24udHlwZSkKICAgICAgICAgbGluZXMgPSBbXQogCi0gICAgICAgIGxpbmVzLmFwcGVuZCgn
I2lmICFBU1NFUlRfRElTQUJMRUQnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgQmluZGlu
Z1RyYWl0czwlcz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2YWx1
ZSknICUgKENwcEdlbmVyYXRvci5jcHBfcHJvdG9jb2xfdHlwZV9mb3JfdHlwZShvYmplY3RfZGVj
bGFyYXRpb24udHlwZSkpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiBBU1NFUlRfRElTQUJM
RUQnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0odmFsdWUpOycpCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgnI2Vsc2UnKQogICAgICAgICBsaW5lcy5hcHBlbmQoIiIiewog
ICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBv
YmplY3Q7CkBAIC0yMTksNyArMjIxLDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgiIiIgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9y
ICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgiJShtZW1iZXJO
YW1lKXMiKSk7CisgICAgICAgIGF1dG8gJShtZW1iZXJOYW1lKXNQb3MgPSBvYmplY3QtPmZpbmQo
QVNDSUlMaXRlcmFsKCIlKG1lbWJlck5hbWUpcyIpKTsKICAgICAgICAgQVNTRVJUKCUobWVtYmVy
TmFtZSlzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgICAlKGFzc2VydE1ldGhvZClzKCUo
bWVtYmVyTmFtZSlzUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgfSIiIiAlIGFyZ3MpCkBAIC0yMzUs
NyArMjM3LDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KENwcEdlbmVyYXRvcik6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgiIiIgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yICUobWVtYmVyTmFtZSlz
UG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgiJShtZW1iZXJOYW1lKXMiKSk7CisgICAg
ICAgIGF1dG8gJShtZW1iZXJOYW1lKXNQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCIl
KG1lbWJlck5hbWUpcyIpKTsKICAgICAgICAgaWYgKCUobWVtYmVyTmFtZSlzUG9zICE9IG9iamVj
dC0+ZW5kKCkpIHsKICAgICAgICAgICAgICUoYXNzZXJ0TWV0aG9kKXMoJShtZW1iZXJOYW1lKXNQ
b3MtPnZhbHVlLmdldCgpKTsiIiIgJSBhcmdzKQogCkBAIC0yNDcsOCArMjQ5LDggQEAgY2xhc3Mg
Q3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAg
ICAgICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzOgogICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKScpCiAg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJvcGVy
dGllcyBpbiBvYmplY3Q6ICVzXFxuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgbGluZXMuYXBwZW5k
KCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfScp
CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Fz
c2VydGlvbl9mb3JfZW51bShzZWxmLCBlbnVtX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5k
ZXggY2Y2MDM1MDVjNjdhOWQxYWQxZWE2ZjA4NzI4NjU2NWYyNjkzMTlmNC4uNTkwMGFkNTk0NGUx
ZTNiZTZiNGI2MzE0OGQ2ZDEzY2M4ZDIzMDNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTE1NywxMSArMTU3LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgWWVsbG93ID0gNSwKICAgICAgICAgQmxhY2sgPSA2LAogICAgIH07IC8vIGVu
dW0gY2xhc3MgUHJpbnRDb2xvcgotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0
cmluZyYgaW5fcXVlcnksIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBvcHRfb3V0X2Nv
bHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291
dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRf
dGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0Piog
b3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1
ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4q
IG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmlu
dENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBp
bl9xdWVyeSwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFt
ZXMsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgb3B0X291dF9ub3Rlcywgc3RkOjpvcHRpb25hbDxk
b3VibGU+JiBvcHRfb3V0X3RpbWVzdGFtcCwgc3RkOjpvcHRpb25hbDxKU09OOjpPYmplY3Q+JiBv
cHRfb3V0X3ZhbHVlcywgc3RkOjpvcHRpb25hbDxKU09OOjpWYWx1ZT4mIG9wdF9vdXRfcGF5bG9h
ZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRf
b3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxB
c3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNP
cHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50
IGlkKTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5n
Piogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3Rh
bXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiB2YWx1ZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIHBheWxvYWQsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpOworICAgICAg
ICB2b2lkIHNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgY29sdW1u
TmFtZXMsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiYgdGltZXN0YW1wLCBzdGQ6Om9wdGlvbmFsPEpTT046Ok9iamVjdD4mIHZhbHVlcywgc3RkOjpv
cHRpb25hbDxKU09OOjpWYWx1ZT4mIHBheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYgZGF0YWJh
c2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxF
cnJvciwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4mIHByaW50Q29sb3IpOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGlu
X2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNP
cHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNv
bnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBvdXRf
Y29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEpT
T046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91
dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiYgb3V0X3NxbEVycm9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNv
bG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwpAQCAtMjk1LDM4
ICsyOTUsMzggQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgcmVxdWVzdEkKICAgICBFcnJvclN0cmluZyBlcnJv
cjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXN1bHQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKLSAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfbm90ZXM7Ci0gICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKLSAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiBvdXRfdmFsdWVz
OwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4gb3V0X3Bh
eWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4gb3V0X2RhdGFi
YXNlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG91dF9ub3RlczsKKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTT046Ok9i
amVjdD4gb3V0X3ZhbHVlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTT046OlZhbHVlPiBvdXRfcGF5
bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gb3V0X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5D
b2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKICAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKLSAgICBtX2FnZW50LT5leGVjdXRlU1FM
U3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVycm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwg
b3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywg
Jm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5D
b2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmludENvbG9yKTsKKyAgICBtX2FnZW50
LT5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVycm9yLCBpbl9kYXRhYmFzZUlk
LCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCBvdXRfbm90ZXMsIG91dF90aW1lc3RhbXAsIG91
dF92YWx1ZXMsIG91dF9wYXlsb2FkLCBvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCBvdXRf
c2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsIG91dF9wcmludENvbG9yKTsKIAogICAg
IGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKG91dF9jb2x1bW5OYW1lcykKICAg
ICAgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBv
dXRfY29sdW1uTmFtZXMpOwotICAgICAgICBpZiAob3V0X25vdGVzLmlzQXNzaWduZWQoKSkKLSAg
ICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgb3V0X25v
dGVzLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAob3V0X3RpbWVzdGFtcC5pc0Fzc2lnbmVkKCkp
Ci0gICAgICAgICAgICByZXN1bHQtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIp
LCBvdXRfdGltZXN0YW1wLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAob3V0X3ZhbHVlcy5pc0Fz
c2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZh
bHVlcyIpLCBvdXRfdmFsdWVzLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAob3V0X3BheWxvYWQu
aXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwo
InBheWxvYWQiKSwgb3V0X3BheWxvYWQuZ2V0VmFsdWUoKSk7Ci0gICAgICAgIGlmIChvdXRfZGF0
YWJhc2VJZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldEludGVnZXIoQVND
SUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG91dF9kYXRhYmFzZUlkLmdldFZhbHVlKCkpOworICAg
ICAgICBpZiAob3V0X25vdGVzLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAqb3V0X25vdGVzKTsKKyAgICAgICAgaWYgKG91
dF90aW1lc3RhbXAuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldERvdWJsZShB
U0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAqb3V0X3RpbWVzdGFtcCk7CisgICAgICAgIGlmIChv
dXRfdmFsdWVzLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVND
SUlMaXRlcmFsKCJ2YWx1ZXMiKSwgKm91dF92YWx1ZXMpOworICAgICAgICBpZiAob3V0X3BheWxv
YWQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFZhbHVlKEFTQ0lJTGl0ZXJh
bCgicGF5bG9hZCIpLCAqb3V0X3BheWxvYWQpOworICAgICAgICBpZiAob3V0X2RhdGFiYXNlSWQu
aGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFs
KCJkYXRhYmFzZUlkIiksICpvdXRfZGF0YWJhc2VJZCk7CiAgICAgICAgIGlmIChvdXRfc3FsRXJy
b3IpCiAgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9y
IiksIG91dF9zcWxFcnJvcik7Ci0gICAgICAgIGlmIChvdXRfc2NyZWVuQ29sb3IuaXNBc3NpZ25l
ZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5D
b2xvciIpLCBvdXRfc2NyZWVuQ29sb3IuZ2V0VmFsdWUoKSk7CisgICAgICAgIGlmIChvdXRfc2Ny
ZWVuQ29sb3IuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJ
SUxpdGVyYWwoInNjcmVlbkNvbG9yIiksICpvdXRfc2NyZWVuQ29sb3IpOwogICAgICAgICBpZiAo
b3V0X2FsdGVybmF0ZUNvbG9ycykKICAgICAgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoQVNDSUlM
aXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgb3V0X2FsdGVybmF0ZUNvbG9ycyk7Ci0gICAgICAg
IGlmIChvdXRfcHJpbnRDb2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgb3V0X3ByaW50Q29sb3IuZ2V0VmFs
dWUoKSk7CisgICAgICAgIGlmIChvdXRfcHJpbnRDb2xvci5oYXNfdmFsdWUoKSkKKyAgICAgICAg
ICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAqb3V0X3By
aW50Q29sb3IpOwogICAgIH0KICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKQogICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdCks
IGZhbHNlKTsKQEAgLTMzNiwyOSArMzM2LDI5IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJCiAK
IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50
IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5kRGlz
cGF0Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nl
c3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8SlNPTjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4q
IHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9y
TGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxT
dHJpbmc+KiBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nl
c3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgc3RkOjpvcHRp
b25hbDxTdHJpbmc+JiBub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiB0aW1lc3RhbXAsIHN0
ZDo6b3B0aW9uYWw8SlNPTjo6T2JqZWN0PiYgdmFsdWVzLCBzdGQ6Om9wdGlvbmFsPEpTT046OlZh
bHVlPiYgcGF5bG9hZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4mIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgaWYgKGNvbHVtbk5hbWVzKQogICAgICAgICBqc29u
TWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBjb2x1bW5OYW1l
cyk7Ci0gICAgaWYgKG5vdGVzLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNvbk1lc3NhZ2UtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG5vdGVzLmdldFZhbHVlKCkpOwotICAgIGlm
ICh0aW1lc3RhbXAuaXNBc3NpZ25lZCgpKQotICAgICAgICBqc29uTWVzc2FnZS0+c2V0RG91Ymxl
KEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKLSAgICBp
ZiAodmFsdWVzLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChB
U0NJSUxpdGVyYWwoInZhbHVlcyIpLCB2YWx1ZXMuZ2V0VmFsdWUoKSk7Ci0gICAgaWYgKHBheWxv
YWQuaXNBc3NpZ25lZCgpKQotICAgICAgICBqc29uTWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRl
cmFsKCJwYXlsb2FkIiksIHBheWxvYWQuZ2V0VmFsdWUoKSk7Ci0gICAgaWYgKGRhdGFiYXNlSWQu
aXNBc3NpZ25lZCgpKQotICAgICAgICBqc29uTWVzc2FnZS0+c2V0SW50ZWdlcihBU0NJSUxpdGVy
YWwoImRhdGFiYXNlSWQiKSwgZGF0YWJhc2VJZC5nZXRWYWx1ZSgpKTsKKyAgICBpZiAobm90ZXMu
aGFzX3ZhbHVlKCkpCisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJub3RlcyIpLCAqbm90ZXMpOworICAgIGlmICh0aW1lc3RhbXAuaGFzX3ZhbHVlKCkpCisgICAg
ICAgIGpzb25NZXNzYWdlLT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgKnRp
bWVzdGFtcCk7CisgICAgaWYgKHZhbHVlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAganNvbk1lc3Nh
Z2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAqdmFsdWVzKTsKKyAgICBpZiAo
cGF5bG9hZC5oYXNfdmFsdWUoKSkKKyAgICAgICAganNvbk1lc3NhZ2UtPnNldFZhbHVlKEFTQ0lJ
TGl0ZXJhbCgicGF5bG9hZCIpLCAqcGF5bG9hZCk7CisgICAgaWYgKGRhdGFiYXNlSWQuaGFzX3Zh
bHVlKCkpCisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0
YWJhc2VJZCIpLCAqZGF0YWJhc2VJZCk7CiAgICAgaWYgKHNxbEVycm9yKQogICAgICAgICBqc29u
TWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgc3FsRXJyb3IpOwot
ICAgIGlmIChzY3JlZW5Db2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAgIGpzb25NZXNzYWdlLT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBzY3JlZW5Db2xvci5nZXRWYWx1
ZSgpKTsKKyAgICBpZiAoc2NyZWVuQ29sb3IuaGFzX3ZhbHVlKCkpCisgICAgICAgIGpzb25NZXNz
YWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCAqc2NyZWVuQ29sb3Ip
OwogICAgIGlmIChhbHRlcm5hdGVDb2xvcnMpCiAgICAgICAgIGpzb25NZXNzYWdlLT5zZXRBcnJh
eShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBhbHRlcm5hdGVDb2xvcnMpOwotICAg
IGlmIChwcmludENvbG9yLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNvbk1lc3NhZ2UtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgcHJpbnRDb2xvci5nZXRWYWx1ZSgpKTsK
KyAgICBpZiAocHJpbnRDb2xvci5oYXNfdmFsdWUoKSkKKyAgICAgICAganNvbk1lc3NhZ2UtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgKnByaW50Q29sb3IpOwogICAgIENh
bGxiYWNrQmFzZTo6c2VuZFN1Y2Nlc3MoV1RGTW92ZShqc29uTWVzc2FnZSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggMmU3NTgzODE3MzFhYjgxYzYwMTdmODA4Yzli
MmE1NTY2MTg0ZmQ2Ny4uZDRiMTEyMTk3NWIxMmNiN2E0OTlhYThlMjA1MjIwYjNlNjM2ZTk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2Fs
bC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtODksNyArODksNyBAQCBwcml2YXRl
OgogY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJuYXRl
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
QWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBKU09OOjpBcnJheSogaW5f
Y29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSog
Y29uc3QgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIGluX3ZhbHVlcywgY29uc3Qg
SlNPTjo6VmFsdWUqIGNvbnN0IGluX3BheWxvYWQsIGNvbnN0IGludCogY29uc3QgaW5fZGF0YWJh
c2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25z
dCBpbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nKiBjb25zdCBpbl9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEpTT046OkFy
cmF5KiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91Ymxl
KiBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09O
OjpWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09O
OjpPYmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25z
dCBKU09OOjpBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50
Q29sb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
KGxvbmcgY2FsbElkLCBjb25zdCBKU09OOjpBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCYg
aW5fdmFsdWVzLCBKU09OOjpWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29u
c3QgSlNPTjo6T2JqZWN0JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xv
ciwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBp
bl9wcmludENvbG9yKSA9IDA7CiB9OwogCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAg
ICAgICBZZWxsb3cgPSA1LAogICAgICAgICBCbGFjayA9IDYsCiAgICAgfTsgLy8gZW51bSBjbGFz
cyBQcmludENvbG9yCi0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSogb3B0X2luX2NvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9ub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCBvcHRf
aW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl92YWx1ZXMsIGNvbnN0IEpT
T046OlZhbHVlKiBjb25zdCBvcHRfaW5fcGF5bG9hZCwgY29uc3QgaW50KiBjb25zdCBvcHRfaW5f
ZGF0YWJhc2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRfaW5fc3FsRXJyb3IsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0X2luX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogb3B0X2lu
X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRfaW5fcHJpbnRDb2xvciwg
UmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogb3B0X291dF9wYXls
b2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFz
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291
dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMq
IG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYs
IGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogb3B0
X2luX25vdGVzLCBjb25zdCBkb3VibGUqIG9wdF9pbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9i
amVjdCogb3B0X2luX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIG9wdF9pbl9wYXlsb2FkLCBj
b25zdCBpbnQqIG9wdF9pbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl9z
cWxFcnJvciwgY29uc3QgU3RyaW5nKiBvcHRfaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFy
cmF5KiBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIG9wdF9pbl9wcmludENv
bG9yLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+JiBvcHRfb3V0X25vdGVzLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4mIG9wdF9vdXRfdGltZXN0YW1wLCBzdGQ6Om9wdGlvbmFsPEpTT046Ok9iamVjdD4mIG9wdF9v
dXRfdmFsdWVzLCBzdGQ6Om9wdGlvbmFsPEpTT046OlZhbHVlPiYgb3B0X291dF9wYXlsb2FkLCBz
dGQ6Om9wdGlvbmFsPGludD4mIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRf
YWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRD
b2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5JiBpbl9j
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwg
Y29uc3QgSlNPTjo6T2JqZWN0JiBpbl92YWx1ZXMsIEpTT046OlZhbHVlIGluX3BheWxvYWQsIGlu
dCBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3NxbEVycm9yLCBjb25zdCBT
dHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSYgaW5fYWx0ZXJuYXRlQ29s
b3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0
cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90
aW1lc3RhbXAsIEpTT046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXls
b2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAw
OwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKCk7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWYKICAgICBi
b29sIG9wdF9pbl9ub3Rlc192YWx1ZUZvdW5kID0gZmFsc2U7CiAgICAgU3RyaW5nIG9wdF9pbl9u
b3RlcyA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldFN0cmluZyhwYXJhbWV0ZXJzLmdldCgpLCBB
U0NJSUxpdGVyYWwoIm5vdGVzIiksICZvcHRfaW5fbm90ZXNfdmFsdWVGb3VuZCk7CiAgICAgYm9v
bCBvcHRfaW5fdGltZXN0YW1wX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBvcHRfaW5fdGltZXN0YW1wID0gbV9iYWNrZW5kRGlz
cGF0Y2hlci0+Z2V0RG91YmxlKHBhcmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0
YW1wIiksICZvcHRfaW5fdGltZXN0YW1wX3ZhbHVlRm91bmQpOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBvcHRfaW5fdGltZXN0YW1wID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0RG91Ymxl
KHBhcmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZvcHRfaW5fdGlt
ZXN0YW1wX3ZhbHVlRm91bmQpOwogICAgIGJvb2wgb3B0X2luX3ZhbHVlc192YWx1ZUZvdW5kID0g
ZmFsc2U7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gb3B0X2luX3ZhbHVlcyA9IG1fYmFja2Vu
ZERpc3BhdGNoZXItPmdldE9iamVjdChwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoInZh
bHVlcyIpLCAmb3B0X2luX3ZhbHVlc192YWx1ZUZvdW5kKTsKICAgICBib29sIG9wdF9pbl9wYXls
b2FkX3ZhbHVlRm91bmQgPSBmYWxzZTsKQEAgLTI5MCwzOCArMjkwLDM4IEBAIHZvaWQgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJl
cXVlc3RJZCwgUmVmCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEpTT046Ok9iamVj
dD4gcmVzdWx0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PFN0cmluZz4gb3V0X25vdGVzOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxkb3VibGU+IG91dF90aW1lc3RhbXA7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PEpTT046Ok9iamVjdD4gb3V0X3ZhbHVlczsKLSAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOwotICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+IG91dF9kYXRhYmFzZUlkOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBvdXRfbm90ZXM7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG91dF90aW1l
c3RhbXA7CisgICAgc3RkOjpvcHRpb25hbDxKU09OOjpPYmplY3Q+IG91dF92YWx1ZXM7CisgICAg
c3RkOjpvcHRpb25hbDxKU09OOjpWYWx1ZT4gb3V0X3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IG91dF9kYXRhYmFzZUlkOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7
CiAgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3By
aW50Q29sb3I7Ci0gICAgbV9hZ2VudC0+ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhlcnJv
ciwgb3B0X2luX2NvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBvcHRfaW5fY29sdW1uTmFtZXMuZ2V0
KCkgOiBudWxscHRyLCBvcHRfaW5fbm90ZXNfdmFsdWVGb3VuZCA/ICZvcHRfaW5fbm90ZXMgOiBu
dWxscHRyLCBvcHRfaW5fdGltZXN0YW1wX3ZhbHVlRm91bmQgPyAmb3B0X2luX3RpbWVzdGFtcCA6
IG51bGxwdHIsIG9wdF9pbl92YWx1ZXNfdmFsdWVGb3VuZCA/IG9wdF9pbl92YWx1ZXMuZ2V0KCkg
OiBudWxscHRyLCBvcHRfaW5fcGF5bG9hZF92YWx1ZUZvdW5kID8gb3B0X2luX3BheWxvYWQuZ2V0
KCkgOiBudWxscHRyLCBvcHRfaW5fZGF0YWJhc2VJZF92YWx1ZUZvdW5kID8gJm9wdF9pbl9kYXRh
YmFzZUlkIDogbnVsbHB0ciwgb3B0X2luX3NxbEVycm9yX3ZhbHVlRm91bmQgPyBvcHRfaW5fc3Fs
RXJyb3IuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA/ICZv
cHRfaW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzX3ZhbHVl
Rm91bmQgPyBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3By
aW50Q29sb3JfdmFsdWVGb3VuZCA/ICZvcHRfaW5fcHJpbnRDb2xvciA6IG51bGxwdHIsIG91dF9j
b2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRf
cGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3Is
IG91dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfcHJpbnRDb2xvcik7CisgICAgbV9hZ2VudC0+ZXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhlcnJvciwgb3B0X2luX2NvbHVtbk5hbWVzX3ZhbHVl
Rm91bmQgPyBvcHRfaW5fY29sdW1uTmFtZXMuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fbm90ZXNf
dmFsdWVGb3VuZCA/ICZvcHRfaW5fbm90ZXMgOiBudWxscHRyLCBvcHRfaW5fdGltZXN0YW1wX3Zh
bHVlRm91bmQgPyAmb3B0X2luX3RpbWVzdGFtcCA6IG51bGxwdHIsIG9wdF9pbl92YWx1ZXNfdmFs
dWVGb3VuZCA/IG9wdF9pbl92YWx1ZXMuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fcGF5bG9hZF92
YWx1ZUZvdW5kID8gb3B0X2luX3BheWxvYWQuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fZGF0YWJh
c2VJZF92YWx1ZUZvdW5kID8gJm9wdF9pbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgb3B0X2luX3Nx
bEVycm9yX3ZhbHVlRm91bmQgPyBvcHRfaW5fc3FsRXJyb3IuZ2V0KCkgOiBudWxscHRyLCBvcHRf
aW5fc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA/ICZvcHRfaW5fc2NyZWVuQ29sb3IgOiBudWxscHRy
LCBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQgPyBvcHRfaW5fYWx0ZXJuYXRlQ29s
b3JzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3ByaW50Q29sb3JfdmFsdWVGb3VuZCA/ICZvcHRf
aW5fcHJpbnRDb2xvciA6IG51bGxwdHIsIG91dF9jb2x1bW5OYW1lcywgb3V0X25vdGVzLCBvdXRf
dGltZXN0YW1wLCBvdXRfdmFsdWVzLCBvdXRfcGF5bG9hZCwgb3V0X2RhdGFiYXNlSWQsIG91dF9z
cWxFcnJvciwgb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBvdXRfcHJpbnRD
b2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CiAgICAgICAgIGlmIChvdXRfY29s
dW1uTmFtZXMpCiAgICAgICAgICAgICByZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29s
dW1uTmFtZXMiKSwgb3V0X2NvbHVtbk5hbWVzKTsKLSAgICAgICAgaWYgKG91dF9ub3Rlcy5pc0Fz
c2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5v
dGVzIiksIG91dF9ub3Rlcy5nZXRWYWx1ZSgpKTsKLSAgICAgICAgaWYgKG91dF90aW1lc3RhbXAu
aXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFs
KCJ0aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKLSAgICAgICAgaWYgKG91
dF92YWx1ZXMuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVND
SUlMaXRlcmFsKCJ2YWx1ZXMiKSwgb3V0X3ZhbHVlcy5nZXRWYWx1ZSgpKTsKLSAgICAgICAgaWYg
KG91dF9wYXlsb2FkLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0VmFsdWUo
QVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91dF9wYXlsb2FkLmdldFZhbHVlKCkpOwotICAgICAg
ICBpZiAob3V0X2RhdGFiYXNlSWQuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5z
ZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZC5nZXRW
YWx1ZSgpKTsKKyAgICAgICAgaWYgKG91dF9ub3Rlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAg
IHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgKm91dF9ub3Rlcyk7Cisg
ICAgICAgIGlmIChvdXRfdGltZXN0YW1wLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0
LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgKm91dF90aW1lc3RhbXApOwor
ICAgICAgICBpZiAob3V0X3ZhbHVlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3VsdC0+
c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksICpvdXRfdmFsdWVzKTsKKyAgICAgICAg
aWYgKG91dF9wYXlsb2FkLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRWYWx1
ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgKm91dF9wYXlsb2FkKTsKKyAgICAgICAgaWYgKG91
dF9kYXRhYmFzZUlkLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRJbnRlZ2Vy
KEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCAqb3V0X2RhdGFiYXNlSWQpOwogICAgICAgICBp
ZiAob3V0X3NxbEVycm9yKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJzcWxFcnJvciIpLCBvdXRfc3FsRXJyb3IpOwotICAgICAgICBpZiAob3V0X3NjcmVlbkNv
bG9yLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgic2NyZWVuQ29sb3IiKSwgb3V0X3NjcmVlbkNvbG9yLmdldFZhbHVlKCkpOworICAgICAg
ICBpZiAob3V0X3NjcmVlbkNvbG9yLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCAqb3V0X3NjcmVlbkNvbG9yKTsK
ICAgICAgICAgaWYgKG91dF9hbHRlcm5hdGVDb2xvcnMpCiAgICAgICAgICAgICByZXN1bHQtPnNl
dEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIG91dF9hbHRlcm5hdGVDb2xv
cnMpOwotICAgICAgICBpZiAob3V0X3ByaW50Q29sb3IuaXNBc3NpZ25lZCgpKQotICAgICAgICAg
ICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIG91dF9wcmlu
dENvbG9yLmdldFZhbHVlKCkpOworICAgICAgICBpZiAob3V0X3ByaW50Q29sb3IuaGFzX3ZhbHVl
KCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29s
b3IiKSwgKm91dF9wcmludENvbG9yKTsKICAgICB9CiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkK
ICAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RG
TW92ZShyZXN1bHQpLCBmYWxzZSk7CkBAIC03NjMsNyArNzYzLDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiBjbGFzcyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5h
bCA6IHB1YmxpYyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
ICAgICBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9j
b2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJl
cXVlc3RJZCwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcq
IGNvbnN0IGluX25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IGluX3RpbWVzdGFtcCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVlKiBjb25zdCBpbl9wYXls
b2FkLCBjb25zdCBpbnQqIGNvbnN0IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCog
aW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpT
T046OkFycmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fcHJp
bnRDb2xvcikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEpTT046OkFycmF5KiBpbl9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNv
bnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSogaW5fcGF5bG9h
ZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QqIGluX3NxbEVy
cm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogaW5f
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0
SWQsIGNvbnN0IEpTT046OkFycmF5JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9u
b3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0JiBpbl92YWx1ZXMs
IEpTT046OlZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpP
YmplY3QmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBK
U09OOjpBcnJheSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29s
b3IpIG92ZXJyaWRlOwogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29sRGF0
YWJhc2VEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKQEAgLTgxMyw3ICs4MTMsNyBAQCBwcml2
YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJl
cXVlc3RJZCwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcq
IGNvbnN0IGluX25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IGluX3RpbWVzdGFtcCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVlKiBjb25zdCBpbl9wYXls
b2FkLCBjb25zdCBpbnQqIGNvbnN0IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCog
aW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpT
T046OkFycmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fcHJp
bnRDb2xvcikKK3ZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEpTT046OkFy
cmF5KiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91Ymxl
KiBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09O
OjpWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09O
OjpPYmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25z
dCBKU09OOjpBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50
Q29sb3IpCiB7CiAgICAgaWQgZXJyb3JDYWxsYmFjayA9IF4oTlNTdHJpbmcgKmVycm9yKSB7CiAg
ICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3IocmVxdWVzdElk
LCBCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9l
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDFkOTk2NmFh
NTE4YTVjZmEwZWE3MDUxNDc1MTE5ZDdlZjRkOGJjMjQuLjQ3ODYzN2NjNjY5MmRlNmMwMzI5MGRl
ZjE5Njc3ZmU0NzYwMDJlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwt
cGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEZyb250ZW5k
Um91dGVyOwogY2xhc3MgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIgewogcHVibGljOgogICAg
IERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyKEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRl
cikgOiBtX2Zyb250ZW5kUm91dGVyKGZyb250ZW5kUm91dGVyKSB7IH0KLSAgICB2b2lkIGRpZEV4
ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gY29s
dW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3Qg
dGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4g
c3FsRXJyb3IsIGNvbnN0IFN0cmluZyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0
IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcik7CisgICAgdm9pZCBkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25z
dCBTdHJpbmcqIG5vdGVzLCBjb25zdCBkb3VibGUqIHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9i
amVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcqIHNj
cmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIHByaW50Q29sb3IpOwogICAgIHZvaWQg
ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmlu
Zz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNv
bnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xv
cik7CiBwcml2YXRlOgogICAgIEZyb250ZW5kUm91dGVyJiBtX2Zyb250ZW5kUm91dGVyOwpAQCAt
MjgyLDcgKzI4Miw3IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi12b2lk
IERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJz
KFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcq
IGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUmVmUHRyPEpTT046
Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcq
IGNvbnN0IHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29s
b3IpCit2b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25z
dCBTdHJpbmcqIG5vdGVzLCBjb25zdCBkb3VibGUqIHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9i
amVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcqIHNj
cmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIHByaW50Q29sb3IpCiB7CiAgICAgUmVm
PEpTT046Ok9iamVjdD4ganNvbk1lc3NhZ2UgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVNDSUlMaXRl
cmFsKCJEYXRhYmFzZS5kaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggMmQwMzE1NzAw
YTY2MThiOWFiMjg2NmRmMGZhNzMxOWE2ZGY1MTQyNi4uMmE3ZTBlYmRkODA3ZjIwZGJmYmRkZTAw
ZjJiNjA3N2E2NGRmNzdiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGlt
ZS1jYXN0cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNh
c3RzLmpzb24tcmVzdWx0CkBAIC01NTksMjUgKzU1OSwxNyBAQCBwdWJsaWM6CiB9IC8vIFRlc3QK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpU
ZXN0OjpDYXN0ZWRBbmltYWxzPiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogc3RhdGljIHZvaWQg
YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqKTsKLSNlbmRpZiAvLyAhQVNT
RVJUX0RJU0FCTEVECiB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0
b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IHsKIHN0YXRpYyBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBydW50aW1lQ2FzdChSZWZQ
dHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKIHN0YXRpYyB2
b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKik7Ci0jZW5kaWYgLy8g
IUFTU0VSVF9ESVNBQkxFRAogfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT4gewotI2lmICFBU1NFUlRf
RElTQUJMRUQKIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZh
bHVlKik7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogfTsKIHRlbXBsYXRlPD4gc3RydWN0
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0
Mj4gewotI2lmICFBU1NFUlRfRElTQUJMRUQKIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhw
ZWN0ZWRUeXBlKEpTT046OlZhbHVlKik7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogfTsK
IAogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKQEAgLTcwNCwzNSArNjk2LDM3IEBAIHZvaWQgQmlu
ZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNz
ZXJ0VmFsdWVIYXNFeHBlCiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAogdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRl
c3Q6OlR5cGVOZWVkaW5nQ2FzdD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZh
bHVlKiB2YWx1ZSkKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0odmFsdWUp
OworI2Vsc2UKIHsKICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgUmVmUHRyPEpT
T046Ok9iamVjdD4gb2JqZWN0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09i
amVjdChvYmplY3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2Nl
ZWRlZCk7CiAgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yIHN0cmluZ1BvcyA9
IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoInN0cmluZyIpKTsKKyAgICAgICAgYXV0byBzdHJp
bmdQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJzdHJpbmciKSk7CiAgICAgICAgIEFT
U0VSVChzdHJpbmdQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgIEJpbmRpbmdUcmFpdHM8
U3RyaW5nPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoc3RyaW5nUG9zLT52YWx1ZS5nZXQo
KSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciBudW1iZXJQ
b3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJudW1iZXIiKSk7CisgICAgICAgIGF1dG8g
bnVtYmVyUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgibnVtYmVyIikpOwogICAgICAg
ICBBU1NFUlQobnVtYmVyUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgICBCaW5kaW5nVHJh
aXRzPGludD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG51bWJlclBvcy0+dmFsdWUuZ2V0
KCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0b3IgYW5pbWFs
c1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoImFuaW1hbHMiKSk7CisgICAgICAgIGF1
dG8gYW5pbWFsc1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoImFuaW1hbHMiKSk7CiAg
ICAgICAgIEFTU0VSVChhbmltYWxzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgICBCaW5k
aW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+Ojphc3Nl
cnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhbmltYWxzUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciBpZFBvcyA9IG9iamVjdC0+Zmlu
ZChBU0NJSUxpdGVyYWwoImlkIikpOworICAgICAgICBhdXRvIGlkUG9zID0gb2JqZWN0LT5maW5k
KEFTQ0lJTGl0ZXJhbCgiaWQiKSk7CiAgICAgICAgIEFTU0VSVChpZFBvcyAhPSBvYmplY3QtPmVu
ZCgpKTsKICAgICAgICAgQmluZGluZ1RyYWl0czxpbnQ+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZShpZFBvcy0+dmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEpTT046Ok9i
amVjdDo6aXRlcmF0b3IgdHJlZVBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoInRyZWUi
KSk7CisgICAgICAgIGF1dG8gdHJlZVBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoInRy
ZWUiKSk7CiAgICAgICAgIEFTU0VSVCh0cmVlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAg
ICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVj
dDE+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZSh0cmVlUG9zLT52YWx1ZS5nZXQoKSk7CiAg
ICAgfQpAQCAtNzQwLDI0ICs3MzQsMjQgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OmFzc2VydFZhbHVlSGFzRXgKICAgICBp
bnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSA1OwogICAgIGlmIChmb3VuZFByb3BlcnRpZXNDb3Vu
dCAhPSBvYmplY3QtPnNpemUoKSkKICAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJvcGVydGll
cyBpbiBvYmplY3Q6ICVzXG4iLCBvYmplY3QtPnRvSlNPTlN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKLX0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9CiAKIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6cnVudGltZUNhc3QoUmVmUHRyPEpT
T046OlZhbHVlPiYmIHZhbHVlKQogewogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJlc3VsdDsK
ICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3QocmVzdWx0KTsKICAgICBB
U1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwotI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5
cGVOZWVkaW5nQ2FzdD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKHJlc3VsdC5nZXQoKSk7
Ci0jZW5kaWYgIC8vICFBU1NFUlRfRElTQUJMRUQKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0KSA9PSBzaXplb2YoSlNP
Tjo6T2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Kj4oc3RhdGljX2Nh
c3Q8SlNPTjo6T2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQoKSkpOwogfQogCiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECiB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVl
KiB2YWx1ZSkKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwor
I2Vsc2UKIHsKICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gb2JqZWN0OwpAQCAtNzY2LDcgKzc2MCw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJ
bnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVI
YXNFCiAKICAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAwOwogICAgIHsKLSAgICAgICAg
SlNPTjo6T2JqZWN0OjppdGVyYXRvciBvYmpQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFs
KCJvYmoiKSk7CisgICAgICAgIGF1dG8gb2JqUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJh
bCgib2JqIikpOwogICAgICAgICBpZiAob2JqUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAg
ICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZl
T2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9ialBvcy0+dmFsdWUuZ2V0KCkp
OwogICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKQEAgLTc3NCwxMSArNzY4LDEz
IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNp
dmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNFCiAgICAgfQogICAgIGlmIChmb3VuZFByb3BlcnRp
ZXNDb3VudCAhPSBvYmplY3QtPnNpemUoKSkKICAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJv
cGVydGllcyBpbiBvYmplY3Q6ICVzXG4iLCBvYmplY3QtPnRvSlNPTlN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKLX0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECiB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVl
KiB2YWx1ZSkKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwor
I2Vsc2UKIHsKICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gb2JqZWN0OwpAQCAtNzg3LDcgKzc4Myw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJ
bnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNzZXJ0VmFsdWVI
YXNFCiAKICAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAwOwogICAgIHsKLSAgICAgICAg
SlNPTjo6T2JqZWN0OjppdGVyYXRvciBvYmpQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFs
KCJvYmoiKSk7CisgICAgICAgIGF1dG8gb2JqUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJh
bCgib2JqIikpOwogICAgICAgICBpZiAob2JqUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAg
ICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZl
T2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9ialBvcy0+dmFsdWUuZ2V0KCkp
OwogICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKQEAgLTc5NSw4ICs3OTEsOCBA
QCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZl
T2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRQogICAgIH0KICAgICBpZiAoZm91bmRQcm9wZXJ0aWVz
Q291bnQgIT0gb2JqZWN0LT5zaXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3Bl
cnRpZXMgaW4gb2JqZWN0OiAlc1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7Ci19CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorfQogCiB9IC8vIG5hbWVzcGFj
ZSBQcm90b2NvbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKaW5kZXggOGViNGM2MmMyMjYzMGJhY2UyZGQ3ZDIwNDZiN2ZlMzQ5MDA3Mjdh
NS4uOWQ5ODU4MTljYjNkNDQyNDYzYWI3NTFjNjk2ZDRkYzlmMDU2MzJjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzg1LDEy
ICszODUsMTMgQEAgZW51bSBNZWRpYUxpc3RTb3VyY2UgewogICAgIE1lZGlhTGlzdFNvdXJjZUlt
cG9ydFJ1bGUKIH07CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
b3VyY2VSYW5nZT4gYnVpbGRTb3VyY2VSYW5nZU9iamVjdChjb25zdCBTb3VyY2VSYW5nZSYgcmFu
Z2UsIFZlY3RvcjxzaXplX3Q+KiBsaW5lRW5kaW5ncywgaW50KiBlbmRpbmdMaW5lID0gbnVsbHB0
cikKK3N0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTb3VyY2VSYW5nZT4g
YnVpbGRTb3VyY2VSYW5nZU9iamVjdChjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UsIGNvbnN0IFZl
Y3RvcjxzaXplX3Q+JiBsaW5lRW5kaW5ncywgaW50KiBlbmRpbmdMaW5lID0gbnVsbHB0cikKIHsK
LSAgICBpZiAoIWxpbmVFbmRpbmdzKQorICAgIGlmIChsaW5lRW5kaW5ncy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFRleHRQb3NpdGlvbiBzdGFydCA9IENvbnRlbnRT
ZWFyY2hVdGlsaXRpZXM6OnRleHRQb3NpdGlvbkZyb21PZmZzZXQocmFuZ2Uuc3RhcnQsICpsaW5l
RW5kaW5ncyk7Ci0gICAgVGV4dFBvc2l0aW9uIGVuZCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OnRleHRQb3NpdGlvbkZyb21PZmZzZXQocmFuZ2UuZW5kLCAqbGluZUVuZGluZ3MpOworCisgICAg
VGV4dFBvc2l0aW9uIHN0YXJ0ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6dGV4dFBvc2l0aW9u
RnJvbU9mZnNldChyYW5nZS5zdGFydCwgbGluZUVuZGluZ3MpOworICAgIFRleHRQb3NpdGlvbiBl
bmQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdl
LmVuZCwgbGluZUVuZGluZ3MpOwogCiAgICAgaWYgKGVuZGluZ0xpbmUpCiAgICAgICAgICplbmRp
bmdMaW5lID0gZW5kLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKQEAgLTU0Myw3ICs1NDQsNyBAQCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6
OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKQogCiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBz
b3VyY2VEYXRhID0gZXh0cmFjdFNvdXJjZURhdGEoKTsKICAgICBpZiAoc291cmNlRGF0YSkKLSAg
ICAgICAgcmVzdWx0LT5zZXRSYW5nZShidWlsZFNvdXJjZVJhbmdlT2JqZWN0KHNvdXJjZURhdGEt
PnJ1bGVCb2R5UmFuZ2UsIG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3MoKS5nZXQoKSkp
OworICAgICAgICByZXN1bHQtPnNldFJhbmdlKGJ1aWxkU291cmNlUmFuZ2VPYmplY3Qoc291cmNl
RGF0YS0+cnVsZUJvZHlSYW5nZSwgbV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpKSk7
CiAKICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQpAQCAtNjI1LDcgKzYyNiw3IEBAIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5
bGVXaXRoUHJvcGVydGllcygpIGNvCiAgICAgSGFzaFNldDxTdHJpbmc+IGZvdW5kU2hvcnRoYW5k
czsKICAgICBTdHJpbmcgcHJldmlvdXNQcmlvcml0eTsKICAgICBTdHJpbmcgcHJldmlvdXNTdGF0
dXM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhtX3Bh
cmVudFN0eWxlU2hlZXQgPyBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkgOiBudWxs
cHRyKTsKKyAgICBWZWN0b3I8c2l6ZV90PiBsaW5lRW5kaW5ncyA9IG1fcGFyZW50U3R5bGVTaGVl
dCA/IG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3MoKSA6IFZlY3RvcjxzaXplX3Q+IHsg
fTsKICAgICBhdXRvIHNvdXJjZURhdGEgPSBleHRyYWN0U291cmNlRGF0YSgpOwogICAgIHVuc2ln
bmVkIHJ1bGVCb2R5UmFuZ2VTdGFydCA9IHNvdXJjZURhdGEgPyBzb3VyY2VEYXRhLT5ydWxlQm9k
eVJhbmdlLnN0YXJ0IDogMDsKIApAQCAtNjY3LDcgKzY2OCw3IEBAIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGll
cygpIGNvCiAgICAgICAgICAgICBTb3VyY2VSYW5nZSBhYnNvbHV0ZVByb3BlcnR5UmFuZ2UgPSBw
cm9wZXJ0eUVudHJ5LnJhbmdlOwogICAgICAgICAgICAgYWJzb2x1dGVQcm9wZXJ0eVJhbmdlLnN0
YXJ0ICs9IHJ1bGVCb2R5UmFuZ2VTdGFydDsKICAgICAgICAgICAgIGFic29sdXRlUHJvcGVydHlS
YW5nZS5lbmQgKz0gcnVsZUJvZHlSYW5nZVN0YXJ0OwotICAgICAgICAgICAgcHJvcGVydHktPnNl
dFJhbmdlKGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoYWJzb2x1dGVQcm9wZXJ0eVJhbmdlLCBsaW5l
RW5kaW5ncy5nZXQoKSkpOworICAgICAgICAgICAgcHJvcGVydHktPnNldFJhbmdlKGJ1aWxkU291
cmNlUmFuZ2VPYmplY3QoYWJzb2x1dGVQcm9wZXJ0eVJhbmdlLCBsaW5lRW5kaW5ncykpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKCFpdC0+ZGlzYWJsZWQpIHsKQEAgLTExNDksNyArMTE1MCw3
IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTCiAgICAgICAgIC5zZXRUZXh0KHNlbGVjdG9yVGV4
dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNlRGF0YSkKLSAgICAgICAgcmVz
dWx0LT5zZXRSYW5nZShidWlsZFNvdXJjZVJhbmdlT2JqZWN0KHNvdXJjZURhdGEtPnJ1bGVIZWFk
ZXJSYW5nZSwgbGluZUVuZGluZ3MoKS5nZXQoKSwgJmVuZGluZ0xpbmUpKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRSYW5nZShidWlsZFNvdXJjZVJhbmdlT2JqZWN0KHNvdXJjZURhdGEtPnJ1bGVIZWFk
ZXJSYW5nZSwgbGluZUVuZGluZ3MoKSwgJmVuZGluZ0xpbmUpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0xMjgyLDEwICsxMjgzLDEwIEBAIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4g
SW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhCiAg
ICAgcmV0dXJuIG1fcGFyc2VkU3R5bGVTaGVldC0+cnVsZVNvdXJjZURhdGFBdChydWxlSW5kZXhC
eVN0eWxlKHN0eWxlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gSW5z
cGVjdG9yU3R5bGVTaGVldDo6bGluZUVuZGluZ3MoKSBjb25zdAorVmVjdG9yPHNpemVfdD4gSW5z
cGVjdG9yU3R5bGVTaGVldDo6bGluZUVuZGluZ3MoKSBjb25zdAogewogICAgIGlmICghbV9wYXJz
ZWRTdHlsZVNoZWV0LT5oYXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIHJldHVybiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpsaW5lRW5k
aW5ncyhtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSk7CiB9CiAKQEAgLTE1MjQsNyArMTUyNSw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGU6OmxpbmVFbmRpbmdzKCkgY29uc3QKK1ZlY3RvcjxzaXplX3Q+IEluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZTo6bGluZUVuZGluZ3MoKSBjb25zdAogewogICAgIHJldHVybiBDb250
ZW50U2VhcmNoVXRpbGl0aWVzOjpsaW5lRW5kaW5ncyhlbGVtZW50U3R5bGVUZXh0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXgg
ZTAxOWVmYTFkYzFjZWU5ZmQ2OGFhNWVkNThhOWYzMDA3ZmFmNGFjYS4uMzJjZWM5ZWVhMzI1YmY4
YjZmNmIwN2ZkOTc1MzAxYjMxZTQyMzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgLy8gQWxzbyBhY2Nlc3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUuCiAg
ICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNsYXJh
dGlvbiosIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxzaXplX3Q+PiBsaW5lRW5kaW5ncygpIGNvbnN0OworICAgIHZpcnR1YWwgVmVjdG9yPHNpemVf
dD4gbGluZUVuZGluZ3MoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVSdWxlPj4gQ1NTU3R5bGVSdWxlVmVjdG9yOwpAQCAtMjQ2LDcgKzI0Niw3
IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkgZnJpZW5kIGNsYXNzIElu
c3BlY3RvclN0eWxlLgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0eWxlVGV4dChDU1NTdHls
ZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncygpIGNvbnN0IGZpbmFsOworICAgIFZlY3Rvcjxz
aXplX3Q+IGxpbmVFbmRpbmdzKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgaW5saW5lU3R5bGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA4MGRhZjdhMTBh
OTdmYzNjY2NlYTlhNzc1Zjk1MTQ2OGNhZmUwOTczLi4zNTQ5NGZlNWM5MWJkMGQwM2U0M2U1MjQ3
NWE1YzIwMWE5MTIzMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVk
U3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogY29u
c3QgaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUluaGVyaXRlZCwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYg
bWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMp
IG92ZXJyaWRlOworICAgIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcm
LCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNs
dWRlSW5oZXJpdGVkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYg
aW5oZXJpdGVkRW50cmllcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhF
cnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZVNoZWV0SW5mb3MpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVl
dElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4m
IHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCmluZGV4IGJjM2VmYzYwMjE2ZTM0MDYyODE2MGI2Yzc0ZjYxN2YwOGU0
N2M1MmQuLjgzYzU0NWU0YmY3M2ViYzA4OWJkN2I5ZDI0NjczZjNjYTk3YzVlODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250ZXh0
QXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIENhbnZhc1JlbmRlcmluZ0MKICAg
ICByZXR1cm4geyB9OwogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXNvbHZlQ2Fu
dmFzQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FudmFz
SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNh
bnZhc0FnZW50OjpyZXNvbHZlQ2FudmFzQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7
CiAgICAgYXV0byogaW5zcGVjdG9yQ2FudmFzID0gYXNzZXJ0SW5zcGVjdG9yQ2FudmFzKGVycm9y
U3RyaW5nLCBjYW52YXNJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCkBAIC0yNjIsNyAr
MjYyLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzb2x2ZUNhbnZhc0NvbnRleHQo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIHJlc3VsdCA9IGluamVjdGVkU2Ny
aXB0LndyYXBPYmplY3QodmFsdWUsIG9iamVjdEdyb3VwTmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBjYW52YXNJZCwgY29uc3QgYm9vbCogY29uc3Qgc2luZ2xlRnJhbWUsIGNv
bnN0IGludCogY29uc3QgbWVtb3J5TGltaXQpCit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpz
dGFydFJlY29yZGluZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2Fu
dmFzSWQsIGNvbnN0IGJvb2wqIHNpbmdsZUZyYW1lLCBjb25zdCBpbnQqIG1lbW9yeUxpbWl0KQog
ewogICAgIGF1dG8qIGluc3BlY3RvckNhbnZhcyA9IGFzc2VydEluc3BlY3RvckNhbnZhcyhlcnJv
clN0cmluZywgY2FudmFzSWQpOwogICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
CmluZGV4IGY1ZTMyMzBlN2VmODRjODhjYjg2YzliNjQ4NmEzZjdlNGZkM2MwZWIuLjc3NWQyZDYz
MGI5ZjVhZmExMDE4ZWYwYjM2NzE4ZTYxNjMyYjY1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAgLTcyLDgg
KzcyLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNhbnZhc0lkLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1
ZXN0Q29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIFN0cmluZyog
Y29udGVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0Q1NTQ2FudmFzQ2xpZW50Tm9kZXMo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxpbnQ+PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzb2x2ZUNhbnZhc0NvbnRleHQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVj
dEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBjb25zdCBzaW5nbGVGcmFtZSwgY29uc3Qg
aW50KiBjb25zdCBtZW1vcnlMaW1pdCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNvbHZlQ2FudmFz
Q29udGV4dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFJlY29yZGluZyhFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IGJvb2wqIHNpbmdsZUZyYW1lLCBjb25z
dCBpbnQqIG1lbW9yeUxpbWl0KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
cXVlc3RTaGFkZXJTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHByb2dyYW1JZCwg
Y29uc3QgU3RyaW5nJiBzaGFkZXJUeXBlLCBTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2b2lkIHVw
ZGF0ZVNoYWRlcihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkLCBjb25zdCBT
dHJpbmcmIHNoYWRlclR5cGUsIGNvbnN0IFN0cmluZyYgc291cmNlKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDAzYThjM2NmN2M4NDEzMDc5Mzc4ODJjZjlmOThiZTA2
MDI0OTFjMGYuLjllOGI3MGIyZmM4YmU4ZmQ1OTFhZGE5Njc0ZDJiNWM2ZDJkOWQ2OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNDMsMTQgKzQzLDE0IEBACiBuYW1lc3BhY2Ugewog
CiBlbnVtIERPTUJyZWFrcG9pbnRUeXBlIHsKLSAgICBTdWJ0cmVlTW9kaWZpZWQgPSAwLAorICAg
IFN1YnRyZWVNb2RpZmllZCwKICAgICBBdHRyaWJ1dGVNb2RpZmllZCwKICAgICBOb2RlUmVtb3Zl
ZCwKICAgICBET01CcmVha3BvaW50VHlwZXNDb3VudAogfTsKIAotc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGxpc3RlbmVyRXZlbnRDYXRlZ29yeVR5cGUgPSAibGlzdGVuZXI6IjsKLXN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBpbnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSA9ICJpbnN0
cnVtZW50YXRpb246IjsKK3N0YXRpYyBjb25zdCBjaGFyIGxpc3RlbmVyRXZlbnRDYXRlZ29yeVR5
cGVbXSA9ICJsaXN0ZW5lcjoiOworc3RhdGljIGNvbnN0IGNoYXIgaW5zdHJ1bWVudGF0aW9uRXZl
bnRDYXRlZ29yeVR5cGVbXSA9ICJpbnN0cnVtZW50YXRpb246IjsKIAogY29uc3QgdWludDMyX3Qg
aW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrID0gKDEgPDwgU3VidHJlZU1vZGlmaWVk
KTsKIGNvbnN0IGludCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCA9IDE2OwpAQCAtMTIy
LDEyICsxMjIsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNjYXJkQmlu
ZGluZ3MoKQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUp
CiB7Ci0gICAgc2V0QnJlYWtwb2ludChlcnJvciwgU3RyaW5nKGxpc3RlbmVyRXZlbnRDYXRlZ29y
eVR5cGUpICsgZXZlbnROYW1lKTsKKyAgICBzZXRCcmVha3BvaW50KGVycm9yLCBsaXN0ZW5lckV2
ZW50Q2F0ZWdvcnlUeXBlICsgZXZlbnROYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJv
ciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgc2V0QnJlYWtwb2ludChlcnJvciwg
U3RyaW5nKGluc3RydW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBlKSArIGV2ZW50TmFtZSk7Cisg
ICAgc2V0QnJlYWtwb2ludChlcnJvciwgaW5zdHJ1bWVudGF0aW9uRXZlbnRDYXRlZ29yeVR5cGUg
KyBldmVudE5hbWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKQEAg
LTE0MiwxMiArMTQyLDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0QnJl
YWtwb2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYKIAogdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0
cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQogewotICAgIHJlbW92ZUJyZWFr
cG9pbnQoZXJyb3IsIFN0cmluZyhsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlKSArIGV2ZW50TmFt
ZSk7CisgICAgcmVtb3ZlQnJlYWtwb2ludChlcnJvciwgbGlzdGVuZXJFdmVudENhdGVnb3J5VHlw
ZSArIGV2ZW50TmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVt
b3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0
cmluZyYgZXZlbnROYW1lKQogewotICAgIHJlbW92ZUJyZWFrcG9pbnQoZXJyb3IsIFN0cmluZyhp
bnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSkgKyBldmVudE5hbWUpOworICAgIHJlbW92
ZUJyZWFrcG9pbnQoZXJyb3IsIGluc3RydW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBlICsgZXZl
bnROYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCkBAIC0z
NzUsNyArMzc1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpwYXVzZU9uTmF0
aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnMKICAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGTW92ZShldmVudERh
dGEpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVha3Bv
aW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsSXNSZWdleCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJl
YWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRp
b25hbElzUmVnZXgpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9wYXVz
ZU9uQWxsWEhSc0VuYWJsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBiZmUw
MWJlZWE4MzdmZjZhZGQ4MTc0N2YxZDc2M2Q5MzE3YmQwMTViLi4zOWFjZjVhOWM2YThjOGYzNTg5
NzEyMGNmYTVhY2Y4ZjNkYmJhOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNTQsMTQg
KzU0LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KCk7CiAKICAgICAvLyBET01EZWJ1Z2dlciBBUEkKLSAgICB2b2lkIHNldFhIUkJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9u
YWxJc1JlZ2V4KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFdmVudExp
c3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0SW5z
dHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnRO
YW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZUluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBi
b29sKiBvcHRpb25hbElzUmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBmaW5hbDsKKyAgICB2b2lkIHNldEV2
ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5h
bWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgZmluYWw7CisgICAgdm9pZCBzZXRJbnN0
cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5h
bWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBmaW5hbDsKKyAgICB2b2lkIHNldERP
TUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUp
IGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24KICAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCk7CkBA
IC03NCwxNCArNzQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZO
ZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5j
aHJvbm91cyk7CiAgICAgdm9pZCBtYWluRnJhbWVET01Db250ZW50TG9hZGVkKCk7CiAKLSAgICB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVy
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgZmluYWw7CisgICAgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIGZpbmFsOworICAg
IHZvaWQgZGlzY2FyZEFnZW50KCkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgLy8gSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciBpbXBsZW1lbnRhdGlvbi4KLSAgICB2
b2lkIGRlYnVnZ2VyV2FzRW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVidWdnZXJXYXNE
aXNhYmxlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCkgZmluYWw7
CisgICAgdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxl
KCk7CiAKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSYgdGFyZ2V0LCBpbnQg
YnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBKU09OOjpPYmplY3QmIGRlc2NyaXB0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAppbmRleCBkOTgwYTY4NmI3N2IwZTNkNGFlYTI0NTYwYWZmOWUzNDU2YWU3
MzUwLi5mZjAxMjYwZmNlNjg1NDZiYWVhYTk2MmM1ZGNkNWE2NWFhOWFkYzhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUo
RXJyb3JTdHJpbmcmKQogICAgIHNldEVtdWxhdGVkTWVkaWEodW51c2VkLCBlbXB0eVN0cmluZygp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdpbiwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIG9wdGlvbmFsUmVsb2FkRnJvbU9y
aWdpbiwgY29uc3QgYm9vbCogb3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQogewogICAg
IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdpbiAmJiAqb3B0
aW9uYWxSZWxvYWRGcm9tT3JpZ2luOwogICAgIGJvb2wgcmV2YWxpZGF0ZUFsbFJlc291cmNlcyA9
IG9wdGlvbmFsUmV2YWxpZGF0ZUFsbFJlc291cmNlcyAmJiAqb3B0aW9uYWxSZXZhbGlkYXRlQWxs
UmVzb3VyY2VzOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAg
ICAgcmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25z
dCBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291
cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxD
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsKICAgICByZXN1bHRz
ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPjo6Y3JlYXRlKCk7CiAKQEAgLTUyNCw3ICs1MjQsNyBAQCBzdGF0aWMgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hS
ZXN1bHQoYwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qg
b3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNo
UmVzdWx0Pj4mIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRl
eCBkMjJlMzk1YjJmZDIzY2U4ZTc0NTJhZjE2YzhjZjVmZjZlYjQwMWQ0Li44YWUxMGJiNjhlZDVj
ZmVlNWMyYmM5OGI1OTYyZTJiMWNjNjQxY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTg4LDIzICs4OCwyMyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNl
VHlwZSBjYWNoZWRSZXNvdXJjZVR5cGVKU09OKGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAKICAg
ICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKLSAgICB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxSZWxvYWRGcm9tT3JpZ2luLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbFJldmFsaWRh
dGVBbGxSZXNvdXJjZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRDb29raWVzKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
Q29va2llPj4mIGNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlQ29va2llKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVu
Y29kZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsUmVx
dWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3Vy
Y2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3QgY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3QgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JT
dHJpbmcmLCBib29sKiBvdXRfcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29tcG9zaXRp
bmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQg
c25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgU3RyaW5nKiBvdXREYXRhVVJM
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNuYXBzaG90UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0
ZW0sIFN0cmluZyogb3V0RGF0YVVSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmNoaXZlKEVycm9y
U3RyaW5nJiwgU3RyaW5nKiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIGZpbmFsOworICAg
IHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogb3B0aW9uYWxSZWxvYWRGcm9t
T3JpZ2luLCBjb25zdCBib29sKiBvcHRpb25hbFJldmFsaWRhdGVBbGxSZXNvdXJjZXMpIGZpbmFs
OworICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkgZmlu
YWw7CisgICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lLCBjb25zdCBTdHJpbmcmIHVybCkgZmluYWw7CisgICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU+JikgZmluYWw7CisgICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNv
bnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpIGZpbmFsOworICAgIHZvaWQgc2VhcmNoSW5SZXNv
dXJjZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVx
dWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBmaW5hbDsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBmaW5hbDsKKyAgICB2b2lkIHNldFNob3dQYWlu
dFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBmaW5hbDsKKyAgICB2b2lkIHNldEVtdWxh
dGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGdl
dENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sKiBvdXRfcGFyYW0p
IGZpbmFsOworICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmlu
ZyYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgU3RyaW5nKiBvdXREYXRhVVJMKSBmaW5hbDsKKyAgICB2b2lkIHNuYXBzaG90UmVj
dChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25z
dCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFN0cmluZyogb3V0RGF0YVVSTCkgZmluYWw7Cisg
ICAgdm9pZCBhcmNoaXZlKEVycm9yU3RyaW5nJiwgU3RyaW5nKiBkYXRhKSBmaW5hbDsKIAogICAg
IC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZG9tQ29udGVudEV2ZW50Rmly
ZWQoKTsKQEAgLTEyMyw4ICsxMjMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNhbGN1bGF0
ZVN0eWxlKCk7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkKLSAgICB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIGZpbmFsOworICAgIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKSBmaW5hbDsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKICAgICBQYWdlJiBwYWdlKCkg
eyByZXR1cm4gbV9wYWdlOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333928</attachid>
            <date>2018-02-15 11:57:40 -0800</date>
            <delta_ts>2018-02-15 14:06:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180607-20180215115739.patch</filename>
            <type>text/plain</type>
            <size>161822</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmY3ZDYzODI4ODM1MDZhNzYyNGYyN2E2MThmMDdlODIwYmYyZDIzLi4xOTEwNmJhNGQ4YmQyZjUx
ZjZiMzQ0ZGY2Y2Q2OGE2NzQ3OGJlNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NyBAQAorMjAxOC0wMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiByZW1haW5pbmcgdXNlcyBvZiBPcHRP
dXRwdXQ8VD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MDYwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHA6IFJlbW92ZWQgZXhwbGljaXQgSW5zcGVj
dG9yIHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUgdGhlIEluc3BlY3Rv
ciBuYW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvQXN5bmNTdGFja1RyYWNlLmg6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHA6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlsaXRpZXMuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2UgcmVtb3ZhbCBhbmQgLi4u
CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmdldFJlZ3VsYXJF
eHByZXNzaW9uTWF0Y2hlc0J5TGluZXMpOiBVc2UgYQorICAgICAgICBWZWN0b3IgaW5zdGVhZCBv
ZiBhIHVuaXF1ZV9wdHI8VmVjdG9yPi4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6bGluZUVuZGluZ3MpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29u
dGVudFNlYXJjaFV0aWxpdGllczo6c3R5bGVzaGVldENvbW1lbnRQYXR0ZXJuKTogRGVsZXRlZC4K
KyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0aWxpdGllczo6ZmluZE1hZ2ljQ29t
bWVudCk6IFVzZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YKKyAgICAgICAgYSBWZWN0b3IgZm9yIGEg
Zml4ZWQgc2l6ZSBhcnJheTsgYWxzbyBnb3QgcmlkIG9mIHJlaW50ZXJwcmV0X2Nhc3QuCisgICAg
ICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmZpbmRTdHlsZXNoZWV0U291
cmNlTWFwVVJMKTogTW92ZWQgdGhlIHJlZ3VsYXIKKyAgICAgICAgZXhwcmVzc2lvbiBoZXJlIHNp
bmNlIGl0J3MgdGhlIG9ubHkgcGxhY2UgaXQgd2FzIHVzZWQuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oOiBDdXQgZG93biBvbiB1bm5lZWRlZCBpbmNsdWRl
cy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6IFJlbW92ZWQgZXhw
bGljaXQgSW5zcGVjdG9yIHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUg
dGhlIEluc3BlY3RvciBuYW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg6IFJlbW92ZWQgT3B0
T3V0cHV0LiBTaW1wbGlmaWVkIGFzc2VydGlvbnMuCisgICAgICAgIFJlbW92ZWQgYmFzZSB0ZW1w
bGF0ZSBmb3IgQmluZGluZ1RyYWl0czsgd2Ugb25seSBuZWVkIHRoZSBzcGVjaWFsaXphdGlvbnMu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZCBleHBs
aWNpdCBJbnNwZWN0b3IgcHJlZml4IGZyb20gY29kZSB0aGF0CisgICAgICAgIGlzIGluc2lkZSB0
aGUgSW5zcGVjdG9yIG5hbWVzcGFjZSBhbHJlYWR5LiBBbHNvIHVzZSBhdXRvIGEgYml0LgorICAg
ICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDogRGl0dG8uCisgICAgICAgICogaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suaDogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5hbWVzcGFj
ZSByZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6IFVzZSBzdGQ6Om9wdGlvbmFsJiBpbnRlYWQgb2YK
KyAgICAgICAgT3B0T3V0cHV0KiBmb3Igb3V0IGFyZ3VtZW50cy4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5h
bWVzcGFjZSByZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVh
cEFnZW50OjpnZXRQcmV2aWV3KTogVXNlIHN0ZDo6b3B0aW9uYWwmIGludGVhZCBvZiBPcHRPdXRw
dXQqCisgICAgICAgIGZvciBvdXQgYXJndW1lbnRzLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2Ug
cmVtb3ZhbCBhbmQgLi4uCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6cGFyc2UpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW50ZWFkIG9mIE9wdE91dHB1dCoKKyAgICAg
ICAgZm9yIG91dCBhcmd1bWVudHMuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6ZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
UnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6IERpdHRvLgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQpOiBEaXR0by4KKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOiBEaXR0by4KKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6IE1v
cmUgSW5zcGVjdG9yIG5hbWVzcGFjZSByZW1vdmFsCisgICAgICAgIGFuZCByZW1vdmVkIHNvbWUg
Ym9ndXMgY29uc3QuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zv
cl91bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcik6IFJlbW92ZWQgc29tZSBib2d1cyBjb25z
dC4KKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfdHlwZV93aXRoX25hbWUpOiBE
aXR0by4KKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291dF9wYXJh
bWV0ZXIpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW5zdGVhZCBvZgorICAgICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQqLgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zv
cl9mb3JtYWxfYXN5bmNfcGFyYW1ldGVyKTogRGl0dG8uCisgICAgICAgIChDcHBHZW5lcmF0b3Iu
Y3BwX3R5cGVfZm9yX3N0YWNrX2luX3BhcmFtZXRlcik6IERpdHRvLgorICAgICAgICAoQ3BwR2Vu
ZXJhdG9yLmNwcF90eXBlX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKTogRGl0dG8uCisKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5
OiBSZW1vdmVkIEFTU0VSVF9ESVNBQkxFRAorICAgICAgICBjb25kaXRpb25hbCBhcm91bmQgYXNz
ZXJ0aW9uIGNvZGUgd2hpY2ggd2lsbCBub3cgY29tcGlsZSB0byBub3RoaW5nIGlmIEFTU0VSVCBp
cyBkaXNhYmxlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENw
cEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2FzeW5j
X2Rpc3BhdGNoZXJfY2xhc3NfZm9yX2RvbWFpbik6CisgICAgICAgIFVzZSBoYXNfdmFsdWUgaW5z
dGVhZCBvZiBpc0Fzc2lnbmVkIGFuZCAqIG9wZXJhdG9yIGluc3RlYWQgb2YgZ2V0VmFsdWUoKSBz
aW5jZSBzdGQ6Om9wdGlvbmFsCisgICAgICAgIHJlcGxhY2UgT3B0T3V0cHV0IGhlcmUuCisgICAg
ICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgUGFzcyBi
eSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyIG5vdy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weToK
KyAgICAgICAgUmVtb3ZlZCBBU1NFUlRfRElTQUJMRUQgY29uZGl0aW9uYWwgYXJvdW5kIGFzc2Vy
dGlvbiBjb2RlIHdoaWNoIHdpbGwgbm93IGNvbXBpbGUgdG8gbm90aGluZworICAgICAgICBpZiBB
U1NFUlQgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAg
KENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfYXNzZXJ0
aW9uX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24pOiBHZW5lcmF0ZQorICAgICAgICB0aGUgYXNzZXJ0
aW9uIGZ1bmN0aW9uIHVuY29uZGl0aW9uYWxseSwgYnV0IGxlYXZlIG91dCB0aGUgYXNzZXJ0aW9u
cyBpZiBBU1NFUlRfRElTQUJMRUQgaXMgdHJ1ZS4KKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcik6IFVzZSBhdXRvIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQg
SlNPTjo6T2JqZWN0OjppdGVyYXRvci4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9l
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVu
dGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKyAgICAgICAgUmViYXNlbGluZWQuCisKIDIwMTgtMDIt
MTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2Ug
c2hvdWxkIGJlIGFibGUgdG8ganNEeW5hbWljQ2FzdCBmcm9tIEpTVHlwZSB3aGVuIHBvc3NpYmxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZWMwMTVmY2U2NDMzMTM1ZWI3OGEzMGQ1ZmQ0NTRkOWQ3NTgyYjQ3NS4u
YjExZjBiNWYxMTcwMzhmMDI2OWM4NGYxYmNhZjA4YWQwODg3YTkzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDE4LTAyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIHJlbWFpbmluZyB1c2VzIG9mIE9w
dE91dHB1dDxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwNjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZFNvdXJjZVJhbmdlT2JqZWN0KTogVGFrZSBhIGNvbnN0IFZlY3RvciYgaW5zdGVhZCBv
ZiBhIFZlY3RvciouCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmpl
Y3RGb3JTdHlsZSBjb25zdCk6IFBhc3MgbGluZUVuZGluZ3MoKSBpbnN0ZWFkCisgICAgICAgIG9m
IGxpbmVFbmRpbmdzKCkuZ2V0KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6
c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzIGNvbnN0KTog
UmV0dXJuIGEgVmVjdG9yIGluc3RlYWQgb2YKKyAgICAgICAgYSBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPi4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZTo6bGluZUVuZGluZ3MgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50Lmg6IFJlbW92ZWQgc29tZSBib2d1cyBjb25z
dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDog
RGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
OiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHA6IEltcHJvdmVkIHR5cGUgb2YgZ2xvYmFsIHN0cmluZ3MKKyAgICAgICAgc28g
d2UgZG9uJ3Qgd2FzdGUgc3BhY2Ugd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZy4KKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50TGlzdGVuZXJC
cmVha3BvaW50KTogUmVtb3ZlZAorICAgICAgICBleHBsaWNpdCBjcmVhdGlvbiBvZiBTdHJpbmcs
IHdoaWNoIHdhcyB3YXN0ZWZ1bCBhbmQgdW5uZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1v
dmVFdmVudExpc3RlbmVyQnJlYWtwb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
WEhSQnJlYWtwb2ludCk6IFJlbW92ZWQgYm9ndXMgY29uc3QuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDogUmVtb3ZlZCBib2d1cyBjb25z
dCBhbmQgdXNlCisgICAgICAgIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOiBEaXR0by4KKwogMjAxOC0w
Mi0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHN0ZDo6
bWFrZV91bmlxdWUgaW5zdGVhZCBvZiBleHBsaWNpdCBjYWxscyB0byBuZXcgYW5kIGluc3RlYWQg
b2Ygd3JpdGluZyBjcmVhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKaW5kZXggOWU2OGI0OWQ5OGJkOWFhMWYz
NWUzZjE0NzgxNDczODAyZmMzNzM4MS4uMzE0Yjg3YzY4N2I4MGVkYTg0YTY2Yzg3YTZhNWE4YjE5
ZDAyMTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3lu
Y1N0YWNrVHJhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5
bmNTdGFja1RyYWNlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFzeW5jU3RhY2tU
cmFjZS5oIgogCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtOTYsMTcgKzk3LDE3IEBAIHZvaWQg
QXN5bmNTdGFja1RyYWNlOjpkaWRDYW5jZWxBc3luY0NhbGwoKQogICAgIG1fc3RhdGUgPSBTdGF0
ZTo6Q2FuY2VsZWQ7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpT
dGFja1RyYWNlPiBBc3luY1N0YWNrVHJhY2U6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QK
K1JlZlB0cjxQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gQXN5bmNTdGFja1RyYWNlOjpi
dWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IHRvcFN0YWNrVHJhY2U7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IHByZXZpb3VzU3RhY2tUcmFj
ZTsKKyAgICBSZWZQdHI8UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IHRvcFN0YWNrVHJh
Y2U7CisgICAgUmVmUHRyPFByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNlPiBwcmV2aW91c1N0
YWNrVHJhY2U7CiAKICAgICBhdXRvKiBzdGFja1RyYWNlID0gdGhpczsKICAgICB3aGlsZSAoc3Rh
Y2tUcmFjZSkgewogICAgICAgICBhdXRvJiBjYWxsU3RhY2sgPSBzdGFja1RyYWNlLT5tX2NhbGxT
dGFjazsKICAgICAgICAgQVNTRVJUKGNhbGxTdGFjay0+c2l6ZSgpKTsKIAotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gcHJvdG9jb2xPYmpl
Y3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNlOjpjcmVhdGUoKQor
ICAgICAgICBhdXRvIHByb3RvY29sT2JqZWN0ID0gUHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJh
Y2U6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0Q2FsbEZyYW1lcyhjYWxsU3RhY2stPmJ1aWxk
SW5zcGVjdG9yQXJyYXkoKSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CiAKQEAgLTExNiwxMiAr
MTE3LDEyIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNl
PiBBc3luY1N0YWNrVHJhY2U6OmJ1aWxkSW5zcGVjdG9yCiAgICAgICAgICAgICBwcm90b2NvbE9i
amVjdC0+c2V0VG9wQ2FsbEZyYW1lSXNCb3VuZGFyeSh0cnVlKTsKIAogICAgICAgICBpZiAoIXRv
cFN0YWNrVHJhY2UpCi0gICAgICAgICAgICB0b3BTdGFja1RyYWNlID0gcHJvdG9jb2xPYmplY3Q7
CisgICAgICAgICAgICB0b3BTdGFja1RyYWNlID0gcHJvdG9jb2xPYmplY3QucHRyKCk7CiAKICAg
ICAgICAgaWYgKHByZXZpb3VzU3RhY2tUcmFjZSkKLSAgICAgICAgICAgIHByZXZpb3VzU3RhY2tU
cmFjZS0+c2V0UGFyZW50U3RhY2tUcmFjZShwcm90b2NvbE9iamVjdCk7CisgICAgICAgICAgICBw
cmV2aW91c1N0YWNrVHJhY2UtPnNldFBhcmVudFN0YWNrVHJhY2UocHJvdG9jb2xPYmplY3QucHRy
KCkpOwogCi0gICAgICAgIHByZXZpb3VzU3RhY2tUcmFjZSA9IHByb3RvY29sT2JqZWN0OworICAg
ICAgICBwcmV2aW91c1N0YWNrVHJhY2UgPSBXVEZNb3ZlKHByb3RvY29sT2JqZWN0KTsKICAgICAg
ICAgc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2UtPm1fcGFyZW50LmdldCgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKaW5k
ZXggYTYxOGZlN2FmZjFmNmQ1MTBhYTQ1MGMzMzBiN2ExODBlMzBmYmFlZi4uMWMzY2NmNDgzN2Fi
MTU3MjEwYzAzZmM4M2ZiZGQ3Yzc5Nzg1MTkyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAgICAgdm9pZCBkaWRDYW5jZWxB
c3luY0NhbGwoKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpT
dGFja1RyYWNlPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OworICAgIFJlZlB0cjxQcm90
b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdDsK
IAogICAgIH5Bc3luY1N0YWNrVHJhY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA0YzE3NTE1NjkzYjQ0NTkxYjdk
NmNiMjM5MThkNDIyNzE1OGFlM2RhLi41Y2ZiMDRkZjRhZjgzNDgxOWJmOGY3OGZiMWQ4ZTYxNzcz
OGNhZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcApAQCAtMTU0LDYxICsxNTQsNjEgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6
YXV0b2dlbmVyYXRlTWV0YWRhdGEoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogICAgIH0KIH0KIAot
c3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2UgbWVzc2Fn
ZVNvdXJjZVZhbHVlKE1lc3NhZ2VTb3VyY2Ugc291cmNlKQorc3RhdGljIFByb3RvY29sOjpDb25z
b2xlOjpDaGFubmVsU291cmNlIG1lc3NhZ2VTb3VyY2VWYWx1ZShNZXNzYWdlU291cmNlIHNvdXJj
ZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6WE1M
OiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6WE1M
OwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpKYXZhc2NyaXB0OwotICAgIGNhc2UgTWVzc2FnZVNv
dXJjZTo6TmV0d29yazogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5u
ZWxTb3VyY2U6Ok5ldHdvcms7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJOiBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6Q29uc29s
ZUFQSTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2U6IHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpTdG9yYWdlOwotICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6QXBwQ2FjaGU6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xl
OjpDaGFubmVsU291cmNlOjpBcHBjYWNoZTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6
OlJlbmRlcmluZzsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkNTUzogcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OkNTUzsKLSAgICBjYXNlIE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5OiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2hhbm5lbFNvdXJjZTo6U2VjdXJpdHk7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpDb250ZW50
QmxvY2tlcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3Vy
Y2U6OkNvbnRlbnRCbG9ja2VyOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6T3RoZXI6IHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpPdGhlcjsKLSAg
ICBjYXNlIE1lc3NhZ2VTb3VyY2U6Ok1lZGlhOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6TWVkaWE7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpX
ZWJSVEM6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNl
OjpXZWJSVEM7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpYTUw6IHJldHVybiBQcm90b2NvbDo6
Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6WE1MOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6
IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6SmF2YXNjcmlwdDsKKyAg
ICBjYXNlIE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcms6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6
Q2hhbm5lbFNvdXJjZTo6TmV0d29yazsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEk6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6Q29uc29sZUFQSTsK
KyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2U6IHJldHVybiBQcm90b2NvbDo6Q29uc29s
ZTo6Q2hhbm5lbFNvdXJjZTo6U3RvcmFnZTsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkFwcENh
Y2hlOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OkFwcGNhY2hlOwor
ICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNv
bGU6OkNoYW5uZWxTb3VyY2U6OlJlbmRlcmluZzsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkNT
UzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpDU1M7CisgICAgY2Fz
ZSBNZXNzYWdlU291cmNlOjpTZWN1cml0eTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFu
bmVsU291cmNlOjpTZWN1cml0eTsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkNvbnRlbnRCbG9j
a2VyOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OkNvbnRlbnRCbG9j
a2VyOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6T3RoZXI6IHJldHVybiBQcm90b2NvbDo6Q29u
c29sZTo6Q2hhbm5lbFNvdXJjZTo6T3RoZXI7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpNZWRp
YTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpNZWRpYTsKKyAgICBj
YXNlIE1lc3NhZ2VTb3VyY2U6OldlYlJUQzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFu
bmVsU291cmNlOjpXZWJSVEM7CiAgICAgfQotICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpPdGhlcjsKKyAgICByZXR1cm4gUHJvdG9jb2w6OkNv
bnNvbGU6OkNoYW5uZWxTb3VyY2U6Ok90aGVyOwogfQogCi1zdGF0aWMgSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGUgbWVzc2FnZVR5cGVWYWx1ZShNZXNz
YWdlVHlwZSB0eXBlKQorc3RhdGljIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6
VHlwZSBtZXNzYWdlVHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6TG9nOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKLSAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpDbGVhcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEaXI6IHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGly
OwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpclhNTDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXJYTUw7Ci0gICAgY2FzZSBNZXNz
YWdlVHlwZTo6VGFibGU6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6VHJhY2U6IHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
VHJhY2U7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRHcm91cDogcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwOwot
ICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQ6IHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cENv
bGxhcHNlZDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFbmRHcm91cDogcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpFbmRHcm91cDsKLSAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpBc3NlcnQ6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6QXNzZXJ0OwotICAgIGNhc2UgTWVzc2FnZVR5
cGU6OlRpbWluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpUeXBlOjpUaW1pbmc7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6UHJvZmlsZTogcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQ
cm9maWxlOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQ6IHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmlsZUVuZDsK
KyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpMb2c6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVhcjogcmV0
dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6Q2xlYXI7CisgICAg
Y2FzZSBNZXNzYWdlVHlwZTo6RGlyOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpUeXBlOjpEaXI7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RGlyWE1MOiByZXR1cm4g
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXJYTUw7CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6VGFibGU6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlR5cGU6OlRhYmxlOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRyYWNlOiByZXR1cm4g
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0
R3JvdXBDb2xsYXBzZWQ6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQ7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RW5kR3Jv
dXA6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdy
b3VwOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkFzc2VydDogcmV0dXJuIFByb3RvY29sOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6QXNzZXJ0OworICAgIGNhc2UgTWVzc2FnZVR5cGU6
OlRpbWluZzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
VGltaW5nOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlByb2ZpbGU6IHJldHVybiBQcm90b2NvbDo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6UHJvZmlsZUVuZDogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6UHJvZmlsZUVuZDsKICAgICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CisgICAgcmV0dXJuIFByb3Rv
Y29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOwogfQogCi1zdGF0aWMgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsIG1lc3NhZ2VM
ZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3N0YXRpYyBQcm90b2NvbDo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZl
bCkKIHsKICAgICBzd2l0Y2ggKGxldmVsKSB7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkxvZzog
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZl
bDo6TG9nOwotICAgIGNhc2UgTWVzc2FnZUxldmVsOjpJbmZvOiByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpJbmZvOwotICAgIGNhc2Ug
TWVzc2FnZUxldmVsOjpXYXJuaW5nOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpXYXJuaW5nOwotICAgIGNhc2UgTWVzc2FnZUxldmVs
OjpFcnJvcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpMZXZlbDo6RXJyb3I7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkRlYnVnOiByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpEZWJ1
ZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6TG9nOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOworICAgIGNhc2UgTWVzc2FnZUxldmVsOjpJbmZv
OiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6SW5mbzsK
KyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6V2FybmluZzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Oldhcm5pbmc7CisgICAgY2FzZSBNZXNzYWdlTGV2ZWw6
OkVycm9yOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6
RXJyb3I7CisgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkRlYnVnOiByZXR1cm4gUHJvdG9jb2w6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7CiAgICAgfQotICAgIHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsK
KyAgICByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9n
OwogfQogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0TWFu
YWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsKLSAg
ICBhdXRvIG1lc3NhZ2VPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6Y3JlYXRlKCkKKyAgICBhdXRvIG1lc3NhZ2VPYmplY3QgPSBQcm90b2NvbDo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVz
c2FnZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VMZXZl
bFZhbHVlKG1fbGV2ZWwpKQogICAgICAgICAuc2V0VGV4dChtX21lc3NhZ2UpCkBAIC0yMjcsNyAr
MjI3LDcgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25zb2xlRnJvbnRl
bmREaXNwYXRjaGVyJiBjb25zb2xlRnJvbnRlbmREaXMKICAgICBpZiAoKG1fYXJndW1lbnRzICYm
IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHx8IG1fanNvbkxvZ1ZhbHVlcy5zaXplKCkp
IHsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlw
dE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUoKSk7CiAgICAgICAgIGlmICgh
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIGFyZ3VtZW50
c09iamVjdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGFyZ3VtZW50c09iamVjdCA9
IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgp
OwogICAgICAgICAgICAgaWYgKG1fYXJndW1lbnRzICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENv
dW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV90eXBlID09IE1lc3NhZ2VUeXBlOjpUYWJs
ZSAmJiBnZW5lcmF0ZVByZXZpZXcgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBhdXRvIHRhYmxlID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQo
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCBmOTFiMjEwMWExOTY2ZDViYzY5ZWZhNTRhZjBj
ZTcxMDU1MDU2MTBmLi5hYWE4MWUyODYyZTE2NTk4ZTMyNWQ2NDhjYmU2Y2FiYzYyMDIwZGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVu
dFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvQnVt
cFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQ
b3NpdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOjpZYXJyOwogCkBAIC03OSwxMiArODAs
MTIgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBnZXRSZWd1bGFy
RXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKGNvbnMKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVf
dD4+IGVuZGluZ3MobGluZUVuZGluZ3ModGV4dCkpOwotICAgIHNpemVfdCBzaXplID0gZW5kaW5n
cy0+c2l6ZSgpOworICAgIGF1dG8gZW5kaW5ncyA9IGxpbmVFbmRpbmdzKHRleHQpOworICAgIHNp
emVfdCBzaXplID0gZW5kaW5ncy5zaXplKCk7CiAgICAgc2l6ZV90IHN0YXJ0ID0gMDsKIAogICAg
IGZvciAoc2l6ZV90IGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVtYmVyIDwgc2l6ZTsgKytsaW5lTnVt
YmVyKSB7Ci0gICAgICAgIHNpemVfdCBuZXh0U3RhcnQgPSBlbmRpbmdzLT5hdChsaW5lTnVtYmVy
KTsKKyAgICAgICAgc2l6ZV90IG5leHRTdGFydCA9IGVuZGluZ3NbbGluZU51bWJlcl07CiAgICAg
ICAgIFN0cmluZyBsaW5lID0gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIG5leHRTdGFydCAtIHN0YXJ0
KTsKIAogICAgICAgICBpbnQgbWF0Y2hMZW5ndGg7CkBAIC05NywzMSArOTgsMzEgQEAgc3RhdGlj
IFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1h
dGNoZXNCeUxpbmVzKGNvbnMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYgdGV4dCkKK1ZlY3Rv
cjxzaXplX3Q+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHNpemVfdD4+KCk7CisgICAgVmVjdG9yPHNp
emVfdD4gcmVzdWx0OwogCiAgICAgc2l6ZV90IHN0YXJ0ID0gMDsKICAgICB3aGlsZSAoc3RhcnQg
PCB0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIHNpemVfdCBuZXh0U3RhcnQgPSB0ZXh0LmZpbmQo
J1xuJywgc3RhcnQpOwogICAgICAgICBpZiAobmV4dFN0YXJ0ID09IG5vdEZvdW5kIHx8IG5leHRT
dGFydCA9PSAodGV4dC5sZW5ndGgoKSAtIDEpKSB7Ci0gICAgICAgICAgICByZXN1bHQtPmFwcGVu
ZCh0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGV4dC5sZW5ndGgo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIG5leHRTdGFydCAr
PSAxOwotICAgICAgICByZXN1bHQtPmFwcGVuZChuZXh0U3RhcnQpOworICAgICAgICByZXN1bHQu
YXBwZW5kKG5leHRTdGFydCk7CiAgICAgICAgIHN0YXJ0ID0gbmV4dFN0YXJ0OwogICAgIH0KIAot
ICAgIHJlc3VsdC0+YXBwZW5kKHRleHQubGVuZ3RoKCkpOworICAgIHJlc3VsdC5hcHBlbmQodGV4
dC5sZW5ndGgoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9y
U2VhcmNoTWF0Y2goc2l6ZV90IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQp
CitzdGF0aWMgUmVmPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPiBidWlsZE9i
amVjdEZvclNlYXJjaE1hdGNoKHNpemVfdCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGxpbmVD
b250ZW50KQogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6
OlNlYXJjaE1hdGNoOjpjcmVhdGUoKQorICAgIHJldHVybiBQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaDo6Y3JlYXRlKCkKICAgICAgICAgLnNldExpbmVOdW1iZXIobGluZU51bWJl
cikKICAgICAgICAgLnNldExpbmVDb250ZW50KGxpbmVDb250ZW50KQogICAgICAgICAucmVsZWFz
ZSgpOwpAQCAtMTUxLDI3ICsxNTIsMTUgQEAgaW50IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRj
aGVzKGNvbnN0IFJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgY29uc3QgU3RyaW5nJgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sIGlzUmVnZXgpCitSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wgaXNSZWdleCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwotCi0g
ICAgUmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpjcmVh
dGVTZWFyY2hSZWdleChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7Ci0gICAgVmVjdG9y
PHN0ZDo6cGFpcjxzaXplX3QsIFN0cmluZz4+IG1hdGNoZXMgPSBnZXRSZWd1bGFyRXhwcmVzc2lv
bk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgbWF0
Y2ggOiBtYXRjaGVzKSB7Ci0gICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPiBtYXRjaE9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0
Y2gobWF0Y2guZmlyc3QsIG1hdGNoLnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC0+YWRkSXRlbShX
VEZNb3ZlKG1hdGNoT2JqZWN0KSk7Ci0gICAgfQotCisgICAgYXV0byByZXN1bHQgPSBKU09OOjpB
cnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7Cisg
ICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVNlYXJjaFJlZ2V4
KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1h
dGNoIDogZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwgdGV4dCkpCisg
ICAgICAgIHJlc3VsdC0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKG1hdGNoLmZp
cnN0LCBtYXRjaC5zZWNvbmQpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgU3Ry
aW5nIHN0eWxlc2hlZXRDb21tZW50UGF0dGVybihjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAg
Ly8gIi8qIyA8bmFtZT49PHZhbHVlPiAqLyIgYW5kIGRlcHJlY2F0ZWQgIi8qQCIKLSAgICByZXR1
cm4gIi9cXCpbI0BdW1wwNDBcdF0iICsgbmFtZSArICI9W1wwNDBcdF0qKFteXFxzXCdcIl0qKVtc
MDQwXHRdKlxcKi8iOwotfQotCiBzdGF0aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiB7CiAgICAgaWYg
KGNvbnRlbnQuaXNFbXB0eSgpKQpAQCAtMTg1LDkgKzE3NCw4IEBAIHN0YXRpYyBTdHJpbmcgZmlu
ZE1hZ2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGF0dGVy
blN0cmluCiAgICAgQVNTRVJUKGJ5dGVjb2RlUGF0dGVybik7CiAKICAgICBBU1NFUlQocGF0dGVy
bi5tX251bVN1YnBhdHRlcm5zID09IDEpOwotICAgIFZlY3RvcjxpbnQsIDQ+IG1hdGNoZXM7Ci0g
ICAgbWF0Y2hlcy5ncm93KDQpOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IGludGVycHJldChieXRl
Y29kZVBhdHRlcm4uZ2V0KCksIGNvbnRlbnQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQq
PihtYXRjaGVzLmRhdGEoKSkpOworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IG1hdGNoZXM7
CisgICAgdW5zaWduZWQgcmVzdWx0ID0gaW50ZXJwcmV0KGJ5dGVjb2RlUGF0dGVybi5nZXQoKSwg
Y29udGVudCwgMCwgbWF0Y2hlcy5kYXRhKCkpOwogICAgIGlmIChyZXN1bHQgPT0gb2Zmc2V0Tm9N
YXRjaCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xOTcsNyArMTg1LDggQEAgc3Rh
dGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuU3RyaW4KIAogU3RyaW5nIGZpbmRTdHlsZXNoZWV0U291cmNlTWFwVVJM
KGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICByZXR1cm4gZmluZE1hZ2ljQ29tbWVudChj
b250ZW50LCBzdHlsZXNoZWV0Q29tbWVudFBhdHRlcm4oQVNDSUlMaXRlcmFsKCJzb3VyY2VNYXBw
aW5nVVJMIikpKTsKKyAgICAvLyAiLyojIDxuYW1lPj08dmFsdWU+ICovIiBhbmQgZGVwcmVjYXRl
ZCAiLypAIgorICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRlbnQsIEFTQ0lJTGl0ZXJh
bCB7ICIvXFwqWyNAXVtcMDQwXHRdc291cmNlTWFwcGluZ1VSTD1bXDA0MFx0XSooW15cXHNcJ1wi
XSopW1wwNDBcdF0qXFwqLyIgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRTZWFyY2hV
dGlsaXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9D
b250ZW50U2VhcmNoVXRpbGl0aWVzLmgKaW5kZXggNTViMTkxZWEyMzg5Y2MxZjlmZmE3OGNmYWNk
MjJjMWJjMWNlMDU4MS4uZDJlYThlZTBlZWNmNTcyM2IzNDY0MGVhOWQyYWYzYTdiYTEyYjZhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNo
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbGl0aWVzLmgKQEAgLTI5LDkgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgWWFyciB7CiBjbGFzcyBSZWd1bGFyRXhwcmVzc2lvbjsKQEAgLTQzLDkgKzQx
LDkgQEAgbmFtZXNwYWNlIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMgewogCiBKU19FWFBPUlRfUFJJ
VkFURSBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KGNvbnN0
IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4KTsKIEpTX0VY
UE9SVF9QUklWQVRFIGludCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhjb25zdCBKU0M6
OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgY29uc3QgU3RyaW5nJik7Ci1KU19FWFBPUlRfUFJJ
VkFURSBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6
OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBp
c1JlZ2V4KTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpH
ZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCBpc1JlZ2V4KTsKIEpTX0VYUE9SVF9QUklWQVRFIFRleHRQb3NpdGlvbiB0ZXh0
UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVfdCBvZmZzZXQsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBs
aW5lRW5kaW5ncyk7Ci1KU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNp
emVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgVmVj
dG9yPHNpemVfdD4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJik7CiAKIEpTX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBmaW5kU3R5bGVzaGVldFNvdXJjZU1hcFVSTChjb25zdCBTdHJpbmcmIGNvbnRl
bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwCmluZGV4IDNlZmMzZmRhNTFjMWNmMzE1NGRjNWQ2OTc4M2U5ZDI0ZmU5OTRjZGIu
LmZhODI4ZDAwNWE4M2ZhMjYwOTI0NTgxNTgwNjUyOTA5NTY1MjgzNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIEluamVjdGVkU2NyaXB0Ojp+SW5qZWN0ZWRTY3JpcHQoKQogewogfQogCi12b2lk
IEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZp
ZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgYm9vbCYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGlu
dD4mIHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJu
QnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIGJvb2wmIHdhc1Rocm93biwg
c3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewogICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJ
SUxpdGVyYWwoImV2YWx1YXRlIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2Fs
bEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CkBA
IC02Niw3ICs2Niw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uCiAgICAgbWFrZUV2YWxDYWxs
KGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5k
ZXgpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9v
bCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQsIGJvb2wmIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3Vt
ZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIGJvb2wmIHdhc1Rocm93bikK
IHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJjYWxsRnVuY3Rpb25PbiIpLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdh
c1Rocm93biwgdW51c2VkKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNh
bGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVz
LCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29s
IHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQs
IGJvb2wmIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQor
dm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAs
IGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBib29sJiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJldmFsdWF0
ZU9uQ2FsbEZyYW1lIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRs
ZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CkBAIC05Myw3
ICs5Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6OkpTVmFsdWUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JT
dHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiB9
CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiByZXN1bHQpCit2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0
aW9uRGV0YWlscz4mIHJlc3VsdCkKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRGdW5j
dGlvbkRldGFpbHMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxl
cigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICByZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpGdW5jdGlvbkRldGFpbHM+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7
CisgICAgcmVzdWx0ID0gQmluZGluZ1RyYWl0czxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0VmFsdWUpKTsKIH0KIAogdm9pZCBJ
bmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRl
dGFpbHM+JiByZXN1bHQpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6
ZnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpKU1ZhbHVlIHZh
bHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVD
YXN0KFdURk1vdmUocmVzdWx0VmFsdWUpKTsKKyAgICByZXN1bHQgPSBCaW5kaW5nVHJhaXRzPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPjo6cnVudGltZUNhc3QoV1RGTW92ZShy
ZXN1bHRWYWx1ZSkpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcmV2aWV3KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYgcmVzdWx0KQpAQCAtMTM1LDEwICsxMzUsMTAg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2Jq
ZWN0UHJldmlldz46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0VmFsdWUpKTsKKyAgICByZXN1
bHQgPSBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3Pjo6cnVu
dGltZUNhc3QoV1RGTW92ZShyZXN1bHRWYWx1ZSkpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0
OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yPj4mIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBv
d25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8
UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBwcm9wZXJ0aWVzKQogewog
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImdldFByb3BlcnRpZXMiKSwgaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CkBAIC0xNTEsMTAgKzE1MSwxMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0
OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvcGVydGllcyA9IEJpbmRpbmdU
cmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0
eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBwcm9wZXJ0
aWVzID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9w
ZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3Bl
cnR5RGVzY3JpcHRvcj4+JiBwcm9wZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RGlz
cGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKIHsKICAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMiKSwgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xNjYsMTAgKzE2NiwxMCBAQCB2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvcGVydGllcyA9
IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAg
ICBwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50
aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsK
IH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4m
IHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0SW50ZXJuYWxQcm9w
ZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTgxLDcgKzE4MSw3
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGFycmF5ID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0
KFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBhcnJheSA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6
QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6
cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKICAgICBwcm9wZXJ0aWVzID0gYXJyYXktPmxl
bmd0aCgpID4gMCA/IGFycmF5IDogbnVsbHB0cjsKIH0KIApAQCAtMjE4LDcgKzIxOCw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGNhbGxBcmd1CiAgICAgICAgIHNhdmVkUmVzdWx0SW5kZXggPSByZXN1bHRJ
bmRleDsKIH0KIAotUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhKU0M6OkpTVmFs
dWUgY2FsbEZyYW1lcykgY29uc3QKK1JlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dl
cjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1
ZSBjYWxsRnJhbWVzKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgQVNDSUlMaXRlcmFsKCJ3cmFwQ2FsbEZyYW1lcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMjI3LDE2ICsyMjcsMTYgQEAgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IElu
amVjdGVkU2NyaXB0Ojp3cmEKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGF1
dG8gY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9u
LCBoYWRFeGNlcHRpb24pOwogICAgIGlmICghY2FsbEZyYW1lc1ZhbHVlKQotICAgICAgICByZXR1
cm4gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwog
ICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0
U3RhdGUoKSwgY2FsbEZyYW1lc1ZhbHVlKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSlNP
Tjo6VmFsdWU6OlR5cGU6OkFycmF5KQotICAgICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+Pjo6cnVu
dGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKIAot
ICAgIHJldHVybiBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVj
dChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVy
YXRlUHJldmlldykgY29uc3QKK1JlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0
cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAgICBBU1NF
UlQoIWhhc05vVmFsdWUoKSk7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdy
YXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoIndyYXBPYmpl
Y3QiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKQEAg
LTI1NCw3ICsyNTQsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChKUwogICAgIGJvb2wgY2FzdFN1
Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIHIpLT5hc09iamVjdChy
ZXN1bHRPYmplY3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2Nl
ZWRlZCk7CiAKLSAgICByZXR1cm4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOworICAgIHJl
dHVybiBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50
aW1lQ2FzdChyZXN1bHRPYmplY3QpOwogfQogCiBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBKU09OU3RyaW5nKGNvbnN0IFN0cmluZyYg
anNvbiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25z
dApAQCAtMjc3LDEwICsyNzcsMTAgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyhjb25zdCBTdHIKICAgICBib29s
IGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCBldmFsUmVz
dWx0KS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNj
ZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCi0gICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0
T2JqZWN0KTsKKyAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsKIH0KIAotUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6Ondy
YXBUYWJsZShKU0M6OkpTVmFsdWUgdGFibGUsIEpTQzo6SlNWYWx1ZSBjb2x1bW5zKSBjb25zdAor
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3
cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHRhYmxlLCBKU0M6OkpTVmFsdWUgY29sdW1ucykgY29uc3QK
IHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVy
YWwoIndyYXBUYWJsZSIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOwpAQCAtMzAwLDEwICszMDAsMTAgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShKU0MKICAg
ICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCBy
KS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVk
ZWQsIGNhc3RTdWNjZWVkZWQpOwogCi0gICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2Jq
ZWN0KTsKKyAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsKIH0KIAotUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2
aWV3VmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSBjb25zdAorUmVmUHRyPFByb3RvY29sOjpSdW50
aW1lOjpPYmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CiAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCBBU0NJSUxpdGVyYWwoInByZXZpZXdWYWx1ZSIpLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlw
dDo6cHJldmlld1ZhbHVlCiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1
ZSgqc2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CiAgICAgQVNTRVJU
X1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAotICAgIHJldHVybiBCaW5k
aW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+Ojpy
dW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOworICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPFByb3Rv
Y29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsK
IH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXhjZXB0aW9uVmFsdWUoSlNDOjpKU1ZhbHVl
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb3RvY29sVHlwZXMuaAppbmRleCAwNzY1NzNlYTViZDczM2I0MjJkOWU2OGFmOTNm
ZjdkMDJhZDkyZTJiLi41YjE1NjViZGI2ODUwNWIzODgzMDI2M2YzYzkxMjU5YmQ4ZTEyYWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3Rv
Y29sVHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clByb3RvY29sVHlwZXMuaApAQCAtMzMsMTA0ICszMyw1NyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogbmFtZXNwYWNlIFByb3RvY29sIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEJpbmRpbmdUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJpbmRpbmdUcmFpdHM7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBPcHRPdXRwdXQgewotcHVibGljOgotICAg
IE9wdE91dHB1dCgpIDogbV9hc3NpZ25lZChmYWxzZSkgeyB9Ci0KLSAgICB2b2lkIG9wZXJhdG9y
PShUIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgICAgICBtX2Fz
c2lnbmVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGlzQXNzaWduZWQoKSBjb25zdCB7IHJl
dHVybiBtX2Fzc2lnbmVkOyB9Ci0KLSAgICBUIGdldFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChpc0Fzc2lnbmVkKCkpOwotICAgICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgVCBtX3ZhbHVlOwotICAgIGJvb2wgbV9hc3NpZ25lZDsKLQotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE9wdE91dHB1dCk7Ci19OwotCi0vLyBIZWxwZXIgbWV0aG9kcyBmb3Ig
UHJvdG9jb2wgYW5kIG90aGVyIEpTT04gdHlwZXMgYXJlIHByb3ZpZGVkIGJ5Ci0vLyBzcGVjaWFs
aXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29tZSBhcmUgZ2VuZXJhdGVkIGZvciBwcm90
b2NvbCB0eXBlcy4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBCaW5kaW5nVHJhaXRz
IHsKLSAgICB0eXBlZGVmIFQgQmluZGluZ1R5cGU7Ci0KLSAgICBzdGF0aWMgdm9pZCBwdXNoKEpT
T046OkFycmF5JiwgQmluZGluZ1R5cGUmKTsKLSAgICBzdGF0aWMgSlNPTjo6VmFsdWU6OlR5cGUg
dHlwZVRhZygpOwotICAgIHN0YXRpYyBSZWZQdHI8VD4gcnVudGltZUNhc3QoUmVmUHRyPEpTT046
Ok9iamVjdD4mJik7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKik7Ci0jZW5kaWYgLy8gIUFTU0VSVF9E
SVNBQkxFRAotfTsKLQotdGVtcGxhdGU8SlNPTjo6VmFsdWU6OlR5cGUgVFlQRT4KLXN0cnVjdCBQ
cmltaXRpdmVCaW5kaW5nVHJhaXRzIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECit0ZW1wbGF0ZTxK
U09OOjpWYWx1ZTo6VHlwZSB0eXBlPiBzdHJ1Y3QgUHJpbWl0aXZlQmluZGluZ1RyYWl0cyB7CiAg
ICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZh
bHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUgJiYgdmFsdWUtPnR5
cGUoKSA9PSBUWVBFKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZSwgdmFsdWUpOworICAg
ICAgICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZS0+dHlwZSgpID09IHR5cGUpOwogICAgIH0K
LSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
c3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxUPj4gewordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxUPj4gewogICAgIHN0YXRp
YyBSZWZQdHI8SlNPTjo6QXJyYXlPZjxUPj4gcnVudGltZUNhc3QoUmVmUHRyPEpTT046OlZhbHVl
PiYmIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAg
ICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFycmF5OwogICAgICAgICBib29sIGNhc3RTdWNjZWVk
ZWQgPSB2YWx1ZS0+YXNBcnJheShhcnJheSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1
Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBh
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS5nZXQoKSk7Ci0jZW5kaWYgLy8gIUFTU0VS
VF9ESVNBQkxFRAogICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNPTjo6QXJyYXlPZjxU
PikgPT0gc2l6ZW9mKEpTT046OkFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOwogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXlPZjxUPio+KHN0YXRpY19jYXN0PEpTT046OkFy
cmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2
YWx1ZSkKICAgICB7CisjaWYgQVNTRVJUX0RJU0FCTEVECisgICAgICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7CisjZWxzZQogICAgICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgICAg
IFJlZlB0cjxKU09OOjpBcnJheT4gYXJyYXk7CiAgICAgICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9
IHZhbHVlLT5hc0FycmF5KGFycmF5KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2Vl
ZGVkLCBjYXN0U3VjY2VlZGVkKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFy
cmF5LT5sZW5ndGgoKTsgaSsrKQogICAgICAgICAgICAgQmluZGluZ1RyYWl0czxUPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoYXJyYXktPmdldChpKS5nZXQoKSk7Ci0gICAgfQogI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQmlu
ZGluZ1RyYWl0czxKU09OOjpWYWx1ZT4gewotI2lmICFBU1NFUlRfRElTQUJMRUQKK3RlbXBsYXRl
PD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU+IHsKICAgICBzdGF0aWMgdm9pZCBh
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopCiAgICAgewogICAgIH0KLSNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5n
VHJhaXRzPEpTT046OkFycmF5PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046
OlZhbHVlOjpUeXBlOjpBcnJheT4geyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0
czxKU09OOjpPYmplY3Q+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFs
dWU6OlR5cGU6Ok9iamVjdD4geyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxT
dHJpbmc+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6
OlN0cmluZz4geyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxib29sPiA6IHB1
YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpCb29sZWFuPiB7
IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGRvdWJsZT4gOiBwdWJsaWMgUHJp
bWl0aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6RG91YmxlPiB7IH07Ci10ZW1w
bGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGludD4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGlu
Z1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcj4geyB9OwordGVtcGxhdGU8PiBzdHJ1
Y3QgQmluZGluZ1RyYWl0czxKU09OOjpBcnJheT4gOiBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpT
T046OlZhbHVlOjpUeXBlOjpBcnJheT4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1Ry
YWl0czxKU09OOjpPYmplY3Q+IDogUHJpbWl0aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6
VHlwZTo6T2JqZWN0PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPFN0cmlu
Zz4gOiBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpTdHJpbmc+IHsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8Ym9vbD4gOiBQcmltaXRpdmVCaW5k
aW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpCb29sZWFuPiB7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBCaW5kaW5nVHJhaXRzPGRvdWJsZT4gOiBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046
OlZhbHVlOjpUeXBlOjpEb3VibGU+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFp
dHM8aW50PiA6IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkludGVn
ZXI+IHsgfTsKIAotfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKK30KIAogdXNpbmcgUHJvdG9jb2w6
OkJpbmRpbmdUcmFpdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCBhNzMwMGFmMmNhN2UyYzMxNDlkZDRmMWE2MTI1
MmMxODAyM2RkMWU1Li4xODNmZWYxZjI1ZGFhYjAwZmE0YzE5NDZhYzUyMGQ0OGI4YzRhZDhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFt
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJh
bWUuY3BwCkBAIC02Miw5ICs2Miw5IEBAIGJvb2wgU2NyaXB0Q2FsbEZyYW1lOjppc05hdGl2ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2NyaXB0TmFtZSA9PSAiW25hdGl2ZSBjb2RlXSI7CiB9CiAK
LVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+IFNjcmlwdENhbGxG
cmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAorUmVmPFByb3RvY29sOjpDb25zb2xl
OjpDYWxsRnJhbWU+IFNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25z
dAogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU6
OmNyZWF0ZSgpCisgICAgcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU6OmNyZWF0
ZSgpCiAgICAgICAgIC5zZXRGdW5jdGlvbk5hbWUobV9mdW5jdGlvbk5hbWUpCiAgICAgICAgIC5z
ZXRVcmwobV9zY3JpcHROYW1lKQogICAgICAgICAuc2V0U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIo
bV9zb3VyY2VJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCA2MzdiZTZmMjJlZDgzNzRiNzI2OGI1MjhmNjQ4MWFiOTRlZTZh
Yzk1Li5jMmY1YzI5ZTg1Y2ZkMzI5NTZlMjk3MGU4NDFiOWVlMzM1MDJhMWMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdENh
bGxGcmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGlzRXF1YWwob3RoZXIpOyB9CiAKLSAgICBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPiBidWlsZEluc3BlY3Rv
ck9iamVjdCgpIGNvbnN0OworICAgIFJlZjxQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPiBi
dWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2Z1
bmN0aW9uTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmNwcAppbmRleCA5NWNlMzMxM2UzNDQwNjQ5ODRiM2FmYzFmZjE1ZTg1YTdl
OGI2NWIzLi43ZDUzYjRjYjY5Y2Y3MTJkNWZiMjRjNzk0OWYyNmQxMWYzY2NiOWQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3Bw
CkBAIC0xMDUsOSArMTA1LDkgQEAgYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmlzRXF1YWwoU2NyaXB0
Q2FsbFN0YWNrKiBvKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxs
U3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAorUmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0
b3JBcnJheSgpIGNvbnN0CiB7Ci0gICAgYXV0byBmcmFtZXMgPSBKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgIGF1dG8g
ZnJhbWVzID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3Jl
YXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkrKykK
ICAgICAgICAgZnJhbWVzLT5hZGRJdGVtKG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkpOwogICAgIHJldHVybiBmcmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAppbmRleCA5OTI4MGIwNjRhY2E3NzUxNTc3MDkz
YmIzNTRlM2U4NjQ1NDI3MDIyLi5mOWVjY2RjNmQ5Y2NhNjY5ZjUzZjA2ZDMzMmY5OTY5MzNiMTJi
MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VxdWFsKFNj
cmlwdENhbGxTdGFjayopIGNvbnN0OwogCi0gICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNv
bnN0OworICAgIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+
PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU2NyaXB0Q2Fs
bFN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA1YzNiZjdkNmYy
MjZkMjE3MzZjYjE0NzhkNDM3M2QzZDkzN2JlNjQ5Li4wZGFkODBmNjY3YTM0OGFjYjZjMjgwZjY1
YWNkMjEzY2Q0NzdlYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTIz
OSwxMCArMjM5LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IGNvCiAgICAgfQogfQogCi12b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bD4+JiBjaGFubmVscykKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hh
bm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29uc29s
ZTo6Q2hhbm5lbD4+JiBjaGFubmVscykKIHsKICAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9u
IGhhcyBubyBsb2dnaW5nIGNoYW5uZWxzLgotICAgIGNoYW5uZWxzID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPjo6Y3JlYXRlKCk7CisgICAgY2hh
bm5lbHMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPjo6Y3JlYXRl
KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzZXRMb2dnaW5nQ2hhbm5lbExl
dmVsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggYTFjZjZhMjU0M2M2MDJlNjA1MzJj
ZmM1ODg2ZjUzMzE5YmU2MzZiOC4uM2RiYmViMDMzNDJjYzVhNjRiYWQwMGE1ZmVlODE3Zjk0M2Vi
N2YxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAg
ICB2b2lkIGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJik7CiAK
LSAgICB2b2lkIGdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2hh
bm5lbCwgY29uc3QgU3RyaW5nJiBsZXZlbCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYThiMjM5OGE0YWI3ODVjNTk5NGU1ZTg0
MmNiZDUzYjNlNjExYWQ4OS4uMzg1NGM0YmU3MjhiMWY2MTBkYmY2Y2E3Nzk1NGEzMzc0Y2ZkZDI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFN1cHByZXNzQWxsUGF1c2VzKGJvb2wg
c3VwcHJlc3MpCiAKIHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZEFzc2VydFBhdXNl
UmVhc29uKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBhdXRvIHJlYXNvbiA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpBc3NlcnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkucmVs
ZWFzZSgpOworICAgIGF1dG8gcmVhc29uID0gUHJvdG9jb2w6OkRlYnVnZ2VyOjpBc3NlcnRQYXVz
ZVJlYXNvbjo6Y3JlYXRlKCkucmVsZWFzZSgpOwogICAgIGlmICghbWVzc2FnZS5pc051bGwoKSkK
ICAgICAgICAgcmVhc29uLT5zZXRNZXNzYWdlKG1lc3NhZ2UpOwogICAgIHJldHVybiByZWFzb24t
Pm9wZW5BY2Nlc3NvcnMoKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046
Ok9iamVjdD4gYnVpbGRBc3NlcnRQYXVzZVJlYXNvbihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
IHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZENTUFZpb2xhdGlvblBhdXNlUmVhc29u
KGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkKIHsKLSAgICBhdXRvIHJlYXNvbiA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDU1BWaW9sYXRpb25QYXVzZVJlYXNvbjo6Y3JlYXRl
KCkKKyAgICBhdXRvIHJlYXNvbiA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q1NQVmlvbGF0aW9uUGF1
c2VSZWFzb246OmNyZWF0ZSgpCiAgICAgICAgIC5zZXREaXJlY3RpdmUoZGlyZWN0aXZlVGV4dCkK
ICAgICAgICAgLnJlbGVhc2UoKTsKICAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7
CkBAIC0xOTQsNyArMTk0LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24oSlNDOjpCcmUKICAgICBpZiAoaXQg
PT0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3BvaW50SWRl
bnRpZmllci5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJlYXNv
biA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50UGF1c2VSZWFzb246
OmNyZWF0ZSgpCisgICAgYXV0byByZWFzb24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldEJyZWFrcG9pbnRJZChpdC0+dmFs
dWUpCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29y
cygpOwpAQCAtMzQyLDE5ICszNDIsMTkgQEAgc3RhdGljIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzUmVnZXgpCiAKIHN0YXRpYyBi
b29sIGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZVN0cmlu
ZywgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUqIG91dHB1dCkKIHsKLSAgICBpZiAodHlwZVN0
cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlv
bjo6VHlwZTo6TG9nKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0
b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRBY3Rpb246OlR5cGU6OkxvZykpIHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb25UeXBlTG9nOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYg
KHR5cGVTdHJpbmcgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IFByb3Rv
Y29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgewogICAgICAgICAqb3V0
cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpTb3VuZCkpIHsKKyAgICBpZiAo
dHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpTb3VuZCkp
IHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlU291bmQ7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6UHJvYmUp
KSB7CisgICAgaWYgKHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6Omdl
dEVudW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6
VHlwZTo6UHJvYmUpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50QWN0aW9u
VHlwZVByb2JlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00MDYsMTEgKzQwNiwx
MSBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVBy
b3RvY29sKEVycm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gYnVpbGRE
ZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK3N0YXRp
YyBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gYnVpbGREZWJ1Z2dlckxvY2F0
aW9uKGNvbnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKIHsKICAgICBBU1NFUlQoYnJl
YWtwb2ludC5yZXNvbHZlZCk7CiAKLSAgICBhdXRvIGxvY2F0aW9uID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQorICAgIGF1dG8gbG9jYXRpb24gPSBQ
cm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQogICAgICAgICAuc2V0U2NyaXB0
SWQoU3RyaW5nOjpudW1iZXIoYnJlYWtwb2ludC5zb3VyY2VJRCkpCiAgICAgICAgIC5zZXRMaW5l
TnVtYmVyKGJyZWFrcG9pbnQubGluZSkKICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTQzNCw5ICs0
MzQsOSBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCog
Y29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2lu
dElkZW50aWZpZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1i
ZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlv
bnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj46OmNyZWF0ZSgpOworICAgIGxvY2F0aW9ucyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICghb3B0aW9uYWxVUkwgPT0gIW9w
dGlvbmFsVVJMUmVnZXgpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkVp
dGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQuIik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaQogICAgICpvdXRC
cmVha3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOwogfQogCi12b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9w
dGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmpl
Y3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKIHsKICAgICBKU0M6OlNv
dXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CkBAIC02NTksNyArNjU5
LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuY29u
dGludWVQcm9ncmFtKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNo
SW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJv
ciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgs
IFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNo
Pj4mIHJlc3VsdHMpCiB7CiAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IHNjcmlwdElEU3Ry
LnRvSW50UHRyKCk7CiAgICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHNvdXJjZUlEKTsKQEAg
LTY4Myw3ICs2ODMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNv
dXJjZShFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogICAgICAgICBlcnJvciA9
IEFTQ0lJTGl0ZXJhbCgiTm8gc2NyaXB0IGZvciBpZDogIikgKyBzY3JpcHRJRFN0cjsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZGV0YWlscykKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBkZXRhaWxzKQogewogICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRG
b3JPYmplY3RJZChmdW5jdGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKSB7CkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
ZXRQYXVzZU9uQXNzZXJ0aW9ucyhFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkKICAgICBtX3Bh
dXNlT25Bc3NlcnRpb25GYWlsdXJlcyA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0
IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3Qg
Ym9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+
KiBvdXRXYXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvdXRT
YXZlZFJlc3VsdEluZGV4KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9u
Q2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJh
bWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3Vw
LCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwg
Y29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25h
bDxib29sPiYgb3V0V2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5k
ZXgpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsU3RhY2spIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIk5vdCBwYXVzZWQiKTsKQEAgLTg0NywxNSArODQ3LDExIEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAgICAgfQogCi0g
ICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGJyaWRnaW5nIGNvZGUgd2hlbiBnZW5lcmF0ZWQgcHJv
dG9jb2wgY29tbWFuZHMgbm8gbG9uZ2VyIHVzZSBPcHRPdXRwdXQ8VD4uCiAgICAgYm9vbCB3YXNU
aHJvd247Ci0gICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAgICAgaW5q
ZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2Fs
bFN0YWNrLmdldCgpLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwKICAgICAgICAgb2JqZWN0R3Jv
dXAgPyAqb2JqZWN0R3JvdXAgOiBlbXB0eVN0cmluZygpLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkg
JiYgKmluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSAmJiAqcmV0dXJuQnlWYWx1
ZSwgZ2VuZXJhdGVQcmV2aWV3ICYmICpnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQgJiYgKnNh
dmVSZXN1bHQsCiAgICAgICAgIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsK
LSAgICAqb3V0V2FzVGhyb3duID0gd2FzVGhyb3duOwotICAgIGlmIChzYXZlZFJlc3VsdEluZGV4
Lmhhc192YWx1ZSgpKQotICAgICAgICAqb3V0U2F2ZWRSZXN1bHRJbmRleCA9IHNhdmVkUmVzdWx0
SW5kZXgudmFsdWUoKTsKKyAgICBvdXRXYXNUaHJvd24gPSB3YXNUaHJvd247CiAKICAgICBpZiAo
cGF1c2VBbmRNdXRlKSB7CiAgICAgICAgIHVubXV0ZUNvbnNvbGUoKTsKQEAgLTg3MywxMSArODY5
LDExIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQmxvY2tl
ZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlCiAgICAgICAgIGJyZWFrUHJvZ3JhbShEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpDU1BWaW9sYXRpb24sIGJ1aWxkQ1NQVmlv
bGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0aXZlVGV4dCkpOwogfQogCi1SZWY8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoY29uc3QgSW5qZWN0ZWRTY3JpcHQmIGluamVj
dGVkU2NyaXB0KQorUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJh
bWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcyhjb25zdCBJbmpl
Y3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQpCiB7CiAgICAgQVNTRVJUKCFpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0g
ICAgICAgIHJldHVybiBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIAogICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdC53cmFwQ2FsbEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2suZ2V0KCkpOwogfQpA
QCAtMTAwOSw3ICsxMDA1LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVz
ZShKU0M6OkV4ZWNTdGF0ZSYgc2NyaXB0U3RhdGUsIEpTQzo6SlNWYWx1ZQogICAgIG1fY29uZGl0
aW9uVG9EaXNwYXRjaFJlc3VtZWQgPSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6Ok5vOwogICAgIG1f
ZW5hYmxlUGF1c2VXaGVuSWRsZSA9IGZhbHNlOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IGFzeW5jU3RhY2tUcmFjZTsKKyAgICBSZWZQdHI8
UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IGFzeW5jU3RhY2tUcmFjZTsKICAgICBpZiAo
bV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllcikgewogICAgICAgICBhdXRvIGl0ID0gbV9wZW5k
aW5nQXN5bmNDYWxscy5maW5kKG1fY3VycmVudEFzeW5jQ2FsbElkZW50aWZpZXIudmFsdWUoKSk7
CiAgICAgICAgIGlmIChpdCAhPSBtX3BlbmRpbmdBc3luY0NhbGxzLmVuZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDM2ZDU4YzMzYjIyNTQ4MzU0MGRhMjE0YTM4MDIyNDJj
OTdkYjJlZDIuLmE1NDEyODQ3OGZmMDM5YTYyM2U1N2I2ZjZiZjVlNjA5MWZiNzhjMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTYzLDE0ICs2MywxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRBc3luY1N0
YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAgICAgdm9pZCBz
ZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBmaW5hbDsKLSAg
ICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0
IEpTT046Ok9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZCosIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOwotICAgIHZvaWQgc2V0QnJlYWtw
b2ludChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpT
T046Ok9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
JiBhY3R1YWxMb2NhdGlvbikgZmluYWw7CisgICAgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJy
b3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVt
YmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkKiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCog
b3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKSBmaW5hbDsKICAgICB2b2lk
IHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVlVW50aWxOZXh0UnVuTG9vcChFcnJv
clN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5n
JiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBzZWFyY2hJ
bkNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JikgZmluYWw7CisgICAg
dm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElE
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOwogICAgIHZvaWQgZ2V0U2Ny
aXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBz
Y3JpcHRTb3VyY2UpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5hbDsKKyAgICB2b2lkIGdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRy
PFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIGZpbmFsOwogICAgIHZvaWQg
cGF1c2UoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlc3VtZShFcnJvclN0cmluZyYp
IGZpbmFsOwogICAgIHZvaWQgc3RlcE92ZXIoRXJyb3JTdHJpbmcmKSBmaW5hbDsKQEAgLTc4LDgg
Kzc4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RlcE91dChFcnJvclN0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhdXNlU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgc2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JT
dHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFt
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCog
Y29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFs
dWUsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogY29uc3Qg
c2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdElu
ZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nKiBjb25zdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1l
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQ
cmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBz
dGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZvaWQgc2V0
T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgaXNQYXVzZWQoKSBjb25zdDsKICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkg
Y29uc3Q7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDbGVhckFzeW5jU3RhY2tUcmFjZURhdGEoKSB7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3Vy
cmVudENhbGxGcmFtZXMoY29uc3QgSW5qZWN0ZWRTY3JpcHQmKTsKKyAgICBSZWY8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNv
bnN0IEluamVjdGVkU2NyaXB0Jik7CiAKICAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291
cmNlSUQsIGNvbnN0IFNjcmlwdCYpIGZpbmFsOwogICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJj
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBp
bnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9ySGVhcEFnZW50LmNwcAppbmRleCBmNjhkMWNhNDI3Y2VmZDFmNmRmMTMwODc3NWRmNmE0NTAy
YzI0ZjczLi4xODhjNTliYmI5ZDg4Y2QwZDA5NGY5YzlhOWI4NWI0M2JjZDU0MzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGQ6Om9wdGlvbmFsPEhl
YXBTbmFwc2hvdE5vZGU+IEluc3BlY3RvckhlYXBBZ2VudDo6bm9kZUZvckhlYXBPYmplY3RJZGVu
dGlmaWVyKAogICAgIHJldHVybiBvcHRpb25hbE5vZGU7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVh
cEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmpl
Y3RJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHJlc3VsdFN0cmlu
ZywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+
JiBmdW5jdGlvbkRldGFpbHMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpP
YmplY3RQcmV2aWV3PiYgb2JqZWN0UHJldmlldykKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojpn
ZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+JiByZXN1bHRTdHJpbmcsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdn
ZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGZ1bmN0aW9uRGV0YWlscywgUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpPYmplY3RQcmV2aWV3PiYgb2JqZWN0UHJldmlldykKIHsKICAgICAvLyBQcmV2ZW50
IHRoZSBjZWxsIGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMgd2UgbG9vayBpdCB1cC4KICAgICBW
TSYgdm0gPSBtX2Vudmlyb25tZW50LnZtKCk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBJbnNw
ZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
aGVhcE9iamVjdElkLAogICAgIG9iamVjdFByZXZpZXcgPSBpbmplY3RlZFNjcmlwdC5wcmV2aWV3
VmFsdWUoY2VsbCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRSZW1vdGVPYmpl
Y3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckhlYXBBZ2Vu
dDo6Z2V0UmVtb3RlT2JqZWN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmpl
Y3RJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbE9iamVjdEdyb3VwLCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAgICAvLyBQcmV2ZW50
IHRoZSBjZWxsIGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMgd2UgbG9vayBpdCB1cC4KICAgICBW
TSYgdm0gPSBtX2Vudmlyb25tZW50LnZtKCk7CkBAIC0yNTAsMTYgKzI1MCwxNiBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IGhlYXBPYmplYwogICAgIHJlc3VsdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qo
Y2VsbCwgb2JqZWN0R3JvdXAsIHRydWUpOwogfQogCi1zdGF0aWMgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJh
dGlvbihDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCitzdGF0aWMgUHJvdG9jb2w6OkhlYXA6OkdhcmJh
Z2VDb2xsZWN0aW9uOjpUeXBlIHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oQ29sbGVjdGlv
blNjb3BlIHNjb3BlKQogewogICAgIHN3aXRjaCAoc2NvcGUpIHsKICAgICBjYXNlIENvbGxlY3Rp
b25TY29wZTo6RnVsbDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6
OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOworICAgICAgICByZXR1cm4gUHJvdG9jb2w6
OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwogICAgIGNhc2UgQ29sbGVjdGlv
blNjb3BlOjpFZGVuOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6
R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OlBhcnRpYWw7CisgICAgICAgIHJldHVybiBQcm90b2Nv
bDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OlBhcnRpYWw7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFw
OjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKKyAgICByZXR1cm4gUHJvdG9jb2w6Okhl
YXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwogfQogCiB2b2lkIEluc3BlY3Rvckhl
YXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsZWN0KCkKQEAgLTMwMSw5ICszMDEsOSBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6Y2xlYXJIZWFwU25hcHNob3RzKCkKICAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySGVhcEFnZW50OjpkaXNwYXRjaEdhcmJhZ2VDb2xsZWN0ZWRFdmVudChJbnNwZWN0
b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZSB0eXBlLCBkb3VibGUg
c3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSkKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaXNw
YXRjaEdhcmJhZ2VDb2xsZWN0ZWRFdmVudChQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rp
b246OlR5cGUgdHlwZSwgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUpCiB7Ci0gICAg
YXV0byBwcm90b2NvbE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VD
b2xsZWN0aW9uOjpjcmVhdGUoKQorICAgIGF1dG8gcHJvdG9jb2xPYmplY3QgPSBQcm90b2NvbDo6
SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRUeXBlKHR5cGUp
CiAgICAgICAgIC5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKQogICAgICAgICAuc2V0RW5kVGltZShl
bmRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAppbmRleCBkYWUzNTcxMDMzYTI3ZjhlMDM1MzFk
ZDkxMWNhNWYxNDAxNzZhYmE1Li5iZTMwOTM3NjZkZTQ0MGVkMWQxOWM4Y2Q1YTUzYzFmZDA1YmJh
MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JIZWFwQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzbmFwc2hvdChFcnJvclN0cmluZyYsIGRvdWJsZSogdGltZXN0YW1wLCBTdHJpbmcq
IHNuYXBzaG90RGF0YSkgZmluYWw7CiAgICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmcoRXJyb3JTdHJpbmcmKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFByZXZpZXcoRXJyb3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcmVzdWx0U3RyaW5nLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGZ1bmN0aW9uRGV0
YWlscywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+
JiBvYmplY3RQcmV2aWV3KSBmaW5hbDsKLSAgICB2b2lkIGdldFJlbW90ZU9iamVjdChFcnJvclN0
cmluZyYsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxPYmpl
Y3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdCkgZmluYWw7CisgICAgdm9pZCBnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiwgaW50
IGhlYXBPYmplY3RJZCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiByZXN1bHRTdHJpbmcsIFJlZlB0
cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mLCBSZWZQdHI8UHJvdG9jb2w6
OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JikgZmluYWw7CisgICAgdm9pZCBnZXRSZW1vdGVPYmpl
Y3QoRXJyb3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9w
dGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiYgcmVzdWx0KSBmaW5hbDsKIAogICAgIC8vIEhlYXBPYnNlcnZlcgogICAgIHZvaWQgd2lsbEdh
cmJhZ2VDb2xsZWN0KCkgb3ZlcnJpZGU7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGNsZWFySGVhcFNuYXBzaG90cygpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoR2FyYmFnZUNvbGxlY3RlZEV2ZW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6
OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGlt
ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoR2FyYmFnZUNvbGxlY3RlZEV2ZW50KFByb3Rv
Y29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZSwgZG91YmxlIHN0YXJ0VGltZSwgZG91
YmxlIGVuZFRpbWUpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpIZWFwU25h
cHNob3ROb2RlPiBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoRXJyb3JTdHJpbmcmLCB1bnNp
Z25lZCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cAppbmRleCBiMDdhYTc0ZGRmZTdiZDQyZWRiMGI2YTdmNmM1YWYwNDIyZjU4ZGUxLi44MTk2NGZj
OWZkYzY3MWZjM2Y5MDlkODgzZDIyZjI1N2FlOWUyNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAKQEAgLTQ3LDEzICs0NywxMyBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Ci0KIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1zdGF0aWMgYm9vbCBhc0Jvb2woY29uc3QgYm9v
bCogY29uc3QgYikKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3N0YXRpYyBib29sIGFzQm9vbChj
b25zdCBib29sKiBiKQogewotICAgIHJldHVybiBiID8gKmIgOiBmYWxzZTsKKyAgICByZXR1cm4g
YiAmJiAqYjsKIH0KIAogSW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdl
bnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQpAQCAtNzAsMjEgKzcwLDIxIEBAIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpCiAKIHN0YXRpYyBTY3JpcHREZWJ1
Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6
OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgbmV3U3RhdGUpCiB7Ci0gICAgU2NyaXB0RGVidWdTZXJ2
ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJlc2VudFN0YXRlID0gc2NyaXB0RGVidWdTZXJ2
ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOworICAgIGF1dG8gcHJlc2VudFN0YXRlID0gc2Ny
aXB0RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwogICAgIGlmIChwcmVzZW50
U3RhdGUgIT0gbmV3U3RhdGUpCiAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUobmV3U3RhdGUpOwogICAgIHJldHVybiBwcmVzZW50U3RhdGU7CiB9CiAK
LXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVp
bGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikK
K3N0YXRpYyBSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IGJ1aWxkRXJyb3JSYW5n
ZU9iamVjdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRpb24pCiB7Ci0gICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCisg
ICAgcmV0dXJuIFByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0U3RhcnRPZmZzZXQodG9rZW5Mb2NhdGlvbi5zdGFydE9mZnNldCkKICAgICAgICAgLnNl
dEVuZE9mZnNldCh0b2tlbkxvY2F0aW9uLmVuZE9mZnNldCkKICAgICAgICAgLnJlbGVhc2UoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50
YXhFcnJvclR5cGUqIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmlu
Zz4qIG1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFcnJvclJh
bmdlPiYgcmFuZ2UpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFByb3RvY29sOjpSdW50aW1lOjpTeW50YXhF
cnJvclR5cGUqIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBtZXNzYWdlLCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5nZSkKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhtX3ZtKTsKIApAQCAtOTMsMjYgKzkzLDI2IEBAIHZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5z
cGVjCiAKICAgICBzd2l0Y2ggKGVycm9yLnN5bnRheEVycm9yVHlwZSgpKSB7CiAgICAgY2FzZSBQ
YXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOgotICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOworICAgICAgICAqcmVz
dWx0ID0gUHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6Tm9uZTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJlY292ZXJhYmxlOgot
ICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJy
b3JUeXBlOjpJcnJlY292ZXJhYmxlOworICAgICAgICAqcmVzdWx0ID0gUHJvdG9jb2w6OlJ1bnRp
bWU6OlN5bnRheEVycm9yVHlwZTo6SXJyZWNvdmVyYWJsZTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRMaXRlcmFsOgotICAgICAg
ICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBl
OjpVbnRlcm1pbmF0ZWRMaXRlcmFsOworICAgICAgICAqcmVzdWx0ID0gUHJvdG9jb2w6OlJ1bnRp
bWU6OlN5bnRheEVycm9yVHlwZTo6VW50ZXJtaW5hdGVkTGl0ZXJhbDsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JSZWNvdmVyYWJsZToKLSAgICAgICAg
KnJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6
UmVjb3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBQcm90b2NvbDo6UnVudGltZTo6U3ludGF4
RXJyb3JUeXBlOjpSZWNvdmVyYWJsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYg
KGVycm9yLnN5bnRheEVycm9yVHlwZSgpICE9IFBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmUp
IHsKLSAgICAgICAgKm1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlKCk7CisgICAgICAgIG1lc3NhZ2Ug
PSBlcnJvci5tZXNzYWdlKCk7CiAgICAgICAgIHJhbmdlID0gYnVpbGRFcnJvclJhbmdlT2JqZWN0
KGVycm9yLnRva2VuKCkubV9sb2NhdGlvbik7CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJv
b2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8Ym9vbD4qIG91dF93YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxpbnQ+KiBvdXRfc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiByZXR1
cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVS
ZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiBvdXRXYXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2
ZWRSZXN1bHRJbmRleCkKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGlu
amVjdGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0cmluZywgZXhlY3V0aW9uQ29udGV4dElkKTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpAQCAtMTI0LDE1ICsxMjQsOSBAQCB2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGV4cAogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlKSkKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKIAotICAgIC8vIEZJ
WE1FOiByZW1vdmUgdGhpcyBicmlkZ2luZyBjb2RlIHdoZW4gZ2VuZXJhdGVkIHByb3RvY29sIGNv
bW1hbmRzIG5vIGxvbmdlciB1c2UgT3B0T3V0cHV0PFQ+LgotICAgIC8vIDxodHRwczovL3d3dy53
ZWJraXQub3JnL2IvMTgwNjA3PgogICAgIGJvb2wgd2FzVGhyb3duOwotICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlKGVy
cm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6IFN0cmlu
ZygpLCBhc0Jvb2woaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgYXNCb29sKHJldHVybkJ5VmFsdWUp
LCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgYXNCb29sKHNhdmVSZXN1bHQpLCByZXN1bHQsIHdh
c1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7Ci0gICAgCi0gICAgKm91dF93YXNUaHJvd24gPSB3
YXNUaHJvd247Ci0gICAgaWYgKHNhdmVkUmVzdWx0SW5kZXguaGFzX3ZhbHVlKCkpCi0gICAgICAg
ICpvdXRfc2F2ZWRSZXN1bHRJbmRleCA9IHNhdmVkUmVzdWx0SW5kZXgudmFsdWUoKTsKKyAgICBv
dXRXYXNUaHJvd24gPSB3YXNUaHJvd247CiAKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpIHsKICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwpAQCAt
MTQwLDcgKzEzNCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwCiAgICAgfQogfQogCi12b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3Qg
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCBy
ZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogb3V0X3dhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSlNP
Tjo6QXJyYXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJv
b2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIG91dFdhc1Rocm93bikKIHsKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE2Miw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbgogCiAgICAgaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uT24oZXJyb3JTdHJpbmcsIG9i
amVjdElkLCBleHByZXNzaW9uLCBhcmd1bWVudHMsIGFzQm9vbChyZXR1cm5CeVZhbHVlKSwgYXNC
b29sKGdlbmVyYXRlUHJldmlldyksIHJlc3VsdCwgd2FzVGhyb3duKTsKIAotICAgICpvdXRfd2Fz
VGhyb3duID0gd2FzVGhyb3duOworICAgIG91dFdhc1Rocm93biA9IHdhc1Rocm93bjsKIAogICAg
IGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkgewogICAg
ICAgICB1bm11dGVDb25zb2xlKCk7CkBAIC0xNzAsNyArMTY0LDcgQEAgdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW4KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcmV2
aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBwcmV2aWV3
KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRp
bWU6Ok9iamVjdFByZXZpZXc+JiBwcmV2aWV3KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmpl
Y3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpA
QCAtMTg3LDcgKzE4MSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcmV2aWV3
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvCiAgICAgc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBwcmV2aW91c1BhdXNlT25FeGNl
cHRpb25zU3RhdGUpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVy
dGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNv
bnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
aW50ZXJuYWxQcm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJu
YWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQogewogICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewpAQCAtMjA1LDcgKzE5OSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
CiAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBwcmV2
aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9w
ZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5h
bFByb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4m
IGludGVybmFsUHJvcGVydGllcykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2Jq
ZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTIyMyw3
ICsyMTcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgIHNldFBhdXNlT25FeGNlcHRp
b25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbGxlY3Rpb25FbnRy
aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgaW50KiBzdGFydEluZGV4LCBjb25zdCBpbnQq
IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKQordm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3Qg
aW50KiBzdGFydEluZGV4LCBjb25zdCBpbnQqIG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiYgZW50cmllcykKIHsK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTIzNyw3ICsyMzEsNyBAQCB2b2lkIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldENvbGxlY3Rpb25FbnRyaWVzKGVycm9y
U3RyaW5nLCBvYmplY3RJZCwgb2JqZWN0R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiBTdHJpbmcoKSwg
c3RhcnQsIGZldGNoLCBlbnRyaWVzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3Qm
IGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvdXRfc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgSlNPTjo6T2JqZWN0JiBjYWxsQXJndW1lbnQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29u
dGV4dElkLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQ7CiAKQEAgLTI1NCwxNCArMjQ4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBKU09OOjpPYmoKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
Ly8gRklYTUU6IHJlbW92ZSB0aGlzIGJyaWRnaW5nIGNvZGUgd2hlbiBnZW5lcmF0ZWQgcHJvdG9j
b2wgY29tbWFuZHMgbm8gbG9uZ2VyIHVzZSBPcHRPdXRwdXQ8VD4uCi0gICAgLy8gPGh0dHBzOi8v
d3d3LndlYmtpdC5vcmcvYi8xODA2MDc+Ci0gICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNhdmVkUmVz
dWx0SW5kZXg7Ci0KICAgICBpbmplY3RlZFNjcmlwdC5zYXZlUmVzdWx0KGVycm9yU3RyaW5nLCBj
YWxsQXJndW1lbnQudG9KU09OU3RyaW5nKCksIHNhdmVkUmVzdWx0SW5kZXgpOwotCi0gICAgaWYg
KHNhdmVkUmVzdWx0SW5kZXguaGFzX3ZhbHVlKCkpCi0gICAgICAgICpvdXRfc2F2ZWRSZXN1bHRJ
bmRleCA9IHNhdmVkUmVzdWx0SW5kZXgudmFsdWUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkKQpAQCAtMjc2LDExICsyNjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJl
bGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWMKICAgICBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXApOwog
fQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFi
bGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkm
IGxvY2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCit2b2lkIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+JiB0eXBl
RGVzY3JpcHRpb25zKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
IAotICAgIHR5cGVEZXNjcmlwdGlvbnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIHR5cGVEZXNjcmlw
dGlvbnMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+
OjpjcmVhdGUoKTsKICAgICBpZiAoIW1fdm0udHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBU
eXBlIEluZm9ybWF0aW9uLiIpOwogICAgICAgICByZXR1cm47CkBAIC0zMTcsNyArMzA0LDcgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0
T2Zmc2V0cyhFcnJvclN0cmluZyYgZXIKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxp
ZCA9IHR5cGVMb2NhdGlvbiAmJiB0eXBlU2V0ICYmICF0eXBlU2V0LT5pc0VtcHR5KCk7Ci0gICAg
ICAgIGF1dG8gZGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBl
RGVzY3JpcHRpb246OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBQcm90b2Nv
bDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldElz
VmFsaWQoaXNWYWxpZCkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CiAKQEAgLTMzMyw3ICszMjAs
NyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFi
bGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcgogCiAgICAgZG91YmxlIGVuZCA9IGN1cnJlbnRU
aW1lTVMoKTsKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZ0YoIkluc3BlY3Rvcjo6
Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzIHRvb2sgJWxmbXNcbiIsIGVuZCAt
IHN0YXJ0KTsKKyAgICAgICAgZGF0YUxvZ0YoImdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0
T2Zmc2V0cyB0b29rICVsZm1zXG4iLCBlbmQgLSBzdGFydCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c29uIHJlYXNvbikKQEAgLTM5MSw3ICszNzgsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6c2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRTdGF0ZShib29sIGlzQ29udHJvbEZsbwog
ICAgIH0pOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3Mo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2lj
QmxvY2s+PiYgYmFzaWNCbG9ja3MpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFz
aWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlE
QXNTdHJpbmcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIGlmICghbV92bS5jb250cm9sRmxvd1Byb2ZpbGVy
KCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBkb2VzIG5v
dCBjdXJyZW50bHkgaGF2ZSBhIENvbnRyb2wgRmxvdyBQcm9maWxlci4iKTsKQEAgLTQwMiw5ICsz
ODksOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGludHB0cl90IHNvdXJjZUlEID0g
c291cmNlSURBc1N0cmluZy50b0ludFB0clN0cmljdCgmb2theSk7CiAgICAgQVNTRVJUKG9rYXkp
OwogICAgIGNvbnN0IFZlY3RvcjxCYXNpY0Jsb2NrUmFuZ2U+JiBiYXNpY0Jsb2NrUmFuZ2VzID0g
bV92bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tzRm9yU291cmNlSUQoc291
cmNlSUQsIG1fdm0pOwotICAgIGJhc2ljQmxvY2tzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPjo6Y3JlYXRlKCk7CisgICAgYmFzaWNCbG9j
a3MgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChjb25zdCBCYXNpY0Jsb2NrUmFuZ2UmIGJsb2NrIDogYmFzaWNCbG9ja1Jh
bmdlcykgewotICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNC
bG9jaz4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2Nr
OjpjcmVhdGUoKQorICAgICAgICBhdXRvIGxvY2F0aW9uID0gUHJvdG9jb2w6OlJ1bnRpbWU6OkJh
c2ljQmxvY2s6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0U3RhcnRPZmZzZXQoYmxvY2subV9z
dGFydE9mZnNldCkKICAgICAgICAgICAgIC5zZXRFbmRPZmZzZXQoYmxvY2subV9lbmRPZmZzZXQp
CiAgICAgICAgICAgICAuc2V0SGFzRXhlY3V0ZWQoYmxvY2subV9oYXNFeGVjdXRlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggMmQ1ZDI5MTc1Njc5OWQ3ZWVhYzllN2I2MGY3NDZl
NGU1YWEyOWFlYi4uMjk5MjdiMWY0OTcxZGZiNTEwMDQxYzM1YTcyN2FmMjIwZmRlMDFmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTU3LDIyICs1NywyMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVkID0gdHJ1
ZTsgfQogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVk
ID0gZmFsc2U7IH0KLSAgICB2b2lkIHBhcnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUq
IHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2Us
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlPiYpIGZpbmFs
OwotICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGNvbnN0IGV4ZWN1dGlvbkNvbnRleHRJZCwg
Y29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJh
dGVQcmV2aWV3LCBjb25zdCBib29sKiBjb25zdCBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOwotICAgIHZvaWQgY2FsbEZ1
bmN0aW9uT24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29u
c3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYgbWVzc2FnZSwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpFcnJv
clJhbmdlPiYpIGZpbmFsOworICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wq
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9v
bCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29s
KiBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4m
IHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVl
LCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24pIGZp
bmFsOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyYsIGNvbnN0IEVycm9yU3Ry
aW5nJiBvYmplY3RJZCkgZmluYWw7Ci0gICAgdm9pZCBnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6Ok9iamVjdFByZXZpZXc+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qgb3duUHJv
cGVydGllcywgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZp
bmFsOwotICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFBy
b3BlcnRpZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdy
b3VwLCBjb25zdCBpbnQqIGNvbnN0IHN0YXJ0SW5kZXgsIGNvbnN0IGludCogY29uc3QgbnVtYmVy
VG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOwotICAgIHZvaWQgc2F2ZVJlc3Vs
dChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgY2FsbEFyZ3VtZW50LCBjb25zdCBp
bnQqIGNvbnN0IGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJldmlldyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6T2JqZWN0UHJldmlldz4mKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0
aWVzLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJv
cGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wq
IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3Bl
cnRpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25z
dCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKSBm
aW5hbDsKKyAgICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmpl
Y3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIHN0ZDo6b3B0
aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CiAgICAgdm9pZCByZWxlYXNlT2Jq
ZWN0R3JvdXAoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKSBmaW5hbDsK
LSAgICB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmlu
ZyYsIGNvbnN0IEpTT046OkFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJp
bmcmLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVycmlkZTsKICAgICB2b2lk
IGVuYWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
YWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxl
Q29udHJvbEZsb3dQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
YWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEJhc2ljQmxvY2tzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBpbl9zb3VyY2VJRCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNC
bG9jaz4+JiBvdXRfYmFzaWNCbG9ja3MpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QmFzaWNCbG9j
a3MoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBvdXRfYmFzaWNCbG9ja3Mp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVk
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
NWU4OTVhZTg1MjAxNWI5ZDRjZDA1NTFjZjFiODliYjhlZjYzM2Y0NC4uNTk3ZTA4ZWQ4YTFhZjgx
MzQwYTMzOTFiMTQzYTZiYWE1MWU3M2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c28KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRU
cmFja2luZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVTYW1wbGVzKQor
dm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFydFRyYWNraW5nKEVycm9yU3Ry
aW5nJiwgY29uc3QgYm9vbCogaW5jbHVkZVNhbXBsZXMpCiB7CiAgICAgaWYgKG1fdHJhY2tpbmcp
CiAgICAgICAgIHJldHVybjsKQEAgLTEzNSwyNiArMTM1LDI2IEBAIHZvaWQgSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudDo6ZGlkRXZhbHVhdGVTY3JpcHQoZG91YmxlIHN0YXJ0VGltZSwgUHJv
ZmlsaW5nCiAgICAgYWRkRXZlbnQoc3RhcnRUaW1lLCBlbmRUaW1lLCByZWFzb24pOwogfQogCi1z
dGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlwZSB0b1By
b3RvY29sKFByb2ZpbGluZ1JlYXNvbiByZWFzb24pCitzdGF0aWMgUHJvdG9jb2w6OlNjcmlwdFBy
b2ZpbGVyOjpFdmVudFR5cGUgdG9Qcm90b2NvbChQcm9maWxpbmdSZWFzb24gcmVhc29uKQogewog
ICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAgY2FzZSBQcm9maWxpbmdSZWFzb246OkFQSToKLSAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVudFR5
cGU6OkFQSTsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnRU
eXBlOjpBUEk7CiAgICAgY2FzZSBQcm9maWxpbmdSZWFzb246Ok1pY3JvdGFzazoKLSAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVudFR5cGU6Ok1p
Y3JvdGFzazsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnRU
eXBlOjpNaWNyb3Rhc2s7CiAgICAgY2FzZSBQcm9maWxpbmdSZWFzb246Ok90aGVyOgotICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlwZTo6
T3RoZXI7CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlw
ZTo6T3RoZXI7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVudFR5cGU6Ok90aGVyOwor
ICAgIHJldHVybiBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlwZTo6T3RoZXI7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6YWRkRXZlbnQoZG91YmxlIHN0
YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24pCiB7CiAgICAg
QVNTRVJUKGVuZFRpbWUgPj0gc3RhcnRUaW1lKTsKIAotICAgIGF1dG8gZXZlbnQgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnQ6OmNyZWF0ZSgpCisgICAgYXV0byBl
dmVudCA9IFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnQ6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKQogICAgICAgICAuc2V0RW5kVGltZShlbmRUaW1lKQog
ICAgICAgICAuc2V0VHlwZSh0b1Byb3RvY29sKHJlYXNvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmgKaW5kZXggYzliODc2MDdjZjhjMWJlNWJhYjEwN2JmZGViZWJl
N2U5Y2IxMDVjOC4uMmMyZmE2MGU3MmQ0NWU3NWNlNmE5NzNhMTU3ODBjNGQzMzg1MDNmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaApAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25u
ZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIFNjcmlwdFByb2ZpbGVyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyCi0gICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3Qg
Ym9vbCogY29uc3QgaW5jbHVkZVNhbXBsZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRUcmFj
a2luZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGluY2x1ZGVTYW1wbGVzKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0b3BUcmFja2luZyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBwcm9ncmFtbWF0aWNDYXB0dXJlU3RhcnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0
b3IucHkKaW5kZXggYTkwYzBkYmZlNjZkMGM0ZTQzYmQ0MDZmYzFkODhiODU4OGVjYjI4Mi4uMTY1
MjY0MTQ5NzI1N2E3MWJlODkyYjU2YjExNjBhNjg1ZjFiZWI5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9j
cHBfZ2VuZXJhdG9yLnB5CkBAIC0xNDIsNyArMTQyLDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgog
ICAgICAgICAgICAgY3BwX25hbWUgPSBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2
ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAg
ICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqIGNvbnN0JyAlIGNwcF9uYW1lCisgICAgICAg
ICAgICAgICAgcmV0dXJuICdjb25zdCAlcyonICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsaWYg
X3R5cGUucmF3X25hbWUoKSBpbiBbJ3N0cmluZyddOgogICAgICAgICAgICAgICAgIHJldHVybiAn
Y29uc3QgJXMmJyAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTY1LDcgKzE2NSw3
IEBAIGNsYXNzIENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpZiBpc2luc3RhbmNl
KF90eXBlLCBBbGlhc2VkVHlwZSk6CiAgICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBDcHBHZW5l
cmF0b3IuY3BwX3Byb3RvY29sX3R5cGVfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBp
c19vcHRpb25hbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKiBjb25zdCcgJSBi
dWlsZGVyX3R5cGUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKicgJSBidWlsZGVy
X3R5cGUKICAgICAgICAgICAgIGVsaWYgX3R5cGUuYWxpYXNlZF90eXBlLnF1YWxpZmllZF9uYW1l
KCkgaW4gWydpbnRlZ2VyJywgJ251bWJlciddOgogICAgICAgICAgICAgICAgIHJldHVybiBDcHBH
ZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlLmFsaWFzZWRfdHlwZSkK
ICAgICAgICAgICAgIGVsaWYgX3R5cGUuYWxpYXNlZF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4g
WydzdHJpbmcnXToKQEAgLTE3OSw3ICsxNzksNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJh
dG9yKToKICAgICAgICAgICAgIGVsaWYgX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ2FueSdd
OgogICAgICAgICAgICAgICAgIHJldHVybiAnUmVmUHRyPEpTT046OlZhbHVlPicKICAgICAgICAg
ICAgIGVsaWYgaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyog
Y29uc3QnICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKicgJSBj
cHBfbmFtZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnc3Ry
aW5nJ106CiAgICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgY3BwX25hbWUKICAg
ICAgICAgICAgIGVsc2U6CkBAIC0yMDcsNyArMjA3LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgog
ICAgICAgICAgICAgY3BwX25hbWUgPSBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2
ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAg
ICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPioi
ICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gInN0ZDo6b3B0aW9uYWw8JXM+JiIg
JSBjcHBfbmFtZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gJyVz
KicgJSBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CkBA
IC0yMzMsNyArMjMzLDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAg
IGlmIGlzaW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25h
bWUgPSBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAg
ICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVy
biAiSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPioiICUgY3BwX25hbWUKKyAgICAg
ICAgICAgICAgICByZXR1cm4gInN0ZDo6b3B0aW9uYWw8JXM+JiIgJSBjcHBfbmFtZQogICAgICAg
ICAgICAgZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnaW50ZWdlcicsICdudW1iZXIn
XToKICAgICAgICAgICAgICAgICByZXR1cm4gQ3BwR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmlt
aXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGVsaWYgX3R5cGUucXVhbGlmaWVkX25hbWUo
KSBpbiBbJ3N0cmluZyddOgpAQCAtMjY1LDcgKzI2NSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICAgICAgaWYgX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ2Fu
eScsICdvYmplY3QnXToKICAgICAgICAgICAgICAgICByZXR1cm4gIlJlZlB0cjwlcz4iICUgQ3Bw
R2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAg
IGVsaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsIGFuZCBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIG5v
dCBpbiBbJ2Jvb2xlYW4nLCAnc3RyaW5nJywgJ2ludGVnZXInXToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIkluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDwlcz4iICUgY3BwX25hbWUKKyAg
ICAgICAgICAgICAgICByZXR1cm4gInN0ZDo6b3B0aW9uYWw8JXM+IiAlIGNwcF9uYW1lCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiBjcHBfbmFtZQogCkBAIC0yNzcs
MTIgKzI3NywxMiBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYg
aXNpbnN0YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpOgogICAgICAgICAgICAgYnVpbGRlcl90eXBl
ID0gQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKF90eXBlKQogICAgICAg
ICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAi
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPiIgJSBidWlsZGVyX3R5cGUKKyAgICAg
ICAgICAgICAgICByZXR1cm4gInN0ZDo6b3B0aW9uYWw8JXM+IiAlIGJ1aWxkZXJfdHlwZQogICAg
ICAgICAgICAgcmV0dXJuICclcycgJSBidWlsZGVyX3R5cGUKICAgICAgICAgaWYgaXNpbnN0YW5j
ZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFtZSA9IENwcEdlbmVy
YXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBw
YXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8JXM+IiAlIGNwcF9uYW1lCisgICAgICAgICAgICAgICAgcmV0
dXJuICJzdGQ6Om9wdGlvbmFsPCVzPiIgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICByZXR1cm4gY3BwX25hbWUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlw
ZSwgRW51bVR5cGUpOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weQppbmRleCA5NzkzMzJkZmYwZDJkZWUyNTZjMzdlNjZhMzZlZjU0YzBiMjkzZWY3Li5i
ZTFlY2QxOGJiY2IyYjQwN2RmZTg0NzczMzA0ODg4N2IzMzJjOTlmIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9y
X3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMjQ5LDkgKzI0OSw3IEBA
ICR7Y29uc3RydWN0b3JFeGFtcGxlfQogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJlc3VsdDsK
ICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3QocmVzdWx0KTsKICAgICBB
U1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwotI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICBCaW5kaW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+Ojphc3NlcnRWYWx1ZUhh
c0V4cGVjdGVkVHlwZShyZXN1bHQuZ2V0KCkpOwotI2VuZGlmICAvLyAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCR7b2JqZWN0VHlwZX0pID09IHNpemVvZihKU09O
OjpPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDwke29iamVjdFR5cGV9Kj4oc3RhdGljX2Nhc3Q8SlNPTjo6T2JqZWN0QmFzZSo+KHJlc3VsdC5n
ZXQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXgg
ZDE3Y2UwMWRmYTljYjVkZjhlMWU5NDBlMGMyYzUzNWVjYjJlYjczMy4uYjkzZTYxN2Q1NTA4ZWFl
NjhiYTk2Yzk4YWQzZWMwZjU3YzA2OGQwZCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5CkBAIC0xNjMsOCArMTYzLDggQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogCiAgICAgICAgICAgICBp
ZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAgICAgICAgICAgaWYgQ3BwR2VuZXJhdG9y
LnNob3VsZF91c2Vfd3JhcHBlcl9mb3JfcmV0dXJuX3R5cGUocGFyYW1ldGVyLnR5cGUpOgotICAg
ICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGlm
ICglKHBhcmFtZXRlck5hbWUpcy5pc0Fzc2lnbmVkKCkpJyAlIHBhcmFtX2FyZ3MpCi0gICAgICAg
ICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGpz
b25NZXNzYWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktl
eSlzIiksICUocGFyYW1ldGVyTmFtZSlzLmdldFZhbHVlKCkpOycgJSBwYXJhbV9hcmdzKQorICAg
ICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGlm
ICglKHBhcmFtZXRlck5hbWUpcy5oYXNfdmFsdWUoKSknICUgcGFyYW1fYXJncykKKyAgICAgICAg
ICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNv
bk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5
KXMiKSwgKiUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFw
cGVuZCgnICAgIGlmICglKHBhcmFtZXRlck5hbWUpcyknICUgcGFyYW1fYXJncykKICAgICAgICAg
ICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNv
bk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5
KXMiKSwgJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQpAQCAtMjU2LDggKzI1Niw4
IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3Bw
R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2RlY2xhcmF0aW9ucy5h
cHBlbmQoJyAgICAlKHBhcmFtZXRlclR5cGUpcyBvdXRfJShwYXJhbWV0ZXJOYW1lKXM7JyAlIHBh
cmFtX2FyZ3MpCiAgICAgICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgogICAg
ICAgICAgICAgICAgICAgICBpZiBDcHBHZW5lcmF0b3Iuc2hvdWxkX3VzZV93cmFwcGVyX2Zvcl9y
ZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRf
cGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBpZiAob3V0XyUocGFyYW1ldGVy
TmFtZSlzLmlzQXNzaWduZWQoKSknICUgcGFyYW1fYXJncykKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgICAgICByZXN1bHQt
PiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgb3V0
XyUocGFyYW1ldGVyTmFtZSlzLmdldFZhbHVlKCkpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAg
aWYgKG91dF8lKHBhcmFtZXRlck5hbWUpcy5oYXNfdmFsdWUoKSknICUgcGFyYW1fYXJncykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcg
ICAgICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFy
YW1ldGVyS2V5KXMiKSwgKm91dF8lKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAg
ICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFy
YW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBpZiAob3V0XyUocGFyYW1ldGVyTmFt
ZSlzKScgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRl
cl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhv
ZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1l
KXMpOycgJSBwYXJhbV9hcmdzKQpAQCAtMjY2LDcgKzI2Niw3IEBAIGNsYXNzIENwcEJhY2tlbmRE
aXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1l
bnRzLmFwcGVuZCgnICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVy
YWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgb3V0XyUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1f
YXJncykKIAotICAgICAgICAgICAgICAgIGlmIENwcEdlbmVyYXRvci5zaG91bGRfcGFzc19ieV9j
b3B5X2Zvcl9yZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSk6CisgICAgICAgICAgICAgICAgaWYg
Q3BwR2VuZXJhdG9yLnNob3VsZF9wYXNzX2J5X2NvcHlfZm9yX3JldHVybl90eXBlKHBhcmFtZXRl
ci50eXBlKSBvciBwYXJhbWV0ZXIuaXNfb3B0aW9uYWwgYW5kIENwcEdlbmVyYXRvci5zaG91bGRf
dXNlX3dyYXBwZXJfZm9yX3JldHVybl90eXBlKHBhcmFtZXRlci50eXBlKToKICAgICAgICAgICAg
ICAgICAgICAgbWV0aG9kX3BhcmFtZXRlcnMuYXBwZW5kKCdvdXRfJyArIHBhcmFtZXRlci5wYXJh
bWV0ZXJfbmFtZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBt
ZXRob2RfcGFyYW1ldGVycy5hcHBlbmQoJyZvdXRfJyArIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9j
b2xfdHlwZXNfaGVhZGVyLnB5CmluZGV4IDJhMTU0ZTBhMTBlMjNmODZmZGJjODcxNjI0MTgzMjE2
NDE0OGYwYzQuLjRlZGFjNzQyOTA3NmQzN2Q2NTY3NDRlMmZkYTYxNmUzYTI0NTljMzEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5
cGVzX2hlYWRlci5weQpAQCAtMzY1LDkgKzM2NSw3IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNI
ZWFkZXJHZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
dGVtcGxhdGU8PiAlcyBCaW5kaW5nVHJhaXRzPCVzPiB7JyAlICgnICcuam9pbihzdHJ1Y3Rfa2V5
d29yZHMpLCBhcmd1bWVudFswXSkpCiAgICAgICAgICAgICBpZiBhcmd1bWVudFsxXToKICAgICAg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3N0YXRpYyBSZWZQdHI8JXM+IHJ1bnRpbWVDYXN0KFJl
ZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSk7JyAlIGFyZ3VtZW50WzBdKQotICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxFRCcpCiAgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyVzIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKik7JyAlICcg
Jy5qb2luKGZ1bmN0aW9uX2tleXdvcmRzKSkKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnI2Vu
ZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd9Oycp
CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1l
bnRhdGlvbi5weQppbmRleCAyZWIwNzYyZWZjNmY4OTY5ZDI4YTY1NzdlYTk2Yjk2ODNkNDdkYTUx
Li4xNmQ0ZjRhZjdiN2IwODU3YTZjNmVjMTE0YzY5NDJkMDFjYWMyZWI2IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5
cGVzX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0yMDUsOSArMjA1LDExIEBAIGNsYXNzIENwcFByb3Rv
Y29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICBz
aG91bGRfY291bnRfcHJvcGVydGllcyA9IG5vdCBHZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVs
ZHMob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUpCiAgICAgICAgIGxpbmVzID0gW10KIAotICAgICAg
ICBsaW5lcy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJU0FCTEVEJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCd2b2lkIEJpbmRpbmdUcmFpdHM8JXM+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShK
U09OOjpWYWx1ZSogdmFsdWUpJyAlIChDcHBHZW5lcmF0b3IuY3BwX3Byb3RvY29sX3R5cGVfZm9y
X3R5cGUob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUpKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCIi
InsKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworI2Vsc2UK
ICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4g
b2JqZWN0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChvYmplY3Qp
OwpAQCAtMjE5LDcgKzIyMSw3IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoIiIiICAgIHsKLSAgICAgICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciAlKG1l
bWJlck5hbWUpc1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlz
IikpOworICAgICAgICBhdXRvICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJ
TGl0ZXJhbCgiJShtZW1iZXJOYW1lKXMiKSk7CiAgICAgICAgIEFTU0VSVCglKG1lbWJlck5hbWUp
c1BvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICAgJShhc3NlcnRNZXRob2QpcyglKG1lbWJl
ck5hbWUpc1Bvcy0+dmFsdWUuZ2V0KCkpOwogICAgIH0iIiIgJSBhcmdzKQpAQCAtMjM1LDcgKzIz
Nyw3IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBH
ZW5lcmF0b3IpOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIi
ICAgIHsKLSAgICAgICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciAlKG1lbWJlck5hbWUpc1BvcyA9
IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlzIikpOworICAgICAgICBh
dXRvICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgiJShtZW1i
ZXJOYW1lKXMiKSk7CiAgICAgICAgIGlmICglKG1lbWJlck5hbWUpc1BvcyAhPSBvYmplY3QtPmVu
ZCgpKSB7CiAgICAgICAgICAgICAlKGFzc2VydE1ldGhvZClzKCUobWVtYmVyTmFtZSlzUG9zLT52
YWx1ZS5nZXQoKSk7IiIiICUgYXJncykKIApAQCAtMjQ3LDE1ICsyNDksMTcgQEAgY2xhc3MgQ3Bw
UHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAgICAg
ICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzOgogICAgICAgICAgICAgbGluZXMuYXBwZW5k
KCcgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKScpCiAgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJvcGVydGll
cyBpbiBvYmplY3Q6ICVzXFxuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcj
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAg
ICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Fzc2Vy
dGlvbl9mb3JfZW51bShzZWxmLCBlbnVtX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKToKICAg
ICAgICAgbGluZXMgPSBbXQotICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJU0FC
TEVEJykKICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkICVzKEpTT046OlZhbHVlKiB2YWx1ZSkn
ICUgQ3BwR2VuZXJhdG9yLmNwcF9hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlcihlbnVt
X21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykK
KyAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgQVNTRVJUX0RJU0FCTEVEJykKKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsnKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyNlbHNlJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQVNTRVJUX0FSRyh2YWx1ZSwg
dmFsdWUpOycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFN0cmluZyByZXN1bHQ7JykKICAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzU3Ry
aW5nKHJlc3VsdCk7JykKQEAgLTI2Myw3ICsyNjcsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5cGVz
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKIAogICAgICAgICBhc3NlcnRf
Y29uZGl0aW9uID0gJyB8fCAnLmpvaW4oWydyZXN1bHQgPT0gIiVzIicgJSBlbnVtX3ZhbHVlIGZv
ciBlbnVtX3ZhbHVlIGluIGVudW1fbWVtYmVyLnR5cGUuZW51bV92YWx1ZXMoKV0pCiAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVCglcyk7JyAlIGFzc2VydF9jb25kaXRpb24pCi0gICAg
ICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFB
U1NFUlRfRElTQUJMRUQnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogCiAgICAgICAgIHJl
dHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFz
eW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0
cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGNmNjAzNTA1YzY3YTlkMWFkMWVhNmYwODcyODY1NjVm
MjY5MzE5ZjQuLjU5MDBhZDU5NDRlMWUzYmU2YjRiNjMxNDhkNmQxM2NjOGQyMzAzZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0x
NTcsMTEgKzE1NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJs
YWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGludCBp
bl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PEpTT046Ok9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRf
b3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFi
YXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmlu
Zz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIG9wdF9vdXRf
bm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYgb3B0X291dF90aW1lc3RhbXAsIHN0ZDo6b3B0
aW9uYWw8SlNPTjo6T2JqZWN0PiYgb3B0X291dF92YWx1ZXMsIHN0ZDo6b3B0aW9uYWw8SlNPTjo6
VmFsdWU+JiBvcHRfb3V0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYgb3B0X291dF9kYXRh
YmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0
X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsK
ICAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrIDog
cHVibGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1YmxpYzoKICAg
ICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8QmFj
a2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7Ci0gICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVm
UHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNP
Tjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4m
JiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVl
bkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4m
JiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+
KiBwcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJy
YXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIG5vdGVz
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mIHRpbWVzdGFtcCwgc3RkOjpvcHRpb25hbDxKU09OOjpP
YmplY3Q+JiB2YWx1ZXMsIHN0ZDo6b3B0aW9uYWw8SlNPTjo6VmFsdWU+JiBwYXlsb2FkLCBzdGQ6
Om9wdGlvbmFsPGludD4mIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgc2NyZWVu
Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYm
IGFsdGVybmF0ZUNvbG9ycywgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBwcmludENvbG9yKTsKICAg
ICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5
LCBSZWY8RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjaz4mJiBjYWxs
YmFjaykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhFcnJvclN0cmluZyYs
IGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91
YmxlKiBvdXRfdGltZXN0YW1wLCBKU09OOjpPYmplY3QqIG91dF92YWx1ZXMsIEpTT046OlZhbHVl
KiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9y
LCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50
Q29sb3IpID0gMDsKQEAgLTI5NSwzOCArMjk1LDM4IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJ
CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEpTT046Ok9iamVjdD4gcmVzdWx0ID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiBvdXRfY29sdW1uTmFtZXM7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0
cmluZz4gb3V0X25vdGVzOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3Vi
bGU+IG91dF90aW1lc3RhbXA7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpT
T046Ok9iamVjdD4gb3V0X3ZhbHVlczsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxpbnQ+IG91dF9kYXRhYmFzZUlkOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBv
dXRfbm90ZXM7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG91dF90aW1lc3RhbXA7CisgICAg
c3RkOjpvcHRpb25hbDxKU09OOjpPYmplY3Q+IG91dF92YWx1ZXM7CisgICAgc3RkOjpvcHRpb25h
bDxKU09OOjpWYWx1ZT4gb3V0X3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG91dF9k
YXRhYmFzZUlkOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7CiAgICAgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7Ci0g
ICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhlcnJvciwgaW5f
ZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90
aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRf
c3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfcHJp
bnRDb2xvcik7CisgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1lcywgb3V0X25v
dGVzLCBvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCBvdXRfcGF5bG9hZCwgb3V0X2RhdGFiYXNl
SWQsIG91dF9zcWxFcnJvciwgb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBv
dXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CiAgICAgICAgIGlm
IChvdXRfY29sdW1uTmFtZXMpCiAgICAgICAgICAgICByZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiY29sdW1uTmFtZXMiKSwgb3V0X2NvbHVtbk5hbWVzKTsKLSAgICAgICAgaWYgKG91dF9u
b3Rlcy5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm5vdGVzIiksIG91dF9ub3Rlcy5nZXRWYWx1ZSgpKTsKLSAgICAgICAgaWYgKG91dF90
aW1lc3RhbXAuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXREb3VibGUoQVND
SUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKLSAgICAg
ICAgaWYgKG91dF92YWx1ZXMuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRP
YmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgb3V0X3ZhbHVlcy5nZXRWYWx1ZSgpKTsKLSAg
ICAgICAgaWYgKG91dF9wYXlsb2FkLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+
c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91dF9wYXlsb2FkLmdldFZhbHVlKCkp
OwotICAgICAgICBpZiAob3V0X2RhdGFiYXNlSWQuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAg
cmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJh
c2VJZC5nZXRWYWx1ZSgpKTsKKyAgICAgICAgaWYgKG91dF9ub3Rlcy5oYXNfdmFsdWUoKSkKKyAg
ICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgKm91dF9u
b3Rlcyk7CisgICAgICAgIGlmIChvdXRfdGltZXN0YW1wLmhhc192YWx1ZSgpKQorICAgICAgICAg
ICAgcmVzdWx0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgKm91dF90aW1l
c3RhbXApOworICAgICAgICBpZiAob3V0X3ZhbHVlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAg
IHJlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksICpvdXRfdmFsdWVzKTsK
KyAgICAgICAgaWYgKG91dF9wYXlsb2FkLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0
LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgKm91dF9wYXlsb2FkKTsKKyAgICAg
ICAgaWYgKG91dF9kYXRhYmFzZUlkLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5z
ZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCAqb3V0X2RhdGFiYXNlSWQpOwog
ICAgICAgICBpZiAob3V0X3NxbEVycm9yKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3Qo
QVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBvdXRfc3FsRXJyb3IpOwotICAgICAgICBpZiAob3V0
X3NjcmVlbkNvbG9yLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgb3V0X3NjcmVlbkNvbG9yLmdldFZhbHVlKCkp
OworICAgICAgICBpZiAob3V0X3NjcmVlbkNvbG9yLmhhc192YWx1ZSgpKQorICAgICAgICAgICAg
cmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCAqb3V0X3NjcmVl
bkNvbG9yKTsKICAgICAgICAgaWYgKG91dF9hbHRlcm5hdGVDb2xvcnMpCiAgICAgICAgICAgICBy
ZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIG91dF9hbHRl
cm5hdGVDb2xvcnMpOwotICAgICAgICBpZiAob3V0X3ByaW50Q29sb3IuaXNBc3NpZ25lZCgpKQot
ICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiks
IG91dF9wcmludENvbG9yLmdldFZhbHVlKCkpOworICAgICAgICBpZiAob3V0X3ByaW50Q29sb3Iu
aGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwo
InByaW50Q29sb3IiKSwgKm91dF9wcmludENvbG9yKTsKICAgICB9CiAgICAgaWYgKCFlcnJvci5s
ZW5ndGgoKSkKICAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVl
c3RJZCwgV1RGTW92ZShyZXN1bHQpLCBmYWxzZSk7CkBAIC0zMzYsMjkgKzMzNiwyOSBAQCB2b2lk
IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5W
YWx1ZXMobG9uZyByZXF1ZXN0SQogCiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYg
YmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlKFdURk1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYg
Y29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3Rl
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZhbHVlcywgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYg
Y29sdW1uTmFtZXMsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgbm90ZXMsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiYgdGltZXN0YW1wLCBzdGQ6Om9wdGlvbmFsPEpTT046Ok9iamVjdD4mIHZhbHVlcywg
c3RkOjpvcHRpb25hbDxKU09OOjpWYWx1ZT4mIHBheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYg
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4m
JiBzcWxFcnJvciwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHByaW50Q29sb3IpCiB7CiAgICAgUmVmPEpTT046Ok9i
amVjdD4ganNvbk1lc3NhZ2UgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGlmIChjb2x1
bW5OYW1lcykKICAgICAgICAganNvbk1lc3NhZ2UtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29s
dW1uTmFtZXMiKSwgY29sdW1uTmFtZXMpOwotICAgIGlmIChub3Rlcy5pc0Fzc2lnbmVkKCkpCi0g
ICAgICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBub3Rl
cy5nZXRWYWx1ZSgpKTsKLSAgICBpZiAodGltZXN0YW1wLmlzQXNzaWduZWQoKSkKLSAgICAgICAg
anNvbk1lc3NhZ2UtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3Rh
bXAuZ2V0VmFsdWUoKSk7Ci0gICAgaWYgKHZhbHVlcy5pc0Fzc2lnbmVkKCkpCi0gICAgICAgIGpz
b25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgdmFsdWVzLmdldFZh
bHVlKCkpOwotICAgIGlmIChwYXlsb2FkLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNvbk1lc3Nh
Z2UtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBwYXlsb2FkLmdldFZhbHVlKCkp
OwotICAgIGlmIChkYXRhYmFzZUlkLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNvbk1lc3NhZ2Ut
PnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIGRhdGFiYXNlSWQuZ2V0VmFs
dWUoKSk7CisgICAgaWYgKG5vdGVzLmhhc192YWx1ZSgpKQorICAgICAgICBqc29uTWVzc2FnZS0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgKm5vdGVzKTsKKyAgICBpZiAodGltZXN0
YW1wLmhhc192YWx1ZSgpKQorICAgICAgICBqc29uTWVzc2FnZS0+c2V0RG91YmxlKEFTQ0lJTGl0
ZXJhbCgidGltZXN0YW1wIiksICp0aW1lc3RhbXApOworICAgIGlmICh2YWx1ZXMuaGFzX3ZhbHVl
KCkpCisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMi
KSwgKnZhbHVlcyk7CisgICAgaWYgKHBheWxvYWQuaGFzX3ZhbHVlKCkpCisgICAgICAgIGpzb25N
ZXNzYWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgKnBheWxvYWQpOworICAg
IGlmIChkYXRhYmFzZUlkLmhhc192YWx1ZSgpKQorICAgICAgICBqc29uTWVzc2FnZS0+c2V0SW50
ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgKmRhdGFiYXNlSWQpOwogICAgIGlmIChz
cWxFcnJvcikKICAgICAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNx
bEVycm9yIiksIHNxbEVycm9yKTsKLSAgICBpZiAoc2NyZWVuQ29sb3IuaXNBc3NpZ25lZCgpKQot
ICAgICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3Ii
KSwgc2NyZWVuQ29sb3IuZ2V0VmFsdWUoKSk7CisgICAgaWYgKHNjcmVlbkNvbG9yLmhhc192YWx1
ZSgpKQorICAgICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVu
Q29sb3IiKSwgKnNjcmVlbkNvbG9yKTsKICAgICBpZiAoYWx0ZXJuYXRlQ29sb3JzKQogICAgICAg
ICBqc29uTWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwg
YWx0ZXJuYXRlQ29sb3JzKTsKLSAgICBpZiAocHJpbnRDb2xvci5pc0Fzc2lnbmVkKCkpCi0gICAg
ICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIHBy
aW50Q29sb3IuZ2V0VmFsdWUoKSk7CisgICAgaWYgKHByaW50Q29sb3IuaGFzX3ZhbHVlKCkpCisg
ICAgICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiks
ICpwcmludENvbG9yKTsKICAgICBDYWxsYmFja0Jhc2U6OnNlbmRTdWNjZXNzKFdURk1vdmUoanNv
bk1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDJlNzU4
MzgxNzMxYWI4MWM2MDE3ZjgwOGM5YjJhNTU2NjE4NGZkNjcuLmQ0YjExMjE5NzViMTJjYjdhNDk5
YWE4ZTIwNTIyMGIzZTYzNmU5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAg
LTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgog
ICAgIHZpcnR1YWwgfkFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSlNPTjo6QXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IGlu
X25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IGluX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVlKiBjb25zdCBpbl9wYXlsb2FkLCBjb25z
dCBpbnQqIGNvbnN0IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fc3FsRXJy
b3IsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5
KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fcHJpbnRDb2xvcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcg
Y2FsbElkLCBjb25zdCBKU09OOjpBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyog
aW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3Qq
IGluX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5f
ZGF0YWJhc2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5n
KiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSlNPTjo6QXJyYXkmIGlu
X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1w
LCBjb25zdCBKU09OOjpPYmplY3QmIGluX3ZhbHVlcywgSlNPTjo6VmFsdWUgaW5fcGF5bG9hZCwg
aW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0
IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5JiBpbl9hbHRlcm5hdGVD
b2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgPSAwOwogfTsKIApAQCAtMTUyLDcg
KzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93ID0gNSwKICAgICAgICAgQmxhY2sgPSA2
LAogICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xvcgotICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkq
IG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRfaW5fbm90ZXMsIGNv
bnN0IGRvdWJsZSogY29uc3Qgb3B0X2luX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRfaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSogY29uc3Qgb3B0X2luX3BheWxvYWQsIGNv
bnN0IGludCogY29uc3Qgb3B0X2luX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0
X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9zY3JlZW5Db2xvciwgY29u
c3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0X2luX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBvcHRf
b3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiog
b3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9w
dF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2Jq
ZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09O
OjpWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29s
b3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291
dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSogb3B0X2luX2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcqIG9wdF9pbl9ub3RlcywgY29uc3QgZG91YmxlKiBvcHRfaW5fdGlt
ZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl92YWx1ZXMsIGNvbnN0IEpTT046OlZh
bHVlKiBvcHRfaW5fcGF5bG9hZCwgY29uc3QgaW50KiBvcHRfaW5fZGF0YWJhc2VJZCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRfaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogb3B0X2luX3NjcmVl
bkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogb3B0X2luX2FsdGVybmF0ZUNvbG9ycywgY29uc3Qg
U3RyaW5nKiBvcHRfaW5fcHJpbnRDb2xvciwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4m
IG9wdF9vdXRfY29sdW1uTmFtZXMsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgb3B0X291dF9ub3Rl
cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiBvcHRfb3V0X3RpbWVzdGFtcCwgc3RkOjpvcHRpb25h
bDxKU09OOjpPYmplY3Q+JiBvcHRfb3V0X3ZhbHVlcywgc3RkOjpvcHRpb25hbDxKU09OOjpWYWx1
ZT4mIG9wdF9vdXRfcGF5bG9hZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiBvcHRfb3V0X2RhdGFiYXNl
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0
X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyog
b3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBj
b25zdCBKU09OOjpBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMs
IGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCYgaW5fdmFsdWVzLCBKU09O
OjpWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0
JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6
QXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91
dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBKU09OOjpPYmplY3QqIG91dF92YWx1ZXMs
IEpTT046OlZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0
ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xv
ciogb3V0X3ByaW50Q29sb3IpID0gMDsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5EYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25n
IHJlcXVlc3RJZCwgUmVmCiAgICAgYm9vbCBvcHRfaW5fbm90ZXNfdmFsdWVGb3VuZCA9IGZhbHNl
OwogICAgIFN0cmluZyBvcHRfaW5fbm90ZXMgPSBtX2JhY2tlbmREaXNwYXRjaGVyLT5nZXRTdHJp
bmcocGFyYW1ldGVycy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAmb3B0X2luX25vdGVz
X3ZhbHVlRm91bmQpOwogICAgIGJvb2wgb3B0X2luX3RpbWVzdGFtcF92YWx1ZUZvdW5kID0gZmFs
c2U7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3B0X2luX3Rp
bWVzdGFtcCA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldERvdWJsZShwYXJhbWV0ZXJzLmdldCgp
LCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmb3B0X2luX3RpbWVzdGFtcF92YWx1ZUZvdW5k
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3B0X2luX3RpbWVzdGFtcCA9IG1fYmFja2Vu
ZERpc3BhdGNoZXItPmdldERvdWJsZShwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoInRp
bWVzdGFtcCIpLCAmb3B0X2luX3RpbWVzdGFtcF92YWx1ZUZvdW5kKTsKICAgICBib29sIG9wdF9p
bl92YWx1ZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9w
dF9pbl92YWx1ZXMgPSBtX2JhY2tlbmREaXNwYXRjaGVyLT5nZXRPYmplY3QocGFyYW1ldGVycy5n
ZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgJm9wdF9pbl92YWx1ZXNfdmFsdWVGb3VuZCk7
CiAgICAgYm9vbCBvcHRfaW5fcGF5bG9hZF92YWx1ZUZvdW5kID0gZmFsc2U7CkBAIC0yOTAsMzgg
KzI5MCwzOCBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIFJlZgogICAgIEVycm9yU3RyaW5nIGVycm9y
OwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwotICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+IG91dF9ub3RlczsKLSAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBvdXRfdGltZXN0YW1wOwotICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+IG91dF92YWx1ZXM7
Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiBvdXRfcGF5
bG9hZDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50PiBvdXRfZGF0YWJh
c2VJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gb3V0X25vdGVzOworICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBvdXRfdGltZXN0YW1wOworICAgIHN0ZDo6b3B0aW9uYWw8SlNPTjo6T2Jq
ZWN0PiBvdXRfdmFsdWVzOworICAgIHN0ZDo6b3B0aW9uYWw8SlNPTjo6VmFsdWU+IG91dF9wYXls
b2FkOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvdXRfZGF0YWJhc2VJZDsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNv
bG9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0
PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIG9wdF9pbl9jb2x1bW5OYW1lc192YWx1ZUZvdW5kID8g
b3B0X2luX2NvbHVtbk5hbWVzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX25vdGVzX3ZhbHVlRm91
bmQgPyAmb3B0X2luX25vdGVzIDogbnVsbHB0ciwgb3B0X2luX3RpbWVzdGFtcF92YWx1ZUZvdW5k
ID8gJm9wdF9pbl90aW1lc3RhbXAgOiBudWxscHRyLCBvcHRfaW5fdmFsdWVzX3ZhbHVlRm91bmQg
PyBvcHRfaW5fdmFsdWVzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3BheWxvYWRfdmFsdWVGb3Vu
ZCA/IG9wdF9pbl9wYXlsb2FkLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX2RhdGFiYXNlSWRfdmFs
dWVGb3VuZCA/ICZvcHRfaW5fZGF0YWJhc2VJZCA6IG51bGxwdHIsIG9wdF9pbl9zcWxFcnJvcl92
YWx1ZUZvdW5kID8gb3B0X2luX3NxbEVycm9yLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3NjcmVl
bkNvbG9yX3ZhbHVlRm91bmQgPyAmb3B0X2luX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgb3B0X2lu
X2FsdGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kID8gb3B0X2luX2FsdGVybmF0ZUNvbG9ycy5nZXQo
KSA6IG51bGxwdHIsIG9wdF9pbl9wcmludENvbG9yX3ZhbHVlRm91bmQgPyAmb3B0X2luX3ByaW50
Q29sb3IgOiBudWxscHRyLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0
YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVy
cm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29s
b3IpOworICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIG9w
dF9pbl9jb2x1bW5OYW1lc192YWx1ZUZvdW5kID8gb3B0X2luX2NvbHVtbk5hbWVzLmdldCgpIDog
bnVsbHB0ciwgb3B0X2luX25vdGVzX3ZhbHVlRm91bmQgPyAmb3B0X2luX25vdGVzIDogbnVsbHB0
ciwgb3B0X2luX3RpbWVzdGFtcF92YWx1ZUZvdW5kID8gJm9wdF9pbl90aW1lc3RhbXAgOiBudWxs
cHRyLCBvcHRfaW5fdmFsdWVzX3ZhbHVlRm91bmQgPyBvcHRfaW5fdmFsdWVzLmdldCgpIDogbnVs
bHB0ciwgb3B0X2luX3BheWxvYWRfdmFsdWVGb3VuZCA/IG9wdF9pbl9wYXlsb2FkLmdldCgpIDog
bnVsbHB0ciwgb3B0X2luX2RhdGFiYXNlSWRfdmFsdWVGb3VuZCA/ICZvcHRfaW5fZGF0YWJhc2VJ
ZCA6IG51bGxwdHIsIG9wdF9pbl9zcWxFcnJvcl92YWx1ZUZvdW5kID8gb3B0X2luX3NxbEVycm9y
LmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3NjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPyAmb3B0X2lu
X3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgb3B0X2luX2FsdGVybmF0ZUNvbG9yc192YWx1ZUZvdW5k
ID8gb3B0X2luX2FsdGVybmF0ZUNvbG9ycy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9wcmludENv
bG9yX3ZhbHVlRm91bmQgPyAmb3B0X2luX3ByaW50Q29sb3IgOiBudWxscHRyLCBvdXRfY29sdW1u
TmFtZXMsIG91dF9ub3Rlcywgb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgb3V0X3BheWxvYWQs
IG91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsIG91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVy
bmF0ZUNvbG9ycywgb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkg
ewogICAgICAgICBpZiAob3V0X2NvbHVtbk5hbWVzKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRB
cnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG91dF9jb2x1bW5OYW1lcyk7Ci0gICAg
ICAgIGlmIChvdXRfbm90ZXMuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBvdXRfbm90ZXMuZ2V0VmFsdWUoKSk7Ci0gICAg
ICAgIGlmIChvdXRfdGltZXN0YW1wLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+
c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIG91dF90aW1lc3RhbXAuZ2V0VmFs
dWUoKSk7Ci0gICAgICAgIGlmIChvdXRfdmFsdWVzLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAg
IHJlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIG91dF92YWx1ZXMuZ2V0
VmFsdWUoKSk7Ci0gICAgICAgIGlmIChvdXRfcGF5bG9hZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAg
ICAgICByZXN1bHQtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5bG9h
ZC5nZXRWYWx1ZSgpKTsKLSAgICAgICAgaWYgKG91dF9kYXRhYmFzZUlkLmlzQXNzaWduZWQoKSkK
LSAgICAgICAgICAgIHJlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQi
KSwgb3V0X2RhdGFiYXNlSWQuZ2V0VmFsdWUoKSk7CisgICAgICAgIGlmIChvdXRfbm90ZXMuaGFz
X3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5v
dGVzIiksICpvdXRfbm90ZXMpOworICAgICAgICBpZiAob3V0X3RpbWVzdGFtcC5oYXNfdmFsdWUo
KSkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1w
IiksICpvdXRfdGltZXN0YW1wKTsKKyAgICAgICAgaWYgKG91dF92YWx1ZXMuaGFzX3ZhbHVlKCkp
CisgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAq
b3V0X3ZhbHVlcyk7CisgICAgICAgIGlmIChvdXRfcGF5bG9hZC5oYXNfdmFsdWUoKSkKKyAgICAg
ICAgICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICpvdXRfcGF5
bG9hZCk7CisgICAgICAgIGlmIChvdXRfZGF0YWJhc2VJZC5oYXNfdmFsdWUoKSkKKyAgICAgICAg
ICAgIHJlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgKm91dF9k
YXRhYmFzZUlkKTsKICAgICAgICAgaWYgKG91dF9zcWxFcnJvcikKICAgICAgICAgICAgIHJlc3Vs
dC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKLSAg
ICAgICAgaWYgKG91dF9zY3JlZW5Db2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1
bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIG91dF9zY3JlZW5Db2xv
ci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgaWYgKG91dF9zY3JlZW5Db2xvci5oYXNfdmFsdWUoKSkK
KyAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3Ii
KSwgKm91dF9zY3JlZW5Db2xvcik7CiAgICAgICAgIGlmIChvdXRfYWx0ZXJuYXRlQ29sb3JzKQog
ICAgICAgICAgICAgcmVzdWx0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9y
cyIpLCBvdXRfYWx0ZXJuYXRlQ29sb3JzKTsKLSAgICAgICAgaWYgKG91dF9wcmludENvbG9yLmlz
QXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
cHJpbnRDb2xvciIpLCBvdXRfcHJpbnRDb2xvci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgaWYgKG91
dF9wcmludENvbG9yLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksICpvdXRfcHJpbnRDb2xvcik7CiAgICAgfQogICAg
IGlmICghZXJyb3IubGVuZ3RoKCkpCiAgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRS
ZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0KSwgZmFsc2UpOwpAQCAtNzYzLDcgKzc2
Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgT2JqQ0luc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIoaWQ8VGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7
IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEpTT046OkFycmF5KiBpbl9jb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBjb25z
dCBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09O
OjpWYWx1ZSogY29uc3QgaW5fcGF5bG9hZCwgY29uc3QgaW50KiBjb25zdCBpbl9kYXRhYmFzZUlk
LCBjb25zdCBKU09OOjpPYmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IGlu
X3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25z
dCBTdHJpbmcqIGNvbnN0IGluX3ByaW50Q29sb3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBjb25zdCBKU09O
OjpBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRv
dWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIGluX3ZhbHVlcywgY29uc3Qg
SlNPTjo6VmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwg
Y29uc3QgSlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBpbl9w
cmludENvbG9yKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBjb25zdCBKU09OOjpBcnJheSYgaW5fY29sdW1uTmFt
ZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEpT
T046Ok9iamVjdCYgaW5fdmFsdWVzLCBKU09OOjpWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0
YWJhc2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBp
bl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29u
c3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgUmV0YWlu
UHRyPGlkPFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4+IG1fZGVsZWdhdGU7CkBA
IC04MTMsNyArODEzLDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZv
aWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEpTT046OkFycmF5KiBpbl9jb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBjb25z
dCBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09O
OjpWYWx1ZSogY29uc3QgaW5fcGF5bG9hZCwgY29uc3QgaW50KiBjb25zdCBpbl9kYXRhYmFzZUlk
LCBjb25zdCBKU09OOjpPYmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IGlu
X3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25z
dCBTdHJpbmcqIGNvbnN0IGluX3ByaW50Q29sb3IpCit2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVx
dWVzdElkLCBjb25zdCBKU09OOjpBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyog
aW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3Qq
IGluX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5f
ZGF0YWJhc2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5n
KiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKQogewogICAgIGlkIGVycm9yQ2FsbGJhY2sgPSBe
KE5TU3RyaW5nICplcnJvcikgewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQ
cm90b2NvbEVycm9yKHJlcXVlc3RJZCwgQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBl
cnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29u
LXJlc3VsdAppbmRleCAxZDk5NjZhYTUxOGE1Y2ZhMGVhNzA1MTQ3NTExOWQ3ZWY0ZDhiYzI0Li40
Nzg2MzdjYzY2OTJkZTZjMDMyOTBkZWYxOTY3N2ZlNDc2MDAyZTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTIzNCw3ICsy
MzQsNyBAQCBjbGFzcyBGcm9udGVuZFJvdXRlcjsKIGNsYXNzIERhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyIHsKIHB1YmxpYzoKICAgICBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVu
ZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIpIDogbV9mcm9udGVuZFJvdXRlcihmcm9udGVuZFJvdXRl
cikgeyB9Ci0gICAgdm9pZCBkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09O
OjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVz
LCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFs
dWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IHNjcmVl
bkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4g
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29sb3IpOworICAgIHZv
aWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBub3RlcywgY29uc3QgZG91YmxlKiB0aW1l
c3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBw
YXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxF
cnJvciwgY29uc3QgU3RyaW5nKiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBw
cmludENvbG9yKTsKICAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3Rl
cywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8
SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIHByaW50Q29sb3IpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYg
bV9mcm9udGVuZFJvdXRlcjsKQEAgLTI4Miw3ICsyODIsNyBAQCBwcml2YXRlOgogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotdm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhl
Y3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0
aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVl
PiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBz
cWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3Qg
U3RyaW5nKiBjb25zdCBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBub3RlcywgY29uc3QgZG91YmxlKiB0aW1l
c3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBw
YXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxF
cnJvciwgY29uc3QgU3RyaW5nKiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBw
cmludENvbG9yKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGpzb25NZXNzYWdlID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9wdGlvbmFsUGFy
YW1ldGVycyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2Fz
dHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24t
cmVzdWx0CmluZGV4IDJkMDMxNTcwMGE2NjE4YjlhYjI4NjZkZjBmYTczMTlhNmRmNTE0MjYuLjlk
ZTg1MTE4YjBiOTQzZTc5Y2Y2MGJiZWIwYmI4NGRmNzYwYjM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlw
ZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtNTU5LDI1ICs1NTksMTcg
QEAgcHVibGljOgogfSAvLyBUZXN0CiAKIHRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gewotI2lmICFBU1NFUlRf
RElTQUJMRUQKIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZh
bHVlKik7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogfTsKIHRlbXBsYXRlPD4gc3RydWN0
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0
PiB7CiBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5n
Q2FzdD4gcnVudGltZUNhc3QoUmVmUHRyPEpTT046OlZhbHVlPiYmIHZhbHVlKTsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECiBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09O
OjpWYWx1ZSopOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH07CiB0ZW1wbGF0ZTw+IHN0
cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9i
amVjdDE+IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhh
c0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQK
IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMg
dm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwotI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQKIH07CiAKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CkBAIC02OTMs
NDYgKzY4NSw1MCBAQCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNh
c3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZwogCiAKIAotI2lmICFBU1NFUlRf
RElTQUJMRUQKIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpD
YXN0ZWRBbmltYWxzPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZh
bHVlKQogeworI2lmIEFTU0VSVF9ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Cisj
ZWxzZQogICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICBTdHJpbmcgcmVzdWx0Owog
ICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc1N0cmluZyhyZXN1bHQpOwogICAgIEFT
U0VSVChjYXN0U3VjY2VlZGVkKTsKICAgICBBU1NFUlQocmVzdWx0ID09ICJEdWNrcyIgfHwgcmVz
dWx0ID09ICJIZW5zIiB8fCByZXN1bHQgPT0gIkNyb3dzIiB8fCByZXN1bHQgPT0gIkZsYW1pbmdv
cyIpOwotfQogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK30KIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBl
TmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFs
dWUpCiB7CisjaWYgQVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNl
bHNlCiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2Jq
ZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwog
ICAgIHsKLSAgICAgICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciBzdHJpbmdQb3MgPSBvYmplY3Qt
PmZpbmQoQVNDSUlMaXRlcmFsKCJzdHJpbmciKSk7CisgICAgICAgIGF1dG8gc3RyaW5nUG9zID0g
b2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgic3RyaW5nIikpOwogICAgICAgICBBU1NFUlQoc3Ry
aW5nUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgICBCaW5kaW5nVHJhaXRzPFN0cmluZz46
OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKHN0cmluZ1Bvcy0+dmFsdWUuZ2V0KCkpOwogICAg
IH0KICAgICB7Ci0gICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0b3IgbnVtYmVyUG9zID0gb2Jq
ZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgibnVtYmVyIikpOworICAgICAgICBhdXRvIG51bWJlclBv
cyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIm51bWJlciIpKTsKICAgICAgICAgQVNTRVJU
KG51bWJlclBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICAgQmluZGluZ1RyYWl0czxpbnQ+
Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShudW1iZXJQb3MtPnZhbHVlLmdldCgpKTsKICAg
ICB9CiAgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yIGFuaW1hbHNQb3MgPSBv
YmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJhbmltYWxzIikpOworICAgICAgICBhdXRvIGFuaW1h
bHNQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJhbmltYWxzIikpOwogICAgICAgICBB
U1NFUlQoYW5pbWFsc1BvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICAgQmluZGluZ1RyYWl0
czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0VmFsdWVI
YXNFeHBlY3RlZFR5cGUoYW5pbWFsc1Bvcy0+dmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICB7Ci0g
ICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0b3IgaWRQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlM
aXRlcmFsKCJpZCIpKTsKKyAgICAgICAgYXV0byBpZFBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxp
dGVyYWwoImlkIikpOwogICAgICAgICBBU1NFUlQoaWRQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAg
ICAgICAgIEJpbmRpbmdUcmFpdHM8aW50Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoaWRQ
b3MtPnZhbHVlLmdldCgpKTsKICAgICB9CiAgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0
ZXJhdG9yIHRyZWVQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJ0cmVlIikpOworICAg
ICAgICBhdXRvIHRyZWVQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJ0cmVlIikpOwog
ICAgICAgICBBU1NFUlQodHJlZVBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICAgQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNz
ZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUodHJlZVBvcy0+dmFsdWUuZ2V0KCkpOwogICAgIH0KQEAg
LTc0MCwyNSArNzM2LDI1IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4CiAgICAgaW50IGZvdW5k
UHJvcGVydGllc0NvdW50ID0gNTsKICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2Jq
ZWN0LT5zaXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2Jq
ZWN0OiAlc1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci19CiAj
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorfQogCiBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OnJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1
ZT4mJiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXN1bHQ7CiAgICAgYm9v
bCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KHJlc3VsdCk7CiAgICAgQVNTRVJUX1VO
VVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGlu
Z0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShyZXN1bHQuZ2V0KCkpOwotI2VuZGlm
ICAvLyAhQVNTRVJUX0RJU0FCTEVECiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEpTT046Ok9iamVj
dEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PEpTT046
Ok9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKIH0KIAogCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAogdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2
ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUp
CiB7CisjaWYgQVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbHNl
CiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+
IG9iamVjdDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0
KTsKQEAgLTc2Niw3ICs3NjIsNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90
b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRQogCiAgICAgaW50
IGZvdW5kUHJvcGVydGllc0NvdW50ID0gMDsKICAgICB7Ci0gICAgICAgIEpTT046Ok9iamVjdDo6
aXRlcmF0b3Igb2JqUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgib2JqIikpOworICAg
ICAgICBhdXRvIG9ialBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIm9iaiIpKTsKICAg
ICAgICAgaWYgKG9ialBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgICBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3Nl
cnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShvYmpQb3MtPnZhbHVlLmdldCgpKTsKICAgICAgICAgICAg
ICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CkBAIC03NzQsMTIgKzc3MCwxNCBAQCB2b2lkIEJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFz
c2VydFZhbHVlSGFzRQogICAgIH0KICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2Jq
ZWN0LT5zaXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2Jq
ZWN0OiAlc1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci19CiAj
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9p
ZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVj
dDI+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiB7Cisj
aWYgQVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbHNlCiAgICAg
QVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVj
dDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAg
LTc4Nyw3ICs3ODUsNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6
VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRQogCiAgICAgaW50IGZvdW5k
UHJvcGVydGllc0NvdW50ID0gMDsKICAgICB7Ci0gICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0
b3Igb2JqUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgib2JqIikpOworICAgICAgICBh
dXRvIG9ialBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIm9iaiIpKTsKICAgICAgICAg
aWYgKG9ialBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgICBCaW5kaW5nVHJhaXRz
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1
ZUhhc0V4cGVjdGVkVHlwZShvYmpQb3MtPnZhbHVlLmdldCgpKTsKICAgICAgICAgICAgICsrZm91
bmRQcm9wZXJ0aWVzQ291bnQ7CkBAIC03OTUsOCArNzkzLDggQEAgdm9pZCBCaW5kaW5nVHJhaXRz
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1
ZUhhc0UKICAgICB9CiAgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6
ZSgpKQogICAgICAgICBGQVRBTCgiVW5leHBlY3RlZCBwcm9wZXJ0aWVzIGluIG9iamVjdDogJXNc
biIsIG9iamVjdC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotfQogI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQKK30KIAogfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDhl
YjRjNjJjMjI2MzBiYWNlMmRkN2QyMDQ2YjdmZTM0OTAwNzI3YTUuLjlkOTg1ODE5Y2IzZDQ0MjQ2
M2FiNzUxYzY5NmQ0ZGM5ZjA1NjMyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTM4NSwxMiArMzg1LDEzIEBAIGVudW0gTWVk
aWFMaXN0U291cmNlIHsKICAgICBNZWRpYUxpc3RTb3VyY2VJbXBvcnRSdWxlCiB9OwogCi1zdGF0
aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291
cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlLCBWZWN0b3I8c2l6ZV90Piog
bGluZUVuZGluZ3MsIGludCogZW5kaW5nTGluZSA9IG51bGxwdHIpCitzdGF0aWMgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmpl
Y3QoY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVu
ZGluZ3MsIGludCogZW5kaW5nTGluZSA9IG51bGxwdHIpCiB7Ci0gICAgaWYgKCFsaW5lRW5kaW5n
cykKKyAgICBpZiAobGluZUVuZGluZ3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBUZXh0UG9zaXRpb24gc3RhcnQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjp0ZXh0
UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdlLnN0YXJ0LCAqbGluZUVuZGluZ3MpOwotICAgIFRleHRQ
b3NpdGlvbiBlbmQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zm
c2V0KHJhbmdlLmVuZCwgKmxpbmVFbmRpbmdzKTsKKworICAgIFRleHRQb3NpdGlvbiBzdGFydCA9
IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnRleHRQb3NpdGlvbkZyb21PZmZzZXQocmFuZ2Uuc3Rh
cnQsIGxpbmVFbmRpbmdzKTsKKyAgICBUZXh0UG9zaXRpb24gZW5kID0gQ29udGVudFNlYXJjaFV0
aWxpdGllczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5lbmQsIGxpbmVFbmRpbmdzKTsK
IAogICAgIGlmIChlbmRpbmdMaW5lKQogICAgICAgICAqZW5kaW5nTGluZSA9IGVuZC5tX2xpbmUu
emVyb0Jhc2VkSW50KCk7CkBAIC01NDMsNyArNTQ0LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxl
KCkKIAogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gc291cmNlRGF0YSA9IGV4dHJhY3RT
b3VyY2VEYXRhKCk7CiAgICAgaWYgKHNvdXJjZURhdGEpCi0gICAgICAgIHJlc3VsdC0+c2V0UmFu
Z2UoYnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5ydWxlQm9keVJhbmdlLCBtX3Bh
cmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkuZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRSYW5nZShidWlsZFNvdXJjZVJhbmdlT2JqZWN0KHNvdXJjZURhdGEtPnJ1bGVCb2R5UmFuZ2Us
IG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3MoKSkpOwogCiAgICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKIH0KQEAgLTYyNSw3ICs2MjYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBj
bwogICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3VuZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHByZXZp
b3VzUHJpb3JpdHk7CiAgICAgU3RyaW5nIHByZXZpb3VzU3RhdHVzOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MobV9wYXJlbnRTdHlsZVNoZWV0ID8gbV9w
YXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpIDogbnVsbHB0cik7CisgICAgVmVjdG9yPHNp
emVfdD4gbGluZUVuZGluZ3MgPSBtX3BhcmVudFN0eWxlU2hlZXQgPyBtX3BhcmVudFN0eWxlU2hl
ZXQtPmxpbmVFbmRpbmdzKCkgOiBWZWN0b3I8c2l6ZV90PiB7IH07CiAgICAgYXV0byBzb3VyY2VE
YXRhID0gZXh0cmFjdFNvdXJjZURhdGEoKTsKICAgICB1bnNpZ25lZCBydWxlQm9keVJhbmdlU3Rh
cnQgPSBzb3VyY2VEYXRhID8gc291cmNlRGF0YS0+cnVsZUJvZHlSYW5nZS5zdGFydCA6IDA7CiAK
QEAgLTY2Nyw3ICs2NjgsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAg
U291cmNlUmFuZ2UgYWJzb2x1dGVQcm9wZXJ0eVJhbmdlID0gcHJvcGVydHlFbnRyeS5yYW5nZTsK
ICAgICAgICAgICAgIGFic29sdXRlUHJvcGVydHlSYW5nZS5zdGFydCArPSBydWxlQm9keVJhbmdl
U3RhcnQ7CiAgICAgICAgICAgICBhYnNvbHV0ZVByb3BlcnR5UmFuZ2UuZW5kICs9IHJ1bGVCb2R5
UmFuZ2VTdGFydDsKLSAgICAgICAgICAgIHByb3BlcnR5LT5zZXRSYW5nZShidWlsZFNvdXJjZVJh
bmdlT2JqZWN0KGFic29sdXRlUHJvcGVydHlSYW5nZSwgbGluZUVuZGluZ3MuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIHByb3BlcnR5LT5zZXRSYW5nZShidWlsZFNvdXJjZVJhbmdlT2JqZWN0KGFic29s
dXRlUHJvcGVydHlSYW5nZSwgbGluZUVuZGluZ3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghaXQtPmRpc2FibGVkKSB7CkBAIC0xMTQ5LDcgKzExNTAsNyBAQCBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2Jq
ZWN0Rm9yUwogICAgICAgICAuc2V0VGV4dChzZWxlY3RvclRleHQpCiAgICAgICAgIC5yZWxlYXNl
KCk7CiAgICAgaWYgKHNvdXJjZURhdGEpCi0gICAgICAgIHJlc3VsdC0+c2V0UmFuZ2UoYnVpbGRT
b3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5ydWxlSGVhZGVyUmFuZ2UsIGxpbmVFbmRpbmdz
KCkuZ2V0KCksICZlbmRpbmdMaW5lKSk7CisgICAgICAgIHJlc3VsdC0+c2V0UmFuZ2UoYnVpbGRT
b3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5ydWxlSGVhZGVyUmFuZ2UsIGxpbmVFbmRpbmdz
KCksICZlbmRpbmdMaW5lKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTI4MiwxMCAr
MTI4MywxMCBAQCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OnJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYQogICAgIHJldHVybiBtX3BhcnNlZFN0
eWxlU2hlZXQtPnJ1bGVTb3VyY2VEYXRhQXQocnVsZUluZGV4QnlTdHlsZShzdHlsZSkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXQ6Omxp
bmVFbmRpbmdzKCkgY29uc3QKK1ZlY3RvcjxzaXplX3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6Omxp
bmVFbmRpbmdzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFyc2VkU3R5bGVTaGVldC0+aGFzVGV4
dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBy
ZXR1cm4gQ29udGVudFNlYXJjaFV0aWxpdGllczo6bGluZUVuZGluZ3MobV9wYXJzZWRTdHlsZVNo
ZWV0LT50ZXh0KCkpOwogfQogCkBAIC0xNTI0LDcgKzE1MjUsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnNldFN0eWxlVGV4dChDU1NTdHls
ZURlY2xhcgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6
ZV90Pj4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpsaW5lRW5kaW5ncygpIGNv
bnN0CitWZWN0b3I8c2l6ZV90PiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Omxp
bmVFbmRpbmdzKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29udGVudFNlYXJjaFV0aWxpdGllczo6
bGluZUVuZGluZ3MoZWxlbWVudFN0eWxlVGV4dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IGUwMTllZmExZGMxY2VlOWZkNjhh
YTVlZDU4YTlmMzAwN2ZhZjRhY2EuLjMyY2VjOWVlYTMyNWJmOGI2ZjZiMDdmZDk3NTMwMWIzMWU0
MjMyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEFsc28gYWNjZXNz
ZWQgYnkgZnJpZW5kIGNsYXNzIEluc3BlY3RvclN0eWxlLgogICAgIHZpcnR1YWwgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcm
KTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGlu
Z3MoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxzaXplX3Q+IGxpbmVFbmRpbmdzKCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPENTU1N0eWxlUnVsZT4+
IENTU1N0eWxlUnVsZVZlY3RvcjsKQEAgLTI0Niw3ICsyNDYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICAvLyBBbHNvIGFjY2Vzc2VkIGJ5IGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JTdHlsZS4KICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0
IFN0cmluZyYpIGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGlu
ZUVuZGluZ3MoKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8c2l6ZV90PiBsaW5lRW5kaW5ncygp
IGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIGlubGlu
ZVN0eWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggODBkYWY3YTEwYTk3ZmMzY2NjZWE5YTc3NWY5NTE0
NjhjYWZlMDk3My4uMzU0OTRmZTVjOTFiZDBkMDNlNDNlNTI0NzVhNWMyMDFhOTEyMzFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbXB1dGVkU3R5
bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgaW5s
aW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgYXR0
cmlidXRlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVQc2V1ZG8sIGNv
bnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNo
ZXM+PiYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5o
ZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKSBvdmVycmlkZTsKKyAgICB2b2lk
IGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3Qg
Ym9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0
Y2hlZENTU1J1bGVzLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFk
ZXI+PiYgc3R5bGVTaGVldEluZm9zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0
eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRl
eCBiYzNlZmM2MDIxNmUzNDA2MjgxNjBiNmM3NGY2MTdmMDhlNDdjNTJkLi44M2M1NDVlNGJmNzNl
YmMwODliZDdiOWQyNDY3M2YzY2E5N2M1ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtMjQxLDcg
KzI0MSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udGV4dEFzU2NyaXB0VmFsdWUoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBDYW52YXNSZW5kZXJpbmdDCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzb2x2ZUNhbnZhc0NvbnRleHQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzb2x2ZUNh
bnZhc0NvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbnZh
c0lkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewogICAgIGF1dG8qIGluc3BlY3Rv
ckNhbnZhcyA9IGFzc2VydEluc3BlY3RvckNhbnZhcyhlcnJvclN0cmluZywgY2FudmFzSWQpOwog
ICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnJlc29sdmVDYW52YXNDb250ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QKICAgICByZXN1bHQgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHZhbHVl
LCBvYmplY3RHcm91cE5hbWUpOwogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFy
dFJlY29yZGluZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FudmFz
SWQsIGNvbnN0IGJvb2wqIGNvbnN0IHNpbmdsZUZyYW1lLCBjb25zdCBpbnQqIGNvbnN0IG1lbW9y
eUxpbWl0KQordm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBz
aW5nbGVGcmFtZSwgY29uc3QgaW50KiBtZW1vcnlMaW1pdCkKIHsKICAgICBhdXRvKiBpbnNwZWN0
b3JDYW52YXMgPSBhc3NlcnRJbnNwZWN0b3JDYW52YXMoZXJyb3JTdHJpbmcsIGNhbnZhc0lkKTsK
ICAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCBmNWUzMjMwZTdlZjg0
Yzg4Y2I4NmM5YjY0ODZhM2Y3ZTRmZDNjMGViLi43NzVkMmQ2MzBiOWY1YWZhMTAxOGVmMGIzNjcx
OGU2MTYzMmI2NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwg
aW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdENvbnRlbnQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBTdHJpbmcqIGNvbnRlbnQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVzKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBjYW52YXNJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlc29sdmVDYW52YXNDb250ZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBjYW52YXNJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0YXJ0UmVjb3JkaW5nKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwg
Y29uc3QgYm9vbCogY29uc3Qgc2luZ2xlRnJhbWUsIGNvbnN0IGludCogY29uc3QgbWVtb3J5TGlt
aXQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzb2x2ZUNhbnZhc0NvbnRleHQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIG92ZXJyaWRl
OworICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNh
bnZhc0lkLCBjb25zdCBib29sKiBzaW5nbGVGcmFtZSwgY29uc3QgaW50KiBtZW1vcnlMaW1pdCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjYW52YXNJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0U2hhZGVyU291cmNlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwcm9ncmFtSWQsIGNvbnN0IFN0cmluZyYgc2hhZGVy
VHlwZSwgU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTaGFkZXIoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHByb2dyYW1JZCwgY29uc3QgU3RyaW5nJiBzaGFkZXJUeXBlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApp
bmRleCAwM2E4YzNjZjdjODQxMzA3OTM3ODgyY2Y5Zjk4YmUwNjAyNDkxYzBmLi45ZThiNzBiMmZj
OGJlOGZkNTkxYWRhOTY3NGQyYjVjNmQyZDlkNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTQzLDE0ICs0MywxNCBAQAogbmFtZXNwYWNlIHsKIAogZW51bSBET01CcmVha3BvaW50
VHlwZSB7Ci0gICAgU3VidHJlZU1vZGlmaWVkID0gMCwKKyAgICBTdWJ0cmVlTW9kaWZpZWQsCiAg
ICAgQXR0cmlidXRlTW9kaWZpZWQsCiAgICAgTm9kZVJlbW92ZWQsCiAgICAgRE9NQnJlYWtwb2lu
dFR5cGVzQ291bnQKIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBsaXN0ZW5lckV2ZW50
Q2F0ZWdvcnlUeXBlID0gImxpc3RlbmVyOiI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgaW5z
dHJ1bWVudGF0aW9uRXZlbnRDYXRlZ29yeVR5cGUgPSAiaW5zdHJ1bWVudGF0aW9uOiI7CitzdGF0
aWMgY29uc3QgY2hhciBsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlW10gPSAibGlzdGVuZXI6IjsK
K3N0YXRpYyBjb25zdCBjaGFyIGluc3RydW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBlW10gPSAi
aW5zdHJ1bWVudGF0aW9uOiI7CiAKIGNvbnN0IHVpbnQzMl90IGluaGVyaXRhYmxlRE9NQnJlYWtw
b2ludFR5cGVzTWFzayA9ICgxIDw8IFN1YnRyZWVNb2RpZmllZCk7CiBjb25zdCBpbnQgZG9tQnJl
YWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKQEAgLTEyMiwxMiArMTIyLDEyIEBAIHZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKCkKIAogdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0
cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQogewotICAgIHNldEJyZWFrcG9p
bnQoZXJyb3IsIFN0cmluZyhsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlKSArIGV2ZW50TmFtZSk7
CisgICAgc2V0QnJlYWtwb2ludChlcnJvciwgbGlzdGVuZXJFdmVudENhdGVnb3J5VHlwZSArIGV2
ZW50TmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0SW5zdHJ1
bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZl
bnROYW1lKQogewotICAgIHNldEJyZWFrcG9pbnQoZXJyb3IsIFN0cmluZyhpbnN0cnVtZW50YXRp
b25FdmVudENhdGVnb3J5VHlwZSkgKyBldmVudE5hbWUpOworICAgIHNldEJyZWFrcG9pbnQoZXJy
b3IsIGluc3RydW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBlICsgZXZlbnROYW1lKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5n
JiBlcnJvciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCkBAIC0xNDIsMTIgKzE0MiwxMiBAQCB2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
IGVycm9yLCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBT
dHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICByZW1vdmVCcmVha3BvaW50KGVycm9yLCBTdHJpbmco
bGlzdGVuZXJFdmVudENhdGVnb3J5VHlwZSkgKyBldmVudE5hbWUpOworICAgIHJlbW92ZUJyZWFr
cG9pbnQoZXJyb3IsIGxpc3RlbmVyRXZlbnRDYXRlZ29yeVR5cGUgKyBldmVudE5hbWUpOwogfQog
CiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUluc3RydW1lbnRhdGlvbkJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsK
LSAgICByZW1vdmVCcmVha3BvaW50KGVycm9yLCBTdHJpbmcoaW5zdHJ1bWVudGF0aW9uRXZlbnRD
YXRlZ29yeVR5cGUpICsgZXZlbnROYW1lKTsKKyAgICByZW1vdmVCcmVha3BvaW50KGVycm9yLCBp
bnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSArIGV2ZW50TmFtZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYg
ZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoYm9v
bCBpc0RPTUV2ZW50LCBjb25zCiAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVz
ZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpS
ZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURk1vdmUoZXZlbnREYXRhKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgpCit2b2lk
IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewogICAg
IGlmICh1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fcGF1c2VPbkFsbFhIUnNFbmFibGVkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggYmZlMDFiZWVhODM3ZmY2YWRkODE3NDdm
MWQ3NjNkOTMxN2JkMDE1Yi4uMzlhY2Y1YTljNmE4YzhmMzU4OTcxMjBjZmE1YWNmOGYzZGJiYThk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpOwogCiAgICAgLy8gRE9NRGVi
dWdnZXIgQVBJCi0gICAgdm9pZCBzZXRYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZW1vdmVYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiB1cmwpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
ZXZlbnROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEluc3RydW1lbnRhdGlvbkJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCByZW1vdmVJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChF
cnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFhIUkJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHVybCkgZmluYWw7CisgICAgdm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBmaW5hbDsKKyAgICB2b2lk
IHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBldmVudE5hbWUpIGZpbmFsOworICAgIHZvaWQgc2V0SW5zdHJ1bWVudGF0aW9uQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBmaW5hbDsKKyAgICB2b2lk
IHJlbW92ZUluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGV2ZW50TmFtZSkgZmluYWw7CisgICAgdm9pZCBzZXRET01CcmVha3BvaW50KEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKKyAgICB2b2lkIHJl
bW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcm
IHR5cGUpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9p
ZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpOwpAQCAtNzQsMTQgKzc0LDE0IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVu
dCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwogICAgIHZvaWQg
bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCgpOwogCi0gICAgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIGZpbmFsOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBmaW5hbDsKKyAgICB2b2lkIGRpc2NhcmRBZ2VudCgp
IGZpbmFsOwogCiBwcml2YXRlOgogICAgIC8vIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCBkZWJ1Z2dlcldhc0VuYWJs
ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRlYnVnZ2VyV2FzRW5hYmxlZCgpIGZpbmFsOworICAgIHZvaWQgZGVidWdnZXJX
YXNEaXNhYmxlZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZSgpOwogCiAgICAgdm9pZCBkZXNj
cmlwdGlvbkZvckRPTUV2ZW50KE5vZGUmIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29s
IGluc2VydGlvbiwgSlNPTjo6T2JqZWN0JiBkZXNjcmlwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXgg
ZDk4MGE2ODZiNzdiMGUzZDRhZWEyNDU2MGFmZjllMzQ1NmFlNzM1MC4uZmYwMTI2MGZjZTY4NTQ2
YmFlYWE5NjJjNWRjZDVhNjVhYTlhZGM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzE1LDcgKzMxNSw3
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBz
ZXRFbXVsYXRlZE1lZGlhKHVudXNlZCwgZW1wdHlTdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbFJlbG9hZEZyb21PcmlnaW4sIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmV2YWxpZGF0
ZUFsbFJlc291cmNlcykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJp
bmcmLCBjb25zdCBib29sKiBvcHRpb25hbFJlbG9hZEZyb21PcmlnaW4sIGNvbnN0IGJvb2wqIG9w
dGlvbmFsUmV2YWxpZGF0ZUFsbFJlc291cmNlcykKIHsKICAgICBib29sIHJlbG9hZEZyb21Pcmln
aW4gPSBvcHRpb25hbFJlbG9hZEZyb21PcmlnaW4gJiYgKm9wdGlvbmFsUmVsb2FkRnJvbU9yaWdp
bjsKICAgICBib29sIHJldmFsaWRhdGVBbGxSZXNvdXJjZXMgPSBvcHRpb25hbFJldmFsaWRhdGVB
bGxSZXNvdXJjZXMgJiYgKm9wdGlvbmFsUmV2YWxpZGF0ZUFsbFJlc291cmNlczsKQEAgLTQ3MSw3
ICs0NzEsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VDb250ZW50KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAgIHJlc291cmNlQ29udGVudChl
cnJvclN0cmluZywgZnJhbWUsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQsIGJh
c2U2NEVuY29kZWQpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNv
dXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCit2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVxdWVzdElkLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPj4mIHJlc3VsdHMpCiB7CiAgICAgcmVzdWx0cyA9IEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwog
CkBAIC01MjQsNyArNTI0LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGMKICAgICAgICAgLnJl
bGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0
Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCiB7
CiAgICAgcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpT
ZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZDIyZTM5NWIyZmQyM2NlOGU3
NDUyYWYxNmM4Y2Y1ZmY2ZWI0MDFkNC4uOGFlMTBiYjY4ZWQ1Y2ZlZTVjMmJjOThiNTk2MmUyYjFj
YzY0MWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCkBAIC04OCwyMyArODgsMjMgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VU
eXBlSlNPTihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgLy8gUGFnZSBBUEkgZm9yIElu
c3BlY3RvckZyb250ZW5kCi0gICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbG9h
ZChFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdp
biwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIG5hdmlnYXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VD
b250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNS
ZWdleCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IGNvbnN0IGlzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRTaG93UGFpbnRS
ZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFbXVs
YXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3Bh
cmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJy
b3JTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKLSAgICB2b2lkIHNuYXBzaG90Tm9kZShFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIFN0cmluZyogb3V0RGF0YVVSTCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzbmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lzdGVtLCBTdHJpbmcqIG91dERhdGFV
UkwpIG92ZXJyaWRlOwotICAgIHZvaWQgYXJjaGl2ZShFcnJvclN0cmluZyYsIFN0cmluZyogZGF0
YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsKKyAgICB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHJlbG9hZChFcnJvclN0
cmluZyYsIGNvbnN0IGJvb2wqIG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdpbiwgY29uc3QgYm9vbCog
b3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKSBmaW5hbDsKKyAgICB2b2lkIG5hdmlnYXRl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIGZpbmFsOworICAgIHZvaWQgZ2V0Q29v
a2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUNvb2tp
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1
cmwpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRF
bmNvZGVkKSBmaW5hbDsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+
JikgZmluYWw7CisgICAgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJl
c3VsdD4+JikgZmluYWw7CisgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYs
IGJvb2wgc2hvdykgZmluYWw7CisgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNl
dENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sKSBmaW5hbDsKKyAg
ICB2b2lkIHNuYXBzaG90Tm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFN0cmluZyogb3V0
RGF0YVVSTCkgZmluYWw7CisgICAgdm9pZCBzbmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQg
eCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRl
U3lzdGVtLCBTdHJpbmcqIG91dERhdGFVUkwpIGZpbmFsOworICAgIHZvaWQgYXJjaGl2ZShFcnJv
clN0cmluZyYsIFN0cmluZyogZGF0YSkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24KICAgICB2b2lkIGRvbUNvbnRlbnRFdmVudEZpcmVkKCk7CkBAIC0xMjMsOCArMTIz
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwogCiAgICAgLy8g
SW5zcGVjdG9yIENvbnRyb2xsZXIgQVBJCi0gICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXIqKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgZmluYWw7CiAKICAgICAv
LyBDcm9zcy1hZ2VudHMgQVBJCiAgICAgUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333941</attachid>
            <date>2018-02-15 14:06:58 -0800</date>
            <delta_ts>2018-02-15 15:20:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180607-20180215140657.patch</filename>
            <type>text/plain</type>
            <size>183555</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmY3ZDYzODI4ODM1MDZhNzYyNGYyN2E2MThmMDdlODIwYmYyZDIzLi40NTU3NjA0MGNhZmU5ZTc5
Mjk2N2I0MTUxNWMwOTk2ZWJjM2E1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGdldCByaWQgb2YgcmVtYWluaW5nIHVzZXMgb2YgT3B0
T3V0cHV0PFQ+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODA2MDcKKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICog
aW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHA6IFJlbW92ZWQgZXhwbGljaXQgSW5zcGVjdG9y
IHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUgdGhlIEluc3BlY3RvciBu
YW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvQXN5bmNTdGFja1RyYWNlLmg6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5jcHA6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2UgcmVtb3ZhbCBhbmQgLi4uCisg
ICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmdldFJlZ3VsYXJFeHBy
ZXNzaW9uTWF0Y2hlc0J5TGluZXMpOiBVc2UgYQorICAgICAgICBWZWN0b3IgaW5zdGVhZCBvZiBh
IHVuaXF1ZV9wdHI8VmVjdG9yPi4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0
aWxpdGllczo6bGluZUVuZGluZ3MpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVu
dFNlYXJjaFV0aWxpdGllczo6c3R5bGVzaGVldENvbW1lbnRQYXR0ZXJuKTogRGVsZXRlZC4KKyAg
ICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0aWxpdGllczo6ZmluZE1hZ2ljQ29tbWVu
dCk6IFVzZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YKKyAgICAgICAgYSBWZWN0b3IgZm9yIGEgZml4
ZWQgc2l6ZSBhcnJheTsgYWxzbyBnb3QgcmlkIG9mIHJlaW50ZXJwcmV0X2Nhc3QuCisgICAgICAg
IChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmZpbmRTdHlsZXNoZWV0U291cmNl
TWFwVVJMKTogTW92ZWQgdGhlIHJlZ3VsYXIKKyAgICAgICAgZXhwcmVzc2lvbiBoZXJlIHNpbmNl
IGl0J3MgdGhlIG9ubHkgcGxhY2UgaXQgd2FzIHVzZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxpdGllcy5oOiBDdXQgZG93biBvbiB1bm5lZWRlZCBpbmNsdWRlcy4K
KworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6IFJlbW92ZWQgZXhwbGlj
aXQgSW5zcGVjdG9yIHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUgdGhl
IEluc3BlY3RvciBuYW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg6IFJlbW92ZWQgT3B0T3V0
cHV0LiBTaW1wbGlmaWVkIGFzc2VydGlvbnMuCisgICAgICAgIFJlbW92ZWQgYmFzZSB0ZW1wbGF0
ZSBmb3IgQmluZGluZ1RyYWl0czsgd2Ugb25seSBuZWVkIHRoZSBzcGVjaWFsaXphdGlvbnMuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZCBleHBsaWNp
dCBJbnNwZWN0b3IgcHJlZml4IGZyb20gY29kZSB0aGF0CisgICAgICAgIGlzIGluc2lkZSB0aGUg
SW5zcGVjdG9yIG5hbWVzcGFjZSBhbHJlYWR5LiBBbHNvIHVzZSBhdXRvIGEgYml0LgorICAgICAg
ICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDogRGl0dG8uCisgICAgICAgICogaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaDogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5hbWVzcGFjZSBy
ZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6IFVzZSBzdGQ6Om9wdGlvbmFsJiBpbnRlYWQgb2YKKyAg
ICAgICAgT3B0T3V0cHV0KiBmb3Igb3V0IGFyZ3VtZW50cy4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5hbWVz
cGFjZSByZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFn
ZW50OjpnZXRQcmV2aWV3KTogVXNlIHN0ZDo6b3B0aW9uYWwmIGludGVhZCBvZiBPcHRPdXRwdXQq
CisgICAgICAgIGZvciBvdXQgYXJndW1lbnRzLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2UgcmVt
b3ZhbCBhbmQgLi4uCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
cGFyc2UpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW50ZWFkIG9mIE9wdE91dHB1dCoKKyAgICAgICAg
Zm9yIG91dCBhcmd1bWVudHMuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6ZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVu
dGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6IERpdHRvLgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQpOiBEaXR0by4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOiBEaXR0by4KKworICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6IE1vcmUg
SW5zcGVjdG9yIG5hbWVzcGFjZSByZW1vdmFsCisgICAgICAgIGFuZCByZW1vdmVkIHNvbWUgYm9n
dXMgY29uc3QuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl91
bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcik6IFJlbW92ZWQgc29tZSBib2d1cyBjb25zdC4K
KyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfdHlwZV93aXRoX25hbWUpOiBEaXR0
by4KKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291dF9wYXJhbWV0
ZXIpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW5zdGVhZCBvZgorICAgICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQqLgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl9m
b3JtYWxfYXN5bmNfcGFyYW1ldGVyKTogRGl0dG8uCisgICAgICAgIChDcHBHZW5lcmF0b3IuY3Bw
X3R5cGVfZm9yX3N0YWNrX2luX3BhcmFtZXRlcik6IERpdHRvLgorICAgICAgICAoQ3BwR2VuZXJh
dG9yLmNwcF90eXBlX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKTogRGl0dG8uCisKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OiBS
ZW1vdmVkIEFTU0VSVF9ESVNBQkxFRAorICAgICAgICBjb25kaXRpb25hbCBhcm91bmQgYXNzZXJ0
aW9uIGNvZGUgd2hpY2ggd2lsbCBub3cgY29tcGlsZSB0byBub3RoaW5nIGlmIEFTU0VSVCBpcyBk
aXNhYmxlZC4KKyAgICAgICAgQnVpbGQgc3RyaW5ncyBtb3JlIHNpbXBseSBpbiBhIGZldyBjYXNl
cy4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENwcEJhY2tlbmRE
aXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2FzeW5jX2Rpc3BhdGNo
ZXJfY2xhc3NfZm9yX2RvbWFpbik6CisgICAgICAgIFVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiBp
c0Fzc2lnbmVkIGFuZCAqIG9wZXJhdG9yIGluc3RlYWQgb2YgZ2V0VmFsdWUoKSBzaW5jZSBzdGQ6
Om9wdGlvbmFsCisgICAgICAgIHJlcGxhY2UgT3B0T3V0cHV0IGhlcmUuCisgICAgICAgIChDcHBC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgUGFzcyBieSByZWZlcmVu
Y2UgaW5zdGVhZCBvZiBwb2ludGVyIG5vdy4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weToKKyAgICAgICAg
UmVtb3ZlZCBBU1NFUlRfRElTQUJMRUQgY29uZGl0aW9uYWwgYXJvdW5kIGFzc2VydGlvbiBjb2Rl
IHdoaWNoIHdpbGwgbm93IGNvbXBpbGUgdG8gbm90aGluZworICAgICAgICBpZiBBU1NFUlQgaXMg
ZGlzYWJsZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENwcFByb3Rv
Y29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9v
YmplY3RfZGVjbGFyYXRpb24pOiBHZW5lcmF0ZQorICAgICAgICB0aGUgYXNzZXJ0aW9uIGZ1bmN0
aW9uIHVuY29uZGl0aW9uYWxseSwgYnV0IGxlYXZlIG91dCB0aGUgYXNzZXJ0aW9ucyBpZiBBU1NF
UlRfRElTQUJMRUQgaXMgdHJ1ZS4KKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvcik6IFVzZSBhdXRvIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgSlNPTjo6T2Jq
ZWN0OjppdGVyYXRvci4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAg
IChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVf
Y29udmVyc2lvbnNfZm9yX2NvbW1hbmQpOiBCdWlsZCBzdHJpbmdzCisgICAgICAgIG1vcmUgc2lt
cGx5LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVz
dWx0OgorICAgICAgICBSZWJhc2VsaW5lZC4KKwogMjAxOC0wMi0xNCAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgYmUgYWJsZSB0byBq
c0R5bmFtaWNDYXN0IGZyb20gSlNUeXBlIHdoZW4gcG9zc2libGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMmYw
ZGUwOWUyMTFhOWFlNTNmNTY5NTYzNDU1Zjk5ZDIwNzJiMTc4Li5kMTdmZTMwMzA0NWNjYWNiNDNk
ZjJlM2UwODc3MDI1YWU0MDUyMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgt
MDItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGdldCByaWQgb2YgcmVtYWluaW5nIHVzZXMgb2YgT3B0T3V0cHV0PFQ+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA2MDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTb3VyY2VSYW5nZU9iamVj
dCk6IFRha2UgYSBjb25zdCBWZWN0b3ImIGluc3RlYWQgb2YgYSBWZWN0b3IqLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUgY29uc3QpOiBQYXNz
IGxpbmVFbmRpbmdzKCkgaW5zdGVhZAorICAgICAgICBvZiBsaW5lRW5kaW5ncygpLmdldCgpLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMgY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
T2JqZWN0Rm9yU2VsZWN0b3JMaXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncyBjb25zdCk6IFJldHVybiBhIFZlY3RvciBpbnN0ZWFk
IG9mCisgICAgICAgIGEgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcj4uCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmxpbmVFbmRpbmdzIGNvbnN0KTog
RGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaDogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5oOiBSZW1vdmVkIHNvbWUgYm9ndXMgY29uc3QuCisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6IERpdHRvLgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOiBJbXByb3ZlZCB0
eXBlIG9mIGdsb2JhbCBzdHJpbmdzCisgICAgICAgIHNvIHdlIGRvbid0IHdhc3RlIHNwYWNlIHdp
dGggYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludCk6IFJlbW92ZWQKKyAg
ICAgICAgZXhwbGljaXQgY3JlYXRpb24gb2YgU3RyaW5nLCB3aGljaCB3YXMgd2FzdGVmdWwgYW5k
IHVubmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6c2V0SW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnJlbW92ZUluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQpOiBSZW1vdmVk
IGJvZ3VzIGNvbnN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50Lmg6IFJlbW92ZWQgYm9ndXMgY29uc3QgYW5kIHVzZQorICAgICAgICBmaW5h
bCBpbnN0ZWFkIG9mIG92ZXJyaWRlLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuaDogRGl0dG8uCisKIDIwMTgtMDItMTUgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBFWENMVURFRF9TT1VS
Q0VfRklMRV9OQU1FUyBmb3IgYWN0dWFsIHNvdXJjZSBmaWxlcyBpbiBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKaW5k
ZXggOWU2OGI0OWQ5OGJkOWFhMWYzNWUzZjE0NzgxNDczODAyZmMzNzM4MS4uMzE0Yjg3YzY4N2I4
MGVkYTg0YTY2Yzg3YTZhNWE4YjE5ZDAyMTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkFzeW5jU3RhY2tUcmFjZS5oIgogCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAt
OTYsMTcgKzk3LDE3IEBAIHZvaWQgQXN5bmNTdGFja1RyYWNlOjpkaWRDYW5jZWxBc3luY0NhbGwo
KQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2FuY2VsZWQ7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNlPiBBc3luY1N0YWNrVHJhY2U6OmJ1aWxkSW5z
cGVjdG9yT2JqZWN0KCkgY29uc3QKK1JlZlB0cjxQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFj
ZT4gQXN5bmNTdGFja1RyYWNlOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0CiB7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IHRvcFN0YWNr
VHJhY2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJh
Y2U+IHByZXZpb3VzU3RhY2tUcmFjZTsKKyAgICBSZWZQdHI8UHJvdG9jb2w6OkNvbnNvbGU6OlN0
YWNrVHJhY2U+IHRvcFN0YWNrVHJhY2U7CisgICAgUmVmUHRyPFByb3RvY29sOjpDb25zb2xlOjpT
dGFja1RyYWNlPiBwcmV2aW91c1N0YWNrVHJhY2U7CiAKICAgICBhdXRvKiBzdGFja1RyYWNlID0g
dGhpczsKICAgICB3aGlsZSAoc3RhY2tUcmFjZSkgewogICAgICAgICBhdXRvJiBjYWxsU3RhY2sg
PSBzdGFja1RyYWNlLT5tX2NhbGxTdGFjazsKICAgICAgICAgQVNTRVJUKGNhbGxTdGFjay0+c2l6
ZSgpKTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6U3Rh
Y2tUcmFjZT4gcHJvdG9jb2xPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpT
dGFja1RyYWNlOjpjcmVhdGUoKQorICAgICAgICBhdXRvIHByb3RvY29sT2JqZWN0ID0gUHJvdG9j
b2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0Q2FsbEZy
YW1lcyhjYWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSkKICAgICAgICAgICAgIC5yZWxl
YXNlKCk7CiAKQEAgLTExNiwxMiArMTE3LDEyIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDb25zb2xlOjpTdGFja1RyYWNlPiBBc3luY1N0YWNrVHJhY2U6OmJ1aWxkSW5zcGVjdG9yCiAg
ICAgICAgICAgICBwcm90b2NvbE9iamVjdC0+c2V0VG9wQ2FsbEZyYW1lSXNCb3VuZGFyeSh0cnVl
KTsKIAogICAgICAgICBpZiAoIXRvcFN0YWNrVHJhY2UpCi0gICAgICAgICAgICB0b3BTdGFja1Ry
YWNlID0gcHJvdG9jb2xPYmplY3Q7CisgICAgICAgICAgICB0b3BTdGFja1RyYWNlID0gcHJvdG9j
b2xPYmplY3QucHRyKCk7CiAKICAgICAgICAgaWYgKHByZXZpb3VzU3RhY2tUcmFjZSkKLSAgICAg
ICAgICAgIHByZXZpb3VzU3RhY2tUcmFjZS0+c2V0UGFyZW50U3RhY2tUcmFjZShwcm90b2NvbE9i
amVjdCk7CisgICAgICAgICAgICBwcmV2aW91c1N0YWNrVHJhY2UtPnNldFBhcmVudFN0YWNrVHJh
Y2UocHJvdG9jb2xPYmplY3QucHRyKCkpOwogCi0gICAgICAgIHByZXZpb3VzU3RhY2tUcmFjZSA9
IHByb3RvY29sT2JqZWN0OworICAgICAgICBwcmV2aW91c1N0YWNrVHJhY2UgPSBXVEZNb3ZlKHBy
b3RvY29sT2JqZWN0KTsKICAgICAgICAgc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2UtPm1fcGFyZW50
LmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9Bc3luY1N0YWNrVHJhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
QXN5bmNTdGFja1RyYWNlLmgKaW5kZXggYTYxOGZlN2FmZjFmNmQ1MTBhYTQ1MGMzMzBiN2ExODBl
MzBmYmFlZi4uMWMzY2NmNDgzN2FiMTU3MjEwYzAzZmM4M2ZiZGQ3Yzc5Nzg1MTkyNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERpc3BhdGNoQXN5bmNDYWxsKCk7
CiAgICAgdm9pZCBkaWRDYW5jZWxBc3luY0NhbGwoKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNlPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNv
bnN0OworICAgIFJlZlB0cjxQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gYnVpbGRJbnNw
ZWN0b3JPYmplY3QoKSBjb25zdDsKIAogICAgIH5Bc3luY1N0YWNrVHJhY2UoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRl
eCA0YzE3NTE1NjkzYjQ0NTkxYjdkNmNiMjM5MThkNDIyNzE1OGFlM2RhLi41Y2ZiMDRkZjRhZjgz
NDgxOWJmOGY3OGZiMWQ4ZTYxNzczOGNhZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMTU0LDYxICsxNTQsNjEgQEAg
dm9pZCBDb25zb2xlTWVzc2FnZTo6YXV0b2dlbmVyYXRlTWV0YWRhdGEoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlKQogICAgIH0KIH0KIAotc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6
OkNoYW5uZWxTb3VyY2UgbWVzc2FnZVNvdXJjZVZhbHVlKE1lc3NhZ2VTb3VyY2Ugc291cmNlKQor
c3RhdGljIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlIG1lc3NhZ2VTb3VyY2VWYWx1
ZShNZXNzYWdlU291cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewotICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6WE1MOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q2hhbm5lbFNvdXJjZTo6WE1MOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6IHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpKYXZhc2NyaXB0
OwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TmV0d29yazogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6Ok5ldHdvcms7Ci0gICAgY2FzZSBNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2hhbm5lbFNvdXJjZTo6Q29uc29sZUFQSTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlN0b3Jh
Z2U6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpT
dG9yYWdlOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGU6IHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpBcHBjYWNoZTsKLSAgICBjYXNl
IE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OkNoYW5uZWxTb3VyY2U6OlJlbmRlcmluZzsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6
OkNTUzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6
OkNTUzsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5OiByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6U2VjdXJpdHk7Ci0gICAgY2FzZSBN
ZXNzYWdlU291cmNlOjpDb250ZW50QmxvY2tlcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OkNvbnRlbnRCbG9ja2VyOwotICAgIGNhc2UgTWVzc2Fn
ZVNvdXJjZTo6T3RoZXI6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFu
bmVsU291cmNlOjpPdGhlcjsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6Ok1lZGlhOiByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6TWVkaWE7Ci0gICAg
Y2FzZSBNZXNzYWdlU291cmNlOjpXZWJSVEM6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpD
b25zb2xlOjpDaGFubmVsU291cmNlOjpXZWJSVEM7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpY
TUw6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6WE1MOworICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6SlM6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNv
dXJjZTo6SmF2YXNjcmlwdDsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcms6IHJldHVy
biBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6TmV0d29yazsKKyAgICBjYXNlIE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEk6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bFNvdXJjZTo6Q29uc29sZUFQSTsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2U6IHJl
dHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6U3RvcmFnZTsKKyAgICBjYXNl
IE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5u
ZWxTb3VyY2U6OkFwcGNhY2hlOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nOiBy
ZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OlJlbmRlcmluZzsKKyAgICBj
YXNlIE1lc3NhZ2VTb3VyY2U6OkNTUzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
U291cmNlOjpDU1M7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpTZWN1cml0eTogcmV0dXJuIFBy
b3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpTZWN1cml0eTsKKyAgICBjYXNlIE1lc3Nh
Z2VTb3VyY2U6OkNvbnRlbnRCbG9ja2VyOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5u
ZWxTb3VyY2U6OkNvbnRlbnRCbG9ja2VyOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6T3RoZXI6
IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6T3RoZXI7CisgICAgY2Fz
ZSBNZXNzYWdlU291cmNlOjpNZWRpYTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
U291cmNlOjpNZWRpYTsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OldlYlJUQzogcmV0dXJuIFBy
b3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpXZWJSVEM7CiAgICAgfQotICAgIHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpPdGhlcjsKKyAg
ICByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6Ok90aGVyOwogfQogCi1z
dGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGUg
bWVzc2FnZVR5cGVWYWx1ZShNZXNzYWdlVHlwZSB0eXBlKQorc3RhdGljIFByb3RvY29sOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZSBtZXNzYWdlVHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5
cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6TG9nOiBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OkxvZzsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVhcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKLSAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpEaXI6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6VHlwZTo6RGlyOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpclhNTDogcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpE
aXJYTUw7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6VGFibGU6IHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7Ci0gICAgY2FzZSBN
ZXNzYWdlVHlwZTo6VHJhY2U6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6VHJhY2U7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRH
cm91cDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpTdGFydEdyb3VwOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXBDb2xs
YXBzZWQ6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFbmRH
cm91cDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpFbmRHcm91cDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpBc3NlcnQ6IHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6QXNzZXJ0
OwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRpbWluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1pbmc7Ci0gICAgY2FzZSBNZXNz
YWdlVHlwZTo6UHJvZmlsZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OlByb2Zp
bGVFbmQ6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6UHJvZmlsZUVuZDsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpMb2c6IHJldHVybiBQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpDbGVhcjogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6Q2xlYXI7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RGlyOiByZXR1cm4gUHJvdG9j
b2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXI7CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6RGlyWE1MOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpEaXJYTUw7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6VGFibGU6IHJldHVybiBQcm90b2Nv
bDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRhYmxlOworICAgIGNhc2UgTWVzc2Fn
ZVR5cGU6OlRyYWNlOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpUcmFjZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwOiByZXR1cm4gUHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwOworICAgIGNh
c2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQ6IHJldHVybiBQcm90b2NvbDo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQ7CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6RW5kR3JvdXA6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlR5cGU6OkVuZEdyb3VwOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkFzc2VydDog
cmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6QXNzZXJ0Owor
ICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRpbWluZzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6VGltaW5nOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlByb2Zp
bGU6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2Zp
bGU7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZDogcmV0dXJuIFByb3RvY29sOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmlsZUVuZDsKICAgICB9Ci0gICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpM
b2c7CisgICAgcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
TG9nOwogfQogCi1zdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3N0YXRp
YyBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZh
bHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKIHsKICAgICBzd2l0Y2ggKGxldmVsKSB7Ci0gICAgY2Fz
ZSBNZXNzYWdlTGV2ZWw6OkxvZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOwotICAgIGNhc2UgTWVzc2FnZUxldmVsOjpJbmZv
OiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6Okxl
dmVsOjpJbmZvOwotICAgIGNhc2UgTWVzc2FnZUxldmVsOjpXYXJuaW5nOiByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpXYXJuaW5nOwot
ICAgIGNhc2UgTWVzc2FnZUxldmVsOjpFcnJvcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RXJyb3I7Ci0gICAgY2FzZSBNZXNzYWdl
TGV2ZWw6OkRlYnVnOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OkxldmVsOjpEZWJ1ZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6TG9nOiByZXR1
cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOworICAgIGNh
c2UgTWVzc2FnZUxldmVsOjpJbmZvOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpMZXZlbDo6SW5mbzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6V2FybmluZzogcmV0
dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Oldhcm5pbmc7Cisg
ICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkVycm9yOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpMZXZlbDo6RXJyb3I7CisgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkRlYnVn
OiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7
CiAgICAgfQotICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6TGV2ZWw6OkxvZzsKKyAgICByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpMZXZlbDo6TG9nOwogfQogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zy
b250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXIsIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdl
bmVyYXRlUHJldmlldykKIHsKLSAgICBhdXRvIG1lc3NhZ2VPYmplY3QgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRlKCkKKyAgICBhdXRvIG1lc3Nh
Z2VPYmplY3QgPSBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRTb3VyY2UobWVzc2FnZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKICAgICAgICAg
LnNldExldmVsKG1lc3NhZ2VMZXZlbFZhbHVlKG1fbGV2ZWwpKQogICAgICAgICAuc2V0VGV4dCht
X21lc3NhZ2UpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9G
cm9udGVuZChDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyJiBjb25zb2xlRnJvbnRlbmREaXMKICAg
ICBpZiAoKG1fYXJndW1lbnRzICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHx8IG1f
anNvbkxvZ1ZhbHVlcy5zaXplKCkpIHsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3Rh
dGUoKSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAg
ICAgICAgICBhdXRvIGFyZ3VtZW50c09iamVjdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBh
dXRvIGFyZ3VtZW50c09iamVjdCA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKG1fYXJndW1lbnRzICYmIG1f
YXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV90eXBl
ID09IE1lc3NhZ2VUeXBlOjpUYWJsZSAmJiBnZW5lcmF0ZVByZXZpZXcgJiYgbV9hcmd1bWVudHMt
PmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRhYmxlID0gbV9h
cmd1bWVudHMtPmFyZ3VtZW50QXQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCBmOTFiMjEw
MWExOTY2ZDViYzY5ZWZhNTRhZjBjZTcxMDU1MDU2MTBmLi5hYWE4MWUyODYyZTE2NTk4ZTMyNWQ2
NDhjYmU2Y2FiYzYyMDIwZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOjpZ
YXJyOwogCkBAIC03OSwxMiArODAsMTIgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90
LCBTdHJpbmc+PiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKGNvbnMKICAgICBp
ZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGVuZGluZ3MobGluZUVuZGluZ3ModGV4dCkpOwotICAg
IHNpemVfdCBzaXplID0gZW5kaW5ncy0+c2l6ZSgpOworICAgIGF1dG8gZW5kaW5ncyA9IGxpbmVF
bmRpbmdzKHRleHQpOworICAgIHNpemVfdCBzaXplID0gZW5kaW5ncy5zaXplKCk7CiAgICAgc2l6
ZV90IHN0YXJ0ID0gMDsKIAogICAgIGZvciAoc2l6ZV90IGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVt
YmVyIDwgc2l6ZTsgKytsaW5lTnVtYmVyKSB7Ci0gICAgICAgIHNpemVfdCBuZXh0U3RhcnQgPSBl
bmRpbmdzLT5hdChsaW5lTnVtYmVyKTsKKyAgICAgICAgc2l6ZV90IG5leHRTdGFydCA9IGVuZGlu
Z3NbbGluZU51bWJlcl07CiAgICAgICAgIFN0cmluZyBsaW5lID0gdGV4dC5zdWJzdHJpbmcoc3Rh
cnQsIG5leHRTdGFydCAtIHN0YXJ0KTsKIAogICAgICAgICBpbnQgbWF0Y2hMZW5ndGg7CkBAIC05
NywzMSArOTgsMzEgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBn
ZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKGNvbnMKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0
IFN0cmluZyYgdGV4dCkKK1ZlY3RvcjxzaXplX3Q+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYg
dGV4dCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHNpemVf
dD4+KCk7CisgICAgVmVjdG9yPHNpemVfdD4gcmVzdWx0OwogCiAgICAgc2l6ZV90IHN0YXJ0ID0g
MDsKICAgICB3aGlsZSAoc3RhcnQgPCB0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIHNpemVfdCBu
ZXh0U3RhcnQgPSB0ZXh0LmZpbmQoJ1xuJywgc3RhcnQpOwogICAgICAgICBpZiAobmV4dFN0YXJ0
ID09IG5vdEZvdW5kIHx8IG5leHRTdGFydCA9PSAodGV4dC5sZW5ndGgoKSAtIDEpKSB7Ci0gICAg
ICAgICAgICByZXN1bHQtPmFwcGVuZCh0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodGV4dC5sZW5ndGgoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CiAgICAgICAgIG5leHRTdGFydCArPSAxOwotICAgICAgICByZXN1bHQtPmFwcGVuZChuZXh0U3Rh
cnQpOworICAgICAgICByZXN1bHQuYXBwZW5kKG5leHRTdGFydCk7CiAgICAgICAgIHN0YXJ0ID0g
bmV4dFN0YXJ0OwogICAgIH0KIAotICAgIHJlc3VsdC0+YXBwZW5kKHRleHQubGVuZ3RoKCkpOwor
ICAgIHJlc3VsdC5hcHBlbmQodGV4dC5sZW5ndGgoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goc2l6ZV90IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgbGluZUNvbnRlbnQpCitzdGF0aWMgUmVmPFByb3RvY29sOjpHZW5lcmljVHlwZXM6
OlNlYXJjaE1hdGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKHNpemVfdCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIGxpbmVDb250ZW50KQogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoOjpjcmVhdGUoKQorICAgIHJldHVybiBQ
cm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaDo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dExpbmVOdW1iZXIobGluZU51bWJlcikKICAgICAgICAgLnNldExpbmVDb250ZW50KGxpbmVDb250
ZW50KQogICAgICAgICAucmVsZWFzZSgpOwpAQCAtMTUxLDI3ICsxNTIsMTUgQEAgaW50IGNvdW50
UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKGNvbnN0IFJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwg
Y29uc3QgU3RyaW5nJgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJ
blRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29u
c3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpCitSZWY8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5
TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29s
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD46OmNyZWF0ZSgpOwotCi0gICAgUmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50
U2VhcmNoVXRpbGl0aWVzOjpjcmVhdGVTZWFyY2hSZWdleChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwg
aXNSZWdleCk7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIFN0cmluZz4+IG1hdGNoZXMg
PSBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKLQotICAg
IGZvciAoY29uc3QgYXV0byYgbWF0Y2ggOiBtYXRjaGVzKSB7Ci0gICAgICAgIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPiBtYXRjaE9iamVjdCA9IGJ1
aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2gobWF0Y2guZmlyc3QsIG1hdGNoLnNlY29uZCk7Ci0gICAg
ICAgIHJlc3VsdC0+YWRkSXRlbShXVEZNb3ZlKG1hdGNoT2JqZWN0KSk7Ci0gICAgfQotCisgICAg
YXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRp
ZXM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIG1hdGNoIDogZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlM
aW5lcyhyZWdleCwgdGV4dCkpCisgICAgICAgIHJlc3VsdC0+YWRkSXRlbShidWlsZE9iamVjdEZv
clNlYXJjaE1hdGNoKG1hdGNoLmZpcnN0LCBtYXRjaC5zZWNvbmQpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1zdGF0aWMgU3RyaW5nIHN0eWxlc2hlZXRDb21tZW50UGF0dGVybihjb25zdCBT
dHJpbmcmIG5hbWUpCi17Ci0gICAgLy8gIi8qIyA8bmFtZT49PHZhbHVlPiAqLyIgYW5kIGRlcHJl
Y2F0ZWQgIi8qQCIKLSAgICByZXR1cm4gIi9cXCpbI0BdW1wwNDBcdF0iICsgbmFtZSArICI9W1ww
NDBcdF0qKFteXFxzXCdcIl0qKVtcMDQwXHRdKlxcKi8iOwotfQotCiBzdGF0aWMgU3RyaW5nIGZp
bmRNYWdpY0NvbW1lbnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhdHRl
cm5TdHJpbmcpCiB7CiAgICAgaWYgKGNvbnRlbnQuaXNFbXB0eSgpKQpAQCAtMTg1LDkgKzE3NCw4
IEBAIHN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQs
IGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluCiAgICAgQVNTRVJUKGJ5dGVjb2RlUGF0dGVybik7
CiAKICAgICBBU1NFUlQocGF0dGVybi5tX251bVN1YnBhdHRlcm5zID09IDEpOwotICAgIFZlY3Rv
cjxpbnQsIDQ+IG1hdGNoZXM7Ci0gICAgbWF0Y2hlcy5ncm93KDQpOwotICAgIHVuc2lnbmVkIHJl
c3VsdCA9IGludGVycHJldChieXRlY29kZVBhdHRlcm4uZ2V0KCksIGNvbnRlbnQsIDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihtYXRjaGVzLmRhdGEoKSkpOworICAgIHN0ZDo6YXJyYXk8
dW5zaWduZWQsIDQ+IG1hdGNoZXM7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gaW50ZXJwcmV0KGJ5
dGVjb2RlUGF0dGVybi5nZXQoKSwgY29udGVudCwgMCwgbWF0Y2hlcy5kYXRhKCkpOwogICAgIGlm
IChyZXN1bHQgPT0gb2Zmc2V0Tm9NYXRjaCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBA
IC0xOTcsNyArMTg1LDggQEAgc3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0
cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW4KIAogU3RyaW5nIGZpbmRT
dHlsZXNoZWV0U291cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICByZXR1
cm4gZmluZE1hZ2ljQ29tbWVudChjb250ZW50LCBzdHlsZXNoZWV0Q29tbWVudFBhdHRlcm4oQVND
SUlMaXRlcmFsKCJzb3VyY2VNYXBwaW5nVVJMIikpKTsKKyAgICAvLyAiLyojIDxuYW1lPj08dmFs
dWU+ICovIiBhbmQgZGVwcmVjYXRlZCAiLypAIgorICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50
KGNvbnRlbnQsIEFTQ0lJTGl0ZXJhbCB7ICIvXFwqWyNAXVtcMDQwXHRdc291cmNlTWFwcGluZ1VS
TD1bXDA0MFx0XSooW15cXHNcJ1wiXSopW1wwNDBcdF0qXFwqLyIgfSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKaW5kZXggNTViMTkx
ZWEyMzg5Y2MxZjlmZmE3OGNmYWNkMjJjMWJjMWNlMDU4MS4uZDJlYThlZTBlZWNmNTcyM2IzNDY0
MGVhOWQyYWYzYTdiYTEyYjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKQEAgLTI5LDkgKzI5LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmgiCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiBjbGFzcyBSZWd1bGFyRXhw
cmVzc2lvbjsKQEAgLTQzLDkgKzQxLDkgQEAgbmFtZXNwYWNlIENvbnRlbnRTZWFyY2hVdGlsaXRp
ZXMgewogCiBKU19FWFBPUlRfUFJJVkFURSBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNy
ZWF0ZVNlYXJjaFJlZ2V4KGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwg
Ym9vbCBpc1JlZ2V4KTsKIEpTX0VYUE9SVF9QUklWQVRFIGludCBjb3VudFJlZ3VsYXJFeHByZXNz
aW9uTWF0Y2hlcyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgY29uc3QgU3Ry
aW5nJik7Ci1KU19FWFBPUlRfUFJJVkFURSBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5U
ZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0
IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KTsKIEpTX0VYUE9SVF9QUklW
QVRFIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVfdCBvZmZzZXQsIGNv
bnN0IFZlY3RvcjxzaXplX3Q+JiBsaW5lRW5kaW5ncyk7Ci1KU19FWFBPUlRfUFJJVkFURSBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYpOwor
SlNfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPHNpemVfdD4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5n
Jik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmaW5kU3R5bGVzaGVldFNvdXJjZU1hcFVS
TChjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDNlZmMzZmRhNTFjMWNmMzE1NGRj
NWQ2OTc4M2U5ZDI0ZmU5OTRjZGIuLmZhODI4ZDAwNWE4M2ZhMjYwOTI0NTgxNTgwNjUyOTA5NTY1
MjgzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluamVjdGVkU2NyaXB0Ojp+SW5qZWN0ZWRT
Y3JpcHQoKQogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgYm9vbCYgd2FzVGhy
b3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wg
c2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIGJvb2wmIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4
KQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImV2YWx1YXRlIiksIGluc3BlY3RvckVudmly
b25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoZXhwcmVzc2lvbik7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uCiAgICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNU
aHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpjYWxs
RnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJv
b2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIGJvb2wmIHdhc1Rocm93
bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIGJvb2wmIHdhc1Rocm93bikKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJjYWxsRnVu
Y3Rpb25PbiIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTc5LDcgKzc5LDcg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcs
IGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93biwgdW51c2VkKTsKIH0KIAotdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpT
Qzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQsIGJvb2wmIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+
JiBzYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBj
b25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJl
dHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBib29sJiB3YXNUaHJv
d24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
QVNDSUlMaXRlcmFsKCJldmFsdWF0ZU9uQ2FsbEZyYW1lIiksIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
Y2FsbEZyYW1lcyk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6OkpTVmFsdWUKICAg
ICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93biwg
c2F2ZWRSZXN1bHRJbmRleCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25J
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+
JiByZXN1bHQpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90
b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIHJlc3VsdCkKIHsKICAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
QVNDSUlMaXRlcmFsKCJnZXRGdW5jdGlvbkRldGFpbHMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChm
dW5jdGlvbklkKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRG
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+OjpydW50aW1lQ2FzdChX
VEZNb3ZlKHJlc3VsdFZhbHVlKSk7CisgICAgcmVzdWx0ID0gQmluZGluZ1RyYWl0czxQcm90b2Nv
bDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0
VmFsdWUpKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBSZWZQdHI8UHJvdG9jb2w6
OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiByZXN1bHQpCkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgSlNDOjpKU1ZhbHVlIHZhbHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJl
c3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0
aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0VmFsdWUpKTsKKyAgICByZXN1
bHQgPSBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPjo6
cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHRWYWx1ZSkpOwogfQogCiB2b2lkIEluamVjdGVkU2Ny
aXB0OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYgcmVzdWx0
KQpAQCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJldmlldyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVz
dWx0VmFsdWUpKTsKKyAgICByZXN1bHQgPSBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1l
OjpPYmplY3RQcmV2aWV3Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHRWYWx1ZSkpOwogfQog
Ci12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywg
UmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+JiBwcm9wZXJ0aWVzKQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImdldFByb3BlcnRp
ZXMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xNTEsMTAgKzE1MSwxMCBA
QCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBvYmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
cHJvcGVydGllcyA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShy
ZXN1bHQpKTsKKyAgICBwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92
ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
Ym9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBwcm9wZXJ0aWVzKQordm9pZCBJ
bmplY3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgcHJvcGVydGllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXREaXNwbGF5YWJs
ZVByb3BlcnRpZXMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxl
cigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xNjYsMTAg
KzE2NiwxMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcHJvcGVydGllcyA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3Qo
V1RGTW92ZShyZXN1bHQpKTsKKyAgICBwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNh
c3QoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3Bl
cnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0
ZXJhbCgiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0
SWQpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFs
UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGFycmF5ID0gQmluZGluZ1RyYWl0czxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNj
cmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBhcnJheSA9
IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKICAgICBw
cm9wZXJ0aWVzID0gYXJyYXktPmxlbmd0aCgpID4gMCA/IGFycmF5IDogbnVsbHB0cjsKIH0KIApA
QCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1CiAgICAgICAgIHNhdmVk
UmVzdWx0SW5kZXggPSByZXN1bHRJbmRleDsKIH0KIAotUmVmPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFw
Q2FsbEZyYW1lcyhKU0M6OkpTVmFsdWUgY2FsbEZyYW1lcykgY29uc3QKK1JlZjxKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBD
YWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzKSBjb25zdAogewogICAgIEFTU0VSVCgh
aGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJ3cmFwQ2FsbEZyYW1lcyIp
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMjI3
LDE2ICsyMjcsMTYgQEAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmEKICAgICBib29sIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOwogICAgIGF1dG8gY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmICghY2FsbEZyYW1l
c1ZhbHVlKQotICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBKU09OOjpB
cnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgQVNT
RVJUKCFoYWRFeGNlcHRpb24pOwogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gdG9J
bnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2FsbEZyYW1lc1ZhbHVlKTsKICAgICBpZiAo
cmVzdWx0LT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KQotICAgICAgICByZXR1
cm4gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKS5yZWxlYXNlTm9u
TnVsbCgpOworICAgICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSku
cmVsZWFzZU5vbk51bGwoKTsKIAotICAgIHJldHVybiBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gSlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogfQog
Ci1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYg
Z3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKK1JlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6OkpT
VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmll
dykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CiAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBB
U0NJSUxpdGVyYWwoIndyYXBPYmplY3QiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVj
dChKUwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0
YXRlKCksIHIpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKLSAgICByZXR1cm4gQmluZGluZ1RyYWl0czxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChy
ZXN1bHRPYmplY3QpOworICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOwogfQogCiBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBKU09O
U3RyaW5nKGNvbnN0IFN0cmluZyYganNvbiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3KSBjb25zdApAQCAtMjc3LDEwICsyNzcsMTAgQEAgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmlu
Zyhjb25zdCBTdHIKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpz
Y3JpcHRTdGF0ZSgpLCBldmFsUmVzdWx0KS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBB
U1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCi0gICAgcmV0dXJu
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsKKyAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0
KTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShKU0M6OkpTVmFsdWUgdGFibGUsIEpTQzo6SlNW
YWx1ZSBjb2x1bW5zKSBjb25zdAorUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHRhYmxlLCBKU0M6OkpT
VmFsdWUgY29sdW1ucykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CiAgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoIndyYXBUYWJsZSIpLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMzAwLDEwICszMDAsMTAgQEAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBUYWJsZShKU0MKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZh
bHVlKCpzY3JpcHRTdGF0ZSgpLCByKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NF
UlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCi0gICAgcmV0dXJuIEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6
cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsKKyAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsK
IH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+
IEluamVjdGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSBjb25zdAor
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6
cHJldmlld1ZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhh
c05vVmFsdWUoKSk7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoInByZXZpZXdWYWx1ZSIp
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMzE4
LDcgKzMxOCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQ
cmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlCiAgICAgYm9vbCBjYXN0U3VjY2Vl
ZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3Vs
dE9iamVjdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVk
KTsKIAotICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6Ok9iamVjdFByZXZpZXc+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOworICAgIHJldHVy
biBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3Pjo6cnVudGlt
ZUNhc3QocmVzdWx0T2JqZWN0KTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXhjZXB0
aW9uVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaAppbmRleCAwNzY1NzNl
YTViZDczM2I0MjJkOWU2OGFmOTNmZjdkMDJhZDkyZTJiLi41YjE1NjViZGI2ODUwNWIzODgzMDI2
M2YzYzkxMjU5YmQ4ZTEyYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaApAQCAtMzMsMTA0ICszMyw1NyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIFByb3RvY29sIHsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEJpbmRpbmdUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IEJpbmRpbmdUcmFpdHM7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBPcHRP
dXRwdXQgewotcHVibGljOgotICAgIE9wdE91dHB1dCgpIDogbV9hc3NpZ25lZChmYWxzZSkgeyB9
Ci0KLSAgICB2b2lkIG9wZXJhdG9yPShUIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV92YWx1ZSA9
IHZhbHVlOwotICAgICAgICBtX2Fzc2lnbmVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGlz
QXNzaWduZWQoKSBjb25zdCB7IHJldHVybiBtX2Fzc2lnbmVkOyB9Ci0KLSAgICBUIGdldFZhbHVl
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0Fzc2lnbmVkKCkpOwotICAgICAgICByZXR1cm4g
bV92YWx1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVCBtX3ZhbHVlOwotICAgIGJvb2wgbV9h
c3NpZ25lZDsKLQotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9wdE91dHB1dCk7Ci19OwotCi0v
LyBIZWxwZXIgbWV0aG9kcyBmb3IgUHJvdG9jb2wgYW5kIG90aGVyIEpTT04gdHlwZXMgYXJlIHBy
b3ZpZGVkIGJ5Ci0vLyBzcGVjaWFsaXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29tZSBh
cmUgZ2VuZXJhdGVkIGZvciBwcm90b2NvbCB0eXBlcy4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LXN0cnVjdCBCaW5kaW5nVHJhaXRzIHsKLSAgICB0eXBlZGVmIFQgQmluZGluZ1R5cGU7Ci0KLSAg
ICBzdGF0aWMgdm9pZCBwdXNoKEpTT046OkFycmF5JiwgQmluZGluZ1R5cGUmKTsKLSAgICBzdGF0
aWMgSlNPTjo6VmFsdWU6OlR5cGUgdHlwZVRhZygpOwotICAgIHN0YXRpYyBSZWZQdHI8VD4gcnVu
dGltZUNhc3QoUmVmUHRyPEpTT046Ok9iamVjdD4mJik7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKik7
Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfTsKLQotdGVtcGxhdGU8SlNPTjo6VmFsdWU6
OlR5cGUgVFlQRT4KLXN0cnVjdCBQcmltaXRpdmVCaW5kaW5nVHJhaXRzIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECit0ZW1wbGF0ZTxKU09OOjpWYWx1ZTo6VHlwZSB0eXBlPiBzdHJ1Y3QgUHJpbWl0
aXZlQmluZGluZ1RyYWl0cyB7CiAgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyh2YWx1
ZSwgdmFsdWUgJiYgdmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RCh2YWx1ZSwgdmFsdWUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZS0+dHlw
ZSgpID09IHR5cGUpOwogICAgIH0KLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxU
Pj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJy
YXlPZjxUPj4gewogICAgIHN0YXRpYyBSZWZQdHI8SlNPTjo6QXJyYXlPZjxUPj4gcnVudGltZUNh
c3QoUmVmUHRyPEpTT046OlZhbHVlPiYmIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUX0FS
Ryh2YWx1ZSwgdmFsdWUpOwogICAgICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFycmF5OwogICAg
ICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNBcnJheShhcnJheSk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgICAgICBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS5nZXQo
KSk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBDT01QSUxFX0FTU0VSVChz
aXplb2YoSlNPTjo6QXJyYXlPZjxUPikgPT0gc2l6ZW9mKEpTT046OkFycmF5KSwgdHlwZV9jYXN0
X3Byb2JsZW0pOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXlPZjxUPio+
KHN0YXRpY19jYXN0PEpTT046OkFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CiAgICAgfQogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0
ZWRUeXBlKEpTT046OlZhbHVlKiB2YWx1ZSkKICAgICB7CisjaWYgQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZWxzZQogICAgICAgICBBU1NFUlRfQVJHKHZh
bHVlLCB2YWx1ZSk7CiAgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYXJyYXk7CiAgICAgICAg
IGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc0FycmF5KGFycmF5KTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgaSsrKQogICAgICAgICAgICAgQmlu
ZGluZ1RyYWl0czxUPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoYXJyYXktPmdldChpKS5n
ZXQoKSk7Ci0gICAgfQogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9CiB9OwogCi10
ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZT4gewotI2lmICFBU1NF
UlRfRElTQUJMRUQKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU+
IHsKICAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1
ZSopCiAgICAgewogICAgIH0KLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwogCi10ZW1w
bGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5PiA6IHB1YmxpYyBQcmltaXRp
dmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpBcnJheT4geyB9OwotdGVtcGxhdGU8
PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpPYmplY3Q+IDogcHVibGljIFByaW1pdGl2ZUJp
bmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6Ok9iamVjdD4geyB9OwotdGVtcGxhdGU8PiBz
dHJ1Y3QgQmluZGluZ1RyYWl0czxTdHJpbmc+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFp
dHM8SlNPTjo6VmFsdWU6OlR5cGU6OlN0cmluZz4geyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQmlu
ZGluZ1RyYWl0czxib29sPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZh
bHVlOjpUeXBlOjpCb29sZWFuPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRz
PGRvdWJsZT4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlw
ZTo6RG91YmxlPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGludD4gOiBw
dWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcj4g
eyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpBcnJheT4gOiBQcmlt
aXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpBcnJheT4geyB9OwordGVtcGxh
dGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpPYmplY3Q+IDogUHJpbWl0aXZlQmluZGlu
Z1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6T2JqZWN0PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBCaW5kaW5nVHJhaXRzPFN0cmluZz4gOiBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZh
bHVlOjpUeXBlOjpTdHJpbmc+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8
Ym9vbD4gOiBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpCb29sZWFu
PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGRvdWJsZT4gOiBQcmltaXRp
dmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpEb3VibGU+IHsgfTsKK3RlbXBsYXRl
PD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8aW50PiA6IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNP
Tjo6VmFsdWU6OlR5cGU6OkludGVnZXI+IHsgfTsKIAotfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wK
K30KIAogdXNpbmcgUHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCBhNzMwMGFm
MmNhN2UyYzMxNDlkZDRmMWE2MTI1MmMxODAyM2RkMWU1Li4xODNmZWYxZjI1ZGFhYjAwZmE0YzE5
NDZhYzUyMGQ0OGI4YzRhZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC02Miw5ICs2Miw5IEBAIGJvb2wgU2NyaXB0
Q2FsbEZyYW1lOjppc05hdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2NyaXB0TmFtZSA9PSAi
W25hdGl2ZSBjb2RlXSI7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
YWxsRnJhbWU+IFNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAor
UmVmPFByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+IFNjcmlwdENhbGxGcmFtZTo6YnVpbGRJ
bnNwZWN0b3JPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpDb25zb2xlOjpDYWxsRnJhbWU6OmNyZWF0ZSgpCisgICAgcmV0dXJuIFByb3RvY29sOjpDb25z
b2xlOjpDYWxsRnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRGdW5jdGlvbk5hbWUobV9mdW5j
dGlvbk5hbWUpCiAgICAgICAgIC5zZXRVcmwobV9zY3JpcHROYW1lKQogICAgICAgICAuc2V0U2Ny
aXB0SWQoU3RyaW5nOjpudW1iZXIobV9zb3VyY2VJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAppbmRleCA2MzdiZTZmMjJlZDgzNzRi
NzI2OGI1MjhmNjQ4MWFiOTRlZTZhYzk1Li5jMmY1YzI5ZTg1Y2ZkMzI5NTZlMjk3MGU4NDFiOWVl
MzM1MDJhMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbEZyYW1lLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGlzRXF1
YWwob3RoZXIpOyB9CiAKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2Fs
bEZyYW1lPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OworICAgIFJlZjxQcm90b2NvbDo6
Q29uc29sZTo6Q2FsbEZyYW1lPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCA5NWNlMzMxM2UzNDQw
NjQ5ODRiM2FmYzFmZjE1ZTg1YTdlOGI2NWIzLi43ZDUzYjRjYjY5Y2Y3MTJkNWZiMjRjNzk0OWYy
NmQxMWYzY2NiOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0xMDUsOSArMTA1LDkgQEAgYm9vbCBTY3JpcHRDYWxs
U3RhY2s6OmlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKiBvKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1SZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
YWxsRnJhbWU+PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAor
UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENh
bGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CiB7Ci0gICAgYXV0byBmcmFtZXMg
PSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT46
OmNyZWF0ZSgpOworICAgIGF1dG8gZnJhbWVzID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29u
c29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2ZyYW1lcy5zaXplKCk7IGkrKykKICAgICAgICAgZnJhbWVzLT5hZGRJdGVtKG1fZnJhbWVzLmF0
KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOwogICAgIHJldHVybiBmcmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAppbmRleCA5
OTI4MGIwNjRhY2E3NzUxNTc3MDkzYmIzNTRlM2U4NjQ1NDI3MDIyLi5mOWVjY2RjNmQ5Y2NhNjY5
ZjUzZjA2ZDMzMmY5OTY5MzNiMTJiMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBpc0VxdWFsKFNjcmlwdENhbGxTdGFjayopIGNvbnN0OwogCi0gICAgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVp
bGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OworICAgIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29s
OjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgU2NyaXB0Q2FsbFN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcAppbmRleCA1YzNiZjdkNmYyMjZkMjE3MzZjYjE0NzhkNDM3M2QzZDkzN2JlNjQ5Li4wZGFk
ODBmNjY3YTM0OGFjYjZjMjgwZjY1YWNkMjEzY2Q0NzdlYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKQEAgLTIzOSwxMCArMjM5LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+
IGNvCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0No
YW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+JiBjaGFubmVscykKK3ZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+JiBjaGFubmVscykKIHsKICAgICAvLyBE
ZWZhdWx0IGltcGxlbWVudGF0aW9uIGhhcyBubyBsb2dnaW5nIGNoYW5uZWxzLgotICAgIGNoYW5u
ZWxzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
Pjo6Y3JlYXRlKCk7CisgICAgY2hhbm5lbHMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpDb25z
b2xlOjpDaGFubmVsPjo6Y3JlYXRlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50
OjpzZXRMb2dnaW5nQ2hhbm5lbExldmVsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXgg
YTFjZjZhMjU0M2M2MDJlNjA1MzJjZmM1ODg2ZjUzMzE5YmU2MzZiOC4uM2RiYmViMDMzNDJjYzVh
NjRiYWQwMGE1ZmVlODE3Zjk0M2ViN2YxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgK
QEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChjb25z
dCBTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNj
cmlwdEFyZ3VtZW50cz4mJik7CiAKLSAgICB2b2lkIGdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0
cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6
OkNoYW5uZWw+PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+
PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY2hhbm5lbCwgY29uc3QgU3RyaW5nJiBsZXZlbCkgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYThi
MjM5OGE0YWI3ODVjNTk5NGU1ZTg0MmNiZDUzYjNlNjExYWQ4OS4uMzg1NGM0YmU3MjhiMWY2MTBk
YmY2Y2E3Nzk1NGEzMzc0Y2ZkZDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFN1
cHByZXNzQWxsUGF1c2VzKGJvb2wgc3VwcHJlc3MpCiAKIHN0YXRpYyBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBidWlsZEFzc2VydFBhdXNlUmVhc29uKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBhdXRvIHJlYXNvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpBc3NlcnRQYXVz
ZVJlYXNvbjo6Y3JlYXRlKCkucmVsZWFzZSgpOworICAgIGF1dG8gcmVhc29uID0gUHJvdG9jb2w6
OkRlYnVnZ2VyOjpBc3NlcnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkucmVsZWFzZSgpOwogICAgIGlm
ICghbWVzc2FnZS5pc051bGwoKSkKICAgICAgICAgcmVhc29uLT5zZXRNZXNzYWdlKG1lc3NhZ2Up
OwogICAgIHJldHVybiByZWFzb24tPm9wZW5BY2Nlc3NvcnMoKTsKQEAgLTE4MSw3ICsxODEsNyBA
QCBzdGF0aWMgUmVmUHRyPEpTT046Ok9iamVjdD4gYnVpbGRBc3NlcnRQYXVzZVJlYXNvbihjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZENT
UFZpb2xhdGlvblBhdXNlUmVhc29uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkKIHsKLSAg
ICBhdXRvIHJlYXNvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDU1BWaW9sYXRp
b25QYXVzZVJlYXNvbjo6Y3JlYXRlKCkKKyAgICBhdXRvIHJlYXNvbiA9IFByb3RvY29sOjpEZWJ1
Z2dlcjo6Q1NQVmlvbGF0aW9uUGF1c2VSZWFzb246OmNyZWF0ZSgpCiAgICAgICAgIC5zZXREaXJl
Y3RpdmUoZGlyZWN0aXZlVGV4dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICByZXR1cm4gcmVh
c29uLT5vcGVuQWNjZXNzb3JzKCk7CkBAIC0xOTQsNyArMTk0LDcgQEAgUmVmUHRyPEpTT046Ok9i
amVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24o
SlNDOjpCcmUKICAgICBpZiAoaXQgPT0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9J
bnNwZWN0b3JCcmVha3BvaW50SWRlbnRpZmllci5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIHJlYXNvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpC
cmVha3BvaW50UGF1c2VSZWFzb246OmNyZWF0ZSgpCisgICAgYXV0byByZWFzb24gPSBQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dEJyZWFrcG9pbnRJZChpdC0+dmFsdWUpCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgcmV0dXJu
IHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOwpAQCAtMzQyLDE5ICszNDIsMTkgQEAgc3RhdGljIGJv
b2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29s
IGlzUmVnZXgpCiAKIHN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUqIG91dHB1
dCkKIHsKLSAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0
b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgeworICAgIGlmICh0eXBlU3RyaW5n
ID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkxvZykpIHsKICAgICAgICAg
Km91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlTG9nOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgeworICAgIGlm
ICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1
YXRlKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFs
dWF0ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZh
bHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBl
OjpTb3VuZCkpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpUeXBlOjpTb3VuZCkpIHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb25UeXBlU291bmQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAo
dHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dEFjdGlvbjo6VHlwZTo6UHJvYmUpKSB7CisgICAgaWYgKHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6
Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6UHJvYmUpKSB7CiAgICAgICAgICpvdXRwdXQgPSBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVByb2JlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC00MDYsMTEgKzQwNiwxMSBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJy
ZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpMb2NhdGlvbj4gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6QnJlYWtwb2lu
dCYgYnJlYWtwb2ludCkKK3N0YXRpYyBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2lu
dCkKIHsKICAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CiAKLSAgICBhdXRvIGxvY2F0
aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQor
ICAgIGF1dG8gbG9jYXRpb24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUo
KQogICAgICAgICAuc2V0U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIoYnJlYWtwb2ludC5zb3VyY2VJ
RCkpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGJyZWFrcG9pbnQubGluZSkKICAgICAgICAgLnJl
bGVhc2UoKTsKQEAgLTQzNCw5ICs0MzQsOSBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbgogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFr
cG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFs
VVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpT
T046Ok9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFs
VVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29u
c3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJv
dG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0
aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOworICAgIGxvY2F0aW9ucyA9IEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogICAgIGlm
ICghb3B0aW9uYWxVUkwgPT0gIW9wdGlvbmFsVVJMUmVnZXgpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZp
ZWQuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGludCBsaQogICAgICpvdXRCcmVha3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVu
dGlmaWVyOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9uLCBj
b25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9w
dGlvbnMsIFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRl
bnRpZmllciwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2Nh
dGlvbikKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVO
dW1iZXI7CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
b250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIG1f
c2NyaXB0RGVidWdTZXJ2ZXIuY29udGludWVQcm9ncmFtKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0
aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0
Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250
ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3Qg
U3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBi
b29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5l
cmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCiB7CiAgICAgSlNDOjpTb3VyY2VJRCBz
b3VyY2VJRCA9IHNjcmlwdElEU3RyLnRvSW50UHRyKCk7CiAgICAgYXV0byBpdCA9IG1fc2NyaXB0
cy5maW5kKHNvdXJjZUlEKTsKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgcwogICAgICAgICBlcnJvciA9IEFTQ0lJTGl0ZXJhbCgiTm8gc2NyaXB0IGZvciBpZDogIikg
KyBzY3JpcHRJRFN0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5j
dGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRh
aWxzPiYgZGV0YWlscykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25E
ZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklk
LCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBkZXRhaWxzKQog
ewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uQXNzZXJ0aW9ucyhFcnJvclN0cmluZyYsIGJv
b2wgZW5hYmxlZCkKICAgICBtX3BhdXNlT25Bc3NlcnRpb25GYWlsdXJlcyA9IGVuYWJsZWQ7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCog
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdl
bmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiBvdXRXYXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxpbnQ+KiBvdXRTYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3Qg
Ym9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBi
b29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgb3V0V2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFs
PGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsU3RhY2sp
IHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vdCBwYXVzZWQiKTsKQEAg
LTg0NywxNSArODQ3LDExIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVP
bkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgICAgIG11dGVD
b25zb2xlKCk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGJyaWRnaW5nIGNv
ZGUgd2hlbiBnZW5lcmF0ZWQgcHJvdG9jb2wgY29tbWFuZHMgbm8gbG9uZ2VyIHVzZSBPcHRPdXRw
dXQ8VD4uCiAgICAgYm9vbCB3YXNUaHJvd247Ci0gICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNhdmVk
UmVzdWx0SW5kZXg7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJv
clN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLmdldCgpLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lv
biwKICAgICAgICAgb2JqZWN0R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiBlbXB0eVN0cmluZygpLCBp
bmNsdWRlQ29tbWFuZExpbmVBUEkgJiYgKmluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlW
YWx1ZSAmJiAqcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3ICYmICpnZW5lcmF0ZVByZXZp
ZXcsIHNhdmVSZXN1bHQgJiYgKnNhdmVSZXN1bHQsCiAgICAgICAgIHJlc3VsdCwgd2FzVGhyb3du
LCBzYXZlZFJlc3VsdEluZGV4KTsKLSAgICAqb3V0V2FzVGhyb3duID0gd2FzVGhyb3duOwotICAg
IGlmIChzYXZlZFJlc3VsdEluZGV4Lmhhc192YWx1ZSgpKQotICAgICAgICAqb3V0U2F2ZWRSZXN1
bHRJbmRleCA9IHNhdmVkUmVzdWx0SW5kZXgudmFsdWUoKTsKKyAgICBvdXRXYXNUaHJvd24gPSB3
YXNUaHJvd247CiAKICAgICBpZiAocGF1c2VBbmRNdXRlKSB7CiAgICAgICAgIHVubXV0ZUNvbnNv
bGUoKTsKQEAgLTg3MywxMSArODY5LDExIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlCiAgICAg
ICAgIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpDU1BW
aW9sYXRpb24sIGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0aXZlVGV4dCkpOwog
fQogCi1SZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoY29uc3Qg
SW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0KQorUmVmPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQpCiB7CiAgICAg
QVNTRVJUKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpOwogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0
dXJuIEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUo
KTsKIAogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2FsbEZyYW1lcyhtX2N1cnJlbnRD
YWxsU3RhY2suZ2V0KCkpOwogfQpAQCAtMTAwOSw3ICsxMDA1LDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSYgc2NyaXB0U3RhdGUsIEpTQzo6
SlNWYWx1ZQogICAgIG1fY29uZGl0aW9uVG9EaXNwYXRjaFJlc3VtZWQgPSBTaG91bGREaXNwYXRj
aFJlc3VtZWQ6Ok5vOwogICAgIG1fZW5hYmxlUGF1c2VXaGVuSWRsZSA9IGZhbHNlOwogCi0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IGFzeW5jU3Rh
Y2tUcmFjZTsKKyAgICBSZWZQdHI8UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IGFzeW5j
U3RhY2tUcmFjZTsKICAgICBpZiAobV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllcikgewogICAg
ICAgICBhdXRvIGl0ID0gbV9wZW5kaW5nQXN5bmNDYWxscy5maW5kKG1fY3VycmVudEFzeW5jQ2Fs
bElkZW50aWZpZXIudmFsdWUoKSk7CiAgICAgICAgIGlmIChpdCAhPSBtX3BlbmRpbmdBc3luY0Nh
bGxzLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDM2ZDU4YzMzYjIy
NTQ4MzU0MGRhMjE0YTM4MDIyNDJjOTdkYjJlZDIuLmE1NDEyODQ3OGZmMDM5YTYyM2U1N2I2ZjZi
ZjVlNjA5MWZiNzhjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTYzLDE0
ICs2MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzZXRBc3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0
aCkgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJv
b2wgYWN0aXZlKSBmaW5hbDsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmlu
ZyYsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9u
YWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFs
OwotICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVj
dCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgZmluYWw7CisgICAgdm9pZCBz
ZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBp
bnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFBy
b3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOworICAgIHZvaWQg
c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24s
IGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50SWQqLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0
aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVl
VW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVU
b0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbikgZmlu
YWw7Ci0gICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+JikgZmluYWw7CisgICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBv
cHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZp
bmFsOwogICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnVu
Y3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5h
bDsKKyAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxz
PiYpIGZpbmFsOwogICAgIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IHJlc3VtZShFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3RlcE92ZXIoRXJyb3JTdHJp
bmcmKSBmaW5hbDsKQEAgLTc4LDggKzc4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RlcE91dChF
cnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgc2V0UGF1
c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZv
aWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmpl
Y3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBi
b29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJv
b2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmll
dywgY29uc3QgYm9vbCogY29uc3Qgc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldE92ZXJsYXlNZXNz
YWdlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKiBjb25zdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJh
bWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3Vw
LCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwg
Y29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25h
bDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgp
IGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcqKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKSBjb25zdDsKICAgICBib29s
IGJyZWFrcG9pbnRzQWN0aXZlKCkgY29uc3Q7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhckFzeW5jU3RhY2tUcmFjZURhdGEoKSB7IH0KIAog
cHJpdmF0ZToKLSAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoY29uc3QgSW5qZWN0ZWRTY3JpcHQm
KTsKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+
IGN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0Jik7CiAKICAgICB2b2lkIGRp
ZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdCYpIGZpbmFsOwogICAgIHZv
aWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBk
YXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBmNjhkMWNhNDI3Y2Vm
ZDFmNmRmMTMwODc3NWRmNmE0NTAyYzI0ZjczLi4xODhjNTliYmI5ZDg4Y2QwZDA5NGY5YzlhOWI4
NWI0M2JjZDU0MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE2Niw3ICsxNjYs
NyBAQCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEluc3BlY3RvckhlYXBBZ2VudDo6
bm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKAogICAgIHJldHVybiBvcHRpb25hbE5vZGU7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IGhlYXBPYmplY3RJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PFN0cmluZz4qIHJlc3VsdFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpGdW5jdGlvbkRldGFpbHM+JiBmdW5jdGlvbkRldGFpbHMsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYgb2JqZWN0UHJldmlldykKK3ZvaWQg
SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IGhlYXBPYmplY3RJZCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiByZXN1bHRTdHJpbmcsIFJl
ZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGZ1bmN0aW9uRGV0YWls
cywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYgb2JqZWN0UHJldmll
dykKIHsKICAgICAvLyBQcmV2ZW50IHRoZSBjZWxsIGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMg
d2UgbG9vayBpdCB1cC4KICAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LnZtKCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLAogICAgIG9iamVjdFByZXZpZXcgPSBp
bmplY3RlZFNjcmlwdC5wcmV2aWV3VmFsdWUoY2VsbCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVh
cEFnZW50OjpnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVh
cE9iamVjdElkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2
b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IGhlYXBPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbE9i
amVjdEdyb3VwLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCkKIHsKICAgICAvLyBQcmV2ZW50IHRoZSBjZWxsIGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMg
d2UgbG9vayBpdCB1cC4KICAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LnZtKCk7CkBAIC0yNTAs
MTYgKzI1MCwxNiBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplYwogICAgIHJlc3VsdCA9IGluamVj
dGVkU2NyaXB0LndyYXBPYmplY3QoY2VsbCwgb2JqZWN0R3JvdXAsIHRydWUpOwogfQogCi1zdGF0
aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUgcHJv
dG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCitzdGF0aWMg
UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlIHByb3RvY29sVHlwZUZvckhl
YXBPcGVyYXRpb24oQ29sbGVjdGlvblNjb3BlIHNjb3BlKQogewogICAgIHN3aXRjaCAoc2NvcGUp
IHsKICAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6RnVsbDoKLSAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOworICAg
ICAgICByZXR1cm4gUHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxs
OwogICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgotICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OlBhcnRpYWw7Cisg
ICAgICAgIHJldHVybiBQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OlBh
cnRpYWw7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBJbnNw
ZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKKyAg
ICByZXR1cm4gUHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwog
fQogCiB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsZWN0KCkKQEAgLTMw
MSw5ICszMDEsOSBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Y2xlYXJIZWFwU25hcHNob3Rz
KCkKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaXNwYXRjaEdhcmJhZ2VD
b2xsZWN0ZWRFdmVudChJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlv
bjo6VHlwZSB0eXBlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSkKK3ZvaWQgSW5z
cGVjdG9ySGVhcEFnZW50OjpkaXNwYXRjaEdhcmJhZ2VDb2xsZWN0ZWRFdmVudChQcm90b2NvbDo6
SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUgdHlwZSwgZG91YmxlIHN0YXJ0VGltZSwgZG91
YmxlIGVuZFRpbWUpCiB7Ci0gICAgYXV0byBwcm90b2NvbE9iamVjdCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpjcmVhdGUoKQorICAgIGF1dG8gcHJvdG9j
b2xPYmplY3QgPSBQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRUeXBlKHR5cGUpCiAgICAgICAgIC5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKQog
ICAgICAgICAuc2V0RW5kVGltZShlbmRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAppbmRleCBk
YWUzNTcxMDMzYTI3ZjhlMDM1MzFkZDkxMWNhNWYxNDAxNzZhYmE1Li5hZWViZjM5NTcyNjI5Njg2
ZWMwZmYwM2UyOTczZmZjNjAwMzY2NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaApAQCAtNTgs
OCArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzbmFwc2hvdChFcnJvclN0cmluZyYsIGRvdWJs
ZSogdGltZXN0YW1wLCBTdHJpbmcqIHNuYXBzaG90RGF0YSkgZmluYWw7CiAgICAgdm9pZCBzdGFy
dFRyYWNraW5nKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmcoRXJy
b3JTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIGdldFByZXZpZXcoRXJyb3JTdHJpbmcmLCBpbnQg
aGVhcE9iamVjdElkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcmVz
dWx0U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz4mIGZ1bmN0aW9uRGV0YWlscywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBvYmplY3RQcmV2aWV3KSBmaW5hbDsKLSAgICB2b2lkIGdl
dFJlbW90ZU9iamVjdChFcnJvclN0cmluZyYsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxPYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkgZmluYWw7CisgICAgdm9pZCBnZXRQcmV2
aWV3KEVycm9yU3RyaW5nJiwgaW50IGhlYXBPYmplY3RJZCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
JiByZXN1bHRTdHJpbmcsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWls
cz4mLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JikgZmluYWw7Cisg
ICAgdm9pZCBnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBmaW5hbDsKIAogICAgIC8vIEhlYXBPYnNlcnZlcgog
ICAgIHZvaWQgd2lsbEdhcmJhZ2VDb2xsZWN0KCkgb3ZlcnJpZGU7CkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFySGVhcFNuYXBzaG90cygpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoR2FyYmFnZUNvbGxlY3RlZEV2ZW50KEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlLCBkb3VibGUgc3RhcnRUaW1l
LCBkb3VibGUgZW5kVGltZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoR2FyYmFnZUNvbGxl
Y3RlZEV2ZW50KFByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZSwgZG91Ymxl
IHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8SlNDOjpIZWFwU25hcHNob3ROb2RlPiBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoRXJy
b3JTdHJpbmcmLCB1bnNpZ25lZCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcAppbmRleCBiMDdhYTc0ZGRmZTdiZDQyZWRiMGI2YTdmNmM1YWYwNDIy
ZjU4ZGUxLi44MTk2NGZjOWZkYzY3MWZjM2Y5MDlkODgzZDIyZjI1N2FlOWUyNDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ3LDEzICs0NywxMyBAQAogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAKLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1zdGF0aWMgYm9vbCBh
c0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3N0YXRp
YyBib29sIGFzQm9vbChjb25zdCBib29sKiBiKQogewotICAgIHJldHVybiBiID8gKmIgOiBmYWxz
ZTsKKyAgICByZXR1cm4gYiAmJiAqYjsKIH0KIAogSW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQpAQCAtNzAsMjEgKzcwLDIx
IEBAIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpCiAKIHN0
YXRpYyBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlciwgU2Ny
aXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgbmV3U3RhdGUpCiB7Ci0gICAg
U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJlc2VudFN0YXRlID0g
c2NyaXB0RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOworICAgIGF1dG8gcHJl
c2VudFN0YXRlID0gc2NyaXB0RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwog
ICAgIGlmIChwcmVzZW50U3RhdGUgIT0gbmV3U3RhdGUpCiAgICAgICAgIHNjcmlwdERlYnVnU2Vy
dmVyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobmV3U3RhdGUpOwogICAgIHJldHVybiBwcmVz
ZW50U3RhdGU7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
dG9rZW5Mb2NhdGlvbikKK3N0YXRpYyBSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+
IGJ1aWxkRXJyb3JSYW5nZU9iamVjdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRp
b24pCiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFu
Z2U6OmNyZWF0ZSgpCisgICAgcmV0dXJuIFByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlOjpj
cmVhdGUoKQogICAgICAgICAuc2V0U3RhcnRPZmZzZXQodG9rZW5Mb2NhdGlvbi5zdGFydE9mZnNl
dCkKICAgICAgICAgLnNldEVuZE9mZnNldCh0b2tlbkxvY2F0aW9uLmVuZE9mZnNldCkKICAgICAg
ICAgLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUqIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpFcnJvclJhbmdlPiYgcmFuZ2UpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
cGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFByb3RvY29sOjpS
dW50aW1lOjpTeW50YXhFcnJvclR5cGUqIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBt
ZXNzYWdlLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5nZSkKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX3ZtKTsKIApAQCAtOTMsMjYgKzkzLDI2IEBAIHZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgSW5zcGVjCiAKICAgICBzd2l0Y2ggKGVycm9yLnN5bnRheEVycm9yVHlwZSgp
KSB7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOgotICAgICAgICAqcmVz
dWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25l
OworICAgICAgICAqcmVzdWx0ID0gUHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6
Tm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJ
cnJlY292ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6U3ludGF4RXJyb3JUeXBlOjpJcnJlY292ZXJhYmxlOworICAgICAgICAqcmVzdWx0ID0g
UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6SXJyZWNvdmVyYWJsZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRM
aXRlcmFsOgotICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
U3ludGF4RXJyb3JUeXBlOjpVbnRlcm1pbmF0ZWRMaXRlcmFsOworICAgICAgICAqcmVzdWx0ID0g
UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6VW50ZXJtaW5hdGVkTGl0ZXJhbDsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JSZWNvdmVy
YWJsZToKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZTo6UmVjb3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBQcm90b2NvbDo6
UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpSZWNvdmVyYWJsZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgaWYgKGVycm9yLnN5bnRheEVycm9yVHlwZSgpICE9IFBhcnNlckVycm9yOjpT
eW50YXhFcnJvck5vbmUpIHsKLSAgICAgICAgKm1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlKCk7Cisg
ICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlKCk7CiAgICAgICAgIHJhbmdlID0gYnVpbGRF
cnJvclJhbmdlT2JqZWN0KGVycm9yLnRva2VuKCkubV9sb2NhdGlvbik7CiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0
R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9v
bCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQq
IGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29u
c3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIG91dF93YXNUaHJvd24sIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvdXRfc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29u
c3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBj
b25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNv
bnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBvdXRXYXNUaHJvd24sIHN0ZDo6b3B0
aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0cmluZywgZXhlY3V0aW9u
Q29udGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpAQCAtMTI0
LDE1ICsxMjQsOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cAogICAgIGlmIChhc0Jvb2woZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKICAgICAgICAgbXV0ZUNvbnNvbGUo
KTsKIAotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBicmlkZ2luZyBjb2RlIHdoZW4gZ2VuZXJh
dGVkIHByb3RvY29sIGNvbW1hbmRzIG5vIGxvbmdlciB1c2UgT3B0T3V0cHV0PFQ+LgotICAgIC8v
IDxodHRwczovL3d3dy53ZWJraXQub3JnL2IvMTgwNjA3PgogICAgIGJvb2wgd2FzVGhyb3duOwot
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogICAgIGluamVjdGVkU2Ny
aXB0LmV2YWx1YXRlKGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmpl
Y3RHcm91cCA6IFN0cmluZygpLCBhc0Jvb2woaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgYXNCb29s
KHJldHVybkJ5VmFsdWUpLCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgYXNCb29sKHNhdmVSZXN1
bHQpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7Ci0gICAgCi0gICAgKm91
dF93YXNUaHJvd24gPSB3YXNUaHJvd247Ci0gICAgaWYgKHNhdmVkUmVzdWx0SW5kZXguaGFzX3Zh
bHVlKCkpCi0gICAgICAgICpvdXRfc2F2ZWRSZXN1bHRJbmRleCA9IHNhdmVkUmVzdWx0SW5kZXgu
dmFsdWUoKTsKKyAgICBvdXRXYXNUaHJvd24gPSB3YXNUaHJvd247CiAKICAgICBpZiAoYXNCb29s
KGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpIHsKICAgICAgICAgdW5tdXRl
Q29uc29sZSgpOwpAQCAtMTQwLDcgKzEzNCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwCiAg
ICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29u
c3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogb3V0X3dhc1Rocm93bikK
K3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5
VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIG91dFdhc1Ro
cm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlm
IChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE2Miw3ICsxNTYsNyBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbgogCiAgICAgaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uT24o
ZXJyb3JTdHJpbmcsIG9iamVjdElkLCBleHByZXNzaW9uLCBhcmd1bWVudHMsIGFzQm9vbChyZXR1
cm5CeVZhbHVlKSwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHJlc3VsdCwgd2FzVGhyb3duKTsK
IAotICAgICpvdXRfd2FzVGhyb3duID0gd2FzVGhyb3duOworICAgIG91dFdhc1Rocm93biA9IHdh
c1Rocm93bjsKIAogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlKSkgewogICAgICAgICB1bm11dGVDb25zb2xlKCk7CkBAIC0xNzAsNyArMTY0LDcgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFBy
ZXZpZXc+JiBwcmV2aWV3KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXco
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBwcmV2aWV3KQogewogICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewpAQCAtMTg3LDcgKzE4MSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
CiAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBwcmV2
aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wq
IGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBnZW5l
cmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9w
ZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVz
KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtMjA1LDcgKzE5OSw3IEBAIHZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nCiAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERl
YnVnU2VydmVyLCBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogfQogCi12b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qg
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3Vs
dCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKIHsKICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0
Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpIHsKQEAgLTIyMyw3ICsyMTcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgIHNl
dFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omdl
dENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgaW50KiBzdGFydElu
ZGV4LCBjb25zdCBpbnQqIG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKQordm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgY29uc3QgaW50KiBzdGFydEluZGV4LCBjb25zdCBpbnQqIG51bWJlclRvRmV0Y2gs
IFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+
PiYgZW50cmllcykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwog
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTIzNyw3ICsyMzEsNyBA
QCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldENvbGxlY3Rp
b25FbnRyaWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgb2JqZWN0R3JvdXAgPyAqb2JqZWN0R3Jv
dXAgOiBTdHJpbmcoKSwgc3RhcnQsIGZldGNoLCBlbnRyaWVzKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYmplY3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0
SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvdXRfc2F2ZWRSZXN1bHRJ
bmRleCkKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpzYXZlUmVzdWx0KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBjYWxsQXJndW1lbnQsIGNvbnN0IGlu
dCogZXhlY3V0aW9uQ29udGV4dElkLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5k
ZXgpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQ7CiAKQEAgLTI1NCwxNCAr
MjQ4LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmoKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGJyaWRnaW5nIGNvZGUgd2hlbiBn
ZW5lcmF0ZWQgcHJvdG9jb2wgY29tbWFuZHMgbm8gbG9uZ2VyIHVzZSBPcHRPdXRwdXQ8VD4uCi0g
ICAgLy8gPGh0dHBzOi8vd3d3LndlYmtpdC5vcmcvYi8xODA2MDc+Ci0gICAgc3RkOjpvcHRpb25h
bDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7Ci0KICAgICBpbmplY3RlZFNjcmlwdC5zYXZlUmVzdWx0
KGVycm9yU3RyaW5nLCBjYWxsQXJndW1lbnQudG9KU09OU3RyaW5nKCksIHNhdmVkUmVzdWx0SW5k
ZXgpOwotCi0gICAgaWYgKHNhdmVkUmVzdWx0SW5kZXguaGFzX3ZhbHVlKCkpCi0gICAgICAgICpv
dXRfc2F2ZWRSZXN1bHRJbmRleCA9IHNhdmVkUmVzdWx0SW5kZXgudmFsdWUoKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkKQpAQCAtMjc2LDExICsyNjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWMKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5yZWxlYXNlT2JqZWN0R3JvdXAo
b2JqZWN0R3JvdXApOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGlt
ZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMp
Cit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGxv
Y2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNj
cmlwdGlvbj4+JiB0eXBlRGVzY3JpcHRpb25zKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKIAotICAgIHR5cGVEZXNjcmlwdGlvbnMgPSBKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwor
ICAgIHR5cGVEZXNjcmlwdGlvbnMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpU
eXBlRGVzY3JpcHRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW1fdm0udHlwZVByb2ZpbGVyKCkp
IHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBkb2VzIG5vdCBj
dXJyZW50bHkgaGF2ZSBUeXBlIEluZm9ybWF0aW9uLiIpOwogICAgICAgICByZXR1cm47CkBAIC0z
MTcsNyArMzA0LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBl
c0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmluZyYgZXIKICAgICAgICAgfQogCiAgICAg
ICAgIGJvb2wgaXNWYWxpZCA9IHR5cGVMb2NhdGlvbiAmJiB0eXBlU2V0ICYmICF0eXBlU2V0LT5p
c0VtcHR5KCk7Ci0gICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb246OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gZGVzY3Jp
cHRpb24gPSBQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uOjpjcmVhdGUoKQogICAg
ICAgICAgICAgLnNldElzVmFsaWQoaXNWYWxpZCkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CiAK
QEAgLTMzMyw3ICszMjAsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGlt
ZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcgogCiAgICAgZG91Ymxl
IGVuZCA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxv
Z0YoIkluc3BlY3Rvcjo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzIHRvb2sg
JWxmbXNcbiIsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgZGF0YUxvZ0YoImdldFJ1bnRpbWVUeXBl
c0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyB0b29rICVsZm1zXG4iLCBlbmQgLSBzdGFydCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKQEAgLTM5MSw3ICszNzgsNyBAQCB2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6c2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRTdGF0ZShib29s
IGlzQ29udHJvbEZsbwogICAgIH0pOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNv
dXJjZUlEQXNTdHJpbmcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpS
dW50aW1lOjpCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIGlmICghbV92bS5jb250
cm9sRmxvd1Byb2ZpbGVyKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IlRoZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhIENvbnRyb2wgRmxvdyBQcm9maWxlci4i
KTsKQEAgLTQwMiw5ICszODksOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFz
aWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGludHB0
cl90IHNvdXJjZUlEID0gc291cmNlSURBc1N0cmluZy50b0ludFB0clN0cmljdCgmb2theSk7CiAg
ICAgQVNTRVJUKG9rYXkpOwogICAgIGNvbnN0IFZlY3RvcjxCYXNpY0Jsb2NrUmFuZ2U+JiBiYXNp
Y0Jsb2NrUmFuZ2VzID0gbV92bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tz
Rm9yU291cmNlSUQoc291cmNlSUQsIG1fdm0pOwotICAgIGJhc2ljQmxvY2tzID0gSlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPjo6Y3JlYXRlKCk7
CisgICAgYmFzaWNCbG9ja3MgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpCYXNp
Y0Jsb2NrPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBCYXNpY0Jsb2NrUmFuZ2UmIGJsb2Nr
IDogYmFzaWNCbG9ja1JhbmdlcykgewotICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6QmFzaWNCbG9jaz4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpCYXNpY0Jsb2NrOjpjcmVhdGUoKQorICAgICAgICBhdXRvIGxvY2F0aW9uID0gUHJvdG9j
b2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0U3RhcnRP
ZmZzZXQoYmxvY2subV9zdGFydE9mZnNldCkKICAgICAgICAgICAgIC5zZXRFbmRPZmZzZXQoYmxv
Y2subV9lbmRPZmZzZXQpCiAgICAgICAgICAgICAuc2V0SGFzRXhlY3V0ZWQoYmxvY2subV9oYXNF
eGVjdXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggMmQ1ZDI5MTc1Njc5OWQ3
ZWVhYzllN2I2MGY3NDZlNGU1YWEyOWFlYi4uMjk5MjdiMWY0OTcxZGZiNTEwMDQxYzM1YTcyN2Fm
MjIwZmRlMDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTU3LDIyICs1Nywy
MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsg
bV9lbmFibGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KLSAgICB2b2lkIHBhcnNlKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpT
eW50YXhFcnJvclR5cGUqIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0
cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFcnJv
clJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0
IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGNvbnN0IGV4ZWN1
dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9v
bCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBjb25zdCBzYXZlUmVzdWx0LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOwot
ICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25h
bEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBj
b25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBl
KiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgbWVzc2FnZSwgUmVmUHRyPFByb3RvY29s
OjpSdW50aW1lOjpFcnJvclJhbmdlPiYpIGZpbmFsOworICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6
Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZvaWQgY2FsbEZ1
bmN0aW9uT24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29u
c3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29s
KiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiB3YXNUaHJvd24pIGZpbmFsOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyYs
IGNvbnN0IEVycm9yU3RyaW5nJiBvYmplY3RJZCkgZmluYWw7Ci0gICAgdm9pZCBnZXRQcmV2aWV3
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9v
bCogY29uc3Qgb3duUHJvcGVydGllcywgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9w
ZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5h
bFByb3BlcnRpZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2Vu
ZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVu
dHJpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcq
IGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIGNvbnN0IHN0YXJ0SW5kZXgsIGNvbnN0IGlu
dCogY29uc3QgbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOwotICAg
IHZvaWQgc2F2ZVJlc3VsdChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgY2FsbEFy
Z3VtZW50LCBjb25zdCBpbnQqIGNvbnN0IGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZv
aWQgZ2V0UHJldmlldyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4mKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBi
b29sKiBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxK
U09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVz
dWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9w
ZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdl
dERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+
JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJp
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9i
amVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRj
aCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRy
eT4+JiBlbnRyaWVzKSBmaW5hbDsKKyAgICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBj
b25zdCBKU09OOjpPYmplY3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250
ZXh0SWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CiAgICAg
dm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwKSBmaW5hbDsKLSAgICB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zm
c2V0cyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlv
bj4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9m
ZnNldHMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVy
cmlkZTsKICAgICB2b2lkIGVuYWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlzYWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldEJhc2ljQmxvY2tzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBpbl9zb3VyY2VJRCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6QmFzaWNCbG9jaz4+JiBvdXRfYmFzaWNCbG9ja3MpIG92ZXJyaWRlOworICAgIHZv
aWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlE
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBv
dXRfYmFzaWNCbG9ja3MpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmFibGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudC5jcHAKaW5kZXggNWU4OTVhZTg1MjAxNWI5ZDRjZDA1NTFjZjFiODliYjhlZjYzM2Y0NC4u
NTk3ZTA4ZWQ4YTFhZjgxMzQwYTMzOTFiMTQzYTZiYWE1MWU3M2JjZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc28KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudDo6c3RhcnRUcmFja2luZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGlu
Y2x1ZGVTYW1wbGVzKQordm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFydFRy
YWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogaW5jbHVkZVNhbXBsZXMpCiB7CiAgICAg
aWYgKG1fdHJhY2tpbmcpCiAgICAgICAgIHJldHVybjsKQEAgLTEzNSwyNiArMTM1LDI2IEBAIHZv
aWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6ZGlkRXZhbHVhdGVTY3JpcHQoZG91Ymxl
IHN0YXJ0VGltZSwgUHJvZmlsaW5nCiAgICAgYWRkRXZlbnQoc3RhcnRUaW1lLCBlbmRUaW1lLCBy
ZWFzb24pOwogfQogCi1zdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6
OkV2ZW50VHlwZSB0b1Byb3RvY29sKFByb2ZpbGluZ1JlYXNvbiByZWFzb24pCitzdGF0aWMgUHJv
dG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVudFR5cGUgdG9Qcm90b2NvbChQcm9maWxpbmdSZWFz
b24gcmVhc29uKQogewogICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAgY2FzZSBQcm9maWxpbmdS
ZWFzb246OkFQSToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNjcmlwdFBy
b2ZpbGVyOjpFdmVudFR5cGU6OkFQSTsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpTY3JpcHRQ
cm9maWxlcjo6RXZlbnRUeXBlOjpBUEk7CiAgICAgY2FzZSBQcm9maWxpbmdSZWFzb246Ok1pY3Jv
dGFzazoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVy
OjpFdmVudFR5cGU6Ok1pY3JvdGFzazsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpTY3JpcHRQ
cm9maWxlcjo6RXZlbnRUeXBlOjpNaWNyb3Rhc2s7CiAgICAgY2FzZSBQcm9maWxpbmdSZWFzb246
Ok90aGVyOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6U2NyaXB0UHJvZmls
ZXI6OkV2ZW50VHlwZTo6T3RoZXI7CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6U2NyaXB0UHJv
ZmlsZXI6OkV2ZW50VHlwZTo6T3RoZXI7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVu
dFR5cGU6Ok90aGVyOworICAgIHJldHVybiBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50
VHlwZTo6T3RoZXI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6YWRk
RXZlbnQoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUsIFByb2ZpbGluZ1JlYXNvbiBy
ZWFzb24pCiB7CiAgICAgQVNTRVJUKGVuZFRpbWUgPj0gc3RhcnRUaW1lKTsKIAotICAgIGF1dG8g
ZXZlbnQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnQ6OmNyZWF0
ZSgpCisgICAgYXV0byBldmVudCA9IFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6RXZlbnQ6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKQogICAgICAgICAuc2V0RW5k
VGltZShlbmRUaW1lKQogICAgICAgICAuc2V0VHlwZSh0b1Byb3RvY29sKHJlYXNvbikpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmgKaW5kZXggYzliODc2MDdjZjhjMWJl
NWJhYjEwN2JmZGViZWJlN2U5Y2IxMDVjOC4uMmMyZmE2MGU3MmQ0NWU3NWNlNmE5NzNhMTU3ODBj
NGQzMzg1MDNmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaApA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIFNjcmlwdFByb2Zp
bGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9y
U3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZVNhbXBsZXMpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RhcnRUcmFja2luZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGluY2x1ZGVTYW1w
bGVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BUcmFja2luZyhFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBwcm9ncmFtbWF0aWNDYXB0dXJlU3RhcnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dl
bmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2NwcF9nZW5lcmF0b3IucHkKaW5kZXggYTkwYzBkYmZlNjZkMGM0ZTQzYmQ0MDZmYzFkODhi
ODU4OGVjYjI4Mi4uNWYyZTljODQ2MmQ4MDMyMmY1Y2FiOTU1ODgxYjk4YTVhYTUwOGIzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Y3BwX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCiAjCi0jIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNDIs
NyArMTQyLDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGlz
aW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBD
cHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAg
ICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAnY29u
c3QgJXMqIGNvbnN0JyAlIGNwcF9uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAl
cyonICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsaWYgX3R5cGUucmF3X25hbWUoKSBpbiBbJ3N0
cmluZyddOgogICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMmJyAlIGNwcF9uYW1lCiAg
ICAgICAgICAgICBlbHNlOgpAQCAtMTY1LDcgKzE2NSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBBbGlhc2VkVHlwZSk6CiAg
ICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBDcHBHZW5lcmF0b3IuY3BwX3Byb3RvY29sX3R5cGVf
Zm9yX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBpc19vcHRpb25hbDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gJ2NvbnN0ICVzKiBjb25zdCcgJSBidWlsZGVyX3R5cGUKKyAgICAgICAgICAg
ICAgICByZXR1cm4gJ2NvbnN0ICVzKicgJSBidWlsZGVyX3R5cGUKICAgICAgICAgICAgIGVsaWYg
X3R5cGUuYWxpYXNlZF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4gWydpbnRlZ2VyJywgJ251bWJl
ciddOgogICAgICAgICAgICAgICAgIHJldHVybiBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3By
aW1pdGl2ZV90eXBlKF90eXBlLmFsaWFzZWRfdHlwZSkKICAgICAgICAgICAgIGVsaWYgX3R5cGUu
YWxpYXNlZF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4gWydzdHJpbmcnXToKQEAgLTE3OSw3ICsx
NzksNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIGVsaWYg
X3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ2FueSddOgogICAgICAgICAgICAgICAgIHJldHVy
biAnUmVmUHRyPEpTT046OlZhbHVlPicKICAgICAgICAgICAgIGVsaWYgaXNfb3B0aW9uYWw6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyogY29uc3QnICUgY3BwX25hbWUKKyAgICAg
ICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKicgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxp
ZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnc3RyaW5nJ106CiAgICAgICAgICAgICAgICAg
cmV0dXJuICdjb25zdCAlcyYnICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0yMDcs
NyArMjA3LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGlz
aW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBD
cHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAg
ICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPioiICUgY3BwX25hbWUKKyAgICAgICAgICAg
ICAgICByZXR1cm4gInN0ZDo6b3B0aW9uYWw8JXM+JiIgJSBjcHBfbmFtZQogICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gJyVzKicgJSBjcHBfbmFtZQogICAgICAgICBp
ZiBpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CkBAIC0yMzMsNyArMjMzLDcgQEAgY2xhc3Mg
Q3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIFBy
aW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBDcHBHZW5lcmF0b3IuY3BwX25h
bWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlz
X29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PCVzPioiICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gInN0ZDo6
b3B0aW9uYWw8JXM+JiIgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5xdWFsaWZp
ZWRfbmFtZSgpIGluIFsnaW50ZWdlcicsICdudW1iZXInXToKICAgICAgICAgICAgICAgICByZXR1
cm4gQ3BwR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAg
ICAgICAgIGVsaWYgX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ3N0cmluZyddOgpAQCAtMjY1
LDcgKzI2NSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAg
aWYgX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ2FueScsICdvYmplY3QnXToKICAgICAgICAg
ICAgICAgICByZXR1cm4gIlJlZlB0cjwlcz4iICUgQ3BwR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9w
cmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGVsaWYgcGFyYW1ldGVyLmlzX29wdGlv
bmFsIGFuZCBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIG5vdCBpbiBbJ2Jvb2xlYW4nLCAnc3RyaW5n
JywgJ2ludGVnZXInXToKLSAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDwlcz4iICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gInN0
ZDo6b3B0aW9uYWw8JXM+IiAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgICAgIHJldHVybiBjcHBfbmFtZQogCkBAIC0yNzcsMTIgKzI3NywxMiBAQCBjbGFzcyBDcHBH
ZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNl
ZFR5cGUpOgogICAgICAgICAgICAgYnVpbGRlcl90eXBlID0gQ3BwR2VuZXJhdG9yLmNwcF9wcm90
b2NvbF90eXBlX2Zvcl90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29w
dGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PCVzPiIgJSBidWlsZGVyX3R5cGUKKyAgICAgICAgICAgICAgICByZXR1cm4gInN0ZDo6
b3B0aW9uYWw8JXM+IiAlIGJ1aWxkZXJfdHlwZQogICAgICAgICAgICAgcmV0dXJuICclcycgJSBi
dWlsZGVyX3R5cGUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6
CiAgICAgICAgICAgICBjcHBfbmFtZSA9IENwcEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0
aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8JXM+
IiAlIGNwcF9uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuICJzdGQ6Om9wdGlvbmFsPCVzPiIg
JSBjcHBfbmFtZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gY3Bw
X25hbWUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCA5NzkzMzJkZmYw
ZDJkZWUyNTZjMzdlNjZhMzZlZjU0YzBiMjkzZWY3Li42ZmExMjI2MzkyNDNjYTJiNjU4NGNiMzc5
YTIxNGZiNzMzMDE2ZjBmIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9y
X3RlbXBsYXRlcy5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIwot
IyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZh
dGU6CiAKICR7ZGlzcGF0Y2hDYXNlc30KICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZv
dW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9kLCAiJyB3
YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90
b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgIicke2RvbWFpbk5h
bWV9LiIgKyBtZXRob2QgKyAiJyB3YXMgbm90IGZvdW5kIik7CiB9IiIiKQogCiAgICAgQmFja2Vu
ZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkxhcmdlU3dpdGNoID0gKApAQCAtMTU2LDcgKzE1Niw3
IEBAICR7ZGlzcGF0Y2hDYXNlc30KIAogICAgIGF1dG8gZmluZFJlc3VsdCA9IGRpc3BhdGNoTWFw
LmdldCgpLmZpbmQobWV0aG9kKTsKICAgICBpZiAoZmluZFJlc3VsdCA9PSBkaXNwYXRjaE1hcC5n
ZXQoKS5lbmQoKSkgewotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwn
JywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlz
cGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsICInJHtkb21haW5OYW1lfS4iICsgbWV0aG9kICsgIicg
d2FzIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzksNyArMTc5
LDcgQEAgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjoke2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXIKICAgICBCYWNrZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uUHJlcGFyZUNvbW1hbmRBcmd1bWVudHMgPSAoCiAiIiIke2luUGFyYW1ldGVyRGVj
bGFyYXRpb25zfQogICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyLT5oYXNQcm90b2NvbEVycm9y
cygpKSB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3Io
QmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJTb21lIGFy
Z3VtZW50cyBvZiBtZXRob2QgXCclc1wnIGNhbid0IGJlIHByb2Nlc3NlZCIsICIke2RvbWFpbk5h
bWV9LiR7Y29tbWFuZE5hbWV9IikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBBU0NJSUxp
dGVyYWwgeyAiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kIFwnJHtkb21haW5OYW1lfS4ke2NvbW1h
bmROYW1lfVwnIGNhbid0IGJlIHByb2Nlc3NlZCIgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAiIiIpCkBAIC0yNDksOSArMjQ5LDcgQEAgJHtjb25zdHJ1Y3RvckV4YW1wbGV9CiAgICAgUmVm
UHRyPEpTT046Ok9iamVjdD4gcmVzdWx0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVl
LT5hc09iamVjdChyZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2Fz
dFN1Y2NlZWRlZCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIEJpbmRpbmdUcmFpdHM8JHtv
YmplY3RUeXBlfT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKHJlc3VsdC5nZXQoKSk7Ci0j
ZW5kaWYgIC8vICFBU1NFUlRfRElTQUJMRUQKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJHtv
YmplY3RUeXBlfSkgPT0gc2l6ZW9mKEpTT046Ok9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxl
bSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7b2JqZWN0VHlwZX0qPihzdGF0aWNfY2FzdDxK
U09OOjpPYmplY3RCYXNlKj4ocmVzdWx0LmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFj
a2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hl
cl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBkMTdjZTAxZGZhOWNiNWRmOGUxZTk0MGUwYzJjNTM1
ZWNiMmViNzMzLi5iZTZmNDVhZWE4ZDZjNDQ0ZTRmZDY4MzU0NjcxZmY5NGE5MTJjOGFmIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEsNiArMSw2IEBACiAj
IS91c3IvYmluL2VudiBweXRob24KICMKLSMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMTYzLDggKzE2Myw4IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKIAogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlz
X29wdGlvbmFsOgogICAgICAgICAgICAgICAgIGlmIENwcEdlbmVyYXRvci5zaG91bGRfdXNlX3dy
YXBwZXJfZm9yX3JldHVybl90eXBlKHBhcmFtZXRlci50eXBlKToKLSAgICAgICAgICAgICAgICAg
ICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBpZiAoJShwYXJhbWV0ZXJO
YW1lKXMuaXNBc3NpZ25lZCgpKScgJSBwYXJhbV9hcmdzKQotICAgICAgICAgICAgICAgICAgICBv
dXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBqc29uTWVzc2FnZS0+JShr
ZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCAlKHBhcmFt
ZXRlck5hbWUpcy5nZXRWYWx1ZSgpKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICAg
ICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBpZiAoJShwYXJhbWV0ZXJO
YW1lKXMuaGFzX3ZhbHVlKCkpJyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIG91
dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGpzb25NZXNzYWdlLT4lKGtl
eWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksIColKHBhcmFt
ZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBpZiAo
JShwYXJhbWV0ZXJOYW1lKXMpJyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAgICAgICAgICAgIG91
dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGpzb25NZXNzYWdlLT4lKGtl
eWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksICUocGFyYW1l
dGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKQEAgLTI1Niw4ICsyNTYsOCBAQCBjbGFzcyBDcHBC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAg
ICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMuYXBwZW5kKCcgICAgJShw
YXJhbWV0ZXJUeXBlKXMgb3V0XyUocGFyYW1ldGVyTmFtZSlzOycgJSBwYXJhbV9hcmdzKQogICAg
ICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKICAgICAgICAgICAgICAgICAg
ICAgaWYgQ3BwR2VuZXJhdG9yLnNob3VsZF91c2Vfd3JhcHBlcl9mb3JfcmV0dXJuX3R5cGUocGFy
YW1ldGVyLnR5cGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3Np
Z25tZW50cy5hcHBlbmQoJyAgICAgICAgaWYgKG91dF8lKHBhcmFtZXRlck5hbWUpcy5pc0Fzc2ln
bmVkKCkpJyAlIHBhcmFtX2FyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1l
dGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0
aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksIG91dF8lKHBhcmFtZXRlck5h
bWUpcy5nZXRWYWx1ZSgpKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAg
IG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGlmIChvdXRfJShwYXJh
bWV0ZXJOYW1lKXMuaGFzX3ZhbHVlKCkpJyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICAgICAgcmVz
dWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiks
ICpvdXRfJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25t
ZW50cy5hcHBlbmQoJyAgICAgICAgaWYgKG91dF8lKHBhcmFtZXRlck5hbWUpcyknICUgcGFyYW1f
YXJncykKICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMu
YXBwZW5kKCcgICAgICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVy
YWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgb3V0XyUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1f
YXJncykKQEAgLTI2Niw3ICsyNjYsNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAg
ICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRl
cktleSlzIiksIG91dF8lKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAKLSAgICAg
ICAgICAgICAgICBpZiBDcHBHZW5lcmF0b3Iuc2hvdWxkX3Bhc3NfYnlfY29weV9mb3JfcmV0dXJu
X3R5cGUocGFyYW1ldGVyLnR5cGUpOgorICAgICAgICAgICAgICAgIGlmIENwcEdlbmVyYXRvci5z
aG91bGRfcGFzc19ieV9jb3B5X2Zvcl9yZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSkgb3IgcGFy
YW1ldGVyLmlzX29wdGlvbmFsIGFuZCBDcHBHZW5lcmF0b3Iuc2hvdWxkX3VzZV93cmFwcGVyX2Zv
cl9yZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSk6CiAgICAgICAgICAgICAgICAgICAgIG1ldGhv
ZF9wYXJhbWV0ZXJzLmFwcGVuZCgnb3V0XycgKyBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCiAg
ICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX3BhcmFtZXRl
cnMuYXBwZW5kKCcmb3V0XycgKyBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRl
ci5weQppbmRleCAyYTE1NGUwYTEwZTIzZjg2ZmRiYzg3MTYyNDE4MzIxNjQxNDhmMGM0Li45Mzhl
MmVlNzdiNmE2ZjFjNWYxYjdhZDFjMmViM2EzNmYxZjMyMmYwIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJv
dG9jb2xfdHlwZXNfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkK
QEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24KICMKLSMgQ29weXJpZ2h0IChj
KSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChjKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2NSw5ICszNjUsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5
cGVzSGVhZGVyR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJ3RlbXBsYXRlPD4gJXMgQmluZGluZ1RyYWl0czwlcz4geycgJSAoJyAnLmpvaW4oc3RydWN0
X2tleXdvcmRzKSwgYXJndW1lbnRbMF0pKQogICAgICAgICAgICAgaWYgYXJndW1lbnRbMV06CiAg
ICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdzdGF0aWMgUmVmUHRyPCVzPiBydW50aW1lQ2Fz
dChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpOycgJSBhcmd1bWVudFswXSkKLSAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnI2lmICFBU1NFUlRfRElTQUJMRUQnKQogICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCclcyBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOycg
JSAnICcuam9pbihmdW5jdGlvbl9rZXl3b3JkcykpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVEJykKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
fTsnKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBf
cHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1w
bGVtZW50YXRpb24ucHkKaW5kZXggMmViMDc2MmVmYzZmODk2OWQyOGE2NTc3ZWE5NmI5NjgzZDQ3
ZGE1MS4uZjdhOTMyZTNkZWM2MmZlMWUyNzE1ZjM2N2U5OGU1YzNkYTMzMDdhMCAxMDA3NTUKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52
IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjA1LDkgKzIw
NSwxMSBAQCBjbGFzcyBDcHBQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3Bw
R2VuZXJhdG9yKToKICAgICAgICAgc2hvdWxkX2NvdW50X3Byb3BlcnRpZXMgPSBub3QgR2VuZXJh
dG9yLnR5cGVfaGFzX29wZW5fZmllbGRzKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKQogICAgICAg
ICBsaW5lcyA9IFtdCiAKLSAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxF
RCcpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgndm9pZCBCaW5kaW5nVHJhaXRzPCVzPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKScgJSAoQ3BwR2VuZXJhdG9y
LmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKSkpCiAg
ICAgICAgIGxpbmVzLmFwcGVuZCgiIiJ7CisjaWYgQVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKKyNlbHNlCiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAg
IFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2
YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAgLTIxOSw3ICsyMjEsNyBAQCBjbGFzcyBDcHBQcm90
b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiIiAgICB7Ci0gICAgICAgIEpTT046
Ok9iamVjdDo6aXRlcmF0b3IgJShtZW1iZXJOYW1lKXNQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlM
aXRlcmFsKCIlKG1lbWJlck5hbWUpcyIpKTsKKyAgICAgICAgYXV0byAlKG1lbWJlck5hbWUpc1Bv
cyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlzIikpOwogICAgICAg
ICBBU1NFUlQoJShtZW1iZXJOYW1lKXNQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgICUo
YXNzZXJ0TWV0aG9kKXMoJShtZW1iZXJOYW1lKXNQb3MtPnZhbHVlLmdldCgpKTsKICAgICB9IiIi
ICUgYXJncykKQEAgLTIzNSw3ICsyMzcsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5cGVzSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCIiIiAgICB7Ci0gICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0
b3IgJShtZW1iZXJOYW1lKXNQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCIlKG1lbWJl
ck5hbWUpcyIpKTsKKyAgICAgICAgYXV0byAlKG1lbWJlck5hbWUpc1BvcyA9IG9iamVjdC0+Zmlu
ZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlzIikpOwogICAgICAgICBpZiAoJShtZW1iZXJO
YW1lKXNQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICAgJShhc3NlcnRNZXRob2Qp
cyglKG1lbWJlck5hbWUpc1Bvcy0+dmFsdWUuZ2V0KCkpOyIiIiAlIGFyZ3MpCiAKQEAgLTI0Nywx
NSArMjQ5LDE3IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRv
cihDcHBHZW5lcmF0b3IpOgogICAgICAgICBpZiBzaG91bGRfY291bnRfcHJvcGVydGllczoKICAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmIChmb3VuZFByb3BlcnRpZXNDb3VudCAhPSBv
YmplY3QtPnNpemUoKSknKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIEZBVEFM
KCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0OiAlc1xcbiIsIG9iamVjdC0+dG9KU09O
U3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCiAg
ICAgZGVmIF9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX2VudW0oc2VsZiwgZW51bV9tZW1iZXIsIG9i
amVjdF9kZWNsYXJhdGlvbik6CiAgICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgbGluZXMuYXBw
ZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxFRCcpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgndm9pZCAl
cyhKU09OOjpWYWx1ZSogdmFsdWUpJyAlIENwcEdlbmVyYXRvci5jcHBfYXNzZXJ0aW9uX21ldGhv
ZF9mb3JfdHlwZV9tZW1iZXIoZW51bV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbikpCiAgICAg
ICAgIGxpbmVzLmFwcGVuZCgneycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnI2lmIEFTU0VSVF9E
SVNBQkxFRCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjZWxzZScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICBTdHJpbmcgcmVzdWx0OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGJvb2wgY2FzdFN1
Y2NlZWRlZCA9IHZhbHVlLT5hc1N0cmluZyhyZXN1bHQpOycpCkBAIC0yNjMsNyArMjY3LDcgQEAg
Y2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRv
cik6CiAKICAgICAgICAgYXNzZXJ0X2NvbmRpdGlvbiA9ICcgfHwgJy5qb2luKFsncmVzdWx0ID09
ICIlcyInICUgZW51bV92YWx1ZSBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX21lbWJlci50eXBlLmVu
dW1fdmFsdWVzKCldKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBBU1NFUlQoJXMpOycgJSBh
c3NlcnRfY29uZGl0aW9uKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICBsaW5l
cy5hcHBlbmQoJyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVEJykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCd9JykKIAogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBhMTY0YzAyOGYxY2RhNzc0ZTRkOGMz
ZGU0MjM1Y2Y1MGFiMzRjNzc0Li4yYTI0NzE4ZWUzYTZkNTA5YWJmN2RkYTMyNDBkNjA1ZmZmYWQ2
ZjZkIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMSw2
ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAx
NC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChjKSAy
MDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0xNzcsNyArMTc3LDcgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNwYXRjaGVy
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAKICAgICAgICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghJXMpIHsnICUgb2JqY19pbl9wYXJhbV9uYW1l
KQotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgYmFja2VuZERpc3Bh
dGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBh
cmFtcywgU3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciBcJyUlc1wnIG9mIG1ldGhvZCBcJyUlc1wn
IGNhbm5vdCBiZSBwcm9jZXNzZWQiLCAiJXMiLCAiJXMuJXMiKSk7JyAlIChwYXJhbWV0ZXIucGFy
YW1ldGVyX25hbWUsIGRvbWFpbi5kb21haW5fbmFtZSwgY29tbWFuZC5jb21tYW5kX25hbWUpKQor
ICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgYmFja2VuZERpc3BhdGNo
ZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFt
cywgQVNDSUlMaXRlcmFsIHsgIlBhcmFtZXRlciBcJyVzXCcgb2YgbWV0aG9kIFwnJXMuJXNcJyBj
YW5ub3QgYmUgcHJvY2Vzc2VkIiB9KTsnICUgKHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSwgZG9t
YWluLmRvbWFpbl9uYW1lLCBjb21tYW5kLmNvbW1hbmRfbmFtZSkpCiAgICAgICAgICAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm47JykKICAgICAgICAgICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgfScpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1t
YWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0CmluZGV4IDEzMTFjY2I5OTE2Y2Q2ZmNkYjZlOWJmYWU0NWQ2OWRhYzM4MTI1
MDQuLjlhNjM4MjNjYjQ2YWU2YTgxMTU1NTQ3ZTc2YWNkYmE0MmQzYzc2Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtMjM4LDcgKzIzOCw3IEBA
IHZvaWQgTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlCiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNl
IikKICAgICAgICAgbG9hZFJlc291cmNlKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVy
cm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAi
TmV0d29yayIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpN
ZXRob2ROb3RGb3VuZCwgIidOZXR3b3JrLiIgKyBtZXRob2QgKyAiJyB3YXMgbm90IGZvdW5kIik7
CiB9CiAKIHZvaWQgTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UobG9uZyBy
ZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGNmNjAzNTA1YzY3YTlkMWFkMWVh
NmYwODcyODY1NjVmMjY5MzE5ZjQuLjQwZjM5MDhlZGFmYjE4YmZjN2U4ZmMyZWU5YWJmMTA4YmVj
MWU5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24t
cmVzdWx0CkBAIC0xNTcsMTEgKzE1NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUs
CiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0
cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVy
cm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291
dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwg
aW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxKU09OOjpB
cnJheU9mPFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4mIG9wdF9vdXRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYgb3B0X291dF90aW1lc3Rh
bXAsIHN0ZDo6b3B0aW9uYWw8SlNPTjo6T2JqZWN0PiYgb3B0X291dF92YWx1ZXMsIHN0ZDo6b3B0
aW9uYWw8SlNPTjo6VmFsdWU+JiBvcHRfb3V0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYg
b3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50
Q29sb3IpID0gMDsKICAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c0NhbGxiYWNrIDogcHVibGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAg
IHB1YmxpYzoKICAgICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxs
YmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7Ci0gICAgICAgIHZvaWQgc2Vu
ZFN1Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0
cmluZz4qIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4mIG5vdGVzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mIHRpbWVzdGFtcCwgc3RkOjpvcHRp
b25hbDxKU09OOjpPYmplY3Q+JiB2YWx1ZXMsIHN0ZDo6b3B0aW9uYWw8SlNPTjo6VmFsdWU+JiBw
YXlsb2FkLCBzdGQ6Om9wdGlvbmFsPGludD4mIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBwcmlu
dENvbG9yKTsKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJp
bmcmIGluX3F1ZXJ5LCBSZWY8RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxs
YmFjaz4mJiBjYWxsYmFjaykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhF
cnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91
dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBKU09OOjpPYmplY3QqIG91dF92YWx1ZXMs
IEpTT046OlZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRl
Q29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0
X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xv
ciogb3V0X3ByaW50Q29sb3IpID0gMDsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IG1ldGhvZCwgUgogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZVNRTEFzeW5jIikKICAg
ICAgICAgZXhlY3V0ZVNRTEFzeW5jKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAg
ICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9y
KEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0
YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0
aG9kTm90Rm91bmQsICInRGF0YWJhc2UuIiArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsK
IH0KIAogdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBh
cmFtZXRlcnMpCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgcmVxdWVzdEkKICAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldEludGVnZXIocGFy
YW1ldGVycy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIpOwogICAg
IFN0cmluZyBpbl9xdWVyeSA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldFN0cmluZyhwYXJhbWV0
ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIpOwogICAgIGlmIChtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5oYXNQcm90b2NvbEVycm9ycygpKSB7Ci0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFs
aWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBj
YW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVy
blZhbHVlcyIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xF
cnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgQVNDSUlMaXRlcmFsIHsgIlNv
bWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJl
dHVyblZhbHVlcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjk1LDM4ICsyOTUsMzggQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgcmVxdWVzdEkKICAgICBF
cnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXN1bHQgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG91dF9j
b2x1bW5OYW1lczsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBv
dXRfbm90ZXM7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0
X3RpbWVzdGFtcDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2Jq
ZWN0PiBvdXRfdmFsdWVzOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09O
OjpWYWx1ZT4gb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGludD4gb3V0X2RhdGFiYXNlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG91dF9ub3Rl
czsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEpTT046Ok9iamVjdD4gb3V0X3ZhbHVlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTT046
OlZhbHVlPiBvdXRfcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gb3V0X2RhdGFiYXNl
SWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0
X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKICAgICBEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKLSAgICBtX2Fn
ZW50LT5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVycm9yLCBpbl9kYXRhYmFz
ZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFt
cCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJv
ciwgJm91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmludENvbG9y
KTsKKyAgICBtX2FnZW50LT5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVycm9y
LCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCBvdXRfbm90ZXMsIG91
dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsIG91dF9wYXlsb2FkLCBvdXRfZGF0YWJhc2VJZCwgb3V0
X3NxbEVycm9yLCBvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsIG91dF9wcmlu
dENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKG91dF9j
b2x1bW5OYW1lcykKICAgICAgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJj
b2x1bW5OYW1lcyIpLCBvdXRfY29sdW1uTmFtZXMpOwotICAgICAgICBpZiAob3V0X25vdGVzLmlz
QXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
bm90ZXMiKSwgb3V0X25vdGVzLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAob3V0X3RpbWVzdGFt
cC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldERvdWJsZShBU0NJSUxpdGVy
YWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAo
b3V0X3ZhbHVlcy5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChB
U0NJSUxpdGVyYWwoInZhbHVlcyIpLCBvdXRfdmFsdWVzLmdldFZhbHVlKCkpOwotICAgICAgICBp
ZiAob3V0X3BheWxvYWQuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRWYWx1
ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgb3V0X3BheWxvYWQuZ2V0VmFsdWUoKSk7Ci0gICAg
ICAgIGlmIChvdXRfZGF0YWJhc2VJZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQt
PnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG91dF9kYXRhYmFzZUlkLmdl
dFZhbHVlKCkpOworICAgICAgICBpZiAob3V0X25vdGVzLmhhc192YWx1ZSgpKQorICAgICAgICAg
ICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAqb3V0X25vdGVzKTsK
KyAgICAgICAgaWYgKG91dF90aW1lc3RhbXAuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1
bHQtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAqb3V0X3RpbWVzdGFtcCk7
CisgICAgICAgIGlmIChvdXRfdmFsdWVzLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0
LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgKm91dF92YWx1ZXMpOworICAgICAg
ICBpZiAob3V0X3BheWxvYWQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFZh
bHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAqb3V0X3BheWxvYWQpOworICAgICAgICBpZiAo
b3V0X2RhdGFiYXNlSWQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldEludGVn
ZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICpvdXRfZGF0YWJhc2VJZCk7CiAgICAgICAg
IGlmIChvdXRfc3FsRXJyb3IpCiAgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7Ci0gICAgICAgIGlmIChvdXRfc2NyZWVu
Q29sb3IuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlM
aXRlcmFsKCJzY3JlZW5Db2xvciIpLCBvdXRfc2NyZWVuQ29sb3IuZ2V0VmFsdWUoKSk7CisgICAg
ICAgIGlmIChvdXRfc2NyZWVuQ29sb3IuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQt
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksICpvdXRfc2NyZWVuQ29sb3Ip
OwogICAgICAgICBpZiAob3V0X2FsdGVybmF0ZUNvbG9ycykKICAgICAgICAgICAgIHJlc3VsdC0+
c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgb3V0X2FsdGVybmF0ZUNv
bG9ycyk7Ci0gICAgICAgIGlmIChvdXRfcHJpbnRDb2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAg
ICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgb3V0X3By
aW50Q29sb3IuZ2V0VmFsdWUoKSk7CisgICAgICAgIGlmIChvdXRfcHJpbnRDb2xvci5oYXNfdmFs
dWUoKSkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRD
b2xvciIpLCAqb3V0X3ByaW50Q29sb3IpOwogICAgIH0KICAgICBpZiAoIWVycm9yLmxlbmd0aCgp
KQogICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBX
VEZNb3ZlKHJlc3VsdCksIGZhbHNlKTsKQEAgLTMzNiwyOSArMzM2LDI5IEBAIHZvaWQgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhs
b25nIHJlcXVlc3RJCiAKIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5k
RGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RG
TW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxs
YmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5O
YW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxs
YmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5O
YW1lcywgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+
JiB0aW1lc3RhbXAsIHN0ZDo6b3B0aW9uYWw8SlNPTjo6T2JqZWN0PiYgdmFsdWVzLCBzdGQ6Om9w
dGlvbmFsPEpTT046OlZhbHVlPiYgcGF5bG9hZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiBkYXRhYmFz
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVy
cm9yLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBq
c29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgaWYgKGNvbHVtbk5hbWVz
KQogICAgICAgICBqc29uTWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1l
cyIpLCBjb2x1bW5OYW1lcyk7Ci0gICAgaWYgKG5vdGVzLmlzQXNzaWduZWQoKSkKLSAgICAgICAg
anNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG5vdGVzLmdldFZh
bHVlKCkpOwotICAgIGlmICh0aW1lc3RhbXAuaXNBc3NpZ25lZCgpKQotICAgICAgICBqc29uTWVz
c2FnZS0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcC5nZXRW
YWx1ZSgpKTsKLSAgICBpZiAodmFsdWVzLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNvbk1lc3Nh
Z2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCB2YWx1ZXMuZ2V0VmFsdWUoKSk7
Ci0gICAgaWYgKHBheWxvYWQuaXNBc3NpZ25lZCgpKQotICAgICAgICBqc29uTWVzc2FnZS0+c2V0
VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIHBheWxvYWQuZ2V0VmFsdWUoKSk7Ci0gICAg
aWYgKGRhdGFiYXNlSWQuaXNBc3NpZ25lZCgpKQotICAgICAgICBqc29uTWVzc2FnZS0+c2V0SW50
ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgZGF0YWJhc2VJZC5nZXRWYWx1ZSgpKTsK
KyAgICBpZiAobm90ZXMuaGFzX3ZhbHVlKCkpCisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRTdHJp
bmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAqbm90ZXMpOworICAgIGlmICh0aW1lc3RhbXAuaGFz
X3ZhbHVlKCkpCisgICAgICAgIGpzb25NZXNzYWdlLT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0
aW1lc3RhbXAiKSwgKnRpbWVzdGFtcCk7CisgICAgaWYgKHZhbHVlcy5oYXNfdmFsdWUoKSkKKyAg
ICAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAqdmFs
dWVzKTsKKyAgICBpZiAocGF5bG9hZC5oYXNfdmFsdWUoKSkKKyAgICAgICAganNvbk1lc3NhZ2Ut
PnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAqcGF5bG9hZCk7CisgICAgaWYgKGRh
dGFiYXNlSWQuaGFzX3ZhbHVlKCkpCisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRJbnRlZ2VyKEFT
Q0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCAqZGF0YWJhc2VJZCk7CiAgICAgaWYgKHNxbEVycm9y
KQogICAgICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3Ii
KSwgc3FsRXJyb3IpOwotICAgIGlmIChzY3JlZW5Db2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAg
IGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBzY3Jl
ZW5Db2xvci5nZXRWYWx1ZSgpKTsKKyAgICBpZiAoc2NyZWVuQ29sb3IuaGFzX3ZhbHVlKCkpCisg
ICAgICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIp
LCAqc2NyZWVuQ29sb3IpOwogICAgIGlmIChhbHRlcm5hdGVDb2xvcnMpCiAgICAgICAgIGpzb25N
ZXNzYWdlLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBhbHRlcm5h
dGVDb2xvcnMpOwotICAgIGlmIChwcmludENvbG9yLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNv
bk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgcHJpbnRDb2xv
ci5nZXRWYWx1ZSgpKTsKKyAgICBpZiAocHJpbnRDb2xvci5oYXNfdmFsdWUoKSkKKyAgICAgICAg
anNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgKnByaW50
Q29sb3IpOwogICAgIENhbGxiYWNrQmFzZTo6c2VuZFN1Y2Nlc3MoV1RGTW92ZShqc29uTWVzc2Fn
ZSkpOwogfQogCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3QKICAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldEludGVnZXIocGFy
YW1ldGVycy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIpOwogICAg
IFN0cmluZyBpbl9xdWVyeSA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldFN0cmluZyhwYXJhbWV0
ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIpOwogICAgIGlmIChtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5oYXNQcm90b2NvbEVycm9ycygpKSB7Ci0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFs
aWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBj
YW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXMiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIEFTQ0lJTGl0ZXJhbCB7ICJT
b21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJ0RhdGFiYXNlLmV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9iamUKICAgICBp
bnQgaW5fZGF0YWJhc2VJZCA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldEludGVnZXIocGFyYW1l
dGVycy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIpOwogICAgIFN0
cmluZyBpbl9xdWVyeSA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldFN0cmluZyhwYXJhbWV0ZXJz
LmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIpOwogICAgIGlmIChtX2JhY2tl
bmREaXNwYXRjaGVyLT5oYXNQcm90b2NvbEVycm9ycygpKSB7Ci0gICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQ
YXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBjYW4n
dCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmMiKSk7CisgICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6
OkludmFsaWRQYXJhbXMsIEFTQ0lJTGl0ZXJhbCB7ICJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2Qg
J0RhdGFiYXNlLmV4ZWN1dGVTUUxTeW5jJyBjYW4ndCBiZSBwcm9jZXNzZWQiIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NjEsNyArNDYxLDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09O
OjpPYmoKICAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldElu
dGVnZXIocGFyYW1ldGVycy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxw
dHIpOwogICAgIFN0cmluZyBpbl9xdWVyeSA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldFN0cmlu
ZyhwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIpOwogICAg
IGlmIChtX2JhY2tlbmREaXNwYXRjaGVyLT5oYXNQcm90b2NvbEVycm9ycygpKSB7Ci0gICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNo
ZXI6OkludmFsaWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRo
b2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5jIikp
OworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tl
bmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBBU0NJSUxpdGVyYWwgeyAiU29tZSBhcmd1bWVu
dHMgb2YgbWV0aG9kICdEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmMnIGNhbid0IGJlIHByb2Nlc3Nl
ZCIgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdAppbmRleCAyZTc1ODM4MTczMWFiODFjNjAxN2Y4MDhjOWIyYTU1NjYxODRmZDY3Li45YzY0
ZjI4ZmY0NjlhNDk5MmRhNmYwZjRlZjI1MTBhMDFkZTY4MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiBjbGFzcyBBbHRlcm5hdGVE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMobG9uZyBjYWxsSWQsIGNvbnN0IEpTT046OkFycmF5KiBpbl9jb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nKiBjb25zdCBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCBpbl90aW1lc3RhbXAs
IGNvbnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSogY29uc3Qg
aW5fcGF5bG9hZCwgY29uc3QgaW50KiBjb25zdCBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpP
YmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IGluX3NjcmVlbkNvbG9yLCBj
b25zdCBKU09OOjpBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0
IGluX3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2NvbHVtbk5hbWVz
LCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29u
c3QgSlNPTjo6T2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVlKiBpbl9wYXlsb2Fk
LCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fc3FsRXJy
b3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5KiBpbl9h
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0
IEpTT046OkFycmF5JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91
YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0JiBpbl92YWx1ZXMsIEpTT046OlZh
bHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QmIGlu
X3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJh
eSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IpID0gMDsK
IH07CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAg
ICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2
aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNv
bnN0IEpTT046OkFycmF5KiBvcHRfaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qg
b3B0X2luX25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IG9wdF9pbl90aW1lc3RhbXAsIGNvbnN0
IEpTT046Ok9iamVjdCogb3B0X2luX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIGNvbnN0IG9w
dF9pbl9wYXlsb2FkLCBjb25zdCBpbnQqIGNvbnN0IG9wdF9pbl9kYXRhYmFzZUlkLCBjb25zdCBK
U09OOjpPYmplY3QqIG9wdF9pbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRfaW5f
c2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9wcmludENvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PEpTT046Ok9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRf
b3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkq
IG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBvcHRfaW5fbm90ZXMsIGNvbnN0IGRv
dWJsZSogb3B0X2luX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRfaW5fdmFsdWVz
LCBjb25zdCBKU09OOjpWYWx1ZSogb3B0X2luX3BheWxvYWQsIGNvbnN0IGludCogb3B0X2luX2Rh
dGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJp
bmcqIG9wdF9pbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9hbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyogb3B0X2luX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpB
cnJheU9mPFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4mIG9wdF9vdXRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYgb3B0X291dF90aW1lc3Rh
bXAsIHN0ZDo6b3B0aW9uYWw8SlNPTjo6T2JqZWN0PiYgb3B0X291dF92YWx1ZXMsIHN0ZDo6b3B0
aW9uYWw8SlNPTjo6VmFsdWU+JiBvcHRfb3V0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYg
b3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50
Q29sb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3Qm
IGluX3ZhbHVlcywgSlNPTjo6VmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNv
bnN0IEpTT046Ok9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29s
b3IsIGNvbnN0IEpTT046OkFycmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYg
aW5fcHJpbnRDb2xvciwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG91dF9jb2x1bW5O
YW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSlNPTjo6T2Jq
ZWN0KiBvdXRfdmFsdWVzLCBKU09OOjpWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFi
YXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRf
c3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBv
dXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB+RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKQEAgLTI1MCw3ICsy
NTAsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUgogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAi
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikKICAgICAgICAgZXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNw
YXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLics
IG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQs
ICInRGF0YWJhc2UuIiArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKIH0KIAogdm9pZCBE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxv
bmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMpCkBAIC0yNjAs
NyArMjYwLDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWYKICAgICBib29sIG9wdF9pbl9ub3Rl
c192YWx1ZUZvdW5kID0gZmFsc2U7CiAgICAgU3RyaW5nIG9wdF9pbl9ub3RlcyA9IG1fYmFja2Vu
ZERpc3BhdGNoZXItPmdldFN0cmluZyhwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoIm5v
dGVzIiksICZvcHRfaW5fbm90ZXNfdmFsdWVGb3VuZCk7CiAgICAgYm9vbCBvcHRfaW5fdGltZXN0
YW1wX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8ZG91YmxlPiBvcHRfaW5fdGltZXN0YW1wID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0RG91
YmxlKHBhcmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZvcHRfaW5f
dGltZXN0YW1wX3ZhbHVlRm91bmQpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBvcHRfaW5f
dGltZXN0YW1wID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0RG91YmxlKHBhcmFtZXRlcnMuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZvcHRfaW5fdGltZXN0YW1wX3ZhbHVlRm91
bmQpOwogICAgIGJvb2wgb3B0X2luX3ZhbHVlc192YWx1ZUZvdW5kID0gZmFsc2U7CiAgICAgUmVm
UHRyPEpTT046Ok9iamVjdD4gb3B0X2luX3ZhbHVlcyA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdl
dE9iamVjdChwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmb3B0X2lu
X3ZhbHVlc192YWx1ZUZvdW5kKTsKICAgICBib29sIG9wdF9pbl9wYXlsb2FkX3ZhbHVlRm91bmQg
PSBmYWxzZTsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIFJlZgogICAg
IGJvb2wgb3B0X2luX3ByaW50Q29sb3JfdmFsdWVGb3VuZCA9IGZhbHNlOwogICAgIFN0cmluZyBv
cHRfaW5fcHJpbnRDb2xvciA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldFN0cmluZyhwYXJhbWV0
ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJm9wdF9pbl9wcmludENvbG9y
X3ZhbHVlRm91bmQpOwogICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVyLT5oYXNQcm90b2NvbEVy
cm9ycygpKSB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJy
b3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJTb21l
IGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2Uu
ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFt
cywgQVNDSUlMaXRlcmFsIHsgIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnRGF0YWJhc2UuZXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjkwLDM4ICsyOTAsMzggQEAgdm9pZCBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVz
dElkLCBSZWYKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBy
ZXN1bHQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxKU09OOjpBcnJheU9m
PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8U3RyaW5nPiBvdXRfbm90ZXM7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8SlNPTjo6T2JqZWN0PiBvdXRfdmFsdWVzOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4gb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGludD4gb3V0X2RhdGFiYXNlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG91dF9ub3RlczsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3V0X3RpbWVzdGFt
cDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTT046Ok9iamVjdD4gb3V0X3ZhbHVlczsKKyAgICBzdGQ6
Om9wdGlvbmFsPEpTT046OlZhbHVlPiBvdXRfcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gb3V0X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKICAg
ICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRD
b2xvcjsKLSAgICBtX2FnZW50LT5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCBv
cHRfaW5fY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA/IG9wdF9pbl9jb2x1bW5OYW1lcy5nZXQoKSA6
IG51bGxwdHIsIG9wdF9pbl9ub3Rlc192YWx1ZUZvdW5kID8gJm9wdF9pbl9ub3RlcyA6IG51bGxw
dHIsIG9wdF9pbl90aW1lc3RhbXBfdmFsdWVGb3VuZCA/ICZvcHRfaW5fdGltZXN0YW1wIDogbnVs
bHB0ciwgb3B0X2luX3ZhbHVlc192YWx1ZUZvdW5kID8gb3B0X2luX3ZhbHVlcy5nZXQoKSA6IG51
bGxwdHIsIG9wdF9pbl9wYXlsb2FkX3ZhbHVlRm91bmQgPyBvcHRfaW5fcGF5bG9hZC5nZXQoKSA6
IG51bGxwdHIsIG9wdF9pbl9kYXRhYmFzZUlkX3ZhbHVlRm91bmQgPyAmb3B0X2luX2RhdGFiYXNl
SWQgOiBudWxscHRyLCBvcHRfaW5fc3FsRXJyb3JfdmFsdWVGb3VuZCA/IG9wdF9pbl9zcWxFcnJv
ci5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9zY3JlZW5Db2xvcl92YWx1ZUZvdW5kID8gJm9wdF9p
bl9zY3JlZW5Db2xvciA6IG51bGxwdHIsIG9wdF9pbl9hbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3Vu
ZCA/IG9wdF9pbl9hbHRlcm5hdGVDb2xvcnMuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fcHJpbnRD
b2xvcl92YWx1ZUZvdW5kID8gJm9wdF9pbl9wcmludENvbG9yIDogbnVsbHB0ciwgb3V0X2NvbHVt
bk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXls
b2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgb3V0
X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmludENvbG9yKTsKKyAgICBtX2FnZW50LT5leGVjdXRl
QWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCBvcHRfaW5fY29sdW1uTmFtZXNfdmFsdWVGb3Vu
ZCA/IG9wdF9pbl9jb2x1bW5OYW1lcy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9ub3Rlc192YWx1
ZUZvdW5kID8gJm9wdF9pbl9ub3RlcyA6IG51bGxwdHIsIG9wdF9pbl90aW1lc3RhbXBfdmFsdWVG
b3VuZCA/ICZvcHRfaW5fdGltZXN0YW1wIDogbnVsbHB0ciwgb3B0X2luX3ZhbHVlc192YWx1ZUZv
dW5kID8gb3B0X2luX3ZhbHVlcy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9wYXlsb2FkX3ZhbHVl
Rm91bmQgPyBvcHRfaW5fcGF5bG9hZC5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9kYXRhYmFzZUlk
X3ZhbHVlRm91bmQgPyAmb3B0X2luX2RhdGFiYXNlSWQgOiBudWxscHRyLCBvcHRfaW5fc3FsRXJy
b3JfdmFsdWVGb3VuZCA/IG9wdF9pbl9zcWxFcnJvci5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9z
Y3JlZW5Db2xvcl92YWx1ZUZvdW5kID8gJm9wdF9pbl9zY3JlZW5Db2xvciA6IG51bGxwdHIsIG9w
dF9pbl9hbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA/IG9wdF9pbl9hbHRlcm5hdGVDb2xvcnMu
Z2V0KCkgOiBudWxscHRyLCBvcHRfaW5fcHJpbnRDb2xvcl92YWx1ZUZvdW5kID8gJm9wdF9pbl9w
cmludENvbG9yIDogbnVsbHB0ciwgb3V0X2NvbHVtbk5hbWVzLCBvdXRfbm90ZXMsIG91dF90aW1l
c3RhbXAsIG91dF92YWx1ZXMsIG91dF9wYXlsb2FkLCBvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVy
cm9yLCBvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsIG91dF9wcmludENvbG9y
KTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKG91dF9jb2x1bW5O
YW1lcykKICAgICAgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5O
YW1lcyIpLCBvdXRfY29sdW1uTmFtZXMpOwotICAgICAgICBpZiAob3V0X25vdGVzLmlzQXNzaWdu
ZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMi
KSwgb3V0X25vdGVzLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAob3V0X3RpbWVzdGFtcC5pc0Fz
c2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRp
bWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAob3V0X3Zh
bHVlcy5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInZhbHVlcyIpLCBvdXRfdmFsdWVzLmdldFZhbHVlKCkpOwotICAgICAgICBpZiAob3V0
X3BheWxvYWQuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShBU0NJ
SUxpdGVyYWwoInBheWxvYWQiKSwgb3V0X3BheWxvYWQuZ2V0VmFsdWUoKSk7Ci0gICAgICAgIGlm
IChvdXRfZGF0YWJhc2VJZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldElu
dGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG91dF9kYXRhYmFzZUlkLmdldFZhbHVl
KCkpOworICAgICAgICBpZiAob3V0X25vdGVzLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVz
dWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAqb3V0X25vdGVzKTsKKyAgICAg
ICAgaWYgKG91dF90aW1lc3RhbXAuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNl
dERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAqb3V0X3RpbWVzdGFtcCk7CisgICAg
ICAgIGlmIChvdXRfdmFsdWVzLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRP
YmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgKm91dF92YWx1ZXMpOworICAgICAgICBpZiAo
b3V0X3BheWxvYWQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFZhbHVlKEFT
Q0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAqb3V0X3BheWxvYWQpOworICAgICAgICBpZiAob3V0X2Rh
dGFiYXNlSWQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldEludGVnZXIoQVND
SUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICpvdXRfZGF0YWJhc2VJZCk7CiAgICAgICAgIGlmIChv
dXRfc3FsRXJyb3IpCiAgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
InNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7Ci0gICAgICAgIGlmIChvdXRfc2NyZWVuQ29sb3Iu
aXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzY3JlZW5Db2xvciIpLCBvdXRfc2NyZWVuQ29sb3IuZ2V0VmFsdWUoKSk7CisgICAgICAgIGlm
IChvdXRfc2NyZWVuQ29sb3IuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksICpvdXRfc2NyZWVuQ29sb3IpOwogICAg
ICAgICBpZiAob3V0X2FsdGVybmF0ZUNvbG9ycykKICAgICAgICAgICAgIHJlc3VsdC0+c2V0QXJy
YXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgb3V0X2FsdGVybmF0ZUNvbG9ycyk7
Ci0gICAgICAgIGlmIChvdXRfcHJpbnRDb2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICBy
ZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgb3V0X3ByaW50Q29s
b3IuZ2V0VmFsdWUoKSk7CisgICAgICAgIGlmIChvdXRfcHJpbnRDb2xvci5oYXNfdmFsdWUoKSkK
KyAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIp
LCAqb3V0X3ByaW50Q29sb3IpOwogICAgIH0KICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKQogICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3Zl
KHJlc3VsdCksIGZhbHNlKTsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwg
UmVmUAogICAgIFJlZlB0cjxKU09OOjpBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+Z2V0QXJyYXkocGFyYW1ldGVycy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJh
bHRlcm5hdGVDb2xvcnMiKSwgbnVsbHB0cik7CiAgICAgU3RyaW5nIGluX3ByaW50Q29sb3IgPSBt
X2JhY2tlbmREaXNwYXRjaGVyLT5nZXRTdHJpbmcocGFyYW1ldGVycy5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJwcmludENvbG9yIiksIG51bGxwdHIpOwogICAgIGlmIChtX2JhY2tlbmREaXNwYXRjaGVy
LT5oYXNQcm90b2NvbEVycm9ycygpKSB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIFN0cmlu
Zzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNz
ZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVy
OjpJbnZhbGlkUGFyYW1zLCBBU0NJSUxpdGVyYWwgeyAiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9k
ICdEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMnIGNhbid0IGJlIHByb2Nlc3Nl
ZCIgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc2Myw3ICs3NjMsNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlk
PFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRl
ID0gaGFuZGxlcjsgfQotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzKGxvbmcgcmVxdWVzdElkLCBjb25zdCBKU09OOjpBcnJheSogaW5fY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyogY29uc3QgaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgaW5fdGltZXN0
YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIGluX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIGNv
bnN0IGluX3BheWxvYWQsIGNvbnN0IGludCogY29uc3QgaW5fZGF0YWJhc2VJZCwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9zY3JlZW5Db2xv
ciwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBj
b25zdCBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwgY29uc3QgSlNPTjo6QXJyYXkqIGlu
X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3Rp
bWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVl
KiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVj
dCogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046
OkFycmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhs
b25nIHJlcXVlc3RJZCwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3Qm
IGluX3ZhbHVlcywgSlNPTjo6VmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNv
bnN0IEpTT046Ok9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29s
b3IsIGNvbnN0IEpTT046OkFycmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYg
aW5fcHJpbnRDb2xvcikgb3ZlcnJpZGU7CiBwcml2YXRlOgogICAgIFJldGFpblB0cjxpZDxUZXN0
UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+PiBtX2RlbGVnYXRlOwpAQCAtODEzLDcgKzgx
Myw3IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi12b2lkIE9iakNJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzKGxvbmcgcmVxdWVzdElkLCBjb25zdCBKU09OOjpBcnJheSogaW5fY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyogY29uc3QgaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgaW5fdGltZXN0
YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIGluX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIGNv
bnN0IGluX3BheWxvYWQsIGNvbnN0IGludCogY29uc3QgaW5fZGF0YWJhc2VJZCwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9zY3JlZW5Db2xv
ciwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBj
b25zdCBpbl9wcmludENvbG9yKQordm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwgY29u
c3QgSlNPTjo6QXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBj
b25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl92YWx1ZXMs
IGNvbnN0IEpTT046OlZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQs
IGNvbnN0IEpTT046Ok9iamVjdCogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVu
Q29sb3IsIGNvbnN0IEpTT046OkFycmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyogaW5fcHJpbnRDb2xvcikKIHsKICAgICBpZCBlcnJvckNhbGxiYWNrID0gXihOU1N0cmluZyAq
ZXJyb3IpIHsKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJv
cihyZXF1ZXN0SWQsIEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpOwpAQCAt
OTIyLDEzICs5MjIsMTMgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmUKICAgICBUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yICpvX2luX3NxbEVycm9yID0gW1tbVGVzdFByb3RvY29sRGF0YWJhc2VF
cnJvciBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OiZpbl9zcWxFcnJvcl0gYXV0b3JlbGVhc2Vd
OwogICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBv
X2luX3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9ycz4oaW5fc2NyZWVuQ29sb3IpOwogICAgIGlmICghb19pbl9zY3JlZW5Db2xv
cikgewotICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJh
Y2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVy
ICclcycgb2YgbWV0aG9kICclcycgY2Fubm90IGJlIHByb2Nlc3NlZCIsICJzY3JlZW5Db2xvciIs
ICJEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiKSk7CisgICAgICAgIGJhY2tl
bmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Oklu
dmFsaWRQYXJhbXMsIEFTQ0lJTGl0ZXJhbCB7ICJQYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyBvZiBt
ZXRob2QgJ0RhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycycgY2Fubm90IGJlIHBy
b2Nlc3NlZCIgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTlNBcnJheS8qPE5TU3Ry
aW5nPiovICpvX2luX2FsdGVybmF0ZUNvbG9ycyA9IHRvT2JqQ1N0cmluZ0FycmF5KCZpbl9hbHRl
cm5hdGVDb2xvcnMpOwogICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBvX2luX3ByaW50Q29sb3IgPSBmcm9t
UHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yPihpbl9wcmludENvbG9yKTsKICAgICBpZiAoIW9faW5fcHJpbnRDb2xv
cikgewotICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJh
Y2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVy
ICclcycgb2YgbWV0aG9kICclcycgY2Fubm90IGJlIHByb2Nlc3NlZCIsICJwcmludENvbG9yIiwg
IkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKKyAgICAgICAgYmFja2Vu
ZERpc3BhdGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52
YWxpZFBhcmFtcywgQVNDSUlMaXRlcmFsIHsgIlBhcmFtZXRlciAncHJpbnRDb2xvcicgb2YgbWV0
aG9kICdEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMnIGNhbm5vdCBiZSBwcm9j
ZXNzZWQiIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9k
b21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0
eS5qc29uLXJlc3VsdAppbmRleCA4ZjM5ZDkyNDkxZDcxM2I4ZTVlYzc3ODJlODNlZmQ2Yzg2NGFk
MGFhLi44YTgyNGZjNDc2NDMzNDY0MWNjNGE2NjlmYTFiYzNhNDI1ZTcwODRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFp
bi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIERvbWFp
bkFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBSZQogICAgIGlmIChtZXRob2QgPT0gImVuYWJsZSIpCiAgICAgICAgIGVuYWJs
ZShyZXF1ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIGVsc2UKLSAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6
TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRvbWFpbkEiLCAnLicsIG1ldGhvZCwg
Iicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0
UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsICInRG9tYWlu
QS4iICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOwogfQogCiB2b2lkIERvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZW5hYmxlKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmKQpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyOjpk
aXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlCiAgICAgaWYg
KG1ldGhvZCA9PSAiZW5hYmxlIikKICAgICAgICAgZW5hYmxlKHJlcXVlc3RJZCwgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0
cmluZygnXCcnLCAiRG9tYWluQiIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwor
ICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmRE
aXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgIidEb21haW5CLiIgKyBtZXRob2QgKyAiJyB3YXMg
bm90IGZvdW5kIik7CiB9CiAKIHZvaWQgRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyOjplbmFibGUo
bG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCA1ODY3
NGQ5M2MyZmNhZTlhMGEwNDhiYjQ2ZGI2MzliZDdlYTFlZGIzLi4zNDljOTAzYmU3NTk4MWVmNzdm
MGNkYWExOTU2NDIxZjBjNTgxZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12
YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lk
IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUgogICAgIGlmIChtZXRob2QgPT0gImxvYWRSZXNvdXJjZTEiKQog
ICAgICAgICBsb2FkUmVzb3VyY2UxKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAg
ICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9y
KEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0
d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0
aG9kTm90Rm91bmQsICInTmV0d29yazEuIiArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsK
IH0KIAogdm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcg
cmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZv
aWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBSCiAKICAgICBhdXRvIGZpbmRSZXN1bHQgPSBkaXNwYXRjaE1h
cC5nZXQoKS5maW5kKG1ldGhvZCk7CiAgICAgaWYgKGZpbmRSZXN1bHQgPT0gZGlzcGF0Y2hNYXAu
Z2V0KCkuZW5kKCkpIHsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9j
b2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wn
JywgIk5ldHdvcmszIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNo
ZXI6Ok1ldGhvZE5vdEZvdW5kLCAiJ05ldHdvcmszLiIgKyBtZXRob2QgKyAiJyB3YXMgbm90IGZv
dW5kIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXgg
ZDA1NGI4MjliNTdlYjY1NDczYTVjYzQ2NTY4ODkzMjJmYjcwYWNmNy4uMmFlZGI3Mzc0NWMwMGI1
ZDgwZjc1NjljZGU5MzhkZTMxY2UxZTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTI1Myw3
ICsyNTMsNyBAQCB2b2lkIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
bG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aAogICAgIGlmIChtZXRob2QgPT0gImNv
bW1hbmRXaXRoRW51bVJldHVyblZhbHVlIikKICAgICAgICAgY29tbWFuZFdpdGhFbnVtUmV0dXJu
VmFsdWUocmVxdWVzdElkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNo
ZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJDb21tYW5kRG9tYWluIiwgJy4n
LCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5k
LCAiJ0NvbW1hbmREb21haW4uIiArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKIH0KIAog
dm9pZCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmRXaXRoRW51bVJldHVy
blZhbHVlKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggMWQ5
OTY2YWE1MThhNWNmYTBlYTcwNTE0NzUxMTlkN2VmNGQ4YmMyNC4uNDc4NjM3Y2M2NjkyZGU2YzAz
MjkwZGVmMTk2NzdmZTQ3NjAwMmU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0
aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRp
b25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0yMzQsNyArMjM0LDcgQEAgY2xhc3MgRnJv
bnRlbmRSb3V0ZXI7CiBjbGFzcyBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6
CiAgICAgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5k
Um91dGVyKSA6IG1fZnJvbnRlbmRSb3V0ZXIoZnJvbnRlbmRSb3V0ZXIpIHsgfQotICAgIHZvaWQg
ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBj
b25zdCB0aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046
OlZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiBzcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsKKyAgICB2b2lkIGRpZEV4ZWN1dGVPcHRp
b25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyogbm90ZXMsIGNvbnN0IGRvdWJsZSogdGltZXN0YW1wLCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmlu
Zyogc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogcHJpbnRDb2xvcik7CiAgICAg
dm9pZCBkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8
U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3Rh
bXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXls
b2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJv
ciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmlu
dENvbG9yKTsKIHByaXZhdGU6CiAgICAgRnJvbnRlbmRSb3V0ZXImIG1fZnJvbnRlbmRSb3V0ZXI7
CkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LXZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFt
ZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0
cmluZyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgcHJp
bnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRp
b25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyogbm90ZXMsIGNvbnN0IGRvdWJsZSogdGltZXN0YW1wLCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmlu
Zyogc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogcHJpbnRDb2xvcikKIHsKICAg
ICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJ
SUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMiKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1y
ZXN1bHQKaW5kZXggMjM1NTMzMGEyOWZkYzE4Mzg4ZjY2ZmIxYjdlMDNjZTE2MTU2ZjY0MS4uZTQz
NzIzMzQzZDc2MGY1Zjk5MmNkZTU1ZTJiMTI0ZjZmNjg2NWMwZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
bG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSCiAgICAgaWYgKG1ldGhvZCA9
PSAibG9hZFJlc291cmNlIikKICAgICAgICAgbG9hZFJlc291cmNlKHJlcXVlc3RJZCwgV1RGTW92
ZShwYXJhbWV0ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFr
ZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIp
KTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNr
ZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsICInTmV0d29yazEuIiArIG1ldGhvZCArICIn
IHdhcyBub3QgZm91bmQiKTsKIH0KIAogdm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2UobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCAyZDAz
MTU3MDBhNjYxOGI5YWIyODY2ZGYwZmE3MzE5YTZkZjUxNDI2Li45ZGU4NTExOGIwYjk0M2U3OWNm
NjBiYmViMGJiODRkZjc2MGIzOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1y
dW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRp
bWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTU1OSwyNSArNTU5LDE3IEBAIHB1YmxpYzoKIH0gLy8g
VGVzdAogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMg
dm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwotI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQKIH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gewogc3RhdGljIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IHJ1bnRpbWVDYXN0
KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogc3Rh
dGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqKTsKLSNlbmRp
ZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0
czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAogc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNP
Tjo6VmFsdWUqKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwogdGVtcGxhdGU8PiBz
dHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVP
YmplY3QyPiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVI
YXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
CiB9OwogCiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewpAQCAtNjkzLDQ2ICs2ODUsNTAgQEAgc3Rk
OjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmcKIAogCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiB2b2lkIEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz46OmFz
c2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2YWx1ZSkKIHsKKyNpZiBBU1NF
UlRfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworI2Vsc2UKICAgICBBU1NFUlRf
QVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgU3RyaW5nIHJlc3VsdDsKICAgICBib29sIGNhc3RTdWNj
ZWVkZWQgPSB2YWx1ZS0+YXNTdHJpbmcocmVzdWx0KTsKICAgICBBU1NFUlQoY2FzdFN1Y2NlZWRl
ZCk7CiAgICAgQVNTRVJUKHJlc3VsdCA9PSAiRHVja3MiIHx8IHJlc3VsdCA9PSAiSGVucyIgfHwg
cmVzdWx0ID09ICJDcm93cyIgfHwgcmVzdWx0ID09ICJGbGFtaW5nb3MiKTsKLX0KICNlbmRpZiAv
LyAhQVNTRVJUX0RJU0FCTEVECit9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiB2b2lkIEJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6YXNz
ZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogeworI2lmIEFTU0VS
VF9ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZWxzZQogICAgIEFTU0VSVF9B
UkcodmFsdWUsIHZhbHVlKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3Q7CiAgICAg
Ym9vbCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KG9iamVjdCk7CiAgICAgQVNTRVJU
X1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKICAgICB7Ci0gICAgICAgIEpT
T046Ok9iamVjdDo6aXRlcmF0b3Igc3RyaW5nUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJh
bCgic3RyaW5nIikpOworICAgICAgICBhdXRvIHN0cmluZ1BvcyA9IG9iamVjdC0+ZmluZChBU0NJ
SUxpdGVyYWwoInN0cmluZyIpKTsKICAgICAgICAgQVNTRVJUKHN0cmluZ1BvcyAhPSBvYmplY3Qt
PmVuZCgpKTsKICAgICAgICAgQmluZGluZ1RyYWl0czxTdHJpbmc+Ojphc3NlcnRWYWx1ZUhhc0V4
cGVjdGVkVHlwZShzdHJpbmdQb3MtPnZhbHVlLmdldCgpKTsKICAgICB9CiAgICAgewotICAgICAg
ICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yIG51bWJlclBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxp
dGVyYWwoIm51bWJlciIpKTsKKyAgICAgICAgYXV0byBudW1iZXJQb3MgPSBvYmplY3QtPmZpbmQo
QVNDSUlMaXRlcmFsKCJudW1iZXIiKSk7CiAgICAgICAgIEFTU0VSVChudW1iZXJQb3MgIT0gb2Jq
ZWN0LT5lbmQoKSk7CiAgICAgICAgIEJpbmRpbmdUcmFpdHM8aW50Pjo6YXNzZXJ0VmFsdWVIYXNF
eHBlY3RlZFR5cGUobnVtYmVyUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHsKLSAgICAg
ICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciBhbmltYWxzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJ
TGl0ZXJhbCgiYW5pbWFscyIpKTsKKyAgICAgICAgYXV0byBhbmltYWxzUG9zID0gb2JqZWN0LT5m
aW5kKEFTQ0lJTGl0ZXJhbCgiYW5pbWFscyIpKTsKICAgICAgICAgQVNTRVJUKGFuaW1hbHNQb3Mg
IT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90
b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFu
aW1hbHNQb3MtPnZhbHVlLmdldCgpKTsKICAgICB9CiAgICAgewotICAgICAgICBKU09OOjpPYmpl
Y3Q6Oml0ZXJhdG9yIGlkUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgiaWQiKSk7Cisg
ICAgICAgIGF1dG8gaWRQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJpZCIpKTsKICAg
ICAgICAgQVNTRVJUKGlkUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgICBCaW5kaW5nVHJh
aXRzPGludD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGlkUG9zLT52YWx1ZS5nZXQoKSk7
CiAgICAgfQogICAgIHsKLSAgICAgICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciB0cmVlUG9zID0g
b2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgidHJlZSIpKTsKKyAgICAgICAgYXV0byB0cmVlUG9z
ID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgidHJlZSIpKTsKICAgICAgICAgQVNTRVJUKHRy
ZWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0
ZWRUeXBlKHRyZWVQb3MtPnZhbHVlLmdldCgpKTsKICAgICB9CkBAIC03NDAsMjUgKzczNiwyNSBA
QCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRp
bmdDYXN0Pjo6YXNzZXJ0VmFsdWVIYXNFeAogICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9
IDU7CiAgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKQogICAg
ICAgICBGQVRBTCgiVW5leHBlY3RlZCBwcm9wZXJ0aWVzIGluIG9iamVjdDogJXNcbiIsIG9iamVj
dC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotfQogI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKK30KIAogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVk
aW5nQ2FzdD4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVl
ZGluZ0Nhc3Q+OjpydW50aW1lQ2FzdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCiB7CiAg
ICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcmVzdWx0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9
IHZhbHVlLT5hc09iamVjdChyZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRl
ZCwgY2FzdFN1Y2NlZWRlZCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIEJpbmRpbmdUcmFp
dHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6YXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUocmVzdWx0LmdldCgpKTsKLSNlbmRpZiAgLy8gIUFTU0VSVF9ESVNB
QkxFRAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0
OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNpemVvZihKU09OOjpPYmplY3RCYXNlKSwgdHlwZV9jYXN0
X3Byb2JsZW0pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3I6OlByb3RvY29sOjpU
ZXN0OjpUeXBlTmVlZGluZ0Nhc3QqPihzdGF0aWNfY2FzdDxKU09OOjpPYmplY3RCYXNlKj4ocmVz
dWx0LmdldCgpKSk7CiB9CiAKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKIHZvaWQgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogeworI2lmIEFTU0VSVF9E
SVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZWxzZQogICAgIEFTU0VSVF9BUkco
dmFsdWUsIHZhbHVlKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3Q7CiAgICAgYm9v
bCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KG9iamVjdCk7CkBAIC03NjYsNyArNzYy
LDcgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vy
c2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0UKIAogICAgIGludCBmb3VuZFByb3BlcnRpZXND
b3VudCA9IDA7CiAgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yIG9ialBvcyA9
IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIm9iaiIpKTsKKyAgICAgICAgYXV0byBvYmpQb3Mg
PSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJvYmoiKSk7CiAgICAgICAgIGlmIChvYmpQb3Mg
IT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUob2JqUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICArK2ZvdW5kUHJvcGVydGll
c0NvdW50OwpAQCAtNzc0LDEyICs3NzAsMTQgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0UKICAg
ICB9CiAgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKQogICAg
ICAgICBGQVRBTCgiVW5leHBlY3RlZCBwcm9wZXJ0aWVzIGluIG9iamVjdDogJXNcbiIsIG9iamVj
dC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotfQogI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKK30KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKIHZvaWQgQmluZGluZ1RyYWl0czxJ
bnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNzZXJ0VmFsdWVI
YXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogeworI2lmIEFTU0VSVF9ESVNBQkxF
RAorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZWxzZQogICAgIEFTU0VSVF9BUkcodmFsdWUs
IHZhbHVlKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3Q7CiAgICAgYm9vbCBjYXN0
U3VjY2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KG9iamVjdCk7CkBAIC03ODcsNyArNzg1LDcgQEAg
dm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9i
amVjdDI+Ojphc3NlcnRWYWx1ZUhhc0UKIAogICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9
IDA7CiAgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yIG9ialBvcyA9IG9iamVj
dC0+ZmluZChBU0NJSUxpdGVyYWwoIm9iaiIpKTsKKyAgICAgICAgYXV0byBvYmpQb3MgPSBvYmpl
Y3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJvYmoiKSk7CiAgICAgICAgIGlmIChvYmpQb3MgIT0gb2Jq
ZWN0LT5lbmQoKSkgewogICAgICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUo
b2JqUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50
OwpAQCAtNzk1LDggKzc5Myw4IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNzZXJ0VmFsdWVIYXNFCiAgICAgfQogICAg
IGlmIChmb3VuZFByb3BlcnRpZXNDb3VudCAhPSBvYmplY3QtPnNpemUoKSkKICAgICAgICAgRkFU
QUwoIlVuZXhwZWN0ZWQgcHJvcGVydGllcyBpbiBvYmplY3Q6ICVzXG4iLCBvYmplY3QtPnRvSlNP
TlN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLX0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtl
ci1zdXBwb3J0ZWQtZG9tYWlucy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtlci1zdXBwb3J0ZWQt
ZG9tYWlucy5qc29uLXJlc3VsdAppbmRleCA2NDg3OWMzMjE1NTYwZjhkNTQ2NWU5NTJhM2ZlZTNh
OWE5MGFkYjJiLi4wNzFiODcwNGNmYmY5M2E2MGJkMTAxY2RkODc0ODkxYzczNDBkYjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvd29ya2VyLXN1cHBvcnRlZC1kb21haW5zLmpzb24tcmVzdWx0CkBAIC0yNzIsNyArMjcy
LDcgQEAgdm9pZCBEb21haW5BQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgcmVxdWVz
dElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmUKICAgICBpZiAobWV0aG9kID09ICJlbmFibGUi
KQogICAgICAgICBlbmFibGUocmVxdWVzdElkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFj
a2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJEb21haW5B
IiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5v
dEZvdW5kLCAiJ0RvbWFpbkEuIiArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKIH0KIAog
dm9pZCBEb21haW5BQmFja2VuZERpc3BhdGNoZXI6OmVuYWJsZShsb25nIHJlcXVlc3RJZCwgUmVm
UHRyPEpTT046Ok9iamVjdD4mJikKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIERvbWFpbkJCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBSZQogICAgIGlmIChtZXRob2QgPT0gImVuYWJsZSIpCiAgICAgICAgIGVuYWJsZShyZXF1
ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRvbWFpbkIiLCAnLicsIG1ldGhvZCwgIicgd2Fz
IG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9j
b2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsICInRG9tYWluQi4iICsg
bWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOwogfQogCiB2b2lkIERvbWFpbkJCYWNrZW5kRGlz
cGF0Y2hlcjo6ZW5hYmxlKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggMTMxMWNj
Yjk5MTZjZDZmY2RiNmU5YmZhZTQ1ZDY5ZGFjMzgxMjUwNC4uOWE2MzgyM2NiNDZhZTZhODExNTU1
NDdlNzZhY2RiYTQyZDNjNzZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1w
bGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBOZXR3b3JrQmFja2VuZERpc3Bh
dGNoZXI6OmRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmUK
ICAgICBpZiAobWV0aG9kID09ICJsb2FkUmVzb3VyY2UiKQogICAgICAgICBsb2FkUmVzb3VyY2Uo
cmVxdWVzdElkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1l
dGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrIiwgJy4nLCBtZXRob2QsICIn
IHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFBy
b3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCAiJ05ldHdvcmsu
IiArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKIH0KIAogdm9pZCBOZXR3b3JrQmFja2Vu
ZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9i
amVjdD4mJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAppbmRleCA4ZWI0YzYyYzIyNjMwYmFjZTJkZDdkMjA0NmI3ZmUzNDkwMDcyN2E1Li45
ZDk4NTgxOWNiM2Q0NDI0NjNhYjc1MWM2OTZkNGRjOWYwNTYzMmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0zODUsMTIgKzM4
NSwxMyBAQCBlbnVtIE1lZGlhTGlzdFNvdXJjZSB7CiAgICAgTWVkaWFMaXN0U291cmNlSW1wb3J0
UnVsZQogfTsKIAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNvdXJj
ZVJhbmdlPiBidWlsZFNvdXJjZVJhbmdlT2JqZWN0KGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSwg
VmVjdG9yPHNpemVfdD4qIGxpbmVFbmRpbmdzLCBpbnQqIGVuZGluZ0xpbmUgPSBudWxscHRyKQor
c3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNvdXJjZVJhbmdlPiBidWls
ZFNvdXJjZVJhbmdlT2JqZWN0KGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSwgY29uc3QgVmVjdG9y
PHNpemVfdD4mIGxpbmVFbmRpbmdzLCBpbnQqIGVuZGluZ0xpbmUgPSBudWxscHRyKQogewotICAg
IGlmICghbGluZUVuZGluZ3MpCisgICAgaWYgKGxpbmVFbmRpbmdzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgVGV4dFBvc2l0aW9uIHN0YXJ0ID0gQ29udGVudFNlYXJj
aFV0aWxpdGllczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5zdGFydCwgKmxpbmVFbmRp
bmdzKTsKLSAgICBUZXh0UG9zaXRpb24gZW5kID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6dGV4
dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5lbmQsICpsaW5lRW5kaW5ncyk7CisKKyAgICBUZXh0
UG9zaXRpb24gc3RhcnQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjp0ZXh0UG9zaXRpb25Gcm9t
T2Zmc2V0KHJhbmdlLnN0YXJ0LCBsaW5lRW5kaW5ncyk7CisgICAgVGV4dFBvc2l0aW9uIGVuZCA9
IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnRleHRQb3NpdGlvbkZyb21PZmZzZXQocmFuZ2UuZW5k
LCBsaW5lRW5kaW5ncyk7CiAKICAgICBpZiAoZW5kaW5nTGluZSkKICAgICAgICAgKmVuZGluZ0xp
bmUgPSBlbmQubV9saW5lLnplcm9CYXNlZEludCgpOwpAQCAtNTQzLDcgKzU0NCw3IEBAIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVp
bGRPYmplY3RGb3JTdHlsZSgpCiAKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJj
ZURhdGEgPSBleHRyYWN0U291cmNlRGF0YSgpOwogICAgIGlmIChzb3VyY2VEYXRhKQotICAgICAg
ICByZXN1bHQtPnNldFJhbmdlKGJ1aWxkU291cmNlUmFuZ2VPYmplY3Qoc291cmNlRGF0YS0+cnVs
ZUJvZHlSYW5nZSwgbV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpLmdldCgpKSk7Cisg
ICAgICAgIHJlc3VsdC0+c2V0UmFuZ2UoYnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRh
LT5ydWxlQm9keVJhbmdlLCBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkpKTsKIAog
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CkBAIC02MjUsNyArNjI2LDcgQEAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdp
dGhQcm9wZXJ0aWVzKCkgY28KICAgICBIYXNoU2V0PFN0cmluZz4gZm91bmRTaG9ydGhhbmRzOwog
ICAgIFN0cmluZyBwcmV2aW91c1ByaW9yaXR5OwogICAgIFN0cmluZyBwcmV2aW91c1N0YXR1czsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKG1fcGFyZW50
U3R5bGVTaGVldCA/IG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3MoKSA6IG51bGxwdHIp
OworICAgIFZlY3RvcjxzaXplX3Q+IGxpbmVFbmRpbmdzID0gbV9wYXJlbnRTdHlsZVNoZWV0ID8g
bV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpIDogVmVjdG9yPHNpemVfdD4geyB9Owog
ICAgIGF1dG8gc291cmNlRGF0YSA9IGV4dHJhY3RTb3VyY2VEYXRhKCk7CiAgICAgdW5zaWduZWQg
cnVsZUJvZHlSYW5nZVN0YXJ0ID0gc291cmNlRGF0YSA/IHNvdXJjZURhdGEtPnJ1bGVCb2R5UmFu
Z2Uuc3RhcnQgOiAwOwogCkBAIC02NjcsNyArNjY4LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkg
Y28KICAgICAgICAgICAgIFNvdXJjZVJhbmdlIGFic29sdXRlUHJvcGVydHlSYW5nZSA9IHByb3Bl
cnR5RW50cnkucmFuZ2U7CiAgICAgICAgICAgICBhYnNvbHV0ZVByb3BlcnR5UmFuZ2Uuc3RhcnQg
Kz0gcnVsZUJvZHlSYW5nZVN0YXJ0OwogICAgICAgICAgICAgYWJzb2x1dGVQcm9wZXJ0eVJhbmdl
LmVuZCArPSBydWxlQm9keVJhbmdlU3RhcnQ7Ci0gICAgICAgICAgICBwcm9wZXJ0eS0+c2V0UmFu
Z2UoYnVpbGRTb3VyY2VSYW5nZU9iamVjdChhYnNvbHV0ZVByb3BlcnR5UmFuZ2UsIGxpbmVFbmRp
bmdzLmdldCgpKSk7CisgICAgICAgICAgICBwcm9wZXJ0eS0+c2V0UmFuZ2UoYnVpbGRTb3VyY2VS
YW5nZU9iamVjdChhYnNvbHV0ZVByb3BlcnR5UmFuZ2UsIGxpbmVFbmRpbmdzKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIWl0LT5kaXNhYmxlZCkgewpAQCAtMTE0OSw3ICsxMTUwLDcgQEAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgLnNldFRleHQoc2VsZWN0b3JUZXh0KQog
ICAgICAgICAucmVsZWFzZSgpOwogICAgIGlmIChzb3VyY2VEYXRhKQotICAgICAgICByZXN1bHQt
PnNldFJhbmdlKGJ1aWxkU291cmNlUmFuZ2VPYmplY3Qoc291cmNlRGF0YS0+cnVsZUhlYWRlclJh
bmdlLCBsaW5lRW5kaW5ncygpLmdldCgpLCAmZW5kaW5nTGluZSkpOworICAgICAgICByZXN1bHQt
PnNldFJhbmdlKGJ1aWxkU291cmNlUmFuZ2VPYmplY3Qoc291cmNlRGF0YS0+cnVsZUhlYWRlclJh
bmdlLCBsaW5lRW5kaW5ncygpLCAmZW5kaW5nTGluZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTEyODIsMTAgKzEyODMsMTAgQEAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpydWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xhcmEKICAgICBy
ZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUF0KHJ1bGVJbmRleEJ5U3R5
bGUoc3R5bGUpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncygpIGNvbnN0CitWZWN0b3I8c2l6ZV90PiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhcnNlZFN0
eWxlU2hlZXQtPmhhc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiB7IH07CiAgICAgcmV0dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdz
KG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpKTsKIH0KIApAQCAtMTUyNCw3ICsxNTI1LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRT
dHlsZVRleHQoQ1NTU3R5bGVEZWNsYXIKICAgICByZXR1cm4geyB9OwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
bGluZUVuZGluZ3MoKSBjb25zdAorVmVjdG9yPHNpemVfdD4gSW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlOjpsaW5lRW5kaW5ncygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENvbnRlbnRT
ZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdzKGVsZW1lbnRTdHlsZVRleHQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCBlMDE5
ZWZhMWRjMWNlZTlmZDY4YWE1ZWQ1OGE5ZjMwMDdmYWY0YWNhLi4zMmNlYzllZWEzMjViZjhiNmY2
YjA3ZmQ5NzUzMDFiMzFlNDIzMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICAvLyBBbHNvIGFjY2Vzc2VkIGJ5IGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JTdHlsZS4KICAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9u
KiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNp
emVfdD4+IGxpbmVFbmRpbmdzKCkgY29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8c2l6ZV90PiBs
aW5lRW5kaW5ncygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVJ1bGU+PiBDU1NTdHlsZVJ1bGVWZWN0b3I7CkBAIC0yNDYsNyArMjQ2LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgLy8gQWxzbyBhY2Nlc3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVj
dG9yU3R5bGUuCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3R5bGVUZXh0KENTU1N0eWxlRGVj
bGFyYXRpb24qLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPHNpemVf
dD4gbGluZUVuZGluZ3MoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBDU1NTdHlsZURl
Y2xhcmF0aW9uJiBpbmxpbmVTdHlsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDgwZGFmN2ExMGE5N2Zj
M2NjY2VhOWE3NzVmOTUxNDY4Y2FmZTA5NzMuLjM1NDk0ZmU1YzkxYmQwZDAzZTQzZTUyNDc1YTVj
MjAxYTkxMjMxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHls
ZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TWF0Y2hlZFN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBjb25zdCBp
bmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRj
aGVkQ1NTUnVsZXMsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UHNldWRvSWRNYXRjaGVzPj4mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGlu
dCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJ
bmhlcml0ZWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhl
cml0ZWRFbnRyaWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVz
dWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKaW5kZXggYmMzZWZjNjAyMTZlMzQwNjI4MTYwYjZjNzRmNjE3ZjA4ZTQ3YzUy
ZC4uODNjNTQ1ZTRiZjczZWJjMDg5YmQ3YjlkMjQ2NzNmM2NhOTdjNWU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRleHRBc1Nj
cmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgQ2FudmFzUmVuZGVyaW5nQwogICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc29sdmVDYW52YXND
b250ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OnJlc29sdmVDYW52YXNDb250ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBjYW52YXNJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAg
ICBhdXRvKiBpbnNwZWN0b3JDYW52YXMgPSBhc3NlcnRJbnNwZWN0b3JDYW52YXMoZXJyb3JTdHJp
bmcsIGNhbnZhc0lkKTsKICAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKQEAgLTI2Miw3ICsyNjIs
NyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXNvbHZlQ2FudmFzQ29udGV4dChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQu
d3JhcE9iamVjdCh2YWx1ZSwgb2JqZWN0R3JvdXBOYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBjb25zdCBzaW5nbGVGcmFtZSwgY29uc3Qg
aW50KiBjb25zdCBtZW1vcnlMaW1pdCkKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0
UmVjb3JkaW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYW52YXNJ
ZCwgY29uc3QgYm9vbCogc2luZ2xlRnJhbWUsIGNvbnN0IGludCogbWVtb3J5TGltaXQpCiB7CiAg
ICAgYXV0byogaW5zcGVjdG9yQ2FudmFzID0gYXNzZXJ0SW5zcGVjdG9yQ2FudmFzKGVycm9yU3Ry
aW5nLCBjYW52YXNJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5k
ZXggZjVlMzIzMGU3ZWY4NGM4OGNiODZjOWI2NDg2YTNmN2U0ZmQzYzBlYi4uNzc1ZDJkNjMwYjlm
NWFmYTEwMThlZjBiMzY3MThlNjE2MzJiNjUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtNzIsOCArNzIs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY2FudmFzSWQsIGludCogbm9kZUlkKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RD
b250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgU3RyaW5nKiBjb250
ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RDU1NDYW52YXNDbGllbnROb2RlcyhFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPGlu
dD4+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNvbHZlQ2FudmFzQ29udGV4dChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3Jv
dXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFJlY29yZGluZyhFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY2FudmFzSWQsIGNvbnN0IGJvb2wqIGNvbnN0IHNpbmdsZUZyYW1lLCBjb25zdCBpbnQq
IGNvbnN0IG1lbW9yeUxpbWl0KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc29sdmVDYW52YXNDb250
ZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjYW52YXNJZCwgY29uc3QgYm9vbCogc2luZ2xlRnJhbWUsIGNvbnN0IGlu
dCogbWVtb3J5TGltaXQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVz
dFNoYWRlclNvdXJjZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkLCBjb25z
dCBTdHJpbmcmIHNoYWRlclR5cGUsIFN0cmluZyopIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRl
U2hhZGVyKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwcm9ncmFtSWQsIGNvbnN0IFN0cmlu
ZyYgc2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggMDNhOGMzY2Y3Yzg0MTMwNzkzNzg4MmNmOWY5OGJlMDYwMjQ5
MWMwZi4uOWU4YjcwYjJmYzhiZThmZDU5MWFkYTk2NzRkMmI1YzZkMmQ5ZDY5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00MywxNCArNDMsMTQgQEAKIG5hbWVzcGFjZSB7CiAKIGVu
dW0gRE9NQnJlYWtwb2ludFR5cGUgewotICAgIFN1YnRyZWVNb2RpZmllZCA9IDAsCisgICAgU3Vi
dHJlZU1vZGlmaWVkLAogICAgIEF0dHJpYnV0ZU1vZGlmaWVkLAogICAgIE5vZGVSZW1vdmVkLAog
ICAgIERPTUJyZWFrcG9pbnRUeXBlc0NvdW50CiB9OwogCi1zdGF0aWMgY29uc3QgY2hhciogY29u
c3QgbGlzdGVuZXJFdmVudENhdGVnb3J5VHlwZSA9ICJsaXN0ZW5lcjoiOwotc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGluc3RydW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBlID0gImluc3RydW1l
bnRhdGlvbjoiOworc3RhdGljIGNvbnN0IGNoYXIgbGlzdGVuZXJFdmVudENhdGVnb3J5VHlwZVtd
ID0gImxpc3RlbmVyOiI7CitzdGF0aWMgY29uc3QgY2hhciBpbnN0cnVtZW50YXRpb25FdmVudENh
dGVnb3J5VHlwZVtdID0gImluc3RydW1lbnRhdGlvbjoiOwogCiBjb25zdCB1aW50MzJfdCBpbmhl
cml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2sgPSAoMSA8PCBTdWJ0cmVlTW9kaWZpZWQpOwog
Y29uc3QgaW50IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0gMTY7CkBAIC0xMjIsMTIg
KzEyMiwxMiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2NhcmRCaW5kaW5n
cygpCiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsK
LSAgICBzZXRCcmVha3BvaW50KGVycm9yLCBTdHJpbmcobGlzdGVuZXJFdmVudENhdGVnb3J5VHlw
ZSkgKyBldmVudE5hbWUpOworICAgIHNldEJyZWFrcG9pbnQoZXJyb3IsIGxpc3RlbmVyRXZlbnRD
YXRlZ29yeVR5cGUgKyBldmVudE5hbWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldEluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBj
b25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBzZXRCcmVha3BvaW50KGVycm9yLCBTdHJp
bmcoaW5zdHJ1bWVudGF0aW9uRXZlbnRDYXRlZ29yeVR5cGUpICsgZXZlbnROYW1lKTsKKyAgICBz
ZXRCcmVha3BvaW50KGVycm9yLCBpbnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSArIGV2
ZW50TmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQpAQCAtMTQy
LDEyICsxNDIsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJgogCiB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5n
JiBlcnJvciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgcmVtb3ZlQnJlYWtwb2lu
dChlcnJvciwgU3RyaW5nKGxpc3RlbmVyRXZlbnRDYXRlZ29yeVR5cGUpICsgZXZlbnROYW1lKTsK
KyAgICByZW1vdmVCcmVha3BvaW50KGVycm9yLCBsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlICsg
ZXZlbnROYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVJ
bnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5n
JiBldmVudE5hbWUpCiB7Ci0gICAgcmVtb3ZlQnJlYWtwb2ludChlcnJvciwgU3RyaW5nKGluc3Ry
dW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBlKSArIGV2ZW50TmFtZSk7CisgICAgcmVtb3ZlQnJl
YWtwb2ludChlcnJvciwgaW5zdHJ1bWVudGF0aW9uRXZlbnRDYXRlZ29yeVR5cGUgKyBldmVudE5h
bWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKQEAgLTM3NSw3
ICszNzUsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVF
dmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29ucwogICAgICAgICBtX2RlYnVnZ2VyQWdl
bnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVudExpc3RlbmVyLCBXVEZNb3ZlKGV2ZW50RGF0YSkp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9u
YWxJc1JlZ2V4KQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVha3Bv
aW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SXNSZWdleCkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkgewogICAgICAgICBtX3BhdXNlT25B
bGxYSFJzRW5hYmxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGJmZTAxYmVl
YTgzN2ZmNmFkZDgxNzQ3ZjFkNzYzZDkzMTdiZDAxNWIuLjM5YWNmNWE5YzZhOGM4ZjM1ODk3MTIw
Y2ZhNWFjZjhmM2RiYmE4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC01NCwxNCArNTQs
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKTsK
IAogICAgIC8vIERPTURlYnVnZ2VyIEFQSQotICAgIHZvaWQgc2V0WEhSQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElz
UmVnZXgpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRJbnN0cnVt
ZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5
cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYs
IGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRY
SFJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wq
IG9wdGlvbmFsSXNSZWdleCkgZmluYWw7CisgICAgdm9pZCByZW1vdmVYSFJCcmVha3BvaW50KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIGZpbmFsOworICAgIHZvaWQgc2V0RXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBmaW5hbDsKKyAgICB2b2lkIHNldEluc3RydW1l
bnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIGZpbmFsOworICAgIHZvaWQgc2V0RE9NQnJl
YWtwb2ludChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgZmlu
YWw7CisgICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbgogICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KTsKQEAgLTc0
LDE0ICs3NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRl
ZChib29sIGlzRE9NRXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9u
b3VzKTsKICAgICB2b2lkIG1haW5GcmFtZURPTUNvbnRlbnRMb2FkZWQoKTsKIAotICAgIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlzY2FyZEFnZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXIqKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgZmluYWw7CisgICAgdm9p
ZCBkaXNjYXJkQWdlbnQoKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQg
ZGVidWdnZXJXYXNFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWJ1Z2dlcldhc0Rpc2Fi
bGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKSBmaW5hbDsKKyAg
ICB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGUoKTsK
IAogICAgIHZvaWQgZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVh
a3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEpTT046Ok9iamVjdCYgZGVzY3JpcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IGQ5ODBhNjg2Yjc3YjBlM2Q0YWVhMjQ1NjBhZmY5ZTM0NTZhZTczNTAu
LmZmMDEyNjBmY2U2ODU0NmJhZWFhOTYyYzVkY2Q1YTY1YWE5YWRjOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJv
clN0cmluZyYpCiAgICAgc2V0RW11bGF0ZWRNZWRpYSh1bnVzZWQsIGVtcHR5U3RyaW5nKCkpOwog
fQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3Qg
Ym9vbCogY29uc3Qgb3B0aW9uYWxSZWxvYWRGcm9tT3JpZ2luLCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbFJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogb3B0aW9uYWxSZWxvYWRGcm9tT3JpZ2lu
LCBjb25zdCBib29sKiBvcHRpb25hbFJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCiB7CiAgICAgYm9v
bCByZWxvYWRGcm9tT3JpZ2luID0gb3B0aW9uYWxSZWxvYWRGcm9tT3JpZ2luICYmICpvcHRpb25h
bFJlbG9hZEZyb21PcmlnaW47CiAgICAgYm9vbCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzID0gb3B0
aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzICYmICpvcHRpb25hbFJldmFsaWRhdGVBbGxSZXNv
dXJjZXM7CkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJl
c291cmNlQ29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICBy
ZXNvdXJjZUNvbnRlbnQoZXJyb3JTdHJpbmcsIGZyYW1lLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Uo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VT
ZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewogICAgIHJlc3VsdHMgPSBK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0
Y2g+OjpjcmVhdGUoKTsKIApAQCAtNTI0LDcgKzUyNCw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3Vs
dChjCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
Ym9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2Vh
cmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiYgcmVzdWx0KQogewogICAgIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGQy
MmUzOTViMmZkMjNjZThlNzQ1MmFmMTZjOGNmNWZmNmViNDAxZDQuLjhhZTEwYmI2OGVkNWNmZWU1
YzJiYzk4YjU5NjJlMmIxY2M2NDFjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtODgsMjMgKzg4LDIzIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBl
IGNhY2hlZFJlc291cmNlVHlwZUpTT04oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIC8v
IFBhZ2UgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAotICAgIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bFJlbG9hZEZyb21PcmlnaW4sIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmV2YWxpZGF0ZUFs
bFJlc291cmNlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJp
bmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29r
aWU+PiYgY29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2Rl
ZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxSZXF1ZXN0
SWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBl
czo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmlu
ZyYsIGJvb2wqIG91dF9wYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb21wb3NpdGluZ0Jv
cmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzbmFw
c2hvdE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG91dERhdGFVUkwpIG92
ZXJyaWRlOwotICAgIHZvaWQgc25hcHNob3RSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbSwg
U3RyaW5nKiBvdXREYXRhVVJMKSBvdmVycmlkZTsKLSAgICB2b2lkIGFyY2hpdmUoRXJyb3JTdHJp
bmcmLCBTdHJpbmcqIGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
JikgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgZmluYWw7CisgICAgdm9p
ZCByZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBvcHRpb25hbFJlbG9hZEZyb21Pcmln
aW4sIGNvbnN0IGJvb2wqIG9wdGlvbmFsUmV2YWxpZGF0ZUFsbFJlc291cmNlcykgZmluYWw7Cisg
ICAgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBmaW5hbDsK
KyAgICB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykgZmluYWw7CisgICAg
dm9pZCBkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUs
IGNvbnN0IFN0cmluZyYgdXJsKSBmaW5hbDsKKyAgICB2b2lkIGdldFJlc291cmNlVHJlZShFcnJv
clN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNl
VHJlZT4mKSBmaW5hbDsKKyAgICB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVu
dCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgZmluYWw7CisgICAgdm9pZCBzZWFyY2hJblJlc291cmNl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0
SWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBl
czo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOworICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25z
dCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2hvd1BhaW50UmVj
dHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpIGZpbmFsOworICAgIHZvaWQgc2V0RW11bGF0ZWRN
ZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZ2V0Q29t
cG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wqIG91dF9wYXJhbSkgZmlu
YWw7CisgICAgdm9pZCBzZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwg
Ym9vbCkgZmluYWw7CisgICAgdm9pZCBzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkLCBTdHJpbmcqIG91dERhdGFVUkwpIGZpbmFsOworICAgIHZvaWQgc25hcHNob3RSZWN0KEVy
cm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFN0
cmluZyYgY29vcmRpbmF0ZVN5c3RlbSwgU3RyaW5nKiBvdXREYXRhVVJMKSBmaW5hbDsKKyAgICB2
b2lkIGFyY2hpdmUoRXJyb3JTdHJpbmcmLCBTdHJpbmcqIGRhdGEpIGZpbmFsOwogCiAgICAgLy8g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCBkb21Db250ZW50RXZlbnRGaXJlZCgp
OwpAQCAtMTIzLDggKzEyMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5
bGUoKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRS
b3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgZmluYWw7CisgICAgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24p
IGZpbmFsOwogCiAgICAgLy8gQ3Jvc3MtYWdlbnRzIEFQSQogICAgIFBhZ2UmIHBhZ2UoKSB7IHJl
dHVybiBtX3BhZ2U7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333957</attachid>
            <date>2018-02-15 15:20:05 -0800</date>
            <delta_ts>2018-02-15 15:20:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180607-20180215152004.patch</filename>
            <type>text/plain</type>
            <size>186752</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWZmN2FmNGNjMzEwZThkZDU2N2Y2NThjZmE2YzZkYjk0MWRkMDYxLi45YWZlNDBmMzYyNDY2MDAw
MGYxNTcwMzI2YTA3Y2U5ZTAzMDkxYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGdldCByaWQgb2YgcmVtYWluaW5nIHVzZXMgb2YgT3B0
T3V0cHV0PFQ+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODA2MDcKKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICog
aW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHA6IFJlbW92ZWQgZXhwbGljaXQgSW5zcGVjdG9y
IHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUgdGhlIEluc3BlY3RvciBu
YW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvQXN5bmNTdGFja1RyYWNlLmg6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5jcHA6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2UgcmVtb3ZhbCBhbmQgLi4uCisg
ICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmdldFJlZ3VsYXJFeHBy
ZXNzaW9uTWF0Y2hlc0J5TGluZXMpOiBVc2UgYQorICAgICAgICBWZWN0b3IgaW5zdGVhZCBvZiBh
IHVuaXF1ZV9wdHI8VmVjdG9yPi4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0
aWxpdGllczo6bGluZUVuZGluZ3MpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVu
dFNlYXJjaFV0aWxpdGllczo6c3R5bGVzaGVldENvbW1lbnRQYXR0ZXJuKTogRGVsZXRlZC4KKyAg
ICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0aWxpdGllczo6ZmluZE1hZ2ljQ29tbWVu
dCk6IFVzZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YKKyAgICAgICAgYSBWZWN0b3IgZm9yIGEgZml4
ZWQgc2l6ZSBhcnJheTsgYWxzbyBnb3QgcmlkIG9mIHJlaW50ZXJwcmV0X2Nhc3QuCisgICAgICAg
IChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmZpbmRTdHlsZXNoZWV0U291cmNl
TWFwVVJMKTogTW92ZWQgdGhlIHJlZ3VsYXIKKyAgICAgICAgZXhwcmVzc2lvbiBoZXJlIHNpbmNl
IGl0J3MgdGhlIG9ubHkgcGxhY2UgaXQgd2FzIHVzZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxpdGllcy5oOiBDdXQgZG93biBvbiB1bm5lZWRlZCBpbmNsdWRlcy4K
KworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6IFJlbW92ZWQgZXhwbGlj
aXQgSW5zcGVjdG9yIHByZWZpeCBmcm9tIGNvZGUgdGhhdAorICAgICAgICBpcyBpbnNpZGUgdGhl
IEluc3BlY3RvciBuYW1lc3BhY2UgYWxyZWFkeS4gQWxzbyB1c2UgYXV0byBhIGJpdC4KKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg6IFJlbW92ZWQgT3B0T3V0
cHV0LiBTaW1wbGlmaWVkIGFzc2VydGlvbnMuCisgICAgICAgIFJlbW92ZWQgYmFzZSB0ZW1wbGF0
ZSBmb3IgQmluZGluZ1RyYWl0czsgd2Ugb25seSBuZWVkIHRoZSBzcGVjaWFsaXphdGlvbnMuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZCBleHBsaWNp
dCBJbnNwZWN0b3IgcHJlZml4IGZyb20gY29kZSB0aGF0CisgICAgICAgIGlzIGluc2lkZSB0aGUg
SW5zcGVjdG9yIG5hbWVzcGFjZSBhbHJlYWR5LiBBbHNvIHVzZSBhdXRvIGEgYml0LgorICAgICAg
ICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDogRGl0dG8uCisgICAgICAgICogaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaDogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5hbWVzcGFjZSBy
ZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6IFVzZSBzdGQ6Om9wdGlvbmFsJiBpbnRlYWQgb2YKKyAg
ICAgICAgT3B0T3V0cHV0KiBmb3Igb3V0IGFyZ3VtZW50cy4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6IE1vcmUgSW5zcGVjdG9yIG5hbWVz
cGFjZSByZW1vdmFsIGFuZCAuLi4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFn
ZW50OjpnZXRQcmV2aWV3KTogVXNlIHN0ZDo6b3B0aW9uYWwmIGludGVhZCBvZiBPcHRPdXRwdXQq
CisgICAgICAgIGZvciBvdXQgYXJndW1lbnRzLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOiBNb3JlIEluc3BlY3RvciBuYW1lc3BhY2UgcmVt
b3ZhbCBhbmQgLi4uCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
cGFyc2UpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW50ZWFkIG9mIE9wdE91dHB1dCoKKyAgICAgICAg
Zm9yIG91dCBhcmd1bWVudHMuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6ZXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVu
dGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6IERpdHRvLgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQpOiBEaXR0by4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOiBEaXR0by4KKworICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6IE1vcmUg
SW5zcGVjdG9yIG5hbWVzcGFjZSByZW1vdmFsCisgICAgICAgIGFuZCByZW1vdmVkIHNvbWUgYm9n
dXMgY29uc3QuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl91
bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcik6IFJlbW92ZWQgc29tZSBib2d1cyBjb25zdC4K
KyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfdHlwZV93aXRoX25hbWUpOiBEaXR0
by4KKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291dF9wYXJhbWV0
ZXIpOiBVc2Ugc3RkOjpvcHRpb25hbCYgaW5zdGVhZCBvZgorICAgICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQqLgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl9m
b3JtYWxfYXN5bmNfcGFyYW1ldGVyKTogRGl0dG8uCisgICAgICAgIChDcHBHZW5lcmF0b3IuY3Bw
X3R5cGVfZm9yX3N0YWNrX2luX3BhcmFtZXRlcik6IERpdHRvLgorICAgICAgICAoQ3BwR2VuZXJh
dG9yLmNwcF90eXBlX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKTogRGl0dG8uCisKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OiBS
ZW1vdmVkIEFTU0VSVF9ESVNBQkxFRAorICAgICAgICBjb25kaXRpb25hbCBhcm91bmQgYXNzZXJ0
aW9uIGNvZGUgd2hpY2ggd2lsbCBub3cgY29tcGlsZSB0byBub3RoaW5nIGlmIEFTU0VSVCBpcyBk
aXNhYmxlZC4KKyAgICAgICAgQnVpbGQgc3RyaW5ncyBtb3JlIHNpbXBseSBpbiBhIGZldyBjYXNl
cy4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENwcEJhY2tlbmRE
aXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2FzeW5jX2Rpc3BhdGNo
ZXJfY2xhc3NfZm9yX2RvbWFpbik6CisgICAgICAgIFVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiBp
c0Fzc2lnbmVkIGFuZCAqIG9wZXJhdG9yIGluc3RlYWQgb2YgZ2V0VmFsdWUoKSBzaW5jZSBzdGQ6
Om9wdGlvbmFsCisgICAgICAgIHJlcGxhY2UgT3B0T3V0cHV0IGhlcmUuCisgICAgICAgIChDcHBC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgUGFzcyBieSByZWZlcmVu
Y2UgaW5zdGVhZCBvZiBwb2ludGVyIG5vdy4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weToKKyAgICAgICAg
UmVtb3ZlZCBBU1NFUlRfRElTQUJMRUQgY29uZGl0aW9uYWwgYXJvdW5kIGFzc2VydGlvbiBjb2Rl
IHdoaWNoIHdpbGwgbm93IGNvbXBpbGUgdG8gbm90aGluZworICAgICAgICBpZiBBU1NFUlQgaXMg
ZGlzYWJsZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENwcFByb3Rv
Y29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9v
YmplY3RfZGVjbGFyYXRpb24pOiBHZW5lcmF0ZQorICAgICAgICB0aGUgYXNzZXJ0aW9uIGZ1bmN0
aW9uIHVuY29uZGl0aW9uYWxseSwgYnV0IGxlYXZlIG91dCB0aGUgYXNzZXJ0aW9ucyBpZiBBU1NF
UlRfRElTQUJMRUQgaXMgdHJ1ZS4KKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvcik6IFVzZSBhdXRvIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgSlNPTjo6T2Jq
ZWN0OjppdGVyYXRvci4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAg
IChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVf
Y29udmVyc2lvbnNfZm9yX2NvbW1hbmQpOiBCdWlsZCBzdHJpbmdzCisgICAgICAgIG1vcmUgc2lt
cGx5LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVz
dWx0OgorICAgICAgICBSZWJhc2VsaW5lZC4KKwogMjAxOC0wMi0xNSAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lIGFuZCBjdXJyZW50VGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhmMDU4ZGEx
NTBiNDg4NjRmNzQyMGI1YmNhZmQ4MGYyOGM3MzEwZjIuLjkxYTU4Y2JlNDlkMGJmMDg2OTNiZGU0
MDU1ZWUyMDUzNzIzNjU0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0wMi0x
NSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZ2V0IHJpZCBvZiByZW1haW5pbmcgdXNlcyBvZiBPcHRPdXRwdXQ8VD4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDYwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNvdXJjZVJhbmdlT2JqZWN0KTog
VGFrZSBhIGNvbnN0IFZlY3RvciYgaW5zdGVhZCBvZiBhIFZlY3RvciouCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSBjb25zdCk6IFBhc3MgbGlu
ZUVuZGluZ3MoKSBpbnN0ZWFkCisgICAgICAgIG9mIGxpbmVFbmRpbmdzKCkuZ2V0KCkuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmpl
Y3RGb3JTZWxlY3Rvckxpc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0
eWxlU2hlZXQ6OmxpbmVFbmRpbmdzIGNvbnN0KTogUmV0dXJuIGEgVmVjdG9yIGluc3RlYWQgb2YK
KyAgICAgICAgYSBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPi4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6bGluZUVuZGluZ3MgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOiBVcGRhdGVkIGZv
ciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50Lmg6IFJlbW92ZWQgc29tZSBib2d1cyBjb25zdC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOiBEaXR0by4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6IEltcHJvdmVkIHR5cGUg
b2YgZ2xvYmFsIHN0cmluZ3MKKyAgICAgICAgc28gd2UgZG9uJ3Qgd2FzdGUgc3BhY2Ugd2l0aCBh
IHBvaW50ZXIgdG8gdGhlIHN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KTogUmVtb3ZlZAorICAgICAg
ICBleHBsaWNpdCBjcmVhdGlvbiBvZiBTdHJpbmcsIHdoaWNoIHdhcyB3YXN0ZWZ1bCBhbmQgdW5u
ZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpz
ZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVt
b3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludCk6IFJlbW92ZWQgYm9n
dXMgY29uc3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaDogUmVtb3ZlZCBib2d1cyBjb25zdCBhbmQgdXNlCisgICAgICAgIGZpbmFsIGlu
c3RlYWQgb2Ygb3ZlcnJpZGUuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oOiBEaXR0by4KKwogMjAxOC0wMi0xNSAgVGltb3RoeSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcAppbmRl
eCA5ZTY4YjQ5ZDk4YmQ5YWExZjM1ZTNmMTQ3ODE0NzM4MDJmYzM3MzgxLi4zMTRiODdjNjg3Yjgw
ZWRhODRhNjZjODdhNmE1YThiMTlkMDIxNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiQXN5bmNTdGFja1RyYWNlLmgiCiAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC05
NiwxNyArOTcsMTcgQEAgdm9pZCBBc3luY1N0YWNrVHJhY2U6OmRpZENhbmNlbEFzeW5jQ2FsbCgp
CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDYW5jZWxlZDsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6YnVpbGRJbnNw
ZWN0b3JPYmplY3QoKSBjb25zdAorUmVmUHRyPFByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNl
PiBBc3luY1N0YWNrVHJhY2U6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKIHsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gdG9wU3RhY2tU
cmFjZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFj
ZT4gcHJldmlvdXNTdGFja1RyYWNlOworICAgIFJlZlB0cjxQcm90b2NvbDo6Q29uc29sZTo6U3Rh
Y2tUcmFjZT4gdG9wU3RhY2tUcmFjZTsKKyAgICBSZWZQdHI8UHJvdG9jb2w6OkNvbnNvbGU6OlN0
YWNrVHJhY2U+IHByZXZpb3VzU3RhY2tUcmFjZTsKIAogICAgIGF1dG8qIHN0YWNrVHJhY2UgPSB0
aGlzOwogICAgIHdoaWxlIChzdGFja1RyYWNlKSB7CiAgICAgICAgIGF1dG8mIGNhbGxTdGFjayA9
IHN0YWNrVHJhY2UtPm1fY2FsbFN0YWNrOwogICAgICAgICBBU1NFUlQoY2FsbFN0YWNrLT5zaXpl
KCkpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpTdGFj
a1RyYWNlPiBwcm90b2NvbE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OlN0
YWNrVHJhY2U6OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gcHJvdG9jb2xPYmplY3QgPSBQcm90b2Nv
bDo6Q29uc29sZTo6U3RhY2tUcmFjZTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRDYWxsRnJh
bWVzKGNhbGxTdGFjay0+YnVpbGRJbnNwZWN0b3JBcnJheSgpKQogICAgICAgICAgICAgLnJlbGVh
c2UoKTsKIApAQCAtMTE2LDEyICsxMTcsMTIgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OlN0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6YnVpbGRJbnNwZWN0b3IKICAg
ICAgICAgICAgIHByb3RvY29sT2JqZWN0LT5zZXRUb3BDYWxsRnJhbWVJc0JvdW5kYXJ5KHRydWUp
OwogCiAgICAgICAgIGlmICghdG9wU3RhY2tUcmFjZSkKLSAgICAgICAgICAgIHRvcFN0YWNrVHJh
Y2UgPSBwcm90b2NvbE9iamVjdDsKKyAgICAgICAgICAgIHRvcFN0YWNrVHJhY2UgPSBwcm90b2Nv
bE9iamVjdC5wdHIoKTsKIAogICAgICAgICBpZiAocHJldmlvdXNTdGFja1RyYWNlKQotICAgICAg
ICAgICAgcHJldmlvdXNTdGFja1RyYWNlLT5zZXRQYXJlbnRTdGFja1RyYWNlKHByb3RvY29sT2Jq
ZWN0KTsKKyAgICAgICAgICAgIHByZXZpb3VzU3RhY2tUcmFjZS0+c2V0UGFyZW50U3RhY2tUcmFj
ZShwcm90b2NvbE9iamVjdC5wdHIoKSk7CiAKLSAgICAgICAgcHJldmlvdXNTdGFja1RyYWNlID0g
cHJvdG9jb2xPYmplY3Q7CisgICAgICAgIHByZXZpb3VzU3RhY2tUcmFjZSA9IFdURk1vdmUocHJv
dG9jb2xPYmplY3QpOwogICAgICAgICBzdGFja1RyYWNlID0gc3RhY2tUcmFjZS0+bV9wYXJlbnQu
Z2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0FzeW5jU3RhY2tUcmFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9B
c3luY1N0YWNrVHJhY2UuaAppbmRleCBhNjE4ZmU3YWZmMWY2ZDUxMGFhNDUwYzMzMGI3YTE4MGUz
MGZiYWVmLi4xYzNjY2Y0ODM3YWIxNTcyMTBjMDNmYzgzZmJkZDdjNzk3ODUxOTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsK
ICAgICB2b2lkIGRpZENhbmNlbEFzeW5jQ2FsbCgpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OlN0YWNrVHJhY2U+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29u
c3Q7CisgICAgUmVmUHRyPFByb3RvY29sOjpDb25zb2xlOjpTdGFja1RyYWNlPiBidWlsZEluc3Bl
Y3Rvck9iamVjdCgpIGNvbnN0OwogCiAgICAgfkFzeW5jU3RhY2tUcmFjZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4
IDRjMTc1MTU2OTNiNDQ1OTFiN2Q2Y2IyMzkxOGQ0MjI3MTU4YWUzZGEuLjVjZmIwNGRmNGFmODM0
ODE5YmY4Zjc4ZmIxZDhlNjE3NzM4Y2FlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0xNTQsNjEgKzE1NCw2MSBAQCB2
b2lkIENvbnNvbGVNZXNzYWdlOjphdXRvZ2VuZXJhdGVNZXRhZGF0YShKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpCiAgICAgfQogfQogCi1zdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2hhbm5lbFNvdXJjZSBtZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJjZSBzb3VyY2UpCitz
dGF0aWMgUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2UgbWVzc2FnZVNvdXJjZVZhbHVl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgY2Fz
ZSBNZXNzYWdlU291cmNlOjpYTUw6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xl
OjpDaGFubmVsU291cmNlOjpYTUw7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpKUzogcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OkphdmFzY3JpcHQ7
Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpOZXR3b3JrOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6TmV0d29yazsKLSAgICBjYXNlIE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEk6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
aGFubmVsU291cmNlOjpDb25zb2xlQVBJOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U3RvcmFn
ZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OlN0
b3JhZ2U7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpBcHBDYWNoZTogcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OkFwcGNhY2hlOwotICAgIGNhc2Ug
TWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q2hhbm5lbFNvdXJjZTo6UmVuZGVyaW5nOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6
Q1NTOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6
Q1NTOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHk6IHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpTZWN1cml0eTsKLSAgICBjYXNlIE1l
c3NhZ2VTb3VyY2U6OkNvbnRlbnRCbG9ja2VyOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6Q29udGVudEJsb2NrZXI7Ci0gICAgY2FzZSBNZXNzYWdl
U291cmNlOjpPdGhlcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5u
ZWxTb3VyY2U6Ok90aGVyOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWE6IHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpNZWRpYTsKLSAgICBj
YXNlIE1lc3NhZ2VTb3VyY2U6OldlYlJUQzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OkNoYW5uZWxTb3VyY2U6OldlYlJUQzsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlhN
TDogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpYTUw7CisgICAgY2Fz
ZSBNZXNzYWdlU291cmNlOjpKUzogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291
cmNlOjpKYXZhc2NyaXB0OworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TmV0d29yazogcmV0dXJu
IFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpOZXR3b3JrOworICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
U291cmNlOjpDb25zb2xlQVBJOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U3RvcmFnZTogcmV0
dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpTdG9yYWdlOworICAgIGNhc2Ug
TWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGU6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bFNvdXJjZTo6QXBwY2FjaGU7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpSZW5kZXJpbmc6IHJl
dHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6UmVuZGVyaW5nOworICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6Q1NTOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxT
b3VyY2U6OkNTUzsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5OiByZXR1cm4gUHJv
dG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OlNlY3VyaXR5OworICAgIGNhc2UgTWVzc2Fn
ZVNvdXJjZTo6Q29udGVudEJsb2NrZXI6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bFNvdXJjZTo6Q29udGVudEJsb2NrZXI7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjog
cmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpPdGhlcjsKKyAgICBjYXNl
IE1lc3NhZ2VTb3VyY2U6Ok1lZGlhOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxT
b3VyY2U6Ok1lZGlhOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6V2ViUlRDOiByZXR1cm4gUHJv
dG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6OldlYlJUQzsKICAgICB9Ci0gICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6Ok90aGVyOworICAg
IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6T3RoZXI7CiB9CiAKLXN0
YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZSBt
ZXNzYWdlVHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5cGUpCitzdGF0aWMgUHJvdG9jb2w6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlIG1lc3NhZ2VUeXBlVmFsdWUoTWVzc2FnZVR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpMb2c6IHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
TG9nOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkNsZWFyOwotICAgIGNhc2UgTWVz
c2FnZVR5cGU6OkRpcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpUeXBlOjpEaXI7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6RGlyWE1MOiByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRp
clhNTDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUYWJsZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUYWJsZTsKLSAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpUcmFjZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdy
b3VwOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OlN0YXJ0R3JvdXA7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRHcm91cENvbGxh
cHNlZDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVuZEdy
b3VwOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OkVuZEdyb3VwOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkFzc2VydDogcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpBc3NlcnQ7
Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6VGltaW5nOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRpbWluZzsKLSAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpQcm9maWxlOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6UHJvZmls
ZUVuZDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpQcm9maWxlRW5kOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkxvZzogcmV0dXJuIFBy
b3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOworICAgIGNhc2UgTWVz
c2FnZVR5cGU6OkNsZWFyOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpDbGVhcjsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEaXI6IHJldHVybiBQcm90b2Nv
bDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRpcjsKKyAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpEaXJYTUw6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OkRpclhNTDsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUYWJsZTogcmV0dXJuIFByb3RvY29s
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6VHJhY2U6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OlRyYWNlOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXA6IHJldHVybiBQcm90
b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDogcmV0dXJuIFByb3RvY29sOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDsKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpFbmRHcm91cDogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6VHlwZTo6RW5kR3JvdXA7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6QXNzZXJ0OiBy
ZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpBc3NlcnQ7Cisg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6VGltaW5nOiByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1pbmc7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6UHJvZmls
ZTogcmV0dXJuIFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmls
ZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kOiByZXR1cm4gUHJvdG9jb2w6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlRW5kOwogICAgIH0KLSAgICByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6Okxv
ZzsKKyAgICByZXR1cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpM
b2c7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6TGV2ZWwgbWVzc2FnZUxldmVsVmFsdWUoTWVzc2FnZUxldmVsIGxldmVsKQorc3RhdGlj
IFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWwgbWVzc2FnZUxldmVsVmFs
dWUoTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIHN3aXRjaCAobGV2ZWwpIHsKLSAgICBjYXNl
IE1lc3NhZ2VMZXZlbDo6TG9nOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkluZm86
IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2
ZWw6OkluZm87Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6Oldhcm5pbmc6IHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Oldhcm5pbmc7Ci0g
ICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkVycm9yOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKLSAgICBjYXNlIE1lc3NhZ2VM
ZXZlbDo6RGVidWc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6TGV2ZWw6OkRlYnVnOworICAgIGNhc2UgTWVzc2FnZUxldmVsOjpMb2c6IHJldHVy
biBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CisgICAgY2Fz
ZSBNZXNzYWdlTGV2ZWw6OkluZm86IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OkxldmVsOjpJbmZvOworICAgIGNhc2UgTWVzc2FnZUxldmVsOjpXYXJuaW5nOiByZXR1
cm4gUHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6V2FybmluZzsKKyAg
ICBjYXNlIE1lc3NhZ2VMZXZlbDo6RXJyb3I6IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6RGVidWc6
IHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpEZWJ1ZzsK
ICAgICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpMZXZlbDo6TG9nOworICAgIHJldHVybiBQcm90b2NvbDo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciYgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hl
ciwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3KQogewotICAgIGF1dG8gbWVzc2FnZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVhdGUoKQorICAgIGF1dG8gbWVzc2Fn
ZU9iamVjdCA9IFByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQogICAgICAgICAu
c2V0TGV2ZWwobWVzc2FnZUxldmVsVmFsdWUobV9sZXZlbCkpCiAgICAgICAgIC5zZXRUZXh0KG1f
bWVzc2FnZSkKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zy
b250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAg
IGlmICgobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgfHwgbV9q
c29uTG9nVmFsdWVzLnNpemUoKSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0
ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gYXJndW1lbnRzT2JqZWN0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1
dG8gYXJndW1lbnRzT2JqZWN0ID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9h
cmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX3R5cGUg
PT0gTWVzc2FnZVR5cGU6OlRhYmxlICYmIGdlbmVyYXRlUHJldmlldyAmJiBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGFibGUgPSBtX2Fy
Z3VtZW50cy0+YXJndW1lbnRBdCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCmluZGV4IGY5MWIyMTAx
YTE5NjZkNWJjNjllZmE1NGFmMGNlNzEwNTUwNTYxMGYuLmFhYTgxZTI4NjJlMTY1OThlMzI1ZDY0
OGNiZTZjYWJjNjIwMjBkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6Ollh
cnI7CiAKQEAgLTc5LDEyICs4MCwxMiBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3Qs
IFN0cmluZz4+IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMoY29ucwogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gZW5kaW5ncyhsaW5lRW5kaW5ncyh0ZXh0KSk7Ci0gICAg
c2l6ZV90IHNpemUgPSBlbmRpbmdzLT5zaXplKCk7CisgICAgYXV0byBlbmRpbmdzID0gbGluZUVu
ZGluZ3ModGV4dCk7CisgICAgc2l6ZV90IHNpemUgPSBlbmRpbmdzLnNpemUoKTsKICAgICBzaXpl
X3Qgc3RhcnQgPSAwOwogCiAgICAgZm9yIChzaXplX3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1i
ZXIgPCBzaXplOyArK2xpbmVOdW1iZXIpIHsKLSAgICAgICAgc2l6ZV90IG5leHRTdGFydCA9IGVu
ZGluZ3MtPmF0KGxpbmVOdW1iZXIpOworICAgICAgICBzaXplX3QgbmV4dFN0YXJ0ID0gZW5kaW5n
c1tsaW5lTnVtYmVyXTsKICAgICAgICAgU3RyaW5nIGxpbmUgPSB0ZXh0LnN1YnN0cmluZyhzdGFy
dCwgbmV4dFN0YXJ0IC0gc3RhcnQpOwogCiAgICAgICAgIGludCBtYXRjaExlbmd0aDsKQEAgLTk3
LDMxICs5OCwzMSBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIFN0cmluZz4+IGdl
dFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMoY29ucwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3Qg
U3RyaW5nJiB0ZXh0KQorVmVjdG9yPHNpemVfdD4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJiB0
ZXh0KQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c2l6ZV90
Pj4oKTsKKyAgICBWZWN0b3I8c2l6ZV90PiByZXN1bHQ7CiAKICAgICBzaXplX3Qgc3RhcnQgPSAw
OwogICAgIHdoaWxlIChzdGFydCA8IHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgc2l6ZV90IG5l
eHRTdGFydCA9IHRleHQuZmluZCgnXG4nLCBzdGFydCk7CiAgICAgICAgIGlmIChuZXh0U3RhcnQg
PT0gbm90Rm91bmQgfHwgbmV4dFN0YXJ0ID09ICh0ZXh0Lmxlbmd0aCgpIC0gMSkpIHsKLSAgICAg
ICAgICAgIHJlc3VsdC0+YXBwZW5kKHRleHQubGVuZ3RoKCkpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh0ZXh0Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
ICAgICAgICAgbmV4dFN0YXJ0ICs9IDE7Ci0gICAgICAgIHJlc3VsdC0+YXBwZW5kKG5leHRTdGFy
dCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobmV4dFN0YXJ0KTsKICAgICAgICAgc3RhcnQgPSBu
ZXh0U3RhcnQ7CiAgICAgfQogCi0gICAgcmVzdWx0LT5hcHBlbmQodGV4dC5sZW5ndGgoKSk7Cisg
ICAgcmVzdWx0LmFwcGVuZCh0ZXh0Lmxlbmd0aCgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChzaXplX3QgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBsaW5lQ29udGVudCkKK3N0YXRpYyBSZWY8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6
U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goc2l6ZV90IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQpCiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g6OmNyZWF0ZSgpCisgICAgcmV0dXJuIFBy
b3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoOjpjcmVhdGUoKQogICAgICAgICAuc2V0
TGluZU51bWJlcihsaW5lTnVtYmVyKQogICAgICAgICAuc2V0TGluZUNvbnRlbnQobGluZUNvbnRl
bnQpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xNTEsMjcgKzE1MiwxNSBAQCBpbnQgY291bnRS
ZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgUmVndWxhckV4cHJlc3Npb24mIHJlZ2V4LCBj
b25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaElu
VGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKK1JlZjxKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlM
aW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wg
Y2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQogewotICAgIGF1dG8gcmVzdWx0ID0g
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1h
dGNoPjo6Y3JlYXRlKCk7Ci0KLSAgICBSZWd1bGFyRXhwcmVzc2lvbiByZWdleCA9IENvbnRlbnRT
ZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBp
c1JlZ2V4KTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwgU3RyaW5nPj4gbWF0Y2hlcyA9
IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMocmVnZXgsIHRleHQpOwotCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBtYXRjaCA6IG1hdGNoZXMpIHsKLSAgICAgICAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IG1hdGNoT2JqZWN0ID0gYnVp
bGRPYmplY3RGb3JTZWFyY2hNYXRjaChtYXRjaC5maXJzdCwgbWF0Y2guc2Vjb25kKTsKLSAgICAg
ICAgcmVzdWx0LT5hZGRJdGVtKFdURk1vdmUobWF0Y2hPYmplY3QpKTsKLSAgICB9Ci0KKyAgICBh
dXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlZ2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGll
czo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOworICAg
IGZvciAoY29uc3QgYXV0byYgbWF0Y2ggOiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxp
bmVzKHJlZ2V4LCB0ZXh0KSkKKyAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
U2VhcmNoTWF0Y2gobWF0Y2guZmlyc3QsIG1hdGNoLnNlY29uZCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc3R5bGVzaGVldENvbW1lbnRQYXR0ZXJuKGNvbnN0IFN0
cmluZyYgbmFtZSkKLXsKLSAgICAvLyAiLyojIDxuYW1lPj08dmFsdWU+ICovIiBhbmQgZGVwcmVj
YXRlZCAiLypAIgotICAgIHJldHVybiAiL1xcKlsjQF1bXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0
MFx0XSooW15cXHNcJ1wiXSopW1wwNDBcdF0qXFwqLyI7Ci19Ci0KIHN0YXRpYyBTdHJpbmcgZmlu
ZE1hZ2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGF0dGVy
blN0cmluZykKIHsKICAgICBpZiAoY29udGVudC5pc0VtcHR5KCkpCkBAIC0xODUsOSArMTc0LDgg
QEAgc3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVudCwg
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW4KICAgICBBU1NFUlQoYnl0ZWNvZGVQYXR0ZXJuKTsK
IAogICAgIEFTU0VSVChwYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgPT0gMSk7Ci0gICAgVmVjdG9y
PGludCwgND4gbWF0Y2hlczsKLSAgICBtYXRjaGVzLmdyb3coNCk7Ci0gICAgdW5zaWduZWQgcmVz
dWx0ID0gaW50ZXJwcmV0KGJ5dGVjb2RlUGF0dGVybi5nZXQoKSwgY29udGVudCwgMCwgcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCo+KG1hdGNoZXMuZGF0YSgpKSk7CisgICAgc3RkOjphcnJheTx1
bnNpZ25lZCwgND4gbWF0Y2hlczsKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBpbnRlcnByZXQoYnl0
ZWNvZGVQYXR0ZXJuLmdldCgpLCBjb250ZW50LCAwLCBtYXRjaGVzLmRhdGEoKSk7CiAgICAgaWYg
KHJlc3VsdCA9PSBvZmZzZXROb01hdGNoKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAg
LTE5Nyw3ICsxODUsOCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbgogCiBTdHJpbmcgZmluZFN0
eWxlc2hlZXRTb3VyY2VNYXBVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KQogewotICAgIHJldHVy
biBmaW5kTWFnaWNDb21tZW50KGNvbnRlbnQsIHN0eWxlc2hlZXRDb21tZW50UGF0dGVybihBU0NJ
SUxpdGVyYWwoInNvdXJjZU1hcHBpbmdVUkwiKSkpOworICAgIC8vICIvKiMgPG5hbWU+PTx2YWx1
ZT4gKi8iIGFuZCBkZXByZWNhdGVkICIvKkAiCisgICAgcmV0dXJuIGZpbmRNYWdpY0NvbW1lbnQo
Y29udGVudCwgQVNDSUlMaXRlcmFsIHsgIi9cXCpbI0BdW1wwNDBcdF1zb3VyY2VNYXBwaW5nVVJM
PVtcMDQwXHRdKihbXlxcc1wnXCJdKilbXDA0MFx0XSpcXCovIiB9KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgQ29udGVudFNlYXJjaFV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaAppbmRleCA1NWIxOTFl
YTIzODljYzFmOWZmYTc4Y2ZhY2QyMmMxYmMxY2UwNTgxLi5kMmVhOGVlMGVlY2Y1NzIzYjM0NjQw
ZWE5ZDJhZjNhN2JhMTJiNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaApAQCAtMjksOSArMjksNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCIKLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIGNsYXNzIFJlZ3VsYXJFeHBy
ZXNzaW9uOwpAQCAtNDMsOSArNDEsOSBAQCBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxpdGll
cyB7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gY3Jl
YXRlU2VhcmNoUmVnZXgoY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBi
b29sIGlzUmVnZXgpOwogSlNfRVhQT1JUX1BSSVZBVEUgaW50IGNvdW50UmVndWxhckV4cHJlc3Np
b25NYXRjaGVzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBjb25zdCBTdHJp
bmcmKTsKLUpTX0VYUE9SVF9QUklWQVRFIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRl
eHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOwogSlNfRVhQT1JUX1BSSVZB
VEUgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZyb21PZmZzZXQoc2l6ZV90IG9mZnNldCwgY29u
c3QgVmVjdG9yPHNpemVfdD4mIGxpbmVFbmRpbmdzKTsKLUpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJik7CitK
U19FWFBPUlRfUFJJVkFURSBWZWN0b3I8c2l6ZV90PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcm
KTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbmRTdHlsZXNoZWV0U291cmNlTWFwVVJM
KGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggM2VmYzNmZGE1MWMxY2YzMTU0ZGM1
ZDY5NzgzZTlkMjRmZTk5NGNkYi4uZmE4MjhkMDA1YTgzZmEyNjA5MjQ1ODE1ODA2NTI5MDk1NjUy
ODM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5qZWN0ZWRTY3JpcHQ6On5JbmplY3RlZFNj
cmlwdCgpCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVl
LCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBib29sJiB3YXNUaHJv
d24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBz
YXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgYm9vbCYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgp
CiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZXZhbHVhdGUiKSwgaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChleHByZXNzaW9uKTsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6
ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24KICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Ro
cm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxG
dW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9v
bCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgYm9vbCYgd2FzVGhyb3du
KQordm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgYm9vbCYgd2FzVGhyb3duKQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImNhbGxGdW5j
dGlvbk9uIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtNzksNyArNzksNyBA
QCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZQogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywg
ZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duLCB1bnVzZWQpOwogfQogCi12b2lkIEluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlND
OjpKU1ZhbHVlIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcs
IGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCwgYm9vbCYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4m
IHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRy
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIGJvb2wmIHdhc1Rocm93
biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewogICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBB
U0NJSUxpdGVyYWwoImV2YWx1YXRlT25DYWxsRnJhbWUiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChj
YWxsRnJhbWVzKTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVh
dGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlNWYWx1ZQogICAg
IG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duLCBz
YXZlZFJlc3VsdEluZGV4KTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25E
ZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4m
IHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgcmVzdWx0KQogewogICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBB
U0NJSUxpdGVyYWwoImdldEZ1bmN0aW9uRGV0YWlscyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgp
LT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1
bmN0aW9uSWQpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1
bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KFdU
Rk1vdmUocmVzdWx0VmFsdWUpKTsKKyAgICByZXN1bHQgPSBCaW5kaW5nVHJhaXRzPFByb3RvY29s
OjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHRW
YWx1ZSkpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpmdW5jdGlvbkRldGFpbHMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFJlZlB0cjxQcm90b2NvbDo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIHJlc3VsdCkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpmdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBKU0M6OkpTVmFsdWUgdmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVz
dWx0ID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rp
b25EZXRhaWxzPjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHRWYWx1ZSkpOworICAgIHJlc3Vs
dCA9IEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Ojpy
dW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiByZXN1bHQp
CkBAIC0xMzUsMTAgKzEzNSwxMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcmV2aWV3KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1
bHRWYWx1ZSkpOworICAgIHJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6
Ok9iamVjdFByZXZpZXc+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4mIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0UHJvcGVydGll
cyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTE1MSwxMCArMTUxLDEwIEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBw
cm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJl
c3VsdCkpOworICAgIHByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBi
b29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3BlcnRpZXMpCit2b2lkIElu
amVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVm
UHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+
JiBwcm9wZXJ0aWVzKQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImdldERpc3BsYXlhYmxl
UHJvcGVydGllcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVy
KCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTE2NiwxMCAr
MTY2LDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChX
VEZNb3ZlKHJlc3VsdCkpOworICAgIHByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2Fz
dChXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRJbnRlcm5h
bFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVy
dGllcykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQ
cmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRl
cmFsKCJnZXRJbnRlcm5hbFByb3BlcnRpZXMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJ
ZCk7CkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYXJyYXkgPSBCaW5kaW5nVHJhaXRzPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBhdXRvIGFycmF5ID0g
QmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFBy
b3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOwogICAgIHBy
b3BlcnRpZXMgPSBhcnJheS0+bGVuZ3RoKCkgPiAwID8gYXJyYXkgOiBudWxscHRyOwogfQogCkBA
IC0yMTgsNyArMjE4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6c2F2ZVJlc3VsdChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEFyZ3UKICAgICAgICAgc2F2ZWRS
ZXN1bHRJbmRleCA9IHJlc3VsdEluZGV4OwogfQogCi1SZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBD
YWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzKSBjb25zdAorUmVmPEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENh
bGxGcmFtZXMoSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFo
YXNOb1ZhbHVlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoIndyYXBDYWxsRnJhbWVzIiks
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0yMjcs
MTYgKzIyNywxNiBAQCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYQogICAgIGJvb2wgaGFkRXhjZXB0
aW9uID0gZmFsc2U7CiAgICAgYXV0byBjYWxsRnJhbWVzVmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKCFjYWxsRnJhbWVz
VmFsdWUpCi0gICAgICAgIHJldHVybiBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBBU1NF
UlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQgPSB0b0lu
c3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCBjYWxsRnJhbWVzVmFsdWUpOwogICAgIGlmIChy
ZXN1bHQtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6QXJyYXkpCi0gICAgICAgIHJldHVy
biBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkNhbGxGcmFtZT4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKS5y
ZWxlYXNlTm9uTnVsbCgpOwogCi0gICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgIHJldHVybiBKU09O
OjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiB9CiAK
LVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVj
dGVkU2NyaXB0Ojp3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBn
cm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAorUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
KSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFT
Q0lJTGl0ZXJhbCgid3JhcE9iamVjdCIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlv
bkNhbGxIYW5kbGVyKCkpOwpAQCAtMjU0LDcgKzI1NCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0
KEpTCiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3Rh
dGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0
U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAotICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJl
c3VsdE9iamVjdCk7CisgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CiB9CiAKIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcEpTT05T
dHJpbmcoY29uc3QgU3RyaW5nJiBqc29uLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBn
ZW5lcmF0ZVByZXZpZXcpIGNvbnN0CkBAIC0yNzcsMTAgKzI3NywxMCBAQCBSZWZQdHI8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBKU09OU3RyaW5n
KGNvbnN0IFN0cgogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNj
cmlwdFN0YXRlKCksIGV2YWxSZXN1bHQpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwogICAgIEFT
U0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKLSAgICByZXR1cm4g
QmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOworICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3Qp
OwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKEpTQzo6SlNWYWx1ZSB0YWJsZSwgSlNDOjpKU1Zh
bHVlIGNvbHVtbnMpIGNvbnN0CitSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShKU0M6OkpTVmFsdWUgdGFibGUsIEpTQzo6SlNW
YWx1ZSBjb2x1bW5zKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgid3JhcFRhYmxlIiksIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0zMDAsMTAgKzMwMCwxMCBAQCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlw
dDo6d3JhcFRhYmxlKEpTQwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFs
dWUoKnNjcmlwdFN0YXRlKCksIHIpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwogICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKLSAgICByZXR1cm4gQmlu
ZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+Ojpy
dW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOworICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOwog
fQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4g
SW5qZWN0ZWRTY3JpcHQ6OnByZXZpZXdWYWx1ZShKU0M6OkpTVmFsdWUgdmFsdWUpIGNvbnN0CitS
ZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0Ojpw
cmV2aWV3VmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSBjb25zdAogewogICAgIEFTU0VSVCghaGFz
Tm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgicHJldmlld1ZhbHVlIiks
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0zMTgs
NyArMzE4LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFBy
ZXZpZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUKICAgICBib29sIGNhc3RTdWNjZWVk
ZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCByKS0+YXNPYmplY3QocmVzdWx0
T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQp
OwogCi0gICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6T2JqZWN0UHJldmlldz46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CisgICAgcmV0dXJu
IEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+OjpydW50aW1l
Q2FzdChyZXN1bHRPYmplY3QpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpzZXRFeGNlcHRp
b25WYWx1ZShKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCmluZGV4IDA3NjU3M2Vh
NWJkNzMzYjQyMmQ5ZTY4YWY5M2ZmN2QwMmFkOTJlMmIuLjViMTU2NWJkYjY4NTA1YjM4ODMwMjYz
ZjNjOTEyNTliZDhlMTJhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCkBAIC0zMywxMDQgKzMzLDU3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgUHJvdG9jb2wgewogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQmluZGluZ1RyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgQmluZGluZ1RyYWl0czsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIE9wdE91
dHB1dCB7Ci1wdWJsaWM6Ci0gICAgT3B0T3V0cHV0KCkgOiBtX2Fzc2lnbmVkKGZhbHNlKSB7IH0K
LQotICAgIHZvaWQgb3BlcmF0b3I9KFQgdmFsdWUpCi0gICAgewotICAgICAgICBtX3ZhbHVlID0g
dmFsdWU7Ci0gICAgICAgIG1fYXNzaWduZWQgPSB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgaXNB
c3NpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzaWduZWQ7IH0KLQotICAgIFQgZ2V0VmFsdWUo
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQXNzaWduZWQoKSk7Ci0gICAgICAgIHJldHVybiBt
X3ZhbHVlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBUIG1fdmFsdWU7Ci0gICAgYm9vbCBtX2Fz
c2lnbmVkOwotCi0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0cHV0KTsKLX07Ci0KLS8v
IEhlbHBlciBtZXRob2RzIGZvciBQcm90b2NvbCBhbmQgb3RoZXIgSlNPTiB0eXBlcyBhcmUgcHJv
dmlkZWQgYnkKLS8vIHNwZWNpYWxpemF0aW9ucyBvZiBCaW5kaW5nVHJhaXRzPFQ+LiBTb21lIGFy
ZSBnZW5lcmF0ZWQgZm9yIHByb3RvY29sIHR5cGVzLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
c3RydWN0IEJpbmRpbmdUcmFpdHMgewotICAgIHR5cGVkZWYgVCBCaW5kaW5nVHlwZTsKLQotICAg
IHN0YXRpYyB2b2lkIHB1c2goSlNPTjo6QXJyYXkmLCBCaW5kaW5nVHlwZSYpOwotICAgIHN0YXRp
YyBKU09OOjpWYWx1ZTo6VHlwZSB0eXBlVGFnKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxUPiBydW50
aW1lQ2FzdChSZWZQdHI8SlNPTjo6T2JqZWN0PiYmKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0g
ICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqKTsK
LSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19OwotCi10ZW1wbGF0ZTxKU09OOjpWYWx1ZTo6
VHlwZSBUWVBFPgotc3RydWN0IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHMgewotI2lmICFBU1NFUlRf
RElTQUJMRUQKK3RlbXBsYXRlPEpTT046OlZhbHVlOjpUeXBlIHR5cGU+IHN0cnVjdCBQcmltaXRp
dmVCaW5kaW5nVHJhaXRzIHsKICAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlRfQVJHKHZhbHVl
LCB2YWx1ZSAmJiB2YWx1ZS0+dHlwZSgpID09IFRZUEUpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHZhbHVlLCB2YWx1ZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZhbHVlLT50eXBl
KCkgPT0gdHlwZSk7CiAgICAgfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFQ+
PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpBcnJh
eU9mPFQ+PiB7CiAgICAgc3RhdGljIFJlZlB0cjxKU09OOjpBcnJheU9mPFQ+PiBydW50aW1lQ2Fz
dChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlRfQVJH
KHZhbHVlLCB2YWx1ZSk7CiAgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYXJyYXk7CiAgICAg
ICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc0FycmF5KGFycmF5KTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgICAgIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFycmF5LmdldCgp
KTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihKU09OOjpBcnJheU9mPFQ+KSA9PSBzaXplb2YoSlNPTjo6QXJyYXkpLCB0eXBlX2Nhc3Rf
cHJvYmxlbSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU09OOjpBcnJheU9mPFQ+Kj4o
c3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsKICAgICB9CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogICAgIHsKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbHNlCiAgICAgICAgIEFTU0VSVF9BUkcodmFs
dWUsIHZhbHVlKTsKICAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBhcnJheTsKICAgICAgICAg
Ym9vbCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzQXJyYXkoYXJyYXkpOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBpKyspCiAgICAgICAgICAgICBCaW5k
aW5nVHJhaXRzPFQ+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS0+Z2V0KGkpLmdl
dCgpKTsKLSAgICB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH0KIH07CiAKLXRl
bXBsYXRlPD4KLXN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlPiB7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZT4g
ewogICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVl
KikKICAgICB7CiAgICAgfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXk+IDogcHVibGljIFByaW1pdGl2
ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5PiB7IH07Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046Ok9iamVjdD4gOiBwdWJsaWMgUHJpbWl0aXZlQmlu
ZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6T2JqZWN0PiB7IH07Ci10ZW1wbGF0ZTw+IHN0
cnVjdCBCaW5kaW5nVHJhaXRzPFN0cmluZz4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0
czxKU09OOjpWYWx1ZTo6VHlwZTo6U3RyaW5nPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5k
aW5nVHJhaXRzPGJvb2w+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFs
dWU6OlR5cGU6OkJvb2xlYW4+IHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8
ZG91YmxlPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBl
OjpEb3VibGU+IHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8aW50PiA6IHB1
YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpJbnRlZ2VyPiB7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5PiA6IFByaW1p
dGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5PiB7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046Ok9iamVjdD4gOiBQcmltaXRpdmVCaW5kaW5n
VHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3Q+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IEJpbmRpbmdUcmFpdHM8U3RyaW5nPiA6IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFs
dWU6OlR5cGU6OlN0cmluZz4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxi
b29sPiA6IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkJvb2xlYW4+
IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8ZG91YmxlPiA6IFByaW1pdGl2
ZUJpbmRpbmdUcmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkRvdWJsZT4geyB9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxpbnQ+IDogUHJpbWl0aXZlQmluZGluZ1RyYWl0czxKU09O
OjpWYWx1ZTo6VHlwZTo6SW50ZWdlcj4geyB9OwogCi19IC8vIG5hbWVzcGFjZSBQcm90b2NvbAor
fQogCiB1c2luZyBQcm90b2NvbDo6QmluZGluZ1RyYWl0czsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IGE3MzAwYWYy
Y2E3ZTJjMzE0OWRkNGYxYTYxMjUyYzE4MDIzZGQxZTUuLjE4M2ZlZjFmMjVkYWFiMDBmYTRjMTk0
NmFjNTIwZDQ4YjhjNGFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgYm9vbCBTY3JpcHRD
YWxsRnJhbWU6OmlzTmF0aXZlKCkgY29uc3QKICAgICByZXR1cm4gbV9zY3JpcHROYW1lID09ICJb
bmF0aXZlIGNvZGVdIjsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNh
bGxGcmFtZT4gU2NyaXB0Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0CitS
ZWY8UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4gU2NyaXB0Q2FsbEZyYW1lOjpidWlsZElu
c3BlY3Rvck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKKyAgICByZXR1cm4gUHJvdG9jb2w6OkNvbnNv
bGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldEZ1bmN0aW9uTmFtZShtX2Z1bmN0
aW9uTmFtZSkKICAgICAgICAgLnNldFVybChtX3NjcmlwdE5hbWUpCiAgICAgICAgIC5zZXRTY3Jp
cHRJZChTdHJpbmc6Om51bWJlcihtX3NvdXJjZUlEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCmluZGV4IDYzN2JlNmYyMmVkODM3NGI3
MjY4YjUyOGY2NDgxYWI5NGVlNmFjOTUuLmMyZjVjMjllODVjZmQzMjk1NmUyOTcwZTg0MWI5ZWUz
MzUwMmExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsRnJhbWUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaXNFcXVh
bChvdGhlcik7IH0KIAotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxs
RnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisgICAgUmVmPFByb3RvY29sOjpD
b25zb2xlOjpDYWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCmluZGV4IDk1Y2UzMzEzZTM0NDA2
NDk4NGIzYWZjMWZmMTVlODVhN2U4YjY1YjMuLjdkNTNiNGNiNjljZjcxMmQ1ZmIyNGM3OTQ5ZjI2
ZDExZjNjY2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTEwNSw5ICsxMDUsOSBAQCBib29sIFNjcmlwdENhbGxT
dGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNh
bGxGcmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitS
ZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0Q2Fs
bFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QKIHsKLSAgICBhdXRvIGZyYW1lcyA9
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6
Y3JlYXRlKCk7CisgICAgYXV0byBmcmFtZXMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpDb25z
b2xlOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZnJhbWVzLnNpemUoKTsgaSsrKQogICAgICAgICBmcmFtZXMtPmFkZEl0ZW0obV9mcmFtZXMuYXQo
aSkuYnVpbGRJbnNwZWN0b3JPYmplY3QoKSk7CiAgICAgcmV0dXJuIGZyYW1lczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCmluZGV4IDk5
MjgwYjA2NGFjYTc3NTE1NzcwOTNiYjM1NGUzZTg2NDU0MjcwMjIuLmY5ZWNjZGM2ZDljY2E2Njlm
NTNmMDZkMzMyZjk5NjkzM2IxMmIzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7CiAKLSAgICBSZWY8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWls
ZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBTY3JpcHRDYWxsU3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCmluZGV4IDE5NDExNzVhMDBlYTcxMTU3NjVkZjY4NDhjMzVmMzAwMjM0YWViZjEuLjJhNjdh
MWU1YjdiNGRkNTYxMmEzNDU3YWVkM2NkMTI3NDYxMTlkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmNwcApAQCAtMjM5LDEwICsyMzksMTAgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4g
Y28KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hh
bm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQordm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQogewogICAgIC8vIERl
ZmF1bHQgaW1wbGVtZW50YXRpb24gaGFzIG5vIGxvZ2dpbmcgY2hhbm5lbHMuCi0gICAgY2hhbm5l
bHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+
OjpjcmVhdGUoKTsKKyAgICBjaGFubmVscyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkNvbnNv
bGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBm
MWJjYzZhMTIwMDI5ZDEyOTYyMDY3MjIyYjhlYjgwMGFjMGQ3ZDA5Li42MTg0NzY0NmRlOTI5OWM2
NTZmNTI1YTY2MmY5MDkyNmRmZmU2ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApA
QCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KGNvbnN0
IFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgY291bnQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2Ny
aXB0QXJndW1lbnRzPiYmKTsKIAotICAgIHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3Ry
aW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2hhbm5lbD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMb2dnaW5nQ2hhbm5lbExldmVsKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjaGFubmVsLCBjb25zdCBTdHJpbmcmIGxldmVsKSBvdmVycmlkZTsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhOGIy
Mzk4YTRhYjc4NWM1OTk0ZTVlODQyY2JkNTNiM2U2MTFhZDg5Li4yNDA4MTZjOWNiNDQ3OWQwMjNl
OWUwNTQ1ODBmNWNlYzM5OGI1OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U3Vw
cHJlc3NBbGxQYXVzZXMoYm9vbCBzdXBwcmVzcykKIAogc3RhdGljIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IGJ1aWxkQXNzZXJ0UGF1c2VSZWFzb24oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IGF1dG8gcmVhc29uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkFzc2VydFBhdXNl
UmVhc29uOjpjcmVhdGUoKS5yZWxlYXNlKCk7CisgICAgYXV0byByZWFzb24gPSBQcm90b2NvbDo6
RGVidWdnZXI6OkFzc2VydFBhdXNlUmVhc29uOjpjcmVhdGUoKS5yZWxlYXNlKCk7CiAgICAgaWYg
KCFtZXNzYWdlLmlzTnVsbCgpKQogICAgICAgICByZWFzb24tPnNldE1lc3NhZ2UobWVzc2FnZSk7
CiAgICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOwpAQCAtMTgxLDcgKzE4MSw3IEBA
IHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZEFzc2VydFBhdXNlUmVhc29uKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIAogc3RhdGljIFJlZlB0cjxKU09OOjpPYmplY3Q+IGJ1aWxkQ1NQ
VmlvbGF0aW9uUGF1c2VSZWFzb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KQogewotICAg
IGF1dG8gcmVhc29uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNTUFZpb2xhdGlv
blBhdXNlUmVhc29uOjpjcmVhdGUoKQorICAgIGF1dG8gcmVhc29uID0gUHJvdG9jb2w6OkRlYnVn
Z2VyOjpDU1BWaW9sYXRpb25QYXVzZVJlYXNvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldERpcmVj
dGl2ZShkaXJlY3RpdmVUZXh0KQogICAgICAgICAucmVsZWFzZSgpOwogICAgIHJldHVybiByZWFz
b24tPm9wZW5BY2Nlc3NvcnMoKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihK
U0M6OkJyZQogICAgIGlmIChpdCA9PSBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0lu
c3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGF1dG8gcmVhc29uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKKyAgICBhdXRvIHJlYXNvbiA9IFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludFBhdXNlUmVhc29uOjpjcmVhdGUoKQogICAgICAgICAuc2V0
QnJlYWtwb2ludElkKGl0LT52YWx1ZSkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
cmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7CkBAIC0zNDIsMTkgKzM0MiwxOSBAQCBzdGF0aWMgYm9v
bCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wg
aXNSZWdleCkKIAogc3RhdGljIGJvb2wgYnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSogb3V0cHV0
KQogewotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rv
ckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7CisgICAgaWYgKHR5cGVTdHJpbmcg
PT0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgewogICAgICAgICAq
b3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2c7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpJ
bnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6RXZhbHVhdGUpKSB7CisgICAgaWYg
KHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFu
dFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6RXZhbHVh
dGUpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUV2YWx1
YXRlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6
OlNvdW5kKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRB
Y3Rpb246OlR5cGU6OlNvdW5kKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2lu
dEFjdGlvblR5cGVTb3VuZDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0
eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpUeXBlOjpQcm9iZSkpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6
SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpQcm9iZSkpIHsKICAgICAgICAgKm91dHB1dCA9IFNj
cmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTQwNiwxMSArNDA2LDExIEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcmIGVycm9yU3RyCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkxvY2F0aW9uPiBidWlsZERlYnVnZ2VyTG9jYXRpb24oY29uc3QgSlNDOjpCcmVha3BvaW50
JiBicmVha3BvaW50KQorc3RhdGljIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
PiBidWlsZERlYnVnZ2VyTG9jYXRpb24oY29uc3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50
KQogewogICAgIEFTU0VSVChicmVha3BvaW50LnJlc29sdmVkKTsKIAotICAgIGF1dG8gbG9jYXRp
b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCisg
ICAgYXV0byBsb2NhdGlvbiA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXRTY3JpcHRJZChTdHJpbmc6Om51bWJlcihicmVha3BvaW50LnNvdXJjZUlE
KSkKICAgICAgICAgLnNldExpbmVOdW1iZXIoYnJlYWtwb2ludC5saW5lKQogICAgICAgICAucmVs
ZWFzZSgpOwpAQCAtNDM0LDkgKzQzNCw5IEBAIHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9uCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxV
UkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtw
b2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51
bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxKU09OOjpBcnJheU9m
PFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQogewotICAgIGxvY2F0
aW9ucyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0
aW9uPjo6Y3JlYXRlKCk7CisgICAgbG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAh
b3B0aW9uYWxVUkxSZWdleCkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
RWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJlIHNwZWNpZmllZC4iKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0
QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpCiAgICAgKm91
dEJyZWFrcG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElkZW50aWZpZXI7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCog
b3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0
QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9i
amVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8UHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQogewogICAgIEpTQzo6
U291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5zaWduZWQgbGluZU51bWJlcjsKQEAgLTY1OSw3ICs2
NTksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5j
b250aW51ZVByb2dyYW0oKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFy
Y2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3Ry
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVy
cm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0
Y2g+PiYgcmVzdWx0cykKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0SURT
dHIudG9JbnRQdHIoKTsKICAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwpA
QCAtNjgzLDcgKzY4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0
U291cmNlKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgIGVycm9y
ID0gQVNDSUlMaXRlcmFsKCJObyBzY3JpcHQgZm9yIGlkOiAiKSArIHNjcmlwdElEU3RyOwogfQog
Ci12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBkZXRhaWxzKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90b2NvbDo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGRldGFpbHMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldFBhdXNlT25Bc3NlcnRpb25zKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKQogICAgIG1f
cGF1c2VPbkFzc2VydGlvbkZhaWx1cmVzID0gZW5hYmxlZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29u
c3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25z
dCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9v
bD4qIG91dFdhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG91
dFNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxG
cmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVl
LCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJl
ZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiBvdXRXYXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJ
bmRleCkKIHsKICAgICBpZiAoIW1fY3VycmVudENhbGxTdGFjaykgewogICAgICAgICBlcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm90IHBhdXNlZCIpOwpAQCAtODQ3LDE1ICs4NDcsMTEgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAK
LSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgYnJpZGdpbmcgY29kZSB3aGVuIGdlbmVyYXRlZCBw
cm90b2NvbCBjb21tYW5kcyBubyBsb25nZXIgdXNlIE9wdE91dHB1dDxUPi4KICAgICBib29sIHdh
c1Rocm93bjsKLSAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKICAgICBp
bmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRD
YWxsU3RhY2suZ2V0KCksIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLAogICAgICAgICBvYmplY3RH
cm91cCA/ICpvYmplY3RHcm91cCA6IGVtcHR5U3RyaW5nKCksIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSAmJiAqaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlICYmICpyZXR1cm5CeVZh
bHVlLCBnZW5lcmF0ZVByZXZpZXcgJiYgKmdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCAmJiAq
c2F2ZVJlc3VsdCwKICAgICAgICAgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgp
OwotICAgICpvdXRXYXNUaHJvd24gPSB3YXNUaHJvd247Ci0gICAgaWYgKHNhdmVkUmVzdWx0SW5k
ZXguaGFzX3ZhbHVlKCkpCi0gICAgICAgICpvdXRTYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1
bHRJbmRleC52YWx1ZSgpOworICAgIG91dFdhc1Rocm93biA9IHdhc1Rocm93bjsKIAogICAgIGlm
IChwYXVzZUFuZE11dGUpIHsKICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwpAQCAtODczLDExICs4
NjksMTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9j
a2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAgICAgICAgYnJlYWtQcm9ncmFtKERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BW
aW9sYXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAKLVJlZjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5q
ZWN0ZWRTY3JpcHQpCitSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxG
cmFtZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IElu
amVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCkKIHsKICAgICBBU1NFUlQoIWluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkK
LSAgICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogCiAgICAgcmV0dXJuIGlu
amVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjay5nZXQoKSk7CiB9
CkBAIC0xMDA5LDcgKzEwMDUsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBh
dXNlKEpTQzo6RXhlY1N0YXRlJiBzY3JpcHRTdGF0ZSwgSlNDOjpKU1ZhbHVlCiAgICAgbV9jb25k
aXRpb25Ub0Rpc3BhdGNoUmVzdW1lZCA9IFNob3VsZERpc3BhdGNoUmVzdW1lZDo6Tm87CiAgICAg
bV9lbmFibGVQYXVzZVdoZW5JZGxlID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gYXN5bmNTdGFja1RyYWNlOworICAgIFJlZlB0
cjxQcm90b2NvbDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gYXN5bmNTdGFja1RyYWNlOwogICAgIGlm
IChtX2N1cnJlbnRBc3luY0NhbGxJZGVudGlmaWVyKSB7CiAgICAgICAgIGF1dG8gaXQgPSBtX3Bl
bmRpbmdBc3luY0NhbGxzLmZpbmQobV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllci52YWx1ZSgp
KTsKICAgICAgICAgaWYgKGl0ICE9IG1fcGVuZGluZ0FzeW5jQ2FsbHMuZW5kKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMzZkNThjMzNiMjI1NDgzNTQwZGEyMTRhMzgwMjI0
MmM5N2RiMmVkMi4uYTU0MTI4NDc4ZmYwMzlhNjIzZTU3YjZmNmJmNWU2MDkxZmI3OGMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjMsMTQgKzYzLDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldEFzeW5j
U3RhY2tUcmFjZURlcHRoKEVycm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5hbDsKICAgICB2b2lk
IHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3RpdmUpIGZpbmFsOwot
ICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludElkKiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7Ci0gICAgdm9pZCBzZXRCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4mIGFjdHVhbExvY2F0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChF
cnJvclN0cmluZyYsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5O
dW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpC
cmVha3BvaW50SWQqLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7CisgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pIGZpbmFsOwogICAgIHZv
aWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVVbnRpbE5leHRSdW5Mb29wKEVy
cm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJp
bmcmLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9uKSBmaW5hbDsKLSAgICB2b2lkIHNlYXJj
aEluQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0
cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBmaW5hbDsKKyAg
ICB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JikgZmluYWw7CiAgICAgdm9pZCBnZXRT
Y3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBTdHJpbmcq
IHNjcmlwdFNvdXJjZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIGZpbmFsOworICAgIHZvaWQgZ2V0RnVu
Y3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQ
dHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JikgZmluYWw7CiAgICAgdm9p
ZCBwYXVzZShFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBzdGVwT3ZlcihFcnJvclN0cmluZyYpIGZpbmFsOwpAQCAtNzgs
OCArNzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGVwT3V0KEVycm9yU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGF1c2VTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBzZXRQYXVzZU9uQXNzZXJ0aW9ucyhFcnJv
clN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7Ci0gICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29s
KiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlW
YWx1ZSwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBjb25z
dCBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0
SW5kZXgpIGZpbmFsOwotICAgIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcqIGNvbnN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24s
IHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CisgICAgdm9pZCBz
ZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyopIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc1BhdXNlZCgpIGNvbnN0OwogICAgIGJvb2wgYnJlYWtwb2ludHNBY3RpdmUo
KSBjb25zdDsKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENsZWFyQXN5bmNTdGFja1RyYWNlRGF0YSgpIHsgfQogCiBwcml2YXRlOgotICAgIFJlZjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBj
dXJyZW50Q2FsbEZyYW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYpOworICAgIFJlZjxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMo
Y29uc3QgSW5qZWN0ZWRTY3JpcHQmKTsKIAogICAgIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpT
b3VyY2VJRCwgY29uc3QgU2NyaXB0JikgZmluYWw7CiAgICAgdm9pZCBmYWlsZWRUb1BhcnNlU291
cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUs
IGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckhl
YXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IGY2OGQxY2E0MjdjZWZkMWY2ZGYxMzA4Nzc1ZGY2YTQ1
MDJjMjRmNzMuLjAxOGE4ZGExNzhlZjQzMzZmOTMwZTFkMTI4Y2U4NjIwN2ZkYjJjNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckhl
YXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6b3B0aW9uYWw8
SGVhcFNuYXBzaG90Tm9kZT4gSW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElk
ZW50aWZpZXIoCiAgICAgcmV0dXJuIG9wdGlvbmFsTm9kZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JI
ZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9i
amVjdElkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcmVzdWx0U3Ry
aW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWls
cz4mIGZ1bmN0aW9uRGV0YWlscywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
Ok9iamVjdFByZXZpZXc+JiBvYmplY3RQcmV2aWV3KQordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6
OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4mIHJlc3VsdFN0cmluZywgUmVmUHRyPFByb3RvY29sOjpEZWJ1
Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZnVuY3Rpb25EZXRhaWxzLCBSZWZQdHI8UHJvdG9jb2w6
OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBvYmplY3RQcmV2aWV3KQogewogICAgIC8vIFByZXZl
bnQgdGhlIGNlbGwgZnJvbSBnZXR0aW5nIGNvbGxlY3RlZCBhcyB3ZSBsb29rIGl0IHVwLgogICAg
IFZNJiB2bSA9IG1fZW52aXJvbm1lbnQudm0oKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBoZWFwT2JqZWN0SWQsCiAgICAgb2JqZWN0UHJldmlldyA9IGluamVjdGVkU2NyaXB0LnByZXZp
ZXdWYWx1ZShjZWxsKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9i
amVjdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxPYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9ySGVhcEFn
ZW50OjpnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9i
amVjdElkLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewogICAgIC8vIFByZXZlbnQgdGhl
IGNlbGwgZnJvbSBnZXR0aW5nIGNvbGxlY3RlZCBhcyB3ZSBsb29rIGl0IHVwLgogICAgIFZNJiB2
bSA9IG1fZW52aXJvbm1lbnQudm0oKTsKQEAgLTI1MCwxNiArMjUwLDE2IEBAIHZvaWQgSW5zcGVj
dG9ySGVhcEFnZW50OjpnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgaGVhcE9iamVjCiAgICAgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjZWxs
LCBvYmplY3RHcm91cCwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpI
ZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9u
KENvbGxlY3Rpb25TY29wZSBzY29wZSkKK3N0YXRpYyBQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNv
bGxlY3Rpb246OlR5cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihDb2xsZWN0aW9uU2Nv
cGUgc2NvcGUpCiB7CiAgICAgc3dpdGNoIChzY29wZSkgewogICAgIGNhc2UgQ29sbGVjdGlvblNj
b3BlOjpGdWxsOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2Fy
YmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1bGw7CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6SGVh
cDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1bGw7CiAgICAgY2FzZSBDb2xsZWN0aW9uU2Nv
cGU6OkVkZW46Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJi
YWdlQ29sbGVjdGlvbjo6VHlwZTo6UGFydGlhbDsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpI
ZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6UGFydGlhbDsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6Okdh
cmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOworICAgIHJldHVybiBQcm90b2NvbDo6SGVhcDo6
R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1bGw7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySGVhcEFn
ZW50Ojp3aWxsR2FyYmFnZUNvbGxlY3QoKQpAQCAtMzAxLDkgKzMwMSw5IEBAIHZvaWQgSW5zcGVj
dG9ySGVhcEFnZW50OjpjbGVhckhlYXBTbmFwc2hvdHMoKQogICAgIH0KIH0KIAotdm9pZCBJbnNw
ZWN0b3JIZWFwQWdlbnQ6OmRpc3BhdGNoR2FyYmFnZUNvbGxlY3RlZEV2ZW50KEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlIHR5cGUsIGRvdWJsZSBzdGFy
dFRpbWUsIGRvdWJsZSBlbmRUaW1lKQordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmRpc3BhdGNo
R2FyYmFnZUNvbGxlY3RlZEV2ZW50KFByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6
VHlwZSB0eXBlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSkKIHsKLSAgICBhdXRv
IHByb3RvY29sT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxl
Y3Rpb246OmNyZWF0ZSgpCisgICAgYXV0byBwcm90b2NvbE9iamVjdCA9IFByb3RvY29sOjpIZWFw
OjpHYXJiYWdlQ29sbGVjdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFR5cGUodHlwZSkKICAg
ICAgICAgLnNldFN0YXJ0VGltZShzdGFydFRpbWUpCiAgICAgICAgIC5zZXRFbmRUaW1lKGVuZFRp
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JIZWFwQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCmluZGV4IGRhZTM1NzEwMzNhMjdmOGUwMzUzMWRkOTEx
Y2E1ZjE0MDE3NmFiYTUuLmFlZWJmMzk1NzI2Mjk2ODZlYzBmZjAzZTI5NzNmZmM2MDAzNjY3Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNuYXBzaG90KEVycm9yU3RyaW5nJiwgZG91YmxlKiB0aW1lc3RhbXAsIFN0cmluZyogc25h
cHNob3REYXRhKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmKSBm
aW5hbDsKICAgICB2b2lkIHN0b3BUcmFja2luZyhFcnJvclN0cmluZyYpIGZpbmFsOwotICAgIHZv
aWQgZ2V0UHJldmlldyhFcnJvclN0cmluZyYsIGludCBoZWFwT2JqZWN0SWQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiByZXN1bHRTdHJpbmcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZnVuY3Rpb25EZXRhaWxz
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4mIG9i
amVjdFByZXZpZXcpIGZpbmFsOwotICAgIHZvaWQgZ2V0UmVtb3RlT2JqZWN0KEVycm9yU3RyaW5n
JiwgaW50IGhlYXBPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbE9iamVjdEdy
b3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0KSBmaW5hbDsKKyAgICB2b2lkIGdldFByZXZpZXcoRXJyb3JTdHJpbmcmLCBpbnQgaGVh
cE9iamVjdElkLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHJlc3VsdFN0cmluZywgUmVmUHRyPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYsIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6T2JqZWN0UHJldmlldz4mKSBmaW5hbDsKKyAgICB2b2lkIGdldFJlbW90ZU9iamVjdChF
cnJvclN0cmluZyYsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxPYmpl
Y3RHcm91cCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQp
IGZpbmFsOwogCiAgICAgLy8gSGVhcE9ic2VydmVyCiAgICAgdm9pZCB3aWxsR2FyYmFnZUNvbGxl
Y3QoKSBvdmVycmlkZTsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IHZvaWQgY2xlYXJIZWFwU25hcHNob3RzKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hH
YXJiYWdlQ29sbGVjdGVkRXZlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNv
bGxlY3Rpb246OlR5cGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBlbmRUaW1lKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hHYXJiYWdlQ29sbGVjdGVkRXZlbnQoUHJvdG9jb2w6OkhlYXA6
OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGlt
ZSk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxKU0M6OkhlYXBTbmFwc2hvdE5vZGU+
IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihFcnJvclN0cmluZyYsIHVuc2lnbmVkIGhlYXBP
YmplY3RJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDk1
NDMyMmQ5NjgwMDU0ZTJiYmUyMDM5N2QwNzE4MTgwN2U1NWEzNWYuLjk5ZGE5ZGE4ZTQ4MjA2NTE1
MjA2ZDI5NGFiMjViMTdjYmJlMjcyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cApAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKLXN0YXRpYyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBi
KQordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wq
IGIpCiB7Ci0gICAgcmV0dXJuIGIgPyAqYiA6IGZhbHNlOworICAgIHJldHVybiBiICYmICpiOwog
fQogCiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudChBZ2VudENv
bnRleHQmIGNvbnRleHQpCkBAIC03MCwyMSArNzAsMjEgQEAgSW5zcGVjdG9yUnVudGltZUFnZW50
Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkKIAogc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXB0RGVi
dWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSBuZXdTdGF0ZSkKIHsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSBwcmVzZW50U3RhdGUgPSBzY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKCk7CisgICAgYXV0byBwcmVzZW50U3RhdGUgPSBzY3JpcHREZWJ1Z1Nl
cnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiAgICAgaWYgKHByZXNlbnRTdGF0ZSAhPSBu
ZXdTdGF0ZSkKICAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShuZXdTdGF0ZSk7CiAgICAgcmV0dXJuIHByZXNlbnRTdGF0ZTsKIH0KIAotc3RhdGljIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlPiBidWlsZEVycm9yUmFu
Z2VPYmplY3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiB0b2tlbkxvY2F0aW9uKQorc3RhdGljIFJl
ZjxQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKIHsKLSAgICByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKKyAgICByZXR1cm4g
UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFy
dE9mZnNldCh0b2tlbkxvY2F0aW9uLnN0YXJ0T2Zmc2V0KQogICAgICAgICAuc2V0RW5kT2Zmc2V0
KHRva2VuTG9jYXRpb24uZW5kT2Zmc2V0KQogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlw
ZSogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2Fn
ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5n
ZSkKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgUHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSog
cmVzdWx0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIG1lc3NhZ2UsIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6RXJyb3JSYW5nZT4mIHJhbmdlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1f
dm0pOwogCkBAIC05MywyNiArOTMsMjYgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBh
cnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWMKIAogICAg
IHN3aXRjaCAoZXJyb3Iuc3ludGF4RXJyb3JUeXBlKCkpIHsKICAgICBjYXNlIFBhcnNlckVycm9y
OjpTeW50YXhFcnJvck5vbmU6Ci0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6Ok5vbmU7CisgICAgICAgICpyZXN1bHQgPSBQcm90
b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6Ci0gICAgICAgICpy
ZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6Okly
cmVjb3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBQcm90b2NvbDo6UnVudGltZTo6U3ludGF4
RXJyb3JUeXBlOjpJcnJlY292ZXJhYmxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNl
ckVycm9yOjpTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWw6Ci0gICAgICAgICpyZXN1bHQg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlVudGVybWlu
YXRlZExpdGVyYWw7CisgICAgICAgICpyZXN1bHQgPSBQcm90b2NvbDo6UnVudGltZTo6U3ludGF4
RXJyb3JUeXBlOjpVbnRlcm1pbmF0ZWRMaXRlcmFsOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBhcnNlckVycm9yOjpTeW50YXhFcnJvclJlY292ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpSZWNvdmVyYWJs
ZTsKKyAgICAgICAgKnJlc3VsdCA9IFByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6
OlJlY292ZXJhYmxlOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoZXJyb3Iuc3lu
dGF4RXJyb3JUeXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZSkgewotICAgICAg
ICAqbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UoKTsKKyAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1l
c3NhZ2UoKTsKICAgICAgICAgcmFuZ2UgPSBidWlsZEVycm9yUmFuZ2VPYmplY3QoZXJyb3IudG9r
ZW4oKS5tX2xvY2F0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3Qg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcs
IGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxib29sPiogb3V0X3dhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGlu
dD4qIG91dF9zYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2
YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwg
Y29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUs
IGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVm
UHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mIG91dFdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdElu
ZGV4KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKGVycm9yU3RyaW5nLCBleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC0xMjQsMTUgKzEyNCw5IEBAIHZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZXhwCiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUpKQogICAgICAgICBtdXRlQ29uc29sZSgpOwogCi0gICAgLy8gRklYTUU6IHJlbW92
ZSB0aGlzIGJyaWRnaW5nIGNvZGUgd2hlbiBnZW5lcmF0ZWQgcHJvdG9jb2wgY29tbWFuZHMgbm8g
bG9uZ2VyIHVzZSBPcHRPdXRwdXQ8VD4uCi0gICAgLy8gPGh0dHBzOi8vd3d3LndlYmtpdC5vcmcv
Yi8xODA2MDc+CiAgICAgYm9vbCB3YXNUaHJvd247Ci0gICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNh
dmVkUmVzdWx0SW5kZXg7CiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGUoZXJyb3JTdHJpbmcs
IGV4cHJlc3Npb24sIG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogU3RyaW5nKCksIGFzQm9v
bChpbmNsdWRlQ29tbWFuZExpbmVBUEkpLCBhc0Jvb2wocmV0dXJuQnlWYWx1ZSksIGFzQm9vbChn
ZW5lcmF0ZVByZXZpZXcpLCBhc0Jvb2woc2F2ZVJlc3VsdCksIHJlc3VsdCwgd2FzVGhyb3duLCBz
YXZlZFJlc3VsdEluZGV4KTsKLSAgICAKLSAgICAqb3V0X3dhc1Rocm93biA9IHdhc1Rocm93bjsK
LSAgICBpZiAoc2F2ZWRSZXN1bHRJbmRleC5oYXNfdmFsdWUoKSkKLSAgICAgICAgKm91dF9zYXZl
ZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1bHRJbmRleC52YWx1ZSgpOworICAgIG91dFdhc1Rocm93
biA9IHdhc1Rocm93bjsKIAogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlKSkgewogICAgICAgICB1bm11dGVDb25zb2xlKCk7CkBAIC0xNDAsNyArMTM0
LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSlNP
Tjo6QXJyYXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFs
dWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGJvb2w+KiBvdXRfd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBKU09OOjpBcnJheSog
b3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgc3RkOjpvcHRpb25hbDxib29sPiYgb3V0V2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkgewpAQCAtMTYyLDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpj
YWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAKICAg
ICBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25PbihlcnJvclN0cmluZywgb2JqZWN0SWQsIGV4
cHJlc3Npb24sIGFyZ3VtZW50cywgYXNCb29sKHJldHVybkJ5VmFsdWUpLCBhc0Jvb2woZ2VuZXJh
dGVQcmV2aWV3KSwgcmVzdWx0LCB3YXNUaHJvd24pOwogCi0gICAgKm91dF93YXNUaHJvd24gPSB3
YXNUaHJvd247CisgICAgb3V0V2FzVGhyb3duID0gd2FzVGhyb3duOwogCiAgICAgaWYgKGFzQm9v
bChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKSB7CiAgICAgICAgIHVubXV0
ZUNvbnNvbGUoKTsKQEAgLTE3MCw3ICsxNjQsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgog
ICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4mIHByZXZpZXcpCit2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0
UHJldmlldz4mIHByZXZpZXcpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVj
dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0xODcsNyAr
MTgxLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG8KICAgICBzZXRQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCog
Y29uc3Qgb3duUHJvcGVydGllcywgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFBy
b3BlcnRpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wq
IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQs
IFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZv
ck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KSB7CkBAIC0yMDUsNyArMTk5LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3Jp
cHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGll
cykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBi
b29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50
aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQ
cm9wZXJ0aWVzKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtMjIzLDcgKzIxNyw3IEBA
IHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjCiAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSht
X3NjcmlwdERlYnVnU2VydmVyLCBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogfQog
Ci12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcq
IG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9G
ZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0
SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKQogewogICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewpAQCAtMjM3LDcgKzIzMSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Q29sbGVjdGlvbkVudHJpZXMoZXJyb3JTdHJpbmcsIG9i
amVjdElkLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6IFN0cmluZygpLCBzdGFydCwgZmV0
Y2gsIGVudHJpZXMpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2F2ZVJlc3Vs
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgY2FsbEFyZ3Vt
ZW50LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGludD4qIG91dF9zYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09O
OjpPYmplY3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIHN0
ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdDsKIApAQCAtMjU0LDE0ICsyNDgsNyBAQCB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6c2F2ZVJlc3VsdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpT
T046Ok9iagogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICAvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgYnJpZGdpbmcgY29kZSB3aGVuIGdlbmVyYXRlZCBwcm90b2NvbCBjb21tYW5k
cyBubyBsb25nZXIgdXNlIE9wdE91dHB1dDxUPi4KLSAgICAvLyA8aHR0cHM6Ly93d3cud2Via2l0
Lm9yZy9iLzE4MDYwNz4KLSAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsK
LQogICAgIGluamVjdGVkU2NyaXB0LnNhdmVSZXN1bHQoZXJyb3JTdHJpbmcsIGNhbGxBcmd1bWVu
dC50b0pTT05TdHJpbmcoKSwgc2F2ZWRSZXN1bHRJbmRleCk7Ci0KLSAgICBpZiAoc2F2ZWRSZXN1
bHRJbmRleC5oYXNfdmFsdWUoKSkKLSAgICAgICAgKm91dF9zYXZlZFJlc3VsdEluZGV4ID0gc2F2
ZWRSZXN1bHRJbmRleC52YWx1ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
cmVsZWFzZU9iamVjdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCkBAIC0y
NzYsMTEgKzI2MywxMSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVj
dEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplYwogICAgIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNl
dHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25z
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBl
RGVzY3JpcHRpb24+PiYgdHlwZURlc2NyaXB0aW9ucykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlv
bnMpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgdHlw
ZURlc2NyaXB0aW9ucyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6VHlwZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CisgICAgdHlwZURlc2NyaXB0aW9ucyA9IEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgp
OwogICAgIGlmICghbV92bS50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICBlcnJvclN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIFR5cGUgSW5mb3Jt
YXRpb24uIik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxNyw3ICszMDQsNyBAQCB2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVy
cm9yU3RyaW5nJiBlcgogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc1ZhbGlkID0gdHlwZUxv
Y2F0aW9uICYmIHR5cGVTZXQgJiYgIXR5cGVTZXQtPmlzRW1wdHkoKTsKLSAgICAgICAgYXV0byBk
ZXNjcmlwdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlv
bjo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IFByb3RvY29sOjpSdW50aW1l
OjpUeXBlRGVzY3JpcHRpb246OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0SXNWYWxpZChpc1Zh
bGlkKQogICAgICAgICAgICAgLnJlbGVhc2UoKTsKIApAQCAtMzkxLDcgKzM3OCw3IEBAIHZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpzZXRDb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZFN0YXRl
KGJvb2wgaXNDb250cm9sRmxvCiAgICAgfSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgc291cmNlSURBc1N0cmluZywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3ZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgaWYgKCFtX3Zt
LmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0
ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIGEgQ29udHJvbCBGbG93IFByb2Zp
bGVyLiIpOwpAQCAtNDAyLDkgKzM4OSw5IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAg
aW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2VJREFzU3RyaW5nLnRvSW50UHRyU3RyaWN0KCZva2F5
KTsKICAgICBBU1NFUlQob2theSk7CiAgICAgY29uc3QgVmVjdG9yPEJhc2ljQmxvY2tSYW5nZT4m
IGJhc2ljQmxvY2tSYW5nZXMgPSBtX3ZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+Z2V0QmFzaWNC
bG9ja3NGb3JTb3VyY2VJRChzb3VyY2VJRCwgbV92bSk7Ci0gICAgYmFzaWNCbG9ja3MgPSBKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s+OjpjcmVh
dGUoKTsKKyAgICBiYXNpY0Jsb2NrcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6
OkJhc2ljQmxvY2s+OjpjcmVhdGUoKTsKICAgICBmb3IgKGNvbnN0IEJhc2ljQmxvY2tSYW5nZSYg
YmxvY2sgOiBiYXNpY0Jsb2NrUmFuZ2VzKSB7Ci0gICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPiBsb2NhdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkJhc2ljQmxvY2s6OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gbG9jYXRpb24gPSBQ
cm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jazo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRT
dGFydE9mZnNldChibG9jay5tX3N0YXJ0T2Zmc2V0KQogICAgICAgICAgICAgLnNldEVuZE9mZnNl
dChibG9jay5tX2VuZE9mZnNldCkKICAgICAgICAgICAgIC5zZXRIYXNFeGVjdXRlZChibG9jay5t
X2hhc0V4ZWN1dGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCAyZDVkMjkxNzU2
Nzk5ZDdlZWFjOWU3YjYwZjc0NmU0ZTVhYTI5YWViLi4yOTkyN2IxZjQ5NzFkZmI1MTAwNDFjMzVh
NzI3YWYyMjBmZGUwMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNTcsMjIg
KzU3LDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQotICAgIHZvaWQgcGFyc2UoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkVycm9yUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwg
Y29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25z
dCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogY29uc3Qg
ZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25z
dCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIGNvbnN0IHNhdmVSZXN1
bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmlu
YWw7Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSlNPTjo6QXJyYXkqIG9w
dGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJv
b2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pIGZpbmFsOworICAgIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJv
clR5cGUqIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBtZXNzYWdlLCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JikgZmluYWw7CisgICAgdm9pZCBldmFsdWF0ZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9u
Q29udGV4dElkLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24s
IHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CisgICAgdm9pZCBj
YWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdGlvbmFsQXJndW1lbnRz
LCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0
IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mIHdhc1Rocm93bikgZmluYWw7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0KEVycm9yU3Ry
aW5nJiwgY29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBmaW5hbDsKLSAgICB2b2lkIGdldFBy
ZXZpZXcoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4mKSBmaW5hbDsKLSAgICB2b2lk
IGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGlu
dGVybmFsUHJvcGVydGllcykgZmluYWw7Ci0gICAgdm9pZCBnZXREaXNwbGF5YWJsZVByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25z
dCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNj
cmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7Ci0gICAgdm9pZCBnZXRDb2xsZWN0
aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0
cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGludCogY29uc3Qgc3RhcnRJbmRleCwgY29u
c3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiYgZW50cmllcykgZmluYWw7
Ci0gICAgdm9pZCBzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBj
YWxsQXJndW1lbnQsIGNvbnN0IGludCogY29uc3QgZXhlY3V0aW9uQ29udGV4dElkLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7Cisg
ICAgdm9pZCBnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYpIGZpbmFsOworICAgIHZv
aWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNv
bnN0IGJvb2wqIG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVm
UHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+
JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5h
bFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7CisgICAgdm9pZCBnZXRDb2xsZWN0aW9u
RW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIGNvbnN0IGludCogc3RhcnRJbmRleCwgY29uc3QgaW50KiBudW1iZXJU
b0ZldGNoLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlv
bkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQgc2F2ZVJlc3VsdChFcnJvclN0cmlu
ZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgY2FsbEFyZ3VtZW50LCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsK
ICAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXApIGZpbmFsOwotICAgIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2Ny
aXB0aW9uPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxl
c0F0T2Zmc2V0cyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5JiBsb2NhdGlvbnMsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlQ29udHJvbEZsb3dQcm9maWxlcihFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaW5fc291
cmNlSUQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2Nr
Pj4mIG91dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCA1ZTg5NWFlODUyMDE1YjlkNGNkMDU1MWNmMWI4OWJiOGVmNjMz
ZjQ0Li41OTdlMDhlZDhhMWFmODEzNDBhMzM5MWIxNDNhNmJhYTUxZTczYmNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzbwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50OjpzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29u
c3QgaW5jbHVkZVNhbXBsZXMpCit2b2lkIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnN0
YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBpbmNsdWRlU2FtcGxlcykKIHsK
ICAgICBpZiAobV90cmFja2luZykKICAgICAgICAgcmV0dXJuOwpAQCAtMTM1LDI2ICsxMzUsMjYg
QEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpkaWRFdmFsdWF0ZVNjcmlwdChk
b3VibGUgc3RhcnRUaW1lLCBQcm9maWxpbmcKICAgICBhZGRFdmVudChzdGFydFRpbWUsIGVuZFRp
bWUsIHJlYXNvbik7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpTY3JpcHRQcm9m
aWxlcjo6RXZlbnRUeXBlIHRvUHJvdG9jb2woUHJvZmlsaW5nUmVhc29uIHJlYXNvbikKK3N0YXRp
YyBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OkV2ZW50VHlwZSB0b1Byb3RvY29sKFByb2ZpbGlu
Z1JlYXNvbiByZWFzb24pCiB7CiAgICAgc3dpdGNoIChyZWFzb24pIHsKICAgICBjYXNlIFByb2Zp
bGluZ1JlYXNvbjo6QVBJOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6U2Ny
aXB0UHJvZmlsZXI6OkV2ZW50VHlwZTo6QVBJOworICAgICAgICByZXR1cm4gUHJvdG9jb2w6OlNj
cmlwdFByb2ZpbGVyOjpFdmVudFR5cGU6OkFQSTsKICAgICBjYXNlIFByb2ZpbGluZ1JlYXNvbjo6
TWljcm90YXNrOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6U2NyaXB0UHJv
ZmlsZXI6OkV2ZW50VHlwZTo6TWljcm90YXNrOworICAgICAgICByZXR1cm4gUHJvdG9jb2w6OlNj
cmlwdFByb2ZpbGVyOjpFdmVudFR5cGU6Ok1pY3JvdGFzazsKICAgICBjYXNlIFByb2ZpbGluZ1Jl
YXNvbjo6T3RoZXI6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpTY3JpcHRQ
cm9maWxlcjo6RXZlbnRUeXBlOjpPdGhlcjsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpTY3Jp
cHRQcm9maWxlcjo6RXZlbnRUeXBlOjpPdGhlcjsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6
OkV2ZW50VHlwZTo6T3RoZXI7CisgICAgcmV0dXJuIFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6
RXZlbnRUeXBlOjpPdGhlcjsKIH0KIAogdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
OjphZGRFdmVudChkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSwgUHJvZmlsaW5nUmVh
c29uIHJlYXNvbikKIHsKICAgICBBU1NFUlQoZW5kVGltZSA+PSBzdGFydFRpbWUpOwogCi0gICAg
YXV0byBldmVudCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVudDo6
Y3JlYXRlKCkKKyAgICBhdXRvIGV2ZW50ID0gUHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpFdmVu
dDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXJ0VGltZShzdGFydFRpbWUpCiAgICAgICAgIC5z
ZXRFbmRUaW1lKGVuZFRpbWUpCiAgICAgICAgIC5zZXRUeXBlKHRvUHJvdG9jb2wocmVhc29uKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaAppbmRleCBjOWI4NzYwN2Nm
OGMxYmU1YmFiMTA3YmZkZWJlYmU3ZTljYjEwNWM4Li4yYzJmYTYwZTcyZDQ1ZTc1Y2U2YTk3M2Ex
NTc4MGM0ZDMzODUwM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2Vu
dC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gU2NyaXB0
UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKLSAgICB2b2lkIHN0YXJ0VHJhY2tpbmco
RXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlU2FtcGxlcykgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogaW5jbHVk
ZVNhbXBsZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFRyYWNraW5nKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHByb2dyYW1tYXRpY0NhcHR1cmVTdGFydGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9j
cHBfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQppbmRleCBhOTBjMGRiZmU2NmQwYzRlNDNiZDQwNmZj
MWQ4OGI4NTg4ZWNiMjgyLi41ZjJlOWM4NDYyZDgwMzIyZjVjYWI5NTU4ODFiOThhNWFhNTA4YjM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKQEAgLTEsNiArMSw2IEBACiAjIS91
c3IvYmluL2VudiBweXRob24KICMKLSMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0
eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTE0Miw3ICsxNDIsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
aWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFt
ZSA9IENwcEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAg
ICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICdjb25zdCAlcyogY29uc3QnICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2Nv
bnN0ICVzKicgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5yYXdfbmFtZSgpIGlu
IFsnc3RyaW5nJ106CiAgICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgY3BwX25h
bWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNjUsNyArMTY1LDcgQEAgY2xhc3MgQ3BwR2VuZXJh
dG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFsaWFzZWRUeXBl
KToKICAgICAgICAgICAgIGJ1aWxkZXJfdHlwZSA9IENwcEdlbmVyYXRvci5jcHBfcHJvdG9jb2xf
dHlwZV9mb3JfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIGlzX29wdGlvbmFsOgotICAgICAg
ICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqIGNvbnN0JyAlIGJ1aWxkZXJfdHlwZQorICAgICAg
ICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGJ1aWxkZXJfdHlwZQogICAgICAgICAgICAg
ZWxpZiBfdHlwZS5hbGlhc2VkX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ2ludGVnZXInLCAn
bnVtYmVyJ106CiAgICAgICAgICAgICAgICAgcmV0dXJuIENwcEdlbmVyYXRvci5jcHBfbmFtZV9m
b3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUuYWxpYXNlZF90eXBlKQogICAgICAgICAgICAgZWxpZiBf
dHlwZS5hbGlhc2VkX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ3N0cmluZyddOgpAQCAtMTc5
LDcgKzE3OSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAg
ZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnYW55J106CiAgICAgICAgICAgICAgICAg
cmV0dXJuICdSZWZQdHI8SlNPTjo6VmFsdWU+JwogICAgICAgICAgICAgZWxpZiBpc19vcHRpb25h
bDoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKiBjb25zdCcgJSBjcHBfbmFtZQor
ICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGNwcF9uYW1lCiAgICAgICAgICAg
ICBlbGlmIF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4gWydzdHJpbmcnXToKICAgICAgICAgICAg
ICAgICByZXR1cm4gJ2NvbnN0ICVzJicgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxzZToKQEAg
LTIwNyw3ICsyMDcsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
aWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFt
ZSA9IENwcEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAg
ICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICJJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBfbmFtZQorICAgICAg
ICAgICAgICAgIHJldHVybiAic3RkOjpvcHRpb25hbDwlcz4mIiAlIGNwcF9uYW1lCiAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiAnJXMqJyAlIGNwcF9uYW1lCiAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKToKQEAgLTIzMyw3ICsyMzMsNyBAQCBj
bGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlw
ZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFtZSA9IENwcEdlbmVyYXRvci5j
cHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJhbWV0
ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBfbmFtZQorICAgICAgICAgICAgICAgIHJldHVybiAi
c3RkOjpvcHRpb25hbDwlcz4mIiAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbGlmIF90eXBlLnF1
YWxpZmllZF9uYW1lKCkgaW4gWydpbnRlZ2VyJywgJ251bWJlciddOgogICAgICAgICAgICAgICAg
IHJldHVybiBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQog
ICAgICAgICAgICAgZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnc3RyaW5nJ106CkBA
IC0yNjUsNyArMjY1LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAg
ICAgICBpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnYW55JywgJ29iamVjdCddOgogICAg
ICAgICAgICAgICAgIHJldHVybiAiUmVmUHRyPCVzPiIgJSBDcHBHZW5lcmF0b3IuY3BwX25hbWVf
Zm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgZWxpZiBwYXJhbWV0ZXIuaXNf
b3B0aW9uYWwgYW5kIF90eXBlLnF1YWxpZmllZF9uYW1lKCkgbm90IGluIFsnYm9vbGVhbicsICdz
dHJpbmcnLCAnaW50ZWdlciddOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PCVzPiIgJSBjcHBfbmFtZQorICAgICAgICAgICAgICAgIHJldHVy
biAic3RkOjpvcHRpb25hbDwlcz4iICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNwcF9uYW1lCiAKQEAgLTI3NywxMiArMjc3LDEyIEBAIGNsYXNz
IENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBB
bGlhc2VkVHlwZSk6CiAgICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBDcHBHZW5lcmF0b3IuY3Bw
X3Byb3RvY29sX3R5cGVfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIu
aXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8JXM+IiAlIGJ1aWxkZXJfdHlwZQorICAgICAgICAgICAgICAgIHJldHVybiAi
c3RkOjpvcHRpb25hbDwlcz4iICUgYnVpbGRlcl90eXBlCiAgICAgICAgICAgICByZXR1cm4gJyVz
JyAlIGJ1aWxkZXJfdHlwZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVU
eXBlKToKICAgICAgICAgICAgIGNwcF9uYW1lID0gQ3BwR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9w
cmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25h
bDoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDwlcz4iICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gInN0ZDo6b3B0aW9uYWw8
JXM+IiAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVy
biBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9j
cHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDk3OTMz
MmRmZjBkMmRlZTI1NmMzN2U2NmEzNmVmNTRjMGIyOTNlZjcuLjZmYTEyMjYzOTI0M2NhMmI2NTg0
Y2IzNzlhMjE0ZmI3MzMwMTZmMGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5l
cmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CiAjCi0jIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMjgsNyArMTI4LDcgQEAg
cHJpdmF0ZToKIAogJHtkaXNwYXRjaENhc2VzfQogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2RvbWFpbk5hbWV9IiwgJy4nLCBtZXRob2Qs
ICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9y
dFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCAiJyR7ZG9t
YWluTmFtZX0uIiArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKIH0iIiIpCiAKICAgICBC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uTGFyZ2VTd2l0Y2ggPSAoCkBAIC0xNTYsNyAr
MTU2LDcgQEAgJHtkaXNwYXRjaENhc2VzfQogCiAgICAgYXV0byBmaW5kUmVzdWx0ID0gZGlzcGF0
Y2hNYXAuZ2V0KCkuZmluZChtZXRob2QpOwogICAgIGlmIChmaW5kUmVzdWx0ID09IGRpc3BhdGNo
TWFwLmdldCgpLmVuZCgpKSB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFBy
b3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5n
KCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikp
OworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tl
bmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgIicke2RvbWFpbk5hbWV9LiIgKyBtZXRob2Qg
KyAiJyB3YXMgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3OSw3
ICsxNzksNyBAQCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OiR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcgogICAgIEJhY2tlbmREaXNwYXRjaGVy
SW1wbGVtZW50YXRpb25QcmVwYXJlQ29tbWFuZEFyZ3VtZW50cyA9ICgKICIiIiR7aW5QYXJhbWV0
ZXJEZWNsYXJhdGlvbnN9CiAgICAgaWYgKG1fYmFja2VuZERpc3BhdGNoZXItPmhhc1Byb3RvY29s
RXJyb3JzKCkpIHsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xF
cnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQoIlNv
bWUgYXJndW1lbnRzIG9mIG1ldGhvZCBcJyVzXCcgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIiR7ZG9t
YWluTmFtZX0uJHtjb21tYW5kTmFtZX0iKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIEFT
Q0lJTGl0ZXJhbCB7ICJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgXCcke2RvbWFpbk5hbWV9LiR7
Y29tbWFuZE5hbWV9XCcgY2FuJ3QgYmUgcHJvY2Vzc2VkIiB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICIiIikKQEAgLTI0OSw5ICsyNDksNyBAQCAke2NvbnN0cnVjdG9yRXhhbXBsZX0KICAg
ICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXN1bHQ7CiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0g
dmFsdWUtPmFzT2JqZWN0KHJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVk
LCBjYXN0U3VjY2VlZGVkKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgQmluZGluZ1RyYWl0
czwke29iamVjdFR5cGV9Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUocmVzdWx0LmdldCgp
KTsKLSNlbmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxFRAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
Zigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSlNPTjo6T2JqZWN0QmFzZSksIHR5cGVfY2FzdF9w
cm9ibGVtKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JHtvYmplY3RUeXBlfSo+KHN0YXRpY19j
YXN0PEpTT046Ok9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGQxN2NlMDFkZmE5Y2I1ZGY4ZTFlOTQwZTBj
MmM1MzVlY2IyZWI3MzMuLmJlNmY0NWFlYThkNmM0NDRlNGZkNjgzNTQ2NzFmZjk0YTkxMmM4YWYg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMSw2ICsxLDYg
QEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNC0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChjKSAyMDE0IFVu
aXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0xNjMsOCArMTYzLDggQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogCiAgICAgICAgICAgICBpZiBwYXJhbWV0
ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAgICAgICAgICAgaWYgQ3BwR2VuZXJhdG9yLnNob3VsZF91
c2Vfd3JhcHBlcl9mb3JfcmV0dXJuX3R5cGUocGFyYW1ldGVyLnR5cGUpOgotICAgICAgICAgICAg
ICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGlmICglKHBhcmFt
ZXRlck5hbWUpcy5pc0Fzc2lnbmVkKCkpJyAlIHBhcmFtX2FyZ3MpCi0gICAgICAgICAgICAgICAg
ICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGpzb25NZXNzYWdl
LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksICUo
cGFyYW1ldGVyTmFtZSlzLmdldFZhbHVlKCkpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAg
ICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGlmICglKHBhcmFt
ZXRlck5hbWUpcy5oYXNfdmFsdWUoKSknICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICAg
ICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNvbk1lc3NhZ2Ut
PiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgKiUo
cGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAg
IGlmICglKHBhcmFtZXRlck5hbWUpcyknICUgcGFyYW1fYXJncykKICAgICAgICAgICAgICAgICAg
ICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNvbk1lc3NhZ2Ut
PiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgJShw
YXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQpAQCAtMjU2LDggKzI1Niw4IEBAIGNsYXNz
IENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9y
KToKICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAg
ICAlKHBhcmFtZXRlclR5cGUpcyBvdXRfJShwYXJhbWV0ZXJOYW1lKXM7JyAlIHBhcmFtX2FyZ3Mp
CiAgICAgICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgogICAgICAgICAgICAg
ICAgICAgICBpZiBDcHBHZW5lcmF0b3Iuc2hvdWxkX3VzZV93cmFwcGVyX2Zvcl9yZXR1cm5fdHlw
ZShwYXJhbWV0ZXIudHlwZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVy
X2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBpZiAob3V0XyUocGFyYW1ldGVyTmFtZSlzLmlz
QXNzaWduZWQoKSknICUgcGFyYW1fYXJncykKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dF9w
YXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgICAgICByZXN1bHQtPiUoa2V5ZWRT
ZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgb3V0XyUocGFyYW1l
dGVyTmFtZSlzLmdldFZhbHVlKCkpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgaWYgKG91dF8l
KHBhcmFtZXRlck5hbWUpcy5oYXNfdmFsdWUoKSknICUgcGFyYW1fYXJncykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgICAg
ICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5
KXMiKSwgKm91dF8lKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAg
ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fz
c2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBpZiAob3V0XyUocGFyYW1ldGVyTmFtZSlzKScgJSBw
YXJhbV9hcmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25t
ZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJ
TGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBw
YXJhbV9hcmdzKQpAQCAtMjY2LDcgKzI2Niw3IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVy
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVu
ZCgnICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFy
YW1ldGVyS2V5KXMiKSwgb3V0XyUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKIAot
ICAgICAgICAgICAgICAgIGlmIENwcEdlbmVyYXRvci5zaG91bGRfcGFzc19ieV9jb3B5X2Zvcl9y
ZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSk6CisgICAgICAgICAgICAgICAgaWYgQ3BwR2VuZXJh
dG9yLnNob3VsZF9wYXNzX2J5X2NvcHlfZm9yX3JldHVybl90eXBlKHBhcmFtZXRlci50eXBlKSBv
ciBwYXJhbWV0ZXIuaXNfb3B0aW9uYWwgYW5kIENwcEdlbmVyYXRvci5zaG91bGRfdXNlX3dyYXBw
ZXJfZm9yX3JldHVybl90eXBlKHBhcmFtZXRlci50eXBlKToKICAgICAgICAgICAgICAgICAgICAg
bWV0aG9kX3BhcmFtZXRlcnMuYXBwZW5kKCdvdXRfJyArIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFt
ZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBtZXRob2RfcGFy
YW1ldGVycy5hcHBlbmQoJyZvdXRfJyArIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNf
aGVhZGVyLnB5CmluZGV4IDJhMTU0ZTBhMTBlMjNmODZmZGJjODcxNjI0MTgzMjE2NDE0OGYwYzQu
LjkzOGUyZWU3N2I2YTZmMWM1ZjFiN2FkMWMyZWIzYTM2ZjFmMzIyZjAgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRl
ci5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIwotIyBDb3B5cmln
aHQgKGMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKGMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENv
cHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzY1LDkgKzM2NSw3IEBAIGNsYXNzIENwcFByb3Rv
Y29sVHlwZXNIZWFkZXJHZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgndGVtcGxhdGU8PiAlcyBCaW5kaW5nVHJhaXRzPCVzPiB7JyAlICgnICcuam9pbihz
dHJ1Y3Rfa2V5d29yZHMpLCBhcmd1bWVudFswXSkpCiAgICAgICAgICAgICBpZiBhcmd1bWVudFsx
XToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3N0YXRpYyBSZWZQdHI8JXM+IHJ1bnRp
bWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSk7JyAlIGFyZ3VtZW50WzBdKQotICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxFRCcpCiAgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJyVzIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVl
Kik7JyAlICcgJy5qb2luKGZ1bmN0aW9uX2tleXdvcmRzKSkKLSAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQogICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCd9OycpCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQppbmRleCAyZWIwNzYyZWZjNmY4OTY5ZDI4YTY1NzdlYTk2Yjk2
ODNkNDdkYTUxLi5mN2E5MzJlM2RlYzYyZmUxZTI3MTVmMzY3ZTk4ZTVjM2RhMzMwN2EwIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3By
b3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCiAjCi0jIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMDUs
OSArMjA1LDExIEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRv
cihDcHBHZW5lcmF0b3IpOgogICAgICAgICBzaG91bGRfY291bnRfcHJvcGVydGllcyA9IG5vdCBH
ZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVsZHMob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUpCiAg
ICAgICAgIGxpbmVzID0gW10KIAotICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJ
U0FCTEVEJykKICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkIEJpbmRpbmdUcmFpdHM8JXM+Ojph
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpJyAlIChDcHBHZW5l
cmF0b3IuY3BwX3Byb3RvY29sX3R5cGVfZm9yX3R5cGUob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUp
KSkKICAgICAgICAgbGluZXMuYXBwZW5kKCIiInsKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBV
TlVTRURfUEFSQU0odmFsdWUpOworI2Vsc2UKICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7
CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gb2JqZWN0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRl
ZCA9IHZhbHVlLT5hc09iamVjdChvYmplY3QpOwpAQCAtMjE5LDcgKzIyMSw3IEBAIGNsYXNzIENw
cFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIiICAgIHsKLSAgICAgICAg
SlNPTjo6T2JqZWN0OjppdGVyYXRvciAlKG1lbWJlck5hbWUpc1BvcyA9IG9iamVjdC0+ZmluZChB
U0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlzIikpOworICAgICAgICBhdXRvICUobWVtYmVyTmFt
ZSlzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgiJShtZW1iZXJOYW1lKXMiKSk7CiAg
ICAgICAgIEFTU0VSVCglKG1lbWJlck5hbWUpc1BvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAg
ICAgJShhc3NlcnRNZXRob2QpcyglKG1lbWJlck5hbWUpc1Bvcy0+dmFsdWUuZ2V0KCkpOwogICAg
IH0iIiIgJSBhcmdzKQpAQCAtMjM1LDcgKzIzNyw3IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIiICAgIHsKLSAgICAgICAgSlNPTjo6T2JqZWN0Ojpp
dGVyYXRvciAlKG1lbWJlck5hbWUpc1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUo
bWVtYmVyTmFtZSlzIikpOworICAgICAgICBhdXRvICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0
LT5maW5kKEFTQ0lJTGl0ZXJhbCgiJShtZW1iZXJOYW1lKXMiKSk7CiAgICAgICAgIGlmICglKG1l
bWJlck5hbWUpc1BvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgICAlKGFzc2VydE1l
dGhvZClzKCUobWVtYmVyTmFtZSlzUG9zLT52YWx1ZS5nZXQoKSk7IiIiICUgYXJncykKIApAQCAt
MjQ3LDE1ICsyNDksMTcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yKENwcEdlbmVyYXRvcik6CiAgICAgICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVz
OgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50
ICE9IG9iamVjdC0+c2l6ZSgpKScpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAg
RkFUQUwoIlVuZXhwZWN0ZWQgcHJvcGVydGllcyBpbiBvYmplY3Q6ICVzXFxuIiwgb2JqZWN0LT50
b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9
JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMp
CiAKICAgICBkZWYgX2dlbmVyYXRlX2Fzc2VydGlvbl9mb3JfZW51bShzZWxmLCBlbnVtX21lbWJl
ciwgb2JqZWN0X2RlY2xhcmF0aW9uKToKICAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsaW5l
cy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJU0FCTEVEJykKICAgICAgICAgbGluZXMuYXBwZW5kKCd2
b2lkICVzKEpTT046OlZhbHVlKiB2YWx1ZSknICUgQ3BwR2VuZXJhdG9yLmNwcF9hc3NlcnRpb25f
bWV0aG9kX2Zvcl90eXBlX21lbWJlcihlbnVtX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKSkK
ICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgQVNT
RVJUX0RJU0FCTEVEJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbHNlJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOycpCiAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIFN0cmluZyByZXN1bHQ7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgYm9vbCBj
YXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzU3RyaW5nKHJlc3VsdCk7JykKQEAgLTI2Myw3ICsyNjcs
NyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2Vu
ZXJhdG9yKToKIAogICAgICAgICBhc3NlcnRfY29uZGl0aW9uID0gJyB8fCAnLmpvaW4oWydyZXN1
bHQgPT0gIiVzIicgJSBlbnVtX3ZhbHVlIGZvciBlbnVtX3ZhbHVlIGluIGVudW1fbWVtYmVyLnR5
cGUuZW51bV92YWx1ZXMoKV0pCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVCglcyk7
JyAlIGFzc2VydF9jb25kaXRpb24pCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAg
IGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJ30nKQogCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFj
a2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGExNjRjMDI4ZjFjZGE3NzRl
NGQ4YzNkZTQyMzVjZjUwYWIzNGM3NzQuLjJhMjQ3MThlZTNhNmQ1MDlhYmY3ZGRhMzI0MGQ2MDVm
ZmZhZDZmNmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBA
IC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjCi0jIENvcHlyaWdodCAoYykg
MjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChj
KSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQg
KGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBPYmpDQmFja2VuZERpc3Bh
dGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKIAogICAgICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UocGFyYW1ldGVyLnR5cGUsIEVudW1UeXBlKToKICAgICAgICAg
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKCElcykgeycgJSBvYmpjX2luX3BhcmFt
X25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBiYWNrZW5k
RGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCBTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyIFwnJSVzXCcgb2YgbWV0aG9kIFwn
JSVzXCcgY2Fubm90IGJlIHByb2Nlc3NlZCIsICIlcyIsICIlcy4lcyIpKTsnICUgKHBhcmFtZXRl
ci5wYXJhbWV0ZXJfbmFtZSwgZG9tYWluLmRvbWFpbl9uYW1lLCBjb21tYW5kLmNvbW1hbmRfbmFt
ZSkpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBiYWNrZW5kRGlz
cGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlk
UGFyYW1zLCBBU0NJSUxpdGVyYWwgeyAiUGFyYW1ldGVyIFwnJXNcJyBvZiBtZXRob2QgXCclcy4l
c1wnIGNhbm5vdCBiZSBwcm9jZXNzZWQiIH0pOycgJSAocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1l
LCBkb21haW4uZG9tYWluX25hbWUsIGNvbW1hbmQuY29tbWFuZF9uYW1lKSkKICAgICAgICAgICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybjsnKQogICAgICAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13
aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxh
dGZvcm0uanNvbi1yZXN1bHQKaW5kZXggMTMxMWNjYjk5MTZjZDZmY2RiNmU5YmZhZTQ1ZDY5ZGFj
MzgxMjUwNC4uOWE2MzgyM2NiNDZhZTZhODExNTU1NDdlNzZhY2RiYTQyZDNjNzZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC0yMzgsNyArMjM4
LDcgQEAgdm9pZCBOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgcmVxdWVz
dElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmUKICAgICBpZiAobWV0aG9kID09ICJsb2FkUmVz
b3VyY2UiKQogICAgICAgICBsb2FkUmVzb3VyY2UocmVxdWVzdElkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3Rv
Y29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdc
JycsICJOZXR3b3JrIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNo
ZXI6Ok1ldGhvZE5vdEZvdW5kLCAiJ05ldHdvcmsuIiArIG1ldGhvZCArICInIHdhcyBub3QgZm91
bmQiKTsKIH0KIAogdm9pZCBOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShs
b25nIHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFu
ZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggY2Y2MDM1MDVjNjdhOWQx
YWQxZWE2ZjA4NzI4NjU2NWYyNjkzMTlmNC4uNDBmMzkwOGVkYWZiMThiZmM3ZThmYzJlZTlhYmYx
MDhiZWMxZTliYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1
dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUu
anNvbi1yZXN1bHQKQEAgLTE1NywxMSArMTU3LDExIEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93
ID0gNSwKICAgICAgICAgQmxhY2sgPSA2LAogICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xv
cgotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVy
cm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIG9wdF9vdXRfcGF5bG9h
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRf
c3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBv
cHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJp
bmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEpT
T046OkFycmF5T2Y8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiYgb3B0X291dF9ub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiBvcHRfb3V0X3Rp
bWVzdGFtcCwgc3RkOjpvcHRpb25hbDxKU09OOjpPYmplY3Q+JiBvcHRfb3V0X3ZhbHVlcywgc3Rk
OjpvcHRpb25hbDxKU09OOjpWYWx1ZT4mIG9wdF9vdXRfcGF5bG9hZCwgc3RkOjpvcHRpb25hbDxp
bnQ+JiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9y
cywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRf
cHJpbnRDb2xvcikgPSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7
CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKLSAgICAgICAgdm9p
ZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIHBheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpOworICAgICAgICB2b2lkIHNlbmRTdWNjZXNz
KFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiYgbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYgdGltZXN0YW1wLCBzdGQ6
Om9wdGlvbmFsPEpTT046Ok9iamVjdD4mIHZhbHVlcywgc3RkOjpvcHRpb25hbDxKU09OOjpWYWx1
ZT4mIHBheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+JiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4m
IHByaW50Q29sb3IpOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09w
dGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0
IFN0cmluZyYgaW5fcXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxT
eW5jKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVl
cnksIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmlu
Zyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEpTT046Ok9iamVjdCogb3V0X3Zh
bHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRl
cm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
KiBvdXRfc2NyZWVuQ29sb3IsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmlu
dENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBSCiAgICAgZWxzZSBpZiAobWV0aG9kID09ICJleGVjdXRlU1FMQXN5bmMi
KQogICAgICAgICBleGVjdXRlU1FMQXN5bmMocmVxdWVzdElkLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycs
ICJEYXRhYmFzZSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVy
OjpNZXRob2ROb3RGb3VuZCwgIidEYXRhYmFzZS4iICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3Vu
ZCIpOwogfQogCiB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYgcGFyYW1ldGVycykKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyByZXF1ZXN0
SQogICAgIGludCBpbl9kYXRhYmFzZUlkID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0SW50ZWdl
cihwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0cik7
CiAgICAgU3RyaW5nIGluX3F1ZXJ5ID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0U3RyaW5nKHBh
cmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0cik7CiAgICAgaWYg
KG1fYmFja2VuZERpc3BhdGNoZXItPmhhc1Byb3RvY29sRXJyb3JzKCkpIHsKLSAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6
SW52YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAn
JXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90
b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBBU0NJSUxpdGVyYWwg
eyAiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICdEYXRhYmFzZS5leGVjdXRlU1FMU3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yOTUsMzggKzI5NSwzOCBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyByZXF1ZXN0SQog
ICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlc3VsdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4g
b3V0X2NvbHVtbk5hbWVzOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJp
bmc+IG91dF9ub3RlczsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91Ymxl
PiBvdXRfdGltZXN0YW1wOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09O
OjpPYmplY3Q+IG91dF92YWx1ZXM7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PEpTT046OlZhbHVlPiBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8aW50PiBvdXRfZGF0YWJhc2VJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gb3V0
X25vdGVzOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBvdXRfdGltZXN0YW1wOworICAgIHN0
ZDo6b3B0aW9uYWw8SlNPTjo6T2JqZWN0PiBvdXRfdmFsdWVzOworICAgIHN0ZDo6b3B0aW9uYWw8
SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvdXRfZGF0
YWJhc2VJZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwotICAg
IG1fYWdlbnQtPmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoZXJyb3IsIGluX2Rh
dGFiYXNlSWQsIGluX3F1ZXJ5LCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGlt
ZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3Nx
bEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50
Q29sb3IpOworICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMo
ZXJyb3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5LCBvdXRfY29sdW1uTmFtZXMsIG91dF9ub3Rl
cywgb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgb3V0X3BheWxvYWQsIG91dF9kYXRhYmFzZUlk
LCBvdXRfc3FsRXJyb3IsIG91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgb3V0
X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewogICAgICAgICBpZiAo
b3V0X2NvbHVtbk5hbWVzKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRBcnJheShBU0NJSUxpdGVy
YWwoImNvbHVtbk5hbWVzIiksIG91dF9jb2x1bW5OYW1lcyk7Ci0gICAgICAgIGlmIChvdXRfbm90
ZXMuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJub3RlcyIpLCBvdXRfbm90ZXMuZ2V0VmFsdWUoKSk7Ci0gICAgICAgIGlmIChvdXRfdGlt
ZXN0YW1wLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0RG91YmxlKEFTQ0lJ
TGl0ZXJhbCgidGltZXN0YW1wIiksIG91dF90aW1lc3RhbXAuZ2V0VmFsdWUoKSk7Ci0gICAgICAg
IGlmIChvdXRfdmFsdWVzLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0T2Jq
ZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIG91dF92YWx1ZXMuZ2V0VmFsdWUoKSk7Ci0gICAg
ICAgIGlmIChvdXRfcGF5bG9hZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNl
dFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5bG9hZC5nZXRWYWx1ZSgpKTsK
LSAgICAgICAgaWYgKG91dF9kYXRhYmFzZUlkLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJl
c3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNl
SWQuZ2V0VmFsdWUoKSk7CisgICAgICAgIGlmIChvdXRfbm90ZXMuaGFzX3ZhbHVlKCkpCisgICAg
ICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksICpvdXRfbm90
ZXMpOworICAgICAgICBpZiAob3V0X3RpbWVzdGFtcC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAg
IHJlc3VsdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICpvdXRfdGltZXN0
YW1wKTsKKyAgICAgICAgaWYgKG91dF92YWx1ZXMuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICBy
ZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAqb3V0X3ZhbHVlcyk7Cisg
ICAgICAgIGlmIChvdXRfcGF5bG9hZC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3VsdC0+
c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICpvdXRfcGF5bG9hZCk7CisgICAgICAg
IGlmIChvdXRfZGF0YWJhc2VJZC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0
SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgKm91dF9kYXRhYmFzZUlkKTsKICAg
ICAgICAgaWYgKG91dF9zcWxFcnJvcikKICAgICAgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKLSAgICAgICAgaWYgKG91dF9z
Y3JlZW5Db2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIG91dF9zY3JlZW5Db2xvci5nZXRWYWx1ZSgpKTsK
KyAgICAgICAgaWYgKG91dF9zY3JlZW5Db2xvci5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJl
c3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgKm91dF9zY3JlZW5D
b2xvcik7CiAgICAgICAgIGlmIChvdXRfYWx0ZXJuYXRlQ29sb3JzKQogICAgICAgICAgICAgcmVz
dWx0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBvdXRfYWx0ZXJu
YXRlQ29sb3JzKTsKLSAgICAgICAgaWYgKG91dF9wcmludENvbG9yLmlzQXNzaWduZWQoKSkKLSAg
ICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBv
dXRfcHJpbnRDb2xvci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgaWYgKG91dF9wcmludENvbG9yLmhh
c192YWx1ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJw
cmludENvbG9yIiksICpvdXRfcHJpbnRDb2xvcik7CiAgICAgfQogICAgIGlmICghZXJyb3IubGVu
Z3RoKCkpCiAgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0
SWQsIFdURk1vdmUocmVzdWx0KSwgZmFsc2UpOwpAQCAtMzM2LDI5ICszMzYsMjkgQEAgdm9pZCBE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzKGxvbmcgcmVxdWVzdEkKIAogRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4
ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJh
Y2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZShXVEZNb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQogCi12b2lkIERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIGNv
bHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIHBheWxvYWQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIGNv
bHVtbk5hbWVzLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIG5vdGVzLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4mIHRpbWVzdGFtcCwgc3RkOjpvcHRpb25hbDxKU09OOjpPYmplY3Q+JiB2YWx1ZXMsIHN0
ZDo6b3B0aW9uYWw8SlNPTjo6VmFsdWU+JiBwYXlsb2FkLCBzdGQ6Om9wdGlvbmFsPGludD4mIGRh
dGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYg
c3FsRXJyb3IsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+JiBwcmludENvbG9yKQogewogICAgIFJlZjxKU09OOjpPYmpl
Y3Q+IGpzb25NZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBpZiAoY29sdW1u
TmFtZXMpCiAgICAgICAgIGpzb25NZXNzYWdlLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVt
bk5hbWVzIiksIGNvbHVtbk5hbWVzKTsKLSAgICBpZiAobm90ZXMuaXNBc3NpZ25lZCgpKQotICAg
ICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMu
Z2V0VmFsdWUoKSk7Ci0gICAgaWYgKHRpbWVzdGFtcC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgIGpz
b25NZXNzYWdlLT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdGltZXN0YW1w
LmdldFZhbHVlKCkpOwotICAgIGlmICh2YWx1ZXMuaXNBc3NpZ25lZCgpKQotICAgICAgICBqc29u
TWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIHZhbHVlcy5nZXRWYWx1
ZSgpKTsKLSAgICBpZiAocGF5bG9hZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgIGpzb25NZXNzYWdl
LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgcGF5bG9hZC5nZXRWYWx1ZSgpKTsK
LSAgICBpZiAoZGF0YWJhc2VJZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgIGpzb25NZXNzYWdlLT5z
ZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBkYXRhYmFzZUlkLmdldFZhbHVl
KCkpOworICAgIGlmIChub3Rlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAganNvbk1lc3NhZ2UtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksICpub3Rlcyk7CisgICAgaWYgKHRpbWVzdGFt
cC5oYXNfdmFsdWUoKSkKKyAgICAgICAganNvbk1lc3NhZ2UtPnNldERvdWJsZShBU0NJSUxpdGVy
YWwoInRpbWVzdGFtcCIpLCAqdGltZXN0YW1wKTsKKyAgICBpZiAodmFsdWVzLmhhc192YWx1ZSgp
KQorICAgICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiks
ICp2YWx1ZXMpOworICAgIGlmIChwYXlsb2FkLmhhc192YWx1ZSgpKQorICAgICAgICBqc29uTWVz
c2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICpwYXlsb2FkKTsKKyAgICBp
ZiAoZGF0YWJhc2VJZC5oYXNfdmFsdWUoKSkKKyAgICAgICAganNvbk1lc3NhZ2UtPnNldEludGVn
ZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICpkYXRhYmFzZUlkKTsKICAgICBpZiAoc3Fs
RXJyb3IpCiAgICAgICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxF
cnJvciIpLCBzcWxFcnJvcik7Ci0gICAgaWYgKHNjcmVlbkNvbG9yLmlzQXNzaWduZWQoKSkKLSAg
ICAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiks
IHNjcmVlbkNvbG9yLmdldFZhbHVlKCkpOworICAgIGlmIChzY3JlZW5Db2xvci5oYXNfdmFsdWUo
KSkKKyAgICAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNv
bG9yIiksICpzY3JlZW5Db2xvcik7CiAgICAgaWYgKGFsdGVybmF0ZUNvbG9ycykKICAgICAgICAg
anNvbk1lc3NhZ2UtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIGFs
dGVybmF0ZUNvbG9ycyk7Ci0gICAgaWYgKHByaW50Q29sb3IuaXNBc3NpZ25lZCgpKQotICAgICAg
ICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBwcmlu
dENvbG9yLmdldFZhbHVlKCkpOworICAgIGlmIChwcmludENvbG9yLmhhc192YWx1ZSgpKQorICAg
ICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAq
cHJpbnRDb2xvcik7CiAgICAgQ2FsbGJhY2tCYXNlOjpzZW5kU3VjY2VzcyhXVEZNb3ZlKGpzb25N
ZXNzYWdlKSk7CiB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgcmVxdWVz
dAogICAgIGludCBpbl9kYXRhYmFzZUlkID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0SW50ZWdl
cihwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0cik7
CiAgICAgU3RyaW5nIGluX3F1ZXJ5ID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0U3RyaW5nKHBh
cmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0cik7CiAgICAgaWYg
KG1fYmFja2VuZERpc3BhdGNoZXItPmhhc1Byb3RvY29sRXJyb3JzKCkpIHsKLSAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6
SW52YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAn
JXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlcyIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJv
dG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgQVNDSUlMaXRlcmFs
IHsgIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXMnIGNhbid0IGJlIHByb2Nlc3NlZCIgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZQog
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0SW50ZWdlcihw
YXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0cik7CiAg
ICAgU3RyaW5nIGluX3F1ZXJ5ID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0U3RyaW5nKHBhcmFt
ZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0cik7CiAgICAgaWYgKG1f
YmFja2VuZERpc3BhdGNoZXItPmhhc1Byb3RvY29sRXJyb3JzKCkpIHsKLSAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52
YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMn
IGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3luYyIpKTsKKyAgICAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0
Y2hlcjo6SW52YWxpZFBhcmFtcywgQVNDSUlMaXRlcmFsIHsgIlNvbWUgYXJndW1lbnRzIG9mIG1l
dGhvZCAnRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmMnIGNhbid0IGJlIHByb2Nlc3NlZCIgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIHJlcXVlc3RJZCwgUmVmUHRy
PEpTT046Ok9iagogICAgIGludCBpbl9kYXRhYmFzZUlkID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+
Z2V0SW50ZWdlcihwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
bnVsbHB0cik7CiAgICAgU3RyaW5nIGluX3F1ZXJ5ID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0
U3RyaW5nKHBhcmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0cik7
CiAgICAgaWYgKG1fYmFja2VuZERpc3BhdGNoZXItPmhhc1Byb3RvY29sRXJyb3JzKCkpIHsKLSAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlz
cGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9m
IG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5
bmMiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3Io
QmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIEFTQ0lJTGl0ZXJhbCB7ICJTb21lIGFy
Z3VtZW50cyBvZiBtZXRob2QgJ0RhdGFiYXNlLmV4ZWN1dGVTUUxBc3luYycgY2FuJ3QgYmUgcHJv
Y2Vzc2VkIiB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CmluZGV4IDJlNzU4MzgxNzMxYWI4MWM2MDE3ZjgwOGM5YjJhNTU2NjE4NGZkNjcu
LjljNjRmMjhmZjQ2OWE0OTkyZGE2ZjBmNGVmMjUxMGEwMWRlNjgyMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIEFsdGVy
bmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfkFsdGVybmF0ZURhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2NvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcqIGNvbnN0IGluX25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IGluX3RpbWVz
dGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVlKiBj
b25zdCBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGNvbnN0IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpT
T046Ok9iamVjdCogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogY29uc3QgaW5fc2NyZWVuQ29s
b3IsIGNvbnN0IEpTT046OkFycmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyog
Y29uc3QgaW5fcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBKU09OOjpBcnJheSogaW5fY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1w
LCBjb25zdCBKU09OOjpPYmplY3QqIGluX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIGluX3Bh
eWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl9z
cWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkq
IGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSlNPTjo6QXJyYXkmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVz
LCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3ZhbHVlcywgSlNP
Tjo6VmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVj
dCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046
OkFycmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikg
PSAwOwogfTsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93ID0g
NSwKICAgICAgICAgQmxhY2sgPSA2LAogICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xvcgot
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5n
JiwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBj
b25zdCBvcHRfaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3Qgb3B0X2luX3RpbWVzdGFtcCwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBvcHRfaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSogY29u
c3Qgb3B0X2luX3BheWxvYWQsIGNvbnN0IGludCogY29uc3Qgb3B0X2luX2RhdGFiYXNlSWQsIGNv
bnN0IEpTT046Ok9iamVjdCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9w
dF9pbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9hbHRlcm5hdGVDb2xv
cnMsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0X2luX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpB
cnJheU9mPFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVl
bkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4m
IG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpB
cnJheSogb3B0X2luX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIG9wdF9pbl9ub3RlcywgY29u
c3QgZG91YmxlKiBvcHRfaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl92
YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVlKiBvcHRfaW5fcGF5bG9hZCwgY29uc3QgaW50KiBvcHRf
aW5fZGF0YWJhc2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRfaW5fc3FsRXJyb3IsIGNvbnN0
IFN0cmluZyogb3B0X2luX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogb3B0X2luX2Fs
dGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBvcHRfaW5fcHJpbnRDb2xvciwgUmVmUHRyPEpT
T046OkFycmF5T2Y8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiYgb3B0X291dF9ub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiBvcHRfb3V0X3Rp
bWVzdGFtcCwgc3RkOjpvcHRpb25hbDxKU09OOjpPYmplY3Q+JiBvcHRfb3V0X3ZhbHVlcywgc3Rk
OjpvcHRpb25hbDxKU09OOjpWYWx1ZT4mIG9wdF9vdXRfcGF5bG9hZCwgc3RkOjpvcHRpb25hbDxp
bnQ+JiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9y
cywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRf
cHJpbnRDb2xvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9i
amVjdCYgaW5fdmFsdWVzLCBKU09OOjpWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgSlNPTjo6T2JqZWN0JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3Jl
ZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3Ry
aW5nJiBpbl9wcmludENvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgb3V0X2Nv
bHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBKU09O
OjpPYmplY3QqIG91dF92YWx1ZXMsIEpTT046OlZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRf
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4m
IG91dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMqIG91dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwpAQCAtMjUw
LDcgKzI1MCw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9u
ZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSCiAgICAgZWxzZSBpZiAobWV0aG9k
ID09ICJleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiKQogICAgICAgICBleGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnMocmVxdWVzdElkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2Vu
ZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJEYXRhYmFzZSIs
ICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RG
b3VuZCwgIidEYXRhYmFzZS4iICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOwogfQogCiB2
b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycykKQEAg
LTI2MCw3ICsyNjAsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIFJlZgogICAgIGJvb2wgb3B0X2lu
X25vdGVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAgICBTdHJpbmcgb3B0X2luX25vdGVzID0gbV9i
YWNrZW5kRGlzcGF0Y2hlci0+Z2V0U3RyaW5nKHBhcmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgibm90ZXMiKSwgJm9wdF9pbl9ub3Rlc192YWx1ZUZvdW5kKTsKICAgICBib29sIG9wdF9pbl90
aW1lc3RhbXBfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxkb3VibGU+IG9wdF9pbl90aW1lc3RhbXAgPSBtX2JhY2tlbmREaXNwYXRjaGVyLT5n
ZXREb3VibGUocGFyYW1ldGVycy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgJm9w
dF9pbl90aW1lc3RhbXBfdmFsdWVGb3VuZCk7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG9w
dF9pbl90aW1lc3RhbXAgPSBtX2JhY2tlbmREaXNwYXRjaGVyLT5nZXREb3VibGUocGFyYW1ldGVy
cy5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgJm9wdF9pbl90aW1lc3RhbXBfdmFs
dWVGb3VuZCk7CiAgICAgYm9vbCBvcHRfaW5fdmFsdWVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAg
ICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvcHRfaW5fdmFsdWVzID0gbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+Z2V0T2JqZWN0KHBhcmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksICZv
cHRfaW5fdmFsdWVzX3ZhbHVlRm91bmQpOwogICAgIGJvb2wgb3B0X2luX3BheWxvYWRfdmFsdWVG
b3VuZCA9IGZhbHNlOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwgUmVm
CiAgICAgYm9vbCBvcHRfaW5fcHJpbnRDb2xvcl92YWx1ZUZvdW5kID0gZmFsc2U7CiAgICAgU3Ry
aW5nIG9wdF9pbl9wcmludENvbG9yID0gbV9iYWNrZW5kRGlzcGF0Y2hlci0+Z2V0U3RyaW5nKHBh
cmFtZXRlcnMuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAmb3B0X2luX3ByaW50
Q29sb3JfdmFsdWVGb3VuZCk7CiAgICAgaWYgKG1fYmFja2VuZERpc3BhdGNoZXItPmhhc1Byb3Rv
Y29sRXJyb3JzKCkpIHsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9j
b2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQo
IlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRh
YmFzZS5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzIikpOworICAgICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlk
UGFyYW1zLCBBU0NJSUxpdGVyYWwgeyAiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICdEYXRhYmFz
ZS5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzJyBjYW4ndCBiZSBwcm9jZXNzZWQiIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yOTAsMzggKzI5MCwzOCBAQCB2b2lkIERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBy
ZXF1ZXN0SWQsIFJlZgogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmpl
Y3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxTdHJpbmc+IG91dF9ub3RlczsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8ZG91YmxlPiBvdXRfdGltZXN0YW1wOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+IG91dF92YWx1ZXM7Ci0gICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50PiBvdXRfZGF0YWJhc2VJZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gb3V0X25vdGVzOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBvdXRfdGlt
ZXN0YW1wOworICAgIHN0ZDo6b3B0aW9uYWw8SlNPTjo6T2JqZWN0PiBvdXRfdmFsdWVzOworICAg
IHN0ZDo6b3B0aW9uYWw8SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBvdXRfZGF0YWJhc2VJZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3Jz
OwogICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91dF9w
cmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoZXJy
b3IsIG9wdF9pbl9jb2x1bW5OYW1lc192YWx1ZUZvdW5kID8gb3B0X2luX2NvbHVtbk5hbWVzLmdl
dCgpIDogbnVsbHB0ciwgb3B0X2luX25vdGVzX3ZhbHVlRm91bmQgPyAmb3B0X2luX25vdGVzIDog
bnVsbHB0ciwgb3B0X2luX3RpbWVzdGFtcF92YWx1ZUZvdW5kID8gJm9wdF9pbl90aW1lc3RhbXAg
OiBudWxscHRyLCBvcHRfaW5fdmFsdWVzX3ZhbHVlRm91bmQgPyBvcHRfaW5fdmFsdWVzLmdldCgp
IDogbnVsbHB0ciwgb3B0X2luX3BheWxvYWRfdmFsdWVGb3VuZCA/IG9wdF9pbl9wYXlsb2FkLmdl
dCgpIDogbnVsbHB0ciwgb3B0X2luX2RhdGFiYXNlSWRfdmFsdWVGb3VuZCA/ICZvcHRfaW5fZGF0
YWJhc2VJZCA6IG51bGxwdHIsIG9wdF9pbl9zcWxFcnJvcl92YWx1ZUZvdW5kID8gb3B0X2luX3Nx
bEVycm9yLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3NjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPyAm
b3B0X2luX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgb3B0X2luX2FsdGVybmF0ZUNvbG9yc192YWx1
ZUZvdW5kID8gb3B0X2luX2FsdGVybmF0ZUNvbG9ycy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9w
cmludENvbG9yX3ZhbHVlRm91bmQgPyAmb3B0X2luX3ByaW50Q29sb3IgOiBudWxscHRyLCBvdXRf
Y29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0
X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9y
LCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOworICAgIG1fYWdlbnQtPmV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIG9wdF9pbl9jb2x1bW5OYW1lc192YWx1
ZUZvdW5kID8gb3B0X2luX2NvbHVtbk5hbWVzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX25vdGVz
X3ZhbHVlRm91bmQgPyAmb3B0X2luX25vdGVzIDogbnVsbHB0ciwgb3B0X2luX3RpbWVzdGFtcF92
YWx1ZUZvdW5kID8gJm9wdF9pbl90aW1lc3RhbXAgOiBudWxscHRyLCBvcHRfaW5fdmFsdWVzX3Zh
bHVlRm91bmQgPyBvcHRfaW5fdmFsdWVzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3BheWxvYWRf
dmFsdWVGb3VuZCA/IG9wdF9pbl9wYXlsb2FkLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX2RhdGFi
YXNlSWRfdmFsdWVGb3VuZCA/ICZvcHRfaW5fZGF0YWJhc2VJZCA6IG51bGxwdHIsIG9wdF9pbl9z
cWxFcnJvcl92YWx1ZUZvdW5kID8gb3B0X2luX3NxbEVycm9yLmdldCgpIDogbnVsbHB0ciwgb3B0
X2luX3NjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPyAmb3B0X2luX3NjcmVlbkNvbG9yIDogbnVsbHB0
ciwgb3B0X2luX2FsdGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kID8gb3B0X2luX2FsdGVybmF0ZUNv
bG9ycy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9wcmludENvbG9yX3ZhbHVlRm91bmQgPyAmb3B0
X2luX3ByaW50Q29sb3IgOiBudWxscHRyLCBvdXRfY29sdW1uTmFtZXMsIG91dF9ub3Rlcywgb3V0
X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgb3V0X3BheWxvYWQsIG91dF9kYXRhYmFzZUlkLCBvdXRf
c3FsRXJyb3IsIG91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgb3V0X3ByaW50
Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewogICAgICAgICBpZiAob3V0X2Nv
bHVtbk5hbWVzKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNv
bHVtbk5hbWVzIiksIG91dF9jb2x1bW5OYW1lcyk7Ci0gICAgICAgIGlmIChvdXRfbm90ZXMuaXNB
c3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJu
b3RlcyIpLCBvdXRfbm90ZXMuZ2V0VmFsdWUoKSk7Ci0gICAgICAgIGlmIChvdXRfdGltZXN0YW1w
LmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJh
bCgidGltZXN0YW1wIiksIG91dF90aW1lc3RhbXAuZ2V0VmFsdWUoKSk7Ci0gICAgICAgIGlmIChv
dXRfdmFsdWVzLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgidmFsdWVzIiksIG91dF92YWx1ZXMuZ2V0VmFsdWUoKSk7Ci0gICAgICAgIGlm
IChvdXRfcGF5bG9hZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFZhbHVl
KEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5bG9hZC5nZXRWYWx1ZSgpKTsKLSAgICAg
ICAgaWYgKG91dF9kYXRhYmFzZUlkLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+
c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQuZ2V0
VmFsdWUoKSk7CisgICAgICAgIGlmIChvdXRfbm90ZXMuaGFzX3ZhbHVlKCkpCisgICAgICAgICAg
ICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksICpvdXRfbm90ZXMpOwor
ICAgICAgICBpZiAob3V0X3RpbWVzdGFtcC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3Vs
dC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICpvdXRfdGltZXN0YW1wKTsK
KyAgICAgICAgaWYgKG91dF92YWx1ZXMuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXN1bHQt
PnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAqb3V0X3ZhbHVlcyk7CisgICAgICAg
IGlmIChvdXRfcGF5bG9hZC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0VmFs
dWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICpvdXRfcGF5bG9hZCk7CisgICAgICAgIGlmIChv
dXRfZGF0YWJhc2VJZC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0SW50ZWdl
cihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgKm91dF9kYXRhYmFzZUlkKTsKICAgICAgICAg
aWYgKG91dF9zcWxFcnJvcikKICAgICAgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0
ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKLSAgICAgICAgaWYgKG91dF9zY3JlZW5D
b2xvci5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoInNjcmVlbkNvbG9yIiksIG91dF9zY3JlZW5Db2xvci5nZXRWYWx1ZSgpKTsKKyAgICAg
ICAgaWYgKG91dF9zY3JlZW5Db2xvci5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3VsdC0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgKm91dF9zY3JlZW5Db2xvcik7
CiAgICAgICAgIGlmIChvdXRfYWx0ZXJuYXRlQ29sb3JzKQogICAgICAgICAgICAgcmVzdWx0LT5z
ZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBvdXRfYWx0ZXJuYXRlQ29s
b3JzKTsKLSAgICAgICAgaWYgKG91dF9wcmludENvbG9yLmlzQXNzaWduZWQoKSkKLSAgICAgICAg
ICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBvdXRfcHJp
bnRDb2xvci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgaWYgKG91dF9wcmludENvbG9yLmhhc192YWx1
ZSgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENv
bG9yIiksICpvdXRfcHJpbnRDb2xvcik7CiAgICAgfQogICAgIGlmICghZXJyb3IubGVuZ3RoKCkp
CiAgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdU
Rk1vdmUocmVzdWx0KSwgZmFsc2UpOwpAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVz
dElkLCBSZWZQCiAgICAgUmVmUHRyPEpTT046OkFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBt
X2JhY2tlbmREaXNwYXRjaGVyLT5nZXRBcnJheShwYXJhbWV0ZXJzLmdldCgpLCBBU0NJSUxpdGVy
YWwoImFsdGVybmF0ZUNvbG9ycyIpLCBudWxscHRyKTsKICAgICBTdHJpbmcgaW5fcHJpbnRDb2xv
ciA9IG1fYmFja2VuZERpc3BhdGNoZXItPmdldFN0cmluZyhwYXJhbWV0ZXJzLmdldCgpLCBBU0NJ
SUxpdGVyYWwoInByaW50Q29sb3IiKSwgbnVsbHB0cik7CiAgICAgaWYgKG1fYmFja2VuZERpc3Bh
dGNoZXItPmhhc1Byb3RvY29sRXJyb3JzKCkpIHsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywg
U3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHBy
b2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiKSk7CisgICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3Bh
dGNoZXI6OkludmFsaWRQYXJhbXMsIEFTQ0lJTGl0ZXJhbCB7ICJTb21lIGFyZ3VtZW50cyBvZiBt
ZXRob2QgJ0RhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycycgY2FuJ3QgYmUgcHJv
Y2Vzc2VkIiB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzYzLDcgKzc2Myw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6CiAgICAgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIoaWQ8VGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVs
ZWdhdGUgPSBoYW5kbGVyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEpTT046OkFycmF5KiBpbl9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCBpbl90
aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1
ZSogY29uc3QgaW5fcGF5bG9hZCwgY29uc3QgaW50KiBjb25zdCBpbl9kYXRhYmFzZUlkLCBjb25z
dCBKU09OOjpPYmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IGluX3NjcmVl
bkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJp
bmcqIGNvbnN0IGluX3ByaW50Q29sb3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBjb25zdCBKU09OOjpBcnJh
eSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSog
aW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIGluX3ZhbHVlcywgY29uc3QgSlNPTjo6
VmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgSlNPTjo6
T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3Qg
SlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENv
bG9yKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzKGxvbmcgcmVxdWVzdElkLCBjb25zdCBKU09OOjpBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9i
amVjdCYgaW5fdmFsdWVzLCBKU09OOjpWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgSlNPTjo6T2JqZWN0JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3Jl
ZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3Ry
aW5nJiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlk
PFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4+IG1fZGVsZWdhdGU7CkBAIC04MTMs
NyArODEzLDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgT2Jq
Q0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEpTT046OkFycmF5KiBpbl9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCBpbl90
aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1
ZSogY29uc3QgaW5fcGF5bG9hZCwgY29uc3QgaW50KiBjb25zdCBpbl9kYXRhYmFzZUlkLCBjb25z
dCBKU09OOjpPYmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IGluX3NjcmVl
bkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJp
bmcqIGNvbnN0IGluX3ByaW50Q29sb3IpCit2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElk
LCBjb25zdCBKU09OOjpBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90
ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QqIGluX3Zh
bHVlcywgY29uc3QgSlNPTjo6VmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJh
c2VJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9z
Y3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3Qg
U3RyaW5nKiBpbl9wcmludENvbG9yKQogewogICAgIGlkIGVycm9yQ2FsbGJhY2sgPSBeKE5TU3Ry
aW5nICplcnJvcikgewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2Nv
bEVycm9yKHJlcXVlc3RJZCwgQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7
CkBAIC05MjIsMTMgKzkyMiwxMyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZQogICAgIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6JmluX3NxbEVycm9yXSBhdXRvcmVs
ZWFzZV07CiAgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnM+IG9faW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xvcik7CiAgICAgaWYgKCFvX2luX3NjcmVl
bkNvbG9yKSB7Ci0gICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJy
b3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJQYXJh
bWV0ZXIgJyVzJyBvZiBtZXRob2QgJyVzJyBjYW5ub3QgYmUgcHJvY2Vzc2VkIiwgInNjcmVlbkNv
bG9yIiwgIkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKKyAgICAgICAg
YmFja2VuZERpc3BhdGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hl
cjo6SW52YWxpZFBhcmFtcywgQVNDSUlMaXRlcmFsIHsgIlBhcmFtZXRlciAnc2NyZWVuQ29sb3In
IG9mIG1ldGhvZCAnRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzJyBjYW5ub3Qg
YmUgcHJvY2Vzc2VkIiB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29sb3JzID0gdG9PYmpDU3RyaW5nQXJyYXkoJmlu
X2FsdGVybmF0ZUNvbG9ycyk7CiAgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IG9faW5fcHJpbnRDb2xvciA9
IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVyc1ByaW50Q29sb3I+KGluX3ByaW50Q29sb3IpOwogICAgIGlmICghb19pbl9wcmlu
dENvbG9yKSB7Ci0gICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJy
b3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJQYXJh
bWV0ZXIgJyVzJyBvZiBtZXRob2QgJyVzJyBjYW5ub3QgYmUgcHJvY2Vzc2VkIiwgInByaW50Q29s
b3IiLCAiRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOworICAgICAgICBi
YWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVy
OjpJbnZhbGlkUGFyYW1zLCBBU0NJSUxpdGVyYWwgeyAiUGFyYW1ldGVyICdwcmludENvbG9yJyBv
ZiBtZXRob2QgJ0RhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycycgY2Fubm90IGJl
IHByb2Nlc3NlZCIgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxh
YmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDhmMzlkOTI0OTFkNzEzYjhlNWVjNzc4MmU4M2VmZDZj
ODY0YWQwYWEuLjhhODI0ZmM0NzY0MzM0NjQxY2M0YTY2OWZhMWJjM2E0MjVlNzA4NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQg
RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBtZXRob2QsIFJlCiAgICAgaWYgKG1ldGhvZCA9PSAiZW5hYmxlIikKICAgICAgICAg
ZW5hYmxlKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgZWxzZQotICAgICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRj
aGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRG9tYWluQSIsICcuJywgbWV0
aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgIidE
b21haW5BLiIgKyBtZXRob2QgKyAiJyB3YXMgbm90IGZvdW5kIik7CiB9CiAKIHZvaWQgRG9tYWlu
QUJhY2tlbmREaXNwYXRjaGVyOjplbmFibGUobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYpCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBEb21haW5CQmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmUKICAg
ICBpZiAobWV0aG9kID09ICJlbmFibGUiKQogICAgICAgICBlbmFibGUocmVxdWVzdElkLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBt
YWtlU3RyaW5nKCdcJycsICJEb21haW5CIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQi
KSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFj
a2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCAiJ0RvbWFpbkIuIiArIG1ldGhvZCArICIn
IHdhcyBub3QgZm91bmQiKTsKIH0KIAogdm9pZCBEb21haW5CQmFja2VuZERpc3BhdGNoZXI6OmVu
YWJsZShsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4
IDU4Njc0ZDkzYzJmY2FlOWEwYTA0OGJiNDZkYjYzOWJkN2VhMWVkYjMuLjM0OWM5MDNiZTc1OTgx
ZWY3N2YwY2RhYTE5NTY0MjFmMGM1ODFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0
aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13
aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdApAQCAtMjk1LDcgKzI5NSw3IEBA
IHZvaWQgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSCiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNl
MSIpCiAgICAgICAgIGxvYWRSZXNvdXJjZTEocmVxdWVzdElkLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycs
ICJOZXR3b3JrMSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVy
OjpNZXRob2ROb3RGb3VuZCwgIidOZXR3b3JrMS4iICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3Vu
ZCIpOwogfQogCiB2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEo
bG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpCkBAIC0zNTksNyArMzU5LDcg
QEAgdm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFIKIAogICAgIGF1dG8gZmluZFJlc3VsdCA9IGRpc3Bh
dGNoTWFwLmdldCgpLmZpbmQobWV0aG9kKTsKICAgICBpZiAoZmluZFJlc3VsdCA9PSBkaXNwYXRj
aE1hcC5nZXQoKS5lbmQoKSkgewotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmlu
ZygnXCcnLCAiTmV0d29yazMiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlz
cGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsICInTmV0d29yazMuIiArIG1ldGhvZCArICInIHdhcyBu
b3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApp
bmRleCBkMDU0YjgyOWI1N2ViNjU0NzNhNWNjNDY1Njg4OTMyMmZiNzBhY2Y3Li4yYWVkYjczNzQ1
YzAwYjVkODBmNzU2OWNkZTkzOGRlMzFjZTFlMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAt
MjUzLDcgKzI1Myw3IEBAIHZvaWQgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRoCiAgICAgaWYgKG1ldGhvZCA9
PSAiY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUiKQogICAgICAgICBjb21tYW5kV2l0aEVudW1S
ZXR1cm5WYWx1ZShyZXF1ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlz
cGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkNvbW1hbmREb21haW4i
LCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90
Rm91bmQsICInQ29tbWFuZERvbWFpbi4iICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOwog
fQogCiB2b2lkIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVt
UmV0dXJuVmFsdWUobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRl
eCAxZDk5NjZhYTUxOGE1Y2ZhMGVhNzA1MTQ3NTExOWQ3ZWY0ZDhiYzI0Li40Nzg2MzdjYzY2OTJk
ZTZjMDMyOTBkZWYxOTY3N2ZlNDc2MDAyZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0
aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRo
LW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFz
cyBGcm9udGVuZFJvdXRlcjsKIGNsYXNzIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1
YmxpYzoKICAgICBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZFJvdXRlciYgZnJv
bnRlbmRSb3V0ZXIpIDogbV9mcm9udGVuZFJvdXRlcihmcm9udGVuZFJvdXRlcikgeyB9Ci0gICAg
dm9pZCBkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0
cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3Vi
bGUqIGNvbnN0IHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8
SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IHNjcmVlbkNvbG9yLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29s
b3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0
ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nKiBub3RlcywgY29uc3QgZG91YmxlKiB0aW1lc3RhbXAsIFJlZlB0
cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3Qg
U3RyaW5nKiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBwcmludENvbG9yKTsK
ICAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJy
YXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRp
bWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+
IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNx
bEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcm
IHByaW50Q29sb3IpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYgbV9mcm9udGVuZFJv
dXRlcjsKQEAgLTI4Miw3ICsyODIsNyBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAotdm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFs
UGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29u
c3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29u
c3QgU3RyaW5nKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25z
dCBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0
ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nKiBub3RlcywgY29uc3QgZG91YmxlKiB0aW1lc3RhbXAsIFJlZlB0
cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3Qg
U3RyaW5nKiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBwcmludENvbG9yKQog
ewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGpzb25NZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiks
IEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5q
c29uLXJlc3VsdAppbmRleCAyMzU1MzMwYTI5ZmRjMTgzODhmNjZmYjFiN2UwM2NlMTYxNTZmNjQx
Li5lNDM3MjMzNDNkNzYwZjVmOTkyY2RlNTVlMmIxMjRmNmY2ODY1YzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0
CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFIKICAgICBpZiAobWV0
aG9kID09ICJsb2FkUmVzb3VyY2UiKQogICAgICAgICBsb2FkUmVzb3VyY2UocmVxdWVzdElkLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5k
LCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZv
dW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9y
KEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgIidOZXR3b3JrMS4iICsgbWV0aG9k
ICsgIicgd2FzIG5vdCBmb3VuZCIpOwogfQogCiB2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI6OmxvYWRSZXNvdXJjZShsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4
IDJkMDMxNTcwMGE2NjE4YjlhYjI4NjZkZjBmYTczMTlhNmRmNTE0MjYuLjlkZTg1MTE4YjBiOTQz
ZTc5Y2Y2MGJiZWIwYmI4NGRmNzYwYjM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmct
cnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtNTU5LDI1ICs1NTksMTcgQEAgcHVibGljOgog
fSAvLyBUZXN0CiAKIHRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gewotI2lmICFBU1NFUlRfRElTQUJMRUQKIHN0
YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKik7Ci0jZW5k
aWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFp
dHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiB7CiBzdGF0aWMg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gcnVudGlt
ZUNhc3QoUmVmUHRyPEpTT046OlZhbHVlPiYmIHZhbHVlKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CiBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwot
I2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+IHsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlw
ZShKU09OOjpWYWx1ZSopOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH07CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vy
c2l2ZU9iamVjdDI+IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgdm9pZCBhc3NlcnRW
YWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwotI2VuZGlmIC8vICFBU1NFUlRfRElT
QUJMRUQKIH07CiAKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CkBAIC02OTMsNDYgKzY4NSw1MCBA
QCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+
IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZwogCiAKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKIHZv
aWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxz
Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogeworI2lm
IEFTU0VSVF9ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZWxzZQogICAgIEFT
U0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGJvb2wgY2Fz
dFN1Y2NlZWRlZCA9IHZhbHVlLT5hc1N0cmluZyhyZXN1bHQpOwogICAgIEFTU0VSVChjYXN0U3Vj
Y2VlZGVkKTsKICAgICBBU1NFUlQocmVzdWx0ID09ICJEdWNrcyIgfHwgcmVzdWx0ID09ICJIZW5z
IiB8fCByZXN1bHQgPT0gIkNyb3dzIiB8fCByZXN1bHQgPT0gIkZsYW1pbmdvcyIpOwotfQogI2Vu
ZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK30KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKIHZvaWQg
QmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+
Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiB7CisjaWYg
QVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbHNlCiAgICAgQVNT
RVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsK
ICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKICAgICBB
U1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogICAgIHsKLSAgICAg
ICAgSlNPTjo6T2JqZWN0OjppdGVyYXRvciBzdHJpbmdQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlM
aXRlcmFsKCJzdHJpbmciKSk7CisgICAgICAgIGF1dG8gc3RyaW5nUG9zID0gb2JqZWN0LT5maW5k
KEFTQ0lJTGl0ZXJhbCgic3RyaW5nIikpOwogICAgICAgICBBU1NFUlQoc3RyaW5nUG9zICE9IG9i
amVjdC0+ZW5kKCkpOwogICAgICAgICBCaW5kaW5nVHJhaXRzPFN0cmluZz46OmFzc2VydFZhbHVl
SGFzRXhwZWN0ZWRUeXBlKHN0cmluZ1Bvcy0+dmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICB7Ci0g
ICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0b3IgbnVtYmVyUG9zID0gb2JqZWN0LT5maW5kKEFT
Q0lJTGl0ZXJhbCgibnVtYmVyIikpOworICAgICAgICBhdXRvIG51bWJlclBvcyA9IG9iamVjdC0+
ZmluZChBU0NJSUxpdGVyYWwoIm51bWJlciIpKTsKICAgICAgICAgQVNTRVJUKG51bWJlclBvcyAh
PSBvYmplY3QtPmVuZCgpKTsKICAgICAgICAgQmluZGluZ1RyYWl0czxpbnQ+Ojphc3NlcnRWYWx1
ZUhhc0V4cGVjdGVkVHlwZShudW1iZXJQb3MtPnZhbHVlLmdldCgpKTsKICAgICB9CiAgICAgewot
ICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yIGFuaW1hbHNQb3MgPSBvYmplY3QtPmZpbmQo
QVNDSUlMaXRlcmFsKCJhbmltYWxzIikpOworICAgICAgICBhdXRvIGFuaW1hbHNQb3MgPSBvYmpl
Y3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJhbmltYWxzIikpOwogICAgICAgICBBU1NFUlQoYW5pbWFs
c1BvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUoYW5pbWFsc1Bvcy0+dmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEpTT046
Ok9iamVjdDo6aXRlcmF0b3IgaWRQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJpZCIp
KTsKKyAgICAgICAgYXV0byBpZFBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoImlkIikp
OwogICAgICAgICBBU1NFUlQoaWRQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgIEJpbmRp
bmdUcmFpdHM8aW50Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoaWRQb3MtPnZhbHVlLmdl
dCgpKTsKICAgICB9CiAgICAgewotICAgICAgICBKU09OOjpPYmplY3Q6Oml0ZXJhdG9yIHRyZWVQ
b3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJ0cmVlIikpOworICAgICAgICBhdXRvIHRy
ZWVQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJ0cmVlIikpOwogICAgICAgICBBU1NF
UlQodHJlZVBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNw
ZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNF
eHBlY3RlZFR5cGUodHJlZVBvcy0+dmFsdWUuZ2V0KCkpOwogICAgIH0KQEAgLTc0MCwyNSArNzM2
LDI1IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBl
TmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4CiAgICAgaW50IGZvdW5kUHJvcGVydGllc0Nv
dW50ID0gNTsKICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2JqZWN0LT5zaXplKCkp
CiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0OiAlc1xuIiwg
b2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci19CiAjZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorfQogCiBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlw
ZU5lZWRpbmdDYXN0PiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5
cGVOZWVkaW5nQ2FzdD46OnJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSkK
IHsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXN1bHQ7CiAgICAgYm9vbCBjYXN0U3VjY2Vl
ZGVkID0gdmFsdWUtPmFzT2JqZWN0KHJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3Vj
Y2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3Nl
cnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShyZXN1bHQuZ2V0KCkpOwotI2VuZGlmICAvLyAhQVNTRVJU
X0RJU0FCTEVECiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEpTT046Ok9iamVjdEJhc2UpLCB0eXBl
X2Nhc3RfcHJvYmxlbSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PEpTT046Ok9iamVjdEJhc2Uq
PihyZXN1bHQuZ2V0KCkpKTsKIH0KIAogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBCaW5k
aW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojph
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiB7CisjaWYgQVNT
RVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbHNlCiAgICAgQVNTRVJU
X0FSRyh2YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKICAg
ICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAgLTc2Niw3
ICs3NjIsNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRQogCiAgICAgaW50IGZvdW5kUHJvcGVy
dGllc0NvdW50ID0gMDsKICAgICB7Ci0gICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0b3Igb2Jq
UG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgib2JqIikpOworICAgICAgICBhdXRvIG9i
alBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIm9iaiIpKTsKICAgICAgICAgaWYgKG9i
alBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgICBCaW5kaW5nVHJhaXRzPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUhhc0V4
cGVjdGVkVHlwZShvYmpQb3MtPnZhbHVlLmdldCgpKTsKICAgICAgICAgICAgICsrZm91bmRQcm9w
ZXJ0aWVzQ291bnQ7CkBAIC03NzQsMTIgKzc3MCwxNCBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFz
RQogICAgIH0KICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2JqZWN0LT5zaXplKCkp
CiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0OiAlc1xuIiwg
b2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci19CiAjZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBCaW5kaW5nVHJh
aXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRW
YWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiB7CisjaWYgQVNTRVJUX0RJ
U0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbHNlCiAgICAgQVNTRVJUX0FSRyh2
YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKICAgICBib29s
IGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAgLTc4Nyw3ICs3ODUs
NyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJz
aXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRQogCiAgICAgaW50IGZvdW5kUHJvcGVydGllc0Nv
dW50ID0gMDsKICAgICB7Ci0gICAgICAgIEpTT046Ok9iamVjdDo6aXRlcmF0b3Igb2JqUG9zID0g
b2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgib2JqIikpOworICAgICAgICBhdXRvIG9ialBvcyA9
IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIm9iaiIpKTsKICAgICAgICAgaWYgKG9ialBvcyAh
PSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZShvYmpQb3MtPnZhbHVlLmdldCgpKTsKICAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVz
Q291bnQ7CkBAIC03OTUsOCArNzkzLDggQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUhhc0UKICAgICB9
CiAgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKQogICAgICAg
ICBGQVRBTCgiVW5leHBlY3RlZCBwcm9wZXJ0aWVzIGluIG9iamVjdDogJXNcbiIsIG9iamVjdC0+
dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotfQogI2VuZGlmIC8vICFBU1NFUlRfRElT
QUJMRUQKK30KIAogfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
d29ya2VyLXN1cHBvcnRlZC1kb21haW5zLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvd29ya2VyLXN1cHBv
cnRlZC1kb21haW5zLmpzb24tcmVzdWx0CmluZGV4IDY0ODc5YzMyMTU1NjBmOGQ1NDY1ZTk1MmEz
ZmVlM2E5YTkwYWRiMmIuLjA3MWI4NzA0Y2ZiZjkzYTYwYmQxMDFjZGQ4NzQ4OTFjNzM0MGRiMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtlci1zdXBwb3J0ZWQtZG9tYWlucy5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1yZXN1bHQKQEAgLTI3Miw3
ICsyNzIsNyBAQCB2b2lkIERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZQogICAgIGlmIChtZXRob2QgPT0gImVu
YWJsZSIpCiAgICAgICAgIGVuYWJsZShyZXF1ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRv
bWFpbkEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0
aG9kTm90Rm91bmQsICInRG9tYWluQS4iICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOwog
fQogCiB2b2lkIERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcjo6ZW5hYmxlKGxvbmcgcmVxdWVzdElk
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmKQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgRG9tYWlu
QkJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBtZXRob2QsIFJlCiAgICAgaWYgKG1ldGhvZCA9PSAiZW5hYmxlIikKICAgICAgICAgZW5hYmxl
KHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpN
ZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRG9tYWluQiIsICcuJywgbWV0aG9kLCAi
JyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgIidEb21haW5C
LiIgKyBtZXRob2QgKyAiJyB3YXMgbm90IGZvdW5kIik7CiB9CiAKIHZvaWQgRG9tYWluQkJhY2tl
bmREaXNwYXRjaGVyOjplbmFibGUobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCAx
MzExY2NiOTkxNmNkNmZjZGI2ZTliZmFlNDVkNjlkYWMzODEyNTA0Li45YTYzODIzY2I0NmFlNmE4
MTE1NTU0N2U3NmFjZGJhNDJkM2M3NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxh
dGZvcm0uanNvbi1yZXN1bHQKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIE5ldHdvcmtCYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBSZQogICAgIGlmIChtZXRob2QgPT0gImxvYWRSZXNvdXJjZSIpCiAgICAgICAgIGxvYWRSZXNv
dXJjZShyZXF1ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIGVsc2UKLSAgICAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hl
cjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsiLCAnLicsIG1ldGhv
ZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVw
b3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsICInTmV0
d29yay4iICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOwogfQogCiB2b2lkIE5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiYmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCmluZGV4IDhlYjRjNjJjMjI2MzBiYWNlMmRkN2QyMDQ2YjdmZTM0OTAwNzI3
YTUuLjlkOTg1ODE5Y2IzZDQ0MjQ2M2FiNzUxYzY5NmQ0ZGM5ZjA1NjMyY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTM4NSwx
MiArMzg1LDEzIEBAIGVudW0gTWVkaWFMaXN0U291cmNlIHsKICAgICBNZWRpYUxpc3RTb3VyY2VJ
bXBvcnRSdWxlCiB9OwogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFuZ2UmIHJh
bmdlLCBWZWN0b3I8c2l6ZV90PiogbGluZUVuZGluZ3MsIGludCogZW5kaW5nTGluZSA9IG51bGxw
dHIpCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U291cmNlUmFuZ2U+
IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlLCBjb25zdCBW
ZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MsIGludCogZW5kaW5nTGluZSA9IG51bGxwdHIpCiB7
Ci0gICAgaWYgKCFsaW5lRW5kaW5ncykKKyAgICBpZiAobGluZUVuZGluZ3MuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBUZXh0UG9zaXRpb24gc3RhcnQgPSBDb250ZW50
U2VhcmNoVXRpbGl0aWVzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdlLnN0YXJ0LCAqbGlu
ZUVuZGluZ3MpOwotICAgIFRleHRQb3NpdGlvbiBlbmQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVz
Ojp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdlLmVuZCwgKmxpbmVFbmRpbmdzKTsKKworICAg
IFRleHRQb3NpdGlvbiBzdGFydCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnRleHRQb3NpdGlv
bkZyb21PZmZzZXQocmFuZ2Uuc3RhcnQsIGxpbmVFbmRpbmdzKTsKKyAgICBUZXh0UG9zaXRpb24g
ZW5kID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5n
ZS5lbmQsIGxpbmVFbmRpbmdzKTsKIAogICAgIGlmIChlbmRpbmdMaW5lKQogICAgICAgICAqZW5k
aW5nTGluZSA9IGVuZC5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CkBAIC01NDMsNyArNTQ0LDcgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxl
OjpidWlsZE9iamVjdEZvclN0eWxlKCkKIAogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4g
c291cmNlRGF0YSA9IGV4dHJhY3RTb3VyY2VEYXRhKCk7CiAgICAgaWYgKHNvdXJjZURhdGEpCi0g
ICAgICAgIHJlc3VsdC0+c2V0UmFuZ2UoYnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRh
LT5ydWxlQm9keVJhbmdlLCBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkuZ2V0KCkp
KTsKKyAgICAgICAgcmVzdWx0LT5zZXRSYW5nZShidWlsZFNvdXJjZVJhbmdlT2JqZWN0KHNvdXJj
ZURhdGEtPnJ1bGVCb2R5UmFuZ2UsIG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3MoKSkp
OwogCiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KQEAgLTYyNSw3ICs2MjYsNyBAQCBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0
eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3VuZFNob3J0aGFu
ZHM7CiAgICAgU3RyaW5nIHByZXZpb3VzUHJpb3JpdHk7CiAgICAgU3RyaW5nIHByZXZpb3VzU3Rh
dHVzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MobV9w
YXJlbnRTdHlsZVNoZWV0ID8gbV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpIDogbnVs
bHB0cik7CisgICAgVmVjdG9yPHNpemVfdD4gbGluZUVuZGluZ3MgPSBtX3BhcmVudFN0eWxlU2hl
ZXQgPyBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkgOiBWZWN0b3I8c2l6ZV90PiB7
IH07CiAgICAgYXV0byBzb3VyY2VEYXRhID0gZXh0cmFjdFNvdXJjZURhdGEoKTsKICAgICB1bnNp
Z25lZCBydWxlQm9keVJhbmdlU3RhcnQgPSBzb3VyY2VEYXRhID8gc291cmNlRGF0YS0+cnVsZUJv
ZHlSYW5nZS5zdGFydCA6IDA7CiAKQEAgLTY2Nyw3ICs2NjgsNyBAQCBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRp
ZXMoKSBjbwogICAgICAgICAgICAgU291cmNlUmFuZ2UgYWJzb2x1dGVQcm9wZXJ0eVJhbmdlID0g
cHJvcGVydHlFbnRyeS5yYW5nZTsKICAgICAgICAgICAgIGFic29sdXRlUHJvcGVydHlSYW5nZS5z
dGFydCArPSBydWxlQm9keVJhbmdlU3RhcnQ7CiAgICAgICAgICAgICBhYnNvbHV0ZVByb3BlcnR5
UmFuZ2UuZW5kICs9IHJ1bGVCb2R5UmFuZ2VTdGFydDsKLSAgICAgICAgICAgIHByb3BlcnR5LT5z
ZXRSYW5nZShidWlsZFNvdXJjZVJhbmdlT2JqZWN0KGFic29sdXRlUHJvcGVydHlSYW5nZSwgbGlu
ZUVuZGluZ3MuZ2V0KCkpKTsKKyAgICAgICAgICAgIHByb3BlcnR5LT5zZXRSYW5nZShidWlsZFNv
dXJjZVJhbmdlT2JqZWN0KGFic29sdXRlUHJvcGVydHlSYW5nZSwgbGluZUVuZGluZ3MpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghaXQtPmRpc2FibGVkKSB7CkBAIC0xMTQ5LDcgKzExNTAs
NyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3Rv
clN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUwogICAgICAgICAuc2V0VGV4dChzZWxlY3RvclRl
eHQpCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgaWYgKHNvdXJjZURhdGEpCi0gICAgICAgIHJl
c3VsdC0+c2V0UmFuZ2UoYnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5ydWxlSGVh
ZGVyUmFuZ2UsIGxpbmVFbmRpbmdzKCkuZ2V0KCksICZlbmRpbmdMaW5lKSk7CisgICAgICAgIHJl
c3VsdC0+c2V0UmFuZ2UoYnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5ydWxlSGVh
ZGVyUmFuZ2UsIGxpbmVFbmRpbmdzKCksICZlbmRpbmdMaW5lKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtMTI4MiwxMCArMTI4MywxMCBAQCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYQog
ICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQtPnJ1bGVTb3VyY2VEYXRhQXQocnVsZUluZGV4
QnlTdHlsZShzdHlsZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzKCkgY29uc3QKK1ZlY3RvcjxzaXplX3Q+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFy
c2VkU3R5bGVTaGVldC0+aGFzVGV4dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gQ29udGVudFNlYXJjaFV0aWxpdGllczo6bGluZUVu
ZGluZ3MobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCkpOwogfQogCkBAIC0xNTI0LDcgKzE1MjUs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6
OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlOjpsaW5lRW5kaW5ncygpIGNvbnN0CitWZWN0b3I8c2l6ZV90PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6OmxpbmVFbmRpbmdzKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29u
dGVudFNlYXJjaFV0aWxpdGllczo6bGluZUVuZGluZ3MoZWxlbWVudFN0eWxlVGV4dCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4
IGUwMTllZmExZGMxY2VlOWZkNjhhYTVlZDU4YTlmMzAwN2ZhZjRhY2EuLjMyY2VjOWVlYTMyNWJm
OGI2ZjZiMDdmZDk3NTMwMWIzMWU0MjMyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHByb3RlY3RlZDoK
IAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkgZnJpZW5kIGNsYXNzIEluc3BlY3RvclN0eWxlLgog
ICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFy
YXRpb24qLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxzaXpl
X3Q+IGxpbmVFbmRpbmdzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlUnVsZT4+IENTU1N0eWxlUnVsZVZlY3RvcjsKQEAgLTI0Niw3ICsyNDYs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBBbHNvIGFjY2Vzc2VkIGJ5IGZyaWVuZCBjbGFzcyBJ
bnNwZWN0b3JTdHlsZS4KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHlsZVRleHQoQ1NTU3R5
bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8
c2l6ZV90PiBsaW5lRW5kaW5ncygpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIENTU1N0
eWxlRGVjbGFyYXRpb24mIGlubGluZVN0eWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggODBkYWY3YTEw
YTk3ZmMzY2NjZWE5YTc3NWY5NTE0NjhjYWZlMDk3My4uMzU0OTRmZTVjOTFiZDBkMDNlNDNlNTI0
NzVhNWMyMDFhOTEyMzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRl
ZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9y
Tm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGNv
bnN0IGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVJbmhlcml0ZWQsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4m
IG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVz
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5j
bHVkZUluaGVyaXRlZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4m
IGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hl
ZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+
JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcAppbmRleCBiYzNlZmM2MDIxNmUzNDA2MjgxNjBiNmM3NGY2MTdmMDhl
NDdjNTJkLi44M2M1NDVlNGJmNzNlYmMwODliZDdiOWQyNDY3M2YzY2E5N2M1ZTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZh
c0FnZW50LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udGV4
dEFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBDYW52YXNSZW5kZXJpbmdDCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzb2x2ZUNh
bnZhc0NvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbnZh
c0lkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6cmVzb2x2ZUNhbnZhc0NvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQog
ewogICAgIGF1dG8qIGluc3BlY3RvckNhbnZhcyA9IGFzc2VydEluc3BlY3RvckNhbnZhcyhlcnJv
clN0cmluZywgY2FudmFzSWQpOwogICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQpAQCAtMjYyLDcg
KzI2Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc29sdmVDYW52YXNDb250ZXh0
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QKICAgICByZXN1bHQgPSBpbmplY3RlZFNj
cmlwdC53cmFwT2JqZWN0KHZhbHVlLCBvYmplY3RHcm91cE5hbWUpOwogfQogCi12b2lkIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IGJvb2wqIGNvbnN0IHNpbmdsZUZyYW1lLCBj
b25zdCBpbnQqIGNvbnN0IG1lbW9yeUxpbWl0KQordm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
c3RhcnRSZWNvcmRpbmcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNh
bnZhc0lkLCBjb25zdCBib29sKiBzaW5nbGVGcmFtZSwgY29uc3QgaW50KiBtZW1vcnlMaW1pdCkK
IHsKICAgICBhdXRvKiBpbnNwZWN0b3JDYW52YXMgPSBhc3NlcnRJbnNwZWN0b3JDYW52YXMoZXJy
b3JTdHJpbmcsIGNhbnZhc0lkKTsKICAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aAppbmRleCBmNWUzMjMwZTdlZjg0Yzg4Y2I4NmM5YjY0ODZhM2Y3ZTRmZDNjMGViLi43NzVkMmQ2
MzBiOWY1YWZhMTAxOGVmMGIzNjcxOGU2MTYzMmI2NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC03Miw4
ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjYW52YXNJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVx
dWVzdENvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBTdHJpbmcq
IGNvbnRlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgUmVmUHRyPEpTT046OkFycmF5
T2Y8aW50Pj4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc29sdmVDYW52YXNDb250ZXh0KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmpl
Y3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjYW52YXNJZCwgY29uc3QgYm9vbCogY29uc3Qgc2luZ2xlRnJhbWUsIGNvbnN0
IGludCogY29uc3QgbWVtb3J5TGltaXQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzb2x2ZUNhbnZh
c0NvbnRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBTdHJp
bmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBzaW5nbGVGcmFtZSwgY29u
c3QgaW50KiBtZW1vcnlMaW1pdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZXF1ZXN0U2hhZGVyU291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwcm9ncmFtSWQs
IGNvbnN0IFN0cmluZyYgc2hhZGVyVHlwZSwgU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
cGRhdGVTaGFkZXIoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHByb2dyYW1JZCwgY29uc3Qg
U3RyaW5nJiBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCAwM2E4YzNjZjdjODQxMzA3OTM3ODgyY2Y5Zjk4YmUw
NjAyNDkxYzBmLi45ZThiNzBiMmZjOGJlOGZkNTkxYWRhOTY3NGQyYjVjNmQyZDlkNjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQzLDE0ICs0MywxNCBAQAogbmFtZXNwYWNlIHsK
IAogZW51bSBET01CcmVha3BvaW50VHlwZSB7Ci0gICAgU3VidHJlZU1vZGlmaWVkID0gMCwKKyAg
ICBTdWJ0cmVlTW9kaWZpZWQsCiAgICAgQXR0cmlidXRlTW9kaWZpZWQsCiAgICAgTm9kZVJlbW92
ZWQsCiAgICAgRE9NQnJlYWtwb2ludFR5cGVzQ291bnQKIH07CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlID0gImxpc3RlbmVyOiI7Ci1zdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgaW5zdHJ1bWVudGF0aW9uRXZlbnRDYXRlZ29yeVR5cGUgPSAiaW5z
dHJ1bWVudGF0aW9uOiI7CitzdGF0aWMgY29uc3QgY2hhciBsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlU
eXBlW10gPSAibGlzdGVuZXI6IjsKK3N0YXRpYyBjb25zdCBjaGFyIGluc3RydW1lbnRhdGlvbkV2
ZW50Q2F0ZWdvcnlUeXBlW10gPSAiaW5zdHJ1bWVudGF0aW9uOiI7CiAKIGNvbnN0IHVpbnQzMl90
IGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzayA9ICgxIDw8IFN1YnRyZWVNb2RpZmll
ZCk7CiBjb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKQEAgLTEy
MiwxMiArMTIyLDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzY2FyZEJp
bmRpbmdzKCkKIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudExpc3Rl
bmVyQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1l
KQogewotICAgIHNldEJyZWFrcG9pbnQoZXJyb3IsIFN0cmluZyhsaXN0ZW5lckV2ZW50Q2F0ZWdv
cnlUeXBlKSArIGV2ZW50TmFtZSk7CisgICAgc2V0QnJlYWtwb2ludChlcnJvciwgbGlzdGVuZXJF
dmVudENhdGVnb3J5VHlwZSArIGV2ZW50TmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6c2V0SW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJy
b3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQogewotICAgIHNldEJyZWFrcG9pbnQoZXJyb3Is
IFN0cmluZyhpbnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSkgKyBldmVudE5hbWUpOwor
ICAgIHNldEJyZWFrcG9pbnQoZXJyb3IsIGluc3RydW1lbnRhdGlvbkV2ZW50Q2F0ZWdvcnlUeXBl
ICsgZXZlbnROYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRC
cmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCkBA
IC0xNDIsMTIgKzE0MiwxMiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICByZW1vdmVCcmVh
a3BvaW50KGVycm9yLCBTdHJpbmcobGlzdGVuZXJFdmVudENhdGVnb3J5VHlwZSkgKyBldmVudE5h
bWUpOworICAgIHJlbW92ZUJyZWFrcG9pbnQoZXJyb3IsIGxpc3RlbmVyRXZlbnRDYXRlZ29yeVR5
cGUgKyBldmVudE5hbWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJl
bW92ZUluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBT
dHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICByZW1vdmVCcmVha3BvaW50KGVycm9yLCBTdHJpbmco
aW5zdHJ1bWVudGF0aW9uRXZlbnRDYXRlZ29yeVR5cGUpICsgZXZlbnROYW1lKTsKKyAgICByZW1v
dmVCcmVha3BvaW50KGVycm9yLCBpbnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSArIGV2
ZW50TmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJl
YWtwb2ludChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQpAQCAt
Mzc1LDcgKzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zCiAgICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURk1vdmUoZXZlbnRE
YXRhKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtw
b2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbElzUmVnZXgpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0
aW9uYWxJc1JlZ2V4KQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fcGF1
c2VPbkFsbFhIUnNFbmFibGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggYmZl
MDFiZWVhODM3ZmY2YWRkODE3NDdmMWQ3NjNkOTMxN2JkMDE1Yi4uMzlhY2Y1YTljNmE4YzhmMzU4
OTcxMjBjZmE1YWNmOGYzZGJiYThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTU0LDE0
ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJCi0gICAgdm9pZCBzZXRYSFJCcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsSXNSZWdleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVYSFJCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldElu
c3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVJbnN0cnVtZW50YXRpb25CcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50KEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVhIUkJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkgZmluYWw7CisgICAgdm9pZCBzZXRF
dmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnRO
YW1lKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIGZpbmFsOworICAgIHZvaWQgc2V0SW5z
dHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXZlbnRO
YW1lKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkgZmluYWw7CisgICAgdm9pZCBzZXRE
T01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpOwpA
QCAtNzQsMTQgKzc0LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3lu
Y2hyb25vdXMpOwogICAgIHZvaWQgbWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCgpOwogCi0gICAg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIGZpbmFsOworICAgIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBmaW5hbDsKKyAg
ICB2b2lkIGRpc2NhcmRBZ2VudCgpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIC8vIEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24uCi0gICAg
dm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlYnVnZ2VyV2Fz
RGlzYWJsZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlYnVnZ2VyV2FzRW5hYmxlZCgpIGZpbmFs
OworICAgIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJs
ZSgpOwogCiAgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUmIHRhcmdldCwgaW50
IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSlNPTjo6T2JqZWN0JiBkZXNjcmlwdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNGU1NjNjMGU2MDNhYjExMGQ0ZTU3ZjVjOWI3NmNl
OWRhZTY4ODczYi4uYTRjNDQwZWZlMGQzNGQ4NDRiOTNlZWUxYTlmZGRjYmVjMWE4MzA3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUg
d2ViU29ja2V0QXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYlNvY2tldCog
d2ViCiAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJv
dG90eXBlKCZzdGF0ZSksIHdlYlNvY2tldCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpyZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdy
b3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0KQogewogICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gd2ViU29ja2V0Rm9yUmVxdWVz
dElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCF3ZWJTb2NrZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4
IDlhNDMyYmQzNzJkNmIyYTc4MDQ5YzRkOWY2NGQ5MjI3ODlkNGEwY2MuLjQxMWYxNzQzZjM3ZDEy
ZTdkNTMyN2Q4YjkzYjU5NjE0NzFjNzVmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29k
ZWQpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoRXJyb3JTdHJp
bmcmLCBib29sIGRpc2FibGVkKSBmaW5hbDsKICAgICB2b2lkIGxvYWRSZXNvdXJjZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxMb2Fk
UmVzb3VyY2VDYWxsYmFjaz4mJikgZmluYWw7Ci0gICAgdm9pZCByZXNvbHZlV2ViU29ja2V0KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JikgZmluYWw7CisgICAgdm9pZCByZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JikgZmluYWw7CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBsb2FkZXJJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKikgPSAw
OwogICAgIHZpcnR1YWwgU3RyaW5nIGZyYW1lSWRlbnRpZmllcihEb2N1bWVudExvYWRlciopID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAppbmRleCBkOTgwYTY4NmI3N2IwZTNkNGFlYTI0NTYwYWZmOWUzNDU2YWU3
MzUwLi5mZjAxMjYwZmNlNjg1NDZiYWVhYTk2MmM1ZGNkNWE2NWFhOWFkYzhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUo
RXJyb3JTdHJpbmcmKQogICAgIHNldEVtdWxhdGVkTWVkaWEodW51c2VkLCBlbXB0eVN0cmluZygp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdpbiwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIG9wdGlvbmFsUmVsb2FkRnJvbU9y
aWdpbiwgY29uc3QgYm9vbCogb3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQogewogICAg
IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdpbiAmJiAqb3B0
aW9uYWxSZWxvYWRGcm9tT3JpZ2luOwogICAgIGJvb2wgcmV2YWxpZGF0ZUFsbFJlc291cmNlcyA9
IG9wdGlvbmFsUmV2YWxpZGF0ZUFsbFJlc291cmNlcyAmJiAqb3B0aW9uYWxSZXZhbGlkYXRlQWxs
UmVzb3VyY2VzOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAg
ICAgcmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25z
dCBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291
cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxD
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsKICAgICByZXN1bHRz
ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPjo6Y3JlYXRlKCk7CiAKQEAgLTUyNCw3ICs1MjQsNyBAQCBzdGF0aWMgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hS
ZXN1bHQoYwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qg
b3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNo
UmVzdWx0Pj4mIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRl
eCBkMjJlMzk1YjJmZDIzY2U4ZTc0NTJhZjE2YzhjZjVmZjZlYjQwMWQ0Li44YWUxMGJiNjhlZDVj
ZmVlNWMyYmM5OGI1OTYyZTJiMWNjNjQxY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTg4LDIzICs4OCwyMyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNl
VHlwZSBjYWNoZWRSZXNvdXJjZVR5cGVKU09OKGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAKICAg
ICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKLSAgICB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxSZWxvYWRGcm9tT3JpZ2luLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbFJldmFsaWRh
dGVBbGxSZXNvdXJjZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRDb29raWVzKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
Q29va2llPj4mIGNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlQ29va2llKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVu
Y29kZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsUmVx
dWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3Vy
Y2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3QgY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3QgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JT
dHJpbmcmLCBib29sKiBvdXRfcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29tcG9zaXRp
bmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQg
c25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgU3RyaW5nKiBvdXREYXRhVVJM
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNuYXBzaG90UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0
ZW0sIFN0cmluZyogb3V0RGF0YVVSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmNoaXZlKEVycm9y
U3RyaW5nJiwgU3RyaW5nKiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIGZpbmFsOworICAg
IHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogb3B0aW9uYWxSZWxvYWRGcm9t
T3JpZ2luLCBjb25zdCBib29sKiBvcHRpb25hbFJldmFsaWRhdGVBbGxSZXNvdXJjZXMpIGZpbmFs
OworICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkgZmlu
YWw7CisgICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lLCBjb25zdCBTdHJpbmcmIHVybCkgZmluYWw7CisgICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU+JikgZmluYWw7CisgICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNv
bnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpIGZpbmFsOworICAgIHZvaWQgc2VhcmNoSW5SZXNv
dXJjZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVx
dWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBmaW5hbDsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBmaW5hbDsKKyAgICB2b2lkIHNldFNob3dQYWlu
dFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBmaW5hbDsKKyAgICB2b2lkIHNldEVtdWxh
dGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGdl
dENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sKiBvdXRfcGFyYW0p
IGZpbmFsOworICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmlu
ZyYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgU3RyaW5nKiBvdXREYXRhVVJMKSBmaW5hbDsKKyAgICB2b2lkIHNuYXBzaG90UmVj
dChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25z
dCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFN0cmluZyogb3V0RGF0YVVSTCkgZmluYWw7Cisg
ICAgdm9pZCBhcmNoaXZlKEVycm9yU3RyaW5nJiwgU3RyaW5nKiBkYXRhKSBmaW5hbDsKIAogICAg
IC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZG9tQ29udGVudEV2ZW50Rmly
ZWQoKTsKQEAgLTEyMyw4ICsxMjMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNhbGN1bGF0
ZVN0eWxlKCk7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkKLSAgICB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIGZpbmFsOworICAgIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKSBmaW5hbDsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKICAgICBQYWdlJiBwYWdlKCkg
eyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDkzNmRkZmY2YTE2ZmI3YWE1
N2JmMDliMTQ5NTk0MDgyNDIyZjgzNTQuLmQyNjE2ZGIxYjdiNjNlMzkwMTAyMTRlNmVhOTIwOWIx
ZTQ2ODBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIGZpbmFsOwogICAgIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBm
aW5hbDsKIAotICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGNvbnN0IG1h
eENhbGxTdGFja0RlcHRoID0gbnVsbHB0cikgZmluYWw7CisgICAgdm9pZCBzdGFydChFcnJvclN0
cmluZyYsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3AoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldEF1dG9DYXB0dXJl
RW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgc2V0SW5zdHJ1bWVu
dHMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQu
aAppbmRleCAzMWEyNGE3YTJjYjVjMzYxNDQzMzlmYmIxNmZlMTdiMjA1MmEzNzVjLi5kMmI4Yjg5
YTRhZmMyMzkxNzdmOGEzYWY4NmE5ZDliZGM2YTg4MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBp
bnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRPdmVybGF5TWVz
c2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyogY29uc3QpIGZpbmFsOworICAgIHZvaWQg
c2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqKSBmaW5hbDsKIAog
ICAgIFBhZ2UmIG1fcGFnZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>