<?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>208555</bug_id>
          
          <creation_ts>2020-03-03 20:18:40 -0800</creation_ts>
          <short_desc>Web Inspector: re-add `InspectorFrontendHost` support for moving the inspected window</short_desc>
          <delta_ts>2020-03-20 10:19:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Local 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>
          <dependson>204627</dependson>
          <blocked>209346</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1625375</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-03 20:18:40 -0800</bug_when>
    <thetext># STEPS TO REPRODUCE:
1. run WK1
2. inspect any page
3. detach/undock Web Inspector
4. try to drag the window around from the title area
=&gt; nothing happens

# STEPS TO REPRODUCE:
1. inspect any page
2. dock bottom
3. drag on the empty space around the tabs to resize the Web Inspector frame
=&gt; nothing happens</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625384</commentid>
    <comment_count>1</comment_count>
      <attachid>392367</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-03 20:45:06 -0800</bug_when>
    <thetext>Created attachment 392367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625405</commentid>
    <comment_count>2</comment_count>
      <attachid>392367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-03 21:41:07 -0800</bug_when>
    <thetext>Comment on attachment 392367
Patch

Rejecting attachment 392367 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 392367, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
cpp
	M	Source/WebKit/UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm
	M	Source/WebKit/UIProcess/Inspector/mac/WebInspectorProxyMac.mm
	M	Source/WebKit/UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp
	M	Source/WebKit/UIProcess/Inspector/win/WebInspectorProxyWin.cpp
	M	Source/WebKit/WebProcess/Inspector/RemoteWebInspectorUI.cpp
	M	Source/WebKit/WebProcess/Inspector/RemoteWebInspectorUI.h
	M	Source/WebKit/WebProcess/Inspector/WebInspectorUI.cpp
	M	Source/WebKit/WebProcess/Inspector/WebInspectorUI.h
	M	Source/WebKitLegacy/ios/ChangeLog
	M	Source/WebKitLegacy/ios/WebCoreSupport/WebInspectorClientIOS.mm
	M	Source/WebKitLegacy/mac/ChangeLog
	M	Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.h
	M	Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm
	M	Source/WebKitLegacy/win/ChangeLog
	M	Source/WebKitLegacy/win/WebCoreSupport/WebInspectorClient.cpp
	M	Source/WebKitLegacy/win/WebCoreSupport/WebInspectorClient.h

ERROR from SVN:
Merge conflict during commit: Conflict at &apos;/trunk/Source/WebCore/ChangeLog&apos;
W: 884901ea07a9eccc835f7dcff35f7f8ed29ec086 and refs/remotes/origin/master differ, using rebase:
:040000 040000 4240ff7048c0d69b7e32a7c4ea700cc72771f8c6 40439c00d217c2305f4452e279ba930d6d83bc22 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/inspector/InspectorFrontendClient.h
	M	Source/WebCore/inspector/InspectorFrontendClientLocal.cpp
	M	Source/WebCore/inspector/InspectorFrontendClientLocal.h
	M	Source/WebCore/inspector/InspectorFrontendHost.cpp
	M	Source/WebCore/inspector/InspectorFrontendHost.h
	M	Source/WebCore/inspector/InspectorFrontendHost.idl
	M	Source/WebCore/testing/Internals.cpp
	M	Source/WebInspectorUI/ChangeLog
	M	Source/WebInspectorUI/UserInterface/Base/Main.js
	M	Source/WebInspectorUI/UserInterface/Views/TabBar.css
	M	Source/WebInspectorUI/UserInterface/Views/TabBar.js
	M	Source/WebInspectorUI/UserInterface/Views/TabBarItem.js
	M	Source/WebKit/ChangeLog
	M	Source/WebKit/UIProcess/Inspector/RemoteWebInspectorProxy.cpp
	M	Source/WebKit/UIProcess/Inspector/RemoteWebInspectorProxy.h
	M	Source/WebKit/UIProcess/Inspector/RemoteWebInspectorProxy.messages.in
	M	Source/WebKit/UIProcess/Inspector/WebInspectorProxy.cpp
	M	Source/WebKit/UIProcess/Inspector/WebInspectorProxy.h
	M	Source/WebKit/UIProcess/Inspector/WebInspectorProxy.messages.in
	M	Source/WebKit/UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp
	M	Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp
	M	Source/WebKit/UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm
	M	Source/WebKit/UIProcess/Inspector/mac/WebInspectorProxyMac.mm
	M	Source/WebKit/UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp
	M	Source/WebKit/UIProcess/Inspector/win/WebInspectorProxyWin.cpp
	M	Source/WebKit/WebProcess/Inspector/RemoteWebInspectorUI.cpp
	M	Source/WebKit/WebProcess/Inspector/RemoteWebInspectorUI.h
	M	Source/WebKit/WebProcess/Inspector/WebInspectorUI.cpp
	M	Source/WebKit/WebProcess/Inspector/WebInspectorUI.h
	M	Source/WebKitLegacy/ios/ChangeLog
	M	Source/WebKitLegacy/ios/WebCoreSupport/WebInspectorClientIOS.mm
	M	Source/WebKitLegacy/mac/ChangeLog
	M	Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.h
	M	Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm
	M	Source/WebKitLegacy/win/ChangeLog
	M	Source/WebKitLegacy/win/WebCoreSupport/WebInspectorClient.cpp
	M	Source/WebKitLegacy/win/WebCoreSupport/WebInspectorClient.h

ERROR from SVN:
Merge conflict during commit: Conflict at &apos;/trunk/Source/WebCore/ChangeLog&apos;
W: 884901ea07a9eccc835f7dcff35f7f8ed29ec086 and refs/remotes/origin/master differ, using rebase:
:040000 040000 4240ff7048c0d69b7e32a7c4ea700cc72771f8c6 40439c00d217c2305f4452e279ba930d6d83bc22 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
From https://git.webkit.org/git/WebKit
   592a6e99cd7..e44b9135a5e  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 257822 = 592a6e99cd7068f4c0a0fd8b3f914254d688d2f1
r257828 = c7c729ede583a675809551f111150fd23e39e0f3
r257830 = e44b9135a5e97840659f27e71e415641cf50ba17
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: https://webkit-queues.webkit.org/results/13333222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625409</commentid>
    <comment_count>3</comment_count>
      <attachid>392372</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-03 21:45:05 -0800</bug_when>
    <thetext>Created attachment 392372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625415</commentid>
    <comment_count>4</comment_count>
      <attachid>392372</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-03 22:31:15 -0800</bug_when>
    <thetext>Comment on attachment 392372
Patch

Clearing flags on attachment: 392372

Committed r257835: &lt;https://trac.webkit.org/changeset/257835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625416</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-03 22:31:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625417</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-03 22:33:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/60027760&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392367</attachid>
            <date>2020-03-03 20:45:06 -0800</date>
            <delta_ts>2020-03-03 21:45:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208555-20200303204505.patch</filename>
            <type>text/plain</type>
            <size>63924</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MDdjYTZkZDAyYjk4MDk5MjQ5NjIzN2Y2YTNlYjFkY2UzZDlmZDc4Li5k
N2VjZDZlMTI0YWY2ZTQ0M2ZhMTYyODA1NzY2ZDRiOTcwMDBkOWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5kb3cKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU1NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnRpYWxseSByZXZlcnQgcjI1Nzc1
OSwgYXMgdGhlIGRlc2lnbiBjaGFuZ2VkIGVub3VnaCBzdWNoIHRoYXQgdGhpcyBjb2RlIGlzIHN0
aWxsIHVzZWZ1bC4KKworICAgICAgICBBbGxvdyB0aGUgV2ViIEluc3BlY3RvciBmcm9udGVuZCB0
byBhc2sgdGhlIGNvbnRhaW5pbmcgYXBwICh2aWEgYEluc3BlY3RvckZyb250ZW5kQ2xpZW50YCkK
KyAgICAgICAgd2hldGhlciBpdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gZG9ja2luZyBjb25maWd1cmF0
aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGw6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
a1NpZGVGcm9tU3RyaW5nKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q6OnN1cHBvcnRzRG9ja1NpZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdDo6cmVxdWVzdFNldERvY2tTaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6c3RhcnRXaW5kb3dEcmFnKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om1vdmVXaW5kb3dCeSBjb25zdCk6
IEFkZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg6
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om1vdmVXaW5kb3dC
eSk6IEFkZGVkLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU3R1YkZyb250ZW5kOjpzdXBwb3J0c0RvY2tTaWRlKTogQWRkZWQu
CisKIDIwMjAtMDMtMDMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSW50ZXJuYWxzXSBJbnRyb2R1Y2UgSW50ZXJuYWxzOjp1cGRhdGVMYXlvdXRBbmRTdHlsZVJl
Y3Vyc2l2ZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1NjdiNzExMmFmZjNmODdkMDMy
ZDI3NGMwNjA0OTc4OTE4NGMyZDBhLi45MzQyOGUwYzZhZDk2YzllMGFjMDliNTQ2ZWFiNGM4YWM4
YzU4YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMC0w
My0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JGcm9udGVuZEhvc3RgIHN1cHBvcnQgZm9yIG1vdmlu
ZyB0aGUgaW5zcGVjdGVkIHdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA4NTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUGFydGlhbGx5IHJldmVydCByMjU3NzU5LCBhcyB0aGUgZGVzaWduIGNo
YW5nZWQgZW5vdWdoIHN1Y2ggdGhhdCB0aGlzIGNvZGUgaXMgc3RpbGwgdXNlZnVsLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6CisgICAgICAgIChXSS5sb2FkZWQpOgor
ICAgICAgICAoV0kudXBkYXRlRG9ja2VkU3RhdGUpOgorICAgICAgICAoV0kucmVzaXplRG9ja2Vk
RnJhbWVNb3VzZURvd24pOiBBZGRlZC4KKyAgICAgICAgKFdJLm1vdmVVbmRvY2tlZFdpbmRvd01v
dXNlRG93bik6IEFkZGVkLgorICAgICAgICAoV0kuZG9ja2VkQ29uZmlndXJhdGlvblN1cHBvcnRz
U3BsaXRDb250ZW50QnJvd3Nlcik6CisgICAgICAgIChXSS5fd2luZG93Rm9jdXNlZCk6CisgICAg
ICAgIChXSS5fd2luZG93Qmx1cnJlZCk6CisgICAgICAgIChXSS5fdXBkYXRlRG9ja05hdmlnYXRp
b25JdGVtcyk6CisgICAgICAgIChXSS5faGFuZGxlRG9ja2VkUmVzaXplck1vdXNlRG93bik6Cisg
ICAgICAgIChXSS5faGFuZGxlVW5kb2NrZWRUaXRsZUFyZWFNb3VzZURvd24pOgorICAgICAgICAo
V0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzKToKKyAgICAgICAgKFdJLnNldExheW91dERpcmVjdGlv
bik6CisgICAgICAgIERvbid0IGNyZWF0ZSB0YWIgYmFyIG5hdmlnYXRpb24gaXRlbXMgZm9yIHRo
ZSB2YXJpb3VzIGRvY2tpbmcgY29uZmlndXJhdGlvbnMgaWYgdGhlIHBsYXRmb3JtCisgICAgICAg
IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgorICAgICAgICAoV0kuVGFiQmFyKToK
KyAgICAgICAgKFdJLlRhYkJhci5nZXQgaG9yaXpvbnRhbFBhZGRpbmcpOgorICAgICAgICAoV0ku
VGFiQmFyLnByb3RvdHlwZS5faGFuZGxlTW91c2VEb3duKToKKyAgICAgICAgKFdJLlRhYkJhci5w
cm90b3R5cGUuX2hhbmRsZVRhYkNvbnRhaW5lck1vdXNlRG93bik6IEFkZGVkLgorICAgICAgICAo
V0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlVGFiQ29udGFpbmVyQ2xpY2spOiBBZGRlZC4KKyAg
ICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZVRhYkNvbnRhaW5lck1vdXNlTGVhdmUp
OiBBZGRlZC4KKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZVRhYkNvbnRhaW5l
ckNvbnRleHRNZW51KTogQWRkZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBlLl9oYW5k
bGVDbGljayk6IERlbGV0ZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVN
b3VzZUxlYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRs
ZUNvbnRleHRNZW51KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5jc3M6CisgICAgICAgIChib2R5LmRvY2tlZC5ib3R0b20gLnRhYi1iYXIgPiAudGFicyA+
IC5mbGV4aWJsZS1zcGFjZSk6CisgICAgICAgIERyYWdnaW5nIG9uIGVtcHR5IHNwYWNlIGluIHRo
ZSB0YWIgYmFyIHNob3VsZCBhZGp1c3QgV2ViIEluc3BlY3RvcidzIGJvdHRvbSBkb2NrZWQgaGVp
Z2h0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzOgorICAg
ICAgICAoV0kuVGFiQmFySXRlbS5nZXQgaG9yaXpvbnRhbE1hcmdpbik6CisKIDIwMjAtMDMtMDMg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBuYXZpZ2F0aW9uIGl0ZW1zIGluIHRoZSB0YWIgYmFy
IGRvZXNuJ3QgbWF0Y2ggd2hlbiB1bmZvY3VzaW5nIHRoZSB3aW5kb3cKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmUy
MjYzZTVkOGNlNmU3ZDlkMTAzMWI1NDJjOWYxYjRiZGJmNGE3OC4uMmJhNmE3MjkyNWVkYmUzNjgx
Y2U4YjQxNGQyMWMxMDg4NjViYzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMC0w
My0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JGcm9udGVuZEhvc3RgIHN1cHBvcnQgZm9yIG1vdmlu
ZyB0aGUgaW5zcGVjdGVkIHdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA4NTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUGFydGlhbGx5IHJldmVydCByMjU3NzU5LCBhcyB0aGUgZGVzaWduIGNo
YW5nZWQgZW5vdWdoIHN1Y2ggdGhhdCB0aGlzIGNvZGUgaXMgc3RpbGwgdXNlZnVsLgorCisgICAg
ICAgIEFsbG93IHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIHRvIGFzayB0aGUgY29udGFpbmlu
ZyBhcHAgKHZpYSBgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRgKQorICAgICAgICB3aGV0aGVyIGl0
IHN1cHBvcnRzIHRoZSBnaXZlbiBkb2NraW5nIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yVUk6OnN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJOjpzdXBwb3J0c0RvY2tTaWRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJOjpyZXF1ZXN0U2V0RG9ja1NpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6c2V0RG9ja1NpZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6c3RhcnRXaW5kb3dEcmFnKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKTogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2lu
ZG93RHJhZyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYklu
c3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c0RvY2tTaWRlKTogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpzdGFydFdpbmRvd0RyYWcpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKTogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdp
bmRvd0RyYWcpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKTogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdp
bmRvd0RyYWcpOiBBZGRlZC4KKwogMjAyMC0wMy0wMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IFdpbkNhaXJvIGJ1aWxk
IGZvbGxvd2luZyByMjU3ODAxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGE0ZjFj
NTk3MWJmZjFlOWMzZTAxYjA2MzMwNjM0MGNiODI3ZDg3MjkuLjEwMDNmN2I5ZmJiMDUxNGJjZmQx
ZTliYjIzNmUwMzk0MjJhYTFlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMC0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JGcm9udGVuZEhvc3Rg
IHN1cHBvcnQgZm9yIG1vdmluZyB0aGUgaW5zcGVjdGVkIHdpbmRvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTU1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IHJldmVydCByMjU3NzU5
LCBhcyB0aGUgZGVzaWduIGNoYW5nZWQgZW5vdWdoIHN1Y2ggdGhhdCB0aGlzIGNvZGUgaXMgc3Rp
bGwgdXNlZnVsLgorCisgICAgICAgIEFsbG93IHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIHRv
IGFzayB0aGUgY29udGFpbmluZyBhcHAgKHZpYSBgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRgKQor
ICAgICAgICB3aGV0aGVyIGl0IHN1cHBvcnRzIHRoZSBnaXZlbiBkb2NraW5nIGNvbmZpZ3VyYXRp
b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06
CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3VwcG9ydHNEb2NrU2lkZSk6
IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93
RHJhZyk6IEFkZGVkLgorCiAyMDIwLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzZXR0aW5nIHRoZSBmcm9udGVuZCBhcHBl
YXJhbmNlIGRvZXNuJ3QgdXBkYXRlIHRoZSB3aW5kb3cgd2hlbiB1bmRvY2tlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDRmNjA5ODdiNmNlYzJjODZjY2I3ZDllZjI1ODZkZjI4MDkz
ZmUwNGEuLjhlNGI3NTdmM2YwMzZmYzViN2QzYTU2NjI3MTlhMDFlYjE0ZWQ3NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMy0wMyAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmUt
YWRkIGBJbnNwZWN0b3JGcm9udGVuZEhvc3RgIHN1cHBvcnQgZm9yIG1vdmluZyB0aGUgaW5zcGVj
dGVkIHdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4NTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGFydGlhbGx5IHJldmVydCByMjU3NzU5LCBhcyB0aGUgZGVzaWduIGNoYW5nZWQgZW5vdWdo
IHN1Y2ggdGhhdCB0aGlzIGNvZGUgaXMgc3RpbGwgdXNlZnVsLgorCisgICAgICAgIEFsbG93IHRo
ZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIHRvIGFzayB0aGUgY29udGFpbmluZyBhcHAgKHZpYSBg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRgKQorICAgICAgICB3aGV0aGVyIGl0IHN1cHBvcnRzIHRo
ZSBnaXZlbiBkb2NraW5nIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3Rh
cnRXaW5kb3dEcmFnKTogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6c3VwcG9ydHNEb2NrU2lkZSk6IEFkZGVkLgorCiAyMDIwLTAzLTAzICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzZXR0aW5nIHRo
ZSBmcm9udGVuZCBhcHBlYXJhbmNlIGRvZXNuJ3QgdXBkYXRlIHRoZSB3aW5kb3cgd2hlbiB1bmRv
Y2tlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGYyODA3Y2MwNTRiOTRiOTQ1Zjhj
YTdlN2VmZTg0YTQ2MjRkZjQzNjQuLjZkYjdiY2NlOWJiZDhlNzkzNDkyZDU3MzJkYTE2YmJkYTM4
ZWJhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JGcm9udGVuZEhvc3RgIHN1cHBvcnQgZm9yIG1v
dmluZyB0aGUgaW5zcGVjdGVkIHdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IHJldmVydCByMjU3NzU5LCBhcyB0aGUgZGVzaWdu
IGNoYW5nZWQgZW5vdWdoIHN1Y2ggdGhhdCB0aGlzIGNvZGUgaXMgc3RpbGwgdXNlZnVsLgorCisg
ICAgICAgIEFsbG93IHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIHRvIGFzayB0aGUgY29udGFp
bmluZyBhcHAgKHZpYSBgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRgKQorICAgICAgICB3aGV0aGVy
IGl0IHN1cHBvcnRzIHRoZSBnaXZlbiBkb2NraW5nIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnN1cHBvcnRzRG9ja1NpZGUpOiBBZGRlZC4KKwogMjAyMC0wMy0wMyAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQVBJIGhl
YWRlciBmaWxlIGhhcyBVU0UgbWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKaW5kZXggMThhYzQ0Mzc4ZGUzYmFmN2U2N2U0MWI2
MDk3MWY5MjUxODFlODEwNC4uMTUwNjhmOTU1ZDMzOWQ1ZjJiYjVmMjZjNDg1MDUyNmExZTZmOTZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50LmgKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
cm9udGVuZExvYWRlZCgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFdpbmRvd0RyYWco
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSA9
IDA7CisKICAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVidWdnYWJsZS4KICAgICB2aXJ0
dWFsIGJvb2wgaXNSZW1vdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgbG9jYWxp
emVkU3RyaW5nc1VSTCgpIGNvbnN0ID0gMDsKQEAgLTgwLDYgKzgzLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24oKSBjb25zdCA9IDA7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNEb2NrU2lkZShEb2NrU2lkZSkgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUpID0gMDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQp
ID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5k
b3dXaWR0aCh1bnNpZ25lZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDQwYTA5NzhlMTU3
NDUwYmUzMjE1ZmZmM2U0ZWIxYTYwNGI0NjA2YmYuLmE0ODYxMjc4MmQyYmIzOTFhYjZhZTVlN2Q4
YzMyNDkwMWFlYzFkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTI3MCw2ICsyNzAsMTMgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3Ry
aW5nJiB1cmwpCiAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdURk1vdmUoZnJh
bWVMb2FkUmVxdWVzdDIpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Ojptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVS
ZWN0ID0gbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJl
Y3QubW92ZSh4LCB5KTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+Y2hyb21lKCkuc2V0V2luZG93UmVj
dChmcmFtZVJlY3QpOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNl
dEF0dGFjaGVkV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogewogICAgIGNvbnN0IGNoYXIqIHNp
ZGUgPSAidW5kb2NrZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMDU1ZGY0MjA4OTIwZjY3ODcyMWJk
NmUzZmY1MTcyMjNiNGEyZmZlMS4uMGVjMzIwZDg5Mzc4NDUxOWFjYWE1MGE4MmNlMTZiZTYxOGFi
Mjg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC02Nyw2ICs2Nyw5IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHN0YXJ0
V2luZG93RHJhZygpIG92ZXJyaWRlIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVdp
bmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGZpbmFsOworCiAgICAgV0VCQ09SRV9FWFBPUlQgVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkg
Y29uc3QgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RTZXREb2NrU2lk
ZShEb2NrU2lkZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGQ3NTUxNGM5N2Y5ZjBlODUzOTVjNGY3MDg1Njk5
YmY0Zjc4ZTViZGYuLjVjODBkZmQzMzYxOWUwODk3ZWVjZTdkYzAwZmVjZmFlYjI5ZDc4ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwCkBAIC0xNzEsMTggKzE3MSw0MSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6bG9h
ZGVkKCkKICAgICAgICAgbV9jbGllbnQtPmZyb250ZW5kTG9hZGVkKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpyZXF1ZXN0U2V0RG9ja1NpZGUoY29uc3QgU3RyaW5nJiBzaWRl
KQorc3RhdGljIE9wdGlvbmFsPEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZT4gZG9j
a1NpZGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZG9ja1NpZGVTdHJpbmcpCit7CisgICAgaWYg
KGRvY2tTaWRlU3RyaW5nID09ICJ1bmRvY2tlZCIpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlVuZG9ja2VkOworICAgIGlmIChkb2NrU2lkZVN0cmlu
ZyA9PSAicmlnaHQiKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRv
Y2tTaWRlOjpSaWdodDsKKyAgICBpZiAoZG9ja1NpZGVTdHJpbmcgPT0gImxlZnQiKQorICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpMZWZ0OworICAgIGlm
IChkb2NrU2lkZVN0cmluZyA9PSAiYm90dG9tIikKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Cit9CisKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c0RvY2tTaWRlKGNvbnN0
IFN0cmluZyYgZG9ja1NpZGVTdHJpbmcpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byBkb2NrU2lkZSA9IGRvY2tTaWRlRnJvbVN0cmluZyhk
b2NrU2lkZVN0cmluZyk7CisgICAgaWYgKCFkb2NrU2lkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIG1fY2xpZW50LT5zdXBwb3J0c0RvY2tTaWRlKGRvY2tTaWRlLnZhbHVl
KCkpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVxdWVzdFNldERvY2tTaWRl
KGNvbnN0IFN0cmluZyYgZG9ja1NpZGVTdHJpbmcpCiB7CiAgICAgaWYgKCFtX2NsaWVudCkKICAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChzaWRlID09ICJ1bmRvY2tlZCIpCi0gICAgICAgIG1fY2xp
ZW50LT5yZXF1ZXN0U2V0RG9ja1NpZGUoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRl
OjpVbmRvY2tlZCk7Ci0gICAgZWxzZSBpZiAoc2lkZSA9PSAicmlnaHQiKQotICAgICAgICBtX2Ns
aWVudC0+cmVxdWVzdFNldERvY2tTaWRlKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lk
ZTo6UmlnaHQpOwotICAgIGVsc2UgaWYgKHNpZGUgPT0gImxlZnQiKQotICAgICAgICBtX2NsaWVu
dC0+cmVxdWVzdFNldERvY2tTaWRlKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6
TGVmdCk7Ci0gICAgZWxzZSBpZiAoc2lkZSA9PSAiYm90dG9tIikKLSAgICAgICAgbV9jbGllbnQt
PnJlcXVlc3RTZXREb2NrU2lkZShJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OkJv
dHRvbSk7CisKKyAgICBhdXRvIGRvY2tTaWRlID0gZG9ja1NpZGVGcm9tU3RyaW5nKGRvY2tTaWRl
U3RyaW5nKTsKKyAgICBpZiAoIWRvY2tTaWRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ns
aWVudC0+cmVxdWVzdFNldERvY2tTaWRlKGRvY2tTaWRlLnZhbHVlKCkpOwogfQogCiB2b2lkIElu
c3BlY3RvckZyb250ZW5kSG9zdDo6Y2xvc2VXaW5kb3coKQpAQCAtMjgyLDYgKzMwNSwxOCBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2V0U2hlZXRSZWN0KGZsb2F0IHgsIGZsb2F0IHks
IHVuc2lnbmVkIHdpZHRoLCB1bnNpZwogICAgICAgICBtX2NsaWVudC0+Y2hhbmdlU2hlZXRSZWN0
KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpzdGFydFdpbmRvd0RyYWcoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPnN0YXJ0V2luZG93RHJhZygpOworfQorCit2b2lkIEluc3BlY3RvckZyb250
ZW5kSG9zdDo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0Cit7CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bW92ZVdpbmRvd0J5KHgsIHkpOworfQorCiBi
b29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6aXNSZW1vdGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2NsaWVudCAmJiBtX2NsaWVudC0+aXNSZW1vdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCA3YTY1ZWQxMGM4ZDEwODhl
ZTA4YzI3ZGJhZDhkZmQ2M2U4ZDFmNzM0Li42NzQyMjg3MDc4NmM2NDQ0M2FlMDA2OTQ4YWNhMGI5
MzcxYzFjZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAKKyAgICBib29sIHN1cHBvcnRzRG9ja1NpZGUo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUoY29uc3QgU3RyaW5n
Jik7CiAKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKQEAgLTc5
LDYgKzgwLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaGVldFJlY3QoZmxvYXQgeCwgZmxv
YXQgeSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAKKyAgICB2b2lkIHN0YXJ0
V2luZG93RHJhZygpOworICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNv
bnN0OworCiAgICAgYm9vbCBpc1JlbW90ZSgpIGNvbnN0OwogICAgIFN0cmluZyBsb2NhbGl6ZWRT
dHJpbmdzVVJMKCkgY29uc3Q7CiAgICAgU3RyaW5nIGJhY2tlbmRDb21tYW5kc1VSTCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbAppbmRleCAzZGIwZTdmMzhlYTZmMTE3ODIyNTA1NWYyYTFhYjk2OGVjODFlODI1Li5lNzhj
MTg5MTk2MjllN2NmMTE5NDIzZDI2OGExYTRlOWNlZTJkOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNTIsMTMgKzUy
LDE3IEBACiAKICAgICBET01TdHJpbmcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpOwog
Ci0gICAgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUoRE9NU3RyaW5nIHNpZGUpOworICAgIGJvb2xl
YW4gc3VwcG9ydHNEb2NrU2lkZShET01TdHJpbmcgZG9ja1NpZGUpOworICAgIHZvaWQgcmVxdWVz
dFNldERvY2tTaWRlKERPTVN0cmluZyBkb2NrU2lkZSk7CiAKICAgICB2b2lkIHNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKICAgICB2b2lkIHNldEF0dGFjaGVk
V2luZG93V2lkdGgodW5zaWduZWQgbG9uZyB3aWR0aCk7CiAKICAgICB2b2lkIHNldFNoZWV0UmVj
dCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dE
cmFnKCk7CisgICAgdm9pZCBtb3ZlV2luZG93QnkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVz
dHJpY3RlZCBmbG9hdCB5KTsKKwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzUmVt
b3RlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VS
TDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJhY2tlbmRDb21tYW5kc1VSTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0NDMyNjA4ZTcwMjA0ZmU4YjIx
MTFhNWQ1ZGM2NTcxOTUyN2RhMWVhLi5iNzM0YjQ5ZWYyMTJkMmM3MWQ5NTgzMGEzNjliMmE4NzE0
NTNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDQsNiArMzQ0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclN0dWJGcm9udGVuZCgpOwogCiBw
cml2YXRlOgorICAgIGJvb2wgc3VwcG9ydHNEb2NrU2lkZShEb2NrU2lkZSkgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgZmluYWwgeyB9CiAg
ICAgdm9pZCBkZXRhY2hXaW5kb3coKSBmaW5hbCB7IH0KICAgICB2b2lkIGNsb3NlV2luZG93KCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMKaW5kZXggM2FjNjNkOWQxMzY3M2IwYjI4N2I4MjFhNjc2NWEwNjI2YWY0MmZjZi4uZmY3
MWFiZWI1NTRmOTRjZTk1MjRjY2U3YzgxZWQxYTRjY2I1MzA2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMzcwLDE3ICszNzAs
MjggQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBXSS5fY2xvc2VUYWJCYXJC
dXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRvY2stY2xvc2UiLCBXSS5VSVN0
cmluZygiQ2xvc2UiKSwgIkltYWdlcy9DbG9zZUxhcmdlLnN2ZyIpOwogICAgIFdJLl9jbG9zZVRh
YkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIFdJLmNsb3NlKTsKIAotICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uID0g
bmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkb2NrLXJpZ2h0IiwgV0kuVUlTdHJpbmcoIkRv
Y2sgdG8gc2lkZSBvZiB3aW5kb3ciKSwgV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0g
V0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/ICJJbWFnZXMvRG9ja0xlZnQuc3ZnIiA6ICJJbWFnZXMv
RG9ja1JpZ2h0LnN2ZyIsIDE2LCAxNik7Ci0gICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24u
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05h
bWUpOwotICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kucmVzb2x2ZWRMYXlvdXREaXJl
Y3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/IFdJLl9kb2NrTGVmdCA6IFdJLl9k
b2NrUmlnaHQpOworICAgIGxldCBkb2NraW5nQ29uZmlndXJhdGlvbk5hdmlnYXRpb25JdGVtcyA9
IFtdOwogCi0gICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0oImRvY2stYm90dG9tIiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8gYm90dG9tIG9m
IHdpbmRvdyIpLCAiSW1hZ2VzL0RvY2tCb3R0b20uc3ZnIiwgMTYsIDE2KTsKLSAgICBXSS5fZG9j
a0JvdHRvbVRhYkJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25v
cmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24u
YWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBX
SS5fZG9ja0JvdHRvbSk7CisgICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c0Rv
Y2tTaWRlKFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0KSAmJiBJbnNwZWN0b3JGcm9udGVuZEhv
c3Quc3VwcG9ydHNEb2NrU2lkZShXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KSkgeworICAgICAg
ICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bSgiZG9jay1yaWdodCIsIFdJLlVJU3RyaW5nKCJEb2NrIHRvIHNpZGUgb2Ygd2luZG93IiksIFdJ
LnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyAi
SW1hZ2VzL0RvY2tMZWZ0LnN2ZyIgOiAiSW1hZ2VzL0RvY2tSaWdodC5zdmciLCAxNiwgMTYpOwor
ICAgICAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7CisgICAgICAgIFdJLl9kb2Nr
VG9TaWRlVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uRXZlbnQuQ2xpY2tlZCwgV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5
b3V0RGlyZWN0aW9uLlJUTCA/IFdJLl9kb2NrTGVmdCA6IFdJLl9kb2NrUmlnaHQpOworICAgICAg
ICBkb2NraW5nQ29uZmlndXJhdGlvbk5hdmlnYXRpb25JdGVtcy5wdXNoKFdJLl9kb2NrVG9TaWRl
VGFiQmFyQnV0dG9uKTsKKyAgICB9CiAKLSAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uID0gbmV3
IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJ1bmRvY2siLCBXSS5VSVN0cmluZygiRGV0YWNoIGlu
dG8gc2VwYXJhdGUgd2luZG93IiksICJJbWFnZXMvVW5kb2NrLnN2ZyIsIDE2LCAxNik7Ci0gICAg
V0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5J
Z25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5h
ZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJ
Ll91bmRvY2spOworICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNEb2NrU2lk
ZShXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20pKSB7CisgICAgICAgIFdJLl9kb2NrQm90dG9t
VGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkb2NrLWJvdHRvbSIs
IFdJLlVJU3RyaW5nKCJEb2NrIHRvIGJvdHRvbSBvZiB3aW5kb3ciKSwgIkltYWdlcy9Eb2NrQm90
dG9tLnN2ZyIsIDE2LCAxNik7CisgICAgICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NOYW1l
KTsKKyAgICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fZG9ja0JvdHRvbSk7Cisg
ICAgICAgIGRvY2tpbmdDb25maWd1cmF0aW9uTmF2aWdhdGlvbkl0ZW1zLnB1c2goV0kuX2RvY2tC
b3R0b21UYWJCYXJCdXR0b24pOworICAgIH0KKworICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhv
c3Quc3VwcG9ydHNEb2NrU2lkZShXSS5Eb2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZCkpIHsKKyAg
ICAgICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bSgidW5kb2NrIiwgV0kuVUlTdHJpbmcoIkRldGFjaCBpbnRvIHNlcGFyYXRlIHdpbmRvdyIpLCAi
SW1hZ2VzL1VuZG9jay5zdmciLCAxNiwgMTYpOworICAgICAgICBXSS5fdW5kb2NrVGFiQmFyQnV0
dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xh
c3NOYW1lKTsKKyAgICAgICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl91bmRvY2spOworICAg
ICAgICBkb2NraW5nQ29uZmlndXJhdGlvbk5hdmlnYXRpb25JdGVtcy5wdXNoKFdJLl91bmRvY2tU
YWJCYXJCdXR0b24pOworICAgIH0KIAogICAgIGxldCBpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmln
YXRpb25JdGVtcyA9IFtdOwogCkBAIC00MTcsOSArNDI4LDcgQEAgV0kuY29udGVudExvYWRlZCA9
IGZ1bmN0aW9uKCkKIAogICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShuZXcg
V0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShbCiAgICAgICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbiwK
LSAgICAgICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24sCi0gICAgICAgIFdJLl9kb2NrQm90
dG9tVGFiQmFyQnV0dG9uLAotICAgICAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLAorICAgICAg
ICAuLi5kb2NraW5nQ29uZmlndXJhdGlvbk5hdmlnYXRpb25JdGVtcywKICAgICAgICAgLi4uaW5z
cGVjdGVkUGFnZUNvbnRyb2xOYXZpZ2F0aW9uSXRlbXMsCiAgICAgXSkpOwogCkBAIC00NjAsNyAr
NDY5LDEwIEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICBXSS5fZG9ja2Vk
UmVzaXplckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZG9ja2VkLXJlc2l6ZXIi
KTsKICAgICBXSS5fZG9ja2VkUmVzaXplckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVy
Lklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NOYW1lKTsKLSAgICBXSS5fZG9ja2VkUmVzaXplckVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgV0kuX2RvY2tlZFJlc2l6ZXJNb3VzZURv
d24pOworICAgIFdJLl9kb2NrZWRSZXNpemVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCBXSS5faGFuZGxlRG9ja2VkUmVzaXplck1vdXNlRG93bik7CisKKyAgICBsZXQgdW5k
b2NrZWRUaXRsZUFyZWFFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVuZG9ja2Vk
LXRpdGxlLWFyZWEiKTsKKyAgICB1bmRvY2tlZFRpdGxlQXJlYUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgV0kuX2hhbmRsZVVuZG9ja2VkVGl0bGVBcmVhTW91c2VEb3duKTsK
IAogICAgIFdJLl9kb2NraW5nQXZhaWxhYmxlID0gZmFsc2U7CiAKQEAgLTgzMywxMCArODQ1LDEw
IEBAIFdJLnVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkgPSBmdW5jdGlvbihhdmFpbGFibGUpCiAK
IFdJLnVwZGF0ZURvY2tlZFN0YXRlID0gZnVuY3Rpb24oc2lkZSkKIHsKLSAgICBpZiAoV0kuX2Rv
Y2tDb25maWd1cmF0aW9uID09PSBzaWRlKQorICAgIGlmIChXSS5kb2NrQ29uZmlndXJhdGlvbiA9
PT0gc2lkZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0kuX3ByZXZpb3VzRG9ja0NvbmZpZ3Vy
YXRpb24gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb247CisgICAgV0kuX3ByZXZpb3VzRG9ja0NvbmZp
Z3VyYXRpb24gPSBXSS5kb2NrQ29uZmlndXJhdGlvbjsKIAogICAgIGlmICghV0kuX3ByZXZpb3Vz
RG9ja0NvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgaWYgKHNpZGUgPT09IFdJLkRvY2tDb25maWd1
cmF0aW9uLlJpZ2h0IHx8IHNpZGUgPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQpCkBAIC04
NDUsMjEgKzg1NywyOCBAQCBXSS51cGRhdGVEb2NrZWRTdGF0ZSA9IGZ1bmN0aW9uKHNpZGUpCiAg
ICAgICAgICAgICBXSS5fcHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbiA9IFdJLnJlc29sdmVkTGF5
b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyBXSS5Eb2NrQ29uZmln
dXJhdGlvbi5MZWZ0IDogV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQ7CiAgICAgfQogCi0gICAg
V0kuX2RvY2tDb25maWd1cmF0aW9uID0gc2lkZTsKKyAgICBXSS5kb2NrQ29uZmlndXJhdGlvbiA9
IHNpZGU7CiAKLSAgICBXSS5kb2NrZWQgPSBzaWRlICE9PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5V
bmRvY2tlZDsKLQotICAgIGlmIChzaWRlID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20p
IHsKKyAgICBzd2l0Y2ggKFdJLmRvY2tDb25maWd1cmF0aW9uKSB7CisgICAgY2FzZSBXSS5Eb2Nr
Q29uZmlndXJhdGlvbi5Cb3R0b206CiAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFk
ZCgiZG9ja2VkIiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tKTsKICAgICAgICAgZG9jdW1l
bnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJ3aW5kb3ctaW5hY3RpdmUiLCBXSS5Eb2NrQ29uZmln
dXJhdGlvbi5SaWdodCwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCk7Ci0gICAgfSBlbHNlIGlm
IChzaWRlID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdodCkgeworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQ6CiAgICAgICAgIGRvY3VtZW50
LmJvZHkuY2xhc3NMaXN0LmFkZCgiZG9ja2VkIiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQp
OwogICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoIndpbmRvdy1pbmFjdGl2
ZSIsIFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVm
dCk7Ci0gICAgfSBlbHNlIGlmIChzaWRlID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KSB7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0Ogog
ICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoImRvY2tlZCIsIFdJLkRvY2tDb25m
aWd1cmF0aW9uLkxlZnQpOwogICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUo
IndpbmRvdy1pbmFjdGl2ZSIsIFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSwgV0kuRG9ja0Nv
bmZpZ3VyYXRpb24uUmlnaHQpOwotICAgIH0gZWxzZQorICAgICAgICBicmVhazsKKworICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiZG9ja2VkIiwg
V0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQsIFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQsIFdJ
LkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IFdJLl91cGRhdGVEb2NrTmF2aWdhdGlvbkl0ZW1zKCk7CiAKQEAgLTg2Nyw2ICs4ODYsMTIzIEBA
IFdJLnVwZGF0ZURvY2tlZFN0YXRlID0gZnVuY3Rpb24oc2lkZSkKICAgICAgICAgV0kuaGlkZVNw
bGl0Q29uc29sZSgpOwogfTsKIAorV0kucmVzaXplRG9ja2VkRnJhbWVNb3VzZURvd24gPSBmdW5j
dGlvbihldmVudCkKK3sKKyAgICBjb25zb2xlLmFzc2VydChXSS5kb2NrQ29uZmlndXJhdGlvbiAh
PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uVW5kb2NrZWQpOworCisgICAgaWYgKGV2ZW50LmJ1dHRv
biAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICByZXR1cm47CisKKyAgICBldmVudFtX
SS5Qb3BvdmVyLkV2ZW50UHJldmVudERpc21pc3NTeW1ib2xdID0gdHJ1ZTsKKworICAgIGxldCBp
c0RvY2tlZEJvdHRvbSA9IFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJh
dGlvbi5Cb3R0b207CisKKyAgICBsZXQgd2luZG93UHJvcGVydHkgPSBpc0RvY2tlZEJvdHRvbSA/
ICJpbm5lckhlaWdodCIgOiAiaW5uZXJXaWR0aCI7CisgICAgbGV0IGV2ZW50U2NyZWVuUHJvcGVy
dHkgPSBpc0RvY2tlZEJvdHRvbSA/ICJzY3JlZW5ZIiA6ICJzY3JlZW5YIjsKKyAgICBsZXQgZXZl
bnRDbGllbnRQcm9wZXJ0eSA9IGlzRG9ja2VkQm90dG9tID8gImNsaWVudFkiIDogImNsaWVudFgi
OworCisgICAgbGV0IHJlc2l6ZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0OworICAgIGxldCBmaXJz
dENsaWVudFBvc2l0aW9uID0gZXZlbnRbZXZlbnRDbGllbnRQcm9wZXJ0eV07CisgICAgbGV0IGxh
c3RTY3JlZW5Qb3NpdGlvbiA9IGV2ZW50W2V2ZW50U2NyZWVuUHJvcGVydHldOworCisgICAgZnVu
Y3Rpb24gZGl2aWRlckRyYWcoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuYnV0dG9u
ICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBwb3NpdGlvbiA9IGV2
ZW50W2V2ZW50U2NyZWVuUHJvcGVydHldOworICAgICAgICBsZXQgZGVsdGEgPSBwb3NpdGlvbiAt
IGxhc3RTY3JlZW5Qb3NpdGlvbjsKKyAgICAgICAgbGV0IGNsaWVudFBvc2l0aW9uID0gZXZlbnRb
ZXZlbnRDbGllbnRQcm9wZXJ0eV07CisKKyAgICAgICAgbGFzdFNjcmVlblBvc2l0aW9uID0gcG9z
aXRpb247CisKKyAgICAgICAgaWYgKFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29u
ZmlndXJhdGlvbi5MZWZ0KSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgbW91c2UgaXMgdHJhdmVs
bGluZyByaWdodHdhcmQgYnV0IGlzIHBvc2l0aW9uZWQgbGVmdCBvZiB0aGUgcmVzaXplciwgaWdu
b3JlIHRoZSBldmVudC4KKyAgICAgICAgICAgIGlmIChkZWx0YSA+IDAgJiYgY2xpZW50UG9zaXRp
b24gPCBmaXJzdENsaWVudFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgLy8gSWYgdGhlIG1vdXNlIGlzIHRyYXZlbGxpbmcgbGVmdHdhcmQgYnV0IGlzIHBv
c2l0aW9uZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXNpemVyLCBpZ25vcmUgdGhlIGV2ZW50Lgor
ICAgICAgICAgICAgaWYgKGRlbHRhIDwgMCAmJiBjbGllbnRQb3NpdGlvbiA+IHdpbmRvd1t3aW5k
b3dQcm9wZXJ0eV0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAvLyBX
ZSBsYXRlciBzdWJ0cmFjdCB0aGUgZGVsdGEgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiwgYnV0
IHNpbmNlIHRoZSBpbnNwZWN0ZWQgdmlldyBhbmQgaW5zcGVjdG9yIHZpZXcKKyAgICAgICAgICAg
IC8vIGFyZSBmbGlwcGVkIHdoZW4gZG9ja2VkIHRvIGxlZnQsIHdlIHdhbnQgZHJhZ2dpbmcgdG8g
aGF2ZSB0aGUgb3Bwb3NpdGUgZWZmZWN0IGZyb20gZG9ja2VkIHRvIHJpZ2h0LgorICAgICAgICAg
ICAgZGVsdGEgKj0gLTE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBJZiB0aGUg
bW91c2UgaXMgdHJhdmVsbGluZyBkb3dud2FyZC9yaWdodHdhcmQgYnV0IGlzIHBvc2l0aW9uZWQg
YWJvdmUvbGVmdCBvZiB0aGUgcmVzaXplciwgaWdub3JlIHRoZSBldmVudC4KKyAgICAgICAgICAg
IGlmIChkZWx0YSA+IDAgJiYgY2xpZW50UG9zaXRpb24gPCBmaXJzdENsaWVudFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8gSWYgdGhlIG1vdXNlIGlz
IHRyYXZlbGxpbmcgdXB3YXJkL2xlZnR3YXJkIGJ1dCBpcyBwb3NpdGlvbmVkIGJlbG93L3JpZ2h0
IG9mIHRoZSByZXNpemVyLCBpZ25vcmUgdGhlIGV2ZW50LgorICAgICAgICAgICAgaWYgKGRlbHRh
IDwgMCAmJiBjbGllbnRQb3NpdGlvbiA+IGZpcnN0Q2xpZW50UG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbiA9IE1hdGgu
bWF4KDAsIHdpbmRvd1t3aW5kb3dQcm9wZXJ0eV0gLSBkZWx0YSk7CisgICAgICAgIC8vIElmIHpv
b21lZCBpbi9vdXQsIHRoZXJlIGJlIGdyZWF0ZXIvZmV3ZXIgZG9jdW1lbnQgcGl4ZWxzIHNob3du
LCBidXQgdGhlIGluc3BlY3RvcidzCisgICAgICAgIC8vIHdpZHRoIG9yIGhlaWdodCBzaG91bGQg
YmUgdGhlIHNhbWUgaW4gZGV2aWNlIHBpeGVscyByZWdhcmRsZXNzIG9mIHRoZSBkb2N1bWVudCB6
b29tLgorICAgICAgICBkaW1lbnNpb24gKj0gV0kuZ2V0Wm9vbUZhY3RvcigpOworCisgICAgICAg
IGlmIChpc0RvY2tlZEJvdHRvbSkKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5z
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodChkaW1lbnNpb24pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0QXR0YWNoZWRXaW5kb3dXaWR0aChkaW1lbnNp
b24pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVsZW1lbnREcmFnRW5kKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBXSS5lbGVtZW50RHJhZ0VuZChldmVudCk7CisgICAgfQorCisgICAgbGV0IGN1cnNv
ciA9IGlzRG9ja2VkQm90dG9tID8gInJvdy1yZXNpemUiIDogImNvbC1yZXNpemUiOworICAgIFdJ
LmVsZW1lbnREcmFnU3RhcnQocmVzaXplckVsZW1lbnQsIGRpdmlkZXJEcmFnLCBlbGVtZW50RHJh
Z0VuZCwgZXZlbnQsIGN1cnNvcik7Cit9OworCitXSS5tb3ZlVW5kb2NrZWRXaW5kb3dNb3VzZURv
d24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBjb25zb2xlLmFzc2VydChXSS5kb2NrQ29uZmln
dXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uVW5kb2NrZWQpOworCisgICAgaWYgKGV2
ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBldmVudFtXSS5Qb3BvdmVyLkV2ZW50UHJldmVudERpc21pc3NTeW1ib2xdID0gdHJ1ZTsKKwor
ICAgIGlmIChXSS5QbGF0Zm9ybS5uYW1lID09PSAibWFjIikgeworICAgICAgICBJbnNwZWN0b3JG
cm9udGVuZEhvc3Quc3RhcnRXaW5kb3dEcmFnKCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQgbGFzdFNjcmVlblggPSBl
dmVudC5zY3JlZW5YOworICAgIGxldCBsYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7CisKKyAg
ICBmdW5jdGlvbiBkaXZpZGVyRHJhZyhldmVudCkgeworICAgICAgICBpZiAoZXZlbnQuYnV0dG9u
ICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCB4ID0gZXZlbnQuc2Ny
ZWVuWCAtIGxhc3RTY3JlZW5YOworICAgICAgICBsZXQgeSA9IGV2ZW50LnNjcmVlblkgLSBsYXN0
U2NyZWVuWTsKKworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5KHgs
IHkpOworCisgICAgICAgIGxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAgbGFz
dFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVsZW1lbnRE
cmFnRW5kKGV2ZW50KSB7CisgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgV0kuZWxlbWVudERyYWdFbmQoZXZlbnQpOworICAgIH0K
KworICAgIGNvbnN0IGN1cnNvciA9ICJkZWZhdWx0IjsKKyAgICBXSS5lbGVtZW50RHJhZ1N0YXJ0
KGV2ZW50LnRhcmdldCwgZGl2aWRlckRyYWcsIGVsZW1lbnREcmFnRW5kLCBldmVudCwgY3Vyc29y
KTsKK307CisKIFdJLnVwZGF0ZVZpc2liaWxpdHlTdGF0ZSA9IGZ1bmN0aW9uKHZpc2libGUpCiB7
CiAgICAgV0kudmlzaWJsZSA9IHZpc2libGU7CkBAIC05NjcsNyArMTEwMyw3IEBAIFdJLmlzU2hv
d2luZ1NwbGl0Q29uc29sZSA9IGZ1bmN0aW9uKCkKIAogV0kuZG9ja2VkQ29uZmlndXJhdGlvblN1
cHBvcnRzU3BsaXRDb250ZW50QnJvd3NlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICByZXR1cm4gV0ku
X2RvY2tDb25maWd1cmF0aW9uICE9PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b207CisgICAg
cmV0dXJuIFdJLmRvY2tDb25maWd1cmF0aW9uICE9PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0
b207CiB9OwogCiBXSS5kb2VzQ3VycmVudFRhYlN1cHBvcnRTcGxpdENvbnRlbnRCcm93c2VyID0g
ZnVuY3Rpb24oKQpAQCAtMTU4OCw3ICsxNzI0LDcgQEAgV0kuX3dpbmRvd0ZvY3VzZWQgPSBmdW5j
dGlvbihldmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1
c2UgdGhlIDp3aW5kb3ctaW5hY3RpdmUgcHNldWRvIGNsYXNzIG9uY2UgaHR0cHM6Ly93ZWJraXQu
b3JnL2IvMzg5MjcgaXMgZml4ZWQuCi0gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3Zl
KFdJLmRvY2tlZCA/ICJ3aW5kb3ctZG9ja2VkLWluYWN0aXZlIiA6ICJ3aW5kb3ctaW5hY3RpdmUi
KTsKKyAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoV0kuZG9ja0NvbmZpZ3VyYXRp
b24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2VkID8gIndpbmRvdy1pbmFjdGl2ZSIg
OiAid2luZG93LWRvY2tlZC1pbmFjdGl2ZSIpOwogfTsKIAogV0kuX3dpbmRvd0JsdXJyZWQgPSBm
dW5jdGlvbihldmVudCkKQEAgLTE1OTcsNyArMTczMyw3IEBAIFdJLl93aW5kb3dCbHVycmVkID0g
ZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgdXNlIHRoZSA6d2luZG93LWluYWN0aXZlIHBzZXVkbyBjbGFzcyBvbmNlIGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzM4OTI3IGlzIGZpeGVkLgotICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFk
ZChXSS5kb2NrZWQgPyAid2luZG93LWRvY2tlZC1pbmFjdGl2ZSIgOiAid2luZG93LWluYWN0aXZl
Iik7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFdJLmRvY2tDb25maWd1cmF0aW9u
ID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZCA/ICJ3aW5kb3ctaW5hY3RpdmUiIDog
IndpbmRvdy1kb2NrZWQtaW5hY3RpdmUiKTsKIH07CiAKIFdJLl93aW5kb3dSZXNpemVkID0gZnVu
Y3Rpb24oZXZlbnQpCkBAIC0xNzI4LDE2ICsxODY0LDI0IEBAIFdJLl90b2dnbGVQcmV2aW91c0Rv
Y2tDb25maWd1cmF0aW9uID0gZnVuY3Rpb24oZXZlbnQpCiAKIFdJLl91cGRhdGVEb2NrTmF2aWdh
dGlvbkl0ZW1zID0gZnVuY3Rpb24oKQogewotICAgIGlmIChXSS5fZG9ja2luZ0F2YWlsYWJsZSB8
fCBXSS5kb2NrZWQpIHsKLSAgICAgICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLmhpZGRlbiA9ICFX
SS5kb2NrZWQ7Ci0gICAgICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24uaGlkZGVuID0gV0kuX2Rv
Y2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZDsKLSAgICAg
ICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uaGlkZGVuID0gV0kuX2RvY2tDb25maWd1cmF0
aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b207Ci0gICAgICAgIFdJLl9kb2NrVG9T
aWRlVGFiQmFyQnV0dG9uLmhpZGRlbiA9IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9j
a0NvbmZpZ3VyYXRpb24uUmlnaHQgfHwgV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2Nr
Q29uZmlndXJhdGlvbi5MZWZ0OworICAgIGxldCBkb2NrZWQgPSBXSS5kb2NrQ29uZmlndXJhdGlv
biAhPT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uVW5kb2NrZWQ7CisKKyAgICBpZiAoV0kuX2RvY2tp
bmdBdmFpbGFibGUgfHwgZG9ja2VkKSB7CisgICAgICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbi5o
aWRkZW4gPSAhZG9ja2VkOworICAgICAgICBpZiAoV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24p
CisgICAgICAgICAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSBXSS5kb2Nr
Q29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQgfHwgV0kuZG9ja0Nv
bmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQ7CisgICAgICAgIGlmIChX
SS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbikKKyAgICAgICAgICAgIFdJLl9kb2NrQm90dG9tVGFi
QmFyQnV0dG9uLmhpZGRlbiA9IFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmln
dXJhdGlvbi5Cb3R0b207CisgICAgICAgIGlmIChXSS5fdW5kb2NrVGFiQmFyQnV0dG9uKQorICAg
ICAgICAgICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5oaWRkZW4gPSBXSS5kb2NrQ29uZmlndXJh
dGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uVW5kb2NrZWQ7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIFdJLl91
bmRvY2tUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgV0kuX2RvY2tCb3R0b21U
YWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJC
dXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgaWYgKFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0
dG9uKQorICAgICAgICAgICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1
ZTsKKyAgICAgICAgaWYgKFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uKQorICAgICAgICAgICAg
V0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgaWYgKFdJ
Ll91bmRvY2tUYWJCYXJCdXR0b24pCisgICAgICAgICAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9u
LmhpZGRlbiA9IHRydWU7CiAgICAgfQogCiAgICAgV0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzKCk7
CkBAIC0xNzk1LDgxICsxOTM5LDE0IEBAIFdJLl90YWJCcm93c2VyU2VsZWN0ZWRUYWJDb250ZW50
Vmlld0RpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIFdJLmhpZGVTcGxpdENvbnNvbGUo
KTsKIH07CiAKLVdJLl9kb2NrZWRSZXNpemVyTW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCitX
SS5faGFuZGxlRG9ja2VkUmVzaXplck1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAg
IGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKLSAgICAgICAgcmV0dXJu
OworICAgIFdJLnJlc2l6ZURvY2tlZEZyYW1lTW91c2VEb3duKGV2ZW50KTsKK307CiAKLSAgICBp
ZiAoIVdJLmRvY2tlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gT25seSBzdGFydCBkcmFn
Z2luZyBpZiB0aGUgdGFyZ2V0IGlzIG9uZSBvZiB0aGUgZWxlbWVudHMgdGhhdCB3ZSBleHBlY3Qu
Ci0gICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gV0kuX2RvY2tlZFJlc2l6ZXJFbGVtZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBldmVudFtXSS5Qb3BvdmVyLkV2ZW50UHJldmVudERpc21pc3NT
eW1ib2xdID0gdHJ1ZTsKLQotICAgIGxldCB3aW5kb3dQcm9wZXJ0eSA9IFdJLl9kb2NrQ29uZmln
dXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tID8gImlubmVySGVpZ2h0IiA6
ICJpbm5lcldpZHRoIjsKLSAgICBsZXQgZXZlbnRTY3JlZW5Qcm9wZXJ0eSA9IFdJLl9kb2NrQ29u
ZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tID8gInNjcmVlblkiIDog
InNjcmVlblgiOwotICAgIGxldCBldmVudENsaWVudFByb3BlcnR5ID0gV0kuX2RvY2tDb25maWd1
cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20gPyAiY2xpZW50WSIgOiAiY2xp
ZW50WCI7Ci0KLSAgICB2YXIgcmVzaXplckVsZW1lbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgdmFy
IGZpcnN0Q2xpZW50UG9zaXRpb24gPSBldmVudFtldmVudENsaWVudFByb3BlcnR5XTsKLSAgICB2
YXIgbGFzdFNjcmVlblBvc2l0aW9uID0gZXZlbnRbZXZlbnRTY3JlZW5Qcm9wZXJ0eV07Ci0KLSAg
ICBmdW5jdGlvbiBkb2NrZWRSZXNpemVyRHJhZyhldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChl
dmVudC5idXR0b24gIT09IDApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHBv
c2l0aW9uID0gZXZlbnRbZXZlbnRTY3JlZW5Qcm9wZXJ0eV07Ci0gICAgICAgIHZhciBkZWx0YSA9
IHBvc2l0aW9uIC0gbGFzdFNjcmVlblBvc2l0aW9uOwotICAgICAgICB2YXIgY2xpZW50UG9zaXRp
b24gPSBldmVudFtldmVudENsaWVudFByb3BlcnR5XTsKLQotICAgICAgICBsYXN0U2NyZWVuUG9z
aXRpb24gPSBwb3NpdGlvbjsKLQotICAgICAgICBpZiAoV0kuX2RvY2tDb25maWd1cmF0aW9uID09
PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgbW91
c2UgaXMgdHJhdmVsbGluZyByaWdodHdhcmQgYnV0IGlzIHBvc2l0aW9uZWQgbGVmdCBvZiB0aGUg
cmVzaXplciwgaWdub3JlIHRoZSBldmVudC4KLSAgICAgICAgICAgIGlmIChkZWx0YSA+IDAgJiYg
Y2xpZW50UG9zaXRpb24gPCBmaXJzdENsaWVudFBvc2l0aW9uKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgLy8gSWYgdGhlIG1vdXNlIGlzIHRyYXZlbGxpbmcgbGVmdHdh
cmQgYnV0IGlzIHBvc2l0aW9uZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXNpemVyLCBpZ25vcmUg
dGhlIGV2ZW50LgotICAgICAgICAgICAgaWYgKGRlbHRhIDwgMCAmJiBjbGllbnRQb3NpdGlvbiA+
IHdpbmRvd1t3aW5kb3dQcm9wZXJ0eV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICAvLyBXZSBsYXRlciBzdWJ0cmFjdCB0aGUgZGVsdGEgZnJvbSB0aGUgY3VycmVudCBw
b3NpdGlvbiwgYnV0IHNpbmNlIHRoZSBpbnNwZWN0ZWQgdmlldyBhbmQgaW5zcGVjdG9yIHZpZXcK
LSAgICAgICAgICAgIC8vIGFyZSBmbGlwcGVkIHdoZW4gZG9ja2VkIHRvIGxlZnQsIHdlIHdhbnQg
ZHJhZ2dpbmcgdG8gaGF2ZSB0aGUgb3Bwb3NpdGUgZWZmZWN0IGZyb20gZG9ja2VkIHRvIHJpZ2h0
LgotICAgICAgICAgICAgZGVsdGEgKj0gLTE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAvLyBJZiB0aGUgbW91c2UgaXMgdHJhdmVsbGluZyBkb3dud2FyZC9yaWdodHdhcmQgYnV0IGlz
IHBvc2l0aW9uZWQgYWJvdmUvbGVmdCBvZiB0aGUgcmVzaXplciwgaWdub3JlIHRoZSBldmVudC4K
LSAgICAgICAgICAgIGlmIChkZWx0YSA+IDAgJiYgY2xpZW50UG9zaXRpb24gPCBmaXJzdENsaWVu
dFBvc2l0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgLy8gSWYg
dGhlIG1vdXNlIGlzIHRyYXZlbGxpbmcgdXB3YXJkL2xlZnR3YXJkIGJ1dCBpcyBwb3NpdGlvbmVk
IGJlbG93L3JpZ2h0IG9mIHRoZSByZXNpemVyLCBpZ25vcmUgdGhlIGV2ZW50LgotICAgICAgICAg
ICAgaWYgKGRlbHRhIDwgMCAmJiBjbGllbnRQb3NpdGlvbiA+IGZpcnN0Q2xpZW50UG9zaXRpb24p
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IGRpbWVu
c2lvbiA9IE1hdGgubWF4KDAsIHdpbmRvd1t3aW5kb3dQcm9wZXJ0eV0gLSBkZWx0YSk7Ci0gICAg
ICAgIC8vIElmIHpvb21lZCBpbi9vdXQsIHRoZXJlIGJlIGdyZWF0ZXIvZmV3ZXIgZG9jdW1lbnQg
cGl4ZWxzIHNob3duLCBidXQgdGhlIGluc3BlY3RvcidzCi0gICAgICAgIC8vIHdpZHRoIG9yIGhl
aWdodCBzaG91bGQgYmUgdGhlIHNhbWUgaW4gZGV2aWNlIHBpeGVscyByZWdhcmRsZXNzIG9mIHRo
ZSBkb2N1bWVudCB6b29tLgotICAgICAgICBkaW1lbnNpb24gKj0gV0kuZ2V0Wm9vbUZhY3Rvcigp
OwotCi0gICAgICAgIGlmIChXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1
cmF0aW9uLkJvdHRvbSkKLSAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRBdHRh
Y2hlZFdpbmRvd0hlaWdodChkaW1lbnNpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0QXR0YWNoZWRXaW5kb3dXaWR0aChkaW1lbnNpb24pOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGRvY2tlZFJlc2l6ZXJEcmFnRW5kKGV2ZW50KQotICAgIHsK
LSAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBXSS5lbGVtZW50RHJhZ0VuZChldmVudCk7Ci0gICAgfQotCi0gICAgV0kuZWxlbWVu
dERyYWdTdGFydChyZXNpemVyRWxlbWVudCwgZG9ja2VkUmVzaXplckRyYWcsIGRvY2tlZFJlc2l6
ZXJEcmFnRW5kLCBldmVudCwgV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmln
dXJhdGlvbi5Cb3R0b20gPyAicm93LXJlc2l6ZSIgOiAiY29sLXJlc2l6ZSIpOworV0kuX2hhbmRs
ZVVuZG9ja2VkVGl0bGVBcmVhTW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgV0ku
bW92ZVVuZG9ja2VkV2luZG93TW91c2VEb3duKGV2ZW50KTsKIH07CiAKIFdJLl9kb21TdG9yYWdl
V2FzSW5zcGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCkBAIC0yMjU2LDkgKzIzMzMsOSBAQCBXSS5f
dXBkYXRlSW5zcGVjdE1vZGVUYWJCYXJCdXR0b24gPSBmdW5jdGlvbigpCiBXSS5fdXBkYXRlVGFi
QmFyRGl2aWRlcnMgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IGNsb3NlSGlkZGVuID0gV0kuX2Ns
b3NlVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgZG9ja1RvU2lkZUhpZGRlbiA9IFdJLl9k
b2NrVG9TaWRlVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgZG9ja0JvdHRvbUhpZGRlbiA9
IFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgdW5kb2NrSGlkZGVu
ID0gV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5oaWRkZW47CisgICAgbGV0IGRvY2tUb1NpZGVIaWRk
ZW4gPSBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbj8uaGlkZGVuOworICAgIGxldCBkb2NrQm90
dG9tSGlkZGVuID0gV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24/LmhpZGRlbjsKKyAgICBsZXQg
dW5kb2NrSGlkZGVuID0gV0kuX3VuZG9ja1RhYkJhckJ1dHRvbj8uaGlkZGVuOwogCiAgICAgbGV0
IGluc3BlY3RNb2RlSGlkZGVuID0gV0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0dG9uLmhpZGRlbjsK
ICAgICBsZXQgZGV2aWNlU2V0dGluZ3NIaWRkZW4gPSBXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJC
dXR0b24gJiYgV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uLmhpZGRlbjsKQEAgLTI2NjMs
MTAgKzI3NDAsMTAgQEAgV0kuc2V0TGF5b3V0RGlyZWN0aW9uID0gZnVuY3Rpb24odmFsdWUpCiAK
ICAgICBXSS5zZXR0aW5ncy5kZWJ1Z0xheW91dERpcmVjdGlvbi52YWx1ZSA9IHZhbHVlOwogCi0g
ICAgaWYgKFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlv
bi5SVEwgJiYgV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5S
aWdodCkKKyAgICBpZiAoV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0
RGlyZWN0aW9uLlJUTCAmJiBXSS5kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3Vy
YXRpb24uUmlnaHQpCiAgICAgICAgIFdJLl9kb2NrTGVmdCgpOwogCi0gICAgaWYgKFdJLnJlc29s
dmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5MVFIgJiYgV0kuX2Rv
Y2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KQorICAgIGlmIChX
SS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uTFRSICYm
IFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KQogICAg
ICAgICBXSS5fZG9ja1JpZ2h0KCk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QucmVvcGVu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UYWJCYXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQmFyLmNzcwppbmRleCBlNzEyMGEzNzM1YTNmNTdhZDgwZGY2ZGU4ZDczM2NkYWM5NWJmNzdi
Li41YjBmODJiMWIzZTg3NjkwNWY0YTQ2Y2I2MGNhYmQ5ZGMxNjQ0MzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuY3NzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3MKQEAg
LTEyNSw2ICsxMjUsMTAgQEAgYm9keS5kb2NrZWQgLnRhYi1iYXIgPiAudGFicyA+IC5mbGV4aWJs
ZS1zcGFjZSB7CiAgICAgZmxleC1ncm93OiAxOwogfQogCitib2R5LmRvY2tlZC5ib3R0b20gLnRh
Yi1iYXIgPiAudGFicyA+IC5mbGV4aWJsZS1zcGFjZSB7CisgICAgY3Vyc29yOiByb3ctcmVzaXpl
OworfQorCiAudGFiLWJhciA+IC50YWJzID4gLml0ZW0gewogICAgIGRpc3BsYXk6IGZsZXg7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJh
ci5qcwppbmRleCA4MTExZWUwOGFlNGI1YWY0ZWNlZDdhMGViOWNmZDE5YmMzOWVmNjY2Li44YTEz
MGMzZTc0ZjhlYzE2YmRhNjllMjRlN2UyNzdmYTc3MDk4MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCkBAIC0zMCw2ICsz
MCw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAg
c3VwZXIoZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRh
Yi1iYXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0aGlzLmVs
ZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJib3JkZXIgdG9wIik7CiAKQEAgLTQwLDEwICs0MSwx
MCBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc05hbWUg
PSAidGFicyI7CiAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInJvbGUi
LCAidGFibGlzdCIpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5k
bGVDbGljay5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9oYW5kbGVNb3VzZUxlYXZlLmJpbmQodGhpcykp
OwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1l
bnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5f
dGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZVRh
YkNvbnRhaW5lck1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fdGFiQ29udGFp
bmVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlVGFiQ29udGFpbmVyQ2xp
Y2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5faGFuZGxlVGFiQ29udGFpbmVyTW91c2VMZWF2ZS5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNv
bnRleHRtZW51IiwgdGhpcy5faGFuZGxlVGFiQ29udGFpbmVyQ29udGV4dE1lbnUuYmluZCh0aGlz
KSk7CiAKICAgICAgICAgdGhpcy5fZmxleGlibGVTcGFjZUJlZm9yZUVsZW1lbnQgPSB0aGlzLl90
YWJDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwog
ICAgICAgICB0aGlzLl9mbGV4aWJsZVNwYWNlQmVmb3JlRWxlbWVudC5jbGFzc05hbWUgPSAiZmxl
eGlibGUtc3BhY2UiOwpAQCAtNzEsNyArNzIsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIg
ZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBzdGF0aWMgZ2V0IGhvcml6b250YWxQYWRkaW5nKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBXSS5kb2NrZWQgPyA4IDogMDsgLy8gS2VlcCBpbiBzeW5jIHdp
dGggYGJvZHkuZG9ja2VkIC50YWItYmFyIC50YWJzYAorICAgICAgICByZXR1cm4gKFdJLmRvY2tD
b25maWd1cmF0aW9uICE9PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZCkgPyA4IDogMDsg
Ly8gS2VlcCBpbiBzeW5jIHdpdGggYGJvZHkuZG9ja2VkIC50YWItYmFyIC50YWJzYAogICAgIH0K
IAogICAgIC8vIFB1YmxpYwpAQCAtNjM5LDYgKzY0MCwyNSBAQCBXSS5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgfQogCiAgICAgX2hhbmRsZU1vdXNlRG93bihldmVu
dCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtl
eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0
aGlzLmVsZW1lbnQgJiYgZXZlbnQudGFyZ2V0ICE9PSB0aGlzLl9mbGV4aWJsZVNwYWNlQmVmb3Jl
RWxlbWVudCAmJiBldmVudC50YXJnZXQgIT09IHRoaXMuX2ZsZXhpYmxlU3BhY2VBZnRlckVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChXSS5kb2NrQ29uZmln
dXJhdGlvbikgeworICAgICAgICBjYXNlIFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbToKKyAg
ICAgICAgICAgIFdJLnJlc2l6ZURvY2tlZEZyYW1lTW91c2VEb3duKGV2ZW50KTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRG9ja0NvbmZpZ3VyYXRpb24uVW5kb2NrZWQ6
CisgICAgICAgICAgICBXSS5tb3ZlVW5kb2NrZWRXaW5kb3dNb3VzZURvd24oZXZlbnQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGFuZGxlVGFiQ29udGFp
bmVyTW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gT25seSBjb25zaWRlciBsZWZ0
IG1vdXNlIGNsaWNrcyBmb3IgdGFiIG1vdmVtZW50LgogICAgICAgICBpZiAoZXZlbnQuYnV0dG9u
ICE9PSAwIHx8IGV2ZW50LmN0cmxLZXkpCkBAIC03MTAsNyArNzMwLDcgQEAgV0kuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKICAgICB9CiAKLSAgICBfaGFuZGxlQ2xpY2soZXZlbnQpCisgICAgX2hhbmRsZVRhYkNv
bnRhaW5lckNsaWNrKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZl
bnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5TdHlsZUNsYXNzTmFtZSk7CiAg
ICAgICAgIGlmICghaXRlbUVsZW1lbnQpCkBAIC04ODAsNyArOTAwLDcgQEAgV0kuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbXNSZW9yZGVyZWQpOwogICAgIH0K
IAotICAgIF9oYW5kbGVNb3VzZUxlYXZlKGV2ZW50KQorICAgIF9oYW5kbGVUYWJDb250YWluZXJN
b3VzZUxlYXZlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX21vdXNlSXNEb3duIHx8
ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5fdGFiQ29u
dGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuX3RhYkNv
bnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtODk1LDcgKzkxNSw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgdGhpcy5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UoKTsK
ICAgICB9CiAKLSAgICBfaGFuZGxlQ29udGV4dE1lbnUoZXZlbnQpCisgICAgX2hhbmRsZVRhYkNv
bnRhaW5lckNvbnRleHRNZW51KGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGNvbnRleHRNZW51
ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMK
aW5kZXggZmU4MjRkYjkyMDc3NDQyZjBiMmU2ZTRlZjQ2MDExYTI2NTJhZTI3MS4uZGNjYjI2Zjgy
MjIzNmQxNmM5MDU2M2Y3MWI1M2ZhNTMzOTE3ZTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzCkBAIC01Myw3
ICs1Myw3IEBAIFdJLlRhYkJhckl0ZW0gPSBjbGFzcyBUYWJCYXJJdGVtCiAKICAgICBzdGF0aWMg
Z2V0IGhvcml6b250YWxNYXJnaW4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLmRvY2tlZCA/
IDQgOiAwOyAvLyBLZWVwIGluIHN5bmMgd2l0aCBgYm9keS5kb2NrZWQgLnRhYi1iYXIgPiAudGFi
cyA+IC5pdGVtYAorICAgICAgICByZXR1cm4gKFdJLmRvY2tDb25maWd1cmF0aW9uICE9PSBXSS5E
b2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZCkgPyA0IDogMDsgLy8gS2VlcCBpbiBzeW5jIHdpdGgg
YGJvZHkuZG9ja2VkIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbWAKICAgICB9CiAKICAgICAvLyBQ
dWJsaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDRhY2U0MTNlNDA3OWQzNTdiMmRm
MmI3ZTMyNmIzOWM3MzZmYmYzNmQuLjQwZjAzYmY2NThiZGY0OTVhNmRkZmM4YjY2NzU1ZWYwMmQ0
MDdiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMTQzLDYgKzE0MywxMSBAQCB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZXRGb3JjZWRBcHBlYXJhbmNlKEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpBcHBlYQogICAgIHBsYXRmb3JtU2V0Rm9yY2VkQXBwZWFyYW5jZShh
cHBlYXJhbmNlKTsKIH0KIAordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6c3RhcnRXaW5k
b3dEcmFnKCkKK3sKKyAgICBwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7
CiAgICAgcGxhdGZvcm1PcGVuSW5OZXdUYWIodXJsKTsKQEAgLTE5OSw2ICsyMDQsNyBAQCB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCwgYgogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7
IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0Rm9yY2VkQXBwZWFy
YW5jZShJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6QXBwZWFyYW5jZSkgeyB9Cit2b2lkIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpIHsgfQogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1PcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5n
JikgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNob3dDZXJ0aWZp
Y2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmgKaW5kZXggNzYzZTY5MTM2NDg2MWY0ZjEzZTVkYmYxYTZmYjg2NTc4YjZhNmM4
NS4uMjEzNzU3NTcwOTU1MmRkMzI1OWI1OTZhOWMyYjg2Y2E5MDczMjA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAgICAgdm9p
ZCBzZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCBzZXRG
b3JjZWRBcHBlYXJhbmNlKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpBcHBlYXJh
bmNlKTsKKyAgICB2b2lkIHN0YXJ0V2luZG93RHJhZygpOwogICAgIHZvaWQgb3BlbkluTmV3VGFi
KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8mKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CkBAIC0xMzYsNiArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKTsKICAgICB2b2lkIHBsYXRmb3JtU2V0Rm9yY2VkQXBwZWFyYW5jZShXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6QXBwZWFyYW5jZSk7CisgICAgdm9pZCBwbGF0Zm9y
bVN0YXJ0V2luZG93RHJhZygpOwogICAgIHZvaWQgcGxhdGZvcm1PcGVuSW5OZXdUYWIoY29uc3Qg
U3RyaW5nJiB1cmwpOwogICAgIHZvaWQgcGxhdGZvcm1TaG93Q2VydGlmaWNhdGUoY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAzMzIwM2VhODQ0MGFiNzAzMjJjNmZiMGYyYWU0YTVlNDQ5YzZlZTA3
Li42NGYzODEyMDJjMjYwYjA0ZjJiMDNhMTg0Nzc3ZjNkNTRkZTJhMjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMyw2ICszMyw4IEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZVdlYkluc3BlY3RvclByb3h5IHsKIAogICAgIFNldFNoZWV0UmVjdChXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdCkKIAorICAgIFN0YXJ0V2luZG93RHJhZygpCisKICAgICBPcGVuSW5O
ZXdUYWIoU3RyaW5nIHVybCkKICAgICBTaG93Q2VydGlmaWNhdGUoV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvIGNlcnRpZmljYXRlSW5mbykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZDYxMDgwMTIxZjg5
NWI0ZTMxNTJjNWQ5NWJmMTc1NDc2ODlkOGU0YS4uZmE4MTY2NTVlMjBmNDlhZjhhZDg0NDgzYWFh
YmQ0YTgwNGZjMTQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zNTIsNiArMzUyLDExIEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgcGxhdGZvcm1TZXRTaGVldFJlY3QocmVjdCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnN0YXJ0V2luZG93RHJhZygpCit7CisgICAgcGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKTsK
K30KKwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7CiAg
ICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCkBAIC03ODYsNiArNzkxLDExIEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1T
dGFydFdpbmRvd0RyYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFN0cmluZyBX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmgKaW5kZXggMmQxMTNjYmMzZTliYjA1NjFhYjRlMWNiYjc4OTRmYzYwMWQ4
NGY3MC4uZjQyYmU0Zjg1ZDg5MGUyOTliMjE4ODAwYmU1YzE5ZWUxNDFkODJkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5
LmgKQEAgLTE1MSw2ICsxNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNoZWV0UmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7
CisKICAgICBib29sIGlzUHJvZmlsaW5nUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm9maWxp
bmdQYWdlOyB9CiAgICAgdm9pZCB0b2dnbGVQYWdlUHJvZmlsaW5nKCk7CiAKQEAgLTIxMyw2ICsy
MTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7CisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpOwogICAgIHZvaWQg
cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKICAgICB2b2lkIHBsYXRm
b3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiMzM2YjFjNjFhODBhZTU2ZDk4
MWM3NGNiZmNiNWU0ZGYxNGEzN2M4Li44NGE2MzBhZmIwMTE2ODFlNmRjZGJkMzI2YTFjMWZiN2Rh
YmM5MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NSw0ICs1NSw2IEBA
IG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBTZXRBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQogCiAgICAgU2V0U2hlZXRSZWN0KFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0KQorCisgICAgU3RhcnRXaW5kb3dEcmFnKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggMzQ0Mjk1MTMzMjczOGNlMGViMzcwYTc1NDFhOGJmNGNi
ZjViYzViMy4uNzhmNjFmMGYwYjY5ZjExNTk3OTIyZGZiZmNkZDNhNjk5OTY2MzI2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTE2MSw2ICsxNjEsMTAgQEAg
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRGb3JjZWRBcHBlYXJhbmNl
KEluc3BlY3RvckZyb250ZW5kQ2xpZW4KIHsKIH0KIAordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworfQorCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3Rr
L1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCA4MWUyNmFiNWRkYjkwY2RiZmY2NTJmM2Iw
MWEzYjIwNjE0NWFjZWZhLi44YWQ5MmVkODRjMGE4MzhhNjFlNDA2MjZjNGMyMDlkMmM2OTNmMWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNDY2LDYgKzQ2NiwxMSBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09iamVjdCog
c291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7
CiAgICAgR0ZpbGUqIGZpbGUgPSBHX0ZJTEUoc291cmNlT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IGUxZDI0OGFmYTM4MWZjNzc1NzZjZWIzYTcwY2Qw
YWE0MzFkZDMyYjQuLjUxNGZkNGEwOTJkN2NmZWI3YmEzNjg4YjVmZTQ5NGI1NjBiMGQ0OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMjQ1LDYgKzI0NSwxMSBA
QCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEZvcmNlZEFwcGVhcmFu
Y2UoSW5zcGVjdG9yRnJvbnRlbmRDbGllbgogICAgIH0KIH0KIAordm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworICAgIHdlYlZpZXcoKS0+
X3BhZ2UtPnN0YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBbW05T
V29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1
cmxdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IGY2ZDU1YjJlODYyNjA2MjI2MTY5
YzNiOTZkY2QyMGY2MDg1NjYyNzkuLjZiMzFkZTUxNWQ1OTdlNzYwYTQzMWRiMzM1YmE5MTU5NTRk
ZTk1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNzQyLDYgKzc0MiwxMSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgbV9zaGVldFJlY3QgPSByZWN0OwogfQogCit2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpCit7CisgICAgW21faW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIgd2ViVmlld10tPl9wYWdlLT5zdGFydFdpbmRvd0RyYWcoKTsKK30KKwogU3Ry
aW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkKIHsKICAgICBOU0J1bmRs
ZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldl
Ykluc3BlY3RvclVJIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCmlu
ZGV4IGJkYWNiMzVhNTdjM2IxNTJjYzM5YTRmNmVlYzE0NzI4ZDM2NmVlN2QuLjAxZmY4NjlmNjI5
NjBhZDNiZGMxMDY5ODFjNjIyNTI2YzY2MzBiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlXaW4uY3BwCkBAIC0xMzYsNiArMTM2LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2ws
IGIKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgeyB9CiB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEZvcmNlZEFwcGVhcmFuY2UoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkFwcGVhcmFuY2UpIHsgfQordm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKSB7IH0KIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TaG93Q2VydGlm
aWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJikgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAKaW5kZXggZWJkN2NmMzZiZmRiOWQ0YTQ2NjIyMGM5MWU1N2Y5YzgxYmZi
ZTRlNS4uYjc0ODk0MWNhYjUyMzBiYTQyOTIwYzA2NTU5OTc4N2Y0MDEwZWY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJ
bnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTQ1Niw0ICs0NTYsOSBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
K3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDE0
NmExNjJkMDIwYjM3MmU3MzQ2MTdiZGU2NWUzM2VkMDE0NWQ2NDcuLjVmY2M5ZjgyNDRkNWM3ZWUy
NDg4ZWFkNzdhN2Q3NzgzNjU5YTFlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0xMTUs
MTEgKzExNSwzOSBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzZXRGb3JjZWRBcHBlYXJh
bmNlKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50OgogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjpTZXRGb3JjZWRBcHBlYXJhbmNlKGFwcGVhcmFuY2UpLCBtX3Bh
Z2UuaWRlbnRpZmllcigpKTsKIH0KIAordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3RhcnRX
aW5kb3dEcmFnKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3Rh
cnRXaW5kb3dEcmFnKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9h
dFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLmNvcmVQYWdlKCktPmNocm9tZSgpLndpbmRvd1JlY3Qo
KTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+Y2hy
b21lKCkuc2V0V2luZG93UmVjdChmcmFtZVJlY3QpOworfQorCiBXZWJDb3JlOjpVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIFJlbW90ZVdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLmNvcmVQYWdlKCktPnVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKTsKIH0KIAorYm9vbCBSZW1vdGVXZWJJbnNwZWN0
b3JVSTo6c3VwcG9ydHNEb2NrU2lkZShEb2NrU2lkZSBkb2NrU2lkZSkKK3sKKyAgICBzd2l0Y2gg
KGRvY2tTaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6CisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgY2FzZSBEb2NrU2lkZTo6
TGVmdDoKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiB7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UuaWRl
bnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCBjY2E5ODdiZDUyM2UyYWY5NDYxOTJl
MjA1NmI2MmEyNTczNjQ4NGUyLi42NjdhNjU3MDQyYjk4NjllNmE2MWNhMjg0OGU3Yzc2ZTE5M2M3
ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGZyb250ZW5kTG9h
ZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGFuZ2VTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgaXNSZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgU3Ry
aW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdCBvdmVycmlkZTsKQEAgLTc2LDYgKzc4LDgg
QEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBib29s
IHN1cHBvcnRzRG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOworCiAgICAgdm9pZCBicmluZ1Rv
RnJvbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlV2luZG93KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZW9wZW4oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggYzFmMzM2MDRmODBhOTQwMTdk
MDQ2MjQzYWVjNWNhNDcwOGExOTFiNC4uYzVjNWI3NjkzMjA3NjYzMTZkMDc5M2I5ZDc1MGM1N2M5
ZDI1N2YxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTEzNyw2ICsxMzcsMTggQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogICAgIGJyaW5nVG9Gcm9udCgpOwogfQogCit2b2lkIFdl
Ykluc3BlY3RvclVJOjpzdGFydFdpbmRvd0RyYWcoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5
KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+Y2hyb21l
KCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1fcGFnZS5j
b3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKIHZvaWQg
V2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKQEAg
LTE4MywxMCArMTk1LDI0IEBAIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
V2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3RpCiAgICAgcmV0dXJuIG1f
cGFnZS5jb3JlUGFnZSgpLT51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiB9CiAKLXZv
aWQgV2ViSW5zcGVjdG9yVUk6OnJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQorYm9v
bCBXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNEb2NrU2lkZShEb2NrU2lkZSBkb2NrU2lkZSkKK3sK
KyAgICBzd2l0Y2ggKGRvY2tTaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6Cisg
ICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgY2FzZSBEb2NrU2lkZTo6TGVmdDoKKyAgICBj
YXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIGRvY2tTaWRlKQogewogICAg
IGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBzd2l0Y2gg
KHNpZGUpIHsKKyAgICBzd2l0Y2ggKGRvY2tTaWRlKSB7CiAgICAgY2FzZSBEb2NrU2lkZTo6VW5k
b2NrZWQ6CiAgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMDIsMzEgKzIyOCwzMSBAQCB2b2lkIFdl
Ykluc3BlY3RvclVJOjpyZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKICAgICB9CiB9
CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit2b2lk
IFdlYkluc3BlY3RvclVJOjpzZXREb2NrU2lkZShEb2NrU2lkZSBkb2NrU2lkZSkKIHsKLSAgICBB
U0NJSUxpdGVyYWwgc2lkZVN0cmluZyB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgQVND
SUlMaXRlcmFsIGRvY2tTaWRlU3RyaW5nIHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKIAotICAg
IHN3aXRjaCAoc2lkZSkgeworICAgIHN3aXRjaCAoZG9ja1NpZGUpIHsKICAgICBjYXNlIERvY2tT
aWRlOjpVbmRvY2tlZDoKLSAgICAgICAgc2lkZVN0cmluZyA9ICJ1bmRvY2tlZCJfczsKKyAgICAg
ICAgZG9ja1NpZGVTdHJpbmcgPSAidW5kb2NrZWQiX3M7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBEb2NrU2lkZTo6UmlnaHQ6Ci0gICAgICAgIHNpZGVTdHJpbmcgPSAicmlnaHQiX3M7Cisg
ICAgICAgIGRvY2tTaWRlU3RyaW5nID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgRG9ja1NpZGU6OkxlZnQ6Ci0gICAgICAgIHNpZGVTdHJpbmcgPSAibGVmdCJfczsKKyAg
ICAgICAgZG9ja1NpZGVTdHJpbmcgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIERvY2tTaWRlOjpCb3R0b206Ci0gICAgICAgIHNpZGVTdHJpbmcgPSAiYm90dG9tIl9zOwor
ICAgICAgICBkb2NrU2lkZVN0cmluZyA9ICJib3R0b20iX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAotICAgIG1fZG9ja1NpZGUgPSBzaWRlOworICAgIG1fZG9ja1NpZGUgPSBkb2NrU2lkZTsK
IAotICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLmRpc3BhdGNoQ29tbWFuZCgic2V0RG9ja1Np
ZGUiX3MsIFN0cmluZyhzaWRlU3RyaW5nKSk7CisgICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXIu
ZGlzcGF0Y2hDb21tYW5kKCJzZXREb2NrU2lkZSJfcywgU3RyaW5nKGRvY2tTaWRlU3RyaW5nKSk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldERvY2tpbmdVbmF2YWlsYWJsZShib29sIHVu
YXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5oCmluZGV4IDJmZDg1MWI0MDY4NmQxODkxZTA5ZjEwYjhhNThlM2U2ZmU4
ZTYzOTYuLmM2Yjg3MTU4YTEzOWYyYTVkMmQ4ZjcxM2Q4OTBhNmJjNjk0Njc4OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgK
QEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKIAorICAgIHZv
aWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxv
YXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CisKICAgICBib29sIGlzUmVtb3RlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNVUkwoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBTdHJpbmcoKTsgfQpAQCAtMTExLDYgKzExNCw3IEBAIHB1YmxpYzoKIAogICAg
IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgYm9vbCBzdXBwb3J0c0RvY2tTaWRl
KERvY2tTaWRlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lk
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25l
ZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCAwN2ZlZjhhY2Nj
NzgwM2IzMjY3ZDM2NjdkNWFkYjI3MGYxNGE5ZGM4Li5mNTM3ZDk1ZDE2YWM0ODAyZDFiNDAxZDk0
OGYxNmU5OTg4ZWIxOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCkBAIC0xMjks
MTEgKzEyOSwxMyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRv
dygpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6cmVvcGVuKCkgeyB9CiB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpyZXNldFN0YXRlKCkgeyB9CiB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRGb3JjZWRBcHBlYXJhbmNlKEluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpBcHBlYXJhbmNlKSB7IH0KK2Jvb2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OnN1cHBvcnRzRG9ja1NpZGUoRG9ja1NpZGUpIHsgcmV0dXJuIGZhbHNlOyB9CiB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUpIHsgfQog
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkgeyB9CiB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNp
Z25lZCkgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdp
bmRvd1dpZHRoKHVuc2lnbmVkKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7IH0KK3ZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZygpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZp
Y2F0ZUluZm8mKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdp
bmRvd1RpdGxlKCkgY29uc3QgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGVjOGUyMjA0
NjMxNjQ2NzU1ODBiOGMyMTRjOTdmZDY3YWJmMjBlNjAuLjMwZWEyOTgwNzlmZTgyYzQzYTFjODBm
NDkwNDIwZTAwZjY3MGYwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMTYsNiArMTE2
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwogCisg
ICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSBvdmVycmlkZTsKKwogICAgIFN0cmluZyBsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW5zcGVjdG9yOjpEZWJ1Z2dhYmxl
VHlwZSBkZWJ1Z2dhYmxlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEluc3BlY3Rvcjo6RGVi
dWdnYWJsZVR5cGU6OlBhZ2U7IH07CiAgICAgU3RyaW5nIHRhcmdldFBsYXRmb3JtTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJtYWNPUyJfczsgfTsKQEAgLTEzMSw2ICsxMzMsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OkFwcGVhcmFuY2UpIG92ZXJyaWRlOwogCisgICAgYm9vbCBzdXBwb3J0c0RvY2tTaWRlKERv
Y2tTaWRlKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkZXRhY2hXaW5kb3coKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCmluZGV4IDVlNjI2ZjkxNTdmNTI1NjMwMjhkMDVkZDBmMjkyOGNjOTY5ODYzNzkuLjY2
ZjY2NzI3NzNmNjg2YzhmYzU5ZmIzYzljOTEzNTJjOWM1NWE3NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KQEAgLTIxNiw2ICsyMTYsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6ZnJvbnRlbmRMb2FkZWQoKQogICAgIHNldEF0dGFjaGVkV2luZG93KGF0dGFjaGVkID8g
RG9ja1NpZGU6OkJvdHRvbSA6IERvY2tTaWRlOjpVbmRvY2tlZCk7CiB9CiAKK3ZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZygpCit7CisgICAgW1ttX2Zyb250
ZW5kV2luZG93Q29udHJvbGxlciB3aW5kb3ddIHBlcmZvcm1XaW5kb3dEcmFnV2l0aEV2ZW50OltO
U0FwcCBjdXJyZW50RXZlbnRdXTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QKIHsKICAgICBOU0J1bmRsZSAqYnVuZGxl
ID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3Rv
clVJIl07CkBAIC0yODQsNiArMjg5LDIyIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkFwCiAgICAg
fQogfQogCitib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzdXBwb3J0c0RvY2tTaWRl
KERvY2tTaWRlIGRvY2tTaWRlKQoreworICAgIHN3aXRjaCAoZG9ja1NpZGUpIHsKKyAgICBjYXNl
IERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgY2FzZSBEb2Nr
U2lkZTo6TGVmdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIGlmIChbbV9mcm9u
dGVuZFdpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgYXR0YWNoZWRdKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggYjY0NzBhZmU4MThkMGQ4NDBlZTcxODkxNzI3Y2IyODlkNWZkOTgzMC4uNmE0
NTAwMWJlMTIxMDRjMDEyNTRhMGFjYmJlZmNjNGQ5MGU1YjBmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCkBAIC0zMjAsNiArMzIwLDIyIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmRldGFjaFdpbmRvdygpCiAgICAgc2hvd1dpbmRvd1dpdGhvdXROb3RpZmljYXRpb25z
KCk7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN1cHBvcnRzRG9ja1Np
ZGUoRG9ja1NpZGUgZG9ja1NpZGUpCit7CisgICAgc3dpdGNoIChkb2NrU2lkZSkgeworICAgIGNh
c2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKKyAgICBjYXNlIERv
Y2tTaWRlOjpMZWZ0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQp
CiB7CiAgICAgaWYgKCFtX2F0dGFjaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5MzFh
Y2VmZDg4YTU0NzQ2ZTRiNzMxOWUzM2NhMWQ5MzZhZmEyNzY1Li4yYTg4NDllNjAyMWE5MDkyYjcw
MWYwODI5ODBhMmM4Mjk5MTcwZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTE4LDYg
KzExOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9yY2VkQXBwZWFyYW5jZShJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6QXBwZWFyYW5jZSkgb3ZlcnJpZGU7CiAKKyAgICBib29sIHN1cHBv
cnRzRG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dX
aWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392372</attachid>
            <date>2020-03-03 21:45:05 -0800</date>
            <delta_ts>2020-03-03 22:31:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208555-20200303214504.patch</filename>
            <type>text/plain</type>
            <size>64016</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MTE4ZGZhZDBmMzg3YWNmYzMwYmQzYzJhN2Y0OTBkOGRiMzNiOWEyLi43
M2E4OGQ2NWZiMTNhNjFjZGY2M2Y2NjY5NTQyNTUwODM3ZjM5YWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5kb3cKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU1NQorCisgICAgICAgIFJldmll
d2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBQYXJ0aWFsbHkgcmV2ZXJ0IHIyNTc3
NTksIGFzIHRoZSBkZXNpZ24gY2hhbmdlZCBlbm91Z2ggc3VjaCB0aGF0IHRoaXMgY29kZSBpcyBz
dGlsbCB1c2VmdWwuCisKKyAgICAgICAgQWxsb3cgdGhlIFdlYiBJbnNwZWN0b3IgZnJvbnRlbmQg
dG8gYXNrIHRoZSBjb250YWluaW5nIGFwcCAodmlhIGBJbnNwZWN0b3JGcm9udGVuZENsaWVudGAp
CisgICAgICAgIHdoZXRoZXIgaXQgc3VwcG9ydHMgdGhlIGdpdmVuIGRvY2tpbmcgY29uZmlndXJh
dGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRv
Y2tTaWRlRnJvbVN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpzdXBwb3J0c0RvY2tTaWRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlcXVlc3RTZXREb2NrU2lkZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojptb3ZlV2luZG93QnkgY29uc3Qp
OiBBZGRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
OgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjptb3ZlV2luZG93
QnkpOiBBZGRlZC4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0dWJGcm9udGVuZDo6c3VwcG9ydHNEb2NrU2lkZSk6IEFkZGVk
LgorCiAyMDIwLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzZXQgYm90aCB0aGUgcGFnZSdzIGFuZCB0aGUgd2luZG93J3Mg
YXBwZWFyYW5jZSB3aGVuIG1vZGlmeWluZyB0aGUgZnJvbnRlbmQgZm9yY2VkIGFwcGVhcmFuY2Ug
aW4gdGhlIGNhc2UgdGhhdCB0aGUgZnJvbnRlbmQgaXMgZG9ja2VkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZwppbmRleCA1NjdiNzExMmFmZjNmODdkMDMyZDI3NGMwNjA0OTc4OTE4NGMyZDBhLi45NDYy
NzYxMDIwYjRjNjc3OWI1OTYxZjk3NTFlMDFiYzEyOTMxYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMC0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JG
cm9udGVuZEhvc3RgIHN1cHBvcnQgZm9yIG1vdmluZyB0aGUgaW5zcGVjdGVkIHdpbmRvdworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFBhcnRpYWxseSBy
ZXZlcnQgcjI1Nzc1OSwgYXMgdGhlIGRlc2lnbiBjaGFuZ2VkIGVub3VnaCBzdWNoIHRoYXQgdGhp
cyBjb2RlIGlzIHN0aWxsIHVzZWZ1bC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzOgorICAgICAgICAoV0kubG9hZGVkKToKKyAgICAgICAgKFdJLnVwZGF0ZURvY2tlZFN0
YXRlKToKKyAgICAgICAgKFdJLnJlc2l6ZURvY2tlZEZyYW1lTW91c2VEb3duKTogQWRkZWQuCisg
ICAgICAgIChXSS5tb3ZlVW5kb2NrZWRXaW5kb3dNb3VzZURvd24pOiBBZGRlZC4KKyAgICAgICAg
KFdJLmRvY2tlZENvbmZpZ3VyYXRpb25TdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIpOgorICAg
ICAgICAoV0kuX3dpbmRvd0ZvY3VzZWQpOgorICAgICAgICAoV0kuX3dpbmRvd0JsdXJyZWQpOgor
ICAgICAgICAoV0kuX3VwZGF0ZURvY2tOYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV0kuX2hh
bmRsZURvY2tlZFJlc2l6ZXJNb3VzZURvd24pOgorICAgICAgICAoV0kuX2hhbmRsZVVuZG9ja2Vk
VGl0bGVBcmVhTW91c2VEb3duKToKKyAgICAgICAgKFdJLl91cGRhdGVUYWJCYXJEaXZpZGVycyk6
CisgICAgICAgIChXSS5zZXRMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICBEb24ndCBjcmVhdGUg
dGFiIGJhciBuYXZpZ2F0aW9uIGl0ZW1zIGZvciB0aGUgdmFyaW91cyBkb2NraW5nIGNvbmZpZ3Vy
YXRpb25zIGlmIHRoZSBwbGF0Zm9ybQorICAgICAgICBkb2Vzbid0IHN1cHBvcnQgdGhhdCBwYXJ0
aWN1bGFyIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5qczoKKyAgICAgICAgKFdJLlRhYkJhcik6CisgICAgICAgIChXSS5UYWJCYXIuZ2V0IGhv
cml6b250YWxQYWRkaW5nKToKKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1v
dXNlRG93bik6CisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVUYWJDb250YWlu
ZXJNb3VzZURvd24pOiBBZGRlZC4KKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRs
ZVRhYkNvbnRhaW5lckNsaWNrKTogQWRkZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBl
Ll9oYW5kbGVUYWJDb250YWluZXJNb3VzZUxlYXZlKTogQWRkZWQuCisgICAgICAgIChXSS5UYWJC
YXIucHJvdG90eXBlLl9oYW5kbGVUYWJDb250YWluZXJDb250ZXh0TWVudSk6IEFkZGVkLgorICAg
ICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ2xpY2spOiBEZWxldGVkLgorICAgICAg
ICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlTW91c2VMZWF2ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudSk6IERlbGV0ZWQuCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuY3NzOgorICAgICAgICAoYm9keS5k
b2NrZWQuYm90dG9tIC50YWItYmFyID4gLnRhYnMgPiAuZmxleGlibGUtc3BhY2UpOgorICAgICAg
ICBEcmFnZ2luZyBvbiBlbXB0eSBzcGFjZSBpbiB0aGUgdGFiIGJhciBzaG91bGQgYWRqdXN0IFdl
YiBJbnNwZWN0b3IncyBib3R0b20gZG9ja2VkIGhlaWdodC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvVGFiQmFySXRlbS5qczoKKyAgICAgICAgKFdJLlRhYkJhckl0ZW0uZ2V0IGhv
cml6b250YWxNYXJnaW4pOgorCiAyMDIwLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aGUgYmFja2dyb3VuZCBvZiB0aGUg
bmF2aWdhdGlvbiBpdGVtcyBpbiB0aGUgdGFiIGJhciBkb2Vzbid0IG1hdGNoIHdoZW4gdW5mb2N1
c2luZyB0aGUgd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZWNkNmM0NDVlODdkYmM0MDEzZWE4M2QxZmIz
NTVhODQ5NDY4N2IuLjYyZWE4ZDA2ZTEwMDJhNzYwY2YwMzAxODM0MmQ4YmE5Y2I5MWIyNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5kb3cKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU1NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBQYXJ0aWFsbHkg
cmV2ZXJ0IHIyNTc3NTksIGFzIHRoZSBkZXNpZ24gY2hhbmdlZCBlbm91Z2ggc3VjaCB0aGF0IHRo
aXMgY29kZSBpcyBzdGlsbCB1c2VmdWwuCisKKyAgICAgICAgQWxsb3cgdGhlIFdlYiBJbnNwZWN0
b3IgZnJvbnRlbmQgdG8gYXNrIHRoZSBjb250YWluaW5nIGFwcCAodmlhIGBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudGApCisgICAgICAgIHdoZXRoZXIgaXQgc3VwcG9ydHMgdGhlIGdpdmVuIGRvY2tp
bmcgY29uZmlndXJhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dEcmFn
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnkp
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnN1cHBvcnRzRG9ja1Np
ZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnJlcXVlc3RTZXRE
b2NrU2lkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpzZXREb2NrU2lkZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzdGFydFdpbmRvd0RyYWcpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5k
b3dEcmFnKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcp
OiBBZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclVJLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3RhcnRX
aW5kb3dEcmFnKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJ
Ojptb3ZlV2luZG93QnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVj
dG9yVUk6OnN1cHBvcnRzRG9ja1NpZGUpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnN0YXJ0V2luZG93RHJhZyk6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFy
dFdpbmRvd0RyYWcpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFy
dFdpbmRvd0RyYWcpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgorCiAyMDIw
LTAzLTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJhdGNo
IG9ic2VydmF0aW9ucyBhbmQgY29tcGxldGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggYTRmMWM1OTcxYmZmMWU5YzNlMDFiMDYzMzA2MzQw
Y2I4MjdkODcyOS4uMTU5OGVhNjUwNjhiNTRkZTNmOGNmNDhhOGRhNjkzODgzOWFmZTNlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAzLTAzICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiByZS1hZGQgYEluc3BlY3RvckZyb250ZW5kSG9zdGAgc3VwcG9ydCBmb3IgbW92aW5nIHRoZSBp
bnNwZWN0ZWQgd2luZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDg1NTUKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisK
KyAgICAgICAgUGFydGlhbGx5IHJldmVydCByMjU3NzU5LCBhcyB0aGUgZGVzaWduIGNoYW5nZWQg
ZW5vdWdoIHN1Y2ggdGhhdCB0aGlzIGNvZGUgaXMgc3RpbGwgdXNlZnVsLgorCisgICAgICAgIEFs
bG93IHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIHRvIGFzayB0aGUgY29udGFpbmluZyBhcHAg
KHZpYSBgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRgKQorICAgICAgICB3aGV0aGVyIGl0IHN1cHBv
cnRzIHRoZSBnaXZlbiBkb2NraW5nIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c3VwcG9ydHNEb2NrU2lkZSk6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgorCiAyMDIwLTAz
LTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBzZXR0aW5nIHRoZSBmcm9udGVuZCBhcHBlYXJhbmNlIGRvZXNuJ3QgdXBkYXRlIHRo
ZSB3aW5kb3cgd2hlbiB1bmRvY2tlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDRm
NjA5ODdiNmNlYzJjODZjY2I3ZDllZjI1ODZkZjI4MDkzZmUwNGEuLjE2N2ZmYzdiYjUwYjliYTNk
MjU1YmYwOTc2OGIzNGE5NmQ4Nzk0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAyMC0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JGcm9udGVuZEhv
c3RgIHN1cHBvcnQgZm9yIG1vdmluZyB0aGUgaW5zcGVjdGVkIHdpbmRvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFBhcnRpYWxseSByZXZlcnQgcjI1
Nzc1OSwgYXMgdGhlIGRlc2lnbiBjaGFuZ2VkIGVub3VnaCBzdWNoIHRoYXQgdGhpcyBjb2RlIGlz
IHN0aWxsIHVzZWZ1bC4KKworICAgICAgICBBbGxvdyB0aGUgV2ViIEluc3BlY3RvciBmcm9udGVu
ZCB0byBhc2sgdGhlIGNvbnRhaW5pbmcgYXBwICh2aWEgYEluc3BlY3RvckZyb250ZW5kQ2xpZW50
YCkKKyAgICAgICAgd2hldGhlciBpdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gZG9ja2luZyBjb25maWd1
cmF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZyk6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN1cHBvcnRzRG9ja1NpZGUpOiBB
ZGRlZC4KKwogMjAyMC0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2V0dGluZyB0aGUgZnJvbnRlbmQgYXBwZWFyYW5jZSBk
b2Vzbid0IHVwZGF0ZSB0aGUgd2luZG93IHdoZW4gdW5kb2NrZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCBmMjgwN2NjMDU0Yjk0Yjk0NWY4Y2E3ZTdlZmU4NGE0NjI0ZGY0MzY0Li44
N2ZmYTVlNDlhYzNiMmFiYzUxNWNkMzg3ZWY0NDRmYjlmYzIyOGJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5k
b3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBQYXJ0
aWFsbHkgcmV2ZXJ0IHIyNTc3NTksIGFzIHRoZSBkZXNpZ24gY2hhbmdlZCBlbm91Z2ggc3VjaCB0
aGF0IHRoaXMgY29kZSBpcyBzdGlsbCB1c2VmdWwuCisKKyAgICAgICAgQWxsb3cgdGhlIFdlYiBJ
bnNwZWN0b3IgZnJvbnRlbmQgdG8gYXNrIHRoZSBjb250YWluaW5nIGFwcCAodmlhIGBJbnNwZWN0
b3JGcm9udGVuZENsaWVudGApCisgICAgICAgIHdoZXRoZXIgaXQgc3VwcG9ydHMgdGhlIGdpdmVu
IGRvY2tpbmcgY29uZmlndXJhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3VwcG9ydHNE
b2NrU2lkZSk6IEFkZGVkLgorCiAyMDIwLTAzLTAzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBBUEkgaGVhZGVyIGZpbGUgaGFzIFVTRSBtYWNy
bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaAppbmRleCAxOGFjNDQzNzhkZTNiYWY3ZTY3ZTQxYjYwOTcxZjkyNTE4MWU4MTA0Li4xNTA2
OGY5NTVkMzM5ZDVmMmJiNWYyNmM0ODUwNTI2YTFlNmY5NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaApAQCAtNTUsNiArNTUs
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbmRvd09iamVj
dENsZWFyZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9hZGVkKCkgPSAwOwog
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0V2luZG93RHJhZygpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpID0gMDsKKwogICAgIC8vIEluZm9ybWF0
aW9uIGFib3V0IHRoZSBkZWJ1Z2dhYmxlLgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3Qg
PSAwOwpAQCAtODAsNiArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIGNvbnN0ID0g
MDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RvY2tTaWRlKERv
Y2tTaWRlKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcXVlc3RTZXRE
b2NrU2lkZShEb2NrU2lkZSkgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBj
aGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgPSAwOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKaW5kZXggNDBhMDk3OGUxNTc0NTBiZTMyMTVmZmYzZTRlYjFhNjA0
YjQ2MDZiZi4uYTQ4NjEyNzgyZDJiYjM5MWFiNmFlNWU3ZDhjMzI0OTAxYWVjMWQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcApAQCAtMjcwLDYgKzI3MCwxMyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKICAgICBmcmFtZS0+
bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0MikpOwogfQog
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om1vdmVXaW5kb3dCeShmbG9hdCB4
LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX2Zyb250ZW5kUGFnZS0+
Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1f
ZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKIHZv
aWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0YWNoZWRXaW5kb3coRG9ja1Np
ZGUgZG9ja1NpZGUpCiB7CiAgICAgY29uc3QgY2hhciogc2lkZSA9ICJ1bmRvY2tlZCI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaAppbmRleCAwNTVkZjQyMDg5MjBmNjc4NzIxYmQ2ZTNmZjUxNzIyM2I0YTJmZmUxLi4w
ZWMzMjBkODkzNzg0NTE5YWNhYTUwYTgyY2UxNmJlNjE4YWIyODhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgK
QEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2luZG93
T2JqZWN0Q2xlYXJlZCgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnJvbnRlbmRM
b2FkZWQoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGUg
eyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQg
eSkgZmluYWw7CisKICAgICBXRUJDT1JFX0VYUE9SVCBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAK
aW5kZXggN2JjMzBkMDM0M2M5NDg1YTY3MTNlNGFiM2QzYjc2ZDZmOTBhZjliYi4uODQ3MDVlMjI4
MWMyNjNmNmJkMjAzNDY3ZjFkNDk1NjAyZWNhODUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTE3MSwxOCArMTcxLDQx
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2FkZWQoKQogICAgICAgICBtX2NsaWVu
dC0+ZnJvbnRlbmRMb2FkZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJl
cXVlc3RTZXREb2NrU2lkZShjb25zdCBTdHJpbmcmIHNpZGUpCitzdGF0aWMgT3B0aW9uYWw8SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlPiBkb2NrU2lkZUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBkb2NrU2lkZVN0cmluZykKK3sKKyAgICBpZiAoZG9ja1NpZGVTdHJpbmcgPT0gInVu
ZG9ja2VkIikKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lk
ZTo6VW5kb2NrZWQ7CisgICAgaWYgKGRvY2tTaWRlU3RyaW5nID09ICJyaWdodCIpCisgICAgICAg
IHJldHVybiBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlJpZ2h0OworICAgIGlm
IChkb2NrU2lkZVN0cmluZyA9PSAibGVmdCIpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6RG9ja1NpZGU6OkxlZnQ7CisgICAgaWYgKGRvY2tTaWRlU3RyaW5nID09ICJi
b3R0b20iKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRl
OjpCb3R0b207CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworYm9vbCBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnN1cHBvcnRzRG9ja1NpZGUoY29uc3QgU3RyaW5nJiBkb2NrU2lkZVN0cmlu
ZykKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
dXRvIGRvY2tTaWRlID0gZG9ja1NpZGVGcm9tU3RyaW5nKGRvY2tTaWRlU3RyaW5nKTsKKyAgICBp
ZiAoIWRvY2tTaWRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGll
bnQtPnN1cHBvcnRzRG9ja1NpZGUoZG9ja1NpZGUudmFsdWUoKSk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpyZXF1ZXN0U2V0RG9ja1NpZGUoY29uc3QgU3RyaW5nJiBkb2NrU2lk
ZVN0cmluZykKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KHNpZGUgPT0gInVuZG9ja2VkIikKLSAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RTZXREb2NrU2lk
ZShJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlVuZG9ja2VkKTsKLSAgICBlbHNl
IGlmIChzaWRlID09ICJyaWdodCIpCi0gICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0U2V0RG9ja1Np
ZGUoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpSaWdodCk7Ci0gICAgZWxzZSBp
ZiAoc2lkZSA9PSAibGVmdCIpCi0gICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0U2V0RG9ja1NpZGUo
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpMZWZ0KTsKLSAgICBlbHNlIGlmIChz
aWRlID09ICJib3R0b20iKQotICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFNldERvY2tTaWRlKElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tKTsKKworICAgIGF1dG8gZG9j
a1NpZGUgPSBkb2NrU2lkZUZyb21TdHJpbmcoZG9ja1NpZGVTdHJpbmcpOworICAgIGlmICghZG9j
a1NpZGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5yZXF1ZXN0U2V0RG9ja1Np
ZGUoZG9ja1NpZGUudmFsdWUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpj
bG9zZVdpbmRvdygpCkBAIC0yODIsNiArMzA1LDE4IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzZXRTaGVldFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgdW5zaWduZWQgd2lkdGgsIHVuc2ln
CiAgICAgICAgIG1fY2xpZW50LT5jaGFuZ2VTaGVldFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnN0YXJ0V2luZG93
RHJhZygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3RhcnRXaW5k
b3dEcmFnKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5tb3ZlV2luZG93QnkoeCwgeSk7Cit9CisKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojppc1JlbW90ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50
LT5pc1JlbW90ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5oCmluZGV4IDdhNjVlZDEwYzhkMTA4OGVlMDhjMjdkYmFkOGRmZDYzZThkMWY3
MzQuLjY3NDIyODcwNzg2YzY0NDQzYWUwMDY5NDhhY2EwYjkzNzFjMWNlMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTcyLDYg
KzcyLDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24oKTsKIAorICAgIGJvb2wgc3VwcG9ydHNEb2NrU2lkZShjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHJlcXVlc3RTZXREb2NrU2lkZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgc2V0QXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwpAQCAtNzksNiArODAsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFNoZWV0UmVjdChmbG9hdCB4LCBmbG9hdCB5LCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7CisgICAgdm9p
ZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3Q7CisKICAgICBib29sIGlzUmVt
b3RlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKICAg
ICBTdHJpbmcgYmFja2VuZENvbW1hbmRzVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDNkYjBlN2YzOGVh
NmYxMTc4MjI1MDU1ZjJhMWFiOTY4ZWM4MWU4MjUuLmU3OGMxODkxOTYyOWU3Y2YxMTk0MjNkMjY4
YTFhNGU5Y2VlMmQ5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC01MiwxMyArNTIsMTcgQEAKIAogICAgIERPTVN0cmlu
ZyB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAKLSAgICB2b2lkIHJlcXVlc3RTZXRE
b2NrU2lkZShET01TdHJpbmcgc2lkZSk7CisgICAgYm9vbGVhbiBzdXBwb3J0c0RvY2tTaWRlKERP
TVN0cmluZyBkb2NrU2lkZSk7CisgICAgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUoRE9NU3RyaW5n
IGRvY2tTaWRlKTsKIAogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQg
bG9uZyBoZWlnaHQpOwogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCBs
b25nIHdpZHRoKTsKIAogICAgIHZvaWQgc2V0U2hlZXRSZWN0KHVucmVzdHJpY3RlZCBmbG9hdCB4
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9u
ZyBoZWlnaHQpOwogCisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKKyAgICB2b2lkIG1vdmVX
aW5kb3dCeSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNSZW1vdGU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgYmFja2VuZENvbW1hbmRzVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IDNkNzVhNGY0YjBiNzM0MTVmYzNlMjg0ZjQ5MTYwMmIzYjllNjA2NmEu
LjQ5MmRmMmZjN2M3ZjE5ZmMzZTliOWIxNDM2MzRmMDdlYjI5OGQ1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0NCw2ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SW5zcGVjdG9yU3R1YkZyb250ZW5kKCk7CiAKIHByaXZhdGU6CisgICAgYm9vbCBzdXBw
b3J0c0RvY2tTaWRlKERvY2tTaWRlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
YXR0YWNoV2luZG93KERvY2tTaWRlKSBmaW5hbCB7IH0KICAgICB2b2lkIGRldGFjaFdpbmRvdygp
IGZpbmFsIHsgfQogICAgIHZvaWQgY2xvc2VXaW5kb3coKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCAzYWM2M2Q5ZDEz
NjczYjBiMjg3YjgyMWE2NzY1YTA2MjZhZjQyZmNmLi5mZjcxYWJlYjU1NGY5NGNlOTUyNGNjZTdj
ODFlZDFhNGNjYjUzMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzCkBAIC0zNzAsMTcgKzM3MCwyOCBAQCBXSS5jb250ZW50TG9hZGVk
ID0gZnVuY3Rpb24oKQogICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25O
YXZpZ2F0aW9uSXRlbSgiZG9jay1jbG9zZSIsIFdJLlVJU3RyaW5nKCJDbG9zZSIpLCAiSW1hZ2Vz
L0Nsb3NlTGFyZ2Uuc3ZnIik7CiAgICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuY2xvc2UpOwog
Ci0gICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oImRvY2stcmlnaHQiLCBXSS5VSVN0cmluZygiRG9jayB0byBzaWRlIG9mIHdpbmRvdyIp
LCBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRM
ID8gIkltYWdlcy9Eb2NrTGVmdC5zdmciIDogIkltYWdlcy9Eb2NrUmlnaHQuc3ZnIiwgMTYsIDE2
KTsKLSAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0kuX2RvY2tUb1Np
ZGVUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5F
dmVudC5DbGlja2VkLCBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXRE
aXJlY3Rpb24uUlRMID8gV0kuX2RvY2tMZWZ0IDogV0kuX2RvY2tSaWdodCk7CisgICAgbGV0IGRv
Y2tpbmdDb25maWd1cmF0aW9uTmF2aWdhdGlvbkl0ZW1zID0gW107CiAKLSAgICBXSS5fZG9ja0Jv
dHRvbVRhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiZG9jay1ib3R0
b20iLCBXSS5VSVN0cmluZygiRG9jayB0byBib3R0b20gb2Ygd2luZG93IiksICJJbWFnZXMvRG9j
a0JvdHRvbS5zdmciLCAxNiwgMTYpOwotICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NOYW1l
KTsKLSAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl9kb2NrQm90dG9tKTsKKyAgICBp
ZiAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnN1cHBvcnRzRG9ja1NpZGUoV0kuRG9ja0NvbmZpZ3Vy
YXRpb24uUmlnaHQpICYmIEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c0RvY2tTaWRlKFdJ
LkRvY2tDb25maWd1cmF0aW9uLkxlZnQpKSB7CisgICAgICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFy
QnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkb2NrLXJpZ2h0IiwgV0kuVUlT
dHJpbmcoIkRvY2sgdG8gc2lkZSBvZiB3aW5kb3ciKSwgV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rp
b24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/ICJJbWFnZXMvRG9ja0xlZnQuc3ZnIiA6
ICJJbWFnZXMvRG9ja1JpZ2h0LnN2ZyIsIDE2LCAxNik7CisgICAgICAgIFdJLl9kb2NrVG9TaWRl
VGFiQmFyQnV0dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9E
aXNtaXNzQ2xhc3NOYW1lKTsKKyAgICAgICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uYWRk
RXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5y
ZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMID8gV0ku
X2RvY2tMZWZ0IDogV0kuX2RvY2tSaWdodCk7CisgICAgICAgIGRvY2tpbmdDb25maWd1cmF0aW9u
TmF2aWdhdGlvbkl0ZW1zLnB1c2goV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24pOworICAgIH0K
IAotICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oInVuZG9jayIsIFdJLlVJU3RyaW5nKCJEZXRhY2ggaW50byBzZXBhcmF0ZSB3aW5kb3ciKSwg
IkltYWdlcy9VbmRvY2suc3ZnIiwgMTYsIDE2KTsKLSAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9u
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NO
YW1lKTsKLSAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX3VuZG9jayk7CisgICAgaWYgKElu
c3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c0RvY2tTaWRlKFdJLkRvY2tDb25maWd1cmF0aW9u
LkJvdHRvbSkpIHsKKyAgICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24gPSBuZXcgV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRvY2stYm90dG9tIiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8g
Ym90dG9tIG9mIHdpbmRvdyIpLCAiSW1hZ2VzL0RvY2tCb3R0b20uc3ZnIiwgMTYsIDE2KTsKKyAg
ICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJ
LlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOworICAgICAgICBXSS5fZG9ja0Jv
dHRvbVRhYkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVt
LkV2ZW50LkNsaWNrZWQsIFdJLl9kb2NrQm90dG9tKTsKKyAgICAgICAgZG9ja2luZ0NvbmZpZ3Vy
YXRpb25OYXZpZ2F0aW9uSXRlbXMucHVzaChXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbik7Cisg
ICAgfQorCisgICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c0RvY2tTaWRlKFdJ
LkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2VkKSkgeworICAgICAgICBXSS5fdW5kb2NrVGFiQmFy
QnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJ1bmRvY2siLCBXSS5VSVN0cmlu
ZygiRGV0YWNoIGludG8gc2VwYXJhdGUgd2luZG93IiksICJJbWFnZXMvVW5kb2NrLnN2ZyIsIDE2
LCAxNik7CisgICAgICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOworICAgICAgICBXSS5f
dW5kb2NrVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX3VuZG9jayk7CisgICAgICAgIGRvY2tpbmdDb25maWd1cmF0
aW9uTmF2aWdhdGlvbkl0ZW1zLnB1c2goV0kuX3VuZG9ja1RhYkJhckJ1dHRvbik7CisgICAgfQog
CiAgICAgbGV0IGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1zID0gW107CiAKQEAg
LTQxNyw5ICs0MjgsNyBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgV0ku
dGFiQmFyLmFkZE5hdmlnYXRpb25JdGVtQmVmb3JlKG5ldyBXSS5Hcm91cE5hdmlnYXRpb25JdGVt
KFsKICAgICAgICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLAotICAgICAgICBXSS5fZG9ja1RvU2lk
ZVRhYkJhckJ1dHRvbiwKLSAgICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24sCi0gICAg
ICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24sCisgICAgICAgIC4uLmRvY2tpbmdDb25maWd1cmF0
aW9uTmF2aWdhdGlvbkl0ZW1zLAogICAgICAgICAuLi5pbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmln
YXRpb25JdGVtcywKICAgICBdKSk7CiAKQEAgLTQ2MCw3ICs0NjksMTAgQEAgV0kuY29udGVudExv
YWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIFdJLl9kb2NrZWRSZXNpemVyRWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkb2NrZWQtcmVzaXplciIpOwogICAgIFdJLl9kb2NrZWRSZXNp
emVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFz
c05hbWUpOwotICAgIFdJLl9kb2NrZWRSZXNpemVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93bik7CisgICAgV0kuX2RvY2tlZFJl
c2l6ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIFdJLl9oYW5kbGVEb2Nr
ZWRSZXNpemVyTW91c2VEb3duKTsKKworICAgIGxldCB1bmRvY2tlZFRpdGxlQXJlYUVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidW5kb2NrZWQtdGl0bGUtYXJlYSIpOworICAgIHVu
ZG9ja2VkVGl0bGVBcmVhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBXSS5f
aGFuZGxlVW5kb2NrZWRUaXRsZUFyZWFNb3VzZURvd24pOwogCiAgICAgV0kuX2RvY2tpbmdBdmFp
bGFibGUgPSBmYWxzZTsKIApAQCAtODMzLDEwICs4NDUsMTAgQEAgV0kudXBkYXRlRG9ja2luZ0F2
YWlsYWJpbGl0eSA9IGZ1bmN0aW9uKGF2YWlsYWJsZSkKIAogV0kudXBkYXRlRG9ja2VkU3RhdGUg
PSBmdW5jdGlvbihzaWRlKQogewotICAgIGlmIChXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IHNp
ZGUpCisgICAgaWYgKFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBzaWRlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBXSS5fcHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbiA9IFdJLl9kb2NrQ29uZmln
dXJhdGlvbjsKKyAgICBXSS5fcHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbiA9IFdJLmRvY2tDb25m
aWd1cmF0aW9uOwogCiAgICAgaWYgKCFXSS5fcHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbikgewog
ICAgICAgICBpZiAoc2lkZSA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQgfHwgc2lkZSA9
PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCkKQEAgLTg0NSwyMSArODU3LDI4IEBAIFdJLnVw
ZGF0ZURvY2tlZFN0YXRlID0gZnVuY3Rpb24oc2lkZSkKICAgICAgICAgICAgIFdJLl9wcmV2aW91
c0RvY2tDb25maWd1cmF0aW9uID0gV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0ku
TGF5b3V0RGlyZWN0aW9uLlJUTCA/IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQgOiBXSS5Eb2Nr
Q29uZmlndXJhdGlvbi5SaWdodDsKICAgICB9CiAKLSAgICBXSS5fZG9ja0NvbmZpZ3VyYXRpb24g
PSBzaWRlOworICAgIFdJLmRvY2tDb25maWd1cmF0aW9uID0gc2lkZTsKIAotICAgIFdJLmRvY2tl
ZCA9IHNpZGUgIT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2VkOwotCi0gICAgaWYgKHNp
ZGUgPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSkgeworICAgIHN3aXRjaCAoV0kuZG9j
a0NvbmZpZ3VyYXRpb24pIHsKKyAgICBjYXNlIFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbToK
ICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJkb2NrZWQiLCBXSS5Eb2NrQ29u
ZmlndXJhdGlvbi5Cb3R0b20pOwogICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1v
dmUoIndpbmRvdy1pbmFjdGl2ZSIsIFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0LCBXSS5Eb2Nr
Q29uZmlndXJhdGlvbi5MZWZ0KTsKLSAgICB9IGVsc2UgaWYgKHNpZGUgPT09IFdJLkRvY2tDb25m
aWd1cmF0aW9uLlJpZ2h0KSB7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBXSS5Eb2NrQ29u
ZmlndXJhdGlvbi5SaWdodDoKICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJk
b2NrZWQiLCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdodCk7CiAgICAgICAgIGRvY3VtZW50LmJv
ZHkuY2xhc3NMaXN0LnJlbW92ZSgid2luZG93LWluYWN0aXZlIiwgV0kuRG9ja0NvbmZpZ3VyYXRp
b24uQm90dG9tLCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KTsKLSAgICB9IGVsc2UgaWYgKHNp
ZGUgPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQpIHsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQ6CiAgICAgICAgIGRvY3VtZW50LmJvZHku
Y2xhc3NMaXN0LmFkZCgiZG9ja2VkIiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCk7CiAgICAg
ICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgid2luZG93LWluYWN0aXZlIiwgV0ku
RG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tLCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdodCk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKICAgICAgICAgZG9jdW1l
bnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJkb2NrZWQiLCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5S
aWdodCwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90
dG9tKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgV0kuX3VwZGF0ZURvY2tOYXZpZ2F0
aW9uSXRlbXMoKTsKIApAQCAtODY3LDYgKzg4NiwxMjMgQEAgV0kudXBkYXRlRG9ja2VkU3RhdGUg
PSBmdW5jdGlvbihzaWRlKQogICAgICAgICBXSS5oaWRlU3BsaXRDb25zb2xlKCk7CiB9OwogCitX
SS5yZXNpemVEb2NrZWRGcmFtZU1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGNv
bnNvbGUuYXNzZXJ0KFdJLmRvY2tDb25maWd1cmF0aW9uICE9PSBXSS5Eb2NrQ29uZmlndXJhdGlv
bi5VbmRvY2tlZCk7CisKKyAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0cmxL
ZXkpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50W1dJLlBvcG92ZXIuRXZlbnRQcmV2ZW50
RGlzbWlzc1N5bWJvbF0gPSB0cnVlOworCisgICAgbGV0IGlzRG9ja2VkQm90dG9tID0gV0kuZG9j
a0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbTsKKworICAgIGxl
dCB3aW5kb3dQcm9wZXJ0eSA9IGlzRG9ja2VkQm90dG9tID8gImlubmVySGVpZ2h0IiA6ICJpbm5l
cldpZHRoIjsKKyAgICBsZXQgZXZlbnRTY3JlZW5Qcm9wZXJ0eSA9IGlzRG9ja2VkQm90dG9tID8g
InNjcmVlblkiIDogInNjcmVlblgiOworICAgIGxldCBldmVudENsaWVudFByb3BlcnR5ID0gaXNE
b2NrZWRCb3R0b20gPyAiY2xpZW50WSIgOiAiY2xpZW50WCI7CisKKyAgICBsZXQgcmVzaXplckVs
ZW1lbnQgPSBldmVudC50YXJnZXQ7CisgICAgbGV0IGZpcnN0Q2xpZW50UG9zaXRpb24gPSBldmVu
dFtldmVudENsaWVudFByb3BlcnR5XTsKKyAgICBsZXQgbGFzdFNjcmVlblBvc2l0aW9uID0gZXZl
bnRbZXZlbnRTY3JlZW5Qcm9wZXJ0eV07CisKKyAgICBmdW5jdGlvbiBkaXZpZGVyRHJhZyhldmVu
dCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbGV0IHBvc2l0aW9uID0gZXZlbnRbZXZlbnRTY3JlZW5Qcm9wZXJ0
eV07CisgICAgICAgIGxldCBkZWx0YSA9IHBvc2l0aW9uIC0gbGFzdFNjcmVlblBvc2l0aW9uOwor
ICAgICAgICBsZXQgY2xpZW50UG9zaXRpb24gPSBldmVudFtldmVudENsaWVudFByb3BlcnR5XTsK
KworICAgICAgICBsYXN0U2NyZWVuUG9zaXRpb24gPSBwb3NpdGlvbjsKKworICAgICAgICBpZiAo
V0kuZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQpIHsKKyAg
ICAgICAgICAgIC8vIElmIHRoZSBtb3VzZSBpcyB0cmF2ZWxsaW5nIHJpZ2h0d2FyZCBidXQgaXMg
cG9zaXRpb25lZCBsZWZ0IG9mIHRoZSByZXNpemVyLCBpZ25vcmUgdGhlIGV2ZW50LgorICAgICAg
ICAgICAgaWYgKGRlbHRhID4gMCAmJiBjbGllbnRQb3NpdGlvbiA8IGZpcnN0Q2xpZW50UG9zaXRp
b24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAvLyBJZiB0aGUgbW91
c2UgaXMgdHJhdmVsbGluZyBsZWZ0d2FyZCBidXQgaXMgcG9zaXRpb25lZCB0byB0aGUgcmlnaHQg
b2YgdGhlIHJlc2l6ZXIsIGlnbm9yZSB0aGUgZXZlbnQuCisgICAgICAgICAgICBpZiAoZGVsdGEg
PCAwICYmIGNsaWVudFBvc2l0aW9uID4gd2luZG93W3dpbmRvd1Byb3BlcnR5XSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIFdlIGxhdGVyIHN1YnRyYWN0IHRoZSBk
ZWx0YSBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBidXQgc2luY2UgdGhlIGluc3BlY3RlZCB2
aWV3IGFuZCBpbnNwZWN0b3IgdmlldworICAgICAgICAgICAgLy8gYXJlIGZsaXBwZWQgd2hlbiBk
b2NrZWQgdG8gbGVmdCwgd2Ugd2FudCBkcmFnZ2luZyB0byBoYXZlIHRoZSBvcHBvc2l0ZSBlZmZl
Y3QgZnJvbSBkb2NrZWQgdG8gcmlnaHQuCisgICAgICAgICAgICBkZWx0YSAqPSAtMTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBtb3VzZSBpcyB0cmF2ZWxsaW5nIGRv
d253YXJkL3JpZ2h0d2FyZCBidXQgaXMgcG9zaXRpb25lZCBhYm92ZS9sZWZ0IG9mIHRoZSByZXNp
emVyLCBpZ25vcmUgdGhlIGV2ZW50LgorICAgICAgICAgICAgaWYgKGRlbHRhID4gMCAmJiBjbGll
bnRQb3NpdGlvbiA8IGZpcnN0Q2xpZW50UG9zaXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAvLyBJZiB0aGUgbW91c2UgaXMgdHJhdmVsbGluZyB1cHdhcmQvbGVm
dHdhcmQgYnV0IGlzIHBvc2l0aW9uZWQgYmVsb3cvcmlnaHQgb2YgdGhlIHJlc2l6ZXIsIGlnbm9y
ZSB0aGUgZXZlbnQuCisgICAgICAgICAgICBpZiAoZGVsdGEgPCAwICYmIGNsaWVudFBvc2l0aW9u
ID4gZmlyc3RDbGllbnRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBsZXQgZGltZW5zaW9uID0gTWF0aC5tYXgoMCwgd2luZG93W3dpbmRvd1By
b3BlcnR5XSAtIGRlbHRhKTsKKyAgICAgICAgLy8gSWYgem9vbWVkIGluL291dCwgdGhlcmUgYmUg
Z3JlYXRlci9mZXdlciBkb2N1bWVudCBwaXhlbHMgc2hvd24sIGJ1dCB0aGUgaW5zcGVjdG9yJ3MK
KyAgICAgICAgLy8gd2lkdGggb3IgaGVpZ2h0IHNob3VsZCBiZSB0aGUgc2FtZSBpbiBkZXZpY2Ug
cGl4ZWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGRvY3VtZW50IHpvb20uCisgICAgICAgIGRpbWVuc2lv
biAqPSBXSS5nZXRab29tRmFjdG9yKCk7CisKKyAgICAgICAgaWYgKGlzRG9ja2VkQm90dG9tKQor
ICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KGRpbWVuc2lvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5zZXRBdHRhY2hlZFdpbmRvd1dpZHRoKGRpbWVuc2lvbik7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZWxlbWVudERyYWdFbmQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuYnV0
dG9uICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFdJLmVsZW1lbnREcmFn
RW5kKGV2ZW50KTsKKyAgICB9CisKKyAgICBsZXQgY3Vyc29yID0gaXNEb2NrZWRCb3R0b20gPyAi
cm93LXJlc2l6ZSIgOiAiY29sLXJlc2l6ZSI7CisgICAgV0kuZWxlbWVudERyYWdTdGFydChyZXNp
emVyRWxlbWVudCwgZGl2aWRlckRyYWcsIGVsZW1lbnREcmFnRW5kLCBldmVudCwgY3Vyc29yKTsK
K307CisKK1dJLm1vdmVVbmRvY2tlZFdpbmRvd01vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQor
eworICAgIGNvbnNvbGUuYXNzZXJ0KFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29u
ZmlndXJhdGlvbi5VbmRvY2tlZCk7CisKKyAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2
ZW50LmN0cmxLZXkpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50W1dJLlBvcG92ZXIuRXZl
bnRQcmV2ZW50RGlzbWlzc1N5bWJvbF0gPSB0cnVlOworCisgICAgaWYgKFdJLlBsYXRmb3JtLm5h
bWUgPT09ICJtYWMiKSB7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zdGFydFdpbmRv
d0RyYWcoKTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGxldCBsYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAgbGV0
IGxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKworICAgIGZ1bmN0aW9uIGRpdmlkZXJEcmFn
KGV2ZW50KSB7CisgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbGV0IHggPSBldmVudC5zY3JlZW5YIC0gbGFzdFNjcmVlblg7Cisg
ICAgICAgIGxldCB5ID0gZXZlbnQuc2NyZWVuWSAtIGxhc3RTY3JlZW5ZOworCisgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5tb3ZlV2luZG93QnkoeCwgeSk7CisKKyAgICAgICAgbGFzdFNj
cmVlblggPSBldmVudC5zY3JlZW5YOworICAgICAgICBsYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVl
blk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZWxlbWVudERyYWdFbmQoZXZlbnQpIHsKKyAgICAg
ICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBXSS5lbGVtZW50RHJhZ0VuZChldmVudCk7CisgICAgfQorCisgICAgY29uc3QgY3Vyc29yID0g
ImRlZmF1bHQiOworICAgIFdJLmVsZW1lbnREcmFnU3RhcnQoZXZlbnQudGFyZ2V0LCBkaXZpZGVy
RHJhZywgZWxlbWVudERyYWdFbmQsIGV2ZW50LCBjdXJzb3IpOworfTsKKwogV0kudXBkYXRlVmlz
aWJpbGl0eVN0YXRlID0gZnVuY3Rpb24odmlzaWJsZSkKIHsKICAgICBXSS52aXNpYmxlID0gdmlz
aWJsZTsKQEAgLTk2Nyw3ICsxMTAzLDcgQEAgV0kuaXNTaG93aW5nU3BsaXRDb25zb2xlID0gZnVu
Y3Rpb24oKQogCiBXSS5kb2NrZWRDb25maWd1cmF0aW9uU3VwcG9ydHNTcGxpdENvbnRlbnRCcm93
c2VyID0gZnVuY3Rpb24oKQogewotICAgIHJldHVybiBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gIT09
IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbTsKKyAgICByZXR1cm4gV0kuZG9ja0NvbmZpZ3Vy
YXRpb24gIT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbTsKIH07CiAKIFdJLmRvZXNDdXJy
ZW50VGFiU3VwcG9ydFNwbGl0Q29udGVudEJyb3dzZXIgPSBmdW5jdGlvbigpCkBAIC0xNTg4LDcg
KzE3MjQsNyBAQCBXSS5fd2luZG93Rm9jdXNlZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSB0aGUgOndpbmRvdy1pbmFjdGl2
ZSBwc2V1ZG8gY2xhc3Mgb25jZSBodHRwczovL3dlYmtpdC5vcmcvYi8zODkyNyBpcyBmaXhlZC4K
LSAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoV0kuZG9ja2VkID8gIndpbmRvdy1k
b2NrZWQtaW5hY3RpdmUiIDogIndpbmRvdy1pbmFjdGl2ZSIpOworICAgIGRvY3VtZW50LmJvZHku
Y2xhc3NMaXN0LnJlbW92ZShXSS5kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3Vy
YXRpb24uVW5kb2NrZWQgPyAid2luZG93LWluYWN0aXZlIiA6ICJ3aW5kb3ctZG9ja2VkLWluYWN0
aXZlIik7CiB9OwogCiBXSS5fd2luZG93Qmx1cnJlZCA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTU5
Nyw3ICsxNzMzLDcgQEAgV0kuX3dpbmRvd0JsdXJyZWQgPSBmdW5jdGlvbihldmVudCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgdGhlIDp3aW5kb3ctaW5h
Y3RpdmUgcHNldWRvIGNsYXNzIG9uY2UgaHR0cHM6Ly93ZWJraXQub3JnL2IvMzg5MjcgaXMgZml4
ZWQuCi0gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFdJLmRvY2tlZCA/ICJ3aW5kb3ct
ZG9ja2VkLWluYWN0aXZlIiA6ICJ3aW5kb3ctaW5hY3RpdmUiKTsKKyAgICBkb2N1bWVudC5ib2R5
LmNsYXNzTGlzdC5hZGQoV0kuZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0
aW9uLlVuZG9ja2VkID8gIndpbmRvdy1pbmFjdGl2ZSIgOiAid2luZG93LWRvY2tlZC1pbmFjdGl2
ZSIpOwogfTsKIAogV0kuX3dpbmRvd1Jlc2l6ZWQgPSBmdW5jdGlvbihldmVudCkKQEAgLTE3Mjgs
MTYgKzE4NjQsMjQgQEAgV0kuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb24gPSBmdW5j
dGlvbihldmVudCkKIAogV0kuX3VwZGF0ZURvY2tOYXZpZ2F0aW9uSXRlbXMgPSBmdW5jdGlvbigp
CiB7Ci0gICAgaWYgKFdJLl9kb2NraW5nQXZhaWxhYmxlIHx8IFdJLmRvY2tlZCkgewotICAgICAg
ICBXSS5fY2xvc2VUYWJCYXJCdXR0b24uaGlkZGVuID0gIVdJLmRvY2tlZDsKLSAgICAgICAgV0ku
X3VuZG9ja1RhYkJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJ
LkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2VkOwotICAgICAgICBXSS5fZG9ja0JvdHRvbVRhYkJh
ckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1
cmF0aW9uLkJvdHRvbTsKLSAgICAgICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uaGlkZGVu
ID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdodCB8
fCBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQ7Cisg
ICAgbGV0IGRvY2tlZCA9IFdJLmRvY2tDb25maWd1cmF0aW9uICE9PSBXSS5Eb2NrQ29uZmlndXJh
dGlvbi5VbmRvY2tlZDsKKworICAgIGlmIChXSS5fZG9ja2luZ0F2YWlsYWJsZSB8fCBkb2NrZWQp
IHsKKyAgICAgICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLmhpZGRlbiA9ICFkb2NrZWQ7CisgICAg
ICAgIGlmIChXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbikKKyAgICAgICAgICAgIFdJLl9kb2Nr
VG9TaWRlVGFiQmFyQnV0dG9uLmhpZGRlbiA9IFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBXSS5E
b2NrQ29uZmlndXJhdGlvbi5SaWdodCB8fCBXSS5kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9j
a0NvbmZpZ3VyYXRpb24uTGVmdDsKKyAgICAgICAgaWYgKFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0
dG9uKQorICAgICAgICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uaGlkZGVuID0gV0ku
ZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbTsKKyAgICAg
ICAgaWYgKFdJLl91bmRvY2tUYWJCYXJCdXR0b24pCisgICAgICAgICAgICBXSS5fdW5kb2NrVGFi
QmFyQnV0dG9uLmhpZGRlbiA9IFdJLmRvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmln
dXJhdGlvbi5VbmRvY2tlZDsKICAgICB9IGVsc2UgewogICAgICAgICBXSS5fY2xvc2VUYWJCYXJC
dXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5oaWRk
ZW4gPSB0cnVlOwotICAgICAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5oaWRkZW4gPSB0
cnVlOwotICAgICAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwor
ICAgICAgICBpZiAoV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24pCisgICAgICAgICAgICBXSS5f
ZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICBpZiAoV0kuX2Rv
Y2tCb3R0b21UYWJCYXJCdXR0b24pCisgICAgICAgICAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1
dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICBpZiAoV0kuX3VuZG9ja1RhYkJhckJ1dHRvbikK
KyAgICAgICAgICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKICAgICB9
CiAKICAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMoKTsKQEAgLTE3OTUsODEgKzE5MzksMTQg
QEAgV0kuX3RhYkJyb3dzZXJTZWxlY3RlZFRhYkNvbnRlbnRWaWV3RGlkQ2hhbmdlID0gZnVuY3Rp
b24oZXZlbnQpCiAgICAgV0kuaGlkZVNwbGl0Q29uc29sZSgpOwogfTsKIAotV0kuX2RvY2tlZFJl
c2l6ZXJNb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKK1dJLl9oYW5kbGVEb2NrZWRSZXNpemVy
TW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0g
MCB8fCBldmVudC5jdHJsS2V5KQotICAgICAgICByZXR1cm47CisgICAgV0kucmVzaXplRG9ja2Vk
RnJhbWVNb3VzZURvd24oZXZlbnQpOworfTsKIAotICAgIGlmICghV0kuZG9ja2VkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBPbmx5IHN0YXJ0IGRyYWdnaW5nIGlmIHRoZSB0YXJnZXQgaXMg
b25lIG9mIHRoZSBlbGVtZW50cyB0aGF0IHdlIGV4cGVjdC4KLSAgICBpZiAoZXZlbnQudGFyZ2V0
ICE9PSBXSS5fZG9ja2VkUmVzaXplckVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2
ZW50W1dJLlBvcG92ZXIuRXZlbnRQcmV2ZW50RGlzbWlzc1N5bWJvbF0gPSB0cnVlOwotCi0gICAg
bGV0IHdpbmRvd1Byb3BlcnR5ID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29u
ZmlndXJhdGlvbi5Cb3R0b20gPyAiaW5uZXJIZWlnaHQiIDogImlubmVyV2lkdGgiOwotICAgIGxl
dCBldmVudFNjcmVlblByb3BlcnR5ID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2Nr
Q29uZmlndXJhdGlvbi5Cb3R0b20gPyAic2NyZWVuWSIgOiAic2NyZWVuWCI7Ci0gICAgbGV0IGV2
ZW50Q2xpZW50UHJvcGVydHkgPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25m
aWd1cmF0aW9uLkJvdHRvbSA/ICJjbGllbnRZIiA6ICJjbGllbnRYIjsKLQotICAgIHZhciByZXNp
emVyRWxlbWVudCA9IGV2ZW50LnRhcmdldDsKLSAgICB2YXIgZmlyc3RDbGllbnRQb3NpdGlvbiA9
IGV2ZW50W2V2ZW50Q2xpZW50UHJvcGVydHldOwotICAgIHZhciBsYXN0U2NyZWVuUG9zaXRpb24g
PSBldmVudFtldmVudFNjcmVlblByb3BlcnR5XTsKLQotICAgIGZ1bmN0aW9uIGRvY2tlZFJlc2l6
ZXJEcmFnKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcG9zaXRpb24gPSBldmVudFtldmVudFNj
cmVlblByb3BlcnR5XTsKLSAgICAgICAgdmFyIGRlbHRhID0gcG9zaXRpb24gLSBsYXN0U2NyZWVu
UG9zaXRpb247Ci0gICAgICAgIHZhciBjbGllbnRQb3NpdGlvbiA9IGV2ZW50W2V2ZW50Q2xpZW50
UHJvcGVydHldOwotCi0gICAgICAgIGxhc3RTY3JlZW5Qb3NpdGlvbiA9IHBvc2l0aW9uOwotCi0g
ICAgICAgIGlmIChXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9u
LkxlZnQpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBtb3VzZSBpcyB0cmF2ZWxsaW5nIHJpZ2h0
d2FyZCBidXQgaXMgcG9zaXRpb25lZCBsZWZ0IG9mIHRoZSByZXNpemVyLCBpZ25vcmUgdGhlIGV2
ZW50LgotICAgICAgICAgICAgaWYgKGRlbHRhID4gMCAmJiBjbGllbnRQb3NpdGlvbiA8IGZpcnN0
Q2xpZW50UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAv
LyBJZiB0aGUgbW91c2UgaXMgdHJhdmVsbGluZyBsZWZ0d2FyZCBidXQgaXMgcG9zaXRpb25lZCB0
byB0aGUgcmlnaHQgb2YgdGhlIHJlc2l6ZXIsIGlnbm9yZSB0aGUgZXZlbnQuCi0gICAgICAgICAg
ICBpZiAoZGVsdGEgPCAwICYmIGNsaWVudFBvc2l0aW9uID4gd2luZG93W3dpbmRvd1Byb3BlcnR5
XSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIC8vIFdlIGxhdGVyIHN1
YnRyYWN0IHRoZSBkZWx0YSBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBidXQgc2luY2UgdGhl
IGluc3BlY3RlZCB2aWV3IGFuZCBpbnNwZWN0b3IgdmlldwotICAgICAgICAgICAgLy8gYXJlIGZs
aXBwZWQgd2hlbiBkb2NrZWQgdG8gbGVmdCwgd2Ugd2FudCBkcmFnZ2luZyB0byBoYXZlIHRoZSBv
cHBvc2l0ZSBlZmZlY3QgZnJvbSBkb2NrZWQgdG8gcmlnaHQuCi0gICAgICAgICAgICBkZWx0YSAq
PSAtMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBtb3VzZSBpcyB0
cmF2ZWxsaW5nIGRvd253YXJkL3JpZ2h0d2FyZCBidXQgaXMgcG9zaXRpb25lZCBhYm92ZS9sZWZ0
IG9mIHRoZSByZXNpemVyLCBpZ25vcmUgdGhlIGV2ZW50LgotICAgICAgICAgICAgaWYgKGRlbHRh
ID4gMCAmJiBjbGllbnRQb3NpdGlvbiA8IGZpcnN0Q2xpZW50UG9zaXRpb24pCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAvLyBJZiB0aGUgbW91c2UgaXMgdHJhdmVsbGlu
ZyB1cHdhcmQvbGVmdHdhcmQgYnV0IGlzIHBvc2l0aW9uZWQgYmVsb3cvcmlnaHQgb2YgdGhlIHJl
c2l6ZXIsIGlnbm9yZSB0aGUgZXZlbnQuCi0gICAgICAgICAgICBpZiAoZGVsdGEgPCAwICYmIGNs
aWVudFBvc2l0aW9uID4gZmlyc3RDbGllbnRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgZGltZW5zaW9uID0gTWF0aC5tYXgoMCwgd2lu
ZG93W3dpbmRvd1Byb3BlcnR5XSAtIGRlbHRhKTsKLSAgICAgICAgLy8gSWYgem9vbWVkIGluL291
dCwgdGhlcmUgYmUgZ3JlYXRlci9mZXdlciBkb2N1bWVudCBwaXhlbHMgc2hvd24sIGJ1dCB0aGUg
aW5zcGVjdG9yJ3MKLSAgICAgICAgLy8gd2lkdGggb3IgaGVpZ2h0IHNob3VsZCBiZSB0aGUgc2Ft
ZSBpbiBkZXZpY2UgcGl4ZWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGRvY3VtZW50IHpvb20uCi0gICAg
ICAgIGRpbWVuc2lvbiAqPSBXSS5nZXRab29tRmFjdG9yKCk7Ci0KLSAgICAgICAgaWYgKFdJLl9k
b2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tKQotICAgICAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGRpbWVu
c2lvbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5z
ZXRBdHRhY2hlZFdpbmRvd1dpZHRoKGRpbWVuc2lvbik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
ZG9ja2VkUmVzaXplckRyYWdFbmQoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoZXZlbnQuYnV0
dG9uICE9PSAwKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFdJLmVsZW1lbnREcmFn
RW5kKGV2ZW50KTsKLSAgICB9Ci0KLSAgICBXSS5lbGVtZW50RHJhZ1N0YXJ0KHJlc2l6ZXJFbGVt
ZW50LCBkb2NrZWRSZXNpemVyRHJhZywgZG9ja2VkUmVzaXplckRyYWdFbmQsIGV2ZW50LCBXSS5f
ZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSA/ICJyb3ct
cmVzaXplIiA6ICJjb2wtcmVzaXplIik7CitXSS5faGFuZGxlVW5kb2NrZWRUaXRsZUFyZWFNb3Vz
ZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBXSS5tb3ZlVW5kb2NrZWRXaW5kb3dNb3Vz
ZURvd24oZXZlbnQpOwogfTsKIAogV0kuX2RvbVN0b3JhZ2VXYXNJbnNwZWN0ZWQgPSBmdW5jdGlv
bihldmVudCkKQEAgLTIyNTYsOSArMjMzMyw5IEBAIFdJLl91cGRhdGVJbnNwZWN0TW9kZVRhYkJh
ckJ1dHRvbiA9IGZ1bmN0aW9uKCkKIFdJLl91cGRhdGVUYWJCYXJEaXZpZGVycyA9IGZ1bmN0aW9u
KCkKIHsKICAgICBsZXQgY2xvc2VIaWRkZW4gPSBXSS5fY2xvc2VUYWJCYXJCdXR0b24uaGlkZGVu
OwotICAgIGxldCBkb2NrVG9TaWRlSGlkZGVuID0gV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24u
aGlkZGVuOwotICAgIGxldCBkb2NrQm90dG9tSGlkZGVuID0gV0kuX2RvY2tCb3R0b21UYWJCYXJC
dXR0b24uaGlkZGVuOwotICAgIGxldCB1bmRvY2tIaWRkZW4gPSBXSS5fdW5kb2NrVGFiQmFyQnV0
dG9uLmhpZGRlbjsKKyAgICBsZXQgZG9ja1RvU2lkZUhpZGRlbiA9IFdJLl9kb2NrVG9TaWRlVGFi
QmFyQnV0dG9uPy5oaWRkZW47CisgICAgbGV0IGRvY2tCb3R0b21IaWRkZW4gPSBXSS5fZG9ja0Jv
dHRvbVRhYkJhckJ1dHRvbj8uaGlkZGVuOworICAgIGxldCB1bmRvY2tIaWRkZW4gPSBXSS5fdW5k
b2NrVGFiQmFyQnV0dG9uPy5oaWRkZW47CiAKICAgICBsZXQgaW5zcGVjdE1vZGVIaWRkZW4gPSBX
SS5faW5zcGVjdE1vZGVUYWJCYXJCdXR0b24uaGlkZGVuOwogICAgIGxldCBkZXZpY2VTZXR0aW5n
c0hpZGRlbiA9IFdJLl9kZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbiAmJiBXSS5fZGV2aWNlU2V0
dGluZ3NUYWJCYXJCdXR0b24uaGlkZGVuOwpAQCAtMjY2MywxMCArMjc0MCwxMCBAQCBXSS5zZXRM
YXlvdXREaXJlY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkKIAogICAgIFdJLnNldHRpbmdzLmRlYnVn
TGF5b3V0RGlyZWN0aW9uLnZhbHVlID0gdmFsdWU7CiAKLSAgICBpZiAoV0kucmVzb2x2ZWRMYXlv
dXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCAmJiBXSS5fZG9ja0NvbmZp
Z3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0KQorICAgIGlmIChXSS5yZXNv
bHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMICYmIFdJLmRv
Y2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdodCkKICAgICAgICAg
V0kuX2RvY2tMZWZ0KCk7CiAKLSAgICBpZiAoV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9
PT0gV0kuTGF5b3V0RGlyZWN0aW9uLkxUUiAmJiBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJ
LkRvY2tDb25maWd1cmF0aW9uLkxlZnQpCisgICAgaWYgKFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0
aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5MVFIgJiYgV0kuZG9ja0NvbmZpZ3VyYXRpb24g
PT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQpCiAgICAgICAgIFdJLl9kb2NrUmlnaHQoKTsK
IAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZW9wZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuY3NzCmluZGV4IGU3MTIw
YTM3MzVhM2Y1N2FkODBkZjZkZThkNzMzY2RhYzk1YmY3N2IuLjViMGY4MmIxYjNlODc2OTA1ZjRh
NDZjYjYwY2FiZDlkYzE2NDQzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmNzcwpAQCAtMTI1LDYgKzEyNSwxMCBAQCBib2R5
LmRvY2tlZCAudGFiLWJhciA+IC50YWJzID4gLmZsZXhpYmxlLXNwYWNlIHsKICAgICBmbGV4LWdy
b3c6IDE7CiB9CiAKK2JvZHkuZG9ja2VkLmJvdHRvbSAudGFiLWJhciA+IC50YWJzID4gLmZsZXhp
YmxlLXNwYWNlIHsKKyAgICBjdXJzb3I6IHJvdy1yZXNpemU7Cit9CisKIC50YWItYmFyID4gLnRh
YnMgPiAuaXRlbSB7CiAgICAgZGlzcGxheTogZmxleDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDgxMTFlZTA4YWU0
YjVhZjRlY2VkN2EwZWI5Y2ZkMTliYzM5ZWY2NjYuLjhhMTMwYzNlNzRmOGVjMTZiZGE2OWUyNGU3
ZTI3N2ZhNzcwOTgxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTMwLDYgKzMwLDcgQEAgV0kuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBzdXBlcihlbGVtZW50KTsKIAogICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJhciIpOworICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VE
b3duLmJpbmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2
IiwgImJvcmRlciB0b3AiKTsKIApAQCAtNDAsMTAgKzQxLDEwIEBAIFdJLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyID0gdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAg
ICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJ0YWJzIjsKICAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7Ci0gICAgICAg
IHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9o
YW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOwot
ICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIs
IHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX3RhYkNv
bnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRl
eHRNZW51LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlVGFiQ29udGFpbmVyTW91c2VEb3duLmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9oYW5kbGVUYWJDb250YWluZXJDbGljay5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlz
Ll9oYW5kbGVUYWJDb250YWluZXJNb3VzZUxlYXZlLmJpbmQodGhpcykpOworICAgICAgICB0aGlz
Ll90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5k
bGVUYWJDb250YWluZXJDb250ZXh0TWVudS5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0aGlzLl9m
bGV4aWJsZVNwYWNlQmVmb3JlRWxlbWVudCA9IHRoaXMuX3RhYkNvbnRhaW5lci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIHRoaXMuX2ZsZXhpYmxl
U3BhY2VCZWZvcmVFbGVtZW50LmNsYXNzTmFtZSA9ICJmbGV4aWJsZS1zcGFjZSI7CkBAIC03MSw3
ICs3Miw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAg
IHN0YXRpYyBnZXQgaG9yaXpvbnRhbFBhZGRpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJ
LmRvY2tlZCA/IDggOiAwOyAvLyBLZWVwIGluIHN5bmMgd2l0aCBgYm9keS5kb2NrZWQgLnRhYi1i
YXIgLnRhYnNgCisgICAgICAgIHJldHVybiAoV0kuZG9ja0NvbmZpZ3VyYXRpb24gIT09IFdJLkRv
Y2tDb25maWd1cmF0aW9uLlVuZG9ja2VkKSA/IDggOiAwOyAvLyBLZWVwIGluIHN5bmMgd2l0aCBg
Ym9keS5kb2NrZWQgLnRhYi1iYXIgLnRhYnNgCiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC02
MzksNiArNjQwLDI1IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcK
ICAgICB9CiAKICAgICBfaGFuZGxlTW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYg
KGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuZWxlbWVudCAmJiBldmVudC50
YXJnZXQgIT09IHRoaXMuX2ZsZXhpYmxlU3BhY2VCZWZvcmVFbGVtZW50ICYmIGV2ZW50LnRhcmdl
dCAhPT0gdGhpcy5fZmxleGlibGVTcGFjZUFmdGVyRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBzd2l0Y2ggKFdJLmRvY2tDb25maWd1cmF0aW9uKSB7CisgICAgICAgIGNh
c2UgV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tOgorICAgICAgICAgICAgV0kucmVzaXplRG9j
a2VkRnJhbWVNb3VzZURvd24oZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZDoKKyAgICAgICAgICAgIFdJLm1vdmVV
bmRvY2tlZFdpbmRvd01vdXNlRG93bihldmVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIF9oYW5kbGVUYWJDb250YWluZXJNb3VzZURvd24oZXZlbnQpCiAg
ICAgewogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIGxlZnQgbW91c2UgY2xpY2tzIGZvciB0YWIg
bW92ZW1lbnQuCiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtl
eSkKQEAgLTcxMCw3ICs3MzAsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0KIAotICAgIF9o
YW5kbGVDbGljayhldmVudCkKKyAgICBfaGFuZGxlVGFiQ29udGFpbmVyQ2xpY2soZXZlbnQpCiAg
ICAgewogICAgICAgICB2YXIgaXRlbUVsZW1lbnQgPSBldmVudC50YXJnZXQuY2xvc2VzdCgiLiIg
KyBXSS5UYWJCYXJJdGVtLlN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgaWYgKCFpdGVtRWxlbWVu
dCkKQEAgLTg4MCw3ICs5MDAsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5F
dmVudC5UYWJCYXJJdGVtc1Jlb3JkZXJlZCk7CiAgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlTGVh
dmUoZXZlbnQpCisgICAgX2hhbmRsZVRhYkNvbnRhaW5lck1vdXNlTGVhdmUoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fbW91c2VJc0Rvd24gfHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xv
c2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRh
aW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250
YWlucygiYW5pbWF0aW5nIikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04OTUsNyArOTE1LDcg
QEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlz
Ll9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSgpOwogICAgIH0KIAotICAgIF9oYW5kbGVD
b250ZXh0TWVudShldmVudCkKKyAgICBfaGFuZGxlVGFiQ29udGFpbmVyQ29udGV4dE1lbnUoZXZl
bnQpCiAgICAgewogICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVh
dGVGcm9tRXZlbnQoZXZlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcwppbmRleCBmZTgyNGRiOTIwNzc0NDJm
MGIyZTZlNGVmNDYwMTFhMjY1MmFlMjcxLi5kY2NiMjZmODIyMjM2ZDE2YzkwNTYzZjcxYjUzZmE1
MzM5MTdlMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMKQEAgLTUzLDcgKzUzLDcgQEAgV0kuVGFiQmFySXRl
bSA9IGNsYXNzIFRhYkJhckl0ZW0KIAogICAgIHN0YXRpYyBnZXQgaG9yaXpvbnRhbE1hcmdpbigp
CiAgICAgewotICAgICAgICByZXR1cm4gV0kuZG9ja2VkID8gNCA6IDA7IC8vIEtlZXAgaW4gc3lu
YyB3aXRoIGBib2R5LmRvY2tlZCAudGFiLWJhciA+IC50YWJzID4gLml0ZW1gCisgICAgICAgIHJl
dHVybiAoV0kuZG9ja0NvbmZpZ3VyYXRpb24gIT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlVuZG9j
a2VkKSA/IDQgOiAwOyAvLyBLZWVwIGluIHN5bmMgd2l0aCBgYm9keS5kb2NrZWQgLnRhYi1iYXIg
PiAudGFicyA+IC5pdGVtYAogICAgIH0KIAogICAgIC8vIFB1YmxpYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5jcHAKaW5kZXggNGFjZTQxM2U0MDc5ZDM1N2IyZGYyYjdlMzI2YjM5YzczNmZiZjM2ZC4u
NDBmMDNiZjY1OGJkZjQ5NWE2ZGRmYzhiNjY3NTVlZjAyZDQwN2JjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuY3BwCkBAIC0xNDMsNiArMTQzLDExIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkFwcGVh
CiAgICAgcGxhdGZvcm1TZXRGb3JjZWRBcHBlYXJhbmNlKGFwcGVhcmFuY2UpOwogfQogCit2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzdGFydFdpbmRvd0RyYWcoKQoreworICAgIHBsYXRm
b3JtU3RhcnRXaW5kb3dEcmFnKCk7Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBwbGF0Zm9ybU9wZW5Jbk5l
d1RhYih1cmwpOwpAQCAtMTk5LDYgKzIwNCw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBiCiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRGb3JjZWRBcHBlYXJhbmNlKEluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpBcHBlYXJhbmNlKSB7IH0KK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2hvd0NlcnRpZmljYXRlKGNvbnN0IENlcnRpZmljYXRl
SW5mbyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DbG9zZUZy
b250ZW5kUGFnZUFuZFdpbmRvdygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCA3NjNl
NjkxMzY0ODYxZjRmMTNlNWRiZjFhNmZiODY1NzhiNmE2Yzg1Li4yMTM3NTc1NzA5NTUyZGQzMjU5
YjU5NmE5YzJiODZjYTkwNzMyMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMTIwLDYg
KzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKICAgICB2b2lkIHNldFNoZWV0UmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIHNldEZvcmNlZEFwcGVhcmFuY2UoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkFwcGVhcmFuY2UpOworICAgIHZvaWQgc3RhcnRX
aW5kb3dEcmFnKCk7CiAgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpOwog
ICAgIHZvaWQgc2hvd0NlcnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYp
OwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
QEAgLTEzNiw2ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKICAgICB2b2lkIHBs
YXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZvaWQg
cGxhdGZvcm1TZXRGb3JjZWRBcHBlYXJhbmNlKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpBcHBlYXJhbmNlKTsKKyAgICB2b2lkIHBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCk7CiAg
ICAgdm9pZCBwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9p
ZCBwbGF0Zm9ybVNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDMzMjAz
ZWE4NDQwYWI3MDMyMmM2ZmIwZjJhZTRhNWU0NDljNmVlMDcuLjY0ZjM4MTIwMmMyNjBiMDRmMmIw
M2ExODQ3NzdmM2Q1NGRlMmEyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4KQEAgLTMzLDYgKzMzLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkgewogCiAgICAgU2V0U2hlZXRSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQogCisg
ICAgU3RhcnRXaW5kb3dEcmFnKCkKKwogICAgIE9wZW5Jbk5ld1RhYihTdHJpbmcgdXJsKQogICAg
IFNob3dDZXJ0aWZpY2F0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZv
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmNwcAppbmRleCBkNjEwODAxMjFmODk1YjRlMzE1MmM1ZDk1YmYxNzU0NzY4
OWQ4ZTRhLi5mYTgxNjY1NWUyMGY0OWFmOGFkODQ0ODNhYWFiZDRhODA0ZmMxNDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKQEAgLTM1Miw2ICszNTIsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0
U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBwbGF0Zm9ybVNldFNoZWV0UmVj
dChyZWN0KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c3RhcnRXaW5kb3dEcmFnKCkK
K3sKKyAgICBwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFdlYkluc3BlY3Rv
clByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsKICAgICBpZiAoIW1faW5zcGVjdGVkUGFn
ZSkKQEAgLTc4Niw2ICs3OTEsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1T
ZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Cit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JQYWdlVVJMKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAy
ZDExM2NiYzNlOWJiMDU2MWFiNGUxY2JiNzg5NGZjNjAxZDg0ZjcwLi5mNDJiZTRmODVkODkwZTI5
OWIyMTg4MDBiZTVjMTllZTE0MWQ4MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMTUxLDYgKzE1MSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOwogCisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKKwogICAgIGJvb2wgaXNQcm9maWxp
bmdQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2ZpbGluZ1BhZ2U7IH0KICAgICB2b2lkIHRv
Z2dsZVBhZ2VQcm9maWxpbmcoKTsKIApAQCAtMjEzLDYgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKICAgICB2b2lk
IHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0
Zm9ybVNldFNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBs
YXRmb3JtU3RhcnRXaW5kb3dEcmFnKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNhdmUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQs
IGJvb2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IGIzMzZiMWM2MWE4MGFlNTZkOTgxYzc0Y2JmY2I1ZTRkZjE0YTM3Yzgu
Ljg0YTYzMGFmYjAxMTY4MWU2ZGNkYmQzMjZhMWMxZmI3ZGFiYzkxMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTU1LDQgKzU1LDYgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVj
dG9yUHJveHkgewogICAgIFNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAK
ICAgICBTZXRTaGVldFJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCisKKyAgICBTdGFydFdp
bmRvd0RyYWcoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRl
eCAzNDQyOTUxMzMyNzM4Y2UwZWIzNzBhNzU0MWE4YmY0Y2JmNWJjNWIzLi43OGY2MWYwZjBiNjlm
MTE1OTc5MjJkZmJmY2RkM2E2OTk5NjYzMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcApAQCAtMTYxLDYgKzE2MSwxMCBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9yRnJvbnRlbmRDbGll
bgogewogfQogCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2lu
ZG93RHJhZygpCit7Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
T3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCmluZGV4IDgxZTI2YWI1ZGRiOTBjZGJmZjY1MmYzYjAxYTNiMjA2MTQ1YWNlZmEuLjhhZDky
ZWQ4NGMwYTgzOGE2MWU0MDYyNmM0YzIwOWQyYzY5M2YxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJv
eHlHdGsuY3BwCkBAIC00NjYsNiArNDY2LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdp
bmRvd0RyYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHN0YXRpYyB2b2lkIGZp
bGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKIHsKICAgICBHRmlsZSogZmlsZSA9IEdf
RklMRShzb3VyY2VPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0K
aW5kZXggZTFkMjQ4YWZhMzgxZmM3NzU3NmNlYjNhNzBjZDBhYTQzMWRkMzJiNC4uNTE0ZmQ0YTA5
MmQ3Y2ZlYjdiYTM2ODhiNWZlNDk0YjU2MGIwZDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5TWFjLm1tCkBAIC0yNDUsNiArMjQ1LDExIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2V0Rm9yY2VkQXBwZWFyYW5jZShJbnNwZWN0b3JGcm9udGVuZENs
aWVuCiAgICAgfQogfQogCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0
YXJ0V2luZG93RHJhZygpCit7CisgICAgd2ViVmlldygpLT5fcGFnZS0+c3RhcnRXaW5kb3dEcmFn
KCk7Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbkluTmV3
VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3Nw
YWNlXSBvcGVuVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0KaW5kZXggZjZkNTViMmU4NjI2MDYyMjYxNjljM2I5NmRjZDIwZjYwODU2NjI3OS4u
NmIzMWRlNTE1ZDU5N2U3NjBhNDMxZGIzMzViYTkxNTk1NGRlOTVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3Rv
clByb3h5TWFjLm1tCkBAIC03NDIsNiArNzQyLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBtX3NoZWV0
UmVjdCA9IHJlY3Q7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRX
aW5kb3dEcmFnKCkKK3sKKyAgICBbbV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3XS0+
X3BhZ2UtPnN0YXJ0V2luZG93RHJhZygpOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6
Omluc3BlY3RvclBhZ2VVUkwoKQogewogICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUg
YnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dp
bi9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKaW5kZXggYmRhY2IzNWE1N2MzYjE1MmNj
MzlhNGY2ZWVjMTQ3MjhkMzY2ZWU3ZC4uMDFmZjg2OWY2Mjk2MGFkM2JkYzEwNjk4MWM2MjI1MjZj
NjYzMGI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dp
bi9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTEz
Niw2ICsxMzYsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYgogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikg
eyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2V0Rm9yY2VkQXBwZWFyYW5jZShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6QXBwZWFyYW5jZSkgeyB9Cit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1PcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBl
YmQ3Y2YzNmJmZGI5ZDRhNDY2MjIwYzkxZTU3ZjljODFiZmJlNGU1Li5iNzQ4OTQxY2FiNTIzMGJh
NDI5MjBjMDY1NTk5Nzg3ZjQwMTBlZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApA
QCAtNDU2LDQgKzQ1Niw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW52YWxp
ZGF0ZSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggMTQ2YTE2MmQwMjBiMzcyZTczNDYxN2Jk
ZTY1ZTMzZWQwMTQ1ZDY0Ny4uNWZjYzlmODI0NGQ1YzdlZTI0ODhlYWQ3N2E3ZDc3ODM2NTlhMWUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTExNSwxMSArMTE1LDM5IEBAIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yVUk6OnNldEZvcmNlZEFwcGVhcmFuY2UoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNl
dEZvcmNlZEFwcGVhcmFuY2UoYXBwZWFyYW5jZSksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQog
Cit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdGFydFdpbmRvd0RyYWcoKQoreworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9wYWdl
LmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5k
b3dCeShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX3Bh
Z2UuY29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3Zl
KHgsIHkpOworICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZy
YW1lUmVjdCk7Cit9CisKIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gUmVt
b3RlV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSBjb25zdAog
ewogICAgIHJldHVybiBtX3BhZ2UuY29yZVBhZ2UoKS0+dXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbigpOwogfQogCitib29sIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c0RvY2tTaWRl
KERvY2tTaWRlIGRvY2tTaWRlKQoreworICAgIHN3aXRjaCAoZG9ja1NpZGUpIHsKKyAgICBjYXNl
IERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIERv
Y2tTaWRlOjpSaWdodDoKKyAgICBjYXNlIERvY2tTaWRlOjpMZWZ0OgorICAgIGNhc2UgRG9ja1Np
ZGU6OkJvdHRvbToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JV
SS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JVSS5oCmluZGV4IGNjYTk4N2JkNTIzZTJhZjk0NjE5MmUyMDU2YjYyYTI1NzM2NDg0ZTIuLjY2
N2E2NTcwNDJiOTg2OWU2YTYxY2EyODQ4ZTdjNzZlMTkzYzdlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJ
LmgKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKICAgICB2
b2lkIGNoYW5nZVNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0YXJ0V2luZG93RHJhZygpIG92ZXJyaWRlOworICAgIHZvaWQgbW92ZVdpbmRv
d0J5KGZsb2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1JlbW90ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VS
TCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzYsNiArNzgsOCBAQCBwdWJsaWM6CiAKICAgICBXZWJD
b3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKIAorICAgIGJvb2wgc3VwcG9ydHNEb2NrU2lkZShEb2Nr
U2lkZSkgb3ZlcnJpZGU7CisKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKICAgICB2b2lkIHJlb3BlbigpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJLmNwcAppbmRleCBjMWYzMzYwNGY4MGE5NDAxN2QwNDYyNDNhZWM1Y2E0NzA4YTE5MWI0
Li5jNWM1Yjc2OTMyMDc2NjMxNmQwNzkzYjlkNzUwYzU3YzlkMjU3ZjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcApA
QCAtMTM3LDYgKzEzNywxOCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgp
CiAgICAgYnJpbmdUb0Zyb250KCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2lu
ZG93RHJhZygpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93
RHJhZygpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZy
YW1lUmVjdCA9IG1fcGFnZS5jb3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAg
ZnJhbWVSZWN0Lm1vdmUoeCwgeSk7CisgICAgbV9wYWdlLmNvcmVQYWdlKCktPmNocm9tZSgpLnNl
dFdpbmRvd1JlY3QoZnJhbWVSZWN0KTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdU
b0Zyb250KCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250
KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwpAQCAtMTgzLDEwICsxOTUsMjQgQEAgV2Vi
Q29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBXZWJJbnNwZWN0b3JVSTo6dXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGkKICAgICByZXR1cm4gbV9wYWdlLmNvcmVQYWdlKCktPnVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6cmVx
dWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCitib29sIFdlYkluc3BlY3RvclVJOjpzdXBw
b3J0c0RvY2tTaWRlKERvY2tTaWRlIGRvY2tTaWRlKQoreworICAgIHN3aXRjaCAoZG9ja1NpZGUp
IHsKKyAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdo
dDoKKyAgICBjYXNlIERvY2tTaWRlOjpMZWZ0OgorICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpyZXF1ZXN0U2V0
RG9ja1NpZGUoRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIHN3aXRjaCAoc2lkZSkgeworICAgIHN3aXRjaCAo
ZG9ja1NpZGUpIHsKICAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKICAgICAgICAgd2ViUHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwogICAgICAgICBi
cmVhazsKQEAgLTIwMiwzMSArMjI4LDMxIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlcXVlc3RT
ZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQogICAgIH0KIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JV
STo6c2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldERv
Y2tTaWRlKERvY2tTaWRlIGRvY2tTaWRlKQogewotICAgIEFTQ0lJTGl0ZXJhbCBzaWRlU3RyaW5n
IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICBBU0NJSUxpdGVyYWwgZG9ja1NpZGVTdHJp
bmcgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OwogCi0gICAgc3dpdGNoIChzaWRlKSB7CisgICAg
c3dpdGNoIChkb2NrU2lkZSkgewogICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgotICAgICAg
ICBzaWRlU3RyaW5nID0gInVuZG9ja2VkIl9zOworICAgICAgICBkb2NrU2lkZVN0cmluZyA9ICJ1
bmRvY2tlZCJfczsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoK
LSAgICAgICAgc2lkZVN0cmluZyA9ICJyaWdodCJfczsKKyAgICAgICAgZG9ja1NpZGVTdHJpbmcg
PSAicmlnaHQiX3M7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBEb2NrU2lkZTo6TGVmdDoK
LSAgICAgICAgc2lkZVN0cmluZyA9ICJsZWZ0Il9zOworICAgICAgICBkb2NrU2lkZVN0cmluZyA9
ICJsZWZ0Il9zOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToK
LSAgICAgICAgc2lkZVN0cmluZyA9ICJib3R0b20iX3M7CisgICAgICAgIGRvY2tTaWRlU3RyaW5n
ID0gImJvdHRvbSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9kb2NrU2lkZSA9
IHNpZGU7CisgICAgbV9kb2NrU2lkZSA9IGRvY2tTaWRlOwogCi0gICAgbV9mcm9udGVuZEFQSURp
c3BhdGNoZXIuZGlzcGF0Y2hDb21tYW5kKCJzZXREb2NrU2lkZSJfcywgU3RyaW5nKHNpZGVTdHJp
bmcpKTsKKyAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci5kaXNwYXRjaENvbW1hbmQoInNldERv
Y2tTaWRlIl9zLCBTdHJpbmcoZG9ja1NpZGVTdHJpbmcpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JVSTo6c2V0RG9ja2luZ1VuYXZhaWxhYmxlKGJvb2wgdW5hdmFpbGFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKaW5kZXgg
MmZkODUxYjQwNjg2ZDE4OTFlMDlmMTBiOGE1OGUzZTZmZThlNjM5Ni4uYzZiODcxNThhMTM5ZjJh
NWQyZDhmNzEzZDg5MGE2YmM2OTQ2Nzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBm
cm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSBv
dmVycmlkZTsKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBvdmVycmlk
ZTsKKwogICAgIGJvb2wgaXNSZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIGJhY2tlbmRDb21tYW5kc1VSTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0cmluZygpOyB9
CkBAIC0xMTEsNiArMTE0LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6VXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKKyAgICBib29sIHN1cHBvcnRzRG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBvdmVycmlkZTsKICAgICB2b2lk
IGNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKICAgICB2b2lk
IGNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IDA3ZmVmOGFjY2M3ODAzYjMyNjdkMzY2N2Q1YWRiMjcw
ZjE0YTlkYzguLmY1MzdkOTVkMTZhYzQ4MDJkMWI0MDFkOTQ4ZjE2ZTk5ODhlYjE5OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KQEAgLTEyOSwxMSArMTI5LDEzIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkgeyB9CiB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpyZW9wZW4oKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnJlc2V0U3RhdGUoKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkFwcGVhcmFu
Y2UpIHsgfQorYm9vbCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3VwcG9ydHNEb2NrU2lk
ZShEb2NrU2lkZSkgeyByZXR1cm4gZmFsc2U7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3coKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSB7IH0KIHZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIHsg
fQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0U2hlZXRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIHsgfQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3RhcnRXaW5k
b3dEcmFnKCkgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjppbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6c2hvd0NlcnRpZmljYXRlKGNvbnN0IENlcnRpZmljYXRlSW5mbyYpIHsgfQogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKSBjb25zdCB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWM4ZTIyMDQ2MzE2NDY3NTU4MGI4YzIxNGM5N2Zk
NjdhYmYyMGU2MC4uMzBlYTI5ODA3OWZlODJjNDNhMWM4MGY0OTA0MjBlMDBmNjcwZjBhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTExNiw2ICsxMTYsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHN0YXJ0V2luZG93RHJh
ZygpIG92ZXJyaWRlOworCiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdCBv
dmVycmlkZTsKICAgICBJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlIGRlYnVnZ2FibGVUeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gSW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZTo6UGFnZTsgfTsK
ICAgICBTdHJpbmcgdGFyZ2V0UGxhdGZvcm1OYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIm1h
Y09TIl9zOyB9OwpAQCAtMTMxLDYgKzEzMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9y
Y2VkQXBwZWFyYW5jZShJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6QXBwZWFyYW5jZSkgb3ZlcnJp
ZGU7CiAKKyAgICBib29sIHN1cHBvcnRzRG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOwogICAg
IHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKSBvdmVycmlkZTsKICAgICB2b2lkIGRldGFjaFdp
bmRvdygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNWU2MjZmOTE1
N2Y1MjU2MzAyOGQwNWRkMGYyOTI4Y2M5Njk4NjM3OS4uNjZmNjY3Mjc3M2Y2ODZjOGZjNTlmYjNj
OWM5MTM1MmM5YzU1YTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMjE2LDYgKzIx
NiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpmcm9udGVuZExvYWRlZCgp
CiAgICAgc2V0QXR0YWNoZWRXaW5kb3coYXR0YWNoZWQgPyBEb2NrU2lkZTo6Qm90dG9tIDogRG9j
a1NpZGU6OlVuZG9ja2VkKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBbW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIHdp
bmRvd10gcGVyZm9ybVdpbmRvd0RyYWdXaXRoRXZlbnQ6W05TQXBwIGN1cnJlbnRFdmVudF1dOwor
fQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmxvY2FsaXplZFN0cmluZ3NV
UkwoKSBjb25zdAogewogICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsKQEAgLTI4NCw2ICsyODks
MjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0Rm9yY2VkQXBwZWFyYW5j
ZShJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6QXAKICAgICB9CiB9CiAKK2Jvb2wgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnN1cHBvcnRzRG9ja1NpZGUoRG9ja1NpZGUgZG9ja1NpZGUpCit7
CisgICAgc3dpdGNoIChkb2NrU2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgor
ICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBj
YXNlIERvY2tTaWRlOjpSaWdodDoKKyAgICBjYXNlIERvY2tTaWRlOjpMZWZ0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hX
aW5kb3coRG9ja1NpZGUpCiB7CiAgICAgaWYgKFttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlci5n
ZXQoKSBhdHRhY2hlZF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBiNjQ3MGFmZTgx
OGQwZDg0MGVlNzE4OTE3MjdjYjI4OWQ1ZmQ5ODMwLi42YTQ1MDAxYmUxMjEwNGMwMTI1NGEwYWNi
YmVmY2M0ZDkwZTViMGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTMyMCw2ICsz
MjAsMjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkK
ICAgICBzaG93V2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsKIH0KIAorYm9vbCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6c3VwcG9ydHNEb2NrU2lkZShEb2NrU2lkZSBkb2NrU2lkZSkK
K3sKKyAgICBzd2l0Y2ggKGRvY2tTaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6
CisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgIGNhc2UgRG9ja1NpZGU6OkxlZnQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIHsKICAgICBpZiAoIW1fYXR0YWNo
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDkzMWFjZWZkODhhNTQ3NDZlNGI3MzE5ZTMz
Y2ExZDkzNmFmYTI3NjUuLjJhODg0OWU2MDIxYTkwOTJiNzAxZjA4Mjk4MGEyYzgyOTkxNzBmYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRGb3JjZWRBcHBlYXJhbmNlKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpBcHBl
YXJhbmNlKSBvdmVycmlkZTsKIAorICAgIGJvb2wgc3VwcG9ydHNEb2NrU2lkZShEb2NrU2lkZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlk
ZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>