<?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>31888</bug_id>
          
          <creation_ts>2009-11-25 13:44:59 -0800</creation_ts>
          <short_desc>Web Inspector: Split InspectorBackend into three parts: backend, injected script host and frontend host.</short_desc>
          <delta_ts>2009-12-01 00:07:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>166547</commentid>
    <comment_count>0</comment_count>
      <attachid>43869</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-25 13:44:59 -0800</bug_when>
    <thetext>Created attachment 43869
[DIAGRAM] Proposed design.

This is going to be a large refactoring that would split InspectorBackend into three IDLs: one for the frontend, one for the injected script and one for the frontend host. See diagram attached:

Not changed:
- InspectorController exposes public API and wires others together
- InspectorFrontend determines the interface to the frontend. It is semi-serializes all the calls into JSON-stringifiable objects
- The calls made via InspectorFrontend are dispatched by the WebInspector and delegated to appropriate frontend objects
- InspectorController seeds InspectorBackend.idl-based wrapper into the fron-end

New:
- InspectorController global object gets renamed to InspectorBackend in the front-end
- InspectorController seeds another InjectedScriptHost.idl-based wrapper into the InjectedScript context. This idl has methods that are used from within injected script only. Most of them are IDL [Custom] since they operate Nodes, Databases, etc. (this is new)
- InspectorController seeds yet another InspectorFrontendHost.idl-based wrapper into  the front-end that has methods not related to inspected page, but that are going straight to the inspector client (attach, detach, setheight, addSourceToFrame, searchSourceView, etc).
- All calls to InspectorBackend in front-end are going through the semi-serialization into JSON-stringifiable objects.
- Front-end&apos;s InspectorBackend object has methods that will get either to InspectorBackend wrapper or into InjectedScript on the inspected page. So that there is single interface to talk to backend. Clients decide whether they implement backend code as C++ in InspectorBackend or in JavaScript in InjectedScript depending on what fits better.

Profit:
- This is a nice first step towards running InjectedScript in its context.
- InspectorBackend loses all the [Custom] methods, they get into InjectedScriptHost
- Interaction between back-end and front-end is clear and serializable. There is no problem in putting socket in between.
- Extracting InspectorFrontendHost allows running self-contained front-end that is capable of showing sources in frames, etc. on another machine
- And many nice internal cleanups such as highlightDOMNode that does not need to be [Custom] for a while already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166589</commentid>
    <comment_count>1</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-25 18:04:28 -0800</bug_when>
    <thetext>This looks good to me. Should WebInspector.InspectorBackend just be WebInspector.Backend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166761</commentid>
    <comment_count>2</comment_count>
      <attachid>43927</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-26 11:16:06 -0800</bug_when>
    <thetext>Created attachment 43927
[PATCH] The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166896</commentid>
    <comment_count>3</comment_count>
      <attachid>43952</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-27 07:09:19 -0800</bug_when>
    <thetext>Created attachment 43952
[PATCH] Now splits IDL into 3 parts as in design proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166903</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-27 08:38:40 -0800</bug_when>
    <thetext>Since the patch is fairly large, I uploaded it to http://codereview.appspot.com/162045.

Note that it won&apos;t show side-by-side diff for large files, so when you iterate over the files you sometimes need to get back to side-by-side explicitly via choosing it in top right corner. You can leave comments in place given you have google account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167534</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-01 00:07:43 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/inspector/front-end/TestController.js =&gt; WebCore/inspector/InjectedScriptHost.idl
	C	WebCore/inspector/front-end/Database.js =&gt; WebCore/inspector/InspectorFrontendHost.h
	C	WebCore/inspector/front-end/TestController.js =&gt; WebCore/inspector/InspectorFrontendHost.idl
	C	WebCore/inspector/front-end/InspectorControllerStub.js =&gt; WebCore/inspector/front-end/InspectorBackendStub.js
	C	WebCore/inspector/front-end/TestController.js =&gt; WebCore/inspector/front-end/InspectorFrontendHostStub.js
	D	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	D	WebCore/bindings/v8/custom/V8InspectorBackendCustom.cpp
	M	WebCore/ChangeLog
	M	WebCore/DerivedSources.make
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/WebCoreSources.bkl
	M	WebCore/bindings/js/JSBindingsAllInOne.cpp
	A	WebCore/bindings/js/JSInjectedScriptHostCustom.cpp
	A	WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp
	M	WebCore/bindings/js/ScriptObject.cpp
	M	WebCore/bindings/js/ScriptObject.h
	M	WebCore/bindings/v8/DOMObjectsInclude.h
	M	WebCore/bindings/v8/DerivedSourcesAllInOne.cpp
	M	WebCore/bindings/v8/ScriptObject.cpp
	M	WebCore/bindings/v8/ScriptObject.h
	M	WebCore/bindings/v8/V8Index.cpp
	M	WebCore/bindings/v8/V8Index.h
	M	WebCore/bindings/v8/custom/V8CustomBinding.h
	A	WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp
	A	WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
	A	WebCore/inspector/InjectedScriptHost.cpp
	A	WebCore/inspector/InjectedScriptHost.h
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	A	WebCore/inspector/InspectorFrontendHost.cpp
	M	WebCore/inspector/front-end/Breakpoint.js
	M	WebCore/inspector/front-end/BreakpointsSidebarPane.js
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/CookieItemsView.js
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/DOMStorage.js
	M	WebCore/inspector/front-end/Database.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/EventListenersSidebarPane.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/InjectedScriptAccess.js
	M	WebCore/inspector/front-end/InspectorControllerStub.js
	M	WebCore/inspector/front-end/ProfileView.js
	M	WebCore/inspector/front-end/ProfilesPanel.js
	M	WebCore/inspector/front-end/ResourcesPanel.js
	M	WebCore/inspector/front-end/ScriptView.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
	M	WebCore/inspector/front-end/SourceView.js
	M	WebCore/inspector/front-end/StylesSidebarPane.js
	M	WebCore/inspector/front-end/TestController.js
	M	WebCore/inspector/front-end/TimelinePanel.js
	M	WebCore/inspector/front-end/WatchExpressionsSidebarPane.js
	M	WebCore/inspector/front-end/WebKit.qrc
	M	WebCore/inspector/front-end/inspector.html
	M	WebCore/inspector/front-end/inspector.js
Committed r51528</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>43869</attachid>
            <date>2009-11-25 13:44:59 -0800</date>
            <delta_ts>2009-11-25 13:44:59 -0800</delta_ts>
            <desc>[DIAGRAM] Proposed design.</desc>
            <filename>Picture 22.png</filename>
            <type>image/png</type>
            <size>83381</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43927</attachid>
            <date>2009-11-26 11:16:06 -0800</date>
            <delta_ts>2009-11-27 07:09:19 -0800</delta_ts>
            <desc>[PATCH] The patch</desc>
            <filename>split</filename>
            <type>text/plain</type>
            <size>143171</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGI1NGNjZS4uNTA0ODY1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMzcgQEAKKzIwMDktMTEtMjYgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBkaGNwLTE3Mi0yOC0xNzQtMjIwLnNwYi5jb3JwLmdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFNwbGl0IEluc3BlY3RvckJhY2tlbmQgaW50byBiYWNrZW5kIGFuZAorICAgICAgICBp
bmplY3RlZCBzY3JpcHQgaG9zdC4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnNldCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1
ZGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4SW5kZXguaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19G
VU5DX0RFQ0wpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckJhY2tl
bmRDdXN0b20uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6SW5qZWN0ZWRT
Y3JpcHRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6fkluamVj
dGVkU2NyaXB0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmNv
cHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklk
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6d3JhcE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnVud3JhcE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjphZGROb2Rlc1RvU2VhcmNo
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Y3VycmVudENh
bGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNl
Rm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpzZWxlY3REYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnNlbGVjdERPTVN0
b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpyZXBvcnREaWRE
aXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdEhvc3Q6Omluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6
ZGlzY29ubmVjdENvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpoaWdobGlnaHRET01Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OmhpZGVET01Ob2RlSGlnaGxp
Z2h0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6On5JbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5qZWN0ZWRTY3JpcHRIb3N0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGNvbmRpdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLmFkZEJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLnJlbW92
ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBh
bmUucHJvdG90eXBlLl9icmVha3BvaW50RW5hYmxlQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlVmlldy5wcm90b3R5cGUuY2xlYXJNZXNzYWdlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Db29raWVJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2ll
SXRlbXNWaWV3LnByb3RvdHlwZS5fZGVsZXRlQ29va2llQ2FsbGJhY2spOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
QWdlbnQucHJvdG90eXBlLmdldENoaWxkTm9kZXNBc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NQWdlbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZUFzeW5jKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlQXN5bmMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5zZXRUZXh0Tm9kZVZhbHVlQXN5bmMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0Q29va2llc0FzeW5jKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVycy5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGVB
c3luYyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLmdldEVudHJpZXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnNldEl0ZW0pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnJlbW92ZUl0ZW0pOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGF0YWJhc2UucHJvdG90eXBlLmdldFRhYmxlTmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsLnRoaXMudHJlZU91dGxpbmUuZm9jdXNlZE5vZGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuaGFuZGxlQ29weUV2ZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fbm9kZVNlYXJjaEJ1dHRv
bkNsaWNrZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3Rv
dHlwZS5zZXQgZm9jdXNlZERPTU5vZGUucmVzdG9yZUhpZ2hsaWdodFRvSG92ZXJlZE5vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLnNldCBm
b2N1c2VkRE9NTm9kZSk6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0Ll9l
dmFsdWF0ZUFuZFdyYXApOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQucGVyZm9ybVNlYXJjaC5h
ZGROb2Rlc1RvUmVzdWx0cyk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5nZXRDYWxsRnJhbWVz
KToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0Ll9jYWxsRnJhbWVGb3JJZCk6CisgICAgICAgIChJ
bmplY3RlZFNjcmlwdC5fY2xlYXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoSW5qZWN0ZWRT
Y3JpcHQuX2luc3BlY3RPYmplY3QpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQuX2NvcHkpOgor
ICAgICAgICAoSW5qZWN0ZWRTY3JpcHQuX2Vuc3VyZUNvbW1hbmRMaW5lQVBJSW5zdGFsbGVkKToK
KyAgICAgICAgKEluamVjdGVkU2NyaXB0Ll93aW5kb3cpOgorICAgICAgICAoSW5qZWN0ZWRTY3Jp
cHQuX25vZGVGb3JJZCk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5fb2JqZWN0Rm9ySWQpOgor
ICAgICAgICAoSW5qZWN0ZWRTY3JpcHQucHVzaE5vZGVUb0Zyb250ZW5kKToKKyAgICAgICAgKElu
amVjdGVkU2NyaXB0LmV4ZWN1dGVTcWwpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQuZXhlY3V0
ZVNxbC5lcnJvckNhbGxiYWNrKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0LmV4ZWN1dGVTcWwu
cXVlcnlUcmFuc2FjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxs
SGFuZGxlci5JbmplY3RlZFNjcmlwdEFjY2Vzcy5tZXRob2ROYW1lKToKKyAgICAgICAgKEluamVj
dGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczogQWRkZWQuCisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5z
cGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLndyYXBDYWxsYmFjayk6CisgICAgICAgICguV2Vi
SW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5pc1dpbmRvd1Zpc2libGUp
OgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUu
cGxhdGZvcm0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5w
cm90b3R5cGUucG9ydCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRT
dHViLnByb3RvdHlwZS5jbG9zZVdpbmRvdyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5hdHRhY2gpOgorICAgICAgICAoLldlYkluc3BlY3Rv
ci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuZGV0YWNoKToKKyAgICAgICAgKC5XZWJJ
bnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnN0b3JlTGFzdEFjdGl2ZVBh
bmVsKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90
eXBlLmNsZWFyTWVzc2FnZXMpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNr
ZW5kU3R1Yi5wcm90b3R5cGUuc2VhcmNoaW5nRm9yTm9kZSk6CisgICAgICAgICguV2ViSW5zcGVj
dG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5zZWFyY2gpOgorICAgICAgICAoLldl
Ykluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUudG9nZ2xlTm9kZVNlYXJj
aCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlw
ZS5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5tb3ZlQnlVbnJlc3RyaWN0ZWQpOgorICAgICAgICAo
LldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuYWRkUmVzb3VyY2VT
b3VyY2VUb0ZyYW1lKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0
dWIucHJvdG90eXBlLmFkZFNvdXJjZVRvRnJhbWUpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5J
bnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuZ2V0UmVzb3VyY2VEb2N1bWVudE5vZGUpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuaGln
aGxpZ2h0RE9NTm9kZSk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRT
dHViLnByb3RvdHlwZS5oaWRlRE9NTm9kZUhpZ2hsaWdodCk6CisgICAgICAgICguV2ViSW5zcGVj
dG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5pbnNwZWN0ZWRXaW5kb3cpOgorICAg
ICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUubG9hZGVk
KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBl
LmxvY2FsaXplZFN0cmluZ3NVUkwpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JC
YWNrZW5kU3R1Yi5wcm90b3R5cGUud2luZG93VW5sb2FkaW5nKToKKyAgICAgICAgKC5XZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLmhpZGRlblBhbmVscyk6CisgICAg
ICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5kZWJ1Z2dl
ckVuYWJsZWQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5w
cm90b3R5cGUuZW5hYmxlUmVzb3VyY2VUcmFja2luZyk6CisgICAgICAgICguV2ViSW5zcGVjdG9y
Lkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyk6
CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5y
ZXNvdXJjZVRyYWNraW5nRW5hYmxlZCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3Rv
ckJhY2tlbmRTdHViLnByb3RvdHlwZS5lbmFibGVEZWJ1Z2dlcik6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5kaXNhYmxlRGVidWdnZXIpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuYWRk
QnJlYWtwb2ludCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHVi
LnByb3RvdHlwZS5yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5z
cGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnVwZGF0ZUJyZWFrcG9pbnQpOgorICAgICAgICAo
LldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUucGF1c2VJbkRlYnVn
Z2VyKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90
eXBlLnBhdXNlT25FeGNlcHRpb25zKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9y
QmFja2VuZFN0dWIucHJvdG90eXBlLnNldFBhdXNlT25FeGNlcHRpb25zKToKKyAgICAgICAgKC5X
ZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnJlc3VtZURlYnVnZ2Vy
KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBl
LnByb2ZpbGVyRW5hYmxlZCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tl
bmRTdHViLnByb3RvdHlwZS5lbmFibGVQcm9maWxlcik6CisgICAgICAgICguV2ViSW5zcGVjdG9y
Lkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5kaXNhYmxlUHJvZmlsZXIpOgorICAgICAg
ICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuc3RhcnRQcm9m
aWxpbmcpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90
b3R5cGUuc3RvcFByb2ZpbGluZyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJh
Y2tlbmRTdHViLnByb3RvdHlwZS5nZXRQcm9maWxlSGVhZGVycyk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5nZXRQcm9maWxlKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnRha2VIZWFw
U25hcHNob3QpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5w
cm90b3R5cGUuZGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5z
cGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnN0ZXBJbnRvU3RhdGVtZW50SW5EZWJ1Z2dlcik6
CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5z
dGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuc3RlcE92ZXJTdGF0ZW1lbnRJbkRlYnVnZ2VyKToK
KyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNl
dFNldHRpbmcpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5w
cm90b3R5cGUuZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0
b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnJlbGVhc2VXcmFwcGVyT2JqZWN0R3Jv
dXApOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5
cGUuc2V0dGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JDb250
cm9sbGVyU3R1Yi5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9uQ2xpY2tlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl91cGRhdGVJbnRlcmZhY2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9lbmFibGVQcm9maWxp
bmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl90b2dn
bGVQcm9maWxpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnJl
c2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3Rv
Z2dsZUxhcmdlclJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlLl9lbmFibGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZVJlc291cmNlVHJhY2tpbmcpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRWaWV3LnByb3RvdHlwZS5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5hZGRTY3JpcHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuYXR0YWNoRGVidWdnZXJXaGVuU2hv
d24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVzZXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuY2FuU2hvd1Jl
c291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9z
aG93U2NyaXB0T3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZVBhdXNlT25FeGNlcHRpb25zQnV0dG9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl91cGRhdGVEZWJ1
Z2dlckJ1dHRvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUuX2VuYWJsZURlYnVnZ2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZS5fdG9nZ2xlRGVidWdnaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlLl90b2dnbGVQYXVzZU9uRXhjZXB0aW9ucyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdG9nZ2xlUGF1c2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3N0ZXBPdmVyQ2xpY2tlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fc3RlcEludG9D
bGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9z
dGVwT3V0Q2xpY2tlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnNldHVwU291
cmNlRnJhbWVJZk5lZWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90
b3R5cGUucGVyZm9ybVNlYXJjaC5maW5kU2VhcmNoTWF0Y2hlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NoYW5nZUNvbG9yRm9ybWF0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlwZS5ub3RpZnlEb25lKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZVRpbWVsaW5lQnV0dG9uQ2xp
Y2tlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lk
ZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rp
b24ucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNz
aW9uc1NlY3Rpb24ucHJvdG90eXBlLmxvYWRTYXZlZEV4cHJlc3Npb25zKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90b3R5cGUuc2F2ZUV4cHJlc3Np
b25zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5wZW5kaW5n
RGlzcGF0Y2hlcy4wLmdldCBwbGF0Zm9ybSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZ2V0IHBv
cnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnNldCBjdXJyZW50UGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLl9jcmVhdGVQYW5lbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9sb2Fk
UHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnNldCBhdHRhY2hlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAod2luZG93TG9hZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci53aW5kb3dVbmxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNsb3NlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci50b29sYmFyRHJhZyk6CisKIDIwMDktMTEtMjYgIEFudG9uIE11
aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDNkNzYzNmYuLjVmY2U3OWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTIwMCw2ICsyMDAsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBIVE1MVmlkZW9FbGVt
ZW50IFwKICAgICBIaXN0b3J5IFwKICAgICBJbWFnZURhdGEgXAorICAgIEluamVjdGVkU2NyaXB0
SG9zdCBcCiAgICAgSW5zcGVjdG9yQmFja2VuZCBcCiAgICAgS2V5Ym9hcmRFdmVudCBcCiAgICAg
TG9jYXRpb24gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggYWY0OTNjMC4uMGMzODZiZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDYsNiAr
MjQ2LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5p
ZGwgXAogCVdlYkNvcmUvaHRtbC9Wb2lkQ2FsbGJhY2suaWRsIFwKIAlXZWJDb3JlL2luc3BlY3Rv
ci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmlkbCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwg
XAogCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKIAlXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCkBAIC0zOTgsNiArMzk5LDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1
Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmggXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmggXApAQCAtMTE2OSw2ICsxMTcxLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2ljdS91bmljb2RlL3V2ZXJzaW9uLmggXAogCVdlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuaCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmggXAogCVdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMjIyNWRlZS4uYzlmYmFlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE3OSw2ICsxNzksNyBA
QAogICAgICAgICAgICAgJ2h0bWwvVGltZVJhbmdlcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
VmFsaWRpdHlTdGF0ZS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVm9pZENhbGxiYWNrLmlkbCcs
CisgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsJywKICAgICAgICAgICAgICdsb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwnLApAQCAtNTIyLDYgKzUyMyw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCcsCkBAIC02
OTgsNiArNzAwLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2Vs
ZWN0RWxlbWVudENvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckJhY2tlbmRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29u
c3RydWN0b3IuY3BwJywKQEAgLTE1MjAsNiArMTUyMyw4IEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL0luc3BlY3RvckNsaWVudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCcsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAnLApAQCAtMzYzNCw3ICszNjM5LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvSW1hZ2VWaWV3LmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0lu
c3BlY3RvckNvbnRyb2xsZXJTdHViLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0luamVjdGVkU2NyaXB0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qcycsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBhNjA0YzBjLi5hOTE3ODgzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTQ2Niw2ICs0
NjYsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIGh0bWwvVGltZVJhbmdlcy5pZGwgXAogICAg
IGh0bWwvVmFsaWRpdHlTdGF0ZS5pZGwgXAogICAgIGh0bWwvVm9pZENhbGxiYWNrLmlkbCBcCisg
ICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgXAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbCBcCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRs
IFwKICAgICBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwgXApAQCAtNzE5
LDYgKzcyMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3Bw
IFwKICAgICBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNJ
bnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNJbnNwZWN0b3JC
YWNrZW5kQ3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dy
YXBwZXIuY3BwIFwKQEAgLTEwNzUsNiArMTA3Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwv
UHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1ZhbGlkaXR5U3RhdGUuY3BwIFwKICAgICBp
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIFwKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIFwKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcCBcCkBAIC0xNzU3LDYgKzE3NjAsNyBAQCBIRUFERVJTICs9
IFwKICAgICBodG1sL1RpbWVSYW5nZXMuaCBcCiAgICAgaHRtbC9WYWxpZGl0eVN0YXRlLmggXAog
ICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggYmU2NTgzNi4uNTljMWNmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC03NzMxLDcgKzc3MzEsNyBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0J
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTSW5zcGVjdG9yQmFja2VuZC5jcHAiDQorCQkJCVJlbGF0aXZlUGF0aD0i
JChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQog
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC03NzgzLDcgKzc3ODMsNyBAQAogCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0luc3BlY3RvckJhY2tlbmQuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJbmplY3RlZFNjcmlwdEhv
c3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KQEAgLTM3Mjk4LDYgKzM3Mjk4
LDU4IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xKU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAiDQorCQkJ
CQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIN
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wN
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0K
KwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4N
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQor
CQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0K
KwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0luc3BlY3Rv
ckJhY2tlbmRDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpA
QCAtNDIzMTksNiArNDIzNzEsMTMgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluamVjdGVkU2NyaXB0SG9zdC5jcHAiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcSW5qZWN0ZWRTY3JpcHRIb3N0LmgiDQorCQkJCT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kLmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCkBAIC00MjU0Niw3ICs0MjYwNSw3IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXElu
c3BlY3RvckNvbnRyb2xsZXJTdHViLmpzIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXEluc3BlY3RvckJhY2tlbmRTdHViLmpzIg0KIAkJCQkJPg0KIAkJCQk8L0Zp
bGU+DQogCQkJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA5ODFiMzViLi4xNGUzOWQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTIyOSw2ICsxMjI5LDEyIEBACiAJCTc5QUM5MjE5MTA5OTQ1Qzgw
MDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QUM5MjE3MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBv
c2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICov
OyB9OwogCQk3OUYyRjVBMjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUYxMDkx
OTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKKwkJN0EwRTc2RDUxMEJG
MDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NkQ0MTBCRjA1MDcwMEEw
Mjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgKi87IH07CisJCTdBMEU3NkRB
MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzZEODEwQkYwNTk4MDBBMDI3
NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovOyB9OworCQk3QTBFNzZEQjEwQkYwNTk4
MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NkQ5MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0lu
amVjdGVkU2NyaXB0SG9zdC5oICovOyB9OworCQk3QTBFNzZGOTEwQkYwOEVEMDBBMDI3NkUgLyog
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhv
c3QuY3BwICovOyB9OworCQk3QTBFNzZGQTEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTBFNzZGNzEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07CisJ
CTdBMEU3NkZCMTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaWRsIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzZGODEwQkYw
OEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLzsgfTsKIAkJN0ExRTg4RjUx
MDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBTY3Jp
cHRBcnJheS5jcHAgKi87IH07CiAJCTdBMUU4OEY2MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Ex
RTg4RjQxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFB
IC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01B
Z2VudC5jcHAgKi87IH07CkBAIC02NTUwLDYgKzY1NTYsMTIgQEAKIAkJNzlGMkY1OUUxMDkxOTM5
QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29tcG9zaXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2l0aW9uRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGMkY1QTAxMDkxOTM5QTAwMEQ4N0NCIC8qIENv
bXBvc2l0aW9uRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENvbXBvc2l0aW9uRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTBFNzZENDEwQkYwNTA3MDBB
MDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTBFNzZEODEwQkYwNTk4MDBBMDI3NkUgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QTBFNzZEOTEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EwRTc2RjYxMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QTBFNzZGNzEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRT
Y3JpcHRIb3N0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbmplY3RlZFNjcmlwdEhvc3Qu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTFFODhGMzEwMUNDMzg0MDAwQzRE
RjUgLyogU2NyaXB0QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2NyaXB0QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTFFODhG
NDEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0EyNDU4NzkxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRPTUFnZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTkyLDcgKzEwMjA0LDcgQEAKIAkJCQkxOEM1
RkNBMzEwQTM5OTFGMDA0ODQzOEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeS5jcHAg
Ki8sCiAJCQkJMThDNUZDQTQxMEEzOTkxRjAwNDg0MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdFJl
cG9zaXRvcnkuaCAqLywKIAkJCSk7Ci0JCQlwYXRoID0gIlNoYXJlZFNjcmlwdCI7CisJCQlwYXRo
ID0gU2hhcmVkU2NyaXB0OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJMUEy
RTZFNTYwQ0M1NTFFMDAwNEEyMDYyIC8qIHNxbCAqLyA9IHsKQEAgLTEwNDIwLDYgKzEwNDMyLDgg
QEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0EwRTc2RDgxMEJGMDU5ODAwQTAy
NzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLywKKwkJCQk3QTBFNzZEOTEwQkYwNTk4
MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk0MUYwNjBDQjBGNUVF
QjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmNwcCAqLywKIAkJCQk0MUYwNjBDQzBG
NUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmggKi8sCiAJCQkJMUM1RkFFQ0Yw
RENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCkBAIC0xMDQz
NCw2ICsxMDQ0OCw5IEBACiAJCQkJMUM4MUI5NTkwRTk3MzMwODAwMjY2RTA3IC8qIGZyb250LWVu
ZCAqLywKIAkJCQk0MUYwNjE4RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3Bw
ICovLAogCQkJCTQxRjA2MThDMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oICov
LAorCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
ICovLAorCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
aCAqLywKKwkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmlkbCAqLywKIAkJCQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2Vu
ZC5jcHAgKi8sCiAJCQkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tl
bmQuaCAqLywKIAkJCQk3QTc0RUNCNjEwMTgzOTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2Vu
ZC5pZGwgKi8sCkBAIC0xNDUzMCw2ICsxNDU0Nyw3IEBACiAJCQkJQkMxN0Y5NjUwQjY0RUJCODAw
NEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUFCNENCNEVB
MEI4QkRBM0QwMDlGNDBCMCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJ
QTdEMDMxOEQwRTkzNTQwMzAwRTI0QUNEIC8qIEpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCAqLywKKwkJ
CQk3QTBFNzZENDEwQkYwNTA3MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwICovLAogCQkJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJhY2tl
bmRDdXN0b20uY3BwICovLAogCQkJCTFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwICovLAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJG
MiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTE4MTc5LDYgKzE4MTk3LDggQEAKIAkJ
CQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QTBFNzZEQjEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBMEU3NkZBMTBCRjA4RUQwMEEwMjc2
RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTgyODIsNiArMTgz
MDIsNyBAQAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMThDNUZDQTcxMEEzOTkxRjAwNDg0MzhEIC8qIFdlYktp
dFNoYXJlZFNjcmlwdC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTE4QzVGQ0I5MTBBM0M2RjIw
MDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
N0EwRTc2RkIxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5pZGwgaW4gUmVz
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjAzMjksNiArMjAzNTAsOSBAQAogCQkJCTE4QzVGQ0I3MTBBM0M2RjIw
MDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
QjRDRDI1MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0EwRTc2RDUxMEJGMDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBMEU3NkRBMTBCRjA1
OTgwMEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QTBFNzZGOTEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wgYi9XZWJD
b3JlL1dlYkNvcmVTb3VyY2VzLmJrbAppbmRleCAyMzZlMmUyLi4xYTdlYmVjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAorKysgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2Vz
LmJrbApAQCAtMTExLDYgKzExMSw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBm
aWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0
cnVjdG9yLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9K
U0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAKQEAgLTM2Niw2ICszNjcsNyBAQCBUaGlzIGZp
bGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MVUxpc3RFbGVtZW50LmNwcAogICAg
ICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSGlzdG9yeS5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlRGF0YS5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0luc3BlY3RvckJhY2tlbmQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTY4Miw2ICs2ODQsNyBAQCBUaGlzIGZpbGUg
Y29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAKICAg
ICA8c2V0IGFwcGVuZD0iMSIgdmFyPSJXRUJDT1JFX1NPVVJDRVNfSU5TUEVDVE9SIj4KICAgICAg
ICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorICAgICAgICBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAogICAgICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAK
ICAgICAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCiAgICAgICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAppbmRleCBmMDgzMDNhLi45Y2MyN2QxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5j
bHVkZSAiSlNIaXN0b3J5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0ltYWdlQ29uc3RydWN0b3Iu
Y3BwIgogI2luY2x1ZGUgIkpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0luamVj
dGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNJbnNwZWN0ZWRPYmplY3RXcmFw
cGVyLmNwcCIKICNpbmNsdWRlICJKU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAKaW5kZXggNDM5ZjUzMi4uZTU4MWZj
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0
b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9t
LmNwcApAQCAtMzUsNTMgKzM1LDI0IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5j
bHVkZSAiQ29uc29sZS5oIgotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSNpbmNsdWRlICJEYXRhYmFz
ZS5oIgotI2luY2x1ZGUgIkpTRGF0YWJhc2UuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkpTRE9NV2lu
ZG93LmgiCi0jaW5jbHVkZSAiSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmgiCi0jaW5jbHVkZSAi
SlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNs
dWRlICJKU1JhbmdlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNp
ZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0jaW5jbHVkZSAiU3RvcmFnZS5oIgotI2luY2x1ZGUgIkpT
U3RvcmFnZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgi
Ci0jaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1KU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6aGlnaGxpZ2h0RE9N
Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQotewot
ICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
Ci0gICAgaW1wbCgpLT5oaWdobGlnaHQoYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpKTsKLSAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnNl
YXJjaChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFy
Z3Muc2l6ZSgpIDwgMikKQEAgLTExOCwzNCArODksNiBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFj
a2VuZDo6c2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKICAgICBy
ZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgcmVzdWx0KTsKIH0KIAotI2lmIEVOQUJMRShEQVRB
QkFTRSkKLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpkYXRhYmFzZUZvcklkKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsKLSAgICBpZiAoYXJncy5zaXplKCkgPCAx
KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGljID0gaW1wbCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpYykKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBp
bXBsKCktPmRhdGFiYXNlRm9ySWQoYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpKTsKLSAgICBpZiAo
IWRhdGFiYXNlKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAvLyBDb3VsZCB1
c2UgY3VycmVudFdvcmxkKGV4ZWMpIC4uLiBidXQgd2hpY2ggZXhlYyEgIFRoZSBmb2xsb3dpbmcg
bWl4ZWQgdXNlIG9mIGV4ZWMgJiBpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSBzY2FyZXMg
bWUhCi0gICAgSlNET01XaW5kb3cqIGluc3BlY3RlZFdpbmRvdyA9IHRvSlNET01XaW5kb3coaWMt
Pmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCksIGRlYnVnZ2VyV29ybGQoKSk7Ci0gICAgcmV0
dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChpbnNwZWN0ZWRXaW5kb3ctPmdsb2Jh
bEV4ZWMoKSwgdG9KUyhleGVjLCBkYXRhYmFzZSkpOwotfQotI2VuZGlmCi0KLUpTVmFsdWUgSlNJ
bnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0ZWRXaW5kb3coRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlz
dCYpCi17Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKLSAgICBpZiAoIWljKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LSAgICBKU0RPTVdpbmRvdyogaW5zcGVjdGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhpYy0+aW5z
cGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3JsZCgpKTsKLSAgICByZXR1cm4g
SlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFwKGluc3BlY3RlZFdpbmRvdy0+Z2xvYmFsRXhl
YygpLCBpbnNwZWN0ZWRXaW5kb3cpOwotfQotCiBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6
c2V0dGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYg
KGFyZ3Muc2l6ZSgpIDwgMSkKQEAgLTIyOCwxMTkgKzE3MSw2IEBAIEpTVmFsdWUgSlNJbnNwZWN0
b3JCYWNrZW5kOjpzZXRTZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cykKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotSlNWYWx1ZSBKU0luc3BlY3RvckJh
Y2tlbmQ6OndyYXBDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Ci17Ci0gICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0KLSAgICByZXR1cm4gSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXI6OndyYXAoZXhlYywg
YXJncy5hdCgwKSk7Ci19Ci0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLQotSlNW
YWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmN1cnJlbnRDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JikKLXsKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBpbXBsKCktPmN1cnJlbnRDYWxsRnJhbWUoKTsKLSAgICBpZiAoIWNhbGxGcmFtZSB8fCAhY2Fs
bEZyYW1lLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAg
Ly8gRklYTUU6IEkgYW0gbm90IHN1cmUgaWYgdGhpcyBpcyBhY3R1YWxseSBuZWVkZWQuIENhbiB3
ZSBqdXN0IHVzZSBleGVjPwotICAgIEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYyA9IGNhbGxGcmFtZS0+
c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLQotICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0
V3JhcHBlcjo6d3JhcChnbG9iYWxFeGVjLCB0b0pTKGV4ZWMsIGNhbGxGcmFtZSkpOwotfQotCi0j
ZW5kaWYKLQotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6Om5vZGVGb3JJZChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBOb2RlKiBub2RlID0gaW1wbCgp
LT5ub2RlRm9ySWQoYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpKTsKLSAgICBpZiAoIW5vZGUpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlciog
aWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWljKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0gICAgSlNET01XaW5kb3cqIGluc3BlY3RlZFdpbmRvdyA9IHRvSlNET01XaW5k
b3coaWMtPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCksIGRlYnVnZ2VyV29ybGQoKSk7Ci0g
ICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChpbnNwZWN0ZWRXaW5kb3ct
Pmdsb2JhbEV4ZWMoKSwgdG9KUyhleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90
eXBlKGluc3BlY3RlZFdpbmRvdy0+Z2xvYmFsRXhlYygpKSwgbm9kZSkpOwotfQotCi1KU1ZhbHVl
IEpTSW5zcGVjdG9yQmFja2VuZDo6d3JhcE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCi17Ci0gICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikKLSAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICByZXR1cm4gaW1wbCgpLT53cmFwT2JqZWN0KFNjcmlwdFZh
bHVlKGFyZ3MuYXQoMCkpLCBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpKS5qc1ZhbHVlKCk7Ci19
Ci0KLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjp1bndyYXBPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJuIGltcGwoKS0+dW53cmFw
T2JqZWN0KGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpLmpzVmFsdWUoKTsKLX0KLQotSlNWYWx1
ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmIChhcmdzLnNpemUoKSA8IDIpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSlNRdWFyYW50aW5lZE9iamVjdFdy
YXBwZXIqIHdyYXBwZXIgPSBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6YXNXcmFwcGVyKGFy
Z3MuYXQoMCkpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0KLSAgICBOb2RlKiBub2RlID0gdG9Ob2RlKHdyYXBwZXItPnVud3JhcHBlZE9iamVjdCgp
KTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAg
Ym9vbCBzZWxlY3RJblVJID0gYXJncy5hdCgxKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgcmV0dXJu
IGpzTnVtYmVyKGV4ZWMsIGltcGwoKS0+cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2RlLCBzZWxl
Y3RJblVJKSk7Ci19Ci0KLSNpZiBFTkFCTEUoREFUQUJBU0UpCi1KU1ZhbHVlIEpTSW5zcGVjdG9y
QmFja2VuZDo6c2VsZWN0RGF0YWJhc2UoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYgYXJncykK
LXsKLSAgICBpZiAoYXJncy5zaXplKCkgPCAxKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLQotICAgIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gSlNRdWFyYW50
aW5lZE9iamVjdFdyYXBwZXI6OmFzV3JhcHBlcihhcmdzLmF0KDApKTsKLSAgICBpZiAoIXdyYXBw
ZXIpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgRGF0YWJhc2UqIGRhdGFi
YXNlID0gdG9EYXRhYmFzZSh3cmFwcGVyLT51bndyYXBwZWRPYmplY3QoKSk7Ci0gICAgaWYgKGRh
dGFiYXNlKQotICAgICAgICBpbXBsKCktPnNlbGVjdERhdGFiYXNlKGRhdGFiYXNlKTsKLSAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdF
KQotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnNlbGVjdERPTVN0b3JhZ2UoRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYgYXJncykKLXsKLSAgICBpZiAoYXJncy5zaXplKCkgPCAxKQotICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9
IGltcGwoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGlmICghaWMpCi0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIqIHdy
YXBwZXIgPSBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6YXNXcmFwcGVyKGFyZ3MuYXQoMCkp
OwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAg
ICBTdG9yYWdlKiBzdG9yYWdlID0gdG9TdG9yYWdlKHdyYXBwZXItPnVud3JhcHBlZE9iamVjdCgp
KTsKLSAgICBpZiAoc3RvcmFnZSkKLSAgICAgICAgaW1wbCgpLT5zZWxlY3RET01TdG9yYWdlKHN0
b3JhZ2UpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE9iamVjdC5jcHAKaW5kZXggZjE0MTQ1ZS4uNzgxOWZhNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIkpTSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JCYWNrZW5kLmgiCiAjZW5kaWYK
IApAQCAtMTM2LDYgKzEzNywxNCBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgUwogfQogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKK2Jvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNjcmlwdEhvc3QqIHZh
bHVlKQoreworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgZ2xvYmFsT2Jq
ZWN0LT5wdXREaXJlY3QoSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0
U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKKyAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9u
KHNjcmlwdFN0YXRlKTsKK30KKwogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckJhY2tlbmQqIHZh
bHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCAzMTM4MWYzLi5iNTY2YjY1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0T2JqZWN0LmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL1By
b3RlY3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEluamVjdGVkU2NyaXB0
SG9zdDsKICAgICBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogCiAgICAgY2xhc3MgU2NyaXB0T2Jq
ZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKQEAgLTY2LDYgKzY3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
ICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNw
ZWN0b3JCYWNrZW5kKik7CisgICAgICAgIHN0YXRpYyBib29sIHNldChTY3JpcHRTdGF0ZSosIGNv
bnN0IGNoYXIqIG5hbWUsIEluamVjdGVkU2NyaXB0SG9zdCopOwogI2VuZGlmCiAgICAgICAgIHN0
YXRpYyBib29sIGdldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVj
dCYpOwogICAgICAgICBzdGF0aWMgYm9vbCByZW1vdmUoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFy
KiBuYW1lKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1
ZGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAppbmRleCA5NzIx
MWFlLi5hNzE1M2FiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJ
bmNsdWRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCkBA
IC0yNTcsNiArMjU3LDcgQEAKICNlbmRpZiAvLyBYU0xUCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmQuaCIKICNlbmRpZiAvLyBJTlNQRUNUT1IKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAKaW5kZXggNTA4Y2Q0NS4uY2IxYmEwZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCkBAIC0zODcs
NSArMzg3LDYgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNpbmNsdWRlICJi
aW5kaW5ncy9WOEluamVjdGVkU2NyaXB0SG9zdC5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhJ
bnNwZWN0b3JCYWNrZW5kLmNwcCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3Qu
Y3BwCmluZGV4IDMzNGUzYWIuLjM2NTA3NGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVj
dC5jcHAKQEAgLTEyNCw2ICsxMjQsMTMgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFMKICAgICBy
ZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQogCitib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZWRTY3Jp
cHRIb3N0KiB2YWx1ZSkKK3sKKyAgICBTY3JpcHRTY29wZSBzY29wZShzY3JpcHRTdGF0ZSk7Cisg
ICAgc2NvcGUuZ2xvYmFsKCktPlNldCh2ODo6U3RyaW5nOjpOZXcobmFtZSksIFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIHZh
bHVlKSk7CisgICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKK30KKwogYm9vbCBTY3JpcHRHbG9i
YWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUs
IEluc3BlY3RvckJhY2tlbmQqIHZhbHVlKQogewogICAgIFNjcmlwdFNjb3BlIHNjb3BlKHNjcmlw
dFN0YXRlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0Lmgg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oCmluZGV4IGY3NDFmODkuLjQ1ZjA2
MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBJbmplY3RlZFNj
cmlwdEhvc3Q7CiAgICAgY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKICAgICBjbGFzcyBTY3JpcHRT
dGF0ZTsKIApAQCAtNjQsNiArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
U2NyaXB0R2xvYmFsT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBib29sIHNl
dChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJ
bmplY3RlZFNjcmlwdEhvc3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRl
KiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCopOwogICAgICAgICBzdGF0aWMg
Ym9vbCBnZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBTY3JpcHRPYmplY3QmKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgcmVtb3ZlKFNjcmlwdFN0YXRlKiwgY29uc3QgY2hhciogbmFt
ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAppbmRleCA3YTQzYWMyLi43NGJmYjRjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJbmRleC5jcHAKQEAgLTQzMyw2ICs0MzMsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVk
ZSAiVjhJbnNwZWN0b3JCYWNrZW5kLmgiCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEluZGV4LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAppbmRl
eCBiMTIwMDM0Li41NDFiMDU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5k
ZXguaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaApAQCAtNDg3LDYgKzQ4Nyw3
IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rp
b25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogI2RlZmluZSBE
T01fT0JKRUNUX0lOU1BFQ1RPUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIFYoSU5KRUNURURTQ1JJUFRIT1NULCBJbmplY3RlZFNjcmlwdEhvc3QpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSU5TUEVDVE9SQkFDS0VORCwgSW5zcGVj
dG9yQmFja2VuZCkKICNlbHNlCiAjZGVmaW5lIERPTV9PQkpFQ1RfSU5TUEVDVE9SX1RZUEVTKFYp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcu
aCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCmluZGV4IDdh
MjIwZWIuLjQ0ODQ0YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tQmluZGluZy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
QmluZGluZy5oCkBAIC00NzYsMjkgKzQ3NiwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlck5leHRTaWJsaW5nKTsKICAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyUHJldmlvdXNTaWJsaW5nKTsKIAotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRIaWdobGlnaHRET01Ob2RlKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kQWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1l
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kQWRkU291cmNlVG9G
cmFtZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFNlYXJjaCk7
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFNldHRpbmcpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmREYXRhYmFzZUZvcklkKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kSW5zcGVjdGVkV2luZG93KTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kU2V0U2V0dGluZyk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZEN1cnJlbnRDYWxsRnJhbWUp
OwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmREZWJ1Z2dlckVuYWJs
ZWQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRQYXVzZU9uRXhj
ZXB0aW9ucyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFByb2Zp
bGVyRW5hYmxlZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZE5v
ZGVGb3JJZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFdyYXBP
YmplY3QpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRVbndyYXBP
YmplY3QpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRQdXNoTm9k
ZVBhdGhUb0Zyb250ZW5kKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlw
dEhvc3RJbnNwZWN0ZWRXaW5kb3cpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVk
U2NyaXB0SG9zdE5vZGVGb3JJZCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRT
Y3JpcHRIb3N0V3JhcE9iamVjdCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRT
Y3JpcHRIb3N0VW53cmFwT2JqZWN0KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3Rl
ZFNjcmlwdEhvc3RQdXNoTm9kZVBhdGhUb0Zyb250ZW5kKTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhJbmplY3RlZFNjcmlwdEhvc3RXcmFwQ2FsbGJhY2spOwogI2lmIEVOQUJMRShEQVRBQkFT
RSkKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kU2VsZWN0RGF0YWJh
c2UpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdFNlbGVjdERh
dGFiYXNlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3REYXRh
YmFzZUZvcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kU2VsZWN0RE9NU3RvcmFnZSk7CisgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0U2VsZWN0RE9NU3RvcmFnZSk7CiAj
ZW5kaWYKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kV3JhcENhbGxi
YWNrKTsKKworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRTZWFyY2gp
OworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRTZXR0aW5nKTsKKyAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kU2V0U2V0dGluZyk7CiAKICAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhDb25zb2xlUHJvZmlsZSk7CiAgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soQ29uc29sZVByb2ZpbGVFbmQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YTcyNjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAg
LTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKKworI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVy
LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKworI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJv
eHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKERBVEFCQVNFKQorQ0FM
TEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9zdERhdGFiYXNlRm9ySWQpCit7CisgICAg
SU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuZGF0YWJhc2VGb3JJZCgpIik7CisgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisg
ICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8SW5qZWN0ZWRTY3JpcHRIb3N0PihWOENsYXNzSW5kZXg6OklOSkVDVEVEU0NSSVBU
SE9TVCwgYXJncy5Ib2xkZXIoKSk7CisgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gaG9zdC0+ZGF0
YWJhc2VGb3JJZChhcmdzWzBdLT5Ub0ludDMyKCktPlZhbHVlKCkpOworICAgIGlmICghZGF0YWJh
c2UpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvVjhPYmplY3Q8RGF0YWJhc2U+KFY4Q2xhc3NJbmRleDo6REFUQUJBU0Us
IGRhdGFiYXNlKTsKK30KKyNlbmRpZgorCitDQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRTY3Jp
cHRIb3N0SW5zcGVjdGVkV2luZG93KQoreworICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRI
b3N0Lmluc3BlY3RlZFdpbmRvdygpIik7CisKKyAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3Qg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbmplY3RlZFNjcmlwdEhvc3Q+
KFY4Q2xhc3NJbmRleDo6SU5KRUNURURTQ1JJUFRIT1NULCBhcmdzLkhvbGRlcigpKTsKKyAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGhvc3QtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAg
ICBpZiAoIWljKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpE
T01XSU5ET1csIGljLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLT5kb21XaW5kb3coKSk7
Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3RXcmFwQ2FsbGJhY2sp
Cit7CisgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3Qud3JhcENhbGxiYWNrKCkiKTsK
KyAgICByZXR1cm4gYXJnc1swXTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2Ny
aXB0SG9zdE5vZGVGb3JJZCkKK3sKKyAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5u
b2RlRm9ySWQoKSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluamVjdGVkU2NyaXB0SG9zdD4oVjhDbGFz
c0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIGFyZ3MuSG9sZGVyKCkpOworICAgIAorICAgIE5v
ZGUqIG5vZGUgPSBob3N0LT5ub2RlRm9ySWQoYXJnc1swXS0+VG9JbnQzMigpLT5WYWx1ZSgpKTsK
KyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGhvc3QtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAg
ICBpZiAoIWljKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgcmV0dXJu
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT0RFLCBub2Rl
KTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9zdFdyYXBPYmplY3Qp
Cit7CisgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3Qud3JhcE9iamVjdCgpIik7Cisg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9OYXRpdmVPYmplY3Q8SW5qZWN0ZWRTY3JpcHRIb3N0PihWOENsYXNzSW5kZXg6OklOSkVDVEVE
U0NSSVBUSE9TVCwgYXJncy5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIGhvc3QtPndyYXBPYmplY3Qo
U2NyaXB0VmFsdWUoYXJnc1swXSksIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1sx
XSkpLnY4VmFsdWUoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9z
dFVud3JhcE9iamVjdCkKK3sKKyAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC51bndy
YXBPYmplY3QoKSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluamVjdGVkU2NyaXB0SG9zdD4oVjhDbGFz
c0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIGFyZ3MuSG9sZGVyKCkpOworICAgIHJldHVybiBo
b3N0LT51bndyYXBPYmplY3QodG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmdzWzBdKSku
djhWYWx1ZSgpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0UHVz
aE5vZGVQYXRoVG9Gcm9udGVuZCkKK3sKKyAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9z
dC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIp
CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBJbmplY3RlZFNjcmlwdEhv
c3QqIGhvc3QgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbmplY3RlZFNj
cmlwdEhvc3Q+KFY4Q2xhc3NJbmRleDo6SU5KRUNURURTQ1JJUFRIT1NULCBhcmdzLkhvbGRlcigp
KTsKKyAgICBOb2RlKiBub2RlID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9k
ZTxOb2RlPih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKKyAgICBib29s
IHNlbGVjdEluVUkgPSBhcmdzWzFdLT5Ub0Jvb2xlYW4oKS0+VmFsdWUoKTsKKyAgICBpZiAobm9k
ZSkKKyAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhob3N0LT5wdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKG5vZGUsIHNlbGVjdEluVUkpKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCitDQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRT
Y3JpcHRIb3N0U2VsZWN0RGF0YWJhc2UpCit7CisgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlw
dEhvc3Quc2VsZWN0RGF0YWJhc2UoKSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluamVjdGVkU2NyaXB0SG9zdCog
aG9zdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluamVjdGVkU2NyaXB0
SG9zdD4oVjhDbGFzc0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIGFyZ3MuSG9sZGVyKCkpOwor
ICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2Jq
ZWN0PERhdGFiYXNlPihWOENsYXNzSW5kZXg6OkRBVEFCQVNFLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGFyZ3NbMF0pKTsKKyAgICBpZiAoZGF0YWJhc2UpCisgICAgICAgIGhvc3QtPnNl
bGVjdERhdGFiYXNlKGRhdGFiYXNlKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisjZW5kaWYKKworI2lmIEVOQUJMRShET01fU1RPUkFHRSkKK0NBTExCQUNLX0ZVTkNfREVDTChJ
bmplY3RlZFNjcmlwdEhvc3RTZWxlY3RET01TdG9yYWdlKQoreworICAgIElOQ19TVEFUUygiSW5q
ZWN0ZWRTY3JpcHRIb3N0LnNlbGVjdERPTVN0b3JhZ2UoKSIpOworICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluamVjdGVk
U2NyaXB0SG9zdCogaG9zdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PElu
amVjdGVkU2NyaXB0SG9zdD4oVjhDbGFzc0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIGFyZ3Mu
SG9sZGVyKCkpOworICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRU
b05hdGl2ZU9iamVjdDxTdG9yYWdlPihWOENsYXNzSW5kZXg6OlNUT1JBR0UsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIGlmIChzdG9yYWdlKQorICAgICAgICBo
b3N0LT5zZWxlY3RET01TdG9yYWdlKHN0b3JhZ2UpOworCisgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcApp
bmRleCBlYzliMDM0Li45YmNkNzIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAKQEAgLTMxLDE0ICszMSw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZC5oIgogCi0j
aW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JSZXNvdXJjZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiTm9k
ZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTEsMTggKzQ1
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVj
dG9yQmFja2VuZEhpZ2hsaWdodERPTU5vZGUpCi17Ci0gICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JC
YWNrZW5kLmhpZ2hsaWdodERPTU5vZGUoKSIpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAx
KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQmFja2Vu
ZCogaW5zcGVjdG9yQmFja2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PEluc3BlY3RvckJhY2tlbmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFDS0VORCwgYXJncy5I
b2xkZXIoKSk7Ci0gICAgaW5zcGVjdG9yQmFja2VuZC0+aGlnaGxpZ2h0KGFyZ3NbMF0tPlRvSW50
MzIoKS0+VmFsdWUoKSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQogQ0FMTEJB
Q0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmRTZWFyY2gpCiB7CiAgICAgSU5DX1NUQVRTKCJJ
bnNwZWN0b3JCYWNrZW5kLnNlYXJjaCgpIik7CkBAIC0xMDIsMzIgKzg0LDYgQEAgQ0FMTEJBQ0tf
RlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmRTZWFyY2gpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotI2lmIEVOQUJMRShEQVRBQkFTRSkKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JCYWNr
ZW5kRGF0YWJhc2VGb3JJZCkKLXsKLSAgICBJTkNfU1RBVFMoIkluc3BlY3RvckJhY2tlbmQuZGF0
YWJhc2VGb3JJZCgpIik7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQmFja2VuZCogaW5zcGVjdG9yQmFj
a2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluc3BlY3RvckJhY2tl
bmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFDS0VORCwgYXJncy5Ib2xkZXIoKSk7Ci0gICAg
RGF0YWJhc2UqIGRhdGFiYXNlID0gaW5zcGVjdG9yQmFja2VuZC0+ZGF0YWJhc2VGb3JJZChhcmdz
WzBdLT5Ub0ludDMyKCktPlZhbHVlKCkpOwotICAgIGlmICghZGF0YWJhc2UpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
VjhPYmplY3Q8RGF0YWJhc2U+KFY4Q2xhc3NJbmRleDo6REFUQUJBU0UsIGRhdGFiYXNlKTsKLX0K
LSNlbmRpZgotCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVjdG9yQmFja2VuZEluc3BlY3RlZFdp
bmRvdykKLXsKLSAgICBJTkNfU1RBVFMoIkluc3BlY3RvckJhY2tlbmQuaW5zcGVjdGVkV2luZG93
KCkiKTsKLQotICAgIEluc3BlY3RvckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQgPSBWOERPTVdy
YXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbnNwZWN0b3JCYWNrZW5kPihWOENsYXNzSW5k
ZXg6OklOU1BFQ1RPUkJBQ0tFTkQsIGFyZ3MuSG9sZGVyKCkpOwotICAgIEluc3BlY3RvckNvbnRy
b2xsZXIqIGljID0gaW5zcGVjdG9yQmFja2VuZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAg
IGlmICghaWMpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIFY4
RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRP
TVdJTkRPVywgaWMtPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvbVdpbmRvdygpKTsK
LX0KLQogQ0FMTEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmRTZXR0aW5nKQogewogICAg
IElOQ19TVEFUUygiSW5zcGVjdG9yQmFja2VuZC5zZXR0aW5nKCkiKTsKQEAgLTIxMSw5NiArMTY3
LDQgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmRTZXRTZXR0aW5nKQogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0
b3JCYWNrZW5kV3JhcENhbGxiYWNrKQotewotICAgIElOQ19TVEFUUygiSW5zcGVjdG9yQmFja2Vu
ZC53cmFwQ2FsbGJhY2soKSIpOwotICAgIHJldHVybiBhcmdzWzBdOwotfQotCi1DQUxMQkFDS19G
VU5DX0RFQ0woSW5zcGVjdG9yQmFja2VuZE5vZGVGb3JJZCkKLXsKLSAgICBJTkNfU1RBVFMoIklu
c3BlY3RvckJhY2tlbmQubm9kZUZvcklkKCkiKTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0b3JCYWNrZW5k
KiBpbnNwZWN0b3JCYWNrZW5kID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
SW5zcGVjdG9yQmFja2VuZD4oVjhDbGFzc0luZGV4OjpJTlNQRUNUT1JCQUNLRU5ELCBhcmdzLkhv
bGRlcigpKTsKLSAgICAKLSAgICBOb2RlKiBub2RlID0gaW5zcGVjdG9yQmFja2VuZC0+bm9kZUZv
cklkKGFyZ3NbMF0tPlRvSW50MzIoKS0+VmFsdWUoKSk7Ci0gICAgaWYgKCFub2RlKQotICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMg
PSBpbnNwZWN0b3JCYWNrZW5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpYykK
LSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIHJldHVybiBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9ERSwgbm9kZSk7Ci19Ci0KLUNB
TExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JCYWNrZW5kV3JhcE9iamVjdCkKLXsKLSAgICBJTkNf
U1RBVFMoIkluc3BlY3RvckJhY2tlbmQud3JhcE9iamVjdCgpIik7Ci0gICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAyKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVj
dG9yQmFja2VuZCogaW5zcGVjdG9yQmFja2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PEluc3BlY3RvckJhY2tlbmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFDS0VO
RCwgYXJncy5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIGluc3BlY3RvckJhY2tlbmQtPndyYXBPYmpl
Y3QoU2NyaXB0VmFsdWUoYXJnc1swXSksIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJn
c1sxXSkpLnY4VmFsdWUoKTsKLX0KLQotQ0FMTEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tl
bmRVbndyYXBPYmplY3QpCi17Ci0gICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JCYWNrZW5kLnVud3Jh
cE9iamVjdCgpIik7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQmFja2VuZCogaW5zcGVjdG9yQmFja2Vu
ZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluc3BlY3RvckJhY2tlbmQ+
KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFDS0VORCwgYXJncy5Ib2xkZXIoKSk7Ci0gICAgcmV0
dXJuIGluc3BlY3RvckJhY2tlbmQtPnVud3JhcE9iamVjdCh0b1dlYkNvcmVTdHJpbmdXaXRoTnVs
bENoZWNrKGFyZ3NbMF0pKS52OFZhbHVlKCk7Ci19Ci0KLUNBTExCQUNLX0ZVTkNfREVDTChJbnNw
ZWN0b3JCYWNrZW5kUHVzaE5vZGVQYXRoVG9Gcm9udGVuZCkKLXsKLSAgICBJTkNfU1RBVFMoIklu
c3BlY3RvckJhY2tlbmQucHVzaE5vZGVQYXRoVG9Gcm9udGVuZCgpIik7Ci0gICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAyKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5z
cGVjdG9yQmFja2VuZCogaW5zcGVjdG9yQmFja2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
TmF0aXZlT2JqZWN0PEluc3BlY3RvckJhY2tlbmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFD
S0VORCwgYXJncy5Ib2xkZXIoKSk7Ci0gICAgTm9kZSogbm9kZSA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05vZGU8Tm9kZT4odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSk7Ci0gICAgYm9vbCBzZWxlY3RJblVJID0gYXJnc1sxXS0+VG9Cb29sZWFuKCktPlZh
bHVlKCk7Ci0gICAgaWYgKG5vZGUpCi0gICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoaW5z
cGVjdG9yQmFja2VuZC0+cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2RlLCBzZWxlY3RJblVJKSk7
Ci0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi0jaWYgRU5BQkxFKERBVEFCQVNF
KQotQ0FMTEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmRTZWxlY3REYXRhYmFzZSkKLXsK
LSAgICBJTkNfU1RBVFMoIkluc3BlY3RvckJhY2tlbmQuc2VsZWN0RGF0YWJhc2UoKSIpOwotICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
LQotICAgIEluc3BlY3RvckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbnNwZWN0b3JCYWNrZW5kPihWOENsYXNzSW5kZXg6OklO
U1BFQ1RPUkJBQ0tFTkQsIGFyZ3MuSG9sZGVyKCkpOwotICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERhdGFiYXNlPihWOENsYXNzSW5k
ZXg6OkRBVEFCQVNFLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKLSAg
ICBpZiAoZGF0YWJhc2UpCi0gICAgICAgIGluc3BlY3RvckJhY2tlbmQtPnNlbGVjdERhdGFiYXNl
KGRhdGFiYXNlKTsKLQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShET01fU1RPUkFHRSkKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JCYWNr
ZW5kU2VsZWN0RE9NU3RvcmFnZSkKLXsKLSAgICBJTkNfU1RBVFMoIkluc3BlY3RvckJhY2tlbmQu
c2VsZWN0RE9NU3RvcmFnZSgpIik7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQmFja2VuZCogaW5zcGVj
dG9yQmFja2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluc3BlY3Rv
ckJhY2tlbmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFDS0VORCwgYXJncy5Ib2xkZXIoKSk7
Ci0gICAgU3RvcmFnZSogc3RvcmFnZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2Jq
ZWN0PFN0b3JhZ2U+KFY4Q2xhc3NJbmRleDo6U1RPUkFHRSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSk7Ci0gICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIGluc3BlY3RvckJh
Y2tlbmQtPnNlbGVjdERPTVN0b3JhZ2Uoc3RvcmFnZSk7Ci0KLSAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQyZDRiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZS5oIgorI2luY2x1ZGUg
IlBhc3RlYm9hcmQuaCIKKyNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgorI2luY2x1ZGUgIlNjcmlw
dEZ1bmN0aW9uQ2FsbC5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjaW5j
bHVkZSAiSmF2YVNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHREZWJ1Z1Nl
cnZlci5oIgordXNpbmcgbmFtZXNwYWNlIEpTQzsKKyNlbmRpZgorCisjaWYgRU5BQkxFKERBVEFC
QVNFKQorI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKKyNpbmNsdWRlICJTdG9yYWdlLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIm1hcmt1cC5o
IgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbmpl
Y3RlZFNjcmlwdEhvc3Q6OkluamVjdGVkU2NyaXB0SG9zdChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyKQorICAgIDogbV9pbnNwZWN0b3JDb250cm9sbGVyKGluc3BlY3Rv
ckNvbnRyb2xsZXIpCit7Cit9CisKK0luamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2NyaXB0
SG9zdCgpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCit7CisgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3Jp
dGVQbGFpblRleHQodGV4dCk7Cit9CisKK05vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZv
cklkKGxvbmcgbm9kZUlkKQoreworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQg
PSBpbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICByZXR1cm4gZG9tQWdlbnQtPm5vZGVGb3JJ
ZChub2RlSWQpOworICAgIHJldHVybiAwOworfQorCitTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlw
dEhvc3Q6OndyYXBPYmplY3QoY29uc3QgU2NyaXB0VmFsdWUmIG9iamVjdCwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT53cmFwT2JqZWN0KG9iamVjdCwgb2JqZWN0
R3JvdXApOworICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworfQorCitTY3JpcHRWYWx1ZSBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnVud3JhcE9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQorewor
ICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPnVud3JhcE9iamVjdChvYmplY3RJZCk7CisgICAgcmV0dXJuIFNjcmlwdFZh
bHVlKCk7Cit9CisKK2xvbmcgSW5qZWN0ZWRTY3JpcHRIb3N0OjpwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKE5vZGUqIG5vZGUsIGJvb2wgc2VsZWN0SW5VSSkKK3sKKyAgICBJbnNwZWN0b3JGcm9udGVu
ZCogZnJvbnRlbmQgPSBpbnNwZWN0b3JGcm9udGVuZCgpOworICAgIEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCA9IGluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCB8fCAh
ZnJvbnRlbmQpCisgICAgICAgIHJldHVybiAwOworICAgIGxvbmcgaWQgPSBkb21BZ2VudC0+cHVz
aE5vZGVQYXRoVG9Gcm9udGVuZChub2RlKTsKKyAgICBpZiAoc2VsZWN0SW5VSSkKKyAgICAgICAg
ZnJvbnRlbmQtPnVwZGF0ZUZvY3VzZWROb2RlKGlkKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjphZGROb2Rlc1RvU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgbm9kZUlkcykKK3sKKyAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kID0gaW5z
cGVjdG9yRnJvbnRlbmQoKSkKKyAgICAgICAgZnJvbnRlbmQtPmFkZE5vZGVzVG9TZWFyY2hSZXN1
bHQobm9kZUlkcyk7Cit9CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKK0phdmFT
Y3JpcHRDYWxsRnJhbWUqIEluamVjdGVkU2NyaXB0SG9zdDo6Y3VycmVudENhbGxGcmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY3VycmVu
dENhbGxGcmFtZSgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCitEYXRhYmFz
ZSogSW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUZvcklkKGxvbmcgZGF0YWJhc2VJZCkKK3sK
KyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5kYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOworICAgIHJldHVybiAwOwor
fQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6c2VsZWN0RGF0YWJhc2UoRGF0YWJhc2UqIGRh
dGFiYXNlKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5z
cGVjdG9yQ29udHJvbGxlci0+c2VsZWN0RGF0YWJhc2UoZGF0YWJhc2UpOworfQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6c2VsZWN0
RE9NU3RvcmFnZShTdG9yYWdlKiBzdG9yYWdlKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRy
b2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2VsZWN0RE9NU3RvcmFnZShz
dG9yYWdlKTsKK30KKyNlbmRpZgorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6cmVwb3J0RGlk
RGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHJlc3Vs
dCwgYm9vbCBpc0V4Y2VwdGlvbikKK3sKKyAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kID0gaW5zcGVjdG9yRnJvbnRlbmQoKSkKKyAgICAgICAgZnJvbnRlbmQtPmRpZERpc3BhdGNo
T25JbmplY3RlZFNjcmlwdChjYWxsSWQsIHJlc3VsdCwgaXNFeGNlcHRpb24pOworfQorCitJbnNw
ZWN0b3JET01BZ2VudCogSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0b3JET01BZ2VudCgpCit7
CisgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRvbUFnZW50KCk7Cit9CisKK0luc3BlY3Rv
ckZyb250ZW5kKiBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RvckZyb250ZW5kKCkKK3sKKyAg
ICBpZiAoIW1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9mcm9udGVuZC5nZXQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTlhYTBhZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZFNjcmlw
dEhvc3RfaAorI2RlZmluZSBJbmplY3RlZFNjcmlwdEhvc3RfaAorCisjaW5jbHVkZSAiQ29uc29s
ZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBEYXRhYmFzZTsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50OworY2xh
c3MgSW5zcGVjdG9yRnJvbnRlbmQ7CitjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lOworY2xhc3Mg
Tm9kZTsKK2NsYXNzIFN0b3JhZ2U7CisKK2NsYXNzIEluamVjdGVkU2NyaXB0SG9zdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEluamVjdGVkU2NyaXB0SG9zdD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmplY3RlZFNjcmlwdEhvc3QoaW5zcGVjdG9yQ29udHJvbGxlcikpOworICAgIH0KKworICAg
IH5JbmplY3RlZFNjcmlwdEhvc3QoKTsKKworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXI7IH0KKworICAg
IHZvaWQgZGlzY29ubmVjdENvbnRyb2xsZXIoKSB7IG1faW5zcGVjdG9yQ29udHJvbGxlciA9IDA7
IH0KKworICAgIHZvaWQgY29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBOb2RlKiBu
b2RlRm9ySWQobG9uZyBub2RlSWQpOworICAgIFNjcmlwdFZhbHVlIHdyYXBPYmplY3QoY29uc3Qg
U2NyaXB0VmFsdWUmIG9iamVjdCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CisgICAgU2Ny
aXB0VmFsdWUgdW53cmFwT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOworICAgIGxvbmcg
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlLCBib29sIHNlbGVjdEluVUkpOworICAg
IHZvaWQgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIG5vZGVJZHMpOworI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGN1
cnJlbnRDYWxsRnJhbWUoKSBjb25zdDsKKyNlbmRpZgorI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAg
ICBEYXRhYmFzZSogZGF0YWJhc2VGb3JJZChsb25nIGRhdGFiYXNlSWQpOworICAgIHZvaWQgc2Vs
ZWN0RGF0YWJhc2UoRGF0YWJhc2UqIGRhdGFiYXNlKTsKKyNlbmRpZgorI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKKyAgICB2b2lkIHNlbGVjdERPTVN0b3JhZ2UoU3RvcmFnZSogc3RvcmFnZSk7Cisj
ZW5kaWYKKyAgICB2b2lkIHJlcG9ydERpZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGJvb2wgaXNFeGNlcHRpb24pOworCitwcml2YXRl
OgorICAgIEluamVjdGVkU2NyaXB0SG9zdChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogaW5zcGVjdG9yRE9NQWdlbnQoKTsK
KyAgICBJbnNwZWN0b3JGcm9udGVuZCogaW5zcGVjdG9yRnJvbnRlbmQoKTsKKworICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluamVjdGVkU2NyaXB0SG9zdF9oKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYTQxMDhiMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
Y29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAg
IF0gSW5qZWN0ZWRTY3JpcHRIb3N0IHsKKyAgICAgICAgW0N1c3RvbV0gRE9NV2luZG93IGluc3Bl
Y3RlZFdpbmRvdygpOworICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgd3JhcENhbGxiYWNrKGlu
IERPTU9iamVjdCBjYWxsYmFjayk7CisgICAgICAgIHZvaWQgY29weVRleHQoaW4gRE9NU3RyaW5n
IHRleHQpOworICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgbm9kZUZvcklkKGluIGxvbmcgbm9k
ZUlkKTsKKyAgICAgICAgW0N1c3RvbV0gbG9uZyB3cmFwT2JqZWN0KGluIERPTU9iamVjdCBvYmpl
Y3QsIGluIERPTVN0cmluZyBvYmplY3RHcm91cCk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVj
dCB1bndyYXBPYmplY3QoaW4gbG9uZyBvYmplY3RJZCk7CisgICAgICAgIFtDdXN0b21dIGludCBw
dXNoTm9kZVBhdGhUb0Zyb250ZW5kKGluIERPTU9iamVjdCBub2RlLCBpbiBib29sZWFuIHNlbGVj
dEluVUkpOworICAgICAgICB2b2lkIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoaW4gRE9NU3RyaW5n
IG5vZGVJZHMpOworCisjaWYgZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYg
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKKyAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGN1
cnJlbnRDYWxsRnJhbWUoKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0Up
ICYmIEVOQUJMRV9EQVRBQkFTRQorICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgZGF0YWJhc2VG
b3JJZChpbiBsb25nIGRhdGFiYXNlSWQpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHNlbGVjdERh
dGFiYXNlKGluIERPTU9iamVjdCBkYXRhYmFzZSk7CisjZW5kaWYKKworI2lmIGRlZmluZWQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAmJiBFTkFCTEVfRE9NX1NUT1JBR0UKKyAgICAgICAgW0N1c3RvbV0g
dm9pZCBzZWxlY3RET01TdG9yYWdlKGluIERPTU9iamVjdCBzdG9yYWdlKTsKKyNlbmRpZgorCisg
ICAgICAgIHZvaWQgcmVwb3J0RGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2Fs
bElkLCBpbiBET01TdHJpbmcgcmVzdWx0LCBpbiBib29sZWFuIGlzRXhjZXB0aW9uKTsKKyAgICB9
OworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCBlNTFkN2U3Li41
YTVkNDQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNw
cAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApAQCAtNzgsMTIg
Kzc4LDYgQEAgSW5zcGVjdG9yQmFja2VuZDo6fkluc3BlY3RvckJhY2tlbmQoKQogewogfQogCi12
b2lkIEluc3BlY3RvckJhY2tlbmQ6OmhpZGVET01Ob2RlSGlnaGxpZ2h0KCkKLXsKLSAgICBpZiAo
bV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmhp
ZGVIaWdobGlnaHQoKTsKLX0KLQogU3RyaW5nIEluc3BlY3RvckJhY2tlbmQ6OmxvY2FsaXplZFN0
cmluZ3NVUkwoKQogewogICAgIHJldHVybiBtX2NsaWVudC0+bG9jYWxpemVkU3RyaW5nc1VSTCgp
OwpAQCAtNDkzLDYgKzQ4NywxOCBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnJlbW92ZU5vZGUo
bG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKQogICAgIGZyb250ZW5kLT5kaWRSZW1vdmVOb2RlKGNh
bGxJZCwgbm9kZUlkKTsKIH0KIAordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpoaWdobGlnaHRET01O
b2RlKGxvbmcgbm9kZUlkKQoreworICAgIGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJ
ZCkpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aGlnaGxpZ2h0KG5vZGUpOworfQor
Cit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmhpZGVET01Ob2RlSGlnaGxpZ2h0KCkKK3sKKyAgICBp
ZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PmhpZGVIaWdobGlnaHQoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRDb29raWVz
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKICAgICBpZiAoIW1faW5zcGVj
dG9yQ29udHJvbGxlcikKQEAgLTUwNywxNyArNTEzLDYgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5k
OjpkZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRv
bWEKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRlbGV0ZUNvb2tpZShjb29raWVOYW1lLCBk
b21haW4pOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmNvcHlUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKLXsKLSAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBs
YWluVGV4dCh0ZXh0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpoaWdobGlnaHQobG9u
ZyBub2RlSWQpCi17Ci0gICAgaWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkKLSAg
ICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5oaWdobGlnaHQobm9kZSk7Ci19Ci0KIE5vZGUq
IEluc3BlY3RvckJhY2tlbmQ6Om5vZGVGb3JJZChsb25nIG5vZGVJZCkKIHsKICAgICBpZiAoSW5z
cGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yRE9NQWdlbnQoKSkKQEAgLTUyNSw1
OCArNTIwLDEzIEBAIE5vZGUqIEluc3BlY3RvckJhY2tlbmQ6Om5vZGVGb3JJZChsb25nIG5vZGVJ
ZCkKICAgICByZXR1cm4gMDsKIH0KIAotU2NyaXB0VmFsdWUgSW5zcGVjdG9yQmFja2VuZDo6d3Jh
cE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIG9iamVjdEdy
b3VwKQotewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBt
X2luc3BlY3RvckNvbnRyb2xsZXItPndyYXBPYmplY3Qob2JqZWN0LCBvYmplY3RHcm91cCk7Ci0g
ICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Ci19Ci0KLVNjcmlwdFZhbHVlIEluc3BlY3RvckJhY2tl
bmQ6OnVud3JhcE9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQotewotICAgIGlmIChtX2lu
c3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PnVud3JhcE9iamVjdChvYmplY3RJZCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Ci19Ci0K
IHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwKQogewogICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCiAg
ICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChv
YmplY3RHcm91cCk7CiB9CiAKLWxvbmcgSW5zcGVjdG9yQmFja2VuZDo6cHVzaE5vZGVQYXRoVG9G
cm9udGVuZChOb2RlKiBub2RlLCBib29sIHNlbGVjdEluVUkpCi17Ci0gICAgSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kID0gaW5zcGVjdG9yRnJvbnRlbmQoKTsKLSAgICBJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JET01BZ2VudCgpOwotICAgIGlmICghZG9tQWdlbnQg
fHwgIWZyb250ZW5kKQotICAgICAgICByZXR1cm4gMDsKLSAgICBsb25nIGlkID0gZG9tQWdlbnQt
PnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSk7Ci0gICAgaWYgKHNlbGVjdEluVUkpCi0gICAg
ICAgIGZyb250ZW5kLT51cGRhdGVGb2N1c2VkTm9kZShpZCk7Ci0gICAgcmV0dXJuIGlkOwotfQot
Ci12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoY29uc3QgU3Ry
aW5nJiBub2RlSWRzKQotewotICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQgPSBp
bnNwZWN0b3JGcm9udGVuZCgpKQotICAgICAgICBmcm9udGVuZC0+YWRkTm9kZXNUb1NlYXJjaFJl
c3VsdChub2RlSWRzKTsKLX0KLQogI2lmIEVOQUJMRShEQVRBQkFTRSkKLURhdGFiYXNlKiBJbnNw
ZWN0b3JCYWNrZW5kOjpkYXRhYmFzZUZvcklkKGxvbmcgZGF0YWJhc2VJZCkKLXsKLSAgICBpZiAo
bV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9s
bGVyLT5kYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwotICAgIHJldHVybiAwOwotfQotCi12b2lk
IEluc3BlY3RvckJhY2tlbmQ6OnNlbGVjdERhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSkKLXsK
LSAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBtX2luc3BlY3RvckNvbnRy
b2xsZXItPnNlbGVjdERhdGFiYXNlKGRhdGFiYXNlKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kOjpnZXREYXRhYmFzZVRhYmxlTmFtZXMobG9uZyBjYWxsSWQsIGxvbmcgZGF0YWJhc2VJZCkK
IHsKICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kID0gaW5zcGVjdG9yRnJvbnRl
bmQoKSkgewpAQCAtNTk0LDEyICs1NDQsNiBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmdldERh
dGFiYXNlVGFibGVOYW1lcyhsb25nIGNhbGxJZCwgbG9uZyBkYXRhYmFzZUlkKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OnNlbGVjdERP
TVN0b3JhZ2UoU3RvcmFnZSogc3RvcmFnZSkKLXsKLSAgICBpZiAobV9pbnNwZWN0b3JDb250cm9s
bGVyKQotICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNlbGVjdERPTVN0b3JhZ2Uoc3Rv
cmFnZSk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0RE9NU3RvcmFnZUVudHJpZXMo
bG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkKQogewogICAgIGlmIChtX2luc3BlY3RvckNvbnRy
b2xsZXIpCkBAIC02MjUsMTIgKzU2OSw2IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlkRXZh
bHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqCiAgICAg
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChj
YWxsSWQsIGpzb25SZXN1bHQpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OnJlcG9ydERp
ZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiByZXN1
bHQsIGJvb2wgaXNFeGNlcHRpb24pCi17Ci0gICAgaWYgKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCA9IGluc3BlY3RvckZyb250ZW5kKCkpCi0gICAgICAgIGZyb250ZW5kLT5kaWREaXNwYXRj
aE9uSW5qZWN0ZWRTY3JpcHQoY2FsbElkLCByZXN1bHQsIGlzRXhjZXB0aW9uKTsKLX0KLQogSW5z
cGVjdG9yRE9NQWdlbnQqIEluc3BlY3RvckJhY2tlbmQ6Omluc3BlY3RvckRPTUFnZW50KCkKIHsK
ICAgICBpZiAoIW1faW5zcGVjdG9yQ29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaAppbmRleCBmODQ5NzhhLi45ZjllZjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3Mg
RGF0YWJhc2U7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dDsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSmF2YVNjcmlwdENhbGxGcmFtZTsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBTdG9yYWdlOwpAQCAtNTksOCArNjAsNiBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBkaXNjb25uZWN0Q29udHJvbGxlcigpIHsgbV9pbnNwZWN0b3JDb250cm9s
bGVyID0gMDsgfQogCi0gICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotCiAgICAgU3Ry
aW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKTsKICAgICBTdHJpbmcgaGlkZGVuUGFuZWxzKCk7CiAK
QEAgLTEzOSwzMiArMTM4LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJz
Rm9yTm9kZShsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQpOwogICAgIHZvaWQgY29weU5vZGUobG9u
ZyBub2RlSWQpOwogICAgIHZvaWQgcmVtb3ZlTm9kZShsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQp
OworICAgIHZvaWQgaGlnaGxpZ2h0RE9NTm9kZShsb25nIG5vZGVJZCk7CisgICAgdm9pZCBoaWRl
RE9NTm9kZUhpZ2hsaWdodCgpOwogCiAgICAgdm9pZCBnZXRDb29raWVzKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIGRvbWFpbik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbik7CiAKLSAgICB2b2lkIGNvcHlUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCk7Ci0KICAgICAvLyBHZW5lcmljIGNvZGUgY2FsbGVkIGZyb20g
Y3VzdG9tIGltcGxlbWVudGF0aW9ucy4KLSAgICB2b2lkIGhpZ2hsaWdodChsb25nIG5vZGVJZCk7
CiAgICAgTm9kZSogbm9kZUZvcklkKGxvbmcgbm9kZUlkKTsKLSAgICBTY3JpcHRWYWx1ZSB3cmFw
T2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiBvYmplY3QsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApOwotICAgIFNjcmlwdFZhbHVlIHVud3JhcE9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElk
KTsKICAgICB2b2lkIHJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCk7CiAgICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGUsIGJv
b2wgc2VsZWN0SW5VSSk7Ci0gICAgdm9pZCBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0KGNvbnN0IFN0
cmluZyYgbm9kZUlkcyk7CiAjaWYgRU5BQkxFKERBVEFCQVNFKQotICAgIERhdGFiYXNlKiBkYXRh
YmFzZUZvcklkKGxvbmcgZGF0YWJhc2VJZCk7Ci0gICAgdm9pZCBzZWxlY3REYXRhYmFzZShEYXRh
YmFzZSogZGF0YWJhc2UpOwogICAgIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKGxvbmcgY2Fs
bElkLCBsb25nIGRhdGFiYXNlSWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQot
ICAgIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShTdG9yYWdlKiBzdG9yYWdlKTsKICAgICB2b2lkIGdl
dERPTVN0b3JhZ2VFbnRyaWVzKGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCk7CiAgICAgdm9p
ZCBzZXRET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHJlbW92ZURPTVN0b3Jh
Z2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpOwog
I2VuZGlmCi0gICAgdm9pZCByZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgcmVzdWx0LCBib29sIGlzRXhjZXB0aW9uKTsKICAgICB2b2lk
IGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYg
anNvblJlc3VsdCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aWRsCmluZGV4IGQ2YTNjZjkuLmE2OWJkMjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaWRsCkBAIC0zNCw4ICszNCw2IEBAIG1vZHVsZSBjb3JlIHsKICAgICBpbnRlcmZhY2Ug
WwogICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCiAgICAgXSBJbnNwZWN0b3JCYWNrZW5kIHsK
LSAgICAgICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotICAgICAgICBbQ3VzdG9tXSB2
b2lkIGhpZ2hsaWdodERPTU5vZGUoaW4gbG9uZyBub2RlSWQpOwogICAgICAgICB2b2lkIGxvYWRl
ZCgpOwogICAgICAgICB2b2lkIHdpbmRvd1VubG9hZGluZygpOwogICAgICAgICB2b2lkIGF0dGFj
aCgpOwpAQCAtNDgsMjUgKzQ2LDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgYm9vbGVhbiBp
c1dpbmRvd1Zpc2libGUoKTsKICAgICAgICAgYm9vbGVhbiBzZWFyY2hpbmdGb3JOb2RlKCk7CiAK
LSAgICAgICAgdm9pZCBhZGRSZXNvdXJjZVNvdXJjZVRvRnJhbWUoaW4gbG9uZyBpZGVudGlmaWVy
LCBpbiBOb2RlIGZyYW1lKTsKLSAgICAgICAgYm9vbGVhbiBhZGRTb3VyY2VUb0ZyYW1lKGluIERP
TVN0cmluZyBtaW1lVHlwZSwgaW4gRE9NU3RyaW5nIHNvdXJjZVZhbHVlLCBpbiBOb2RlIGZyYW1l
KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZWFyY2goaW4gTm9kZSBub2RlLCBpbiBET01TdHJp
bmcgcXVlcnkpOwotI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFCQVNFKSAmJiBFTkFCTEVfREFUQUJB
U0UKLSAgICAgICAgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoaW4gbG9uZyBjYWxsSWQsIGlu
IGxvbmcgZGF0YWJhc2VJZCk7Ci0jZW5kaWYKLQotICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qg
c2V0dGluZyhpbiBET01TdHJpbmcga2V5KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXRTZXR0
aW5nKGluIERPTVN0cmluZyBrZXksIGluIERPTU9iamVjdCAgdmFsdWUpOwotICAgICAgICBbQ3Vz
dG9tXSBET01XaW5kb3cgaW5zcGVjdGVkV2luZG93KCk7Ci0gICAgICAgIERPTVN0cmluZyBsb2Nh
bGl6ZWRTdHJpbmdzVVJMKCk7Ci0gICAgICAgIERPTVN0cmluZyBoaWRkZW5QYW5lbHMoKTsKLSAg
ICAgICAgRE9NU3RyaW5nIHBsYXRmb3JtKCk7Ci0gICAgICAgIERPTVN0cmluZyBwb3J0KCk7CiAg
ICAgICAgIHZvaWQgc3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CiAgICAgICAgIHZvaWQgc3RvcFRp
bWVsaW5lUHJvZmlsZXIoKTsKICAgICAgICAgW0ltcGxlbWVudGF0aW9uRnVuY3Rpb249bW92ZVdp
bmRvd0J5XSB2b2lkIG1vdmVCeVVucmVzdHJpY3RlZChpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsK
ICAgICAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodChpbiB1bnNpZ25lZCBsb25nIGhl
aWdodCk7Ci0gICAgICAgIFtDdXN0b21dIERPTU9iamVjdCB3cmFwQ2FsbGJhY2soaW4gRE9NT2Jq
ZWN0IGNhbGxiYWNrKTsKICAgICAgICAgYm9vbGVhbiByZXNvdXJjZVRyYWNraW5nRW5hYmxlZCgp
OwogICAgICAgICB2b2lkIGVuYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMp
OwogICAgICAgICB2b2lkIGRpc2FibGVSZXNvdXJjZVRyYWNraW5nKGluIGJvb2xlYW4gYWx3YXlz
KTsKQEAgLTg4LDggKzcxLDYgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIHN0ZXBJbnRv
U3RhdGVtZW50SW5EZWJ1Z2dlcigpOwogICAgICAgICB2b2lkIHN0ZXBPdXRPZkZ1bmN0aW9uSW5E
ZWJ1Z2dlcigpOwogCi0gICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBjdXJyZW50Q2FsbEZyYW1l
KCk7Ci0KICAgICAgICAgYm9vbGVhbiBwYXVzZU9uRXhjZXB0aW9ucygpOwogICAgICAgICB2b2lk
IHNldFBhdXNlT25FeGNlcHRpb25zKGluIGJvb2xlYW4gcGF1c2VPbkV4Y2VwdGlvbnMpOwogCkBA
IC0xMTEsMzAgKzkyLDM0IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBnZXRFdmVudExp
c3RlbmVyc0Zvck5vZGUoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlkKTsKICAgICAgICAg
dm9pZCBjb3B5Tm9kZShpbiBsb25nIG5vZGVJZCk7CiAgICAgICAgIHZvaWQgcmVtb3ZlTm9kZShp
biBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOworICAgICAgICB2b2lkIGhpZ2hsaWdodERP
TU5vZGUoaW4gbG9uZyBub2RlSWQpOworICAgICAgICB2b2lkIGhpZGVET01Ob2RlSGlnaGxpZ2h0
KCk7CiAKICAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJp
bmcgZG9tYWluKTsKICAgICAgICAgdm9pZCBkZWxldGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tp
ZU5hbWUsIGluIERPTVN0cmluZyBkb21haW4pOwogCi0gICAgICAgIC8vIENhbGxlZCBmcm9tIElu
amVjdGVkU2NyaXB0LgotICAgICAgICAvLyBUT0RPOiBleHRyYWN0IGludG8gYSBzZXBhcmF0ZSBJ
REwuCi0gICAgICAgIHZvaWQgY29weVRleHQoaW4gRE9NU3RyaW5nIHRleHQpOwotICAgICAgICBb
Q3VzdG9tXSBET01PYmplY3Qgbm9kZUZvcklkKGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgW0N1
c3RvbV0gbG9uZyB3cmFwT2JqZWN0KGluIERPTU9iamVjdCBvYmplY3QsIGluIERPTVN0cmluZyBv
YmplY3RHcm91cCk7Ci0gICAgICAgIFtDdXN0b21dIERPTU9iamVjdCB1bndyYXBPYmplY3QoaW4g
bG9uZyBvYmplY3RJZCk7CiAgICAgICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChp
biBET01TdHJpbmcgb2JqZWN0R3JvdXApOwotICAgICAgICBbQ3VzdG9tXSBpbnQgcHVzaE5vZGVQ
YXRoVG9Gcm9udGVuZChpbiBET01PYmplY3Qgbm9kZSwgaW4gYm9vbGVhbiBzZWxlY3RJblVJKTsK
LSAgICAgICAgdm9pZCBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0KGluIERPTVN0cmluZyBub2RlSWRz
KTsKKyAgICAgICAgdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGluIGxvbmcgY2Fs
bElkLCBpbiBET01TdHJpbmcganNvblJlc3VsdCk7CisKICNpZiBkZWZpbmVkKEVOQUJMRV9EQVRB
QkFTRSkgJiYgRU5BQkxFX0RBVEFCQVNFCi0gICAgICAgIFtDdXN0b21dIHZvaWQgc2VsZWN0RGF0
YWJhc2UoaW4gRE9NT2JqZWN0IGRhdGFiYXNlKTsKLSAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0
IGRhdGFiYXNlRm9ySWQoaW4gbG9uZyBkYXRhYmFzZUlkKTsKKyAgICAgICAgdm9pZCBnZXREYXRh
YmFzZVRhYmxlTmFtZXMoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgZGF0YWJhc2VJZCk7CiAjZW5k
aWYKKwogI2lmIGRlZmluZWQoRU5BQkxFX0RPTV9TVE9SQUdFKSAmJiBFTkFCTEVfRE9NX1NUT1JB
R0UKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZWxlY3RET01TdG9yYWdlKGluIERPTU9iamVjdCBz
dG9yYWdlKTsKICAgICAgICAgdm9pZCBnZXRET01TdG9yYWdlRW50cmllcyhpbiBsb25nIGNhbGxJ
ZCwgaW4gbG9uZyBzdG9yYWdlSWQpOwogICAgICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGlu
IGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3JhZ2VJZCwgaW4gRE9NU3RyaW5nIGtleSwgaW4gRE9N
U3RyaW5nIHZhbHVlKTsKICAgICAgICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShpbiBsb25n
IGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQsIGluIERPTVN0cmluZyBrZXkpOwogI2VuZGlmCi0g
ICAgICAgIHZvaWQgcmVwb3J0RGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2Fs
bElkLCBpbiBET01TdHJpbmcgcmVzdWx0LCBpbiBib29sZWFuIGlzRXhjZXB0aW9uKTsKLSAgICAg
ICAgdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGluIGxvbmcgY2FsbElkLCBpbiBE
T01TdHJpbmcganNvblJlc3VsdCk7CisKKyAgICAgICAgLy8gQXQgbGVhc3QgdGhlc2Ugc2hvdWxk
IGdvIGludG8gSW5zcGVjdG9ySG9zdC5pZGwgLSB0aGV5IGFyZSBub3QgYWJvdXQgaW5zcGVjdGVk
IHBhZ2UuCisgICAgICAgIFtDdXN0b21dIHZvaWQgc2VhcmNoKGluIE5vZGUgbm9kZSwgaW4gRE9N
U3RyaW5nIHF1ZXJ5KTsKKyAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IHNldHRpbmcoaW4gRE9N
U3RyaW5nIGtleSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U2V0dGluZyhpbiBET01TdHJp
bmcga2V5LCBpbiBET01PYmplY3QgIHZhbHVlKTsKKyAgICAgICAgRE9NU3RyaW5nIGxvY2FsaXpl
ZFN0cmluZ3NVUkwoKTsKKyAgICAgICAgRE9NU3RyaW5nIGhpZGRlblBhbmVscygpOworICAgICAg
ICBET01TdHJpbmcgcGxhdGZvcm0oKTsKKyAgICAgICAgRE9NU3RyaW5nIHBvcnQoKTsKKyAgICAg
ICAgdm9pZCBhZGRSZXNvdXJjZVNvdXJjZVRvRnJhbWUoaW4gbG9uZyBpZGVudGlmaWVyLCBpbiBO
b2RlIGZyYW1lKTsKKyAgICAgICAgYm9vbGVhbiBhZGRTb3VyY2VUb0ZyYW1lKGluIERPTVN0cmlu
ZyBtaW1lVHlwZSwgaW4gRE9NU3RyaW5nIHNvdXJjZVZhbHVlLCBpbiBOb2RlIGZyYW1lKTsKICAg
ICB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBk
ZGIxM2QyLi4xOTE2M2JlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiCkBAIC0xMzUsNiArMTM2LDcgQEAgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQq
IGNsaWVudCkKICAgICAsIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBt
X3Jlc291cmNlVHJhY2tpbmdTZXR0aW5nc0xvYWRlZChmYWxzZSkKICAgICAsIG1faW5zcGVjdG9y
QmFja2VuZChJbnNwZWN0b3JCYWNrZW5kOjpjcmVhdGUodGhpcywgY2xpZW50KSkKKyAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRIb3N0KEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKHRoaXMpKQogICAg
ICwgbV9sYXN0Qm91bmRPYmplY3RJZCgxKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogICAgICwgbV9kZWJ1Z2dlckVuYWJsZWQoZmFsc2UpCkBAIC0xNzQsMTUgKzE3NiwxNyBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiAgICAgcmVsZWFzZURP
TUFnZW50KCk7CiAKICAgICBtX2luc3BlY3RvckJhY2tlbmQtPmRpc2Nvbm5lY3RDb250cm9sbGVy
KCk7CisgICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPmRpc2Nvbm5lY3RDb250cm9sbGVyKCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7
CiAgICAgY2xvc2UoKTsKIAotICAgIGlmIChtX3NjcmlwdFN0YXRlKQotICAgICAgICBTY3JpcHRH
bG9iYWxPYmplY3Q6OnJlbW92ZShtX3NjcmlwdFN0YXRlLCAiSW5zcGVjdG9yQ29udHJvbGxlciIp
OwotCisgICAgaWYgKG1fc2NyaXB0U3RhdGUpIHsKKyAgICAgICAgU2NyaXB0R2xvYmFsT2JqZWN0
OjpyZW1vdmUobV9zY3JpcHRTdGF0ZSwgIkluc3BlY3RvckJhY2tlbmQiKTsKKyAgICAgICAgU2Ny
aXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUobV9zY3JpcHRTdGF0ZSwgIkluamVjdGVkU2NyaXB0SG9z
dCIpOworICAgIH0KICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKICAgICBtX2luc3BlY3Rl
ZFBhZ2UgPSAwOwogCkBAIC01MjIsNyArNTI2LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUoKQogICAgIC8vIEdyYW50IHRoZSBpbnNwZWN0
b3IgdGhlIGFiaWxpdHkgdG8gc2NyaXB0IHRoZSBpbnNwZWN0ZWQgcGFnZS4KICAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ncmFudFVuaXZlcnNh
bEFjY2VzcygpOwogICAgIG1fc2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZUZyb21QYWdlKG1fcGFn
ZSk7Ci0gICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQobV9zY3JpcHRTdGF0ZSwgIkluc3BlY3Rv
ckNvbnRyb2xsZXIiLCBtX2luc3BlY3RvckJhY2tlbmQuZ2V0KCkpOworICAgIFNjcmlwdEdsb2Jh
bE9iamVjdDo6c2V0KG1fc2NyaXB0U3RhdGUsICJJbnNwZWN0b3JCYWNrZW5kIiwgbV9pbnNwZWN0
b3JCYWNrZW5kLmdldCgpKTsKKyAgICBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChtX3NjcmlwdFN0
YXRlLCAiSW5qZWN0ZWRTY3JpcHRIb3N0IiwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdE9iamVjdFJlYWR5KCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAyMmJkMDc2Li44OTVjMmJkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02Miw2ICs2Miw3IEBA
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OworY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0Owog
Y2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIElu
c3BlY3RvckRPTUFnZW50OwpAQCAtMTY2LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB+SW5zcGVj
dG9yQ29udHJvbGxlcigpOwogCiAgICAgSW5zcGVjdG9yQmFja2VuZCogaW5zcGVjdG9yQmFja2Vu
ZCgpIHsgcmV0dXJuIG1faW5zcGVjdG9yQmFja2VuZC5nZXQoKTsgfQorICAgIEluamVjdGVkU2Ny
aXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhv
c3QuZ2V0KCk7IH0KIAogICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwogICAgIHZv
aWQgcGFnZURlc3Ryb3llZCgpIHsgbV9wYWdlID0gMDsgfQpAQCAtMjkzLDYgKzI5NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgc2NyaXB0KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgSW5qZWN0
ZWRTY3JpcHRIb3N0OwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogICAgIC8v
IEZvbGxvd2luZyBhcmUgdXNlZCBmcm9tIEluc3BlY3RvckJhY2tlbmQgYW5kIGludGVybmFsbHku
CiAgICAgdm9pZCBzY3JpcHRPYmplY3RSZWFkeSgpOwpAQCAtMzg4LDYgKzM5MSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkOwogICAgIGJvb2wgbV9yZXNv
dXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQ7CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmQ+
IG1faW5zcGVjdG9yQmFja2VuZDsKKyAgICBSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2lu
amVjdGVkU2NyaXB0SG9zdDsKICAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0VmFsdWU+IG1faWRU
b1dyYXBwZWRPYmplY3Q7CiAgICAgT2JqZWN0R3JvdXBzTWFwIG1fb2JqZWN0R3JvdXBzOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludC5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50LmpzCmluZGV4IDI5Mjk3NWEuLjVk
NDZjYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50LmpzCkBAIC04
OSw3ICs4OSw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImNvbmRpdGlvbi1jaGFuZ2VkIik7CiAK
ICAgICAgICAgaWYgKHRoaXMuZW5hYmxlZCkKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIudXBkYXRlQnJlYWtwb2ludCh0aGlzLnNvdXJjZUlELCB0aGlzLmxpbmUsIGMpOworICAgICAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC51cGRhdGVCcmVha3BvaW50KHRoaXMuc291cmNlSUQsIHRo
aXMubGluZSwgYyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCmluZGV4IDFhOTlmMTYuLjlkNGZlNTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGVi
YXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1Np
ZGViYXJQYW5lLmpzCkBAIC01OCwxMSArNTgsMTEgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRz
U2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLmxpc3RFbGVtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgh
SW5zcGVjdG9yQ29udHJvbGxlci5kZWJ1Z2dlckVuYWJsZWQoKSB8fCAhYnJlYWtwb2ludC5zb3Vy
Y2VJRCkKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmRlYnVnZ2VyRW5hYmxlZCgpIHx8
ICFicmVha3BvaW50LnNvdXJjZUlEKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlm
IChicmVha3BvaW50LmVuYWJsZWQpCi0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmFk
ZEJyZWFrcG9pbnQoYnJlYWtwb2ludC5zb3VyY2VJRCwgYnJlYWtwb2ludC5saW5lLCBicmVha3Bv
aW50LmNvbmRpdGlvbik7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmFkZEJyZWFrcG9p
bnQoYnJlYWtwb2ludC5zb3VyY2VJRCwgYnJlYWtwb2ludC5saW5lLCBicmVha3BvaW50LmNvbmRp
dGlvbik7CiAgICAgfSwKIAogICAgIF9hcHBlbmRCcmVha3BvaW50RWxlbWVudDogZnVuY3Rpb24o
YnJlYWtwb2ludCkKQEAgLTEzNSwxMCArMTM1LDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50
c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5lbXB0eUVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCFJbnNwZWN0b3JDb250cm9sbGVyLmRlYnVnZ2VyRW5hYmxlZCgpIHx8ICFicmVha3BvaW50LnNv
dXJjZUlEKQorICAgICAgICBpZiAoIUluc3BlY3RvckJhY2tlbmQuZGVidWdnZXJFbmFibGVkKCkg
fHwgIWJyZWFrcG9pbnQuc291cmNlSUQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
SW5zcGVjdG9yQ29udHJvbGxlci5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQs
IGJyZWFrcG9pbnQubGluZSk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlQnJlYWtw
b2ludChicmVha3BvaW50LnNvdXJjZUlELCBicmVha3BvaW50LmxpbmUpOwogICAgIH0sCiAKICAg
ICBfYnJlYWtwb2ludEVuYWJsZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTQ4LDEzICsx
NDgsMTMgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgY2hlY2tib3ggPSBicmVha3BvaW50Ll9icmVha3BvaW50TGlzdEVsZW1l
bnQuZmlyc3RDaGlsZDsKICAgICAgICAgY2hlY2tib3guY2hlY2tlZCA9IGJyZWFrcG9pbnQuZW5h
YmxlZDsKIAotICAgICAgICBpZiAoIUluc3BlY3RvckNvbnRyb2xsZXIuZGVidWdnZXJFbmFibGVk
KCkgfHwgIWJyZWFrcG9pbnQuc291cmNlSUQpCisgICAgICAgIGlmICghSW5zcGVjdG9yQmFja2Vu
ZC5kZWJ1Z2dlckVuYWJsZWQoKSB8fCAhYnJlYWtwb2ludC5zb3VyY2VJRCkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBpZiAoYnJlYWtwb2ludC5lbmFibGVkKQotICAgICAgICAgICAg
SW5zcGVjdG9yQ29udHJvbGxlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQsIGJy
ZWFrcG9pbnQubGluZSwgYnJlYWtwb2ludC5jb25kaXRpb24pOworICAgICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQsIGJyZWFrcG9pbnQu
bGluZSwgYnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBJ
bnNwZWN0b3JDb250cm9sbGVyLnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludC5zb3VyY2VJRCwg
YnJlYWtwb2ludC5saW5lKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlQnJl
YWtwb2ludChicmVha3BvaW50LnNvdXJjZUlELCBicmVha3BvaW50LmxpbmUpOwogICAgIH0sCiAK
ICAgICBfYnJlYWtwb2ludFRleHRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCAxNjEyYWM1Li4wMTY3YjRjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0yODIsNyAr
MjgyLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICBjbGVh
ck1lc3NhZ2VzOiBmdW5jdGlvbihjbGVhckluc3BlY3RvckNvbnRyb2xsZXIpCiAgICAgewogICAg
ICAgICBpZiAoY2xlYXJJbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICAgICAgSW5zcGVjdG9y
Q29udHJvbGxlci5jbGVhck1lc3NhZ2VzKGZhbHNlKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuY2xlYXJNZXNzYWdlcyhmYWxzZSk7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFu
ZWxzLnJlc291cmNlcykKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2Vz
LmNsZWFyTWVzc2FnZXMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29r
aWVJdGVtc1ZpZXcuanMKaW5kZXggNWFiZGJlYS4uMGNhYTFiNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCkBAIC0yNjcsNyArMjY3LDcgQEAg
V2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgX2RlbGV0ZUNv
b2tpZUNhbGxiYWNrOiBmdW5jdGlvbihub2RlKQogICAgIHsKICAgICAgICAgdmFyIGNvb2tpZSA9
IG5vZGUuY29va2llOwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmRlbGV0ZUNvb2tpZShj
b29raWUubmFtZSwgdGhpcy5fY29va2llRG9tYWluKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5kZWxldGVDb29raWUoY29va2llLm5hbWUsIHRoaXMuX2Nvb2tpZURvbWFpbik7CiAgICAgICAg
IHRoaXMudXBkYXRlKCk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzCmluZGV4IDI1MmI1ZjguLmJkYWNlN2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMKQEAgLTMyNywyNSArMzI3LDI1IEBAIFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYWxsYmFjayhwYXJlbnQuY2hpbGRyZW4pOwog
ICAgICAgICB9CiAgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3Jh
cChteWNhbGxiYWNrKTsKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5nZXRDaGlsZE5vZGVz
KGNhbGxJZCwgcGFyZW50LmlkKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRDaGlsZE5v
ZGVzKGNhbGxJZCwgcGFyZW50LmlkKTsKICAgICB9LAogCiAgICAgc2V0QXR0cmlidXRlQXN5bmM6
IGZ1bmN0aW9uKG5vZGUsIG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZh
ciBteWNhbGxiYWNrID0gdGhpcy5fZGlkQXBwbHlEb21DaGFuZ2UuYmluZCh0aGlzLCBub2RlLCBj
YWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc2V0QXR0cmlidXRlKFdlYklu
c3BlY3Rvci5DYWxsYmFjay53cmFwKG15Y2FsbGJhY2spLCBub2RlLmlkLCBuYW1lLCB2YWx1ZSk7
CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0QXR0cmlidXRlKFdlYkluc3BlY3Rvci5DYWxs
YmFjay53cmFwKG15Y2FsbGJhY2spLCBub2RlLmlkLCBuYW1lLCB2YWx1ZSk7CiAgICAgfSwKIAog
ICAgIHJlbW92ZUF0dHJpYnV0ZUFzeW5jOiBmdW5jdGlvbihub2RlLCBuYW1lLCBjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIHZhciBteWNhbGxiYWNrID0gdGhpcy5fZGlkQXBwbHlEb21DaGFuZ2Uu
YmluZCh0aGlzLCBub2RlLCBjYWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIu
cmVtb3ZlQXR0cmlidXRlKFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKG15Y2FsbGJhY2spLCBu
b2RlLmlkLCBuYW1lKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVBdHRyaWJ1dGUo
V2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAobXljYWxsYmFjayksIG5vZGUuaWQsIG5hbWUpOwog
ICAgIH0sCiAKICAgICBzZXRUZXh0Tm9kZVZhbHVlQXN5bmM6IGZ1bmN0aW9uKG5vZGUsIHRleHQs
IGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIG15Y2FsbGJhY2sgPSB0aGlzLl9kaWRBcHBs
eURvbUNoYW5nZS5iaW5kKHRoaXMsIG5vZGUsIGNhbGxiYWNrKTsKLSAgICAgICAgSW5zcGVjdG9y
Q29udHJvbGxlci5zZXRUZXh0Tm9kZVZhbHVlKFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKG15
Y2FsbGJhY2spLCBub2RlLmlkLCB0ZXh0KTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRU
ZXh0Tm9kZVZhbHVlKFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKG15Y2FsbGJhY2spLCBub2Rl
LmlkLCB0ZXh0KTsKICAgICB9LAogCiAgICAgX2RpZEFwcGx5RG9tQ2hhbmdlOiBmdW5jdGlvbihu
b2RlLCBjYWxsYmFjaywgc3VjY2VzcykKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBXZWJJbnNwZWN0b3Iu
Q29va2llcy5nZXRDb29raWVzQXN5bmMgPSBmdW5jdGlvbihjYWxsYmFjaywgY29va2llRG9tYWlu
KQogICAgICAgICAgICAgY2FsbGJhY2soY29va2llcywgdHJ1ZSk7CiAgICAgfQogICAgIHZhciBj
YWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChteWNhbGxiYWNrKTsKLSAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmdldENvb2tpZXMoY2FsbElkLCBjb29raWVEb21haW4pOworICAgIElu
c3BlY3RvckJhY2tlbmQuZ2V0Q29va2llcyhjYWxsSWQsIGNvb2tpZURvbWFpbik7CiB9CiAKIFdl
Ykluc3BlY3Rvci5Db29raWVzLmJ1aWxkQ29va2llc0Zyb21TdHJpbmcgPSBmdW5jdGlvbihyYXdD
b29raWVTdHJpbmcpCkBAIC00NzcsNyArNDc3LDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVu
ZXJzLmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZUFzeW5jID0gZnVuY3Rpb24obm9kZSwgY2FsbGIK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFj
ay53cmFwKGNhbGxiYWNrKTsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyLmdldEV2ZW50TGlzdGVu
ZXJzRm9yTm9kZShjYWxsSWQsIG5vZGUuaWQpOworICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0RXZl
bnRMaXN0ZW5lcnNGb3JOb2RlKGNhbGxJZCwgbm9kZS5pZCk7CiB9CiAKIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uID0gZnVuY3Rpb24ocGF5bG9hZCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKaW5kZXggMDNhMTBiZi4uYzVmNjU4ZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAgLTU3LDE5ICs1NywxOSBAQCBX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0RW50cmllczogZnVu
Y3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9y
LkNhbGxiYWNrLndyYXAoY2FsbGJhY2spOwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmdl
dERPTVN0b3JhZ2VFbnRyaWVzKGNhbGxJZCwgdGhpcy5faWQpOworICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLmdldERPTVN0b3JhZ2VFbnRyaWVzKGNhbGxJZCwgdGhpcy5faWQpOwogICAgIH0sCiAg
ICAgCiAgICAgc2V0SXRlbTogZnVuY3Rpb24oa2V5LCB2YWx1ZSwgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoY2FsbGJhY2sp
OwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnNldERPTVN0b3JhZ2VJdGVtKGNhbGxJZCwg
dGhpcy5faWQsIGtleSwgdmFsdWUpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldERPTVN0
b3JhZ2VJdGVtKGNhbGxJZCwgdGhpcy5faWQsIGtleSwgdmFsdWUpOwogICAgIH0sCiAgICAgCiAg
ICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZh
ciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChjYWxsYmFjayk7Ci0gICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIucmVtb3ZlRE9NU3RvcmFnZUl0ZW0oY2FsbElkLCB0aGlzLl9p
ZCwga2V5KTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01TdG9yYWdlSXRlbShj
YWxsSWQsIHRoaXMuX2lkLCBrZXkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RhdGFiYXNlLmpzCmluZGV4IDFhMzQ4ZmMuLjVlZGVmYjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGF0YWJhc2UuanMKQEAgLTgyLDcgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLkRh
dGFiYXNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNhbGxiYWNrKG5hbWVzLnNvcnQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay53
cmFwKHNvcnRpbmdDYWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZ2V0RGF0
YWJhc2VUYWJsZU5hbWVzKGNhbGxJZCwgdGhpcy5faWQpOworICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLmdldERhdGFiYXNlVGFibGVOYW1lcyhjYWxsSWQsIHRoaXMuX2lkKTsKICAgICB9LAogICAg
IAogICAgIGV4ZWN1dGVTcWw6IGZ1bmN0aW9uKHF1ZXJ5LCBvblN1Y2Nlc3MsIG9uRXJyb3IpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDc0ZjVk
YTYuLmVjOWIzMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCkBAIC01OCw4ICs1OCw4IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVu
Y3Rpb24oKQogICAgICAgICB0aGlzLnBhbmVsLnVwZGF0ZVByb3BlcnRpZXMoKTsKICAgICAgICAg
dGhpcy5wYW5lbC51cGRhdGVFdmVudExpc3RlbmVycygpOwogCi0gICAgICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyLnNlYXJjaGluZ0Zvck5vZGUoKSkgewotICAgICAgICAgICAgSW5zcGVjdG9y
Q29udHJvbGxlci50b2dnbGVOb2RlU2VhcmNoKCk7CisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNr
ZW5kLnNlYXJjaGluZ0Zvck5vZGUoKSkgeworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50
b2dnbGVOb2RlU2VhcmNoKCk7CiAgICAgICAgICAgICB0aGlzLnBhbmVsLm5vZGVTZWFyY2hCdXR0
b24udG9nZ2xlZCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmICh0aGlzLl9mb2N1c2Vk
RE9NTm9kZSkKQEAgLTE1MCw4ICsxNTAsOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmhvdmVyZWRET01Ob2RlID0gbnVs
bDsKIAotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlci5zZWFyY2hpbmdGb3JOb2RlKCkp
IHsKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIudG9nZ2xlTm9kZVNlYXJjaCgpOwor
ICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5zZWFyY2hpbmdGb3JOb2RlKCkpIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlTm9kZVNlYXJjaCgpOwogICAgICAgICAgICAg
dGhpcy5ub2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0s
CkBAIC0xNjksOCArMTY5LDggQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIFdlYkluc3BlY3Rvci5ob3ZlcmVkRE9NTm9kZSA9IG51bGw7CiAKLSAg
ICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIuc2VhcmNoaW5nRm9yTm9kZSgpKSB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnRvZ2dsZU5vZGVTZWFyY2goKTsKKyAgICAgICAg
aWYgKEluc3BlY3RvckJhY2tlbmQuc2VhcmNoaW5nRm9yTm9kZSgpKSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnRvZ2dsZU5vZGVTZWFyY2goKTsKICAgICAgICAgICAgIHRoaXMubm9k
ZVNlYXJjaEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMTg1LDcgKzE4
NSw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICAvLyBJZiB0aGUgd2luZG93IGlzbid0IHZpc2libGUsIHJldHVybiBlYXJseSBzbyB0aGUgRE9N
IHRyZWUgaXNuJ3QgYnVpbHQKICAgICAgICAgLy8gYW5kIG11dGF0aW9uIGV2ZW50IGxpc3RlbmVy
cyBhcmUgbm90IGFkZGVkLgotICAgICAgICBpZiAoIUluc3BlY3RvckNvbnRyb2xsZXIuaXNXaW5k
b3dWaXNpYmxlKCkpCisgICAgICAgIGlmICghSW5zcGVjdG9yQmFja2VuZC5pc1dpbmRvd1Zpc2li
bGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgaW5zcGVjdGVkUm9vdERv
Y3VtZW50ID0gZG9tV2luZG93LmRvY3VtZW50OwpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLmNsZWFyRGF0YSgpOwogICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmNvcHlOb2RlKHRo
aXMuZm9jdXNlZERPTU5vZGUuaWQpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmNvcHlOb2Rl
KHRoaXMuZm9jdXNlZERPTU5vZGUuaWQpOwogICAgIH0sCiAKICAgICByaWdodFNpZGViYXJSZXNp
emVyRHJhZ1N0YXJ0OiBmdW5jdGlvbihldmVudCkKQEAgLTEwNTIsOSArMTA1Miw5IEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9ub2RlU2VhcmNoQnV0
dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyLnRvZ2dsZU5vZGVTZWFyY2goKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50b2dn
bGVOb2RlU2VhcmNoKCk7CiAKLSAgICAgICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQg
PSBJbnNwZWN0b3JDb250cm9sbGVyLnNlYXJjaGluZ0Zvck5vZGUoKTsKKyAgICAgICAgdGhpcy5u
b2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQgPSBJbnNwZWN0b3JCYWNrZW5kLnNlYXJjaGluZ0Zvck5v
ZGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggYzkzYzUwZS4uZjBkYjI0NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTgz
LDcgKzgzLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5mb2N1c2VkTm9kZUNoYW5nZWQoKTsKIAogICAgICAgICAgICAg
aWYgKHggJiYgIXRoaXMuc3VwcHJlc3NTZWxlY3RIaWdobGlnaHQpIHsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JDb250cm9sbGVyLmhpZ2hsaWdodERPTU5vZGUoeC5pZCk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5oaWdobGlnaHRET01Ob2RlKHguaWQpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKCJfcmVzdG9yZVByZXZpb3VzSGlnaGxpZ2h0Tm9kZVRpbWVvdXQiIGluIHRo
aXMpCiAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXN0b3JlUHJldmlv
dXNIaWdobGlnaHROb2RlVGltZW91dCk7CkBAIC05Miw5ICs5Miw5IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgIHZhciBob3ZlcmVkTm9kZSA9IFdlYkluc3BlY3Rvci5ob3ZlcmVkRE9N
Tm9kZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhvdmVyZWROb2RlKQotICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWdobGlnaHRET01Ob2RlKGhvdmVyZWRO
b2RlLmlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuaGlnaGxp
Z2h0RE9NTm9kZShob3ZlcmVkTm9kZS5pZCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuaGlkZURPTU5vZGVIaWdo
bGlnaHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuaGlkZURP
TU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICB0
aGlzLl9yZXN0b3JlUHJldmlvdXNIaWdobGlnaHROb2RlVGltZW91dCA9IHNldFRpbWVvdXQocmVz
dG9yZUhpZ2hsaWdodFRvSG92ZXJlZE5vZGUsIDIwMDApOwpAQCAtOTE1LDcgKzkxNSw3IEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChyZW1vdmVO
b2RlQ2FsbGJhY2spOwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnJlbW92ZU5vZGUoY2Fs
bElkLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZW1vdmVOb2RlKGNhbGxJZCwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5l
cnNTaWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3Rl
bmVyc1NpZGViYXJQYW5lLmpzCmluZGV4IDI5MzgxOTYuLmM4YjdlY2YgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5l
LmpzCkBAIC0xMDgsNyArMTA4LDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJh
clBhbmUucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnNl
dHRpbmdzU2VsZWN0RWxlbWVudFt0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5zZWxlY3RlZElu
ZGV4XTsKICAgICAgICAgUHJlZmVyZW5jZXMuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPSBzZWxlY3Rl
ZE9wdGlvbi52YWx1ZTsKIAotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnNldFNldHRpbmco
ImV2ZW50LWxpc3RlbmVycy1maWx0ZXIiLCBQcmVmZXJlbmNlcy5ldmVudExpc3RlbmVyc0ZpbHRl
cik7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0U2V0dGluZygiZXZlbnQtbGlzdGVuZXJz
LWZpbHRlciIsIFByZWZlcmVuY2VzLmV2ZW50TGlzdGVuZXJzRmlsdGVyKTsKIAogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2VjdGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAg
ICB0aGlzLnNlY3Rpb25zW2ldLnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0luamVjdGVkU2NyaXB0LmpzCmluZGV4IDNmMzkzN2MuLmNhMzczYTEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKQEAgLTU2MSw3ICs1NjEs
NyBAQCBJbmplY3RlZFNjcmlwdC5fZXZhbHVhdGVBbmRXcmFwID0gZnVuY3Rpb24oZXZhbEZ1bmN0
aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIG9iagogewogICAgIHZhciByZXN1bHQgPSB7fTsKICAg
ICB0cnkgewotICAgICAgICByZXN1bHQudmFsdWUgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBP
YmplY3QoSW5qZWN0ZWRTY3JpcHQuX2V2YWx1YXRlT24oZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4
cHJlc3Npb24pLCBvYmplY3RHcm91cCk7CisgICAgICAgIHJlc3VsdC52YWx1ZSA9IEluamVjdGVk
U2NyaXB0SG9zdC53cmFwT2JqZWN0KEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZU9uKGV2YWxGdW5j
dGlvbiwgb2JqZWN0LCBleHByZXNzaW9uKSwgb2JqZWN0R3JvdXApOwogICAgICAgICAvLyBIYW5k
bGUgZXJyb3IgdGhhdCBtaWdodCBoYXZlIGhhcHBlbmVkIHdoaWxlIGRlc2NyaWJpbmcgcmVzdWx0
LgogICAgICAgICBpZiAocmVzdWx0LnZhbHVlLmVycm9yVGV4dCkgewogICAgICAgICAgICAgcmVz
dWx0LnZhbHVlID0gcmVzdWx0LnZhbHVlLmVycm9yVGV4dDsKQEAgLTY0NiwxMCArNjQ2LDEwIEBA
IEluamVjdGVkU2NyaXB0LnBlcmZvcm1TZWFyY2ggPSBmdW5jdGlvbih3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5KQogCiAgICAgICAgICAgICBub2RlW3NlYXJjaFJlc3VsdHNQcm9wZXJ0eV0gPSB0cnVl
OwogICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHQuX3NlYXJjaFJlc3VsdHMucHVzaChub2RlKTsK
LSAgICAgICAgICAgIHZhciBub2RlSWQgPSBJbnNwZWN0b3JDb250cm9sbGVyLnB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQobm9kZSwgZmFsc2UpOworICAgICAgICAgICAgdmFyIG5vZGVJZCA9IEluamVj
dGVkU2NyaXB0SG9zdC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUsIGZhbHNlKTsKICAgICAg
ICAgICAgIG5vZGVJZHMucHVzaChub2RlSWQpOwogICAgICAgICB9Ci0gICAgICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXIuYWRkTm9kZXNUb1NlYXJjaFJlc3VsdChub2RlSWRzLmpvaW4oIiwiKSk7Cisg
ICAgICAgIEluamVjdGVkU2NyaXB0SG9zdC5hZGROb2Rlc1RvU2VhcmNoUmVzdWx0KG5vZGVJZHMu
am9pbigiLCIpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBtYXRjaEV4YWN0SXRlbXMoZG9jKQpA
QCAtODQ4LDcgKzg0OCw3IEBAIEluamVjdGVkU2NyaXB0Lm9wZW5Jbkluc3BlY3RlZFdpbmRvdyA9
IGZ1bmN0aW9uKHVybCkKIAogSW5qZWN0ZWRTY3JpcHQuZ2V0Q2FsbEZyYW1lcyA9IGZ1bmN0aW9u
KCkKIHsKLSAgICB2YXIgY2FsbEZyYW1lID0gSW5zcGVjdG9yQ29udHJvbGxlci5jdXJyZW50Q2Fs
bEZyYW1lKCk7CisgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50
Q2FsbEZyYW1lKCk7CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtODcxLDcgKzg3MSw3IEBAIEluamVjdGVkU2NyaXB0LmV2YWx1YXRlSW5DYWxsRnJhbWUg
PSBmdW5jdGlvbihjYWxsRnJhbWVJZCwgY29kZSwgb2JqZWN0R3JvdXApCiAKIEluamVjdGVkU2Ny
aXB0Ll9jYWxsRnJhbWVGb3JJZCA9IGZ1bmN0aW9uKGlkKQogewotICAgIHZhciBjYWxsRnJhbWUg
PSBJbnNwZWN0b3JDb250cm9sbGVyLmN1cnJlbnRDYWxsRnJhbWUoKTsKKyAgICB2YXIgY2FsbEZy
YW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmN1cnJlbnRDYWxsRnJhbWUoKTsKICAgICB3aGlsZSAo
LS1pZCA+PSAwICYmIGNhbGxGcmFtZSkKICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNh
bGxlcjsKICAgICByZXR1cm4gY2FsbEZyYW1lOwpAQCAtODc5LDcgKzg3OSw3IEBAIEluamVjdGVk
U2NyaXB0Ll9jYWxsRnJhbWVGb3JJZCA9IGZ1bmN0aW9uKGlkKQogCiBJbmplY3RlZFNjcmlwdC5f
Y2xlYXJDb25zb2xlTWVzc2FnZXMgPSBmdW5jdGlvbigpCiB7Ci0gICAgSW5zcGVjdG9yQ29udHJv
bGxlci5jbGVhck1lc3NhZ2VzKHRydWUpOworICAgIEluamVjdGVkU2NyaXB0SG9zdC5jbGVhck1l
c3NhZ2VzKHRydWUpOwogfQogCiBJbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0
aW9uKG8pCkBAIC04OTAsMTQgKzg5MCwxNCBAQCBJbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVj
dCA9IGZ1bmN0aW9uKG8pCiAgICAgdmFyIGluc3BlY3RlZFdpbmRvdyA9IEluamVjdGVkU2NyaXB0
Ll93aW5kb3coKTsKICAgICBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5sb2cobyk7CiAgICAgaWYg
KE9iamVjdC50eXBlKG8pID09PSAibm9kZSIpIHsKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ci5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG8sIHRydWUpOworICAgICAgICBJbmplY3RlZFNjcmlw
dEhvc3QucHVzaE5vZGVQYXRoVG9Gcm9udGVuZChvLCB0cnVlKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBzd2l0Y2ggKE9iamVjdC5kZXNjcmliZShvKSkgewogICAgICAgICAgICAgY2FzZSAiRGF0
YWJhc2UiOgotICAgICAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc2VsZWN0RGF0YWJh
c2Uobyk7CisgICAgICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LnNlbGVjdERhdGFiYXNl
KG8pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiU3RvcmFnZSI6
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zZWxlY3RET01TdG9yYWdlKG8p
OworICAgICAgICAgICAgICAgIEluamVjdGVkU2NyaXB0SG9zdC5zZWxlY3RET01TdG9yYWdlKG8p
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtOTA2LDEwICs5
MDYsMTAgQEAgSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QgPSBmdW5jdGlvbihvKQogSW5q
ZWN0ZWRTY3JpcHQuX2NvcHkgPSBmdW5jdGlvbihvKQogewogICAgIGlmIChPYmplY3QudHlwZShv
KSA9PT0gIm5vZGUiKSB7Ci0gICAgICAgIHZhciBub2RlSWQgPSBJbnNwZWN0b3JDb250cm9sbGVy
LnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobywgZmFsc2UpOwotICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyLmNvcHlOb2RlKG5vZGVJZCk7CisgICAgICAgIHZhciBub2RlSWQgPSBJbmplY3RlZFNj
cmlwdEhvc3QucHVzaE5vZGVQYXRoVG9Gcm9udGVuZChvLCBmYWxzZSk7CisgICAgICAgIEluamVj
dGVkU2NyaXB0SG9zdC5jb3B5Tm9kZShub2RlSWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXIuY29weVRleHQobyk7CisgICAgICAgIEluamVjdGVkU2NyaXB0SG9z
dC5jb3B5VGV4dChvKTsKICAgICB9CiB9CiAKQEAgLTk4Niw5ICs5ODYsOSBAQCBJbmplY3RlZFNj
cmlwdC5fZW5zdXJlQ29tbWFuZExpbmVBUElJbnN0YWxsZWQgPSBmdW5jdGlvbihldmFsRnVuY3Rp
b24sIGV2YWxPYmplYwogICAgICAgICBnZXQgJDQoKSB7IHJldHVybiBjb25zb2xlLl9pbnNwZWN0
b3JDb21tYW5kTGluZUFQSS5faW5zcGVjdGVkTm9kZXNbNF0gfSwgXG5cCiAgICAgfTsiKTsKIAot
ICAgIGluc3BlY3RvckNvbW1hbmRMaW5lQVBJLmNsZWFyID0gSW5zcGVjdG9yQ29udHJvbGxlci53
cmFwQ2FsbGJhY2soSW5qZWN0ZWRTY3JpcHQuX2NsZWFyQ29uc29sZU1lc3NhZ2VzKTsKLSAgICBp
bnNwZWN0b3JDb21tYW5kTGluZUFQSS5pbnNwZWN0ID0gSW5zcGVjdG9yQ29udHJvbGxlci53cmFw
Q2FsbGJhY2soSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QpOwotICAgIGluc3BlY3RvckNv
bW1hbmRMaW5lQVBJLmNvcHkgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhJbmpl
Y3RlZFNjcmlwdC5fY29weSk7CisgICAgaW5zcGVjdG9yQ29tbWFuZExpbmVBUEkuY2xlYXIgPSBJ
bmplY3RlZFNjcmlwdEhvc3Qud3JhcENhbGxiYWNrKEluamVjdGVkU2NyaXB0Ll9jbGVhckNvbnNv
bGVNZXNzYWdlcyk7CisgICAgaW5zcGVjdG9yQ29tbWFuZExpbmVBUEkuaW5zcGVjdCA9IEluamVj
dGVkU2NyaXB0SG9zdC53cmFwQ2FsbGJhY2soSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3Qp
OworICAgIGluc3BlY3RvckNvbW1hbmRMaW5lQVBJLmNvcHkgPSBJbmplY3RlZFNjcmlwdEhvc3Qu
d3JhcENhbGxiYWNrKEluamVjdGVkU2NyaXB0Ll9jb3B5KTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQu
X3Jlc29sdmVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RQcm94eSkKQEAgLTEwMTIsMTQgKzEwMTIs
MTQgQEAgSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdyA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBUT0RP
OiByZXBsYWNlIHdpdGggJ3JldHVybiB3aW5kb3c7JyBvbmNlIHRoaXMgc2NyaXB0IGlzIGluamVj
dGVkIGludG8KICAgICAvLyB0aGUgcGFnZSdzIGNvbnRleHQuCi0gICAgcmV0dXJuIEluc3BlY3Rv
ckNvbnRyb2xsZXIuaW5zcGVjdGVkV2luZG93KCk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdC5pbnNwZWN0ZWRXaW5kb3coKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZCA9
IGZ1bmN0aW9uKG5vZGVJZCkKIHsKICAgICBpZiAoIW5vZGVJZCkKICAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgcmV0dXJuIEluc3BlY3RvckNvbnRyb2xsZXIubm9kZUZvcklkKG5vZGVJZCk7Cisg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5ub2RlRm9ySWQobm9kZUlkKTsKIH0KIAogSW5q
ZWN0ZWRTY3JpcHQuX29iamVjdEZvcklkID0gZnVuY3Rpb24ob2JqZWN0SWQpCkBAIC0xMDMxLDcg
KzEwMzEsNyBAQCBJbmplY3RlZFNjcmlwdC5fb2JqZWN0Rm9ySWQgPSBmdW5jdGlvbihvYmplY3RJ
ZCkKICAgICBpZiAodHlwZW9mIG9iamVjdElkID09PSAibnVtYmVyIikgewogICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChvYmplY3RJZCk7CiAgICAgfSBlbHNlIGlmICh0
eXBlb2Ygb2JqZWN0SWQgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JD
b250cm9sbGVyLnVud3JhcE9iamVjdChvYmplY3RJZCk7CisgICAgICAgIHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QudW53cmFwT2JqZWN0KG9iamVjdElkKTsKICAgICB9IGVsc2UgaWYgKHR5cGVv
ZiBvYmplY3RJZCA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVj
dGVkU2NyaXB0Ll9jYWxsRnJhbWVGb3JJZChvYmplY3RJZC5jYWxsRnJhbWUpOwogICAgICAgICBp
ZiAob2JqZWN0SWQudGhpc09iamVjdCkKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIEluamVjdGVkU2Ny
aXB0LnB1c2hOb2RlVG9Gcm9udGVuZCA9IGZ1bmN0aW9uKG9iamVjdFByb3h5KQogICAgIHZhciBv
YmplY3QgPSBJbmplY3RlZFNjcmlwdC5fcmVzb2x2ZU9iamVjdChvYmplY3RQcm94eSk7CiAgICAg
aWYgKCFvYmplY3QgfHwgT2JqZWN0LnR5cGUob2JqZWN0KSAhPT0gIm5vZGUiKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvckNvbnRyb2xsZXIucHVzaE5vZGVQYXRo
VG9Gcm9udGVuZChvYmplY3QsIGZhbHNlKTsKKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQob2JqZWN0LCBmYWxzZSk7CiB9CiAKIC8vIENhbGxlZCBm
cm9tIHdpdGhpbiBJbnNwZWN0b3JDb250cm9sbGVyIG9uIHRoZSAnaW5zcGVjdGVkIHBhZ2UnIHNp
ZGUuCkBAIC0xMTMwLDIzICsxMTMwLDIzIEBAIEluamVjdGVkU2NyaXB0LmV4ZWN1dGVTcWwgPSBm
dW5jdGlvbihjYWxsSWQsIGRhdGFiYXNlSWQsIHF1ZXJ5KQogICAgICAgICAgICAgICAgIGRhdGFb
Y29sdW1uSWRlbnRpZmllcl0gPSBTdHJpbmcodGV4dCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5yZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0
ZWRTY3JpcHQoY2FsbElkLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBmYWxzZSk7CisgICAgICAg
IEluamVjdGVkU2NyaXB0SG9zdC5yZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoY2Fs
bElkLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gZXJyb3JDYWxsYmFjayh0eCwgZXJyb3IpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyLnJlcG9ydERpZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChjYWxsSWQsIEpTT04uc3Ry
aW5naWZ5KGVycm9yKSwgZmFsc2UpOworICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QucmVwb3J0
RGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwgSlNPTi5zdHJpbmdpZnkoZXJyb3Ip
LCBmYWxzZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcXVlcnlUcmFuc2FjdGlvbih0eCkKICAg
ICB7Ci0gICAgICAgIHR4LmV4ZWN1dGVTcWwocXVlcnksIG51bGwsIEluc3BlY3RvckNvbnRyb2xs
ZXIud3JhcENhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjayksIEluc3BlY3RvckNvbnRyb2xsZXIud3Jh
cENhbGxiYWNrKGVycm9yQ2FsbGJhY2spKTsKKyAgICAgICAgdHguZXhlY3V0ZVNxbChxdWVyeSwg
bnVsbCwgSW5qZWN0ZWRTY3JpcHRIb3N0LndyYXBDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spLCBJ
bmplY3RlZFNjcmlwdEhvc3Qud3JhcENhbGxiYWNrKGVycm9yQ2FsbGJhY2spKTsKICAgICB9CiAK
LSAgICB2YXIgZGF0YWJhc2UgPSBJbnNwZWN0b3JDb250cm9sbGVyLmRhdGFiYXNlRm9ySWQoZGF0
YWJhc2VJZCk7CisgICAgdmFyIGRhdGFiYXNlID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmRhdGFiYXNl
Rm9ySWQoZGF0YWJhc2VJZCk7CiAgICAgaWYgKCFkYXRhYmFzZSkKICAgICAgICAgZXJyb3JDYWxs
YmFjayhudWxsLCB7IGNvZGUgOiAyIH0pOyAgLy8gUmV0dXJuIGFzIHVuZXhwZWN0ZWQgdmVyc2lv
bi4KLSAgICBkYXRhYmFzZS50cmFuc2FjdGlvbihJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxs
YmFjayhxdWVyeVRyYW5zYWN0aW9uKSwgSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2so
ZXJyb3JDYWxsYmFjaykpOworICAgIGRhdGFiYXNlLnRyYW5zYWN0aW9uKEluamVjdGVkU2NyaXB0
SG9zdC53cmFwQ2FsbGJhY2socXVlcnlUcmFuc2FjdGlvbiksIEluamVjdGVkU2NyaXB0SG9zdC53
cmFwQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMK
aW5kZXggYzZkNGI2NS4uMTI1ZmM5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcwpAQCAtNDcsNyArNDcsNyBAQCBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIgPSBmdW5jdGlvbihtZXRob2ROYW1lLCBhc3lu
YykKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKG5ldyBX
ZWJJbnNwZWN0b3IuQ29uc29sZVRleHRNZXNzYWdlKCJFcnJvciBkaXNwYXRjaGluZzogIiArIG1l
dGhvZE5hbWUpKTsKICAgICAgICAgfQogICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9y
LkNhbGxiYWNrLndyYXAobXlDYWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIu
ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwgbWV0aG9kTmFtZSwgYXJnc1N0cmluZywg
ISFhc3luYyk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGlzcGF0Y2hPbkluamVjdGVkU2Ny
aXB0KGNhbGxJZCwgbWV0aG9kTmFtZSwgYXJnc1N0cmluZywgISFhc3luYyk7CiAgICAgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tl
bmRTdHViLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRT
dHViLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzODhiZGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2Vu
ZFN0dWIuanMKQEAgLTAsMCArMSwyOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitpZiAoIXdpbmRvdy5JbnNwZWN0b3JDb250cm9sbGVy
KSB7CisKK1dlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1YiA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB0aGlzLl9zZWFyY2hpbmdGb3JOb2RlID0gZmFsc2U7CisgICAgdGhpcy5fd2luZG93Vmlz
aWJsZSA9IHRydWU7CisgICAgdGhpcy5fYXR0YWNoZWRXaW5kb3dIZWlnaHQgPSAwOworICAgIHRo
aXMuX2RlYnVnZ2VyRW5hYmxlZCA9IHRydWU7CisgICAgdGhpcy5fcHJvZmlsZXJFbmFibGVkID0g
dHJ1ZTsKKyAgICB0aGlzLl9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IGZhbHNlOworICAgIHRo
aXMuX3RpbWVsaW5lRW5hYmxlZCA9IGZhbHNlOworICAgIHRoaXMuX3NldHRpbmdzID0ge307Cit9
CisKK1dlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUgPSB7CisgICAg
d3JhcENhbGxiYWNrOiBmdW5jdGlvbihmdW5jKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZ1bmM7
CisgICAgfSwKKworICAgIGlzV2luZG93VmlzaWJsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3dpbmRvd1Zpc2libGU7CisgICAgfSwKKworICAgIHBsYXRmb3JtOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIm1hYy1sZW9wYXJkIjsKKyAgICB9LAor
CisgICAgcG9ydDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIjsK
KyAgICB9LAorCisKKyAgICBjbG9zZVdpbmRvdzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5fd2luZG93VmlzaWJsZSA9IGZhbHNlOworICAgIH0sCisKKyAgICBhdHRhY2g6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIGRldGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICB9LAorCisgICAgc3RvcmVMYXN0QWN0aXZlUGFuZWw6IGZ1bmN0aW9uKHBhbmVsKQorICAgIHsK
KyAgICB9LAorCisgICAgY2xlYXJNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAor
CisgICAgc2VhcmNoaW5nRm9yTm9kZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3NlYXJjaGluZ0Zvck5vZGU7CisgICAgfSwKKworICAgIHNlYXJjaDogZnVuY3Rpb24o
c291cmNlUm93LCBxdWVyeSkKKyAgICB7CisgICAgfSwKKworICAgIHRvZ2dsZU5vZGVTZWFyY2g6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NlYXJjaGluZ0Zvck5vZGUgPSAhdGhp
cy5fc2VhcmNoaW5nRm9yTm9kZTsKKyAgICB9LAorCisgICAgc2V0QXR0YWNoZWRXaW5kb3dIZWln
aHQ6IGZ1bmN0aW9uKGhlaWdodCkKKyAgICB7CisgICAgfSwKKworICAgIG1vdmVCeVVucmVzdHJp
Y3RlZDogZnVuY3Rpb24oeCwgeSkKKyAgICB7CisgICAgfSwKKworCisgICAgYWRkUmVzb3VyY2VT
b3VyY2VUb0ZyYW1lOiBmdW5jdGlvbihpZGVudGlmaWVyLCBlbGVtZW50KQorICAgIHsKKyAgICB9
LAorCisgICAgYWRkU291cmNlVG9GcmFtZTogZnVuY3Rpb24obWltZVR5cGUsIHNvdXJjZSwgZWxl
bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgZ2V0UmVz
b3VyY2VEb2N1bWVudE5vZGU6IGZ1bmN0aW9uKGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOworICAgIH0sCisKKyAgICBoaWdobGlnaHRET01Ob2RlOiBmdW5jdGlv
bihub2RlKQorICAgIHsKKyAgICB9LAorCisgICAgaGlkZURPTU5vZGVIaWdobGlnaHQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIGluc3BlY3RlZFdpbmRvdzogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbmRvdzsKKyAgICB9LAorCisgICAgbG9hZGVkOiBmdW5j
dGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBsb2NhbGl6ZWRTdHJpbmdzVVJMOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0sCisKKyAgICB3aW5k
b3dVbmxvYWRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9LAorCisgICAgaGlkZGVuUGFuZWxzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gIiI7CisgICAgfSwKKworICAgIGRlYnVnZ2VyRW5hYmxlZDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZDsKKyAgICB9LAorCisgICAgZW5h
YmxlUmVzb3VyY2VUcmFja2luZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVz
b3VyY2VUcmFja2luZ0VuYWJsZWQgPSB0cnVlOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUcmFja2luZ1dhc0VuYWJsZWQoKTsKKyAgICB9LAorCisgICAgZGlzYWJsZVJlc291cmNlVHJh
Y2tpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJhY2tpbmdF
bmFibGVkID0gZmFsc2U7CisgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyYWNraW5nV2Fz
RGlzYWJsZWQoKTsKKyAgICB9LAorCisgICAgcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVRyYWNraW5nRW5hYmxl
ZDsKKyAgICB9LAorCisgICAgZW5hYmxlRGVidWdnZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCA9IHRydWU7CisgICAgfSwKKworICAgIGRpc2FibGVE
ZWJ1Z2dlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJFbmFibGVk
ID0gZmFsc2U7CisgICAgfSwKKworICAgIGFkZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlE
LCBsaW5lLCBjb25kaXRpb24pCisgICAgeworICAgIH0sCisKKyAgICByZW1vdmVCcmVha3BvaW50
OiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZSkKKyAgICB7CisgICAgfSwKKworICAgIHVwZGF0ZUJy
ZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lLCBjb25kaXRpb24pCisgICAgeworICAg
IH0sCisKKyAgICBwYXVzZUluRGVidWdnZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKwor
ICAgIHBhdXNlT25FeGNlcHRpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSwKKworICAgIHNldFBhdXNlT25FeGNlcHRpb25zOiBmdW5jdGlvbih2YWx1
ZSkKKyAgICB7CisgICAgfSwKKworICAgIHJlc3VtZURlYnVnZ2VyOiBmdW5jdGlvbigpCisgICAg
eworICAgIH0sCisKKyAgICBwcm9maWxlckVuYWJsZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBlbmFibGVQcm9maWxlcjogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZXJFbmFibGVkID0gdHJ1ZTsKKyAgICB9LAor
CisgICAgZGlzYWJsZVByb2ZpbGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9w
cm9maWxlckVuYWJsZWQgPSBmYWxzZTsKKyAgICB9LAorCisgICAgc3RhcnRQcm9maWxpbmc6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIHN0b3BQcm9maWxpbmc6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgfSwKKworICAgIGdldFByb2ZpbGVIZWFkZXJzOiBmdW5jdGlvbihjYWxsSWQp
CisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuZGlkR2V0UHJvZmlsZUhlYWRlcnMoY2FsbElk
LCBbXSk7CisgICAgfSwKKworICAgIGdldFByb2ZpbGU6IGZ1bmN0aW9uKGNhbGxJZCwgdWlkKQor
ICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5fX2Z1bGxQcm9maWxlcyAmJiAodWlkIGlu
IFdlYkluc3BlY3Rvci5fX2Z1bGxQcm9maWxlcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kaWRHZXRQcm9maWxlKGNhbGxJZCwgV2ViSW5zcGVjdG9yLl9fZnVsbFByb2Zp
bGVzW3VpZF0pOworICAgICAgICB9CisgICAgfSwKKworICAgIHRha2VIZWFwU25hcHNob3Q6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIGRhdGFiYXNlVGFibGVOYW1lczogZnVuY3Rp
b24oZGF0YWJhc2UpCisgICAgeworICAgICAgICByZXR1cm4gW107CisgICAgfSwKKworICAgIHN0
ZXBJbnRvU3RhdGVtZW50SW5EZWJ1Z2dlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisg
ICAgc3RlcE91dE9mRnVuY3Rpb25JbkRlYnVnZ2VyOiBmdW5jdGlvbigpCisgICAgeworICAgIH0s
CisKKyAgICBzdGVwT3ZlclN0YXRlbWVudEluRGVidWdnZXI6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgfSwKKworICAgIHNldFNldHRpbmc6IGZ1bmN0aW9uKHNldHRpbmcsIHZhbHVlKQorICAgIHsK
KyAgICAgICAgdGhpcy5fc2V0dGluZ3Nbc2V0dGluZ10gPSB2YWx1ZTsKKyAgICB9LAorCisgICAg
ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAg
ICByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwOiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisK
KyAgICBzZXR0aW5nOiBmdW5jdGlvbihzZXR0aW5nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3NldHRpbmdzW3NldHRpbmddOworICAgIH0KK30KKworSW5zcGVjdG9yQmFja2VuZCA9IG5l
dyBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIoKTsKKworfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckNvbnRyb2xsZXJTdHViLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckNvbnRyb2xsZXJTdHViLmpzCmlu
ZGV4IGY3OGM5YmQuLmU2OWRlMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbnNwZWN0b3JDb250cm9sbGVyU3R1Yi5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW5zcGVjdG9yQ29udHJvbGxlclN0dWIuanMKQEAgLTEsMjk2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pZiAo
IXdpbmRvdy5JbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0KLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JD
b250cm9sbGVyU3R1YiA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9zZWFyY2hpbmdGb3JOb2Rl
ID0gZmFsc2U7Ci0gICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IHRydWU7Ci0gICAgdGhpcy5fYXR0
YWNoZWRXaW5kb3dIZWlnaHQgPSAwOwotICAgIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCA9IHRydWU7
Ci0gICAgdGhpcy5fcHJvZmlsZXJFbmFibGVkID0gdHJ1ZTsKLSAgICB0aGlzLl9yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZCA9IGZhbHNlOwotICAgIHRoaXMuX3RpbWVsaW5lRW5hYmxlZCA9IGZhbHNl
OwotICAgIHRoaXMuX3NldHRpbmdzID0ge307Ci19Ci0KLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JD
b250cm9sbGVyU3R1Yi5wcm90b3R5cGUgPSB7Ci0gICAgd3JhcENhbGxiYWNrOiBmdW5jdGlvbihm
dW5jKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZ1bmM7Ci0gICAgfSwKLQotICAgIGlzV2luZG93
VmlzaWJsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvd1Zp
c2libGU7Ci0gICAgfSwKLQotICAgIHBsYXRmb3JtOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gIm1hYy1sZW9wYXJkIjsKLSAgICB9LAotCi0gICAgcG9ydDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKLSAgICB9LAotCi0KLSAgICBjbG9zZVdp
bmRvdzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IGZh
bHNlOwotICAgIH0sCi0KLSAgICBhdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQot
ICAgIGRldGFjaDogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3RvcmVMYXN0QWN0
aXZlUGFuZWw6IGZ1bmN0aW9uKHBhbmVsKQotICAgIHsKLSAgICB9LAotCi0gICAgY2xlYXJNZXNz
YWdlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc2VhcmNoaW5nRm9yTm9kZTog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaGluZ0Zvck5vZGU7
Ci0gICAgfSwKLQotICAgIHNlYXJjaDogZnVuY3Rpb24oc291cmNlUm93LCBxdWVyeSkKLSAgICB7
Ci0gICAgfSwKLQotICAgIHRvZ2dsZU5vZGVTZWFyY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX3NlYXJjaGluZ0Zvck5vZGUgPSAhdGhpcy5fc2VhcmNoaW5nRm9yTm9kZTsKLSAg
ICB9LAotCi0gICAgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6IGZ1bmN0aW9uKGhlaWdodCkKLSAg
ICB7Ci0gICAgfSwKLQotICAgIG1vdmVCeVVucmVzdHJpY3RlZDogZnVuY3Rpb24oeCwgeSkKLSAg
ICB7Ci0gICAgfSwKLQotCi0gICAgYWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lOiBmdW5jdGlvbihp
ZGVudGlmaWVyLCBlbGVtZW50KQotICAgIHsKLSAgICB9LAotCi0gICAgYWRkU291cmNlVG9GcmFt
ZTogZnVuY3Rpb24obWltZVR5cGUsIHNvdXJjZSwgZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgZ2V0UmVzb3VyY2VEb2N1bWVudE5vZGU6IGZ1bmN0
aW9uKGlkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0s
Ci0KLSAgICBoaWdobGlnaHRET01Ob2RlOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICB9LAot
Ci0gICAgaGlkZURPTU5vZGVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQot
ICAgIGluc3BlY3RlZFdpbmRvdzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdp
bmRvdzsKLSAgICB9LAotCi0gICAgbG9hZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0K
LSAgICBsb2NhbGl6ZWRTdHJpbmdzVVJMOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICB3aW5kb3dVbmxvYWRpbmc6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgaGlkZGVuUGFuZWxz
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSwKLQotICAgIGRl
YnVnZ2VyRW5hYmxlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Rl
YnVnZ2VyRW5hYmxlZDsKLSAgICB9LAotCi0gICAgZW5hYmxlUmVzb3VyY2VUcmFja2luZzogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPSB0
cnVlOwotICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQoKTsK
LSAgICB9LAotCi0gICAgZGlzYWJsZVJlc291cmNlVHJhY2tpbmc6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyYWNraW5nV2FzRGlzYWJsZWQoKTsKLSAgICB9LAotCi0g
ICAgcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZDsKLSAgICB9LAotCi0gICAgZW5hYmxl
RGVidWdnZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyRW5hYmxl
ZCA9IHRydWU7Ci0gICAgfSwKLQotICAgIGRpc2FibGVEZWJ1Z2dlcjogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fZGVidWdnZXJFbmFibGVkID0gZmFsc2U7Ci0gICAgfSwKLQotICAg
IGFkZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lLCBjb25kaXRpb24pCi0gICAg
ewotICAgIH0sCi0KLSAgICByZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwgbGlu
ZSkKLSAgICB7Ci0gICAgfSwKLQotICAgIHVwZGF0ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJj
ZUlELCBsaW5lLCBjb25kaXRpb24pCi0gICAgewotICAgIH0sCi0KLSAgICBwYXVzZUluRGVidWdn
ZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHBhdXNlT25FeGNlcHRpb25zOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNl
dFBhdXNlT25FeGNlcHRpb25zOiBmdW5jdGlvbih2YWx1ZSkKLSAgICB7Ci0gICAgfSwKLQotICAg
IHJlc3VtZURlYnVnZ2VyOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBwcm9maWxl
ckVuYWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0s
Ci0KLSAgICBlbmFibGVQcm9maWxlcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5f
cHJvZmlsZXJFbmFibGVkID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgZGlzYWJsZVByb2ZpbGVyOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9wcm9maWxlckVuYWJsZWQgPSBmYWxzZTsK
LSAgICB9LAotCi0gICAgc3RhcnRQcm9maWxpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwK
LQotICAgIHN0b3BQcm9maWxpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGdl
dFByb2ZpbGVIZWFkZXJzOiBmdW5jdGlvbihjYWxsSWQpCi0gICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IuZGlkR2V0UHJvZmlsZUhlYWRlcnMoY2FsbElkLCBbXSk7Ci0gICAgfSwKLQotICAgIGdl
dFByb2ZpbGU6IGZ1bmN0aW9uKGNhbGxJZCwgdWlkKQotICAgIHsKLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5fX2Z1bGxQcm9maWxlcyAmJiAodWlkIGluIFdlYkluc3BlY3Rvci5fX2Z1bGxQcm9m
aWxlcykpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kaWRHZXRQcm9maWxl
KGNhbGxJZCwgV2ViSW5zcGVjdG9yLl9fZnVsbFByb2ZpbGVzW3VpZF0pOwotICAgICAgICB9Ci0g
ICAgfSwKLQotICAgIHRha2VIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwK
LQotICAgIGRhdGFiYXNlVGFibGVOYW1lczogZnVuY3Rpb24oZGF0YWJhc2UpCi0gICAgewotICAg
ICAgICByZXR1cm4gW107Ci0gICAgfSwKLQotICAgIHN0ZXBJbnRvU3RhdGVtZW50SW5EZWJ1Z2dl
cjogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3RlcE91dE9mRnVuY3Rpb25JbkRl
YnVnZ2VyOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzdGVwT3ZlclN0YXRlbWVu
dEluRGVidWdnZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHNldFNldHRpbmc6
IGZ1bmN0aW9uKHNldHRpbmcsIHZhbHVlKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2V0dGluZ3Nb
c2V0dGluZ10gPSB2YWx1ZTsKLSAgICB9LAotCi0gICAgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICByZWxlYXNlV3JhcHBlck9iamVjdEdy
b3VwOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzZXR0aW5nOiBmdW5jdGlvbihz
ZXR0aW5nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzW3NldHRpbmddOwot
ICAgIH0KLX0KLQotd2luZG93Lkluc3BlY3RvckNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9y
Lkluc3BlY3RvckNvbnRyb2xsZXJTdHViKCk7Ci0KLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9maWxlVmlldy5qcwppbmRleCAyYjFkMjM2Li5jMTY0ZTk0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCkBAIC05NSw3ICs5NSw3IEBAIFdlYklu
c3BlY3Rvci5DUFVQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgfQogCiAgICAg
dmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKHByb2ZpbGVDYWxsYmFjayk7
Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlci5nZXRQcm9maWxlKGNhbGxJZCwgdGhpcy5wcm9maWxl
LnVpZCk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRQcm9maWxlKGNhbGxJZCwgdGhpcy5wcm9m
aWxlLnVpZCk7CiB9CiAKIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7
CkBAIC01OTQsOSArNTk0LDkgQEAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gIXRoaXMuX3JlY29yZGluZzsKIAogICAg
ICAgICBpZiAodGhpcy5fcmVjb3JkaW5nKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ci5zdGFydFByb2ZpbGluZygpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zdGFydFBy
b2ZpbGluZygpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVy
LnN0b3BQcm9maWxpbmcoKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc3RvcFByb2Zp
bGluZygpOwogICAgIH0sCiAKICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1By
b2ZpbGluZykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxl
c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMK
aW5kZXggYWRmMGEyOS4uYjI3NmVjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVzUGFuZWwuanMKQEAgLTQwMCw3ICs0MDAsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgX3VwZGF0ZUludGVyZmFjZTogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgUHJvZmlsZVR5cGUtc3BlY2lmaWMgYnV0
dG9uIHZpc2liaWxpdHkgY2hhbmdlcyBieSBhIHNpbmdsZSBQcm9maWxlVHlwZS1hZ25vc3RpYyAi
Y29tYm8tYnV0dG9uIiB2aXNpYmlsaXR5IGNoYW5nZS4KLSAgICAgICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIucHJvZmlsZXJFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvckJhY2tl
bmQucHJvZmlsZXJFbmFibGVkKCkpIHsKICAgICAgICAgICAgIHRoaXMuZW5hYmxlVG9nZ2xlQnV0
dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9maWxpbmcgZW5hYmxlZC4gQ2xp
Y2sgdG8gZGlzYWJsZS4iKTsKICAgICAgICAgICAgIHRoaXMuZW5hYmxlVG9nZ2xlQnV0dG9uLnRv
Z2dsZWQgPSB0cnVlOwogICAgICAgICAgICAgZm9yICh2YXIgdHlwZUlkIGluIHRoaXMuX3Byb2Zp
bGVUeXBlQnV0dG9uc0J5SWRNYXApCkBAIC00MTksMTcgKzQxOSwxNyBAQCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfZW5hYmxlUHJvZmlsaW5nOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlci5wcm9maWxlckVu
YWJsZWQoKSkKKyAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucHJvZmlsZXJFbmFibGVkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3RvZ2dsZVByb2ZpbGluZyh0aGlz
LnBhbmVsRW5hYmxlclZpZXcuYWx3YXlzRW5hYmxlZCk7CiAgICAgfSwKIAogICAgIF90b2dnbGVQ
cm9maWxpbmc6IGZ1bmN0aW9uKG9wdGlvbmFsQWx3YXlzKQogICAgIHsKLSAgICAgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIucHJvZmlsZXJFbmFibGVkKCkpCi0gICAgICAgICAgICBJbnNwZWN0
b3JDb250cm9sbGVyLmRpc2FibGVQcm9maWxlcih0cnVlKTsKKyAgICAgICAgaWYgKEluc3BlY3Rv
ckJhY2tlbmQucHJvZmlsZXJFbmFibGVkKCkpCisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmRpc2FibGVQcm9maWxlcih0cnVlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVj
dG9yQ29udHJvbGxlci5lbmFibGVQcm9maWxlcighIW9wdGlvbmFsQWx3YXlzKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuZW5hYmxlUHJvZmlsZXIoISFvcHRpb25hbEFsd2F5cyk7CiAg
ICAgfSwKIAogICAgIF9wb3B1bGF0ZVByb2ZpbGVzOiBmdW5jdGlvbigpCkBAIC00NDksNyArNDQ5
LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKHBvcHVs
YXRlQ2FsbGJhY2spOwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmdldFByb2ZpbGVIZWFk
ZXJzKGNhbGxJZCk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0UHJvZmlsZUhlYWRlcnMo
Y2FsbElkKTsKIAogICAgICAgICBkZWxldGUgdGhpcy5fc2hvdWxkUG9wdWxhdGVQcm9maWxlczsK
ICAgICB9LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpz
CmluZGV4IDMxMDRkMTMuLmM3YzBlMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTM0OSw3ICszNDksNyBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuc3VtbWFyeUJhci5yZXNl
dCgpOwogCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyLnJlc291cmNlVHJhY2tpbmdF
bmFibGVkKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVzb3VyY2VUcmFja2lu
Z0VuYWJsZWQoKSkgewogICAgICAgICAgICAgdGhpcy5lbmFibGVUb2dnbGVCdXR0b24udGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIHRyYWNraW5nIGVuYWJsZWQuIENsaWNr
IHRvIGRpc2FibGUuIik7CiAgICAgICAgICAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi50b2dn
bGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnZpc2li
bGUgPSB0cnVlOwpAQCAtNjE2LDcgKzYxNiw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5pdGVtc1RyZWVFbGVtZW50LnNtYWxsQ2hp
bGRyZW4gPSAhdGhpcy5pdGVtc1RyZWVFbGVtZW50LnNtYWxsQ2hpbGRyZW47CiAgICAgICAgIFBy
ZWZlcmVuY2VzLnJlc291cmNlc0xhcmdlUm93cyA9ICFQcmVmZXJlbmNlcy5yZXNvdXJjZXNMYXJn
ZVJvd3M7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc2V0U2V0dGluZygicmVzb3VyY2Vz
LWxhcmdlLXJvd3MiLCBQcmVmZXJlbmNlcy5yZXNvdXJjZXNMYXJnZVJvd3MpOworICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnNldFNldHRpbmcoInJlc291cmNlcy1sYXJnZS1yb3dzIiwgUHJlZmVy
ZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dzKTsKIAogICAgICAgICBpZiAodGhpcy5pdGVtc1RyZWVF
bGVtZW50LnNtYWxsQ2hpbGRyZW4pIHsKICAgICAgICAgICAgIHRoaXMuaXRlbXNHcmFwaHNFbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoInNtYWxsIik7CkBAIC02NzUsMjEgKzY3NSwyMSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2VuYWJsZVJlc291cmNl
VHJhY2tpbmc6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyLnJlc291cmNlVHJhY2tpbmdFbmFibGVkKCkpCisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNr
ZW5kLnJlc291cmNlVHJhY2tpbmdFbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIHRoaXMuX3RvZ2dsZVJlc291cmNlVHJhY2tpbmcodGhpcy5wYW5lbEVuYWJsZXJWaWV3LmFs
d2F5c0VuYWJsZWQpOwogICAgIH0sCiAKICAgICBfdG9nZ2xlUmVzb3VyY2VUcmFja2luZzogZnVu
Y3Rpb24ob3B0aW9uYWxBbHdheXMpCiAgICAgewotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlci5yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JC
YWNrZW5kLnJlc291cmNlVHJhY2tpbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgIHRoaXMubGFy
Z2VyUmVzb3VyY2VzQnV0dG9uLnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuc29y
dGluZ1NlbGVjdEVsZW1lbnQudmlzaWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgSW5zcGVjdG9y
Q29udHJvbGxlci5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyh0cnVlKTsKKyAgICAgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuZGlzYWJsZVJlc291cmNlVHJhY2tpbmcodHJ1ZSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbi52aXNpYmxlID0g
dHJ1ZTsKICAgICAgICAgICAgIHRoaXMuc29ydGluZ1NlbGVjdEVsZW1lbnQudmlzaWJsZSA9IHRy
dWU7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmVuYWJsZVJlc291cmNlVHJhY2tp
bmcoISFvcHRpb25hbEFsd2F5cyk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmVuYWJs
ZVJlc291cmNlVHJhY2tpbmcoISFvcHRpb25hbEFsd2F5cyk7CiAgICAgICAgIH0KICAgICB9LAog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Vmlldy5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCmluZGV4IDEyNDE5MGMu
LjFkNjM1MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRW
aWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCkBA
IC01OSw3ICs1OSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB0aGlzLmF0dGFjaCgpOwogCi0gICAgICAgIGlmICghSW5zcGVjdG9yQ29udHJvbGxl
ci5hZGRTb3VyY2VUb0ZyYW1lKCJ0ZXh0L2phdmFzY3JpcHQiLCB0aGlzLnNjcmlwdC5zb3VyY2Us
IHRoaXMuc291cmNlRnJhbWUuZWxlbWVudCkpCisgICAgICAgIGlmICghSW5zcGVjdG9yQmFja2Vu
ZC5hZGRTb3VyY2VUb0ZyYW1lKCJ0ZXh0L2phdmFzY3JpcHQiLCB0aGlzLnNjcmlwdC5zb3VyY2Us
IHRoaXMuc291cmNlRnJhbWUuZWxlbWVudCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgZGVsZXRlIHRoaXMuX2ZyYW1lTmVlZHNTZXR1cDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGQ2OTUxNmUuLmZmY2QxMTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjM1LDcgKzIzNSw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmll
dy52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRoaXMuX2F0dGFjaERl
YnVnZ2VyV2hlblNob3duKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmVuYWJs
ZURlYnVnZ2VyKGZhbHNlKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZW5hYmxlRGVi
dWdnZXIoZmFsc2UpOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2F0dGFjaERlYnVnZ2VyV2hl
blNob3duOwogICAgICAgICB9CiAgICAgfSwKQEAgLTI5Myw3ICsyOTMsNyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy5h
ZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZW5hYmxlZCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50LnNvdXJjZUlE
LCBicmVha3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuY29uZGl0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuYWRkQnJlYWtwb2ludChicmVha3BvaW50LnNvdXJj
ZUlELCBicmVha3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuY29uZGl0aW9uKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQyMSw3ICs0MjEsNyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBhdHRhY2hEZWJ1Z2dlcldo
ZW5TaG93bjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5wYXJl
bnRFbGVtZW50KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmVuYWJsZURlYnVn
Z2VyKGZhbHNlKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZW5hYmxlRGVidWdnZXIo
ZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5fYXR0YWNoRGVidWdn
ZXJXaGVuU2hvd24gPSB0cnVlOwogICAgICAgICB9CkBAIC00NDQsNyArNDQ0LDcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLmN1
cnJlbnRRdWVyeTsKICAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxlZCgpOwogCi0gICAgICAgIGlm
ICghSW5zcGVjdG9yQ29udHJvbGxlci5kZWJ1Z2dlckVuYWJsZWQoKSkgeworICAgICAgICBpZiAo
IUluc3BlY3RvckJhY2tlbmQuZGVidWdnZXJFbmFibGVkKCkpIHsKICAgICAgICAgICAgIHRoaXMu
X3BhdXNlZCA9IGZhbHNlOwogICAgICAgICAgICAgdGhpcy5fd2FpdGluZ1RvUGF1c2UgPSBmYWxz
ZTsKICAgICAgICAgICAgIHRoaXMuX3N0ZXBwaW5nID0gZmFsc2U7CkBAIC00OTUsNyArNDk1LDcg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBjYW5TaG93
UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc291
cmNlICYmIHJlc291cmNlLnNjcmlwdHMubGVuZ3RoICYmIEluc3BlY3RvckNvbnRyb2xsZXIuZGVi
dWdnZXJFbmFibGVkKCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZSAmJiByZXNvdXJjZS5zY3Jp
cHRzLmxlbmd0aCAmJiBJbnNwZWN0b3JCYWNrZW5kLmRlYnVnZ2VyRW5hYmxlZCgpOwogICAgIH0s
CiAKICAgICBzaG93U2NyaXB0OiBmdW5jdGlvbihzY3JpcHQsIGxpbmUpCkBAIC02MDYsNyArNjA2
LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
dmFyIHVybCA9IHNjcmlwdE9yUmVzb3VyY2UudXJsIHx8IHNjcmlwdE9yUmVzb3VyY2Uuc291cmNl
VVJMOwogICAgICAgICBpZiAodXJsICYmICFvcHRpb25zLmluaXRpYWxMb2FkKQotICAgICAgICAg
ICAgSW5zcGVjdG9yQ29udHJvbGxlci5zZXRTZXR0aW5nKCJMYXN0Vmlld2VkU2NyaXB0RmlsZSIs
IHVybCk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFNldHRpbmcoIkxhc3RWaWV3
ZWRTY3JpcHRGaWxlIiwgdXJsKTsKIAogICAgICAgICBpZiAoIW9wdGlvbnMuZnJvbUJhY2tGb3J3
YXJkQWN0aW9uKSB7CiAgICAgICAgICAgICB2YXIgb2xkSW5kZXggPSB0aGlzLl9jdXJyZW50QmFj
a0ZvcndhcmRJbmRleDsKQEAgLTcwOSw3ICs3MDksNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBpZiBub3Qg
Zmlyc3QgaXRlbSwgY2hlY2sgdG8gc2VlIGlmIHRoaXMgd2FzIHRoZSBsYXN0IHZpZXdlZAogICAg
ICAgICAgICAgdmFyIHVybCA9IG9wdGlvbi5yZXByZXNlbnRlZE9iamVjdC51cmwgfHwgb3B0aW9u
LnJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZVVSTDsKLSAgICAgICAgICAgIHZhciBsYXN0VVJMID0g
SW5zcGVjdG9yQ29udHJvbGxlci5zZXR0aW5nKCJMYXN0Vmlld2VkU2NyaXB0RmlsZSIpOworICAg
ICAgICAgICAgdmFyIGxhc3RVUkwgPSBJbnNwZWN0b3JCYWNrZW5kLnNldHRpbmcoIkxhc3RWaWV3
ZWRTY3JpcHRGaWxlIik7CiAgICAgICAgICAgICBpZiAodXJsICYmIHVybCA9PT0gbGFzdFVSTCkK
ICAgICAgICAgICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZShvcHRpb24ucmVwcmVz
ZW50ZWRPYmplY3QsIHtpbml0aWFsTG9hZDogdHJ1ZX0pOwogICAgICAgICB9CkBAIC03ODEsNyAr
NzgxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBf
dXBkYXRlUGF1c2VPbkV4Y2VwdGlvbnNCdXR0b246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmIChJbnNwZWN0b3JDb250cm9sbGVyLnBhdXNlT25FeGNlcHRpb25zKCkpIHsKKyAgICAgICAg
aWYgKEluc3BlY3RvckJhY2tlbmQucGF1c2VPbkV4Y2VwdGlvbnMoKSkgewogICAgICAgICAgICAg
dGhpcy5wYXVzZU9uRXhjZXB0aW9uQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEb24ndCBwYXVzZSBvbiBleGNlcHRpb25zLiIpOwogICAgICAgICAgICAgdGhpcy5wYXVzZU9u
RXhjZXB0aW9uQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewpAQCAtNzky
LDcgKzc5Miw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgX3VwZGF0ZURlYnVnZ2VyQnV0dG9uczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIuZGVidWdnZXJFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKElu
c3BlY3RvckJhY2tlbmQuZGVidWdnZXJFbmFibGVkKCkpIHsKICAgICAgICAgICAgIHRoaXMuZW5h
YmxlVG9nZ2xlQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1Z2dpbmcg
ZW5hYmxlZC4gQ2xpY2sgdG8gZGlzYWJsZS4iKTsKICAgICAgICAgICAgIHRoaXMuZW5hYmxlVG9n
Z2xlQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwogICAgICAgICAgICAgdGhpcy5wYXVzZU9uRXhjZXB0
aW9uQnV0dG9uLnZpc2libGUgPSB0cnVlOwpAQCAtODcxLDcgKzg3MSw3IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2VuYWJsZURlYnVnZ2luZzogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIuZGVidWdnZXJF
bmFibGVkKCkpCisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmRlYnVnZ2VyRW5hYmxlZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl90b2dnbGVEZWJ1Z2dpbmcodGhp
cy5wYW5lbEVuYWJsZXJWaWV3LmFsd2F5c0VuYWJsZWQpOwogICAgIH0sCkBAIC04ODIsMTUgKzg4
MiwxNSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fd2FpdGluZ1RvUGF1c2UgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fc3RlcHBpbmcgPSBm
YWxzZTsKIAotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlci5kZWJ1Z2dlckVuYWJsZWQo
KSkKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlzYWJsZURlYnVnZ2VyKHRydWUp
OworICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5kZWJ1Z2dlckVuYWJsZWQoKSkKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGlzYWJsZURlYnVnZ2VyKHRydWUpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmVuYWJsZURlYnVnZ2VyKCEhb3B0
aW9uYWxBbHdheXMpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5lbmFibGVEZWJ1Z2dl
cighIW9wdGlvbmFsQWx3YXlzKTsKICAgICB9LAogCiAgICAgX3RvZ2dsZVBhdXNlT25FeGNlcHRp
b25zOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnNldFBh
dXNlT25FeGNlcHRpb25zKCFJbnNwZWN0b3JDb250cm9sbGVyLnBhdXNlT25FeGNlcHRpb25zKCkp
OworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFBhdXNlT25FeGNlcHRpb25zKCFJbnNwZWN0
b3JCYWNrZW5kLnBhdXNlT25FeGNlcHRpb25zKCkpOwogICAgICAgICB0aGlzLl91cGRhdGVQYXVz
ZU9uRXhjZXB0aW9uc0J1dHRvbigpOwogICAgIH0sCiAKQEAgLTg5OSwxMSArODk5LDExIEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5f
cGF1c2VkKSB7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IHRoaXMuX3dhaXRpbmdUb1BhdXNlID0gZmFsc2U7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyLnJlc3VtZURlYnVnZ2VyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
c3VtZURlYnVnZ2VyKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl9zdGVw
cGluZyA9IGZhbHNlOwogICAgICAgICAgICAgdGhpcy5fd2FpdGluZ1RvUGF1c2UgPSB0cnVlOwot
ICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5wYXVzZUluRGVidWdnZXIoKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQucGF1c2VJbkRlYnVnZ2VyKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl9jbGVhckludGVyZmFjZSgpOwpAQCAtOTE2LDcgKzkxNiw3IEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NsZWFy
SW50ZXJmYWNlKCk7CiAKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zdGVwT3ZlclN0YXRl
bWVudEluRGVidWdnZXIoKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zdGVwT3ZlclN0YXRl
bWVudEluRGVidWdnZXIoKTsKICAgICB9LAogCiAgICAgX3N0ZXBJbnRvQ2xpY2tlZDogZnVuY3Rp
b24oKQpAQCAtOTI2LDcgKzkyNiw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJmYWNlKCk7CiAKLSAgICAgICAgSW5z
cGVjdG9yQ29udHJvbGxlci5zdGVwSW50b1N0YXRlbWVudEluRGVidWdnZXIoKTsKKyAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5zdGVwSW50b1N0YXRlbWVudEluRGVidWdnZXIoKTsKICAgICB9LAog
CiAgICAgX3N0ZXBPdXRDbGlja2VkOiBmdW5jdGlvbigpCkBAIC05MzYsNyArOTM2LDcgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fY2xl
YXJJbnRlcmZhY2UoKTsKIAotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnN0ZXBPdXRPZkZ1
bmN0aW9uSW5EZWJ1Z2dlcigpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnN0ZXBPdXRPZkZ1
bmN0aW9uSW5EZWJ1Z2dlcigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NvdXJjZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlVmlldy5qcwppbmRleCBjMWIxYmJmLi5kYTM1ZmRmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcwpAQCAtOTcsNyArOTcsNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1l
TmVlZHNTZXR1cDsKICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5hZGRFdmVudExpc3RlbmVyKCJj
b250ZW50IGxvYWRlZCIsIHRoaXMuX2NvbnRlbnRMb2FkZWQsIHRoaXMpOwotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmFkZFJlc291cmNlU291cmNlVG9GcmFtZSh0aGlzLnJlc291cmNlLmlk
ZW50aWZpZXIsIHRoaXMuc291cmNlRnJhbWUuZWxlbWVudCk7CisgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuYWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lKHRoaXMucmVzb3VyY2UuaWRlbnRpZmllciwg
dGhpcy5zb3VyY2VGcmFtZS5lbGVtZW50KTsKICAgICB9LAogICAgIAogICAgIF9jb250ZW50TG9h
ZGVkOiBmdW5jdGlvbigpCkBAIC0xODAsMTMgKzE4MCwxMyBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpc05hTihsaW5l
VG9TZWFyY2gpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2VhcmNoIHRoZSB3aG9sZSBkb2N1bWVu
dCBzaW5jZSB0aGVyZSB3YXMgbm8gbGluZSB0byBzZWFyY2guCi0gICAgICAgICAgICAgICAgdGhp
cy5fc2VhcmNoUmVzdWx0cyA9IChJbnNwZWN0b3JDb250cm9sbGVyLnNlYXJjaCh0aGlzLnNvdXJj
ZUZyYW1lLmVsZW1lbnQuY29udGVudERvY3VtZW50LCBxdWVyeSkgfHwgW10pOworICAgICAgICAg
ICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSAoSW5zcGVjdG9yQmFja2VuZC5zZWFyY2godGhp
cy5zb3VyY2VGcmFtZS5lbGVtZW50LmNvbnRlbnREb2N1bWVudCwgcXVlcnkpIHx8IFtdKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZVJvdyA9IHRoaXMu
c291cmNlRnJhbWUuc291cmNlUm93KGxpbmVUb1NlYXJjaCk7CiAgICAgICAgICAgICAgICAgaWYg
KHNvdXJjZVJvdykgewogICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVybGVzc1F1ZXJ5KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBzdGlsbCBhIHF1ZXJ5IHN0cmlu
Zywgc28gc2VhcmNoIGZvciB0aGF0IHN0cmluZyBpbiB0aGUgbGluZS4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSAoSW5zcGVjdG9yQ29udHJvbGxlci5zZWFy
Y2goc291cmNlUm93LCBmaWx0ZXJsZXNzUXVlcnkpIHx8IFtdKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSAoSW5zcGVjdG9yQmFja2VuZC5zZWFyY2goc291
cmNlUm93LCBmaWx0ZXJsZXNzUXVlcnkpIHx8IFtdKTsKICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hdGNoIHRoZSB3aG9sZSBsaW5lLCBz
aW5jZSB0aGVyZSB3YXMgbm8gcmVtYWluaW5nIHF1ZXJ5IHN0cmluZyB0byBtYXRjaC4KICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciByb3dSYW5nZSA9IHRoaXMuc291cmNlRnJhbWUuZWxlbWVu
dC5jb250ZW50RG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBzZWFyY2ggZm9yIHRoZSB3aG9sZSBxdWVyeSwg
anVzdCBpbmNhc2UgaXQgbWF0Y2hlcyBhIGNvbG9yIGxpa2UgIiMzMzMiLgotICAgICAgICAgICAg
ICAgIHZhciB3aG9sZVF1ZXJ5TWF0Y2hlcyA9IEluc3BlY3RvckNvbnRyb2xsZXIuc2VhcmNoKHRo
aXMuc291cmNlRnJhbWUuZWxlbWVudC5jb250ZW50RG9jdW1lbnQsIHF1ZXJ5KTsKKyAgICAgICAg
ICAgICAgICB2YXIgd2hvbGVRdWVyeU1hdGNoZXMgPSBJbnNwZWN0b3JCYWNrZW5kLnNlYXJjaCh0
aGlzLnNvdXJjZUZyYW1lLmVsZW1lbnQuY29udGVudERvY3VtZW50LCBxdWVyeSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHdob2xlUXVlcnlNYXRjaGVzKQogICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9zZWFyY2hSZXN1bHRzID0gdGhpcy5fc2VhcmNoUmVzdWx0cy5jb25jYXQod2hvbGVRdWVyeU1h
dGNoZXMpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGNhZjNhNTMuLmY0NDk4MTAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTMzNCw3
ICszMzQsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
ICAgICAgICB2YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudFt0
aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XTsKICAgICAgICAgUHJlZmVy
ZW5jZXMuY29sb3JGb3JtYXQgPSBzZWxlY3RlZE9wdGlvbi52YWx1ZTsKIAotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLnNldFNldHRpbmcoImNvbG9yLWZvcm1hdCIsIFByZWZlcmVuY2VzLmNv
bG9yRm9ybWF0KTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTZXR0aW5nKCJjb2xvci1m
b3JtYXQiLCBQcmVmZXJlbmNlcy5jb2xvckZvcm1hdCk7CiAKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLnNlY3Rpb25zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5zZWN0
aW9uc1tpXS51cGRhdGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGVzdENvbnRyb2xsZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVz
dENvbnRyb2xsZXIuanMKaW5kZXggMjY3Mjk1Mi4uYjI2MzBhZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5qcwpAQCAtNDMsNyArNDMsNyBAQCBXZWJJ
bnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIG5vdGlmeURvbmU6IGZ1
bmN0aW9uKHJlc3VsdCkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3Vs
dCA9PT0gInVuZGVmaW5lZCIgPyAiXCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJl
c3VsdCk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlkRXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZCh0aGlzLl9jYWxsSWQsIG1lc3NhZ2UpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQodGhpcy5fY2FsbElkLCBtZXNzYWdlKTsKICAg
ICB9LAogCiAgICAgcnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlczogZnVuY3Rpb24oY2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDFj
YWZkNzcuLmFjMzZmYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzCkBAIC0xMTksOSArMTE5LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlID0gewogICAgIF90b2dnbGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRvZ2dsZVRpbWVsaW5lQnV0dG9uLnRvZ2dsZWQp
Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7
CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc3RhcnRUaW1lbGlu
ZVByb2ZpbGVyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnN0YXJ0VGltZWxpbmVQ
cm9maWxlcigpOwogICAgIH0sCiAKICAgICB0aW1lbGluZVdhc1N0YXJ0ZWQ6IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25z
U2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNz
aW9uc1NpZGViYXJQYW5lLmpzCmluZGV4IDI2OTI0YWYuLjFiZWI1ZTcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFy
UGFuZS5qcwpAQCAtMTI3LDcgKzEyNyw3IEBAIFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25z
U2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBJbnNwZWN0b3JDb250cm9sbGVyLnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAodGhpcy5fd2F0
Y2hPYmplY3RHcm91cElkKQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbGVhc2VXcmFwcGVy
T2JqZWN0R3JvdXAodGhpcy5fd2F0Y2hPYmplY3RHcm91cElkKQogICAgICAgICB2YXIgcHJvcGVy
dGllcyA9IFtdOwogCiAgICAgICAgIC8vIENvdW50IHRoZSBwcm9wZXJ0aWVzLCBzbyB3ZSBrbm93
biB3aGVuIHRvIGNhbGwgdGhpcy51cGRhdGVQcm9wZXJ0aWVzKCkKQEAgLTE4Myw3ICsxODMsNyBA
QCBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24ucHJvdG90eXBlID0gewogCiAg
ICAgbG9hZFNhdmVkRXhwcmVzc2lvbnM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBq
c29uID0gSW5zcGVjdG9yQ29udHJvbGxlci5zZXR0aW5nKCJ3YXRjaEV4cHJlc3Npb25zIik7Cisg
ICAgICAgIHZhciBqc29uID0gSW5zcGVjdG9yQmFja2VuZC5zZXR0aW5nKCJ3YXRjaEV4cHJlc3Np
b25zIik7CiAgICAgICAgIGlmICghanNvbikKICAgICAgICAgICAgIHJldHVybiBbXTsKIApAQCAt
MjA0LDcgKzIwNCw3IEBAIFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdG9TYXZlLnB1c2godGhpcy53YXRjaEV4cHJlc3Np
b25zW2ldKTsKIAogICAgICAgICB2YXIganNvbiA9IEpTT04uc3RyaW5naWZ5KHtleHByZXNzaW9u
czogdG9TYXZlfSk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc2V0U2V0dGluZygid2F0
Y2hFeHByZXNzaW9ucyIsIGpzb24pOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFNldHRp
bmcoIndhdGNoRXhwcmVzc2lvbnMiLCBqc29uKTsKIAogICAgICAgICByZXR1cm4gdG9TYXZlLmxl
bmd0aDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDE3
MGQ5MzUuLjM4MWZjZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBA
IC0yOCw3ICsyOCw3IEBACiAgICAgPGZpbGU+SW5qZWN0ZWRTY3JpcHQuanM8L2ZpbGU+CiAgICAg
PGZpbGU+SW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanM8L2ZpbGU+CiAgICAgPGZpbGU+aW5zcGVjdG9y
LmpzPC9maWxlPgotICAgIDxmaWxlPkluc3BlY3RvckNvbnRyb2xsZXJTdHViLmpzPC9maWxlPgor
ICAgIDxmaWxlPkluc3BlY3RvckJhY2tlbmRTdHViLmpzPC9maWxlPgogICAgIDxmaWxlPktleWJv
YXJkU2hvcnRjdXQuanM8L2ZpbGU+CiAgICAgPGZpbGU+TWV0cmljc1NpZGViYXJQYW5lLmpzPC9m
aWxlPgogICAgIDxmaWxlPk9iamVjdC5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAzNGRmMzJkLi42ZTVhZGVjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0zNCw3ICszNCw3IEBAIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0cmVl
b3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iaW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJJbnNwZWN0b3JDb250cm9sbGVyU3R1Yi5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW5zcGVjdG9yQmFja2VuZFN0dWIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik9i
amVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iS2V5Ym9hcmRTaG9ydGN1dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iVGV4dFByb21wdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAwZjhlYzEyLi41MjE5YjQxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTc3LDcgKzc3LDcgQEAgdmFy
IFdlYkluc3BlY3RvciA9IHsKICAgICBnZXQgcGxhdGZvcm0oKQogICAgIHsKICAgICAgICAgaWYg
KCEoIl9wbGF0Zm9ybSIgaW4gdGhpcykpCi0gICAgICAgICAgICB0aGlzLl9wbGF0Zm9ybSA9IElu
c3BlY3RvckNvbnRyb2xsZXIucGxhdGZvcm0oKTsKKyAgICAgICAgICAgIHRoaXMuX3BsYXRmb3Jt
ID0gSW5zcGVjdG9yQmFja2VuZC5wbGF0Zm9ybSgpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9w
bGF0Zm9ybTsKICAgICB9LApAQCAtODUsNyArODUsNyBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewog
ICAgIGdldCBwb3J0KCkKICAgICB7CiAgICAgICAgIGlmICghKCJfcG9ydCIgaW4gdGhpcykpCi0g
ICAgICAgICAgICB0aGlzLl9wb3J0ID0gSW5zcGVjdG9yQ29udHJvbGxlci5wb3J0KCk7CisgICAg
ICAgICAgICB0aGlzLl9wb3J0ID0gSW5zcGVjdG9yQmFja2VuZC5wb3J0KCk7CiAKICAgICAgICAg
cmV0dXJuIHRoaXMuX3BvcnQ7CiAgICAgfSwKQEAgLTE2NSwxMyArMTY1LDEzIEBAIHZhciBXZWJJ
bnNwZWN0b3IgPSB7CiAKICAgICAgICAgZm9yICh2YXIgcGFuZWxOYW1lIGluIFdlYkluc3BlY3Rv
ci5wYW5lbHMpIHsKICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzW3BhbmVsTmFt
ZV0gPT0geCkKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnN0b3JlTGFzdEFj
dGl2ZVBhbmVsKHBhbmVsTmFtZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
dG9yZUxhc3RBY3RpdmVQYW5lbChwYW5lbE5hbWUpOwogICAgICAgICB9CiAgICAgfSwKIAogICAg
IF9jcmVhdGVQYW5lbHM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBoaWRkZW5QYW5l
bHMgPSAoSW5zcGVjdG9yQ29udHJvbGxlci5oaWRkZW5QYW5lbHMoKSB8fCAiIikuc3BsaXQoJywn
KTsKKyAgICAgICAgdmFyIGhpZGRlblBhbmVscyA9IChJbnNwZWN0b3JCYWNrZW5kLmhpZGRlblBh
bmVscygpIHx8ICIiKS5zcGxpdCgnLCcpOwogICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4
T2YoImVsZW1lbnRzIikgPT09IC0xKQogICAgICAgICAgICAgdGhpcy5wYW5lbHMuZWxlbWVudHMg
PSBuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwoKTsKICAgICAgICAgaWYgKGhpZGRlblBh
bmVscy5pbmRleE9mKCJyZXNvdXJjZXMiKSA9PT0gLTEpCkBAIC0xOTMsMTUgKzE5MywxNSBAQCB2
YXIgV2ViSW5zcGVjdG9yID0gewogCiAgICAgX2xvYWRQcmVmZXJlbmNlczogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gSW5zcGVjdG9yQ29udHJvbGxlci5zZXR0
aW5nKCJjb2xvci1mb3JtYXQiKTsKKyAgICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gSW5zcGVjdG9y
QmFja2VuZC5zZXR0aW5nKCJjb2xvci1mb3JtYXQiKTsKICAgICAgICAgaWYgKGNvbG9yRm9ybWF0
KQogICAgICAgICAgICAgUHJlZmVyZW5jZXMuY29sb3JGb3JtYXQgPSBjb2xvckZvcm1hdDsKIAot
ICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLnNl
dHRpbmcoImV2ZW50LWxpc3RlbmVycy1maWx0ZXIiKTsKKyAgICAgICAgdmFyIGV2ZW50TGlzdGVu
ZXJzRmlsdGVyID0gSW5zcGVjdG9yQmFja2VuZC5zZXR0aW5nKCJldmVudC1saXN0ZW5lcnMtZmls
dGVyIik7CiAgICAgICAgIGlmIChldmVudExpc3RlbmVyc0ZpbHRlcikKICAgICAgICAgICAgIFBy
ZWZlcmVuY2VzLmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gZXZlbnRMaXN0ZW5lcnNGaWx0ZXI7CiAK
LSAgICAgICAgdmFyIHJlc291cmNlc0xhcmdlUm93cyA9IEluc3BlY3RvckNvbnRyb2xsZXIuc2V0
dGluZygicmVzb3VyY2VzLWxhcmdlLXJvd3MiKTsKKyAgICAgICAgdmFyIHJlc291cmNlc0xhcmdl
Um93cyA9IEluc3BlY3RvckJhY2tlbmQuc2V0dGluZygicmVzb3VyY2VzLWxhcmdlLXJvd3MiKTsK
ICAgICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZXNMYXJnZVJvd3MgIT09ICJ1bmRlZmluZWQiKQog
ICAgICAgICAgICAgUHJlZmVyZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dzID0gcmVzb3VyY2VzTGFy
Z2VSb3dzOwogICAgIH0sCkBAIC0yMjQsMTIgKzIyNCwxMiBAQCB2YXIgV2ViSW5zcGVjdG9yID0g
ewogICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7CiAKICAgICAgICAgaWYgKHgpIHsK
LSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuYXR0YWNoKCk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLmF0dGFjaCgpOwogICAgICAgICAgICAgYm9keS5yZW1vdmVTdHlsZUNs
YXNzKCJkZXRhY2hlZCIpOwogICAgICAgICAgICAgYm9keS5hZGRTdHlsZUNsYXNzKCJhdHRhY2hl
ZCIpOwogICAgICAgICAgICAgZG9ja1RvZ2dsZUJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVW5kb2NrIGludG8gc2VwYXJhdGUgd2luZG93LiIpOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5kZXRhY2goKTsKKyAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuZGV0YWNoKCk7CiAgICAgICAgICAgICBib2R5LnJlbW92ZVN0eWxl
Q2xhc3MoImF0dGFjaGVkIik7CiAgICAgICAgICAgICBib2R5LmFkZFN0eWxlQ2xhc3MoImRldGFj
aGVkIik7CiAgICAgICAgICAgICBkb2NrVG9nZ2xlQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEb2NrIHRvIG1haW4gd2luZG93LiIpOwpAQCAtMzk4LDEwICszOTgsMTAgQEAg
dmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLl9ob3Zl
cmVkRE9NTm9kZSkgewotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWdobGlnaHRE
T01Ob2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlLmlkKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuaGlnaGxpZ2h0RE9NTm9kZSh0aGlzLl9ob3ZlcmVkRE9NTm9kZS5pZCk7CiAgICAgICAg
ICAgICB0aGlzLnNob3dpbmdET01Ob2RlSGlnaGxpZ2h0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuaGlkZURPTU5vZGVIaWdobGlnaHQo
KTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsK
ICAgICAgICAgICAgIHRoaXMuc2hvd2luZ0RPTU5vZGVIaWdobGlnaHQgPSBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTUwOCwxMiArNTA4LDEyIEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBm
dW5jdGlvbigpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1sZWZ0
IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmNsb3NlLCB0cnVlKTsKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2xvc2UtYnV0dG9uLXJpZ2h0IikuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLmNsb3NlLCB0cnVlKTsKIAotICAgIEluc3BlY3RvckNvbnRyb2xsZXIu
bG9hZGVkKCk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5sb2FkZWQoKTsKIH0KIAogdmFyIHdpbmRv
d0xvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB2YXIgbG9jYWxpemVkU3RyaW5nc1VSTCA9IElu
c3BlY3RvckNvbnRyb2xsZXIubG9jYWxpemVkU3RyaW5nc1VSTCgpOworICAgIHZhciBsb2NhbGl6
ZWRTdHJpbmdzVVJMID0gSW5zcGVjdG9yQmFja2VuZC5sb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CiAg
ICAgaWYgKGxvY2FsaXplZFN0cmluZ3NVUkwpIHsKICAgICAgICAgdmFyIGxvY2FsaXplZFN0cmlu
Z3NTY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAg
ICAgIGxvY2FsaXplZFN0cmluZ3NTY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBXZWJJbnNwZWN0b3IubG9hZGVkLmJpbmQoV2ViSW5zcGVjdG9yKSwgZmFsc2UpOwpAQCAtNTQ2
LDcgKzU0Niw3IEBAIFdlYkluc3BlY3Rvci5kaXNwYXRjaCA9IGZ1bmN0aW9uKCkgewogCiBXZWJJ
bnNwZWN0b3Iud2luZG93VW5sb2FkID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgSW5zcGVjdG9y
Q29udHJvbGxlci53aW5kb3dVbmxvYWRpbmcoKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLndpbmRv
d1VubG9hZGluZygpOwogfQogCiBXZWJJbnNwZWN0b3Iud2luZG93UmVzaXplID0gZnVuY3Rpb24o
ZXZlbnQpCkBAIC01ODYsNyArNTg2LDcgQEAgV2ViSW5zcGVjdG9yLnNldEF0dGFjaGVkV2luZG93
ID0gZnVuY3Rpb24oYXR0YWNoZWQpCiAKIFdlYkluc3BlY3Rvci5jbG9zZSA9IGZ1bmN0aW9uKGV2
ZW50KQogewotICAgIEluc3BlY3RvckNvbnRyb2xsZXIuY2xvc2VXaW5kb3coKTsKKyAgICBJbnNw
ZWN0b3JCYWNrZW5kLmNsb3NlV2luZG93KCk7CiB9CiAKIFdlYkluc3BlY3Rvci5kb2N1bWVudENs
aWNrID0gZnVuY3Rpb24oZXZlbnQpCkBAIC05MDksMTQgKzkwOSwxNCBAQCBXZWJJbnNwZWN0b3Iu
dG9vbGJhckRyYWcgPSBmdW5jdGlvbihldmVudCkKICAgICBpZiAoV2ViSW5zcGVjdG9yLmF0dGFj
aGVkKSB7CiAgICAgICAgIHZhciBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAoZXZlbnQu
c2NyZWVuWSAtIHRvb2xiYXIubGFzdFNjcmVlblkpOwogCi0gICAgICAgIEluc3BlY3RvckNvbnRy
b2xsZXIuc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKKyAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHZhciB4ID0gZXZlbnQuc2NyZWVuWCAtIHRvb2xiYXIubGFzdFNjcmVlblg7CiAgICAg
ICAgIHZhciB5ID0gZXZlbnQuc2NyZWVuWSAtIHRvb2xiYXIubGFzdFNjcmVlblk7CiAKICAgICAg
ICAgLy8gV2UgY2Fubm90IGNhbGwgd2luZG93Lm1vdmVCeSBoZXJlIGJlY2F1c2UgaXQgcmVzdHJp
Y3RzIHRoZSBtb3ZlbWVudAogICAgICAgICAvLyBvZiB0aGUgd2luZG93IGF0IHRoZSBlZGdlcy4K
LSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5tb3ZlQnlVbnJlc3RyaWN0ZWQoeCwgeSk7Cisg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQubW92ZUJ5VW5yZXN0cmljdGVkKHgsIHkpOwogICAgIH0K
IAogICAgIHRvb2xiYXIubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43952</attachid>
            <date>2009-11-27 07:09:19 -0800</date>
            <delta_ts>2009-11-30 09:45:27 -0800</delta_ts>
            <desc>[PATCH] Now splits IDL into 3 parts as in design proposal.</desc>
            <filename>split_3</filename>
            <type>text/plain</type>
            <size>218382</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGI1NGNjZS4uNDNkYWFkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMTQgQEAKKzIwMDktMTEtMjcgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBkaGNwLTE3Mi0yOC0xNzQtMjIwLnNwYi5jb3JwLmdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFNwbGl0IEluc3BlY3RvckJhY2tlbmQgaW50byB0aHJlZSBwYXJ0czogYmFja2VuZCwK
KyAgICAgICAgaW5qZWN0ZWQgc2NyaXB0IGhvc3QgYW5kIGZyb250ZW5kIGhvc3QuCisgICAgICAg
IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4ODgK
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2VhcmNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzZXR0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzZXRTZXR0aW5nKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEds
b2JhbE9iamVjdDo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEluZGV4Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGlu
Zy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3RDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZV
TkNfREVDTCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3RlZFNjcmlw
dEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0ZWRT
Y3JpcHRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlRm9ySWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojp3cmFwT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6dW53cmFwT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmFkZE5vZGVzVG9TZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpjdXJyZW50Q2FsbEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VGb3JJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnNlbGVjdERhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6c2VsZWN0RE9NU3RvcmFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnJlcG9ydERpZERpc3Bh
dGNoT25JbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhv
c3Q6Omluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
SG9zdDo6aW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3Rv
ckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpkaXNj
b25uZWN0Q29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6Okluc3BlY3RvckJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6c3RvcmVMYXN0QWN0aXZlUGFuZWwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6dG9nZ2xlTm9kZVNlYXJjaCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpyZXNvdXJjZVRyYWNraW5nRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpkZWJ1Z2dlckVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6ZW5hYmxlRGVidWdnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6ZGlzYWJsZURlYnVnZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OmFkZEJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6dXBkYXRlQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnBhdXNlSW5EZWJ1Z2dlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpyZXN1bWVEZWJ1Z2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpzdGVwT3ZlclN0YXRlbWVudEluRGVidWdnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6c3RlcEludG9TdGF0ZW1lbnRJbkRl
YnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnN0ZXBPdXRPZkZ1
bmN0aW9uSW5EZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpw
YXVzZU9uRXhjZXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpz
ZXRQYXVzZU9uRXhjZXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5k
Ojpwcm9maWxlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6
ZW5hYmxlUHJvZmlsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6ZGlz
YWJsZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnN0YXJ0
UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnN0b3BQcm9m
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZUhl
YWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpjdXJyZW50Q2FsbEZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OmhpZ2hsaWdodERPTU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6aGlkZURPTU5vZGVIaWdobGlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpkZWxldGVDb29raWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpub2RlRm9ySWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rl
ZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
aW5zcGVjdG9yRnJvbnRlbmRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmluamVjdGVkU2NyaXB0SG9zdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpJbnNwZWN0b3JGcm9udGVuZEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRIb3N0Ojp+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6bG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kSG9zdDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kSG9zdDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Ojp3aW5kb3dVbmxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om1vdmVXaW5kb3dCeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvY2FsaXplZFN0cmluZ3NVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpoaWRkZW5QYW5lbHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpwbGF0Zm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjphZGRSZXNvdXJjZVNvdXJjZVRvRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTb3VyY2VUb0ZyYW1lKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjppbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6ZGlzY29ubmVjdENvbnRyb2xsZXIpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnQuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGNvbmRpdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLmFkZEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90
eXBlLnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRz
U2lkZWJhclBhbmUucHJvdG90eXBlLl9icmVha3BvaW50RW5hYmxlQ2hhbmdlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuY2xlYXJNZXNzYWdlcyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS5fZGVsZXRlQ29va2llQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLmdldENoaWxkTm9kZXNBc3luYyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZUFzeW5jKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlQXN5bmMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5zZXRUZXh0Tm9kZVZh
bHVlQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0Q29va2llc0FzeW5j
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVycy5nZXRFdmVudExpc3RlbmVy
c0Zvck5vZGVBc3luYyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdl
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLmdldEVudHJp
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnNldEl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnJlbW92ZUl0ZW0p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlLmdldFRhYmxlTmFtZXMpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnRoaXMudHJlZU91dGxpbmUuZm9jdXNlZE5vZGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5oaWRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuaGFuZGxlQ29weUV2ZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fbm9kZVNl
YXJjaEJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRs
aW5lLnByb3RvdHlwZS5zZXQgZm9jdXNlZERPTU5vZGUucmVzdG9yZUhpZ2hsaWdodFRvSG92ZXJl
ZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90
eXBlLnNldCBmb2N1c2VkRE9NTm9kZSk6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAgICAgICAgKEluamVjdGVk
U2NyaXB0Ll9ldmFsdWF0ZUFuZFdyYXApOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQucGVyZm9y
bVNlYXJjaC5hZGROb2Rlc1RvUmVzdWx0cyk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5nZXRD
YWxsRnJhbWVzKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0Ll9jYWxsRnJhbWVGb3JJZCk6Cisg
ICAgICAgIChJbmplY3RlZFNjcmlwdC5fY2xlYXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAo
SW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQu
X2NvcHkpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQuX2Vuc3VyZUNvbW1hbmRMaW5lQVBJSW5z
dGFsbGVkKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0Ll93aW5kb3cpOgorICAgICAgICAoSW5q
ZWN0ZWRTY3JpcHQuX25vZGVGb3JJZCk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5fb2JqZWN0
Rm9ySWQpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQucHVzaE5vZGVUb0Zyb250ZW5kKToKKyAg
ICAgICAgKEluamVjdGVkU2NyaXB0LmV4ZWN1dGVTcWwpOgorICAgICAgICAoSW5qZWN0ZWRTY3Jp
cHQuZXhlY3V0ZVNxbC5lcnJvckNhbGxiYWNrKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0LmV4
ZWN1dGVTcWwucXVlcnlUcmFuc2FjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNz
Ll9pbnN0YWxsSGFuZGxlci5JbmplY3RlZFNjcmlwdEFjY2Vzcy5tZXRob2ROYW1lKToKKyAgICAg
ICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczogQWRkZWQuCisgICAgICAg
ICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViKToKKyAgICAgICAgKC5XZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLndyYXBDYWxsYmFjayk6CisgICAg
ICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5wbGF0Zm9y
bSk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlw
ZS5wb3J0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJv
dG90eXBlLmNsb3NlV2luZG93KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFj
a2VuZFN0dWIucHJvdG90eXBlLmF0dGFjaCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5kZXRhY2gpOgorICAgICAgICAoLldlYkluc3BlY3Rv
ci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuc3RvcmVMYXN0QWN0aXZlUGFuZWwpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuY2xl
YXJNZXNzYWdlcyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHVi
LnByb3RvdHlwZS5zZWFyY2hpbmdGb3JOb2RlKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5z
cGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNlYXJjaCk6CisgICAgICAgICguV2ViSW5zcGVj
dG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS50b2dnbGVOb2RlU2VhcmNoKToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFj
a2VuZFN0dWIucHJvdG90eXBlLm1vdmVCeVVucmVzdHJpY3RlZCk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5hZGRSZXNvdXJjZVNvdXJjZVRv
RnJhbWUpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90
b3R5cGUuYWRkU291cmNlVG9GcmFtZSk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3Rv
ckJhY2tlbmRTdHViLnByb3RvdHlwZS5nZXRSZXNvdXJjZURvY3VtZW50Tm9kZSk6CisgICAgICAg
ICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5oaWdobGlnaHRE
T01Ob2RlKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJv
dG90eXBlLmhpZGVET01Ob2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5z
cGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLmluc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICgu
V2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5sb2FkZWQpOgorICAg
ICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUubG9jYWxp
emVkU3RyaW5nc1VSTCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRT
dHViLnByb3RvdHlwZS53aW5kb3dVbmxvYWRpbmcpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5J
bnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuaGlkZGVuUGFuZWxzKToKKyAgICAgICAgKC5X
ZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLmRlYnVnZ2VyRW5hYmxl
ZCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlw
ZS5lbmFibGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVj
dG9yQmFja2VuZFN0dWIucHJvdG90eXBlLmRpc2FibGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnJlc291cmNl
VHJhY2tpbmdFbmFibGVkKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2Vu
ZFN0dWIucHJvdG90eXBlLmVuYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3Iu
SW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLmRpc2FibGVEZWJ1Z2dlcik6CisgICAgICAg
ICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5hZGRCcmVha3Bv
aW50KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90
eXBlLnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JC
YWNrZW5kU3R1Yi5wcm90b3R5cGUudXBkYXRlQnJlYWtwb2ludCk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5wYXVzZUluRGVidWdnZXIpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUucGF1
c2VPbkV4Y2VwdGlvbnMpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5k
U3R1Yi5wcm90b3R5cGUuc2V0UGF1c2VPbkV4Y2VwdGlvbnMpOgorICAgICAgICAoLldlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUucmVzdW1lRGVidWdnZXIpOgorICAg
ICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUucHJvZmls
ZXJFbmFibGVkKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIu
cHJvdG90eXBlLmVuYWJsZVByb2ZpbGVyKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVj
dG9yQmFja2VuZFN0dWIucHJvdG90eXBlLmRpc2FibGVQcm9maWxlcik6CisgICAgICAgICguV2Vi
SW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5zdGFydFByb2ZpbGluZyk6
CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5z
dG9wUHJvZmlsaW5nKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0
dWIucHJvdG90eXBlLmdldFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3Iu
SW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLmdldFByb2ZpbGUpOgorICAgICAgICAoLldl
Ykluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUudGFrZUhlYXBTbmFwc2hv
dCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlw
ZS5kYXRhYmFzZVRhYmxlTmFtZXMpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JC
YWNrZW5kU3R1Yi5wcm90b3R5cGUuc3RlcEludG9TdGF0ZW1lbnRJbkRlYnVnZ2VyKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnN0ZXBPdXRP
ZkZ1bmN0aW9uSW5EZWJ1Z2dlcik6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJh
Y2tlbmRTdHViLnByb3RvdHlwZS5zdGVwT3ZlclN0YXRlbWVudEluRGVidWdnZXIpOgorICAgICAg
ICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuc2V0U2V0dGlu
Zyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlw
ZS5kaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUucmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cCk6Cisg
ICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5zZXR0
aW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckNvbnRyb2xsZXJT
dHViLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0U3R1Yi5qczogQWRkZWQuCisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250
ZW5kSG9zdFN0dWIpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhv
c3RTdHViLnByb3RvdHlwZS5wbGF0Zm9ybSk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnBvcnQpOgorICAgICAgICAoLldlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5jbG9zZVdpbmRvdyk6Cisg
ICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBl
LmF0dGFjaCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0
dWIucHJvdG90eXBlLmRldGFjaCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZy
b250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnNlYXJjaCk6CisgICAgICAgICguV2ViSW5zcGVjdG9y
Lkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnNldEF0dGFjaGVkV2luZG93SGVp
Z2h0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5w
cm90b3R5cGUubW92ZVdpbmRvd0J5KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9y
RnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuYWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lKToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUu
YWRkU291cmNlVG9GcmFtZSk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250
ZW5kSG9zdFN0dWIucHJvdG90eXBlLmxvYWRlZCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLklu
c3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmxvY2FsaXplZFN0cmluZ3NVUkwpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlw
ZS5oaWRkZW5QYW5lbHMpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViLnByb3RvdHlwZS5zZXRTZXR0aW5nKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3Iu
SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuc2V0dGluZyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DUFVQcm9maWxlVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUu
cHJvdG90eXBlLmJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZS5fdXBkYXRlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsLnByb3RvdHlwZS5fZW5hYmxlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fdG9nZ2xlUHJvZmlsaW5nKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl90b2dnbGVMYXJnZXJSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fZW5hYmxlUmVzb3Vy
Y2VUcmFja2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90
eXBlLl90b2dnbGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Vmlldy5wcm90
b3R5cGUuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuYWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlLmF0dGFjaERlYnVnZ2VyV2hlblNob3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlLmNhblNob3dSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fc2hvd1NjcmlwdE9yUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZFNjcmlwdFRvRmls
ZXNNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl91
cGRhdGVQYXVzZU9uRXhjZXB0aW9uc0J1dHRvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlRGVidWdnZXJCdXR0b25zKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9lbmFibGVEZWJ1Z2dpbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZURlYnVnZ2lu
Zyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdG9nZ2xl
UGF1c2VPbkV4Y2VwdGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuX3RvZ2dsZVBhdXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLl9zdGVwT3ZlckNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuX3N0ZXBJbnRvQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fc3RlcE91dENsaWNrZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnBlcmZvcm1TZWFyY2guZmluZFNl
YXJjaE1hdGNoZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBl
LnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lk
ZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJv
dG90eXBlLl9jaGFuZ2VDb2xvckZvcm1hdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXN0Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxl
ci5wcm90b3R5cGUubm90aWZ5RG9uZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlLl90b2dnbGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9uLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9uLnByb3RvdHlwZS5sb2Fk
U2F2ZWRFeHByZXNzaW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9u
c1NlY3Rpb24ucHJvdG90eXBlLnNhdmVFeHByZXNzaW9ucyk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IucGVuZGluZ0Rpc3BhdGNoZXMuMC5nZXQgcGxhdGZvcm0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmdldCBwb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5zZXQgY3VycmVudFBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fY3JlYXRlUGFuZWxz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fbG9hZFByZWZlcmVuY2VzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5zZXQgYXR0YWNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl91cGRhdGVI
b3ZlckhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAg
KHdpbmRvd0xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iud2luZG93VW5sb2FkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5jbG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IudG9vbGJh
ckRyYWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKToKKwogMjAwOS0xMS0yNiAg
QW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggM2Q3NjM2Zi4uYzA5NmMxYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMjAwLDcgKzIwMCw5IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEhUTUxW
aWRlb0VsZW1lbnQgXAogICAgIEhpc3RvcnkgXAogICAgIEltYWdlRGF0YSBcCisgICAgSW5qZWN0
ZWRTY3JpcHRIb3N0IFwKICAgICBJbnNwZWN0b3JCYWNrZW5kIFwKKyAgICBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QgXAogICAgIEtleWJvYXJkRXZlbnQgXAogICAgIExvY2F0aW9uIFwKICAgICBNZWRp
YSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCBhZjQ5M2MwLi42MjdkNjE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI0Niw3ICsyNDYsOSBA
QCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmlkbCBcCiAJ
V2ViQ29yZS9odG1sL1ZvaWRDYWxsYmFjay5pZGwgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaWRsIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuaWRsIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBcCisJV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAJV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAogCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuaWRsIFwKIAlXZWJDb3JlL3BhZ2UvQmFySW5mby5pZGwgXApAQCAtMzk4
LDcgKzQwMCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ltYWdlQ29uc3RydWN0b3IuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25z
dHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBc
Ci0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwIFwKKwlX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBcCisJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcCBcCiAJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuaCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAgXApAQCAtMTE2OSw2ICsxMTcy
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2ljdS91bmljb2RlL3V2ZXJzaW9u
LmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCiAJV2ViQ29yZS9p
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
XAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIFwKIAlXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2UuY3BwIFwKQEAgLTExODIsNiArMTE4Nyw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIFwKIAlX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgXAogCVdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmggXAorCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAgXAorCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgXAogCVdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMjIyNWRlZS4uOGQ5OGJhYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTE3OSw3ICsxNzksOSBAQAogICAgICAgICAgICAgJ2h0bWwvVGltZVJhbmdlcy5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvVmFsaWRpdHlTdGF0ZS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVm9p
ZENhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCcsCiAgICAgICAgICAgICAn
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsJywKICAgICAgICAgICAgICdu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwnLApAQCAtNTIyLDcgKzUyNCw4IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaCcsCi0gICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgnLApAQCAtNjk4
LDcgKzcwMSw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVj
dEVsZW1lbnRDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oJywKLSAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRI
b3N0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRp
b25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
Q2hhbm5lbENvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCcsCkBAIC0xNTIwLDYgKzE1MjQsOCBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwJywKQEAgLTE1MzIsNiArMTUzOCw4IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCcsCkBAIC0zNjM0LDcgKzM2
NDIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNT
aWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmll
dy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZpZXcuanMnLAot
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQ29udHJvbGxlclN0dWIu
anMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0
dWIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3Rl
ZFNjcmlwdC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNj
cmlwdEFjY2Vzcy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KaW5kZXggYTYwNGMwYy4uZmEwMmE3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00NjYsNyArNDY2LDkgQEAgSURMX0JJ
TkRJTkdTICs9IFwKICAgICBodG1sL1RpbWVSYW5nZXMuaWRsIFwKICAgICBodG1sL1ZhbGlkaXR5
U3RhdGUuaWRsIFwKICAgICBodG1sL1ZvaWRDYWxsYmFjay5pZGwgXAorICAgIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5p
ZGwgXAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwKICAgICBpbnNw
ZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXAogICAgIGxvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmlkbCBcCiAgICAgcGFnZS9CYXJJbmZvLmlkbCBcCkBAIC03MTksOCAr
NzIxLDkgQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgXAog
ICAgIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBcCisgICAgYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0luc3Bl
Y3RlZE9iamVjdFdyYXBwZXIuY3BwIFwKLSAgICBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tl
bmRDdXN0b20uY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1
c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNw
cCBcCiAgICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdz
L2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBcCkBAIC0xMDc1LDEyICsxMDc4LDE0IEBAIFNP
VVJDRVMgKz0gXAogICAgIGh0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1ZhbGlk
aXR5U3RhdGUuY3BwIFwKICAgICBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIFwKKyAgICBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VSZXNvdXJjZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAg
XAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIFwK
QEAgLTE3NTcsMTEgKzE3NjIsMTMgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9UaW1lUmFuZ2Vz
LmggXAogICAgIGh0bWwvVmFsaWRpdHlTdGF0ZS5oIFwKICAgICBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuaCBcCisgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIFwKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIFwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdENh
bGxGcmFtZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGJlNjU4
MzYuLjhiZWFiZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzcz
MSw3ICs3NzMxLDcgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0luc3BlY3RvckJhY2tlbmQuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQpAQCAtNzc4Myw3ICs3NzgzLDcgQEAKIAkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJbnNwZWN0
b3JCYWNrZW5kLmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkBAIC03ODQzLDYgKzc4NDMsNjIgQEAKIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9v
bA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCINCiAJCQkJPg0KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zNzI5OCw3ICszNzM1NCw1OSBAQAogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMy
Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9v
bA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0i
RGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIi
DQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29s
DQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJ
Pg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJ
Lz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUN
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3RDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDIzMTksNiArNDI0MjcsMTMgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluamVj
dGVkU2NyaXB0SG9zdC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRIb3N0LmgiDQorCQkJCT4N
CisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNr
ZW5kLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC00MjM3MSw2ICs0MjQ4NiwxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JSZXNvdXJjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpAQCAtNDI1NDYsNyArNDI2NjksMTEgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJ
CTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcSW5zcGVj
dG9yQ29udHJvbGxlclN0dWIuanMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxm
cm9udC1lbmRcSW5zcGVjdG9yQmFja2VuZFN0dWIuanMiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxJ
bnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJ
CTxGaWxlDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
ODFiMzViLi44ZmFhODRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTIyOSw2ICsxMjI5LDE3IEBACiAJCTc5QUM5MjE5MTA5OTQ1QzgwMDIxMjY2RSAv
KiBKU0NvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QUM5MjE3MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZl
bnQuaCAqLzsgfTsKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlG
MkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OwogCQk3
OUYyRjVBMjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUYxMDkxOTM5QTAwMEQ4
N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKKwkJN0EwRTc2RDUxMEJGMDUwNzAwQTAy
NzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NkQ0MTBCRjA1MDcwMEEwMjc2RSAvKiBK
U0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgKi87IH07CisJCTdBMEU3NkRBMTBCRjA1OTgw
MEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzZEODEwQkYwNTk4MDBBMDI3NkUgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwICovOyB9OworCQk3QTBFNzZEQjEwQkYwNTk4MDBBMDI3NkUg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMEU3NkQ5MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdC5oICovOyB9OworCQk3QTBFNzZGOTEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3BwICov
OyB9OworCQk3QTBFNzZGQTEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzZGNzEw
QkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07CisJCTdBMEU3NkZC
MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaWRsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzZGODEwQkYwOEVEMDBBMDI3
NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLzsgfTsKKwkJN0EwRTc3MEUxMEMwMEE4ODAw
QTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQjEwQzAwQTg4MDBBMDI3NkUgLyogSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLzsgfTsKKwkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZF
IC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZy
b250ZW5kSG9zdC5oICovOyB9OworCQk3QTBFNzcxMDEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0EwRTc3MEQxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5k
SG9zdC5pZGwgKi87IH07CisJCTdBMEU3NzFFMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTBFNzcxQzEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwICovOyB9OworCQk3QTBFNzcxRjEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBMEU3NzFEMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5o
ICovOyB9OwogCQk3QTFFODhGNTEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRTg4RjMxMDFD
QzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCAqLzsgfTsKIAkJN0ExRTg4RjYxMDFDQzM4
NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTFFODhGNDEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTI0
NTg3QjEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyNDU4NzkxMDIxRUFGNDAwMEEw
MEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCAqLzsgfTsKQEAgLTEyMzcsNyArMTI0OCw3IEBA
CiAJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNjc0QkRBMEY5
RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLzsgfTsKIAkJN0E3NEVD
QkExMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlF
IC8qIEluc3BlY3RvckJhY2tlbmQuY3BwICovOyB9OwogCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkz
OUUgLyogSW5zcGVjdG9yQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tl
bmQuaCAqLzsgfTsKLQkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yQmFj
a2VuZEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9t
LmNwcCAqLzsgfTsKKwkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5k
SG9zdEN1c3RvbS5jcHAgKi87IH07CiAJCTdBRUQzRTA1MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNw
ZWN0b3JGcm9udGVuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUVEM0UwMzBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
ICovOyB9OwogCQk3QUVEM0UwNjBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRUQzRTA0
MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovOyB9OwogCQk4NDIyNDE4
MzEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTgxMTA3RTc3RjQw
MDc2NkE4NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwICovOyB9OwpAQCAtNjU1MCw2
ICs2NTYxLDE3IEBACiAJCTc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBvc2l0aW9u
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUYyRjU5RjEwOTE5MzlB
MDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc5RjJGNUEwMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0EwRTc2RDQxMEJGMDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0EwRTc2RDgxMEJGMDU5ODAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EwRTc2RDkxMEJGMDU5ODAwQTAyNzZF
IC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EwRTc2RjcxMEJGMDhFRDAwQTAyNzZFIC8q
IEluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EwRTc2
RjgxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0EwRTc3MEIxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTBFNzcwQzEwQzAw
QTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QTBFNzcwRDEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTBFNzcxQzEwQzAwREIxMDBBMDI3
NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QTBFNzcxRDEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0ExRTg4RjMx
MDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0ExRTg4RjQxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01B
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTU5LDcgKzY1ODEsNyBA
QAogCQk3QTc0RUNCNjEwMTgzOTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0b3JCYWNr
ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJh
Y2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCOTEwMTgzOUE2
MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JCYWNrZW5k
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3NEVDQkMxMDE4MzlE
QTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FFRDNFMDMwRkJCMUVBQTAwRDJC
MDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MjI0MTgxMTA3RTc3RjQwMDc2NkE4NyAvKiBKU1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwMTkyLDcgKzEwMjE0LDcgQEAKIAkJCQkxOEM1RkNBMzEwQTM5OTFGMDA0ODQz
OEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeS5jcHAgKi8sCiAJCQkJMThDNUZDQTQx
MEEzOTkxRjAwNDg0MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuaCAqLywKIAkJ
CSk7Ci0JCQlwYXRoID0gIlNoYXJlZFNjcmlwdCI7CisJCQlwYXRoID0gU2hhcmVkU2NyaXB0Owog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJMUEyRTZFNTYwQ0M1NTFFMDAwNEEy
MDYyIC8qIHNxbCAqLyA9IHsKQEAgLTEwNDIwLDggKzEwNDQyLDEyIEBACiAJCTFDNUZBRUNBMERD
RkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTdBMEU3NkQ4MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVk
U2NyaXB0SG9zdC5jcHAgKi8sCisJCQkJN0EwRTc2RDkxMEJGMDU5ODAwQTAyNzZFIC8qIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggKi8sCiAJCQkJNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpT
SW5zcGVjdG9yQmFja2VuZC5jcHAgKi8sCiAJCQkJNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8q
IEpTSW5zcGVjdG9yQmFja2VuZC5oICovLAorCQkJCTdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2RSAv
KiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi8sCisJCQkJN0EwRTc3MUQxMEMwMERCMTAw
QTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi8sCiAJCQkJMUM1RkFFQ0YwRENG
RDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCiAJCQkJMUM1RkFF
RDAwRENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAogCQkJKTsK
QEAgLTEwNDM0LDYgKzEwNDYwLDkgQEAKIAkJCQkxQzgxQjk1OTBFOTczMzA4MDAyNjZFMDcgLyog
ZnJvbnQtZW5kICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVz
c2FnZS5jcHAgKi8sCiAJCQkJNDFGMDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNz
YWdlLmggKi8sCisJCQkJN0EwRTc2RjYxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0
SG9zdC5jcHAgKi8sCisJCQkJN0EwRTc2RjcxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2Ny
aXB0SG9zdC5oICovLAorCQkJCTdBMEU3NkY4MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuaWRsICovLAogCQkJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0
b3JCYWNrZW5kLmNwcCAqLywKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVj
dG9yQmFja2VuZC5oICovLAogCQkJCTdBNzRFQ0I2MTAxODM5OUEwMEJGOTM5RSAvKiBJbnNwZWN0
b3JCYWNrZW5kLmlkbCAqLywKQEAgLTEwNDQ4LDYgKzEwNDc3LDkgQEAKIAkJCQk0MUYwNjE3MjBG
NUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmggKi8sCiAJCQkJ
N0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLywKIAkJ
CQk3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLywKKwkJ
CQk3QTBFNzcwQjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAq
LywKKwkJCQk3QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmggKi8sCisJCQkJN0EwRTc3MEQxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5k
SG9zdC5pZGwgKi8sCiAJCQkJNDFGMDYyMDAwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJl
c291cmNlLmNwcCAqLywKIAkJCQk0MUYwNjFGRjBGNUYwQjY2MDBBMDdFQUMgLyogSW5zcGVjdG9y
UmVzb3VyY2UuaCAqLywKIAkJCQk3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgKi8sCkBAIC0xNDUzMCw3ICsxNDU2Miw4IEBACiAJCQkJQkMxN0Y5
NjUwQjY0RUJCODAwNEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwICovLAog
CQkJCUFCNENCNEVBMEI4QkRBM0QwMDlGNDBCMCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9t
LmggKi8sCiAJCQkJQTdEMDMxOEQwRTkzNTQwMzAwRTI0QUNEIC8qIEpTSW1hZ2VEYXRhQ3VzdG9t
LmNwcCAqLywKLQkJCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JCYWNr
ZW5kQ3VzdG9tLmNwcCAqLywKKwkJCQk3QTBFNzZENDEwQkYwNTA3MDBBMDI3NkUgLyogSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwICovLAorCQkJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8sCiAJCQkJMUM1RkFFRTYw
RENGREE2ODAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgKi8sCiAJ
CQkJQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3BwICovLAog
CQkJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cCAqLywKQEAgLTE4MTc5LDYgKzE4MjEyLDEwIEBACiAJCQkJOTM4MkRGNTgxMEE4RDVDOTAwOTI1
NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFCOEUw
MDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjEx
MEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0Ew
RTc2REIxMEJGMDU5ODAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3QTBFNzZGQTEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTBFNzcxRjEwQzAwREIxMDBB
MDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTgy
ODIsNiArMTgzMTksOCBAQAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0
Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMThDNUZDQTcxMEEzOTkxRjAwNDg0MzhE
IC8qIFdlYktpdFNoYXJlZFNjcmlwdC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTE4QzVGQ0I5
MTBBM0M2RjIwMDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJN0EwRTc2RkIxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5p
ZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTdBMEU3NzEwMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5Mzc5LDcgKzE5NDE4
LDcgQEAKIAkJCQlBN0QwMzE4RTBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA5MTU4OEEwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5z
cGVjdGVkT2JqZWN0V3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjBDRDBGNUVF
QjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwOTE1ODhDMERC
NDIwOTIwMEU1NUFGNCAvKiBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzVGQUVEMTBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNUZBRUU3MERDRkRBNjgwMEQ1OEY3OCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMDMyOSw2
ICsyMDM2OCwxMSBAQAogCQkJCTE4QzVGQ0I3MTBBM0M2RjIwMDQ4NDM4RCAvKiBTaGFyZWRTY3Jp
cHRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQjRDRDI1MTBCMzIyRTIwMEJGRkQ3
RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNDdFNjYw
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0EwRTc2RDUxMEJGMDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdBMEU3NkRBMTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVj
dGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTBFNzZGOTEwQkYwOEVEMDBB
MDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBMEU3
NzBFMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0EwRTc3MUUxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlU291
cmNlcy5ia2wgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAppbmRleCAyMzZlMmUyLi44YmZl
NDk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAorKysgYi9XZWJDb3Jl
L1dlYkNvcmVTb3VyY2VzLmJrbApAQCAtMTExLDggKzExMSw5IEBAIFRoaXMgZmlsZSBjb250YWlu
cyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgYmlu
ZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3Mv
anMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0
YUN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0
b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAK
LSAgICAgICAgYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorICAgICAg
ICBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTM2Niw3ICszNjcsOSBAQCBUaGlzIGZpbGUgY29u
dGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAg
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MVUxpc3RFbGVtZW50LmNwcAogICAgICAgICBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSGlzdG9yeS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0ltYWdlRGF0YS5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0luc3BlY3RvckJhY2tlbmQuY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTS2V5Ym9hcmRFdmVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0xvY2F0aW9uLmNwcApAQCAtNjgyLDcgKzY4NSw5IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUg
bGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KIAogICAgIDxzZXQgYXBwZW5k
PSIxIiB2YXI9IldFQkNPUkVfU09VUkNFU19JTlNQRUNUT1IiPgogICAgICAgICBpbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuY3BwCisgICAgICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCiAgICAgICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorICAgICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAogICAgICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKICAgICAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAogICAgICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNw
cApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IGYwODMw
M2EuLjBhNThkYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAKQEAgLTg1LDggKzg1LDkgQEAKICNpbmNsdWRlICJKU0hpc3RvcnlDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGFDdXN0
b20uY3BwIgorI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwIgotI2luY2x1ZGUgIkpTSW5zcGVjdG9y
QmFja2VuZEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbkN1c3Rv
bS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2Vu
ZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3Rv
bS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOWY1MzIuLjAwMDAwMDAKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMzQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4
IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkpTSW5zcGVjdG9yQmFja2VuZC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2lu
Y2x1ZGUgIkNvbnNvbGUuaCIKLSNpZiBFTkFCTEUoREFUQUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJh
c2UuaCIKLSNpbmNsdWRlICJKU0RhdGFiYXNlLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgot
I2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgotI2luY2x1ZGUgIkpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5oIgotI2luY2x1ZGUg
IkpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmgiCi0jaW5jbHVkZSAiSlNOb2RlLmgiCi0jaW5j
bHVkZSAiSlNSYW5nZS5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0j
aWYgRU5BQkxFKERPTV9TVE9SQUdFKQotI2luY2x1ZGUgIlN0b3JhZ2UuaCIKLSNpbmNsdWRlICJK
U1N0b3JhZ2UuaCIKLSNlbmRpZgotI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUg
IlZpc2libGVQb3NpdGlvbi5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi0jaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSAiSmF2YVNjcmlwdENhbGxGcmFtZS5o
IgotI2luY2x1ZGUgIkphdmFTY3JpcHREZWJ1Z1NlcnZlci5oIgotI2luY2x1ZGUgIkpTSmF2YVNj
cmlwdENhbGxGcmFtZS5oIgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmhpZ2hsaWdodERP
TU5vZGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKLXsK
LSAgICBpZiAoYXJncy5zaXplKCkgPCAxKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LQotICAgIGltcGwoKS0+aGlnaGxpZ2h0KGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKSk7Ci0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpz
ZWFyY2goRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmIChh
cmdzLnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgTm9k
ZSogbm9kZSA9IHRvTm9kZShhcmdzLmF0KDApKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgU3RyaW5nIHRhcmdldCA9IGFyZ3MuYXQoMSkudG9T
dHJpbmcoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHJlc3VsdDsKLSAg
ICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdlKHJhbmdlT2ZDb250ZW50cyhub2RlKSk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4g
cmVzdWx0UmFuZ2UoZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgdGFyZ2V0LCB0cnVl
LCBmYWxzZSkpOwotICAgICAgICBpZiAocmVzdWx0UmFuZ2UtPmNvbGxhcHNlZChlYykpCi0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAvLyBBIG5vbi1jb2xsYXBzZWQgcmVzdWx0IHJhbmdl
IGNhbiBpbiBzb21lIGZ1bmt5IHdoaXRlc3BhY2UgY2FzZXMgc3RpbGwgbm90Ci0gICAgICAgIC8v
IGFkdmFuY2UgdGhlIHJhbmdlJ3Mgc3RhcnQgcG9zaXRpb24gKDQ1MDkzMjgpLiBCcmVhayB0byBh
dm9pZCBpbmZpbml0ZSBsb29wLgotICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV3U3RhcnQgPSBl
bmRWaXNpYmxlUG9zaXRpb24ocmVzdWx0UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOwotICAgICAg
ICBpZiAobmV3U3RhcnQgPT0gc3RhcnRWaXNpYmxlUG9zaXRpb24oc2VhcmNoUmFuZ2UuZ2V0KCks
IERPV05TVFJFQU0pKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVu
ZCh0b0pTKGV4ZWMsIHJlc3VsdFJhbmdlLmdldCgpKSk7Ci0KLSAgICAgICAgc2V0U3RhcnQoc2Vh
cmNoUmFuZ2UuZ2V0KCksIG5ld1N0YXJ0KTsKLSAgICB9IHdoaWxlICh0cnVlKTsKLQotICAgIHJl
dHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCByZXN1bHQpOwotfQotCi0jaWYgRU5BQkxFKERBVEFC
QVNFKQotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmRhdGFiYXNlRm9ySWQoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmIChhcmdzLnNpemUoKSA8IDEp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQ29udHJvbGxl
ciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWljKQotICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IGlt
cGwoKS0+ZGF0YWJhc2VGb3JJZChhcmdzLmF0KDApLnRvSW50MzIoZXhlYykpOwotICAgIGlmICgh
ZGF0YWJhc2UpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIC8vIENvdWxkIHVz
ZSBjdXJyZW50V29ybGQoZXhlYykgLi4uIGJ1dCB3aGljaCBleGVjISAgVGhlIGZvbGxvd2luZyBt
aXhlZCB1c2Ugb2YgZXhlYyAmIGluc3BlY3RlZFdpbmRvdy0+Z2xvYmFsRXhlYygpIHNjYXJlcyBt
ZSEKLSAgICBKU0RPTVdpbmRvdyogaW5zcGVjdGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhpYy0+
aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3JsZCgpKTsKLSAgICByZXR1
cm4gSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFwKGluc3BlY3RlZFdpbmRvdy0+Z2xvYmFs
RXhlYygpLCB0b0pTKGV4ZWMsIGRhdGFiYXNlKSk7Ci19Ci0jZW5kaWYKLQotSlNWYWx1ZSBKU0lu
c3BlY3RvckJhY2tlbmQ6Omluc3BlY3RlZFdpbmRvdyhFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
JikKLXsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGltcGwoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpOwotICAgIGlmICghaWMpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgIEpTRE9NV2luZG93KiBpbnNwZWN0ZWRXaW5kb3cgPSB0b0pTRE9NV2luZG93KGljLT5pbnNw
ZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpOwotICAgIHJldHVybiBK
U0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoaW5zcGVjdGVkV2luZG93LT5nbG9iYWxFeGVj
KCksIGluc3BlY3RlZFdpbmRvdyk7Ci19Ci0KLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpz
ZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsKLSAgICBpZiAo
YXJncy5zaXplKCkgPCAxKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIFN0
cmluZyBrZXkgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0
b3JDb250cm9sbGVyKiBpYyA9IGltcGwoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGlm
ICghaWMpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGNvbnN0IEluc3BlY3Rv
ckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcgPSBpYy0+c2V0dGluZyhrZXkpOwotCi0gICAg
c3dpdGNoIChzZXR0aW5nLnR5cGUoKSkgewotICAgICAgICBkZWZhdWx0OgotICAgICAgICBjYXNl
IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6Ok5vVHlwZToKLSAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRp
bmc6OlN0cmluZ1R5cGU6Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc2V0dGlu
Zy5zdHJpbmcoKSk7Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6
RG91YmxlVHlwZToKLSAgICAgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBzZXR0aW5nLmRv
dWJsZVZhbHVlKCkpOwotICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6
OkludGVnZXJUeXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHNldHRpbmcu
aW50ZWdlclZhbHVlKCkpOwotICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRp
bmc6OkJvb2xlYW5UeXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihzZXR0aW5nLmJv
b2xlYW5WYWx1ZSgpKTsKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5n
OjpTdHJpbmdWZWN0b3JUeXBlOiB7Ci0gICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBz
dHJpbmdzQXJyYXk7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncyA9
IHNldHRpbmcuc3RyaW5nVmVjdG9yKCk7Ci0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsZW5n
dGggPSBzdHJpbmdzLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBzdHJpbmdzQXJyYXkuYXBwZW5kKGpzU3Ry
aW5nKGV4ZWMsIHN0cmluZ3NbaV0pKTsKLSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnJh
eShleGVjLCBzdHJpbmdzQXJyYXkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1KU1ZhbHVlIEpT
SW5zcGVjdG9yQmFja2VuZDo6c2V0U2V0dGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MpCi17Ci0gICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0KLSAgICBTdHJpbmcga2V5ID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVj
KTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyBzZXR0aW5nOwotCi0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IGFyZ3MuYXQoMSk7Ci0gICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVk
KCkgfHwgdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgLy8gRG8gbm90aGluZy4gVGhlIHNldHRp
bmcgaXMgYWxyZWFkeSBOb1R5cGUuCi0gICAgICAgIEFTU0VSVChzZXR0aW5nLnR5cGUoKSA9PSBJ
bnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpOb1R5cGUpOwotICAgIH0gZWxzZSBpZiAodmFs
dWUuaXNTdHJpbmcoKSkKLSAgICAgICAgc2V0dGluZy5zZXQodmFsdWUudG9TdHJpbmcoZXhlYykp
OwotICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHNldHRpbmcuc2V0KHZh
bHVlLnRvTnVtYmVyKGV4ZWMpKTsKLSAgICBlbHNlIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKLSAg
ICAgICAgc2V0dGluZy5zZXQodmFsdWUudG9Cb29sZWFuKGV4ZWMpKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkodmFsdWUpOwotICAgICAgICBpZiAoIWpz
QXJyYXkpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgVmVjdG9y
PFN0cmluZz4gc3RyaW5nczsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGpzQXJy
YXktPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBpdGVtID0ganNBcnJheS0+
Z2V0KGV4ZWMsIGkpLnRvU3RyaW5nKGV4ZWMpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAg
ICAgICAgc3RyaW5ncy5hcHBlbmQoaXRlbSk7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0dGluZy5z
ZXQoc3RyaW5ncyk7Ci0gICAgfQotCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGlj
ID0gaW1wbCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKGljKQotICAgICAgICBp
Yy0+c2V0U2V0dGluZyhrZXksIHNldHRpbmcpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci19Ci0KLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjp3cmFwQ2FsbGJhY2soRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmIChhcmdzLnNpemUoKSA8IDEp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJuIEpTSW5zcGVjdG9y
Q2FsbGJhY2tXcmFwcGVyOjp3cmFwKGV4ZWMsIGFyZ3MuYXQoMCkpOwotfQotCi0jaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0KLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpjdXJy
ZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYpCi17Ci0gICAgSmF2
YVNjcmlwdENhbGxGcmFtZSogY2FsbEZyYW1lID0gaW1wbCgpLT5jdXJyZW50Q2FsbEZyYW1lKCk7
Ci0gICAgaWYgKCFjYWxsRnJhbWUgfHwgIWNhbGxGcmFtZS0+aXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIC8vIEZJWE1FOiBJIGFtIG5vdCBzdXJlIGlmIHRo
aXMgaXMgYWN0dWFsbHkgbmVlZGVkLiBDYW4gd2UganVzdCB1c2UgZXhlYz8KLSAgICBFeGVjU3Rh
dGUqIGdsb2JhbEV4ZWMgPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7Ci0KLSAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwot
ICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZ2xvYmFsRXhlYywgdG9K
UyhleGVjLCBjYWxsRnJhbWUpKTsKLX0KLQotI2VuZGlmCi0KLUpTVmFsdWUgSlNJbnNwZWN0b3JC
YWNrZW5kOjpub2RlRm9ySWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQot
ewotICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgTm9kZSogbm9kZSA9IGltcGwoKS0+bm9kZUZvcklkKGFyZ3MuYXQoMCkudG9JbnQz
MihleGVjKSk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LQotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW1wbCgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCk7Ci0gICAgaWYgKCFpYykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIEpTRE9NV2luZG93KiBp
bnNwZWN0ZWRXaW5kb3cgPSB0b0pTRE9NV2luZG93KGljLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5G
cmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpOwotICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdy
YXBwZXI6OndyYXAoaW5zcGVjdGVkV2luZG93LT5nbG9iYWxFeGVjKCksIHRvSlMoZXhlYywgZGVw
cmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4
ZWMoKSksIG5vZGUpKTsKLX0KLQotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OndyYXBPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmIChhcmdz
LnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJu
IGltcGwoKS0+d3JhcE9iamVjdChTY3JpcHRWYWx1ZShhcmdzLmF0KDApKSwgYXJncy5hdCgxKS50
b1N0cmluZyhleGVjKSkuanNWYWx1ZSgpOwotfQotCi1KU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2Vu
ZDo6dW53cmFwT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsK
LSAgICBpZiAoYXJncy5zaXplKCkgPCAxKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LQotICAgIHJldHVybiBpbXBsKCktPnVud3JhcE9iamVjdChhcmdzLmF0KDApLnRvU3RyaW5nKGV4
ZWMpKS5qc1ZhbHVlKCk7Ci19Ci0KLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpwdXNoTm9k
ZVBhdGhUb0Zyb250ZW5kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsK
LSAgICBpZiAoYXJncy5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LQotICAgIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gSlNRdWFyYW50aW5l
ZE9iamVjdFdyYXBwZXI6OmFzV3JhcHBlcihhcmdzLmF0KDApKTsKLSAgICBpZiAoIXdyYXBwZXIp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgTm9kZSogbm9kZSA9IHRvTm9k
ZSh3cmFwcGVyLT51bndyYXBwZWRPYmplY3QoKSk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGJvb2wgc2VsZWN0SW5VSSA9IGFyZ3MuYXQoMSku
dG9Cb29sZWFuKGV4ZWMpOwotICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbXBsKCktPnB1c2hO
b2RlUGF0aFRvRnJvbnRlbmQobm9kZSwgc2VsZWN0SW5VSSkpOwotfQotCi0jaWYgRU5BQkxFKERB
VEFCQVNFKQotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnNlbGVjdERhdGFiYXNlKEV4ZWNT
dGF0ZSosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBKU1F1YXJhbnRpbmVkT2JqZWN0
V3JhcHBlciogd3JhcHBlciA9IEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjphc1dyYXBwZXIo
YXJncy5hdCgwKSk7Ci0gICAgaWYgKCF3cmFwcGVyKQotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLQotICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IHRvRGF0YWJhc2Uod3JhcHBlci0+dW53
cmFwcGVkT2JqZWN0KCkpOwotICAgIGlmIChkYXRhYmFzZSkKLSAgICAgICAgaW1wbCgpLT5zZWxl
Y3REYXRhYmFzZShkYXRhYmFzZSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLUpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5k
OjpzZWxlY3RET01TdG9yYWdlKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0g
ICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KTsKLSAgICBpZiAoIWljKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpT
UXVhcmFudGluZWRPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gSlNRdWFyYW50aW5lZE9iamVjdFdy
YXBwZXI6OmFzV3JhcHBlcihhcmdzLmF0KDApKTsKLSAgICBpZiAoIXdyYXBwZXIpCi0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgU3RvcmFnZSogc3RvcmFnZSA9IHRvU3RvcmFn
ZSh3cmFwcGVyLT51bndyYXBwZWRPYmplY3QoKSk7Ci0gICAgaWYgKHN0b3JhZ2UpCi0gICAgICAg
IGltcGwoKS0+c2VsZWN0RE9NU3RvcmFnZShzdG9yYWdlKTsKLSAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3Bl
Y3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41YjQ0MTM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kSG9zdC5oIgorI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUg
IkpTUmFuZ2UuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0pTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNlYXJjaChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgp
IDwgMikKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBOb2RlKiBub2RlID0g
dG9Ob2RlKGFyZ3MuYXQoMCkpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisKKyAgICBTdHJpbmcgdGFyZ2V0ID0gYXJncy5hdCgxKS50b1N0cmluZyhleGVj
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVzdWx0OworICAgIFJlZlB0cjxS
YW5nZT4gc2VhcmNoUmFuZ2UocmFuZ2VPZkNvbnRlbnRzKG5vZGUpKTsKKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGRvIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5n
ZShmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCB0YXJnZXQsIHRydWUsIGZhbHNlKSk7
CisgICAgICAgIGlmIChyZXN1bHRSYW5nZS0+Y29sbGFwc2VkKGVjKSkKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIC8vIEEgbm9uLWNvbGxhcHNlZCByZXN1bHQgcmFuZ2UgY2FuIGluIHNv
bWUgZnVua3kgd2hpdGVzcGFjZSBjYXNlcyBzdGlsbCBub3QKKyAgICAgICAgLy8gYWR2YW5jZSB0
aGUgcmFuZ2UncyBzdGFydCBwb3NpdGlvbiAoNDUwOTMyOCkuIEJyZWFrIHRvIGF2b2lkIGluZmlu
aXRlIGxvb3AuCisgICAgICAgIFZpc2libGVQb3NpdGlvbiBuZXdTdGFydCA9IGVuZFZpc2libGVQ
b3NpdGlvbihyZXN1bHRSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgIGlmIChuZXdT
dGFydCA9PSBzdGFydFZpc2libGVQb3NpdGlvbihzZWFyY2hSYW5nZS5nZXQoKSwgRE9XTlNUUkVB
TSkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByZXN1bHQuYXBwZW5kKHRvSlMoZXhl
YywgcmVzdWx0UmFuZ2UuZ2V0KCkpKTsKKworICAgICAgICBzZXRTdGFydChzZWFyY2hSYW5nZS5n
ZXQoKSwgbmV3U3RhcnQpOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgcmV0dXJuIGNvbnN0
cnVjdEFycmF5KGV4ZWMsIHJlc3VsdCk7Cit9CisKK0pTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6OnNldHRpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorewor
ICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CisgICAgU3RyaW5nIGtleSA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW1wbCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7
CisgICAgaWYgKCFpYykKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgY29uc3Qg
SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZyA9IGljLT5zZXR0aW5nKGtleSk7
CisKKyAgICBzd2l0Y2ggKHNldHRpbmcudHlwZSgpKSB7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6Tm9UeXBlOgorICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6U3RyaW5nVHlwZToKKyAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCBzZXR0aW5nLnN0cmluZygpKTsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpT
ZXR0aW5nOjpEb3VibGVUeXBlOgorICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHNl
dHRpbmcuZG91YmxlVmFsdWUoKSk7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6
U2V0dGluZzo6SW50ZWdlclR5cGU6CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywg
c2V0dGluZy5pbnRlZ2VyVmFsdWUoKSk7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6Qm9vbGVhblR5cGU6CisgICAgICAgICAgICByZXR1cm4ganNCb29sZWFuKHNl
dHRpbmcuYm9vbGVhblZhbHVlKCkpOworICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6
OlNldHRpbmc6OlN0cmluZ1ZlY3RvclR5cGU6IHsKKyAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIHN0cmluZ3NBcnJheTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
dHJpbmdzID0gc2V0dGluZy5zdHJpbmdWZWN0b3IoKTsKKyAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGxlbmd0aCA9IHN0cmluZ3Muc2l6ZSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHN0cmluZ3NBcnJheS5hcHBl
bmQoanNTdHJpbmcoZXhlYywgc3RyaW5nc1tpXSkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdEFycmF5KGV4ZWMsIHN0cmluZ3NBcnJheSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0pT
VmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNldFNldHRpbmcoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDIpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgU3RyaW5nIGtleSA9IGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcg
c2V0dGluZzsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBhcmdzLmF0KDEpOworICAgIGlmICh2YWx1
ZS5pc1VuZGVmaW5lZCgpIHx8IHZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgIC8vIERvIG5vdGhp
bmcuIFRoZSBzZXR0aW5nIGlzIGFscmVhZHkgTm9UeXBlLgorICAgICAgICBBU1NFUlQoc2V0dGlu
Zy50eXBlKCkgPT0gSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6Tm9UeXBlKTsKKyAgICB9
IGVsc2UgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCisgICAgICAgIHNldHRpbmcuc2V0KHZhbHVlLnRv
U3RyaW5nKGV4ZWMpKTsKKyAgICBlbHNlIGlmICh2YWx1ZS5pc051bWJlcigpKQorICAgICAgICBz
ZXR0aW5nLnNldCh2YWx1ZS50b051bWJlcihleGVjKSk7CisgICAgZWxzZSBpZiAodmFsdWUuaXNC
b29sZWFuKCkpCisgICAgICAgIHNldHRpbmcuc2V0KHZhbHVlLnRvQm9vbGVhbihleGVjKSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KHZhbHVlKTsKKyAg
ICAgICAgaWYgKCFqc0FycmF5KQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ3M7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBqc0FycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaXRl
bSA9IGpzQXJyYXktPmdldChleGVjLCBpKS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgICAgIHN0cmluZ3MuYXBwZW5kKGl0ZW0pOworICAgICAgICB9CisgICAg
ICAgIHNldHRpbmcuc2V0KHN0cmluZ3MpOworICAgIH0KKworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBJbnNwZWN0b3JD
b250cm9sbGVyKiBpYyA9IGltcGwoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmIChp
YykKKyAgICAgICAgaWMtPnNldFNldHRpbmcoa2V5LCBzZXR0aW5nKTsKKworICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IGYx
NDE0NWUuLmExYWY5OTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2Jq
ZWN0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTM2
LDcgKzM2LDkgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkpT
SW5zcGVjdG9yQmFja2VuZC5oIgorI2luY2x1ZGUgIkpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmgi
CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTE0Myw2ICsxNDUsMjIgQEAgYm9v
bCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0
IGNoYXIqIG5hbWUsIEluc3BlY3QKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChJZGVudGlm
aWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2
YWx1ZSkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwogfQorCiti
b29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiB2YWx1ZSkKK3sKKyAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KElk
ZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHZhbHVlKSk7CisgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7Cit9
CisKK2Jvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNjcmlwdEhvc3QqIHZhbHVlKQoreworICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qo
SWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9i
amVjdCwgdmFsdWUpKTsKKyAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsK
K30KICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCiBib29sIFNjcmlwdEdsb2JhbE9iamVj
dDo6Z2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgU2NyaXB0
T2JqZWN0JiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2Jq
ZWN0LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmluZGV4IDMxMzgxZjMu
LjJmNmNkOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApAQCAtMzgsNyArMzgsOSBA
QAogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogICAgIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7
CisgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwogCiAgICAgY2xhc3MgU2NyaXB0T2Jq
ZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKICAgICBwdWJsaWM6CkBAIC02Niw2ICs2OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRl
KiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3QgY2hh
ciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCopOworICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2Ny
aXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5q
ZWN0ZWRTY3JpcHRIb3N0Kik7CiAjZW5kaWYKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0KFNjcmlw
dFN0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgU2NyaXB0T2JqZWN0Jik7CiAgICAgICAgIHN0YXRp
YyBib29sIHJlbW92ZShTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCmluZGV4IDk3MjExYWUuLmU1ZTZmZTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKQEAgLTI1Nyw3ICsyNTcsOSBAQAog
I2VuZGlmIC8vIFhTTFQKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2VuZGlmIC8vIElOU1BFQ1RPUgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3Vy
Y2VzQWxsSW5PbmUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbElu
T25lLmNwcAppbmRleCA1MDhjZDQ1Li5jZmZjMmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAKQEAgLTM4Nyw1ICszODcsNyBAQAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgImJpbmRpbmdzL1Y4SW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOEluc3BlY3RvckJhY2tlbmQuY3Bw
IgorI2luY2x1ZGUgImJpbmRpbmdzL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCIKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDMzNGUzYWIuLjg3YjYyN2Mg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAKQEAgLTM2LDYgKzM2LDggQEAKIAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JCYWNrZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCkBAIC0xMzEsNiArMTMz
LDIwIEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0CiAgICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3Mo
KTsKIH0KIAorYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCogdmFsdWUpCit7
CisgICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUpOworICAgIHNjb3BlLmdsb2JhbCgp
LT5TZXQodjg6OlN0cmluZzo6TmV3KG5hbWUpLCBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2Jq
ZWN0KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SRlJPTlRFTkRIT1NULCB2YWx1ZSkpOworICAgIHJl
dHVybiBzY29wZS5zdWNjZXNzKCk7Cit9CisKK2Jvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNjcmlw
dEhvc3QqIHZhbHVlKQoreworICAgIFNjcmlwdFNjb3BlIHNjb3BlKHNjcmlwdFN0YXRlKTsKKyAg
ICBzY29wZS5nbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhuYW1lKSwgVjhET01XcmFwcGVy
Ojpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OklOSkVDVEVEU0NSSVBUSE9TVCwgdmFs
dWUpKTsKKyAgICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOworfQorCiBib29sIFNjcmlwdEdsb2Jh
bE9iamVjdDo6Z2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwg
U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBTY3JpcHRTY29wZSBzY29wZShzY3JpcHRTdGF0
ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaAppbmRleCBmNzQxZjg5Li4yNTk0MDhlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAgLTM2LDcgKzM2LDkgQEAKICNpbmNsdWRl
IDx2OC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRI
b3N0OwogICAgIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CisgICAgY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0OwogICAgIGNsYXNzIFNjcmlwdFN0YXRlOwogCiAgICAgY2xhc3MgU2NyaXB0T2Jq
ZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKQEAgLTY1LDYgKzY3LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRl
KiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CiAgICAgICAgIHN0YXRp
YyBib29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckJhY2tl
bmQqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3QgY2hhciog
bmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgICAgIHN0YXRpYyBib29sIHNldChT
Y3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluamVjdGVkU2NyaXB0SG9zdCopOwogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBTY3Jp
cHRPYmplY3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgcmVtb3ZlKFNjcmlwdFN0YXRlKiwgY29u
c3QgY2hhciogbmFtZSk7CiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJbmRleC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCmluZGV4
IDdhNDNhYzIuLmYzMTJiMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRl
eC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcApAQCAtNDMzLDcgKzQz
Myw5IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiVjhJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJWOEluc3BlY3RvckJhY2tlbmQuaCIKKyNpbmNs
dWRlICJWOEluc3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKaW5kZXggYjEyMDAzNC4uNmY4NzliOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEluZGV4LmgKQEAgLTQ4Nyw3ICs0ODcsOSBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICNkZWZpbmUgRE9NX09CSkVDVF9JTlNQRUNUT1JfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBWKElOU1BFQ1RPUkJBQ0tF
TkQsIEluc3BlY3RvckJhY2tlbmQpCisgICAgVihJTlNQRUNUT1JCQUNLRU5ELCBJbnNwZWN0b3JC
YWNrZW5kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihJTlNQRUNUT1JG
Uk9OVEVOREhPU1QsIEluc3BlY3RvckZyb250ZW5kSG9zdCkgICAgICAgICAgICAgICAgICAgICBc
CisgICAgVihJTkpFQ1RFRFNDUklQVEhPU1QsIEluamVjdGVkU2NyaXB0SG9zdCkKICNlbHNlCiAj
ZGVmaW5lIERPTV9PQkpFQ1RfSU5TUEVDVE9SX1RZUEVTKFYpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5kZXggN2EyMjBlYi4uZDczY2E4
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKQEAg
LTQ3NiwyOSArNDc2LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhUcmVlV2Fsa2VyTmV4dFNpYmxpbmcpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFRyZWVXYWxrZXJQcmV2aW91c1NpYmxpbmcpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
SW5zcGVjdG9yQmFja2VuZEhpZ2hsaWdodERPTU5vZGUpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKEluc3BlY3RvckJhY2tlbmRBZGRSZXNvdXJjZVNvdXJjZVRvRnJhbWUpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRBZGRTb3VyY2VUb0ZyYW1lKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kU2VhcmNoKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kU2V0dGluZyk7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZERhdGFiYXNlRm9ySWQpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRJbnNwZWN0ZWRXaW5kb3cpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRTZXRTZXR0aW5nKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kQ3VycmVudENhbGxGcmFtZSk7Ci0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZERlYnVnZ2VyRW5hYmxlZCk7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFBhdXNlT25FeGNlcHRpb25zKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kUHJvZmlsZXJFbmFibGVkKTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kTm9kZUZvcklkKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kV3JhcE9iamVjdCk7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFVud3JhcE9iamVjdCk7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdEluc3BlY3Rl
ZFdpbmRvdyk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0Tm9k
ZUZvcklkKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3RXcmFw
T2JqZWN0KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3RVbndy
YXBPYmplY3QpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdFB1
c2hOb2RlUGF0aFRvRnJvbnRlbmQpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVk
U2NyaXB0SG9zdFdyYXBDYWxsYmFjayk7CiAjaWYgRU5BQkxFKERBVEFCQVNFKQotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRTZWxlY3REYXRhYmFzZSk7CisgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0U2VsZWN0RGF0YWJhc2UpOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdERhdGFiYXNlRm9ySWQpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KEluc3BlY3RvckJhY2tlbmRTZWxlY3RET01TdG9yYWdlKTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhJbmplY3RlZFNjcmlwdEhvc3RTZWxlY3RET01TdG9yYWdlKTsKICNlbmRpZgotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRXcmFwQ2FsbGJhY2spOworCisgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yRnJvbnRlbmRIb3N0U2VhcmNoKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JGcm9udGVuZEhvc3RTZXR0aW5nKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JGcm9udGVuZEhvc3RTZXRTZXR0aW5nKTsKIAog
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKENvbnNvbGVQcm9maWxlKTsKICAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhDb25zb2xlUHJvZmlsZUVuZCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjNjczMwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApA
QCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0SG9zdC5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorCisjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQ
cm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NBTExCQUNLX0ZVTkNfREVDTChJbmpl
Y3RlZFNjcmlwdEhvc3RJbnNwZWN0ZWRXaW5kb3cpCit7CisgICAgSU5DX1NUQVRTKCJJbmplY3Rl
ZFNjcmlwdEhvc3QuaW5zcGVjdGVkV2luZG93KCkiKTsKKworICAgIEluamVjdGVkU2NyaXB0SG9z
dCogaG9zdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluamVjdGVkU2Ny
aXB0SG9zdD4oVjhDbGFzc0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIGFyZ3MuSG9sZGVyKCkp
OworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaG9zdC0+aW5zcGVjdG9yQ29udHJvbGxl
cigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
cmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3Q8RE9NV2luZG93PihWOENsYXNz
SW5kZXg6OkRPTVdJTkRPVywgaWMtPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvbVdp
bmRvdygpKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9zdFdyYXBD
YWxsYmFjaykKK3sKKyAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC53cmFwQ2FsbGJh
Y2soKSIpOworICAgIHJldHVybiBhcmdzWzBdOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woSW5q
ZWN0ZWRTY3JpcHRIb3N0Tm9kZUZvcklkKQoreworICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3Jp
cHRIb3N0Lm5vZGVGb3JJZCgpIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SW5qZWN0ZWRTY3JpcHRIb3N0
PihWOENsYXNzSW5kZXg6OklOSkVDVEVEU0NSSVBUSE9TVCwgYXJncy5Ib2xkZXIoKSk7CisgICAg
CisgICAgTm9kZSogbm9kZSA9IGhvc3QtPm5vZGVGb3JJZChhcmdzWzBdLT5Ub0ludDMyKCktPlZh
bHVlKCkpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaG9zdC0+aW5zcGVjdG9yQ29udHJvbGxl
cigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAg
ICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok5P
REUsIG5vZGUpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0V3Jh
cE9iamVjdCkKK3sKKyAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC53cmFwT2JqZWN0
KCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisKKyAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbmplY3RlZFNjcmlwdEhvc3Q+KFY4Q2xhc3NJbmRleDo6
SU5KRUNURURTQ1JJUFRIT1NULCBhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gaG9zdC0+d3Jh
cE9iamVjdChTY3JpcHRWYWx1ZShhcmdzWzBdKSwgdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVj
ayhhcmdzWzFdKSkudjhWYWx1ZSgpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRT
Y3JpcHRIb3N0VW53cmFwT2JqZWN0KQoreworICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRI
b3N0LnVud3JhcE9iamVjdCgpIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SW5qZWN0ZWRTY3JpcHRIb3N0
PihWOENsYXNzSW5kZXg6OklOSkVDVEVEU0NSSVBUSE9TVCwgYXJncy5Ib2xkZXIoKSk7CisgICAg
cmV0dXJuIGhvc3QtPnVud3JhcE9iamVjdCh0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFy
Z3NbMF0pKS52OFZhbHVlKCk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlw
dEhvc3RQdXNoTm9kZVBhdGhUb0Zyb250ZW5kKQoreworICAgIElOQ19TVEFUUygiSW5qZWN0ZWRT
Y3JpcHRIb3N0LnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKSIpOworICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluamVjdGVk
U2NyaXB0SG9zdCogaG9zdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PElu
amVjdGVkU2NyaXB0SG9zdD4oVjhDbGFzc0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIGFyZ3Mu
SG9sZGVyKCkpOworICAgIE5vZGUqIG5vZGUgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFw
cGVyVG9Ob2RlPE5vZGU+KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOwor
ICAgIGJvb2wgc2VsZWN0SW5VSSA9IGFyZ3NbMV0tPlRvQm9vbGVhbigpLT5WYWx1ZSgpOworICAg
IGlmIChub2RlKQorICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGhvc3QtPnB1c2hOb2Rl
UGF0aFRvRnJvbnRlbmQobm9kZSwgc2VsZWN0SW5VSSkpOworCisgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKK30KKworI2lmIEVOQUJMRShEQVRBQkFTRSkKK0NBTExCQUNLX0ZVTkNfREVDTChJ
bmplY3RlZFNjcmlwdEhvc3REYXRhYmFzZUZvcklkKQoreworICAgIElOQ19TVEFUUygiSW5qZWN0
ZWRTY3JpcHRIb3N0LmRhdGFiYXNlRm9ySWQoKSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluamVjdGVkU2NyaXB0
SG9zdCogaG9zdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluamVjdGVk
U2NyaXB0SG9zdD4oVjhDbGFzc0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1QsIGFyZ3MuSG9sZGVy
KCkpOworICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IGhvc3QtPmRhdGFiYXNlRm9ySWQoYXJnc1sw
XS0+VG9JbnQzMigpLT5WYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4
T2JqZWN0PERhdGFiYXNlPihWOENsYXNzSW5kZXg6OkRBVEFCQVNFLCBkYXRhYmFzZSk7Cit9CisK
K0NBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3RTZWxlY3REYXRhYmFzZSkKK3sK
KyAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5zZWxlY3REYXRhYmFzZSgpIik7Cisg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9OYXRpdmVPYmplY3Q8SW5qZWN0ZWRTY3JpcHRIb3N0PihWOENsYXNzSW5kZXg6OklOSkVDVEVE
U0NSSVBUSE9TVCwgYXJncy5Ib2xkZXIoKSk7CisgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGF0YWJhc2U+KFY4Q2xhc3NJbmRleDo6
REFUQUJBU0UsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIGlm
IChkYXRhYmFzZSkKKyAgICAgICAgaG9zdC0+c2VsZWN0RGF0YWJhc2UoZGF0YWJhc2UpOworCisg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKERPTV9T
VE9SQUdFKQorQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9zdFNlbGVjdERPTVN0
b3JhZ2UpCit7CisgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3Quc2VsZWN0RE9NU3Rv
cmFnZSgpIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SW5qZWN0ZWRTY3JpcHRIb3N0PihWOENsYXNzSW5k
ZXg6OklOSkVDVEVEU0NSSVBUSE9TVCwgYXJncy5Ib2xkZXIoKSk7CisgICAgU3RvcmFnZSogc3Rv
cmFnZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFN0b3JhZ2U+KFY4Q2xh
c3NJbmRleDo6U1RPUkFHRSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7
CisgICAgaWYgKHN0b3JhZ2UpCisgICAgICAgIGhvc3QtPnNlbGVjdERPTVN0b3JhZ2Uoc3RvcmFn
ZSk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEluc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlYzliMDM0Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5z
cGVjdG9yQmFja2VuZEN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmQuaCIKLQot
I2luY2x1ZGUgIkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAi
RnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIk5v
ZGUuaCIKLSNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKLQotI2luY2x1ZGUg
IlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgotI2luY2x1ZGUgIlY4
UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5z
cGVjdG9yQmFja2VuZEhpZ2hsaWdodERPTU5vZGUpCi17Ci0gICAgSU5DX1NUQVRTKCJJbnNwZWN0
b3JCYWNrZW5kLmhpZ2hsaWdodERPTU5vZGUoKSIpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQmFj
a2VuZCogaW5zcGVjdG9yQmFja2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2Jq
ZWN0PEluc3BlY3RvckJhY2tlbmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFDS0VORCwgYXJn
cy5Ib2xkZXIoKSk7Ci0gICAgaW5zcGVjdG9yQmFja2VuZC0+aGlnaGxpZ2h0KGFyZ3NbMF0tPlRv
SW50MzIoKS0+VmFsdWUoKSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQotQ0FM
TEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmRTZWFyY2gpCi17Ci0gICAgSU5DX1NUQVRT
KCJJbnNwZWN0b3JCYWNrZW5kLnNlYXJjaCgpIik7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDIpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBOb2RlKiBub2RlID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxOb2RlPih2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBTdHJpbmcgdGFyZ2V0ID0gdG9XZWJDb3JlU3RyaW5n
V2l0aE51bGxDaGVjayhhcmdzWzFdKTsKLSAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHJl
c3VsdCA9IHY4OjpBcnJheTo6TmV3KCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZShy
YW5nZU9mQ29udGVudHMobm9kZSkpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
aW50IGluZGV4ID0gMDsKLSAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFu
Z2UoZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgdGFyZ2V0LCB0cnVlLCBmYWxzZSkp
OwotICAgICAgICBpZiAocmVzdWx0UmFuZ2UtPmNvbGxhcHNlZChlYykpCi0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAvLyBBIG5vbi1jb2xsYXBzZWQgcmVzdWx0IHJhbmdlIGNhbiBpbiBz
b21lIGZ1bmt5IHdoaXRlc3BhY2UgY2FzZXMgc3RpbGwgbm90Ci0gICAgICAgIC8vIGFkdmFuY2Ug
dGhlIHJhbmdlJ3Mgc3RhcnQgcG9zaXRpb24gKDQ1MDkzMjgpLiBCcmVhayB0byBhdm9pZCBpbmZp
bml0ZSBsb29wLgotICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV3U3RhcnQgPSBlbmRWaXNpYmxl
UG9zaXRpb24ocmVzdWx0UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOwotICAgICAgICBpZiAobmV3
U3RhcnQgPT0gc3RhcnRWaXNpYmxlUG9zaXRpb24oc2VhcmNoUmFuZ2UuZ2V0KCksIERPV05TVFJF
QU0pKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgcmVzdWx0LT5TZXQodjg6Ok51bWJl
cjo6TmV3KGluZGV4KyspLCBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJ
bmRleDo6UkFOR0UsIHJlc3VsdFJhbmdlLnJlbGVhc2UoKSkpOwotCi0gICAgICAgIHNldFN0YXJ0
KHNlYXJjaFJhbmdlLmdldCgpLCBuZXdTdGFydCk7Ci0gICAgfSB3aGlsZSAodHJ1ZSk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgRU5BQkxFKERBVEFCQVNFKQotQ0FMTEJBQ0tfRlVO
Q19ERUNMKEluc3BlY3RvckJhY2tlbmREYXRhYmFzZUZvcklkKQotewotICAgIElOQ19TVEFUUygi
SW5zcGVjdG9yQmFja2VuZC5kYXRhYmFzZUZvcklkKCkiKTsKLSAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0b3JC
YWNrZW5kKiBpbnNwZWN0b3JCYWNrZW5kID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVP
YmplY3Q8SW5zcGVjdG9yQmFja2VuZD4oVjhDbGFzc0luZGV4OjpJTlNQRUNUT1JCQUNLRU5ELCBh
cmdzLkhvbGRlcigpKTsKLSAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBpbnNwZWN0b3JCYWNrZW5k
LT5kYXRhYmFzZUZvcklkKGFyZ3NbMF0tPlRvSW50MzIoKS0+VmFsdWUoKSk7Ci0gICAgaWYgKCFk
YXRhYmFzZSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdDxEYXRhYmFzZT4oVjhDbGFzc0luZGV4OjpEQVRB
QkFTRSwgZGF0YWJhc2UpOwotfQotI2VuZGlmCi0KLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0
b3JCYWNrZW5kSW5zcGVjdGVkV2luZG93KQotewotICAgIElOQ19TVEFUUygiSW5zcGVjdG9yQmFj
a2VuZC5pbnNwZWN0ZWRXaW5kb3coKSIpOwotCi0gICAgSW5zcGVjdG9yQmFja2VuZCogaW5zcGVj
dG9yQmFja2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluc3BlY3Rv
ckJhY2tlbmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFDS0VORCwgYXJncy5Ib2xkZXIoKSk7
Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JCYWNrZW5kLT5pbnNwZWN0
b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpYykKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKLSAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdDxET01XaW5k
b3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpYy0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJh
bWUoKS0+ZG9tV2luZG93KCkpOwotfQotCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVjdG9yQmFj
a2VuZFNldHRpbmcpCi17Ci0gICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JCYWNrZW5kLnNldHRpbmco
KSIpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwotCi0gICAgU3RyaW5nIGtleSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hl
Y2soYXJnc1swXSk7Ci0gICAgaWYgKGtleS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0b3JCYWNrZW5kKiBpbnNwZWN0b3JCYWNrZW5kID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SW5zcGVjdG9yQmFja2VuZD4oVjhD
bGFzc0luZGV4OjpJTlNQRUNUT1JCQUNLRU5ELCBhcmdzLkhvbGRlcigpKTsKLSAgICBJbnNwZWN0
b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckJhY2tlbmQtPmluc3BlY3RvckNvbnRyb2xsZXIo
KTsKLSAgICBpZiAoIWljKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIGNv
bnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcgPSBpYy0+c2V0dGluZyhr
ZXkpOwotCi0gICAgc3dpdGNoIChzZXR0aW5nLnR5cGUoKSkgewotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6Ok5vVHlwZToKLSAgICAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6U2V0dGluZzo6U3RyaW5nVHlwZToKLSAgICAgICAgICAgIHJldHVybiB2OFN0cmlu
ZyhzZXR0aW5nLnN0cmluZygpKTsKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpT
ZXR0aW5nOjpEb3VibGVUeXBlOgotICAgICAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhz
ZXR0aW5nLmRvdWJsZVZhbHVlKCkpOwotICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6
OlNldHRpbmc6OkludGVnZXJUeXBlOgotICAgICAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5l
dyhzZXR0aW5nLmludGVnZXJWYWx1ZSgpKTsKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9s
bGVyOjpTZXR0aW5nOjpCb29sZWFuVHlwZToKLSAgICAgICAgICAgIHJldHVybiB2OEJvb2xlYW4o
c2V0dGluZy5ib29sZWFuVmFsdWUoKSk7Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6U3RyaW5nVmVjdG9yVHlwZTogewotICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHN0cmluZ3MgPSBzZXR0aW5nLnN0cmluZ1ZlY3RvcigpOwotICAgICAgICAgICAg
djg6OkxvY2FsPHY4OjpBcnJheT4gc3RyaW5nc0FycmF5ID0gdjg6OkFycmF5OjpOZXcoc3RyaW5n
cy5zaXplKCkpOwotICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5ncy5z
aXplKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICAgICAgc3RyaW5nc0FycmF5LT5TZXQodjg6Ok51bWJlcjo6TmV3KGkpLCB2
OFN0cmluZyhzdHJpbmdzW2ldKSk7Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nc0FycmF5Owot
ICAgICAgICB9Ci0gICAgfQotfQotCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVjdG9yQmFja2Vu
ZFNldFNldHRpbmcpCi17Ci0gICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JCYWNrZW5kLnNldFNldHRp
bmcoKSIpOwotICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKLQotICAgIFN0cmluZyBrZXkgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENo
ZWNrKGFyZ3NbMF0pOwotICAgIGlmIChrZXkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyBzZXR0aW5n
OwotCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUgPSBhcmdzWzFdOwotICAgIGlmICh2
YWx1ZS0+SXNVbmRlZmluZWQoKSB8fCB2YWx1ZS0+SXNOdWxsKCkpIHsKLSAgICAgICAgLy8gRG8g
bm90aGluZy4gVGhlIHNldHRpbmcgaXMgYWxyZWFkeSBOb1R5cGUuCi0gICAgICAgIEFTU0VSVChz
ZXR0aW5nLnR5cGUoKSA9PSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpOb1R5cGUpOwot
ICAgIH0gZWxzZSBpZiAodmFsdWUtPklzU3RyaW5nKCkpCi0gICAgICAgIHNldHRpbmcuc2V0KHRv
V2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sodmFsdWUpKTsKLSAgICBlbHNlIGlmICh2YWx1ZS0+
SXNOdW1iZXIoKSkKLSAgICAgICAgc2V0dGluZy5zZXQodmFsdWUtPk51bWJlclZhbHVlKCkpOwot
ICAgIGVsc2UgaWYgKHZhbHVlLT5Jc0Jvb2xlYW4oKSkKLSAgICAgICAgc2V0dGluZy5zZXQodmFs
dWUtPkJvb2xlYW5WYWx1ZSgpKTsKLSAgICBlbHNlIGlmICh2YWx1ZS0+SXNBcnJheSgpKSB7Ci0g
ICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHY4QXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5
Pjo6Q2FzdCh2YWx1ZSk7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ3M7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2OEFycmF5LT5MZW5ndGgoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBTdHJpbmcgaXRlbSA9IHRvV2ViQ29yZVN0cmluZyh2OEFycmF5LT5HZXQodjg6Oklu
dGVnZXI6Ok5ldyhpKSkpOwotICAgICAgICAgICAgaWYgKGl0ZW0uaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBzdHJpbmdzLmFw
cGVuZChpdGVtKTsKLSAgICAgICAgfQotICAgICAgICBzZXR0aW5nLnNldChzdHJpbmdzKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIEluc3BlY3Rv
ckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2
ZU9iamVjdDxJbnNwZWN0b3JCYWNrZW5kPihWOENsYXNzSW5kZXg6OklOU1BFQ1RPUkJBQ0tFTkQs
IGFyZ3MuSG9sZGVyKCkpOwotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9y
QmFja2VuZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGlmIChpYykKLSAgICAgICAgaW5z
cGVjdG9yQmFja2VuZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRTZXR0aW5nKGtleSwgc2V0
dGluZyk7Ci0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi1DQUxMQkFDS19GVU5D
X0RFQ0woSW5zcGVjdG9yQmFja2VuZFdyYXBDYWxsYmFjaykKLXsKLSAgICBJTkNfU1RBVFMoIklu
c3BlY3RvckJhY2tlbmQud3JhcENhbGxiYWNrKCkiKTsKLSAgICByZXR1cm4gYXJnc1swXTsKLX0K
LQotQ0FMTEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmROb2RlRm9ySWQpCi17Ci0gICAg
SU5DX1NUQVRTKCJJbnNwZWN0b3JCYWNrZW5kLm5vZGVGb3JJZCgpIik7Ci0gICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgSW5z
cGVjdG9yQmFja2VuZCogaW5zcGVjdG9yQmFja2VuZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
TmF0aXZlT2JqZWN0PEluc3BlY3RvckJhY2tlbmQ+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SQkFD
S0VORCwgYXJncy5Ib2xkZXIoKSk7Ci0gICAgCi0gICAgTm9kZSogbm9kZSA9IGluc3BlY3RvckJh
Y2tlbmQtPm5vZGVGb3JJZChhcmdzWzBdLT5Ub0ludDMyKCktPlZhbHVlKCkpOwotICAgIGlmICgh
bm9kZSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIEluc3BlY3RvckNv
bnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQmFja2VuZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwot
ICAgIGlmICghaWMpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICByZXR1
cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok5PREUsIG5v
ZGUpOwotfQotCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVjdG9yQmFja2VuZFdyYXBPYmplY3Qp
Ci17Ci0gICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JCYWNrZW5kLndyYXBPYmplY3QoKSIpOwotICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
LQotICAgIEluc3BlY3RvckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbnNwZWN0b3JCYWNrZW5kPihWOENsYXNzSW5kZXg6OklO
U1BFQ1RPUkJBQ0tFTkQsIGFyZ3MuSG9sZGVyKCkpOwotICAgIHJldHVybiBpbnNwZWN0b3JCYWNr
ZW5kLT53cmFwT2JqZWN0KFNjcmlwdFZhbHVlKGFyZ3NbMF0pLCB0b1dlYkNvcmVTdHJpbmdXaXRo
TnVsbENoZWNrKGFyZ3NbMV0pKS52OFZhbHVlKCk7Ci19Ci0KLUNBTExCQUNLX0ZVTkNfREVDTChJ
bnNwZWN0b3JCYWNrZW5kVW53cmFwT2JqZWN0KQotewotICAgIElOQ19TVEFUUygiSW5zcGVjdG9y
QmFja2VuZC51bndyYXBPYmplY3QoKSIpOwotICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIEluc3BlY3RvckJhY2tlbmQqIGlu
c3BlY3RvckJhY2tlbmQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbnNw
ZWN0b3JCYWNrZW5kPihWOENsYXNzSW5kZXg6OklOU1BFQ1RPUkJBQ0tFTkQsIGFyZ3MuSG9sZGVy
KCkpOwotICAgIHJldHVybiBpbnNwZWN0b3JCYWNrZW5kLT51bndyYXBPYmplY3QodG9XZWJDb3Jl
U3RyaW5nV2l0aE51bGxDaGVjayhhcmdzWzBdKSkudjhWYWx1ZSgpOwotfQotCi1DQUxMQkFDS19G
VU5DX0RFQ0woSW5zcGVjdG9yQmFja2VuZFB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpCi17Ci0gICAg
SU5DX1NUQVRTKCJJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKSIpOwot
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKLQotICAgIEluc3BlY3RvckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJbnNwZWN0b3JCYWNrZW5kPihWOENsYXNzSW5kZXg6
OklOU1BFQ1RPUkJBQ0tFTkQsIGFyZ3MuSG9sZGVyKCkpOwotICAgIE5vZGUqIG5vZGUgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPE5vZGU+KHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnc1swXSkpOwotICAgIGJvb2wgc2VsZWN0SW5VSSA9IGFyZ3NbMV0tPlRv
Qm9vbGVhbigpLT5WYWx1ZSgpOwotICAgIGlmIChub2RlKQotICAgICAgICByZXR1cm4gdjg6Ok51
bWJlcjo6TmV3KGluc3BlY3RvckJhY2tlbmQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSwg
c2VsZWN0SW5VSSkpOwotCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQotI2lmIEVO
QUJMRShEQVRBQkFTRSkKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JCYWNrZW5kU2VsZWN0
RGF0YWJhc2UpCi17Ci0gICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JCYWNrZW5kLnNlbGVjdERhdGFi
YXNlKCkiKTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0b3JCYWNrZW5kKiBpbnNwZWN0b3JCYWNrZW5kID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SW5zcGVjdG9yQmFja2VuZD4oVjhD
bGFzc0luZGV4OjpJTlNQRUNUT1JCQUNLRU5ELCBhcmdzLkhvbGRlcigpKTsKLSAgICBEYXRhYmFz
ZSogZGF0YWJhc2UgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxEYXRhYmFz
ZT4oVjhDbGFzc0luZGV4OjpEQVRBQkFTRSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSk7Ci0gICAgaWYgKGRhdGFiYXNlKQotICAgICAgICBpbnNwZWN0b3JCYWNrZW5kLT5z
ZWxlY3REYXRhYmFzZShkYXRhYmFzZSk7Ci0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwot
fQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi1DQUxMQkFDS19GVU5DX0RFQ0wo
SW5zcGVjdG9yQmFja2VuZFNlbGVjdERPTVN0b3JhZ2UpCi17Ci0gICAgSU5DX1NUQVRTKCJJbnNw
ZWN0b3JCYWNrZW5kLnNlbGVjdERPTVN0b3JhZ2UoKSIpOwotICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIEluc3BlY3RvckJh
Y2tlbmQqIGluc3BlY3RvckJhY2tlbmQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxJbnNwZWN0b3JCYWNrZW5kPihWOENsYXNzSW5kZXg6OklOU1BFQ1RPUkJBQ0tFTkQsIGFy
Z3MuSG9sZGVyKCkpOwotICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxTdG9yYWdlPihWOENsYXNzSW5kZXg6OlNUT1JBR0UsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOwotICAgIGlmIChzdG9yYWdlKQotICAgICAg
ICBpbnNwZWN0b3JCYWNrZW5kLT5zZWxlY3RET01TdG9yYWdlKHN0b3JhZ2UpOwotCi0gICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3Rv
ckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMDhjYjg4OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDE3MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kSG9zdC5oIgor
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVmlzaWJsZVBvc2l0
aW9uLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRp
bmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0FM
TEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckZyb250ZW5kSG9zdFNlYXJjaCkKK3sKKyAgICBJTkNf
U1RBVFMoIkluc3BlY3RvckZyb250ZW5kSG9zdC5zZWFyY2goKSIpOworCisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgTm9k
ZSogbm9kZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8Tm9kZT4odjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CisgICAgaWYgKCFub2RlKQorICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgU3RyaW5nIHRhcmdldCA9IHRvV2Vi
Q29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1sxXSk7CisgICAgaWYgKHRhcmdldC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICB2ODo6TG9jYWw8djg6
OkFycmF5PiByZXN1bHQgPSB2ODo6QXJyYXk6Ok5ldygpOworICAgIFJlZlB0cjxSYW5nZT4gc2Vh
cmNoUmFuZ2UocmFuZ2VPZkNvbnRlbnRzKG5vZGUpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGludCBpbmRleCA9IDA7CisgICAgZG8geworICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJlc3VsdFJhbmdlKGZpbmRQbGFpblRleHQoc2VhcmNoUmFuZ2UuZ2V0KCksIHRhcmdldCwgdHJ1
ZSwgZmFsc2UpKTsKKyAgICAgICAgaWYgKHJlc3VsdFJhbmdlLT5jb2xsYXBzZWQoZWMpKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gQSBub24tY29sbGFwc2VkIHJlc3VsdCByYW5n
ZSBjYW4gaW4gc29tZSBmdW5reSB3aGl0ZXNwYWNlIGNhc2VzIHN0aWxsIG5vdAorICAgICAgICAv
LyBhZHZhbmNlIHRoZSByYW5nZSdzIHN0YXJ0IHBvc2l0aW9uICg0NTA5MzI4KS4gQnJlYWsgdG8g
YXZvaWQgaW5maW5pdGUgbG9vcC4KKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5ld1N0YXJ0ID0g
ZW5kVmlzaWJsZVBvc2l0aW9uKHJlc3VsdFJhbmdlLmdldCgpLCBET1dOU1RSRUFNKTsKKyAgICAg
ICAgaWYgKG5ld1N0YXJ0ID09IHN0YXJ0VmlzaWJsZVBvc2l0aW9uKHNlYXJjaFJhbmdlLmdldCgp
LCBET1dOU1RSRUFNKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJlc3VsdC0+U2V0
KHY4OjpOdW1iZXI6Ok5ldyhpbmRleCsrKSwgVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVj
dChWOENsYXNzSW5kZXg6OlJBTkdFLCByZXN1bHRSYW5nZS5yZWxlYXNlKCkpKTsKKworICAgICAg
ICBzZXRTdGFydChzZWFyY2hSYW5nZS5nZXQoKSwgbmV3U3RhcnQpOworICAgIH0gd2hpbGUgKHRy
dWUpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEluc3Bl
Y3RvckZyb250ZW5kSG9zdFNldHRpbmcpCit7CisgICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JGcm9u
dGVuZEhvc3Quc2V0dGluZygpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBTdHJpbmcga2V5ID0gdG9XZWJDb3Jl
U3RyaW5nV2l0aE51bGxDaGVjayhhcmdzWzBdKTsKKyAgICBpZiAoa2V5LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluc3BlY3RvckZyb250ZW5kSG9z
dCogaW5zcGVjdG9ySG9zdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PElu
c3BlY3RvckZyb250ZW5kSG9zdD4oVjhDbGFzc0luZGV4OjpJTlNQRUNUT1JGUk9OVEVOREhPU1Qs
IGFyZ3MuSG9sZGVyKCkpOworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9y
SG9zdC0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGlu
ZyYgc2V0dGluZyA9IGljLT5zZXR0aW5nKGtleSk7CisKKyAgICBzd2l0Y2ggKHNldHRpbmcudHlw
ZSgpKSB7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6Tm9UeXBlOgorICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpTdHJpbmdUeXBlOgor
ICAgICAgICAgICAgcmV0dXJuIHY4U3RyaW5nKHNldHRpbmcuc3RyaW5nKCkpOworICAgICAgICBj
YXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkRvdWJsZVR5cGU6CisgICAgICAgICAg
ICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHNldHRpbmcuZG91YmxlVmFsdWUoKSk7CisgICAgICAg
IGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6SW50ZWdlclR5cGU6CisgICAgICAg
ICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHNldHRpbmcuaW50ZWdlclZhbHVlKCkpOworICAg
ICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkJvb2xlYW5UeXBlOgorICAg
ICAgICAgICAgcmV0dXJuIHY4Qm9vbGVhbihzZXR0aW5nLmJvb2xlYW5WYWx1ZSgpKTsKKyAgICAg
ICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpTdHJpbmdWZWN0b3JUeXBlOiB7
CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncyA9IHNldHRpbmcuc3Ry
aW5nVmVjdG9yKCk7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBzdHJpbmdzQXJy
YXkgPSB2ODo6QXJyYXk6Ok5ldyhzdHJpbmdzLnNpemUoKSk7CisgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBzdHJpbmdzQXJyYXkt
PlNldCh2ODo6TnVtYmVyOjpOZXcoaSksIHY4U3RyaW5nKHN0cmluZ3NbaV0pKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdHJpbmdzQXJyYXk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NBTExCQUNL
X0ZVTkNfREVDTChJbnNwZWN0b3JGcm9udGVuZEhvc3RTZXRTZXR0aW5nKQoreworICAgIElOQ19T
VEFUUygiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldFNldHRpbmcoKSIpOworICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIFN0
cmluZyBrZXkgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZ3NbMF0pOworICAgIGlm
IChrZXkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAg
SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyBzZXR0aW5nOworCisgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUgPSBhcmdzWzFdOworICAgIGlmICh2YWx1ZS0+SXNVbmRlZmluZWQoKSB8
fCB2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgLy8gRG8gbm90aGluZy4gVGhlIHNldHRpbmcg
aXMgYWxyZWFkeSBOb1R5cGUuCisgICAgICAgIEFTU0VSVChzZXR0aW5nLnR5cGUoKSA9PSBJbnNw
ZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpOb1R5cGUpOworICAgIH0gZWxzZSBpZiAodmFsdWUt
PklzU3RyaW5nKCkpCisgICAgICAgIHNldHRpbmcuc2V0KHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxs
Q2hlY2sodmFsdWUpKTsKKyAgICBlbHNlIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkKKyAgICAgICAg
c2V0dGluZy5zZXQodmFsdWUtPk51bWJlclZhbHVlKCkpOworICAgIGVsc2UgaWYgKHZhbHVlLT5J
c0Jvb2xlYW4oKSkKKyAgICAgICAgc2V0dGluZy5zZXQodmFsdWUtPkJvb2xlYW5WYWx1ZSgpKTsK
KyAgICBlbHNlIGlmICh2YWx1ZS0+SXNBcnJheSgpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6
QXJyYXk+IHY4QXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ3M7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB2OEFycmF5LT5MZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaXRlbSA9
IHRvV2ViQ29yZVN0cmluZyh2OEFycmF5LT5HZXQodjg6OkludGVnZXI6Ok5ldyhpKSkpOworICAg
ICAgICAgICAgaWYgKGl0ZW0uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CisgICAgICAgICAgICBzdHJpbmdzLmFwcGVuZChpdGVtKTsKKyAgICAgICAg
fQorICAgICAgICBzZXR0aW5nLnNldChzdHJpbmdzKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluc3BlY3RvckZyb250ZW5kSG9zdCogaW5zcGVj
dG9ySG9zdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEluc3BlY3RvckZy
b250ZW5kSG9zdD4oVjhDbGFzc0luZGV4OjpJTlNQRUNUT1JGUk9OVEVOREhPU1QsIGFyZ3MuSG9s
ZGVyKCkpOworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9ySG9zdC0+aW5z
cGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmIChpYykKKyAgICAgICAgaW5zcGVjdG9ySG9zdC0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRTZXR0aW5nKGtleSwgc2V0dGluZyk7CisKKyAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40MmQ0YjQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIKKyNp
bmNsdWRlICJQYXN0ZWJvYXJkLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKKyNpbmNsdWRl
ICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQorI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0
RGVidWdTZXJ2ZXIuaCIKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisjZW5kaWYKKworI2lmIEVOQUJM
RShEQVRBQkFTRSkKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUo
RE9NX1NUT1JBR0UpCisjaW5jbHVkZSAiU3RvcmFnZS5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJt
YXJrdXAuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3RlZFNjcmlwdEhvc3QoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICA6IG1faW5zcGVjdG9yQ29udHJvbGxlcihp
bnNwZWN0b3JDb250cm9sbGVyKQoreworfQorCitJbmplY3RlZFNjcmlwdEhvc3Q6On5JbmplY3Rl
ZFNjcmlwdEhvc3QoKQoreworfQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJk
KCktPndyaXRlUGxhaW5UZXh0KHRleHQpOworfQorCitOb2RlKiBJbmplY3RlZFNjcmlwdEhvc3Q6
Om5vZGVGb3JJZChsb25nIG5vZGVJZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50ID0gaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIGRvbUFnZW50LT5u
b2RlRm9ySWQobm9kZUlkKTsKKyAgICByZXR1cm4gMDsKK30KKworU2NyaXB0VmFsdWUgSW5qZWN0
ZWRTY3JpcHRIb3N0Ojp3cmFwT2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiBvYmplY3QsIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXApCit7CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikK
KyAgICAgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+d3JhcE9iamVjdChvYmplY3Qs
IG9iamVjdEdyb3VwKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKK30KKworU2NyaXB0VmFs
dWUgSW5qZWN0ZWRTY3JpcHRIb3N0Ojp1bndyYXBPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gbV9p
bnNwZWN0b3JDb250cm9sbGVyLT51bndyYXBPYmplY3Qob2JqZWN0SWQpOworICAgIHJldHVybiBT
Y3JpcHRWYWx1ZSgpOworfQorCitsb25nIEluamVjdGVkU2NyaXB0SG9zdDo6cHVzaE5vZGVQYXRo
VG9Gcm9udGVuZChOb2RlKiBub2RlLCBib29sIHNlbGVjdEluVUkpCit7CisgICAgSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kID0gaW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICBJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9tQWdl
bnQgfHwgIWZyb250ZW5kKQorICAgICAgICByZXR1cm4gMDsKKyAgICBsb25nIGlkID0gZG9tQWdl
bnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSk7CisgICAgaWYgKHNlbGVjdEluVUkpCisg
ICAgICAgIGZyb250ZW5kLT51cGRhdGVGb2N1c2VkTm9kZShpZCk7CisgICAgcmV0dXJuIGlkOwor
fQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6YWRkTm9kZXNUb1NlYXJjaFJlc3VsdChjb25z
dCBTdHJpbmcmIG5vZGVJZHMpCit7CisgICAgaWYgKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCA9IGluc3BlY3RvckZyb250ZW5kKCkpCisgICAgICAgIGZyb250ZW5kLT5hZGROb2Rlc1RvU2Vh
cmNoUmVzdWx0KG5vZGVJZHMpOworfQorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CitKYXZhU2NyaXB0Q2FsbEZyYW1lKiBJbmplY3RlZFNjcmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJh
bWUoKSBjb25zdAoreworICAgIHJldHVybiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
LmN1cnJlbnRDYWxsRnJhbWUoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQor
RGF0YWJhc2UqIEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VGb3JJZChsb25nIGRhdGFiYXNl
SWQpCit7CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIG1f
aW5zcGVjdG9yQ29udHJvbGxlci0+ZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OnNlbGVjdERhdGFiYXNlKERhdGFi
YXNlKiBkYXRhYmFzZSkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAg
ICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNlbGVjdERhdGFiYXNlKGRhdGFiYXNlKTsKK30KKyNl
bmRpZgorCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
OnNlbGVjdERPTVN0b3JhZ2UoU3RvcmFnZSogc3RvcmFnZSkKK3sKKyAgICBpZiAobV9pbnNwZWN0
b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNlbGVjdERPTVN0
b3JhZ2Uoc3RvcmFnZSk7Cit9CisjZW5kaWYKKwordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OnJl
cG9ydERpZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiByZXN1bHQsIGJvb2wgaXNFeGNlcHRpb24pCit7CisgICAgaWYgKEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCA9IGluc3BlY3RvckZyb250ZW5kKCkpCisgICAgICAgIGZyb250ZW5kLT5kaWRE
aXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoY2FsbElkLCByZXN1bHQsIGlzRXhjZXB0aW9uKTsKK30K
KworSW5zcGVjdG9yRE9NQWdlbnQqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdG9yRE9NQWdl
bnQoKQoreworICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kb21BZ2VudCgpOworfQorCitJ
bnNwZWN0b3JGcm9udGVuZCogSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0b3JGcm9udGVuZCgp
Cit7CisgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZnJvbnRlbmQuZ2V0KCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg3MzA0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0
ZWRTY3JpcHRIb3N0X2gKKyNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRIb3N0X2gKKworI2luY2x1ZGUg
IkNvbnNvbGUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dDsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSmF2YVNjcmlwdENhbGxGcmFtZTsK
K2NsYXNzIE5vZGU7CitjbGFzcyBTdG9yYWdlOworCitjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbmplY3RlZFNjcmlwdEhvc3Q+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBjcmVhdGUoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW5qZWN0ZWRTY3JpcHRIb3N0KGluc3BlY3RvckNvbnRyb2xsZXIpKTsKKyAgICB9
CisKKyAgICB+SW5qZWN0ZWRTY3JpcHRIb3N0KCk7CisKKyAgICBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9
CisgICAgdm9pZCBkaXNjb25uZWN0Q29udHJvbGxlcigpIHsgbV9pbnNwZWN0b3JDb250cm9sbGVy
ID0gMDsgfQorCisgICAgdm9pZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOworICAgIE5v
ZGUqIG5vZGVGb3JJZChsb25nIG5vZGVJZCk7CisgICAgU2NyaXB0VmFsdWUgd3JhcE9iamVjdChj
b25zdCBTY3JpcHRWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKKyAg
ICBTY3JpcHRWYWx1ZSB1bndyYXBPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CisgICAg
bG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGUsIGJvb2wgc2VsZWN0SW5VSSk7
CisgICAgdm9pZCBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmluZyYgbm9kZUlkcyk7
CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgSmF2YVNjcmlwdENhbGxGcmFt
ZSogY3VycmVudENhbGxGcmFtZSgpIGNvbnN0OworI2VuZGlmCisjaWYgRU5BQkxFKERBVEFCQVNF
KQorICAgIERhdGFiYXNlKiBkYXRhYmFzZUZvcklkKGxvbmcgZGF0YWJhc2VJZCk7CisgICAgdm9p
ZCBzZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UpOworI2VuZGlmCisjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQorICAgIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShTdG9yYWdlKiBzdG9yYWdl
KTsKKyNlbmRpZgorICAgIHZvaWQgcmVwb3J0RGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGxv
bmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCwgYm9vbCBpc0V4Y2VwdGlvbik7CisKK3By
aXZhdGU6CisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIpOworICAgIEluc3BlY3RvckRPTUFnZW50KiBpbnNwZWN0b3JET01BZ2Vu
dCgpOworICAgIEluc3BlY3RvckZyb250ZW5kKiBpbnNwZWN0b3JGcm9udGVuZCgpOworCisgICAg
SW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5qZWN0ZWRTY3JpcHRIb3N0
X2gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRs
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDEwOGIzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
CisgICAgXSBJbmplY3RlZFNjcmlwdEhvc3QgeworICAgICAgICBbQ3VzdG9tXSBET01XaW5kb3cg
aW5zcGVjdGVkV2luZG93KCk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCB3cmFwQ2FsbGJh
Y2soaW4gRE9NT2JqZWN0IGNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCBjb3B5VGV4dChpbiBET01T
dHJpbmcgdGV4dCk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBub2RlRm9ySWQoaW4gbG9u
ZyBub2RlSWQpOworICAgICAgICBbQ3VzdG9tXSBsb25nIHdyYXBPYmplY3QoaW4gRE9NT2JqZWN0
IG9iamVjdCwgaW4gRE9NU3RyaW5nIG9iamVjdEdyb3VwKTsKKyAgICAgICAgW0N1c3RvbV0gRE9N
T2JqZWN0IHVud3JhcE9iamVjdChpbiBsb25nIG9iamVjdElkKTsKKyAgICAgICAgW0N1c3RvbV0g
aW50IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoaW4gRE9NT2JqZWN0IG5vZGUsIGluIGJvb2xlYW4g
c2VsZWN0SW5VSSk7CisgICAgICAgIHZvaWQgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdChpbiBET01T
dHJpbmcgbm9kZUlkcyk7CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgorICAgICAgICBbQ3VzdG9tXSBET01PYmpl
Y3QgY3VycmVudENhbGxGcmFtZSgpOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9EQVRB
QkFTRSkgJiYgRU5BQkxFX0RBVEFCQVNFCisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBkYXRh
YmFzZUZvcklkKGluIGxvbmcgZGF0YWJhc2VJZCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgc2Vs
ZWN0RGF0YWJhc2UoaW4gRE9NT2JqZWN0IGRhdGFiYXNlKTsKKyNlbmRpZgorCisjaWYgZGVmaW5l
ZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQorICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHNlbGVjdERPTVN0b3JhZ2UoaW4gRE9NT2JqZWN0IHN0b3JhZ2UpOworI2VuZGlm
CisKKyAgICAgICAgdm9pZCByZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoaW4gbG9u
ZyBjYWxsSWQsIGluIERPTVN0cmluZyByZXN1bHQsIGluIGJvb2xlYW4gaXNFeGNlcHRpb24pOwor
ICAgIH07Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCmluZGV4IGU1MWQ3
ZTcuLjk5OThkOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC02
OCw5ICs2OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSW5zcGVjdG9yQmFja2VuZDo6SW5zcGVjdG9yQmFja2VuZChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKK0luc3BlY3Rv
ckJhY2tlbmQ6Okluc3BlY3RvckJhY2tlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlcikKICAgICA6IG1faW5zcGVjdG9yQ29udHJvbGxlcihpbnNwZWN0b3JDb250cm9s
bGVyKQotICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQogCkBAIC03OCwxMTcgKzc3LDIyIEBA
IEluc3BlY3RvckJhY2tlbmQ6On5JbnNwZWN0b3JCYWNrZW5kKCkKIHsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JCYWNrZW5kOjpoaWRlRE9NTm9kZUhpZ2hsaWdodCgpCi17Ci0gICAgaWYgKG1faW5zcGVj
dG9yQ29udHJvbGxlcikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5oaWRlSGlnaGxp
Z2h0KCk7Ci19Ci0KLVN0cmluZyBJbnNwZWN0b3JCYWNrZW5kOjpsb2NhbGl6ZWRTdHJpbmdzVVJM
KCkKLXsKLSAgICByZXR1cm4gbV9jbGllbnQtPmxvY2FsaXplZFN0cmluZ3NVUkwoKTsKLX0KLQot
U3RyaW5nIEluc3BlY3RvckJhY2tlbmQ6OmhpZGRlblBhbmVscygpCi17Ci0gICAgcmV0dXJuIG1f
Y2xpZW50LT5oaWRkZW5QYW5lbHMoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjp3aW5k
b3dVbmxvYWRpbmcoKQotewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y2xvc2UoKTsKLX0KLQotYm9vbCBJbnNwZWN0b3JCYWNr
ZW5kOjppc1dpbmRvd1Zpc2libGUoKQotewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIp
Ci0gICAgICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPndpbmRvd1Zpc2libGUoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6YWRkUmVzb3Vy
Y2VTb3VyY2VUb0ZyYW1lKGxvbmcgaWRlbnRpZmllciwgTm9kZSogZnJhbWUpCi17Ci0gICAgaWYg
KCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5yZXNvdXJj
ZXMoKS5nZXQoaWRlbnRpZmllcik7Ci0gICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIFN0cmlu
ZyBzb3VyY2VTdHJpbmcgPSByZXNvdXJjZS0+c291cmNlU3RyaW5nKCk7Ci0gICAgICAgIGlmICgh
c291cmNlU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZFNvdXJjZVRvRnJhbWUocmVz
b3VyY2UtPm1pbWVUeXBlKCksIHNvdXJjZVN0cmluZywgZnJhbWUpOwotICAgIH0KLX0KLQotYm9v
bCBJbnNwZWN0b3JCYWNrZW5kOjphZGRTb3VyY2VUb0ZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgc291cmNlLCBOb2RlKiBmcmFtZU5vZGUpCi17Ci0gICAgQVNTRVJU
X0FSRyhmcmFtZU5vZGUsIGZyYW1lTm9kZSk7Ci0KLSAgICBpZiAoIWZyYW1lTm9kZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFmcmFtZU5vZGUtPmF0dGFjaGVkKCkpIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoZnJhbWVOb2RlLT5pc0VsZW1lbnROb2RlKCkpOwotICAgIGlmICghZnJh
bWVOb2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZnJhbWVOb2RlKTsKLSAgICBB
U1NFUlQoZWxlbWVudC0+aXNGcmFtZU93bmVyRWxlbWVudCgpKTsKLSAgICBpZiAoIWVsZW1lbnQt
PmlzRnJhbWVPd25lckVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBmcmFtZU93bmVyID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3du
ZXJFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgQVNTRVJUKGZyYW1lT3duZXItPmNvbnRlbnRGcmFt
ZSgpKTsKLSAgICBpZiAoIWZyYW1lT3duZXItPmNvbnRlbnRGcmFtZSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWVPd25lci0+Y29udGVu
dEZyYW1lKCktPmxvYWRlcigpOwotCi0gICAgbG9hZGVyLT5zZXRSZXNwb25zZU1JTUVUeXBlKG1p
bWVUeXBlKTsKLSAgICBsb2FkZXItPmJlZ2luKCk7Ci0gICAgbG9hZGVyLT53cml0ZShzb3VyY2Up
OwotICAgIGxvYWRlci0+ZW5kKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBJbnNw
ZWN0b3JCYWNrZW5kOjpjbGVhck1lc3NhZ2VzKGJvb2wgY2xlYXJVSSkKIHsKICAgICBpZiAobV9p
bnNwZWN0b3JDb250cm9sbGVyKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNsZWFy
Q29uc29sZU1lc3NhZ2VzKGNsZWFyVUkpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OnRv
Z2dsZU5vZGVTZWFyY2goKQotewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAg
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+dG9nZ2xlU2VhcmNoRm9yTm9kZUluUGFnZSgpOwot
fQotCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmF0dGFjaCgpCi17Ci0gICAgaWYgKG1faW5zcGVj
dG9yQ29udHJvbGxlcikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5hdHRhY2hXaW5k
b3coKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpkZXRhY2goKQotewotICAgIGlmICht
X2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGV0
YWNoV2luZG93KCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzdG9yZUxh
c3RBY3RpdmVQYW5lbChjb25zdCBTdHJpbmcmIHBhbmVsTmFtZSkKIHsKICAgICBpZiAobV9pbnNw
ZWN0b3JDb250cm9sbGVyKQotICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+
c3RvcmVMYXN0QWN0aXZlUGFuZWwocGFuZWxOYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kOjpzdG9yZUxhc3RBY3RpdmVQYW5lbChjb25zdCBTdHJpbmcmIHBhbmVsTmFtZSkKK3ZvaWQg
SW5zcGVjdG9yQmFja2VuZDo6dG9nZ2xlTm9kZVNlYXJjaCgpCiB7CiAgICAgaWYgKG1faW5zcGVj
dG9yQ29udHJvbGxlcikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zdG9yZUxhc3RB
Y3RpdmVQYW5lbChwYW5lbE5hbWUpOworICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnRv
Z2dsZVNlYXJjaEZvck5vZGVJblBhZ2UoKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JCYWNrZW5kOjpz
ZWFyY2hpbmdGb3JOb2RlKCkKQEAgLTE5OCwxMCArMTAyLDExIEBAIGJvb2wgSW5zcGVjdG9yQmFj
a2VuZDo6c2VhcmNoaW5nRm9yTm9kZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIElu
c3BlY3RvckJhY2tlbmQ6OmxvYWRlZCgpCitib29sIEluc3BlY3RvckJhY2tlbmQ6OnJlc291cmNl
VHJhY2tpbmdFbmFibGVkKCkgY29uc3QKIHsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVy
KQotICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNjcmlwdE9iamVjdFJlYWR5KCk7Cisg
ICAgICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPnJlc291cmNlVHJhY2tpbmdFbmFi
bGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmVu
YWJsZVJlc291cmNlVHJhY2tpbmcoYm9vbCBhbHdheXMpCkBAIC0yMTYsNTggKzEyMSw2IEBAIHZv
aWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoYm9vbCBhbHdheXMp
CiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzYWJsZVJlc291cmNlVHJhY2tpbmco
YWx3YXlzKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYWNrZW5kOjpyZXNvdXJjZVRyYWNraW5nRW5h
YmxlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAg
cmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+cmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6bW92ZVdpbmRv
d0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW5zcGVjdG9yQ29udHJv
bGxlcikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tb3ZlV2luZG93QnkoeCwgeSk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Y2xvc2VXaW5kb3coKQotewotICAgIGlmICht
X2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y2xv
c2VXaW5kb3coKTsKLX0KLQotY29uc3QgU3RyaW5nJiBJbnNwZWN0b3JCYWNrZW5kOjpwbGF0Zm9y
bSgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oTUFDKQotI2lmZGVmIEJVSUxESU5HX09OX1RJR0VS
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoIm1hYy10
aWdlciIpKTsKLSNlbHNlCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBs
YXRmb3JtLCAoIm1hYy1sZW9wYXJkIikpOwotI2VuZGlmCi0jZWxpZiBQTEFURk9STShXSU5fT1Mp
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoIndpbmRv
d3MiKSk7Ci0jZWxzZQotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwbGF0
Zm9ybSwgKCJ1bmtub3duIikpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGxhdGZvcm07Ci19Ci0K
LQotY29uc3QgU3RyaW5nJiBJbnNwZWN0b3JCYWNrZW5kOjpwb3J0KCkgY29uc3QKLXsKLSNpZiBQ
TEFURk9STShRVCkKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcG9ydCwg
KCJxdCIpKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgcG9ydCwgKCJndGsiKSk7Ci0jZWxpZiBQTEFURk9STShXWCkKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcG9ydCwgKCJ3eCIpKTsKLSNlbHNlCi0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBvcnQsICgidW5rbm93biIpKTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIHBvcnQ7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c3Rh
cnRUaW1lbGluZVByb2ZpbGVyKCkKIHsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQpA
QCAtMjgxLDEyNyArMTM0LDEyNiBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnN0b3BUaW1lbGlu
ZVByb2ZpbGVyKCkKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kOjpzdGFydFByb2ZpbGluZygpCitib29sIEluc3BlY3RvckJhY2tlbmQ6
OmRlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxl
cikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGVidWdnZXJF
bmFibGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6
OnN0b3BQcm9maWxpbmcoKQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVEZWJ1Z2dlcihi
b29sIGFsd2F5cykKIHsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CisgICAg
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQoYWx3
YXlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVQcm9maWxlcihib29sIGFs
d2F5cykKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlzYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlz
KQogewogICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9y
Q29udHJvbGxlci0+ZW5hYmxlUHJvZmlsZXIoYWx3YXlzKTsKKyAgICAgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5kaXNhYmxlRGVidWdnZXIoYWx3YXlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JC
YWNrZW5kOjpkaXNhYmxlUHJvZmlsZXIoYm9vbCBhbHdheXMpCit2b2lkIEluc3BlY3RvckJhY2tl
bmQ6OmFkZEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24pCiB7Ci0gICAgaWYgKG1faW5zcGVjdG9yQ29u
dHJvbGxlcikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIo
YWx3YXlzKTsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIo
KTsKKyAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmFkZEJyZWFrcG9pbnQoc291
cmNlSURWYWx1ZSwgbGluZU51bWJlciwgY29uZGl0aW9uKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JC
YWNrZW5kOjpwcm9maWxlckVuYWJsZWQoKQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjp1cGRhdGVC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uKQogewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIp
Ci0gICAgICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPnByb2ZpbGVyRW5hYmxlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNl
SUQudG9JbnRQdHIoKTsKKyAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnVwZGF0
ZUJyZWFrcG9pbnQoc291cmNlSURWYWx1ZSwgbGluZU51bWJlciwgY29uZGl0aW9uKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCkKK3Zv
aWQgSW5zcGVjdG9yQmFja2VuZDo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJj
ZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKQogewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xs
ZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Z2V0UHJvZmlsZUhlYWRlcnMoY2Fs
bElkKTsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIoKTsK
KyAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlbW92ZUJyZWFrcG9pbnQoc291
cmNlSURWYWx1ZSwgbGluZU51bWJlcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0
UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKQordm9pZCBJbnNwZWN0b3JCYWNrZW5k
OjpwYXVzZUluRGVidWdnZXIoKQogewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0g
ICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Z2V0UHJvZmlsZShjYWxsSWQsIHVpZCk7Cisg
ICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5wYXVzZVByb2dyYW0oKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVEZWJ1Z2dlcihib29sIGFsd2F5cykKK3ZvaWQg
SW5zcGVjdG9yQmFja2VuZDo6cmVzdW1lRGVidWdnZXIoKQogewogICAgIGlmIChtX2luc3BlY3Rv
ckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlRGVidWdn
ZXJGcm9tRnJvbnRlbmQoYWx3YXlzKTsKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5y
ZXN1bWVEZWJ1Z2dlcigpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRpc2FibGVEZWJ1
Z2dlcihib29sIGFsd2F5cykKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c3RlcE92ZXJTdGF0ZW1l
bnRJbkRlYnVnZ2VyKCkKIHsKLSAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAg
ICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpc2FibGVEZWJ1Z2dlcihhbHdheXMpOworICAgIEph
dmFTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc3RlcE92ZXJTdGF0ZW1lbnQoKTsKIH0KIAot
Ym9vbCBJbnNwZWN0b3JCYWNrZW5kOjpkZWJ1Z2dlckVuYWJsZWQoKSBjb25zdAordm9pZCBJbnNw
ZWN0b3JCYWNrZW5kOjpzdGVwSW50b1N0YXRlbWVudEluRGVidWdnZXIoKQogewotICAgIGlmICht
X2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xs
ZXItPmRlYnVnZ2VyRW5hYmxlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBKYXZhU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnN0ZXBJbnRvU3RhdGVtZW50KCk7CiB9CiAKLUphdmFTY3Jp
cHRDYWxsRnJhbWUqIEluc3BlY3RvckJhY2tlbmQ6OmN1cnJlbnRDYWxsRnJhbWUoKSBjb25zdAor
dm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzdGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIoKQogewot
ICAgIHJldHVybiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmN1cnJlbnRDYWxsRnJh
bWUoKTsKKyAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnN0ZXBPdXRPZkZ1bmN0
aW9uKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6YWRkQnJlYWtwb2ludChjb25zdCBT
dHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRp
dGlvbikKK2Jvb2wgSW5zcGVjdG9yQmFja2VuZDo6cGF1c2VPbkV4Y2VwdGlvbnMoKQogewotICAg
IGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSBzb3VyY2VJRC50b0ludFB0cigpOwotICAgIEphdmFT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYWRkQnJlYWtwb2ludChzb3VyY2VJRFZhbHVlLCBs
aW5lTnVtYmVyLCBjb25kaXRpb24pOworICAgIHJldHVybiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCgpLnBhdXNlT25FeGNlcHRpb25zKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2Vu
ZDo6dXBkYXRlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbikKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6
c2V0UGF1c2VPbkV4Y2VwdGlvbnMoYm9vbCBwYXVzZSkKIHsKLSAgICBpbnRwdHJfdCBzb3VyY2VJ
RFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIoKTsKLSAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCgpLnVwZGF0ZUJyZWFrcG9pbnQoc291cmNlSURWYWx1ZSwgbGluZU51bWJlciwgY29u
ZGl0aW9uKTsKKyAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25F
eGNlcHRpb25zKHBhdXNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCitib29s
IEluc3BlY3RvckJhY2tlbmQ6OnByb2ZpbGVyRW5hYmxlZCgpCiB7Ci0gICAgaW50cHRyX3Qgc291
cmNlSURWYWx1ZSA9IHNvdXJjZUlELnRvSW50UHRyKCk7Ci0gICAgSmF2YVNjcmlwdERlYnVnU2Vy
dmVyOjpzaGFyZWQoKS5yZW1vdmVCcmVha3BvaW50KHNvdXJjZUlEVmFsdWUsIGxpbmVOdW1iZXIp
OworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnByb2ZpbGVyRW5hYmxlZCgpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBJbnNwZWN0b3JCYWNrZW5kOjpwYXVzZU9uRXhjZXB0aW9ucygpCit2b2lkIEluc3Bl
Y3RvckJhY2tlbmQ6OmVuYWJsZVByb2ZpbGVyKGJvb2wgYWx3YXlzKQogewotICAgIHJldHVybiBK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnBhdXNlT25FeGNlcHRpb25zKCk7CisgICAg
aWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5lbmFibGVQcm9maWxlcihhbHdheXMpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OnNl
dFBhdXNlT25FeGNlcHRpb25zKGJvb2wgcGF1c2UpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRp
c2FibGVQcm9maWxlcihib29sIGFsd2F5cykKIHsKLSAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCgpLnNldFBhdXNlT25FeGNlcHRpb25zKHBhdXNlKTsKKyAgICBpZiAobV9pbnNwZWN0
b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpc2FibGVQcm9m
aWxlcihhbHdheXMpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OnBhdXNlSW5EZWJ1Z2dl
cigpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnN0YXJ0UHJvZmlsaW5nKCkKIHsKLSAgICBKYXZh
U2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnBhdXNlUHJvZ3JhbSgpOworICAgIGlmIChtX2lu
c3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c3RhcnRV
c2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6cmVz
dW1lRGVidWdnZXIoKQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzdG9wUHJvZmlsaW5nKCkKIHsK
ICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBtX2luc3BlY3RvckNvbnRy
b2xsZXItPnJlc3VtZURlYnVnZ2VyKCk7CisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+
c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5k
OjpzdGVwT3ZlclN0YXRlbWVudEluRGVidWdnZXIoKQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpn
ZXRQcm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCkKIHsKLSAgICBKYXZhU2NyaXB0RGVidWdTZXJ2
ZXI6OnNoYXJlZCgpLnN0ZXBPdmVyU3RhdGVtZW50KCk7CisgICAgaWYgKG1faW5zcGVjdG9yQ29u
dHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRQcm9maWxlSGVhZGVy
cyhjYWxsSWQpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OnN0ZXBJbnRvU3RhdGVtZW50
SW5EZWJ1Z2dlcigpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmdldFByb2ZpbGUobG9uZyBjYWxs
SWQsIHVuc2lnbmVkIHVpZCkKIHsKLSAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
LnN0ZXBJbnRvU3RhdGVtZW50KCk7CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAg
ICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRQcm9maWxlKGNhbGxJZCwgdWlkKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzdGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIoKQor
SmF2YVNjcmlwdENhbGxGcmFtZSogSW5zcGVjdG9yQmFja2VuZDo6Y3VycmVudENhbGxGcmFtZSgp
IGNvbnN0CiB7Ci0gICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5zdGVwT3V0T2ZG
dW5jdGlvbigpOworICAgIHJldHVybiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmN1
cnJlbnRDYWxsRnJhbWUoKTsKIH0KLQogI2VuZGlmCiAKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6
ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhv
ZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIGFzeW5jKQpAQCAtNDkzLDUwICsz
NDUsMzAgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVOb2RlKGxvbmcgY2FsbElkLCBs
b25nIG5vZGVJZCkKICAgICBmcm9udGVuZC0+ZGlkUmVtb3ZlTm9kZShjYWxsSWQsIG5vZGVJZCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29u
c3QgU3RyaW5nJiBkb21haW4pCi17Ci0gICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0g
ICAgICAgIHJldHVybjsKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmdldENvb2tpZXMoY2Fs
bElkLCBkb21haW4pOwotfQotCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRlbGV0ZUNvb2tpZShj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKQotewotICAgIGlm
ICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5kZWxldGVDb29raWUoY29va2llTmFtZSwgZG9tYWluKTsKLX0KLQotdm9p
ZCBJbnNwZWN0b3JCYWNrZW5kOjpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAg
UGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQodGV4dCk7Ci19
Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6aGlnaGxpZ2h0KGxvbmcgbm9kZUlkKQordm9pZCBJ
bnNwZWN0b3JCYWNrZW5kOjpoaWdobGlnaHRET01Ob2RlKGxvbmcgbm9kZUlkKQogewogICAgIGlm
IChOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpCiAgICAgICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+aGlnaGxpZ2h0KG5vZGUpOwogfQogCi1Ob2RlKiBJbnNwZWN0b3JCYWNrZW5kOjpu
b2RlRm9ySWQobG9uZyBub2RlSWQpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmhpZGVET01Ob2Rl
SGlnaGxpZ2h0KCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5z
cGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgcmV0dXJuIGRvbUFnZW50LT5ub2RlRm9ySWQobm9k
ZUlkKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAg
ICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmhpZGVIaWdobGlnaHQoKTsKIH0KIAotU2NyaXB0
VmFsdWUgSW5zcGVjdG9yQmFja2VuZDo6d3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYgb2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpn
ZXRDb29raWVzKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICBpZiAo
bV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9s
bGVyLT53cmFwT2JqZWN0KG9iamVjdCwgb2JqZWN0R3JvdXApOwotICAgIHJldHVybiBTY3JpcHRW
YWx1ZSgpOworICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1cm47
CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRDb29raWVzKGNhbGxJZCwgZG9tYWluKTsK
IH0KIAotU2NyaXB0VmFsdWUgSW5zcGVjdG9yQmFja2VuZDo6dW53cmFwT2JqZWN0KGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRlbGV0ZUNvb2tpZShjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIGlmICht
X2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xs
ZXItPnVud3JhcE9iamVjdChvYmplY3RJZCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Cisg
ICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmRlbGV0ZUNvb2tpZShjb29raWVOYW1lLCBkb21haW4pOwogfQog
CiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCkKQEAgLTU0NSwzOCArMzc3LDEzIEBAIHZvaWQgSW5zcGVjdG9y
QmFja2VuZDo6cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdy
b3VwKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnJlbGVhc2VXcmFwcGVyT2JqZWN0
R3JvdXAob2JqZWN0R3JvdXApOwogfQogCi1sb25nIEluc3BlY3RvckJhY2tlbmQ6OnB1c2hOb2Rl
UGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZSwgYm9vbCBzZWxlY3RJblVJKQotewotICAgIEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCA9IGluc3BlY3RvckZyb250ZW5kKCk7Ci0gICAgSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yRE9NQWdlbnQoKTsKLSAgICBpZiAoIWRv
bUFnZW50IHx8ICFmcm9udGVuZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbG9uZyBpZCA9IGRv
bUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUpOwotICAgIGlmIChzZWxlY3RJblVJ
KQotICAgICAgICBmcm9udGVuZC0+dXBkYXRlRm9jdXNlZE5vZGUoaWQpOwotICAgIHJldHVybiBp
ZDsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjphZGROb2Rlc1RvU2VhcmNoUmVzdWx0KGNv
bnN0IFN0cmluZyYgbm9kZUlkcykKLXsKLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kID0gaW5zcGVjdG9yRnJvbnRlbmQoKSkKLSAgICAgICAgZnJvbnRlbmQtPmFkZE5vZGVzVG9T
ZWFyY2hSZXN1bHQobm9kZUlkcyk7Ci19Ci0KLSNpZiBFTkFCTEUoREFUQUJBU0UpCi1EYXRhYmFz
ZSogSW5zcGVjdG9yQmFja2VuZDo6ZGF0YWJhc2VGb3JJZChsb25nIGRhdGFiYXNlSWQpCi17Ci0g
ICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIG1faW5zcGVjdG9y
Q29udHJvbGxlci0+ZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKLSAgICByZXR1cm4gMDsKLX0K
LQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJh
c2UpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQo
bG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCkKIHsKICAgICBpZiAobV9pbnNw
ZWN0b3JDb250cm9sbGVyKQotICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNlbGVjdERh
dGFiYXNlKGRhdGFiYXNlKTsKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRFdmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwganNvblJlc3VsdCk7CiB9CiAKKyNpZiBFTkFC
TEUoREFUQUJBU0UpCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmdldERhdGFiYXNlVGFibGVOYW1l
cyhsb25nIGNhbGxJZCwgbG9uZyBkYXRhYmFzZUlkKQogewogICAgIGlmIChJbnNwZWN0b3JGcm9u
dGVuZCogZnJvbnRlbmQgPSBpbnNwZWN0b3JGcm9udGVuZCgpKSB7CkBAIC01OTQsMTIgKzQwMSw2
IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKGxvbmcgY2Fs
bElkLCBsb25nIGRhdGFiYXNlSWQpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
LXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c2VsZWN0RE9NU3RvcmFnZShTdG9yYWdlKiBzdG9yYWdl
KQotewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9y
Q29udHJvbGxlci0+c2VsZWN0RE9NU3RvcmFnZShzdG9yYWdlKTsKLX0KLQogdm9pZCBJbnNwZWN0
b3JCYWNrZW5kOjpnZXRET01TdG9yYWdlRW50cmllcyhsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdl
SWQpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKQEAgLTYxOSwxOCArNDIwLDYg
QEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVET01TdG9yYWdlSXRlbShsb25nIGNhbGxJ
ZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFMKIH0KICNlbmRpZgogCi12b2lkIEluc3BlY3RvckJh
Y2tlbmQ6OmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYganNvblJlc3VsdCkKLXsKLSAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAg
ICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQo
Y2FsbElkLCBqc29uUmVzdWx0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpyZXBvcnRE
aWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgcmVz
dWx0LCBib29sIGlzRXhjZXB0aW9uKQotewotICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQgPSBpbnNwZWN0b3JGcm9udGVuZCgpKQotICAgICAgICBmcm9udGVuZC0+ZGlkRGlzcGF0
Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwgcmVzdWx0LCBpc0V4Y2VwdGlvbik7Ci19Ci0KIElu
c3BlY3RvckRPTUFnZW50KiBJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0b3JET01BZ2VudCgpCiB7
CiAgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCkBAIC02NDUsNiArNDM0LDEzIEBAIElu
c3BlY3RvckZyb250ZW5kKiBJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0b3JGcm9udGVuZCgpCiAg
ICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9mcm9udGVuZC5nZXQoKTsKIH0KIAor
Tm9kZSogSW5zcGVjdG9yQmFja2VuZDo6bm9kZUZvcklkKGxvbmcgbm9kZUlkKQoreworICAgIGlm
IChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JET01BZ2VudCgpKQorICAg
ICAgICByZXR1cm4gZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOworICAgIHJldHVybiAwOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmluZGV4IGY4NDk3OGEuLjgwMjYyOTQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKQEAgLTM5LDggKzM5LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIERhdGFiYXNl
OwotY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CitjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBO
b2RlOwogY2xhc3MgU3RvcmFnZTsKQEAgLTQ4LDg3ICs0OCw1OSBAQCBjbGFzcyBTdG9yYWdlOwog
Y2xhc3MgSW5zcGVjdG9yQmFja2VuZCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJhY2tl
bmQ+CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZD4g
Y3JlYXRlKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmQ+
IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JCYWNrZW5kKGluc3BlY3RvckNv
bnRyb2xsZXIsIGNsaWVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3Rv
ckJhY2tlbmQoaW5zcGVjdG9yQ29udHJvbGxlcikpOwogICAgIH0KIAogICAgIH5JbnNwZWN0b3JC
YWNrZW5kKCk7CiAKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9Ci0gICAgCiAgICAgdm9pZCBkaXNj
b25uZWN0Q29udHJvbGxlcigpIHsgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gMDsgfQogCi0gICAg
dm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotCi0gICAgU3RyaW5nIGxvY2FsaXplZFN0cmlu
Z3NVUkwoKTsKLSAgICBTdHJpbmcgaGlkZGVuUGFuZWxzKCk7Ci0KLSAgICB2b2lkIHdpbmRvd1Vu
bG9hZGluZygpOwotCi0gICAgYm9vbCBpc1dpbmRvd1Zpc2libGUoKTsKLQotICAgIHZvaWQgYWRk
UmVzb3VyY2VTb3VyY2VUb0ZyYW1lKGxvbmcgaWRlbnRpZmllciwgTm9kZSogZnJhbWUpOwotICAg
IGJvb2wgYWRkU291cmNlVG9GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZSwgTm9kZSogZnJhbWUpOwotCiAgICAgdm9pZCBjbGVhck1lc3NhZ2VzKGJvb2wg
Y2xlYXJVSSk7Ci0KLSAgICB2b2lkIHRvZ2dsZU5vZGVTZWFyY2goKTsKLQotICAgIHZvaWQgYXR0
YWNoKCk7Ci0gICAgdm9pZCBkZXRhY2goKTsKLQotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KTsKLQogICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwo
Y29uc3QgU3RyaW5nJiBwYW5lbE5hbWUpOwogCisgICAgdm9pZCB0b2dnbGVOb2RlU2VhcmNoKCk7
CiAgICAgYm9vbCBzZWFyY2hpbmdGb3JOb2RlKCk7CiAKLSAgICB2b2lkIGxvYWRlZCgpOwotCiAg
ICAgdm9pZCBlbmFibGVSZXNvdXJjZVRyYWNraW5nKGJvb2wgYWx3YXlzKTsKICAgICB2b2lkIGRp
c2FibGVSZXNvdXJjZVRyYWNraW5nKGJvb2wgYWx3YXlzKTsKICAgICBib29sIHJlc291cmNlVHJh
Y2tpbmdFbmFibGVkKCkgY29uc3Q7CiAKLSAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBm
bG9hdCB5KSBjb25zdDsKLSAgICB2b2lkIGNsb3NlV2luZG93KCk7Ci0KLSAgICBjb25zdCBTdHJp
bmcmIHBsYXRmb3JtKCkgY29uc3Q7Ci0gICAgY29uc3QgU3RyaW5nJiBwb3J0KCkgY29uc3Q7Ci0K
ICAgICB2b2lkIHN0YXJ0VGltZWxpbmVQcm9maWxlcigpOwogICAgIHZvaWQgc3RvcFRpbWVsaW5l
UHJvZmlsZXIoKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIHZvaWQg
c3RhcnRQcm9maWxpbmcoKTsKLSAgICB2b2lkIHN0b3BQcm9maWxpbmcoKTsKLQotICAgIHZvaWQg
ZW5hYmxlUHJvZmlsZXIoYm9vbCBhbHdheXMpOwotICAgIHZvaWQgZGlzYWJsZVByb2ZpbGVyKGJv
b2wgYWx3YXlzKTsKLSAgICBib29sIHByb2ZpbGVyRW5hYmxlZCgpOwotCi0gICAgdm9pZCBnZXRQ
cm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCk7Ci0gICAgdm9pZCBnZXRQcm9maWxlKGxvbmcgY2Fs
bElkLCB1bnNpZ25lZCB1aWQpOwotCisgICAgYm9vbCBkZWJ1Z2dlckVuYWJsZWQoKSBjb25zdDsK
ICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzKTsKICAgICB2b2lkIGRpc2FibGVE
ZWJ1Z2dlcihib29sIGFsd2F5cyk7Ci0gICAgYm9vbCBkZWJ1Z2dlckVuYWJsZWQoKSBjb25zdDsK
LQotICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUoKSBjb25zdDsKIAog
ICAgIHZvaWQgYWRkQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbik7CiAgICAgdm9pZCB1cGRhdGVCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgY29uZGl0aW9uKTsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3Ry
aW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlcik7CiAKLSAgICBib29sIHBhdXNlT25F
eGNlcHRpb25zKCk7Ci0gICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9ucyhib29sIHBhdXNlKTsK
LQogICAgIHZvaWQgcGF1c2VJbkRlYnVnZ2VyKCk7CiAgICAgdm9pZCByZXN1bWVEZWJ1Z2dlcigp
OwogCisgICAgYm9vbCBwYXVzZU9uRXhjZXB0aW9ucygpOworICAgIHZvaWQgc2V0UGF1c2VPbkV4
Y2VwdGlvbnMoYm9vbCBwYXVzZSk7CisKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50SW5EZWJ1
Z2dlcigpOwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnRJbkRlYnVnZ2VyKCk7CiAgICAgdm9p
ZCBzdGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIoKTsKKworICAgIGJvb2wgcHJvZmlsZXJFbmFi
bGVkKCk7CisgICAgdm9pZCBlbmFibGVQcm9maWxlcihib29sIGFsd2F5cyk7CisgICAgdm9pZCBk
aXNhYmxlUHJvZmlsZXIoYm9vbCBhbHdheXMpOworCisgICAgdm9pZCBzdGFydFByb2ZpbGluZygp
OworICAgIHZvaWQgc3RvcFByb2ZpbGluZygpOworCisgICAgdm9pZCBnZXRQcm9maWxlSGVhZGVy
cyhsb25nIGNhbGxJZCk7CisgICAgdm9pZCBnZXRQcm9maWxlKGxvbmcgY2FsbElkLCB1bnNpZ25l
ZCB1aWQpOworCisgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogY3VycmVudENhbGxGcmFtZSgpIGNv
bnN0OwogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdChsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywg
Ym9vbCBhc3luYyk7CkBAIC0xMzksNDEgKzExMSwzMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRF
dmVudExpc3RlbmVyc0Zvck5vZGUobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKTsKICAgICB2b2lk
IGNvcHlOb2RlKGxvbmcgbm9kZUlkKTsKICAgICB2b2lkIHJlbW92ZU5vZGUobG9uZyBjYWxsSWQs
IGxvbmcgbm9kZUlkKTsKKyAgICB2b2lkIGhpZ2hsaWdodERPTU5vZGUobG9uZyBub2RlSWQpOwor
ICAgIHZvaWQgaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKIAogICAgIHZvaWQgZ2V0Q29va2llcyhs
b25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBkb21haW4pOwogICAgIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pOwogCi0gICAg
dm9pZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwotCiAgICAgLy8gR2VuZXJpYyBjb2Rl
IGNhbGxlZCBmcm9tIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMuCi0gICAgdm9pZCBoaWdobGlnaHQo
bG9uZyBub2RlSWQpOwotICAgIE5vZGUqIG5vZGVGb3JJZChsb25nIG5vZGVJZCk7Ci0gICAgU2Ny
aXB0VmFsdWUgd3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJp
bmcmIG9iamVjdEdyb3VwKTsKLSAgICBTY3JpcHRWYWx1ZSB1bndyYXBPYmplY3QoY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCk7CiAgICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXApOwotICAgIGxvbmcgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChO
b2RlKiBub2RlLCBib29sIHNlbGVjdEluVUkpOwotICAgIHZvaWQgYWRkTm9kZXNUb1NlYXJjaFJl
c3VsdChjb25zdCBTdHJpbmcmIG5vZGVJZHMpOworICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0
SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKKwogI2lm
IEVOQUJMRShEQVRBQkFTRSkKLSAgICBEYXRhYmFzZSogZGF0YWJhc2VGb3JJZChsb25nIGRhdGFi
YXNlSWQpOwotICAgIHZvaWQgc2VsZWN0RGF0YWJhc2UoRGF0YWJhc2UqIGRhdGFiYXNlKTsKICAg
ICB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhsb25nIGNhbGxJZCwgbG9uZyBkYXRhYmFzZUlk
KTsKICNlbmRpZgorCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgIHZvaWQgc2VsZWN0RE9N
U3RvcmFnZShTdG9yYWdlKiBzdG9yYWdlKTsKICAgICB2b2lkIGdldERPTVN0b3JhZ2VFbnRyaWVz
KGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCk7CiAgICAgdm9pZCBzZXRET01TdG9yYWdlSXRl
bShsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElk
LCBsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogI2VuZGlmCi0gICAgdm9pZCBy
ZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0LCBib29sIGlzRXhjZXB0aW9uKTsKLSAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCk7CiAKIHBy
aXZhdGU6Ci0gICAgSW5zcGVjdG9yQmFja2VuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCk7CisgICAgSW5zcGVjdG9yQmFj
a2VuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBJbnNw
ZWN0b3JET01BZ2VudCogaW5zcGVjdG9yRE9NQWdlbnQoKTsKICAgICBJbnNwZWN0b3JGcm9udGVu
ZCogaW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICBOb2RlKiBub2RlRm9ySWQobG9uZyBub2RlSWQp
OwogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOwotICAg
IEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4IGQ2YTNjZjkuLmU0MzZl
NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCkBAIC0zNCw0MyArMzQs
MTggQEAgbW9kdWxlIGNvcmUgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3IKICAgICBdIEluc3BlY3RvckJhY2tlbmQgewotICAgICAgICB2b2lkIGhpZGVET01O
b2RlSGlnaGxpZ2h0KCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgaGlnaGxpZ2h0RE9NTm9kZShp
biBsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgbG9hZGVkKCk7Ci0gICAgICAgIHZvaWQgd2lu
ZG93VW5sb2FkaW5nKCk7Ci0gICAgICAgIHZvaWQgYXR0YWNoKCk7Ci0gICAgICAgIHZvaWQgZGV0
YWNoKCk7Ci0KLSAgICAgICAgdm9pZCBjbG9zZVdpbmRvdygpOwogICAgICAgICB2b2lkIGNsZWFy
TWVzc2FnZXMoaW4gYm9vbGVhbiBjbGVhclVJKTsKLSAgICAgICAgdm9pZCB0b2dnbGVOb2RlU2Vh
cmNoKCk7CisgICAgICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwoaW4gRE9NU3RyaW5nIHBh
bmVsTmFtZSk7CiAKLSAgICAgICAgYm9vbGVhbiBpc1dpbmRvd1Zpc2libGUoKTsKKyAgICAgICAg
dm9pZCB0b2dnbGVOb2RlU2VhcmNoKCk7CiAgICAgICAgIGJvb2xlYW4gc2VhcmNoaW5nRm9yTm9k
ZSgpOwogCi0gICAgICAgIHZvaWQgYWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lKGluIGxvbmcgaWRl
bnRpZmllciwgaW4gTm9kZSBmcmFtZSk7Ci0gICAgICAgIGJvb2xlYW4gYWRkU291cmNlVG9GcmFt
ZShpbiBET01TdHJpbmcgbWltZVR5cGUsIGluIERPTVN0cmluZyBzb3VyY2VWYWx1ZSwgaW4gTm9k
ZSBmcmFtZSk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2VhcmNoKGluIE5vZGUgbm9kZSwgaW4g
RE9NU3RyaW5nIHF1ZXJ5KTsKLSNpZiBkZWZpbmVkKEVOQUJMRV9EQVRBQkFTRSkgJiYgRU5BQkxF
X0RBVEFCQVNFCi0gICAgICAgIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKGluIGxvbmcgY2Fs
bElkLCBpbiBsb25nIGRhdGFiYXNlSWQpOwotI2VuZGlmCi0KLSAgICAgICAgW0N1c3RvbV0gRE9N
T2JqZWN0IHNldHRpbmcoaW4gRE9NU3RyaW5nIGtleSk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQg
c2V0U2V0dGluZyhpbiBET01TdHJpbmcga2V5LCBpbiBET01PYmplY3QgIHZhbHVlKTsKLSAgICAg
ICAgW0N1c3RvbV0gRE9NV2luZG93IGluc3BlY3RlZFdpbmRvdygpOwotICAgICAgICBET01TdHJp
bmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpOwotICAgICAgICBET01TdHJpbmcgaGlkZGVuUGFuZWxz
KCk7Ci0gICAgICAgIERPTVN0cmluZyBwbGF0Zm9ybSgpOwotICAgICAgICBET01TdHJpbmcgcG9y
dCgpOwotICAgICAgICB2b2lkIHN0YXJ0VGltZWxpbmVQcm9maWxlcigpOwotICAgICAgICB2b2lk
IHN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Ci0gICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9u
PW1vdmVXaW5kb3dCeV0gdm9pZCBtb3ZlQnlVbnJlc3RyaWN0ZWQoaW4gZmxvYXQgeCwgaW4gZmxv
YXQgeSk7Ci0gICAgICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaW4gdW5zaWduZWQg
bG9uZyBoZWlnaHQpOwotICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgd3JhcENhbGxiYWNrKGlu
IERPTU9iamVjdCBjYWxsYmFjayk7CiAgICAgICAgIGJvb2xlYW4gcmVzb3VyY2VUcmFja2luZ0Vu
YWJsZWQoKTsKICAgICAgICAgdm9pZCBlbmFibGVSZXNvdXJjZVRyYWNraW5nKGluIGJvb2xlYW4g
YWx3YXlzKTsKICAgICAgICAgdm9pZCBkaXNhYmxlUmVzb3VyY2VUcmFja2luZyhpbiBib29sZWFu
IGFsd2F5cyk7Ci0gICAgICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwoaW4gRE9NU3RyaW5n
IHBhbmVsTmFtZSk7CisKKyAgICAgICAgdm9pZCBzdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAg
ICAgICAgdm9pZCBzdG9wVGltZWxpbmVQcm9maWxlcigpOwogCiAjaWYgZGVmaW5lZChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKICAgICAg
ICAgYm9vbGVhbiBkZWJ1Z2dlckVuYWJsZWQoKTsKQEAgLTg4LDggKzYzLDYgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50SW5EZWJ1Z2dlcigpOwogICAgICAg
ICB2b2lkIHN0ZXBPdXRPZkZ1bmN0aW9uSW5EZWJ1Z2dlcigpOwogCi0gICAgICAgIFtDdXN0b21d
IERPTU9iamVjdCBjdXJyZW50Q2FsbEZyYW1lKCk7Ci0KICAgICAgICAgYm9vbGVhbiBwYXVzZU9u
RXhjZXB0aW9ucygpOwogICAgICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zKGluIGJvb2xl
YW4gcGF1c2VPbkV4Y2VwdGlvbnMpOwogCkBAIC0xMTEsMzAgKzg0LDIzIEBAIG1vZHVsZSBjb3Jl
IHsKICAgICAgICAgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9pZCBjb3B5Tm9kZShpbiBsb25nIG5vZGVJZCk7
CiAgICAgICAgIHZvaWQgcmVtb3ZlTm9kZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQp
OworICAgICAgICB2b2lkIGhpZ2hsaWdodERPTU5vZGUoaW4gbG9uZyBub2RlSWQpOworICAgICAg
ICB2b2lkIGhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAKICAgICAgICAgdm9pZCBnZXRDb29raWVz
KGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgZG9tYWluKTsKICAgICAgICAgdm9pZCBkZWxl
dGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tpZU5hbWUsIGluIERPTVN0cmluZyBkb21haW4pOwog
Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIEluamVjdGVkU2NyaXB0LgotICAgICAgICAvLyBUT0RP
OiBleHRyYWN0IGludG8gYSBzZXBhcmF0ZSBJREwuCi0gICAgICAgIHZvaWQgY29weVRleHQoaW4g
RE9NU3RyaW5nIHRleHQpOwotICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgbm9kZUZvcklkKGlu
IGxvbmcgbm9kZUlkKTsKLSAgICAgICAgW0N1c3RvbV0gbG9uZyB3cmFwT2JqZWN0KGluIERPTU9i
amVjdCBvYmplY3QsIGluIERPTVN0cmluZyBvYmplY3RHcm91cCk7Ci0gICAgICAgIFtDdXN0b21d
IERPTU9iamVjdCB1bndyYXBPYmplY3QoaW4gbG9uZyBvYmplY3RJZCk7CiAgICAgICAgIHZvaWQg
cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBET01TdHJpbmcgb2JqZWN0R3JvdXApOwotICAg
ICAgICBbQ3VzdG9tXSBpbnQgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChpbiBET01PYmplY3Qgbm9k
ZSwgaW4gYm9vbGVhbiBzZWxlY3RJblVJKTsKLSAgICAgICAgdm9pZCBhZGROb2Rlc1RvU2VhcmNo
UmVzdWx0KGluIERPTVN0cmluZyBub2RlSWRzKTsKKyAgICAgICAgdm9pZCBkaWRFdmFsdWF0ZUZv
clRlc3RJbkZyb250ZW5kKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcganNvblJlc3VsdCk7
CisKICNpZiBkZWZpbmVkKEVOQUJMRV9EQVRBQkFTRSkgJiYgRU5BQkxFX0RBVEFCQVNFCi0gICAg
ICAgIFtDdXN0b21dIHZvaWQgc2VsZWN0RGF0YWJhc2UoaW4gRE9NT2JqZWN0IGRhdGFiYXNlKTsK
LSAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGRhdGFiYXNlRm9ySWQoaW4gbG9uZyBkYXRhYmFz
ZUlkKTsKKyAgICAgICAgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgZGF0YWJhc2VJZCk7CiAjZW5kaWYKKwogI2lmIGRlZmluZWQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAmJiBFTkFCTEVfRE9NX1NUT1JBR0UKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZWxl
Y3RET01TdG9yYWdlKGluIERPTU9iamVjdCBzdG9yYWdlKTsKICAgICAgICAgdm9pZCBnZXRET01T
dG9yYWdlRW50cmllcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQpOwogICAgICAg
ICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3JhZ2VJ
ZCwgaW4gRE9NU3RyaW5nIGtleSwgaW4gRE9NU3RyaW5nIHZhbHVlKTsKICAgICAgICAgdm9pZCBy
ZW1vdmVET01TdG9yYWdlSXRlbShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQsIGlu
IERPTVN0cmluZyBrZXkpOwogI2VuZGlmCi0gICAgICAgIHZvaWQgcmVwb3J0RGlkRGlzcGF0Y2hP
bkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgcmVzdWx0LCBpbiBi
b29sZWFuIGlzRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZy
b250ZW5kKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcganNvblJlc3VsdCk7CiAgICAgfTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZGRiMTNk
Mi4uNzk4N2VhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTUzLDggKzUzLDEwIEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmQuaCIK
KyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGll
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kSG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0
b3JhZ2VSZXNvdXJjZS5oIgpAQCAtMTM0LDcgKzEzNiw5IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQp
CiAgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQogICAgICwgbV9yZXNvdXJjZVRyYWNraW5nRW5h
YmxlZChmYWxzZSkKICAgICAsIG1fcmVzb3VyY2VUcmFja2luZ1NldHRpbmdzTG9hZGVkKGZhbHNl
KQotICAgICwgbV9pbnNwZWN0b3JCYWNrZW5kKEluc3BlY3RvckJhY2tlbmQ6OmNyZWF0ZSh0aGlz
LCBjbGllbnQpKQorICAgICwgbV9pbnNwZWN0b3JCYWNrZW5kKEluc3BlY3RvckJhY2tlbmQ6OmNy
ZWF0ZSh0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250
ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIGNsaWVudCkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0SG9z
dChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fbGFzdEJvdW5kT2Jq
ZWN0SWQoMSkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1fZGVidWdn
ZXJFbmFibGVkKGZhbHNlKQpAQCAtMTc0LDE1ICsxNzgsMTkgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIHJlbGVhc2VET01BZ2VudCgpOwogCiAgICAg
bV9pbnNwZWN0b3JCYWNrZW5kLT5kaXNjb25uZWN0Q29udHJvbGxlcigpOworICAgIG1faW5zcGVj
dG9yRnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q29udHJvbGxlcigpOworICAgIG1faW5qZWN0ZWRT
Y3JpcHRIb3N0LT5kaXNjb25uZWN0Q29udHJvbGxlcigpOwogfQogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewogICAgIGNsb3NlKCk7CiAKLSAg
ICBpZiAobV9zY3JpcHRTdGF0ZSkKLSAgICAgICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUo
bV9zY3JpcHRTdGF0ZSwgIkluc3BlY3RvckNvbnRyb2xsZXIiKTsKLQorICAgIGlmIChtX3Njcmlw
dFN0YXRlKSB7CisgICAgICAgIFNjcmlwdEdsb2JhbE9iamVjdDo6cmVtb3ZlKG1fc2NyaXB0U3Rh
dGUsICJJbnNwZWN0b3JCYWNrZW5kIik7CisgICAgICAgIFNjcmlwdEdsb2JhbE9iamVjdDo6cmVt
b3ZlKG1fc2NyaXB0U3RhdGUsICJJbnNwZWN0b3JGcm9udGVuZEhvc3QiKTsKKyAgICAgICAgU2Ny
aXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUobV9zY3JpcHRTdGF0ZSwgIkluamVjdGVkU2NyaXB0SG9z
dCIpOworICAgIH0KICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKICAgICBtX2luc3BlY3Rl
ZFBhZ2UgPSAwOwogCkBAIC01MjIsNyArNTMwLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUoKQogICAgIC8vIEdyYW50IHRoZSBpbnNwZWN0
b3IgdGhlIGFiaWxpdHkgdG8gc2NyaXB0IHRoZSBpbnNwZWN0ZWQgcGFnZS4KICAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ncmFudFVuaXZlcnNh
bEFjY2VzcygpOwogICAgIG1fc2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZUZyb21QYWdlKG1fcGFn
ZSk7Ci0gICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQobV9zY3JpcHRTdGF0ZSwgIkluc3BlY3Rv
ckNvbnRyb2xsZXIiLCBtX2luc3BlY3RvckJhY2tlbmQuZ2V0KCkpOworICAgIFNjcmlwdEdsb2Jh
bE9iamVjdDo6c2V0KG1fc2NyaXB0U3RhdGUsICJJbnNwZWN0b3JCYWNrZW5kIiwgbV9pbnNwZWN0
b3JCYWNrZW5kLmdldCgpKTsKKyAgICBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChtX3NjcmlwdFN0
YXRlLCAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0IiwgbV9pbnNwZWN0b3JGcm9udGVuZEhvc3QuZ2V0
KCkpOworICAgIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KG1fc2NyaXB0U3RhdGUsICJJbmplY3Rl
ZFNjcmlwdEhvc3QiLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0T2JqZWN0UmVhZHkoKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDIyYmQwNzYuLmE0M2NjZDIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTYyLDEwICs2MiwxMiBAQCBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xh
c3MgSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIGNsYXNzIEluc3Bl
Y3RvckJhY2tlbmQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01B
Z2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OwogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEphdmFTY3JpcHRDYWxs
RnJhbWU7CiBjbGFzcyBLVVJMOwpAQCAtMTY2LDYgKzE2OCw4IEBAIHB1YmxpYzoKICAgICB+SW5z
cGVjdG9yQ29udHJvbGxlcigpOwogCiAgICAgSW5zcGVjdG9yQmFja2VuZCogaW5zcGVjdG9yQmFj
a2VuZCgpIHsgcmV0dXJuIG1faW5zcGVjdG9yQmFja2VuZC5nZXQoKTsgfQorICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdCogaW5zcGVjdG9yRnJvbnRlbmRIb3N0KCkgeyByZXR1cm4gbV9pbnNwZWN0
b3JGcm9udGVuZEhvc3QuZ2V0KCk7IH0KKyAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVk
U2NyaXB0SG9zdCgpIHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpOyB9CiAKICAg
ICB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKTsKICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQo
KSB7IG1fcGFnZSA9IDA7IH0KQEAgLTI5NCw2ICsyOTgsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CisgICAgZnJpZW5kIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kSG9zdDsKKyAgICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0
OwogICAgIC8vIEZvbGxvd2luZyBhcmUgdXNlZCBmcm9tIEluc3BlY3RvckJhY2tlbmQgYW5kIGlu
dGVybmFsbHkuCiAgICAgdm9pZCBzY3JpcHRPYmplY3RSZWFkeSgpOwogICAgIHZvaWQgbW92ZVdp
bmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0OwpAQCAtMzg4LDYgKzM5NCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkOwogICAgIGJvb2wgbV9yZXNv
dXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQ7CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmQ+
IG1faW5zcGVjdG9yQmFja2VuZDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBt
X2luc3BlY3RvckZyb250ZW5kSG9zdDsKKyAgICBSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBt
X2luamVjdGVkU2NyaXB0SG9zdDsKICAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0VmFsdWU+IG1f
aWRUb1dyYXBwZWRPYmplY3Q7CiAgICAgT2JqZWN0R3JvdXBzTWFwIG1fb2JqZWN0R3JvdXBzOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjhlYjA4Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMCwwICsxLDE5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRs
aWxlay5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
SG9zdC5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAi
SFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6Okluc3BlY3RvckZyb250ZW5kSG9zdChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKKyAgICA6IG1f
aW5zcGVjdG9yQ29udHJvbGxlcihpbnNwZWN0b3JDb250cm9sbGVyKQorICAgICwgbV9jbGllbnQo
Y2xpZW50KQoreworfQorCitJbnNwZWN0b3JGcm9udGVuZEhvc3Q6On5JbnNwZWN0b3JGcm9udGVu
ZEhvc3QoKQoreworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6bG9hZGVkKCkKK3sK
KyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRy
b2xsZXItPnNjcmlwdE9iamVjdFJlYWR5KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjphdHRhY2goKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+YXR0YWNoV2luZG93KCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpkZXRhY2goKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xs
ZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGV0YWNoV2luZG93KCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjbG9zZVdpbmRvdygpCit7CisgICAgaWYgKG1f
aW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jbG9z
ZVdpbmRvdygpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6d2luZG93VW5sb2Fk
aW5nKCkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPmNsb3NlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7CisgICAgaWYgKG1f
aW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRB
dHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5k
SG9zdDo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0Cit7CisgICAgaWYgKG1f
aW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tb3Zl
V2luZG93QnkoeCwgeSk7Cit9CisKK1N0cmluZyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvY2Fs
aXplZFN0cmluZ3NVUkwoKQoreworICAgIHJldHVybiBtX2NsaWVudC0+bG9jYWxpemVkU3RyaW5n
c1VSTCgpOworfQorCitTdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpoaWRkZW5QYW5lbHMo
KQoreworICAgIHJldHVybiBtX2NsaWVudC0+aGlkZGVuUGFuZWxzKCk7Cit9CisKK2NvbnN0IFN0
cmluZyYgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpwbGF0Zm9ybSgpIGNvbnN0Cit7CisjaWYgUExB
VEZPUk0oTUFDKQorI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoIm1hYy10aWdlciIpKTsKKyNlbHNlCisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoIm1hYy1sZW9wYXJk
IikpOworI2VuZGlmCisjZWxpZiBQTEFURk9STShXSU5fT1MpCisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoIndpbmRvd3MiKSk7CisjZWxzZQorICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwbGF0Zm9ybSwgKCJ1bmtub3duIikpOwor
I2VuZGlmCisgICAgcmV0dXJuIHBsYXRmb3JtOworfQorCisKK2NvbnN0IFN0cmluZyYgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Ojpwb3J0KCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShRVCkKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcG9ydCwgKCJxdCIpKTsKKyNlbGlmIFBM
QVRGT1JNKEdUSykKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcG9ydCwg
KCJndGsiKSk7CisjZWxpZiBQTEFURk9STShXWCkKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgcG9ydCwgKCJ3eCIpKTsKKyNlbHNlCisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHBvcnQsICgidW5rbm93biIpKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IHBvcnQ7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRSZXNvdXJjZVNvdXJj
ZVRvRnJhbWUobG9uZyBpZGVudGlmaWVyLCBOb2RlKiBmcmFtZSkKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxJbnNwZWN0b3JS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPnJlc291cmNlcygpLmdl
dChpZGVudGlmaWVyKTsKKyAgICBpZiAocmVzb3VyY2UpIHsKKyAgICAgICAgU3RyaW5nIHNvdXJj
ZVN0cmluZyA9IHJlc291cmNlLT5zb3VyY2VTdHJpbmcoKTsKKyAgICAgICAgaWYgKCFzb3VyY2VT
dHJpbmcuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWRkU291cmNlVG9GcmFtZShyZXNvdXJjZS0+
bWltZVR5cGUoKSwgc291cmNlU3RyaW5nLCBmcmFtZSk7CisgICAgfQorfQorCitib29sIEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6YWRkU291cmNlVG9GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgTm9kZSogZnJhbWVOb2RlKQoreworICAgIEFTU0VSVF9B
UkcoZnJhbWVOb2RlLCBmcmFtZU5vZGUpOworCisgICAgaWYgKCFmcmFtZU5vZGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZnJhbWVOb2RlLT5hdHRhY2hlZCgpKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgQVNTRVJUKGZyYW1lTm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKKyAgICBpZiAoIWZyYW1l
Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGZyYW1lTm9kZSk7CisgICAgQVNT
RVJUKGVsZW1lbnQtPmlzRnJhbWVPd25lckVsZW1lbnQoKSk7CisgICAgaWYgKCFlbGVtZW50LT5p
c0ZyYW1lT3duZXJFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25lciA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVy
RWxlbWVudCo+KGVsZW1lbnQpOworICAgIEFTU0VSVChmcmFtZU93bmVyLT5jb250ZW50RnJhbWUo
KSk7CisgICAgaWYgKCFmcmFtZU93bmVyLT5jb250ZW50RnJhbWUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lT3duZXItPmNvbnRlbnRG
cmFtZSgpLT5sb2FkZXIoKTsKKworICAgIGxvYWRlci0+c2V0UmVzcG9uc2VNSU1FVHlwZShtaW1l
VHlwZSk7CisgICAgbG9hZGVyLT5iZWdpbigpOworICAgIGxvYWRlci0+d3JpdGUoc291cmNlKTsK
KyAgICBsb2FkZXItPmVuZCgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRjYmVjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3Rv
ckZyb250ZW5kSG9zdF9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kSG9zdF9oCisKKyNpbmNs
dWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3RvckNsaWVudDsKK2NsYXNzIE5vZGU7
CisKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3Bl
Y3RvckZyb250ZW5kSG9zdD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q+IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KGluc3BlY3RvckNvbnRyb2xsZXIs
IGNsaWVudCkpOworICAgIH0KKworICAgIH5JbnNwZWN0b3JGcm9udGVuZEhvc3QoKTsKKworICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2lu
c3BlY3RvckNvbnRyb2xsZXI7IH0KKyAgICB2b2lkIGRpc2Nvbm5lY3RDb250cm9sbGVyKCkgeyBt
X2luc3BlY3RvckNvbnRyb2xsZXIgPSAwOyB9CisKKyAgICB2b2lkIGxvYWRlZCgpOworICAgIHZv
aWQgYXR0YWNoKCk7CisgICAgdm9pZCBkZXRhY2goKTsKKyAgICB2b2lkIGNsb3NlV2luZG93KCk7
CisgICAgdm9pZCB3aW5kb3dVbmxvYWRpbmcoKTsKKworICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KTsKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4
LCBmbG9hdCB5KSBjb25zdDsKKworICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7Cisg
ICAgU3RyaW5nIGhpZGRlblBhbmVscygpOworICAgIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0oKSBj
b25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHBvcnQoKSBjb25zdDsKKworICAgIHZvaWQgYWRkUmVz
b3VyY2VTb3VyY2VUb0ZyYW1lKGxvbmcgaWRlbnRpZmllciwgTm9kZSogZnJhbWUpOworICAgIGJv
b2wgYWRkU291cmNlVG9GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHNvdXJjZSwgTm9kZSogZnJhbWUpOworCitwcml2YXRlOgorICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JD
bGllbnQqIGNsaWVudCk7CisKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNv
bnRyb2xsZXI7CisgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZyb250ZW5kSG9z
dF9oKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3NTgxZAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1h
dHRsaWxlay5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVD
b25zdHJ1Y3RvcgorICAgIF0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHsKKyAgICAgICAgdm9pZCBs
b2FkZWQoKTsKKyAgICAgICAgdm9pZCBhdHRhY2goKTsKKyAgICAgICAgdm9pZCBkZXRhY2goKTsK
KyAgICAgICAgdm9pZCBjbG9zZVdpbmRvdygpOworICAgICAgICB2b2lkIHdpbmRvd1VubG9hZGlu
ZygpOworCisgICAgICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaW4gdW5zaWduZWQg
bG9uZyBoZWlnaHQpOworICAgICAgICB2b2lkIG1vdmVXaW5kb3dCeShpbiBmbG9hdCB4LCBpbiBm
bG9hdCB5KTsKKworICAgICAgICBET01TdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpOworICAg
ICAgICBET01TdHJpbmcgaGlkZGVuUGFuZWxzKCk7CisgICAgICAgIERPTVN0cmluZyBwbGF0Zm9y
bSgpOworICAgICAgICBET01TdHJpbmcgcG9ydCgpOworCisgICAgICAgIHZvaWQgYWRkUmVzb3Vy
Y2VTb3VyY2VUb0ZyYW1lKGluIGxvbmcgaWRlbnRpZmllciwgaW4gTm9kZSBmcmFtZSk7CisgICAg
ICAgIGJvb2xlYW4gYWRkU291cmNlVG9GcmFtZShpbiBET01TdHJpbmcgbWltZVR5cGUsIGluIERP
TVN0cmluZyBzb3VyY2VWYWx1ZSwgaW4gTm9kZSBmcmFtZSk7CisKKyAgICAgICAgW0N1c3RvbV0g
dm9pZCBzZWFyY2goaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgcXVlcnkpOworICAgICAgICBb
Q3VzdG9tXSBET01PYmplY3Qgc2V0dGluZyhpbiBET01TdHJpbmcga2V5KTsKKyAgICAgICAgW0N1
c3RvbV0gdm9pZCBzZXRTZXR0aW5nKGluIERPTVN0cmluZyBrZXksIGluIERPTU9iamVjdCAgdmFs
dWUpOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QnJlYWtwb2ludC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50Lmpz
CmluZGV4IDI5Mjk3NWEuLjVkNDZjYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9CcmVha3BvaW50LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9C
cmVha3BvaW50LmpzCkBAIC04OSw3ICs4OSw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImNvbmRp
dGlvbi1jaGFuZ2VkIik7CiAKICAgICAgICAgaWYgKHRoaXMuZW5hYmxlZCkKLSAgICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIudXBkYXRlQnJlYWtwb2ludCh0aGlzLnNvdXJjZUlELCB0aGlz
LmxpbmUsIGMpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC51cGRhdGVCcmVha3BvaW50
KHRoaXMuc291cmNlSUQsIHRoaXMubGluZSwgYyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCmluZGV4
IDFhOTlmMTYuLjlkNGZlNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCkBAIC01OCwxMSArNTgsMTEgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmxpc3RFbGVtZW50KTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICghSW5zcGVjdG9yQ29udHJvbGxlci5kZWJ1Z2dlckVuYWJsZWQoKSB8
fCAhYnJlYWtwb2ludC5zb3VyY2VJRCkKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmRl
YnVnZ2VyRW5hYmxlZCgpIHx8ICFicmVha3BvaW50LnNvdXJjZUlEKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmIChicmVha3BvaW50LmVuYWJsZWQpCi0gICAgICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludC5zb3VyY2VJRCwgYnJlYWtw
b2ludC5saW5lLCBicmVha3BvaW50LmNvbmRpdGlvbik7CisgICAgICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludC5zb3VyY2VJRCwgYnJlYWtwb2ludC5saW5l
LCBicmVha3BvaW50LmNvbmRpdGlvbik7CiAgICAgfSwKIAogICAgIF9hcHBlbmRCcmVha3BvaW50
RWxlbWVudDogZnVuY3Rpb24oYnJlYWtwb2ludCkKQEAgLTEzNSwxMCArMTM1LDEwIEBAIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbXB0eUVsZW1lbnQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKCFJbnNwZWN0b3JDb250cm9sbGVyLmRlYnVnZ2VyRW5hYmxlZCgp
IHx8ICFicmVha3BvaW50LnNvdXJjZUlEKQorICAgICAgICBpZiAoIUluc3BlY3RvckJhY2tlbmQu
ZGVidWdnZXJFbmFibGVkKCkgfHwgIWJyZWFrcG9pbnQuc291cmNlSUQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5yZW1vdmVCcmVha3BvaW50KGJy
ZWFrcG9pbnQuc291cmNlSUQsIGJyZWFrcG9pbnQubGluZSk7CisgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50LnNvdXJjZUlELCBicmVha3BvaW50Lmxp
bmUpOwogICAgIH0sCiAKICAgICBfYnJlYWtwb2ludEVuYWJsZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2
ZW50KQpAQCAtMTQ4LDEzICsxNDgsMTMgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJh
clBhbmUucHJvdG90eXBlID0gewogICAgICAgICB2YXIgY2hlY2tib3ggPSBicmVha3BvaW50Ll9i
cmVha3BvaW50TGlzdEVsZW1lbnQuZmlyc3RDaGlsZDsKICAgICAgICAgY2hlY2tib3guY2hlY2tl
ZCA9IGJyZWFrcG9pbnQuZW5hYmxlZDsKIAotICAgICAgICBpZiAoIUluc3BlY3RvckNvbnRyb2xs
ZXIuZGVidWdnZXJFbmFibGVkKCkgfHwgIWJyZWFrcG9pbnQuc291cmNlSUQpCisgICAgICAgIGlm
ICghSW5zcGVjdG9yQmFja2VuZC5kZWJ1Z2dlckVuYWJsZWQoKSB8fCAhYnJlYWtwb2ludC5zb3Vy
Y2VJRCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoYnJlYWtwb2ludC5lbmFi
bGVkKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5hZGRCcmVha3BvaW50KGJyZWFr
cG9pbnQuc291cmNlSUQsIGJyZWFrcG9pbnQubGluZSwgYnJlYWtwb2ludC5jb25kaXRpb24pOwor
ICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291
cmNlSUQsIGJyZWFrcG9pbnQubGluZSwgYnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnJlbW92ZUJyZWFrcG9pbnQoYnJl
YWtwb2ludC5zb3VyY2VJRCwgYnJlYWtwb2ludC5saW5lKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50LnNvdXJjZUlELCBicmVha3BvaW50
LmxpbmUpOwogICAgIH0sCiAKICAgICBfYnJlYWtwb2ludFRleHRDaGFuZ2VkOiBmdW5jdGlvbihl
dmVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmll
dy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCAx
NjEyYWM1Li4wMTY3YjRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVW
aWV3LmpzCkBAIC0yODIsNyArMjgyLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICBjbGVhck1lc3NhZ2VzOiBmdW5jdGlvbihjbGVhckluc3BlY3RvckNvbnRy
b2xsZXIpCiAgICAgewogICAgICAgICBpZiAoY2xlYXJJbnNwZWN0b3JDb250cm9sbGVyKQotICAg
ICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5jbGVhck1lc3NhZ2VzKGZhbHNlKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuY2xlYXJNZXNzYWdlcyhmYWxzZSk7CiAgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcykKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMucmVzb3VyY2VzLmNsZWFyTWVzc2FnZXMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKaW5kZXggNWFiZGJlYS4uMGNhYTFiNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCkBA
IC0yNjcsNyArMjY3LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgX2RlbGV0ZUNvb2tpZUNhbGxiYWNrOiBmdW5jdGlvbihub2RlKQogICAgIHsKICAg
ICAgICAgdmFyIGNvb2tpZSA9IG5vZGUuY29va2llOwotICAgICAgICBJbnNwZWN0b3JDb250cm9s
bGVyLmRlbGV0ZUNvb2tpZShjb29raWUubmFtZSwgdGhpcy5fY29va2llRG9tYWluKTsKKyAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5kZWxldGVDb29raWUoY29va2llLm5hbWUsIHRoaXMuX2Nvb2tp
ZURvbWFpbik7CiAgICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDI1MmI1ZjguLmJkYWNlN2UgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTMyNywyNSArMzI3LDI1IEBAIFdl
Ykluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYWxsYmFjayhw
YXJlbnQuY2hpbGRyZW4pOwogICAgICAgICB9CiAgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNw
ZWN0b3IuQ2FsbGJhY2sud3JhcChteWNhbGxiYWNrKTsKLSAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlci5nZXRDaGlsZE5vZGVzKGNhbGxJZCwgcGFyZW50LmlkKTsKKyAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5nZXRDaGlsZE5vZGVzKGNhbGxJZCwgcGFyZW50LmlkKTsKICAgICB9LAogCiAgICAg
c2V0QXR0cmlidXRlQXN5bmM6IGZ1bmN0aW9uKG5vZGUsIG5hbWUsIHZhbHVlLCBjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIHZhciBteWNhbGxiYWNrID0gdGhpcy5fZGlkQXBwbHlEb21DaGFuZ2Uu
YmluZCh0aGlzLCBub2RlLCBjYWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIu
c2V0QXR0cmlidXRlKFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKG15Y2FsbGJhY2spLCBub2Rl
LmlkLCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0QXR0cmlidXRl
KFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKG15Y2FsbGJhY2spLCBub2RlLmlkLCBuYW1lLCB2
YWx1ZSk7CiAgICAgfSwKIAogICAgIHJlbW92ZUF0dHJpYnV0ZUFzeW5jOiBmdW5jdGlvbihub2Rl
LCBuYW1lLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBteWNhbGxiYWNrID0gdGhpcy5f
ZGlkQXBwbHlEb21DaGFuZ2UuYmluZCh0aGlzLCBub2RlLCBjYWxsYmFjayk7Ci0gICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXIucmVtb3ZlQXR0cmlidXRlKFdlYkluc3BlY3Rvci5DYWxsYmFjay53
cmFwKG15Y2FsbGJhY2spLCBub2RlLmlkLCBuYW1lKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZW1vdmVBdHRyaWJ1dGUoV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAobXljYWxsYmFjayks
IG5vZGUuaWQsIG5hbWUpOwogICAgIH0sCiAKICAgICBzZXRUZXh0Tm9kZVZhbHVlQXN5bmM6IGZ1
bmN0aW9uKG5vZGUsIHRleHQsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIG15Y2FsbGJh
Y2sgPSB0aGlzLl9kaWRBcHBseURvbUNoYW5nZS5iaW5kKHRoaXMsIG5vZGUsIGNhbGxiYWNrKTsK
LSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zZXRUZXh0Tm9kZVZhbHVlKFdlYkluc3BlY3Rv
ci5DYWxsYmFjay53cmFwKG15Y2FsbGJhY2spLCBub2RlLmlkLCB0ZXh0KTsKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRUZXh0Tm9kZVZhbHVlKFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFw
KG15Y2FsbGJhY2spLCBub2RlLmlkLCB0ZXh0KTsKICAgICB9LAogCiAgICAgX2RpZEFwcGx5RG9t
Q2hhbmdlOiBmdW5jdGlvbihub2RlLCBjYWxsYmFjaywgc3VjY2VzcykKQEAgLTQ0Nyw3ICs0NDcs
NyBAQCBXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMgPSBmdW5jdGlvbihjYWxs
YmFjaywgY29va2llRG9tYWluKQogICAgICAgICAgICAgY2FsbGJhY2soY29va2llcywgdHJ1ZSk7
CiAgICAgfQogICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChteWNh
bGxiYWNrKTsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyLmdldENvb2tpZXMoY2FsbElkLCBjb29r
aWVEb21haW4pOworICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29va2llcyhjYWxsSWQsIGNvb2tp
ZURvbWFpbik7CiB9CiAKIFdlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxkQ29va2llc0Zyb21TdHJp
bmcgPSBmdW5jdGlvbihyYXdDb29raWVTdHJpbmcpCkBAIC00NzcsNyArNDc3LDcgQEAgV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzLmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZUFzeW5jID0gZnVu
Y3Rpb24obm9kZSwgY2FsbGIKICAgICAgICAgcmV0dXJuOwogCiAgICAgdmFyIGNhbGxJZCA9IFdl
Ykluc3BlY3Rvci5DYWxsYmFjay53cmFwKGNhbGxiYWNrKTsKLSAgICBJbnNwZWN0b3JDb250cm9s
bGVyLmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShjYWxsSWQsIG5vZGUuaWQpOworICAgIEluc3Bl
Y3RvckJhY2tlbmQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKGNhbGxJZCwgbm9kZS5pZCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uID0gZnVuY3Rpb24ocGF5bG9hZCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKaW5kZXggMDNhMTBiZi4u
YzVmNjU4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3Jh
Z2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAg
LTU3LDE5ICs1NywxOSBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAg
ICAgZ2V0RW50cmllczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgY2Fs
bElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoY2FsbGJhY2spOwotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmdldERPTVN0b3JhZ2VFbnRyaWVzKGNhbGxJZCwgdGhpcy5faWQpOwor
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldERPTVN0b3JhZ2VFbnRyaWVzKGNhbGxJZCwgdGhp
cy5faWQpOwogICAgIH0sCiAgICAgCiAgICAgc2V0SXRlbTogZnVuY3Rpb24oa2V5LCB2YWx1ZSwg
Y2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxi
YWNrLndyYXAoY2FsbGJhY2spOwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnNldERPTVN0
b3JhZ2VJdGVtKGNhbGxJZCwgdGhpcy5faWQsIGtleSwgdmFsdWUpOworICAgICAgICBJbnNwZWN0
b3JCYWNrZW5kLnNldERPTVN0b3JhZ2VJdGVtKGNhbGxJZCwgdGhpcy5faWQsIGtleSwgdmFsdWUp
OwogICAgIH0sCiAgICAgCiAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChj
YWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIucmVtb3ZlRE9NU3RvcmFnZUl0
ZW0oY2FsbElkLCB0aGlzLl9pZCwga2V5KTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1v
dmVET01TdG9yYWdlSXRlbShjYWxsSWQsIHRoaXMuX2lkLCBrZXkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCmluZGV4IDFhMzQ4ZmMuLjVlZGVmYjEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMKQEAgLTgyLDcgKzgyLDcg
QEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNhbGxi
YWNrKG5hbWVzLnNvcnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgdmFyIGNhbGxJZCA9IFdlYklu
c3BlY3Rvci5DYWxsYmFjay53cmFwKHNvcnRpbmdDYWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXIuZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKGNhbGxJZCwgdGhpcy5faWQpOworICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldERhdGFiYXNlVGFibGVOYW1lcyhjYWxsSWQsIHRoaXMu
X2lkKTsKICAgICB9LAogICAgIAogICAgIGV4ZWN1dGVTcWw6IGZ1bmN0aW9uKHF1ZXJ5LCBvblN1
Y2Nlc3MsIG9uRXJyb3IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCmluZGV4IDc0ZjVkYTYuLjg0YTNlODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC01OCw4ICs1OCw4IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsID0gZnVuY3Rpb24oKQogICAgICAgICB0aGlzLnBhbmVsLnVwZGF0ZVByb3Bl
cnRpZXMoKTsKICAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVFdmVudExpc3RlbmVycygpOwogCi0g
ICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyLnNlYXJjaGluZ0Zvck5vZGUoKSkgewotICAg
ICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci50b2dnbGVOb2RlU2VhcmNoKCk7CisgICAgICAg
IGlmIChJbnNwZWN0b3JCYWNrZW5kLnNlYXJjaGluZ0Zvck5vZGUoKSkgeworICAgICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC50b2dnbGVOb2RlU2VhcmNoKCk7CiAgICAgICAgICAgICB0aGlzLnBh
bmVsLm5vZGVTZWFyY2hCdXR0b24udG9nZ2xlZCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGlmICh0aGlzLl9mb2N1c2VkRE9NTm9kZSkKQEAgLTE1MCw4ICsxNTAsOCBAQCBXZWJJbnNwZWN0
b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmhv
dmVyZWRET01Ob2RlID0gbnVsbDsKIAotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlci5z
ZWFyY2hpbmdGb3JOb2RlKCkpIHsKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIudG9n
Z2xlTm9kZVNlYXJjaCgpOworICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5zZWFyY2hpbmdG
b3JOb2RlKCkpIHsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlTm9kZVNlYXJj
aCgpOwogICAgICAgICAgICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQgPSBmYWxzZTsK
ICAgICAgICAgfQogICAgIH0sCkBAIC0xNjksOCArMTY5LDggQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIFdlYkluc3BlY3Rvci5ob3ZlcmVkRE9N
Tm9kZSA9IG51bGw7CiAKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIuc2VhcmNoaW5n
Rm9yTm9kZSgpKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnRvZ2dsZU5vZGVT
ZWFyY2goKTsKKyAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuc2VhcmNoaW5nRm9yTm9kZSgp
KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRvZ2dsZU5vZGVTZWFyY2goKTsKICAg
ICAgICAgICAgIHRoaXMubm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtMTgzLDExICsxODMsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghZG9tV2luZG93IHx8ICFkb21XaW5kb3cuZG9jdW1lbnQg
fHwgIWRvbVdpbmRvdy5kb2N1bWVudC5maXJzdENoaWxkKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIC8vIElmIHRoZSB3aW5kb3cgaXNuJ3QgdmlzaWJsZSwgcmV0dXJuIGVhcmx5IHNv
IHRoZSBET00gdHJlZSBpc24ndCBidWlsdAotICAgICAgICAvLyBhbmQgbXV0YXRpb24gZXZlbnQg
bGlzdGVuZXJzIGFyZSBub3QgYWRkZWQuCi0gICAgICAgIGlmICghSW5zcGVjdG9yQ29udHJvbGxl
ci5pc1dpbmRvd1Zpc2libGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICB2YXIg
aW5zcGVjdGVkUm9vdERvY3VtZW50ID0gZG9tV2luZG93LmRvY3VtZW50OwogICAgICAgICBpbnNw
ZWN0ZWRSb290RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhp
cy5fbm9kZUluc2VydGVkLmJpbmQodGhpcykpOwogICAgICAgICBpbnNwZWN0ZWRSb290RG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCB0aGlzLl9ub2RlUmVtb3ZlZC5i
aW5kKHRoaXMpKTsKQEAgLTEwMjMsNyArMTAxOCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZXZlbnQuY2xp
cGJvYXJkRGF0YS5jbGVhckRhdGEoKTsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
LSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5jb3B5Tm9kZSh0aGlzLmZvY3VzZWRET01Ob2Rl
LmlkKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5jb3B5Tm9kZSh0aGlzLmZvY3VzZWRET01O
b2RlLmlkKTsKICAgICB9LAogCiAgICAgcmlnaHRTaWRlYmFyUmVzaXplckRyYWdTdGFydDogZnVu
Y3Rpb24oZXZlbnQpCkBAIC0xMDUyLDkgKzEwNDcsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfbm9kZVNlYXJjaEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci50b2dnbGVOb2Rl
U2VhcmNoKCk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlTm9kZVNlYXJjaCgpOwog
Ci0gICAgICAgIHRoaXMubm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkID0gSW5zcGVjdG9yQ29udHJv
bGxlci5zZWFyY2hpbmdGb3JOb2RlKCk7CisgICAgICAgIHRoaXMubm9kZVNlYXJjaEJ1dHRvbi50
b2dnbGVkID0gSW5zcGVjdG9yQmFja2VuZC5zZWFyY2hpbmdGb3JOb2RlKCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCmluZGV4IGM5M2M1MGUuLmYwZGIyNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC04Myw3ICs4Myw3IEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuZm9jdXNlZE5vZGVDaGFuZ2VkKCk7CiAKICAgICAgICAgICAgIGlmICh4ICYmICF0aGlzLnN1
cHByZXNzU2VsZWN0SGlnaGxpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlci5oaWdobGlnaHRET01Ob2RlKHguaWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuaGlnaGxpZ2h0RE9NTm9kZSh4LmlkKTsKIAogICAgICAgICAgICAgICAgIGlmICgiX3Jl
c3RvcmVQcmV2aW91c0hpZ2hsaWdodE5vZGVUaW1lb3V0IiBpbiB0aGlzKQogICAgICAgICAgICAg
ICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVzdG9yZVByZXZpb3VzSGlnaGxpZ2h0Tm9kZVRp
bWVvdXQpOwpAQCAtOTIsOSArOTIsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGlu
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICB2
YXIgaG92ZXJlZE5vZGUgPSBXZWJJbnNwZWN0b3IuaG92ZXJlZERPTU5vZGU7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChob3ZlcmVkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIuaGlnaGxpZ2h0RE9NTm9kZShob3ZlcmVkTm9kZS5pZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmhpZ2hsaWdodERPTU5vZGUoaG92ZXJl
ZE5vZGUuaWQpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7
CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yZVByZXZp
b3VzSGlnaGxpZ2h0Tm9kZVRpbWVvdXQgPSBzZXRUaW1lb3V0KHJlc3RvcmVIaWdobGlnaHRUb0hv
dmVyZWROb2RlLCAyMDAwKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgY2Fs
bElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAocmVtb3ZlTm9kZUNhbGxiYWNrKTsKLSAg
ICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5yZW1vdmVOb2RlKGNhbGxJZCwgdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5pZCk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlTm9kZShjYWxs
SWQsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5q
cwppbmRleCAyOTM4MTk2Li5jMDgzYzBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcwpAQCAtMTA4LDcgKzEw
OCw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIHNlbGVjdGVkT3B0aW9uID0gdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1l
bnRbdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF07CiAgICAgICAgIFBy
ZWZlcmVuY2VzLmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7CiAK
LSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zZXRTZXR0aW5nKCJldmVudC1saXN0ZW5lcnMt
ZmlsdGVyIiwgUHJlZmVyZW5jZXMuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIpOworICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Quc2V0U2V0dGluZygiZXZlbnQtbGlzdGVuZXJzLWZpbHRlciIsIFBy
ZWZlcmVuY2VzLmV2ZW50TGlzdGVuZXJzRmlsdGVyKTsKIAogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuc2VjdGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLnNlY3Rp
b25zW2ldLnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luamVjdGVkU2NyaXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVk
U2NyaXB0LmpzCmluZGV4IDNmMzkzN2MuLmNhMzczYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKQEAgLTU2MSw3ICs1NjEsNyBAQCBJbmplY3Rl
ZFNjcmlwdC5fZXZhbHVhdGVBbmRXcmFwID0gZnVuY3Rpb24oZXZhbEZ1bmN0aW9uLCBvYmplY3Qs
IGV4cHJlc3Npb24sIG9iagogewogICAgIHZhciByZXN1bHQgPSB7fTsKICAgICB0cnkgewotICAg
ICAgICByZXN1bHQudmFsdWUgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBPYmplY3QoSW5qZWN0
ZWRTY3JpcHQuX2V2YWx1YXRlT24oZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24pLCBv
YmplY3RHcm91cCk7CisgICAgICAgIHJlc3VsdC52YWx1ZSA9IEluamVjdGVkU2NyaXB0SG9zdC53
cmFwT2JqZWN0KEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZU9uKGV2YWxGdW5jdGlvbiwgb2JqZWN0
LCBleHByZXNzaW9uKSwgb2JqZWN0R3JvdXApOwogICAgICAgICAvLyBIYW5kbGUgZXJyb3IgdGhh
dCBtaWdodCBoYXZlIGhhcHBlbmVkIHdoaWxlIGRlc2NyaWJpbmcgcmVzdWx0LgogICAgICAgICBp
ZiAocmVzdWx0LnZhbHVlLmVycm9yVGV4dCkgewogICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0g
cmVzdWx0LnZhbHVlLmVycm9yVGV4dDsKQEAgLTY0NiwxMCArNjQ2LDEwIEBAIEluamVjdGVkU2Ny
aXB0LnBlcmZvcm1TZWFyY2ggPSBmdW5jdGlvbih3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KQogCiAg
ICAgICAgICAgICBub2RlW3NlYXJjaFJlc3VsdHNQcm9wZXJ0eV0gPSB0cnVlOwogICAgICAgICAg
ICAgSW5qZWN0ZWRTY3JpcHQuX3NlYXJjaFJlc3VsdHMucHVzaChub2RlKTsKLSAgICAgICAgICAg
IHZhciBub2RlSWQgPSBJbnNwZWN0b3JDb250cm9sbGVyLnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
bm9kZSwgZmFsc2UpOworICAgICAgICAgICAgdmFyIG5vZGVJZCA9IEluamVjdGVkU2NyaXB0SG9z
dC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUsIGZhbHNlKTsKICAgICAgICAgICAgIG5vZGVJ
ZHMucHVzaChub2RlSWQpOwogICAgICAgICB9Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIu
YWRkTm9kZXNUb1NlYXJjaFJlc3VsdChub2RlSWRzLmpvaW4oIiwiKSk7CisgICAgICAgIEluamVj
dGVkU2NyaXB0SG9zdC5hZGROb2Rlc1RvU2VhcmNoUmVzdWx0KG5vZGVJZHMuam9pbigiLCIpKTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBtYXRjaEV4YWN0SXRlbXMoZG9jKQpAQCAtODQ4LDcgKzg0
OCw3IEBAIEluamVjdGVkU2NyaXB0Lm9wZW5Jbkluc3BlY3RlZFdpbmRvdyA9IGZ1bmN0aW9uKHVy
bCkKIAogSW5qZWN0ZWRTY3JpcHQuZ2V0Q2FsbEZyYW1lcyA9IGZ1bmN0aW9uKCkKIHsKLSAgICB2
YXIgY2FsbEZyYW1lID0gSW5zcGVjdG9yQ29udHJvbGxlci5jdXJyZW50Q2FsbEZyYW1lKCk7Cisg
ICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCk7
CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODcxLDcg
Kzg3MSw3IEBAIEluamVjdGVkU2NyaXB0LmV2YWx1YXRlSW5DYWxsRnJhbWUgPSBmdW5jdGlvbihj
YWxsRnJhbWVJZCwgY29kZSwgb2JqZWN0R3JvdXApCiAKIEluamVjdGVkU2NyaXB0Ll9jYWxsRnJh
bWVGb3JJZCA9IGZ1bmN0aW9uKGlkKQogewotICAgIHZhciBjYWxsRnJhbWUgPSBJbnNwZWN0b3JD
b250cm9sbGVyLmN1cnJlbnRDYWxsRnJhbWUoKTsKKyAgICB2YXIgY2FsbEZyYW1lID0gSW5qZWN0
ZWRTY3JpcHRIb3N0LmN1cnJlbnRDYWxsRnJhbWUoKTsKICAgICB3aGlsZSAoLS1pZCA+PSAwICYm
IGNhbGxGcmFtZSkKICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICBy
ZXR1cm4gY2FsbEZyYW1lOwpAQCAtODc5LDcgKzg3OSw3IEBAIEluamVjdGVkU2NyaXB0Ll9jYWxs
RnJhbWVGb3JJZCA9IGZ1bmN0aW9uKGlkKQogCiBJbmplY3RlZFNjcmlwdC5fY2xlYXJDb25zb2xl
TWVzc2FnZXMgPSBmdW5jdGlvbigpCiB7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlci5jbGVhck1l
c3NhZ2VzKHRydWUpOworICAgIEluamVjdGVkU2NyaXB0SG9zdC5jbGVhck1lc3NhZ2VzKHRydWUp
OwogfQogCiBJbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG8pCkBAIC04
OTAsMTQgKzg5MCwxNCBAQCBJbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9u
KG8pCiAgICAgdmFyIGluc3BlY3RlZFdpbmRvdyA9IEluamVjdGVkU2NyaXB0Ll93aW5kb3coKTsK
ICAgICBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5sb2cobyk7CiAgICAgaWYgKE9iamVjdC50eXBl
KG8pID09PSAibm9kZSIpIHsKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5wdXNoTm9kZVBh
dGhUb0Zyb250ZW5kKG8sIHRydWUpOworICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QucHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChvLCB0cnVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2gg
KE9iamVjdC5kZXNjcmliZShvKSkgewogICAgICAgICAgICAgY2FzZSAiRGF0YWJhc2UiOgotICAg
ICAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc2VsZWN0RGF0YWJhc2Uobyk7CisgICAg
ICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LnNlbGVjdERhdGFiYXNlKG8pOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiU3RvcmFnZSI6Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zZWxlY3RET01TdG9yYWdlKG8pOworICAgICAgICAg
ICAgICAgIEluamVjdGVkU2NyaXB0SG9zdC5zZWxlY3RET01TdG9yYWdlKG8pOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtOTA2LDEwICs5MDYsMTAgQEAgSW5q
ZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QgPSBmdW5jdGlvbihvKQogSW5qZWN0ZWRTY3JpcHQu
X2NvcHkgPSBmdW5jdGlvbihvKQogewogICAgIGlmIChPYmplY3QudHlwZShvKSA9PT0gIm5vZGUi
KSB7Ci0gICAgICAgIHZhciBub2RlSWQgPSBJbnNwZWN0b3JDb250cm9sbGVyLnB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQobywgZmFsc2UpOwotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmNvcHlO
b2RlKG5vZGVJZCk7CisgICAgICAgIHZhciBub2RlSWQgPSBJbmplY3RlZFNjcmlwdEhvc3QucHVz
aE5vZGVQYXRoVG9Gcm9udGVuZChvLCBmYWxzZSk7CisgICAgICAgIEluamVjdGVkU2NyaXB0SG9z
dC5jb3B5Tm9kZShub2RlSWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEluc3BlY3RvckNvbnRy
b2xsZXIuY29weVRleHQobyk7CisgICAgICAgIEluamVjdGVkU2NyaXB0SG9zdC5jb3B5VGV4dChv
KTsKICAgICB9CiB9CiAKQEAgLTk4Niw5ICs5ODYsOSBAQCBJbmplY3RlZFNjcmlwdC5fZW5zdXJl
Q29tbWFuZExpbmVBUElJbnN0YWxsZWQgPSBmdW5jdGlvbihldmFsRnVuY3Rpb24sIGV2YWxPYmpl
YwogICAgICAgICBnZXQgJDQoKSB7IHJldHVybiBjb25zb2xlLl9pbnNwZWN0b3JDb21tYW5kTGlu
ZUFQSS5faW5zcGVjdGVkTm9kZXNbNF0gfSwgXG5cCiAgICAgfTsiKTsKIAotICAgIGluc3BlY3Rv
ckNvbW1hbmRMaW5lQVBJLmNsZWFyID0gSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2so
SW5qZWN0ZWRTY3JpcHQuX2NsZWFyQ29uc29sZU1lc3NhZ2VzKTsKLSAgICBpbnNwZWN0b3JDb21t
YW5kTGluZUFQSS5pbnNwZWN0ID0gSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2soSW5q
ZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QpOwotICAgIGluc3BlY3RvckNvbW1hbmRMaW5lQVBJ
LmNvcHkgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhJbmplY3RlZFNjcmlwdC5f
Y29weSk7CisgICAgaW5zcGVjdG9yQ29tbWFuZExpbmVBUEkuY2xlYXIgPSBJbmplY3RlZFNjcmlw
dEhvc3Qud3JhcENhbGxiYWNrKEluamVjdGVkU2NyaXB0Ll9jbGVhckNvbnNvbGVNZXNzYWdlcyk7
CisgICAgaW5zcGVjdG9yQ29tbWFuZExpbmVBUEkuaW5zcGVjdCA9IEluamVjdGVkU2NyaXB0SG9z
dC53cmFwQ2FsbGJhY2soSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QpOworICAgIGluc3Bl
Y3RvckNvbW1hbmRMaW5lQVBJLmNvcHkgPSBJbmplY3RlZFNjcmlwdEhvc3Qud3JhcENhbGxiYWNr
KEluamVjdGVkU2NyaXB0Ll9jb3B5KTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQuX3Jlc29sdmVPYmpl
Y3QgPSBmdW5jdGlvbihvYmplY3RQcm94eSkKQEAgLTEwMTIsMTQgKzEwMTIsMTQgQEAgSW5qZWN0
ZWRTY3JpcHQuX3dpbmRvdyA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBUT0RPOiByZXBsYWNlIHdp
dGggJ3JldHVybiB3aW5kb3c7JyBvbmNlIHRoaXMgc2NyaXB0IGlzIGluamVjdGVkIGludG8KICAg
ICAvLyB0aGUgcGFnZSdzIGNvbnRleHQuCi0gICAgcmV0dXJuIEluc3BlY3RvckNvbnRyb2xsZXIu
aW5zcGVjdGVkV2luZG93KCk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0
ZWRXaW5kb3coKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZCA9IGZ1bmN0aW9uKG5v
ZGVJZCkKIHsKICAgICBpZiAoIW5vZGVJZCkKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgcmV0
dXJuIEluc3BlY3RvckNvbnRyb2xsZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0SG9zdC5ub2RlRm9ySWQobm9kZUlkKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQu
X29iamVjdEZvcklkID0gZnVuY3Rpb24ob2JqZWN0SWQpCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBJ
bmplY3RlZFNjcmlwdC5fb2JqZWN0Rm9ySWQgPSBmdW5jdGlvbihvYmplY3RJZCkKICAgICBpZiAo
dHlwZW9mIG9iamVjdElkID09PSAibnVtYmVyIikgewogICAgICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQuX25vZGVGb3JJZChvYmplY3RJZCk7CiAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0
SWQgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JDb250cm9sbGVyLnVu
d3JhcE9iamVjdChvYmplY3RJZCk7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qu
dW53cmFwT2JqZWN0KG9iamVjdElkKTsKICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmplY3RJZCA9
PT0gIm9iamVjdCIpIHsKICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0Ll9j
YWxsRnJhbWVGb3JJZChvYmplY3RJZC5jYWxsRnJhbWUpOwogICAgICAgICBpZiAob2JqZWN0SWQu
dGhpc09iamVjdCkKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIEluamVjdGVkU2NyaXB0LnB1c2hOb2Rl
VG9Gcm9udGVuZCA9IGZ1bmN0aW9uKG9iamVjdFByb3h5KQogICAgIHZhciBvYmplY3QgPSBJbmpl
Y3RlZFNjcmlwdC5fcmVzb2x2ZU9iamVjdChvYmplY3RQcm94eSk7CiAgICAgaWYgKCFvYmplY3Qg
fHwgT2JqZWN0LnR5cGUob2JqZWN0KSAhPT0gIm5vZGUiKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIEluc3BlY3RvckNvbnRyb2xsZXIucHVzaE5vZGVQYXRoVG9Gcm9udGVuZChv
YmplY3QsIGZhbHNlKTsKKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQob2JqZWN0LCBmYWxzZSk7CiB9CiAKIC8vIENhbGxlZCBmcm9tIHdpdGhpbiBJ
bnNwZWN0b3JDb250cm9sbGVyIG9uIHRoZSAnaW5zcGVjdGVkIHBhZ2UnIHNpZGUuCkBAIC0xMTMw
LDIzICsxMTMwLDIzIEBAIEluamVjdGVkU2NyaXB0LmV4ZWN1dGVTcWwgPSBmdW5jdGlvbihjYWxs
SWQsIGRhdGFiYXNlSWQsIHF1ZXJ5KQogICAgICAgICAgICAgICAgIGRhdGFbY29sdW1uSWRlbnRp
Zmllcl0gPSBTdHJpbmcodGV4dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
SW5zcGVjdG9yQ29udHJvbGxlci5yZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoY2Fs
bElkLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBmYWxzZSk7CisgICAgICAgIEluamVjdGVkU2Ny
aXB0SG9zdC5yZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoY2FsbElkLCBKU09OLnN0
cmluZ2lmeShyZXN1bHQpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZXJyb3JDYWxs
YmFjayh0eCwgZXJyb3IpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnJlcG9y
dERpZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChjYWxsSWQsIEpTT04uc3RyaW5naWZ5KGVycm9y
KSwgZmFsc2UpOworICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QucmVwb3J0RGlkRGlzcGF0Y2hP
bkluamVjdGVkU2NyaXB0KGNhbGxJZCwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpLCBmYWxzZSk7CiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gcXVlcnlUcmFuc2FjdGlvbih0eCkKICAgICB7Ci0gICAgICAg
IHR4LmV4ZWN1dGVTcWwocXVlcnksIG51bGwsIEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxi
YWNrKHN1Y2Nlc3NDYWxsYmFjayksIEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKGVy
cm9yQ2FsbGJhY2spKTsKKyAgICAgICAgdHguZXhlY3V0ZVNxbChxdWVyeSwgbnVsbCwgSW5qZWN0
ZWRTY3JpcHRIb3N0LndyYXBDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spLCBJbmplY3RlZFNjcmlw
dEhvc3Qud3JhcENhbGxiYWNrKGVycm9yQ2FsbGJhY2spKTsKICAgICB9CiAKLSAgICB2YXIgZGF0
YWJhc2UgPSBJbnNwZWN0b3JDb250cm9sbGVyLmRhdGFiYXNlRm9ySWQoZGF0YWJhc2VJZCk7Cisg
ICAgdmFyIGRhdGFiYXNlID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmRhdGFiYXNlRm9ySWQoZGF0YWJh
c2VJZCk7CiAgICAgaWYgKCFkYXRhYmFzZSkKICAgICAgICAgZXJyb3JDYWxsYmFjayhudWxsLCB7
IGNvZGUgOiAyIH0pOyAgLy8gUmV0dXJuIGFzIHVuZXhwZWN0ZWQgdmVyc2lvbi4KLSAgICBkYXRh
YmFzZS50cmFuc2FjdGlvbihJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhxdWVyeVRy
YW5zYWN0aW9uKSwgSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2soZXJyb3JDYWxsYmFj
aykpOworICAgIGRhdGFiYXNlLnRyYW5zYWN0aW9uKEluamVjdGVkU2NyaXB0SG9zdC53cmFwQ2Fs
bGJhY2socXVlcnlUcmFuc2FjdGlvbiksIEluamVjdGVkU2NyaXB0SG9zdC53cmFwQ2FsbGJhY2so
ZXJyb3JDYWxsYmFjaykpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMKaW5kZXggYzZkNGI2
NS4uMTI1ZmM5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVj
dGVkU2NyaXB0QWNjZXNzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jbmpl
Y3RlZFNjcmlwdEFjY2Vzcy5qcwpAQCAtNDcsNyArNDcsNyBAQCBJbmplY3RlZFNjcmlwdEFjY2Vz
cy5faW5zdGFsbEhhbmRsZXIgPSBmdW5jdGlvbihtZXRob2ROYW1lLCBhc3luYykKICAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3Iu
Q29uc29sZVRleHRNZXNzYWdlKCJFcnJvciBkaXNwYXRjaGluZzogIiArIG1ldGhvZE5hbWUpKTsK
ICAgICAgICAgfQogICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndy
YXAobXlDYWxsYmFjayk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlzcGF0Y2hPbklu
amVjdGVkU2NyaXB0KGNhbGxJZCwgbWV0aG9kTmFtZSwgYXJnc1N0cmluZywgISFhc3luYyk7Cisg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwg
bWV0aG9kTmFtZSwgYXJnc1N0cmluZywgISFhc3luYyk7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MTBiMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKQEAg
LTAsMCArMSwyOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitpZiAoIXdpbmRvdy5JbnNwZWN0b3JCYWNrZW5kKSB7CisKK1dlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1YiA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9zZWFy
Y2hpbmdGb3JOb2RlID0gZmFsc2U7CisgICAgdGhpcy5fYXR0YWNoZWRXaW5kb3dIZWlnaHQgPSAw
OworICAgIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCA9IHRydWU7CisgICAgdGhpcy5fcHJvZmlsZXJF
bmFibGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IGZhbHNl
OworICAgIHRoaXMuX3RpbWVsaW5lRW5hYmxlZCA9IGZhbHNlOworICAgIHRoaXMuX3NldHRpbmdz
ID0ge307Cit9CisKK1dlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUg
PSB7CisgICAgd3JhcENhbGxiYWNrOiBmdW5jdGlvbihmdW5jKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZ1bmM7CisgICAgfSwKKworICAgIHBsYXRmb3JtOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gIm1hYy1sZW9wYXJkIjsKKyAgICB9LAorCisgICAgcG9ydDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICB9LAorCisKKyAgICBjbG9z
ZVdpbmRvdzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9
IGZhbHNlOworICAgIH0sCisKKyAgICBhdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwK
KworICAgIGRldGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAgc3RvcmVMYXN0
QWN0aXZlUGFuZWw6IGZ1bmN0aW9uKHBhbmVsKQorICAgIHsKKyAgICB9LAorCisgICAgY2xlYXJN
ZXNzYWdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAgc2VhcmNoaW5nRm9yTm9k
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaGluZ0Zvck5v
ZGU7CisgICAgfSwKKworICAgIHNlYXJjaDogZnVuY3Rpb24oc291cmNlUm93LCBxdWVyeSkKKyAg
ICB7CisgICAgfSwKKworICAgIHRvZ2dsZU5vZGVTZWFyY2g6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3NlYXJjaGluZ0Zvck5vZGUgPSAhdGhpcy5fc2VhcmNoaW5nRm9yTm9kZTsK
KyAgICB9LAorCisgICAgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6IGZ1bmN0aW9uKGhlaWdodCkK
KyAgICB7CisgICAgfSwKKworICAgIG1vdmVCeVVucmVzdHJpY3RlZDogZnVuY3Rpb24oeCwgeSkK
KyAgICB7CisgICAgfSwKKworCisgICAgYWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lOiBmdW5jdGlv
bihpZGVudGlmaWVyLCBlbGVtZW50KQorICAgIHsKKyAgICB9LAorCisgICAgYWRkU291cmNlVG9G
cmFtZTogZnVuY3Rpb24obWltZVR5cGUsIHNvdXJjZSwgZWxlbWVudCkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgZ2V0UmVzb3VyY2VEb2N1bWVudE5vZGU6IGZ1
bmN0aW9uKGlkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
IH0sCisKKyAgICBoaWdobGlnaHRET01Ob2RlOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICB9
LAorCisgICAgaGlkZURPTU5vZGVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwK
KworICAgIGluc3BlY3RlZFdpbmRvdzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHdpbmRvdzsKKyAgICB9LAorCisgICAgbG9hZGVkOiBmdW5jdGlvbigpCisgICAgeworICAgIH0s
CisKKyAgICBsb2NhbGl6ZWRTdHJpbmdzVVJMOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOworICAgIH0sCisKKyAgICB3aW5kb3dVbmxvYWRpbmc6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgaGlkZGVuUGFu
ZWxzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfSwKKworICAg
IGRlYnVnZ2VyRW5hYmxlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2RlYnVnZ2VyRW5hYmxlZDsKKyAgICB9LAorCisgICAgZW5hYmxlUmVzb3VyY2VUcmFja2luZzog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQg
PSB0cnVlOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQo
KTsKKyAgICB9LAorCisgICAgZGlzYWJsZVJlc291cmNlVHJhY2tpbmc6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyYWNraW5nV2FzRGlzYWJsZWQoKTsKKyAgICB9LAor
CisgICAgcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZDsKKyAgICB9LAorCisgICAgZW5h
YmxlRGVidWdnZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyRW5h
YmxlZCA9IHRydWU7CisgICAgfSwKKworICAgIGRpc2FibGVEZWJ1Z2dlcjogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJFbmFibGVkID0gZmFsc2U7CisgICAgfSwKKwor
ICAgIGFkZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lLCBjb25kaXRpb24pCisg
ICAgeworICAgIH0sCisKKyAgICByZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwg
bGluZSkKKyAgICB7CisgICAgfSwKKworICAgIHVwZGF0ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNv
dXJjZUlELCBsaW5lLCBjb25kaXRpb24pCisgICAgeworICAgIH0sCisKKyAgICBwYXVzZUluRGVi
dWdnZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIHBhdXNlT25FeGNlcHRpb25z
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAg
IHNldFBhdXNlT25FeGNlcHRpb25zOiBmdW5jdGlvbih2YWx1ZSkKKyAgICB7CisgICAgfSwKKwor
ICAgIHJlc3VtZURlYnVnZ2VyOiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBwcm9m
aWxlckVuYWJsZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0sCisKKyAgICBlbmFibGVQcm9maWxlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5fcHJvZmlsZXJFbmFibGVkID0gdHJ1ZTsKKyAgICB9LAorCisgICAgZGlzYWJsZVByb2ZpbGVy
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9wcm9maWxlckVuYWJsZWQgPSBmYWxz
ZTsKKyAgICB9LAorCisgICAgc3RhcnRQcm9maWxpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
fSwKKworICAgIHN0b3BQcm9maWxpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAg
IGdldFByb2ZpbGVIZWFkZXJzOiBmdW5jdGlvbihjYWxsSWQpCisgICAgeworICAgICAgICBXZWJJ
bnNwZWN0b3IuZGlkR2V0UHJvZmlsZUhlYWRlcnMoY2FsbElkLCBbXSk7CisgICAgfSwKKworICAg
IGdldFByb2ZpbGU6IGZ1bmN0aW9uKGNhbGxJZCwgdWlkKQorICAgIHsKKyAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5fX2Z1bGxQcm9maWxlcyAmJiAodWlkIGluIFdlYkluc3BlY3Rvci5fX2Z1bGxQ
cm9maWxlcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kaWRHZXRQcm9m
aWxlKGNhbGxJZCwgV2ViSW5zcGVjdG9yLl9fZnVsbFByb2ZpbGVzW3VpZF0pOworICAgICAgICB9
CisgICAgfSwKKworICAgIHRha2VIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
fSwKKworICAgIGRhdGFiYXNlVGFibGVOYW1lczogZnVuY3Rpb24oZGF0YWJhc2UpCisgICAgewor
ICAgICAgICByZXR1cm4gW107CisgICAgfSwKKworICAgIHN0ZXBJbnRvU3RhdGVtZW50SW5EZWJ1
Z2dlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAgc3RlcE91dE9mRnVuY3Rpb25J
bkRlYnVnZ2VyOiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBzdGVwT3ZlclN0YXRl
bWVudEluRGVidWdnZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIHNldFNldHRp
bmc6IGZ1bmN0aW9uKHNldHRpbmcsIHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2V0dGlu
Z3Nbc2V0dGluZ10gPSB2YWx1ZTsKKyAgICB9LAorCisgICAgZGlzcGF0Y2hPbkluamVjdGVkU2Ny
aXB0OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICByZWxlYXNlV3JhcHBlck9iamVj
dEdyb3VwOiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBzZXR0aW5nOiBmdW5jdGlv
bihzZXR0aW5nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzW3NldHRpbmdd
OworICAgIH0KK30KKworSW5zcGVjdG9yQmFja2VuZCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5zcGVj
dG9yQmFja2VuZFN0dWIoKTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luc3BlY3RvckNvbnRyb2xsZXJTdHViLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luc3BlY3RvckNvbnRyb2xsZXJTdHViLmpzCmluZGV4IGY3OGM5YmQuLmU2OWRlMjkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JDb250cm9s
bGVyU3R1Yi5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQ29u
dHJvbGxlclN0dWIuanMKQEAgLTEsMjk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pZiAoIXdpbmRvdy5JbnNwZWN0b3JDb250
cm9sbGVyKSB7Ci0KLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JDb250cm9sbGVyU3R1YiA9IGZ1bmN0
aW9uKCkKLXsKLSAgICB0aGlzLl9zZWFyY2hpbmdGb3JOb2RlID0gZmFsc2U7Ci0gICAgdGhpcy5f
d2luZG93VmlzaWJsZSA9IHRydWU7Ci0gICAgdGhpcy5fYXR0YWNoZWRXaW5kb3dIZWlnaHQgPSAw
OwotICAgIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCA9IHRydWU7Ci0gICAgdGhpcy5fcHJvZmlsZXJF
bmFibGVkID0gdHJ1ZTsKLSAgICB0aGlzLl9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IGZhbHNl
OwotICAgIHRoaXMuX3RpbWVsaW5lRW5hYmxlZCA9IGZhbHNlOwotICAgIHRoaXMuX3NldHRpbmdz
ID0ge307Ci19Ci0KLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JDb250cm9sbGVyU3R1Yi5wcm90b3R5
cGUgPSB7Ci0gICAgd3JhcENhbGxiYWNrOiBmdW5jdGlvbihmdW5jKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGZ1bmM7Ci0gICAgfSwKLQotICAgIGlzV2luZG93VmlzaWJsZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvd1Zpc2libGU7Ci0gICAgfSwKLQotICAg
IHBsYXRmb3JtOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIm1hYy1sZW9wYXJk
IjsKLSAgICB9LAotCi0gICAgcG9ydDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
ICJ1bmtub3duIjsKLSAgICB9LAotCi0KLSAgICBjbG9zZVdpbmRvdzogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IGZhbHNlOwotICAgIH0sCi0KLSAgICBh
dHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGRldGFjaDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICB9LAotCi0gICAgc3RvcmVMYXN0QWN0aXZlUGFuZWw6IGZ1bmN0aW9uKHBh
bmVsKQotICAgIHsKLSAgICB9LAotCi0gICAgY2xlYXJNZXNzYWdlczogZnVuY3Rpb24oKQotICAg
IHsKLSAgICB9LAotCi0gICAgc2VhcmNoaW5nRm9yTm9kZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaGluZ0Zvck5vZGU7Ci0gICAgfSwKLQotICAgIHNlYXJj
aDogZnVuY3Rpb24oc291cmNlUm93LCBxdWVyeSkKLSAgICB7Ci0gICAgfSwKLQotICAgIHRvZ2ds
ZU5vZGVTZWFyY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3NlYXJjaGluZ0Zv
ck5vZGUgPSAhdGhpcy5fc2VhcmNoaW5nRm9yTm9kZTsKLSAgICB9LAotCi0gICAgc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQ6IGZ1bmN0aW9uKGhlaWdodCkKLSAgICB7Ci0gICAgfSwKLQotICAgIG1v
dmVCeVVucmVzdHJpY3RlZDogZnVuY3Rpb24oeCwgeSkKLSAgICB7Ci0gICAgfSwKLQotCi0gICAg
YWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lOiBmdW5jdGlvbihpZGVudGlmaWVyLCBlbGVtZW50KQot
ICAgIHsKLSAgICB9LAotCi0gICAgYWRkU291cmNlVG9GcmFtZTogZnVuY3Rpb24obWltZVR5cGUs
IHNvdXJjZSwgZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAot
Ci0gICAgZ2V0UmVzb3VyY2VEb2N1bWVudE5vZGU6IGZ1bmN0aW9uKGlkZW50aWZpZXIpCi0gICAg
ewotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICBoaWdobGlnaHRET01O
b2RlOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICB9LAotCi0gICAgaGlkZURPTU5vZGVIaWdo
bGlnaHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGluc3BlY3RlZFdpbmRvdzog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdpbmRvdzsKLSAgICB9LAotCi0gICAg
bG9hZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBsb2NhbGl6ZWRTdHJpbmdz
VVJMOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0s
Ci0KLSAgICB3aW5kb3dVbmxvYWRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9LAotCi0gICAgaGlkZGVuUGFuZWxzOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSwKLQotICAgIGRlYnVnZ2VyRW5hYmxlZDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZDsKLSAgICB9
LAotCi0gICAgZW5hYmxlUmVzb3VyY2VUcmFja2luZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPSB0cnVlOwotICAgICAgICBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQoKTsKLSAgICB9LAotCi0gICAgZGlzYWJs
ZVJlc291cmNlVHJhY2tpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc291
cmNlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyYWNraW5nV2FzRGlzYWJsZWQoKTsKLSAgICB9LAotCi0gICAgcmVzb3VyY2VUcmFja2luZ0Vu
YWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZDsKLSAgICB9LAotCi0gICAgZW5hYmxlRGVidWdnZXI6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCA9IHRydWU7Ci0gICAgfSwKLQot
ICAgIGRpc2FibGVEZWJ1Z2dlcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fZGVi
dWdnZXJFbmFibGVkID0gZmFsc2U7Ci0gICAgfSwKLQotICAgIGFkZEJyZWFrcG9pbnQ6IGZ1bmN0
aW9uKHNvdXJjZUlELCBsaW5lLCBjb25kaXRpb24pCi0gICAgewotICAgIH0sCi0KLSAgICByZW1v
dmVCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZSkKLSAgICB7Ci0gICAgfSwKLQot
ICAgIHVwZGF0ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lLCBjb25kaXRpb24p
Ci0gICAgewotICAgIH0sCi0KLSAgICBwYXVzZUluRGVidWdnZXI6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgfSwKLQotICAgIHBhdXNlT25FeGNlcHRpb25zOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNldFBhdXNlT25FeGNlcHRpb25zOiBm
dW5jdGlvbih2YWx1ZSkKLSAgICB7Ci0gICAgfSwKLQotICAgIHJlc3VtZURlYnVnZ2VyOiBmdW5j
dGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBwcm9maWxlckVuYWJsZWQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBlbmFibGVQcm9maWxl
cjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmlsZXJFbmFibGVkID0gdHJ1
ZTsKLSAgICB9LAotCi0gICAgZGlzYWJsZVByb2ZpbGVyOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9wcm9maWxlckVuYWJsZWQgPSBmYWxzZTsKLSAgICB9LAotCi0gICAgc3RhcnRQ
cm9maWxpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHN0b3BQcm9maWxpbmc6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGdldFByb2ZpbGVIZWFkZXJzOiBmdW5j
dGlvbihjYWxsSWQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZGlkR2V0UHJvZmlsZUhl
YWRlcnMoY2FsbElkLCBbXSk7Ci0gICAgfSwKLQotICAgIGdldFByb2ZpbGU6IGZ1bmN0aW9uKGNh
bGxJZCwgdWlkKQotICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5fX2Z1bGxQcm9maWxl
cyAmJiAodWlkIGluIFdlYkluc3BlY3Rvci5fX2Z1bGxQcm9maWxlcykpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5kaWRHZXRQcm9maWxlKGNhbGxJZCwgV2ViSW5zcGVjdG9y
Ll9fZnVsbFByb2ZpbGVzW3VpZF0pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHRha2VIZWFw
U25hcHNob3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGRhdGFiYXNlVGFibGVO
YW1lczogZnVuY3Rpb24oZGF0YWJhc2UpCi0gICAgewotICAgICAgICByZXR1cm4gW107Ci0gICAg
fSwKLQotICAgIHN0ZXBJbnRvU3RhdGVtZW50SW5EZWJ1Z2dlcjogZnVuY3Rpb24oKQotICAgIHsK
LSAgICB9LAotCi0gICAgc3RlcE91dE9mRnVuY3Rpb25JbkRlYnVnZ2VyOiBmdW5jdGlvbigpCi0g
ICAgewotICAgIH0sCi0KLSAgICBzdGVwT3ZlclN0YXRlbWVudEluRGVidWdnZXI6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHNldFNldHRpbmc6IGZ1bmN0aW9uKHNldHRpbmcsIHZh
bHVlKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2V0dGluZ3Nbc2V0dGluZ10gPSB2YWx1ZTsKLSAg
ICB9LAotCi0gICAgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0OiBmdW5jdGlvbigpCi0gICAgewot
ICAgIH0sCi0KLSAgICByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwOiBmdW5jdGlvbigpCi0gICAg
ewotICAgIH0sCi0KLSAgICBzZXR0aW5nOiBmdW5jdGlvbihzZXR0aW5nKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzW3NldHRpbmddOwotICAgIH0KLX0KLQotd2luZG93Lklu
c3BlY3RvckNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkluc3BlY3RvckNvbnRyb2xsZXJT
dHViKCk7Ci0KLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lu
c3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZmFjZWE0ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCkBAIC0wLDAgKzEsMTExIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaWYgKCF3
aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0KSB7CisKK1dlYkluc3BlY3Rvci5JbnNwZWN0b3JG
cm9udGVuZEhvc3RTdHViID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2F0dGFjaGVkV2luZG93
SGVpZ2h0ID0gMDsKKyAgICB0aGlzLl9zZXR0aW5ncyA9IHt9OworfQorCitXZWJJbnNwZWN0b3Iu
SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUgPSB7CisgICAgcGxhdGZvcm06IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAibWFjLWxlb3BhcmQiOworICAgIH0sCisK
KyAgICBwb3J0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gInVua25vd24iOwor
ICAgIH0sCisKKyAgICBjbG9zZVdpbmRvdzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5fd2luZG93VmlzaWJsZSA9IGZhbHNlOworICAgIH0sCisKKyAgICBhdHRhY2g6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgfSwKKworICAgIGRldGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9
LAorCisgICAgc2VhcmNoOiBmdW5jdGlvbihzb3VyY2VSb3csIHF1ZXJ5KQorICAgIHsKKyAgICB9
LAorCisgICAgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6IGZ1bmN0aW9uKGhlaWdodCkKKyAgICB7
CisgICAgfSwKKworICAgIG1vdmVXaW5kb3dCeTogZnVuY3Rpb24oeCwgeSkKKyAgICB7CisgICAg
fSwKKworICAgIGFkZFJlc291cmNlU291cmNlVG9GcmFtZTogZnVuY3Rpb24oaWRlbnRpZmllciwg
ZWxlbWVudCkKKyAgICB7CisgICAgfSwKKworICAgIGFkZFNvdXJjZVRvRnJhbWU6IGZ1bmN0aW9u
KG1pbWVUeXBlLCBzb3VyY2UsIGVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfSwKKworICAgIGxvYWRlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAg
bG9jYWxpemVkU3RyaW5nc1VSTDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKKyAgICB9LAorCisgICAgaGlkZGVuUGFuZWxzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gIiI7CisgICAgfSwKKworICAgIHNldFNldHRpbmc6IGZ1bmN0aW9uKHNl
dHRpbmcsIHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2V0dGluZ3Nbc2V0dGluZ10gPSB2
YWx1ZTsKKyAgICB9LAorCisgICAgc2V0dGluZzogZnVuY3Rpb24oc2V0dGluZykKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zZXR0aW5nc1tzZXR0aW5nXTsKKyAgICB9Cit9CisKK0luc3Bl
Y3RvckZyb250ZW5kSG9zdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0
U3R1YigpOworCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMK
aW5kZXggMmIxZDIzNi4uYzE2NGU5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlVmlldy5qcwpAQCAtOTUsNyArOTUsNyBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZp
ZXcgPSBmdW5jdGlvbihwcm9maWxlKQogICAgIH0KIAogICAgIHZhciBjYWxsSWQgPSBXZWJJbnNw
ZWN0b3IuQ2FsbGJhY2sud3JhcChwcm9maWxlQ2FsbGJhY2spOwotICAgIEluc3BlY3RvckNvbnRy
b2xsZXIuZ2V0UHJvZmlsZShjYWxsSWQsIHRoaXMucHJvZmlsZS51aWQpOworICAgIEluc3BlY3Rv
ckJhY2tlbmQuZ2V0UHJvZmlsZShjYWxsSWQsIHRoaXMucHJvZmlsZS51aWQpOwogfQogCiBXZWJJ
bnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewpAQCAtNTk0LDkgKzU5NCw5IEBA
IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3JlY29yZGluZyA9ICF0aGlzLl9yZWNvcmRpbmc7CiAKICAgICAgICAgaWYgKHRoaXMuX3JlY29y
ZGluZykKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc3RhcnRQcm9maWxpbmcoKTsK
KyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc3RhcnRQcm9maWxpbmcoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zdG9wUHJvZmlsaW5nKCk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnN0b3BQcm9maWxpbmcoKTsKICAgICB9LAogCiAg
ICAgc2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oaXNQcm9maWxpbmcpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGFkZjBhMjkuLmIyNzZl
Y2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVs
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCkBA
IC00MDAsNyArNDAwLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0g
ewogICAgIF91cGRhdGVJbnRlcmZhY2U6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIEZJ
WE1FOiBSZXBsYWNlIFByb2ZpbGVUeXBlLXNwZWNpZmljIGJ1dHRvbiB2aXNpYmlsaXR5IGNoYW5n
ZXMgYnkgYSBzaW5nbGUgUHJvZmlsZVR5cGUtYWdub3N0aWMgImNvbWJvLWJ1dHRvbiIgdmlzaWJp
bGl0eSBjaGFuZ2UuCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyLnByb2ZpbGVyRW5h
YmxlZCgpKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnByb2ZpbGVyRW5hYmxlZCgp
KSB7CiAgICAgICAgICAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi50aXRsZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUHJvZmlsaW5nIGVuYWJsZWQuIENsaWNrIHRvIGRpc2FibGUuIik7CiAg
ICAgICAgICAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi50b2dnbGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgIGZvciAodmFyIHR5cGVJZCBpbiB0aGlzLl9wcm9maWxlVHlwZUJ1dHRvbnNCeUlkTWFw
KQpAQCAtNDE5LDE3ICs0MTksMTcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlID0gewogCiAgICAgX2VuYWJsZVByb2ZpbGluZzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIucHJvZmlsZXJFbmFibGVkKCkpCisgICAgICAgIGlm
IChJbnNwZWN0b3JCYWNrZW5kLnByb2ZpbGVyRW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0aGlzLl90b2dnbGVQcm9maWxpbmcodGhpcy5wYW5lbEVuYWJsZXJWaWV3LmFs
d2F5c0VuYWJsZWQpOwogICAgIH0sCiAKICAgICBfdG9nZ2xlUHJvZmlsaW5nOiBmdW5jdGlvbihv
cHRpb25hbEFsd2F5cykKICAgICB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyLnBy
b2ZpbGVyRW5hYmxlZCgpKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5kaXNhYmxl
UHJvZmlsZXIodHJ1ZSk7CisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnByb2ZpbGVyRW5h
YmxlZCgpKQorICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kaXNhYmxlUHJvZmlsZXIodHJ1
ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZW5hYmxl
UHJvZmlsZXIoISFvcHRpb25hbEFsd2F5cyk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmVuYWJsZVByb2ZpbGVyKCEhb3B0aW9uYWxBbHdheXMpOwogICAgIH0sCiAKICAgICBfcG9wdWxh
dGVQcm9maWxlczogZnVuY3Rpb24oKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIFdlYkluc3BlY3Rvci5Q
cm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBjYWxs
SWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChwb3B1bGF0ZUNhbGxiYWNrKTsKLSAgICAg
ICAgSW5zcGVjdG9yQ29udHJvbGxlci5nZXRQcm9maWxlSGVhZGVycyhjYWxsSWQpOworICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLmdldFByb2ZpbGVIZWFkZXJzKGNhbGxJZCk7CiAKICAgICAgICAg
ZGVsZXRlIHRoaXMuX3Nob3VsZFBvcHVsYXRlUHJvZmlsZXM7CiAgICAgfSwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCAzMTA0ZDEzLi4xMjFl
YmE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpz
CkBAIC0zNDksNyArMzQ5LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB0aGlzLnN1bW1hcnlCYXIucmVzZXQoKTsKIAotICAgICAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlci5yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCgpKSB7CisgICAgICAg
IGlmIChJbnNwZWN0b3JCYWNrZW5kLnJlc291cmNlVHJhY2tpbmdFbmFibGVkKCkpIHsKICAgICAg
ICAgICAgIHRoaXMuZW5hYmxlVG9nZ2xlQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZXNvdXJjZSB0cmFja2luZyBlbmFibGVkLiBDbGljayB0byBkaXNhYmxlLiIpOwogICAg
ICAgICAgICAgdGhpcy5lbmFibGVUb2dnbGVCdXR0b24udG9nZ2xlZCA9IHRydWU7CiAgICAgICAg
ICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbi52aXNpYmxlID0gdHJ1ZTsKQEAgLTYxNiw3
ICs2MTYsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMuaXRlbXNUcmVlRWxlbWVudC5zbWFsbENoaWxkcmVuID0gIXRoaXMuaXRlbXNU
cmVlRWxlbWVudC5zbWFsbENoaWxkcmVuOwogICAgICAgICBQcmVmZXJlbmNlcy5yZXNvdXJjZXNM
YXJnZVJvd3MgPSAhUHJlZmVyZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dzOwotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLnNldFNldHRpbmcoInJlc291cmNlcy1sYXJnZS1yb3dzIiwgUHJlZmVy
ZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dzKTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LnNldFNldHRpbmcoInJlc291cmNlcy1sYXJnZS1yb3dzIiwgUHJlZmVyZW5jZXMucmVzb3VyY2Vz
TGFyZ2VSb3dzKTsKIAogICAgICAgICBpZiAodGhpcy5pdGVtc1RyZWVFbGVtZW50LnNtYWxsQ2hp
bGRyZW4pIHsKICAgICAgICAgICAgIHRoaXMuaXRlbXNHcmFwaHNFbGVtZW50LmFkZFN0eWxlQ2xh
c3MoInNtYWxsIik7CkBAIC02NzUsMjEgKzY3NSwyMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2VuYWJsZVJlc291cmNlVHJhY2tpbmc6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyLnJlc291cmNlVHJh
Y2tpbmdFbmFibGVkKCkpCisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnJlc291cmNlVHJh
Y2tpbmdFbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3RvZ2ds
ZVJlc291cmNlVHJhY2tpbmcodGhpcy5wYW5lbEVuYWJsZXJWaWV3LmFsd2F5c0VuYWJsZWQpOwog
ICAgIH0sCiAKICAgICBfdG9nZ2xlUmVzb3VyY2VUcmFja2luZzogZnVuY3Rpb24ob3B0aW9uYWxB
bHdheXMpCiAgICAgewotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlci5yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnJlc291cmNl
VHJhY2tpbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0
dG9uLnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuc29ydGluZ1NlbGVjdEVsZW1l
bnQudmlzaWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5kaXNh
YmxlUmVzb3VyY2VUcmFja2luZyh0cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
ZGlzYWJsZVJlc291cmNlVHJhY2tpbmcodHJ1ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbi52aXNpYmxlID0gdHJ1ZTsKICAgICAgICAg
ICAgIHRoaXMuc29ydGluZ1NlbGVjdEVsZW1lbnQudmlzaWJsZSA9IHRydWU7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JDb250cm9sbGVyLmVuYWJsZVJlc291cmNlVHJhY2tpbmcoISFvcHRpb25hbEFs
d2F5cyk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmVuYWJsZVJlc291cmNlVHJhY2tp
bmcoISFvcHRpb25hbEFsd2F5cyk7CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Vmlldy5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCmluZGV4IDEyNDE5MGMuLjM4MTU3YWMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCkBAIC01OSw3ICs1OSw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmF0
dGFjaCgpOwogCi0gICAgICAgIGlmICghSW5zcGVjdG9yQ29udHJvbGxlci5hZGRTb3VyY2VUb0Zy
YW1lKCJ0ZXh0L2phdmFzY3JpcHQiLCB0aGlzLnNjcmlwdC5zb3VyY2UsIHRoaXMuc291cmNlRnJh
bWUuZWxlbWVudCkpCisgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmFkZFNvdXJj
ZVRvRnJhbWUoInRleHQvamF2YXNjcmlwdCIsIHRoaXMuc2NyaXB0LnNvdXJjZSwgdGhpcy5zb3Vy
Y2VGcmFtZS5lbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBkZWxldGUg
dGhpcy5fZnJhbWVOZWVkc1NldHVwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzUGFuZWwuanMKaW5kZXggZDY5NTE2ZS4uOGIzMWE4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0yMzUsNyArMjM1LDcgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2aWV3LnZpc2libGUg
PSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAodGhpcy5fYXR0YWNoRGVidWdnZXJXaGVu
U2hvd24pIHsKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZW5hYmxlRGVidWdnZXIo
ZmFsc2UpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5lbmFibGVEZWJ1Z2dlcihmYWxz
ZSk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fYXR0YWNoRGVidWdnZXJXaGVuU2hvd247CiAg
ICAgICAgIH0KICAgICB9LApAQCAtMjkzLDcgKzI5Myw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9p
bnQoYnJlYWtwb2ludCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBpZiAoYnJlYWtwb2ludC5lbmFibGVkKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yQ29udHJvbGxlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQsIGJyZWFrcG9p
bnQubGluZSwgYnJlYWtwb2ludC5jb25kaXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQsIGJyZWFr
cG9pbnQubGluZSwgYnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDIxLDcgKzQyMSw3IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgIGF0dGFjaERlYnVnZ2VyV2hlblNob3duOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQp
IHsKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZW5hYmxlRGVidWdnZXIoZmFsc2Up
OworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5lbmFibGVEZWJ1Z2dlcihmYWxzZSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93
biA9IHRydWU7CiAgICAgICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFF1ZXJ5
OwogICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7CiAKLSAgICAgICAgaWYgKCFJbnNwZWN0
b3JDb250cm9sbGVyLmRlYnVnZ2VyRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICghSW5zcGVjdG9y
QmFja2VuZC5kZWJ1Z2dlckVuYWJsZWQoKSkgewogICAgICAgICAgICAgdGhpcy5fcGF1c2VkID0g
ZmFsc2U7CiAgICAgICAgICAgICB0aGlzLl93YWl0aW5nVG9QYXVzZSA9IGZhbHNlOwogICAgICAg
ICAgICAgdGhpcy5fc3RlcHBpbmcgPSBmYWxzZTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGNhblNob3dSZXNvdXJjZTog
ZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgewotICAgICAgICByZXR1cm4gcmVzb3VyY2UgJiYgcmVz
b3VyY2Uuc2NyaXB0cy5sZW5ndGggJiYgSW5zcGVjdG9yQ29udHJvbGxlci5kZWJ1Z2dlckVuYWJs
ZWQoKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlICYmIHJlc291cmNlLnNjcmlwdHMubGVuZ3Ro
ICYmIEluc3BlY3RvckJhY2tlbmQuZGVidWdnZXJFbmFibGVkKCk7CiAgICAgfSwKIAogICAgIHNo
b3dTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCwgbGluZSkKQEAgLTYwNiw3ICs2MDYsNyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgdXJsID0g
c2NyaXB0T3JSZXNvdXJjZS51cmwgfHwgc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkw7CiAgICAg
ICAgIGlmICh1cmwgJiYgIW9wdGlvbnMuaW5pdGlhbExvYWQpCi0gICAgICAgICAgICBJbnNwZWN0
b3JDb250cm9sbGVyLnNldFNldHRpbmcoIkxhc3RWaWV3ZWRTY3JpcHRGaWxlIiwgdXJsKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRTZXR0aW5nKCJMYXN0Vmlld2VkU2Ny
aXB0RmlsZSIsIHVybCk7CiAKICAgICAgICAgaWYgKCFvcHRpb25zLmZyb21CYWNrRm9yd2FyZEFj
dGlvbikgewogICAgICAgICAgICAgdmFyIG9sZEluZGV4ID0gdGhpcy5fY3VycmVudEJhY2tGb3J3
YXJkSW5kZXg7CkBAIC03MDksNyArNzA5LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gaWYgbm90IGZpcnN0
IGl0ZW0sIGNoZWNrIHRvIHNlZSBpZiB0aGlzIHdhcyB0aGUgbGFzdCB2aWV3ZWQKICAgICAgICAg
ICAgIHZhciB1cmwgPSBvcHRpb24ucmVwcmVzZW50ZWRPYmplY3QudXJsIHx8IG9wdGlvbi5yZXBy
ZXNlbnRlZE9iamVjdC5zb3VyY2VVUkw7Ci0gICAgICAgICAgICB2YXIgbGFzdFVSTCA9IEluc3Bl
Y3RvckNvbnRyb2xsZXIuc2V0dGluZygiTGFzdFZpZXdlZFNjcmlwdEZpbGUiKTsKKyAgICAgICAg
ICAgIHZhciBsYXN0VVJMID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldHRpbmcoIkxhc3RWaWV3
ZWRTY3JpcHRGaWxlIik7CiAgICAgICAgICAgICBpZiAodXJsICYmIHVybCA9PT0gbGFzdFVSTCkK
ICAgICAgICAgICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZShvcHRpb24ucmVwcmVz
ZW50ZWRPYmplY3QsIHtpbml0aWFsTG9hZDogdHJ1ZX0pOwogICAgICAgICB9CkBAIC03ODEsNyAr
NzgxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBf
dXBkYXRlUGF1c2VPbkV4Y2VwdGlvbnNCdXR0b246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmIChJbnNwZWN0b3JDb250cm9sbGVyLnBhdXNlT25FeGNlcHRpb25zKCkpIHsKKyAgICAgICAg
aWYgKEluc3BlY3RvckJhY2tlbmQucGF1c2VPbkV4Y2VwdGlvbnMoKSkgewogICAgICAgICAgICAg
dGhpcy5wYXVzZU9uRXhjZXB0aW9uQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEb24ndCBwYXVzZSBvbiBleGNlcHRpb25zLiIpOwogICAgICAgICAgICAgdGhpcy5wYXVzZU9u
RXhjZXB0aW9uQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewpAQCAtNzky
LDcgKzc5Miw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgX3VwZGF0ZURlYnVnZ2VyQnV0dG9uczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIuZGVidWdnZXJFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKElu
c3BlY3RvckJhY2tlbmQuZGVidWdnZXJFbmFibGVkKCkpIHsKICAgICAgICAgICAgIHRoaXMuZW5h
YmxlVG9nZ2xlQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1Z2dpbmcg
ZW5hYmxlZC4gQ2xpY2sgdG8gZGlzYWJsZS4iKTsKICAgICAgICAgICAgIHRoaXMuZW5hYmxlVG9n
Z2xlQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwogICAgICAgICAgICAgdGhpcy5wYXVzZU9uRXhjZXB0
aW9uQnV0dG9uLnZpc2libGUgPSB0cnVlOwpAQCAtODcxLDcgKzg3MSw3IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2VuYWJsZURlYnVnZ2luZzogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIuZGVidWdnZXJF
bmFibGVkKCkpCisgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmRlYnVnZ2VyRW5hYmxlZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl90b2dnbGVEZWJ1Z2dpbmcodGhp
cy5wYW5lbEVuYWJsZXJWaWV3LmFsd2F5c0VuYWJsZWQpOwogICAgIH0sCkBAIC04ODIsMTUgKzg4
MiwxNSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fd2FpdGluZ1RvUGF1c2UgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fc3RlcHBpbmcgPSBm
YWxzZTsKIAotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlci5kZWJ1Z2dlckVuYWJsZWQo
KSkKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlzYWJsZURlYnVnZ2VyKHRydWUp
OworICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5kZWJ1Z2dlckVuYWJsZWQoKSkKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGlzYWJsZURlYnVnZ2VyKHRydWUpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmVuYWJsZURlYnVnZ2VyKCEhb3B0
aW9uYWxBbHdheXMpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5lbmFibGVEZWJ1Z2dl
cighIW9wdGlvbmFsQWx3YXlzKTsKICAgICB9LAogCiAgICAgX3RvZ2dsZVBhdXNlT25FeGNlcHRp
b25zOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnNldFBh
dXNlT25FeGNlcHRpb25zKCFJbnNwZWN0b3JDb250cm9sbGVyLnBhdXNlT25FeGNlcHRpb25zKCkp
OworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFBhdXNlT25FeGNlcHRpb25zKCFJbnNwZWN0
b3JCYWNrZW5kLnBhdXNlT25FeGNlcHRpb25zKCkpOwogICAgICAgICB0aGlzLl91cGRhdGVQYXVz
ZU9uRXhjZXB0aW9uc0J1dHRvbigpOwogICAgIH0sCiAKQEAgLTg5OSwxMSArODk5LDExIEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5f
cGF1c2VkKSB7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IHRoaXMuX3dhaXRpbmdUb1BhdXNlID0gZmFsc2U7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyLnJlc3VtZURlYnVnZ2VyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
c3VtZURlYnVnZ2VyKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl9zdGVw
cGluZyA9IGZhbHNlOwogICAgICAgICAgICAgdGhpcy5fd2FpdGluZ1RvUGF1c2UgPSB0cnVlOwot
ICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5wYXVzZUluRGVidWdnZXIoKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQucGF1c2VJbkRlYnVnZ2VyKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl9jbGVhckludGVyZmFjZSgpOwpAQCAtOTE2LDcgKzkxNiw3IEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NsZWFy
SW50ZXJmYWNlKCk7CiAKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zdGVwT3ZlclN0YXRl
bWVudEluRGVidWdnZXIoKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zdGVwT3ZlclN0YXRl
bWVudEluRGVidWdnZXIoKTsKICAgICB9LAogCiAgICAgX3N0ZXBJbnRvQ2xpY2tlZDogZnVuY3Rp
b24oKQpAQCAtOTI2LDcgKzkyNiw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJmYWNlKCk7CiAKLSAgICAgICAgSW5z
cGVjdG9yQ29udHJvbGxlci5zdGVwSW50b1N0YXRlbWVudEluRGVidWdnZXIoKTsKKyAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5zdGVwSW50b1N0YXRlbWVudEluRGVidWdnZXIoKTsKICAgICB9LAog
CiAgICAgX3N0ZXBPdXRDbGlja2VkOiBmdW5jdGlvbigpCkBAIC05MzYsNyArOTM2LDcgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fY2xl
YXJJbnRlcmZhY2UoKTsKIAotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnN0ZXBPdXRPZkZ1
bmN0aW9uSW5EZWJ1Z2dlcigpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnN0ZXBPdXRPZkZ1
bmN0aW9uSW5EZWJ1Z2dlcigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NvdXJjZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlVmlldy5qcwppbmRleCBjMWIxYmJmLi43YWI3YjViIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcwpAQCAtOTcsNyArOTcsNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1l
TmVlZHNTZXR1cDsKICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5hZGRFdmVudExpc3RlbmVyKCJj
b250ZW50IGxvYWRlZCIsIHRoaXMuX2NvbnRlbnRMb2FkZWQsIHRoaXMpOwotICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmFkZFJlc291cmNlU291cmNlVG9GcmFtZSh0aGlzLnJlc291cmNlLmlk
ZW50aWZpZXIsIHRoaXMuc291cmNlRnJhbWUuZWxlbWVudCk7CisgICAgICAgIEluc3BlY3RvckZy
b250ZW5kSG9zdC5hZGRSZXNvdXJjZVNvdXJjZVRvRnJhbWUodGhpcy5yZXNvdXJjZS5pZGVudGlm
aWVyLCB0aGlzLnNvdXJjZUZyYW1lLmVsZW1lbnQpOwogICAgIH0sCiAgICAgCiAgICAgX2NvbnRl
bnRMb2FkZWQ6IGZ1bmN0aW9uKCkKQEAgLTE4MCwxMyArMTgwLDEzIEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzTmFO
KGxpbmVUb1NlYXJjaCkpIHsKICAgICAgICAgICAgICAgICAvLyBTZWFyY2ggdGhlIHdob2xlIGRv
Y3VtZW50IHNpbmNlIHRoZXJlIHdhcyBubyBsaW5lIHRvIHNlYXJjaC4KLSAgICAgICAgICAgICAg
ICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gKEluc3BlY3RvckNvbnRyb2xsZXIuc2VhcmNoKHRoaXMu
c291cmNlRnJhbWUuZWxlbWVudC5jb250ZW50RG9jdW1lbnQsIHF1ZXJ5KSB8fCBbXSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IChJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
c2VhcmNoKHRoaXMuc291cmNlRnJhbWUuZWxlbWVudC5jb250ZW50RG9jdW1lbnQsIHF1ZXJ5KSB8
fCBbXSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBzb3VyY2VS
b3cgPSB0aGlzLnNvdXJjZUZyYW1lLnNvdXJjZVJvdyhsaW5lVG9TZWFyY2gpOwogICAgICAgICAg
ICAgICAgIGlmIChzb3VyY2VSb3cpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmxl
c3NRdWVyeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgc3RpbGwgYSBx
dWVyeSBzdHJpbmcsIHNvIHNlYXJjaCBmb3IgdGhhdCBzdHJpbmcgaW4gdGhlIGxpbmUuCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gKEluc3BlY3RvckNvbnRy
b2xsZXIuc2VhcmNoKHNvdXJjZVJvdywgZmlsdGVybGVzc1F1ZXJ5KSB8fCBbXSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gKEluc3BlY3RvckZyb250ZW5k
SG9zdC5zZWFyY2goc291cmNlUm93LCBmaWx0ZXJsZXNzUXVlcnkpIHx8IFtdKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hdGNoIHRo
ZSB3aG9sZSBsaW5lLCBzaW5jZSB0aGVyZSB3YXMgbm8gcmVtYWluaW5nIHF1ZXJ5IHN0cmluZyB0
byBtYXRjaC4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByb3dSYW5nZSA9IHRoaXMuc291
cmNlRnJhbWUuZWxlbWVudC5jb250ZW50RG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKQEAgLTE5Niw3
ICsxOTYsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBzZWFyY2ggZm9yIHRo
ZSB3aG9sZSBxdWVyeSwganVzdCBpbmNhc2UgaXQgbWF0Y2hlcyBhIGNvbG9yIGxpa2UgIiMzMzMi
LgotICAgICAgICAgICAgICAgIHZhciB3aG9sZVF1ZXJ5TWF0Y2hlcyA9IEluc3BlY3RvckNvbnRy
b2xsZXIuc2VhcmNoKHRoaXMuc291cmNlRnJhbWUuZWxlbWVudC5jb250ZW50RG9jdW1lbnQsIHF1
ZXJ5KTsKKyAgICAgICAgICAgICAgICB2YXIgd2hvbGVRdWVyeU1hdGNoZXMgPSBJbnNwZWN0b3JG
cm9udGVuZEhvc3Quc2VhcmNoKHRoaXMuc291cmNlRnJhbWUuZWxlbWVudC5jb250ZW50RG9jdW1l
bnQsIHF1ZXJ5KTsKICAgICAgICAgICAgICAgICBpZiAod2hvbGVRdWVyeU1hdGNoZXMpCiAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSB0aGlzLl9zZWFyY2hSZXN1bHRz
LmNvbmNhdCh3aG9sZVF1ZXJ5TWF0Y2hlcyk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXggY2FmM2E1My4u
Njk5ZTNjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1Np
ZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qcwpAQCAtMzM0LDcgKzMzNCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFy
UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3RlZE9wdGlvbiA9IHRoaXMuc2V0
dGluZ3NTZWxlY3RFbGVtZW50W3RoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5k
ZXhdOwogICAgICAgICBQcmVmZXJlbmNlcy5jb2xvckZvcm1hdCA9IHNlbGVjdGVkT3B0aW9uLnZh
bHVlOwogCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc2V0U2V0dGluZygiY29sb3ItZm9y
bWF0IiwgUHJlZmVyZW5jZXMuY29sb3JGb3JtYXQpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Quc2V0U2V0dGluZygiY29sb3ItZm9ybWF0IiwgUHJlZmVyZW5jZXMuY29sb3JGb3JtYXQp
OwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWN0aW9ucy5sZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnNbaV0udXBkYXRlKHRydWUpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCmluZGV4IDI2NzI5NTIuLmIy
NjMwYWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJv
bGxlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIu
anMKQEAgLTQzLDcgKzQzLDcgQEAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlw
ZSA9IHsKICAgICBub3RpZnlEb25lOiBmdW5jdGlvbihyZXN1bHQpCiAgICAgewogICAgICAgICB2
YXIgbWVzc2FnZSA9IHR5cGVvZiByZXN1bHQgPT09ICJ1bmRlZmluZWQiID8gIlwiPHVuZGVmaW5l
ZD5cIiIgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQpOwotICAgICAgICBJbnNwZWN0b3JDb250cm9s
bGVyLmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQodGhpcy5fY2FsbElkLCBtZXNzYWdlKTsK
KyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHRo
aXMuX2NhbGxJZCwgbWVzc2FnZSk7CiAgICAgfSwKIAogICAgIHJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcwppbmRleCAxY2FmZDc3Li5hYzM2ZmE1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTE5LDkgKzExOSw5IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBfdG9nZ2xlVGltZWxp
bmVCdXR0b25DbGlja2VkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy50b2dn
bGVUaW1lbGluZUJ1dHRvbi50b2dnbGVkKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ci5zdG9wVGltZWxpbmVQcm9maWxlcigpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
dG9wVGltZWxpbmVQcm9maWxlcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBJbnNwZWN0
b3JDb250cm9sbGVyLnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOworICAgICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKICAgICB9LAogCiAgICAgdGltZWxp
bmVXYXNTdGFydGVkOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcwppbmRleCAyNjkyNGFm
Li5hZTI0MTBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hF
eHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKQEAgLTEyNyw3ICsxMjcsNyBAQCBXZWJJ
bnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5yZWxlYXNlV3Jh
cHBlck9iamVjdEdyb3VwKHRoaXMuX3dhdGNoT2JqZWN0R3JvdXBJZCkKKyAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5yZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKHRoaXMuX3dhdGNoT2JqZWN0R3Jv
dXBJZCkKICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsKIAogICAgICAgICAvLyBDb3VudCB0
aGUgcHJvcGVydGllcywgc28gd2Uga25vd24gd2hlbiB0byBjYWxsIHRoaXMudXBkYXRlUHJvcGVy
dGllcygpCkBAIC0xODMsNyArMTgzLDcgQEAgV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNT
ZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGxvYWRTYXZlZEV4cHJlc3Npb25zOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB2YXIganNvbiA9IEluc3BlY3RvckNvbnRyb2xsZXIuc2V0dGlu
Zygid2F0Y2hFeHByZXNzaW9ucyIpOworICAgICAgICB2YXIganNvbiA9IEluc3BlY3RvckZyb250
ZW5kSG9zdC5zZXR0aW5nKCJ3YXRjaEV4cHJlc3Npb25zIik7CiAgICAgICAgIGlmICghanNvbikK
ICAgICAgICAgICAgIHJldHVybiBbXTsKIApAQCAtMjA0LDcgKzIwNCw3IEBAIFdlYkluc3BlY3Rv
ci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
dG9TYXZlLnB1c2godGhpcy53YXRjaEV4cHJlc3Npb25zW2ldKTsKIAogICAgICAgICB2YXIganNv
biA9IEpTT04uc3RyaW5naWZ5KHtleHByZXNzaW9uczogdG9TYXZlfSk7Ci0gICAgICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIuc2V0U2V0dGluZygid2F0Y2hFeHByZXNzaW9ucyIsIGpzb24pOworICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0U2V0dGluZygid2F0Y2hFeHByZXNzaW9ucyIs
IGpzb24pOwogCiAgICAgICAgIHJldHVybiB0b1NhdmUubGVuZ3RoOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMTcwZDkzNS4uZmEwZmI1ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTI2LDkgKzI2LDExIEBACiAgICAg
PGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VWaWV3LmpzPC9maWxlPgog
ICAgIDxmaWxlPkluamVjdGVkU2NyaXB0LmpzPC9maWxlPgorICAgIDxmaWxlPkluamVjdGVkU2Ny
aXB0LmpzPC9maWxlPgogICAgIDxmaWxlPkluamVjdGVkU2NyaXB0QWNjZXNzLmpzPC9maWxlPgog
ICAgIDxmaWxlPmluc3BlY3Rvci5qczwvZmlsZT4KLSAgICA8ZmlsZT5JbnNwZWN0b3JDb250cm9s
bGVyU3R1Yi5qczwvZmlsZT4KKyAgICA8ZmlsZT5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczwvZmls
ZT4KKyAgICA8ZmlsZT5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzPC9maWxlPgogICAgIDxm
aWxlPktleWJvYXJkU2hvcnRjdXQuanM8L2ZpbGU+CiAgICAgPGZpbGU+TWV0cmljc1NpZGViYXJQ
YW5lLmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdC5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAzNGRmMzJkLi41NmEzZGU3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0zNCw3ICszNCw4
IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJ0cmVlb3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iaW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbnNwZWN0b3JDb250cm9sbGVyU3R1Yi5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW5zcGVjdG9yQmFj
a2VuZFN0dWIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ikluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iS2V5Ym9hcmRTaG9ydGN1dC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGV4dFBy
b21wdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cwppbmRleCAwZjhlYzEyLi45NmYwYWE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKQEAgLTc3LDcgKzc3LDcgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICBn
ZXQgcGxhdGZvcm0oKQogICAgIHsKICAgICAgICAgaWYgKCEoIl9wbGF0Zm9ybSIgaW4gdGhpcykp
Ci0gICAgICAgICAgICB0aGlzLl9wbGF0Zm9ybSA9IEluc3BlY3RvckNvbnRyb2xsZXIucGxhdGZv
cm0oKTsKKyAgICAgICAgICAgIHRoaXMuX3BsYXRmb3JtID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LnBsYXRmb3JtKCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3BsYXRmb3JtOwogICAgIH0sCkBA
IC04NSw3ICs4NSw3IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgZ2V0IHBvcnQoKQogICAg
IHsKICAgICAgICAgaWYgKCEoIl9wb3J0IiBpbiB0aGlzKSkKLSAgICAgICAgICAgIHRoaXMuX3Bv
cnQgPSBJbnNwZWN0b3JDb250cm9sbGVyLnBvcnQoKTsKKyAgICAgICAgICAgIHRoaXMuX3BvcnQg
PSBJbnNwZWN0b3JGcm9udGVuZEhvc3QucG9ydCgpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9w
b3J0OwogICAgIH0sCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewog
CiAgICAgICAgIGZvciAodmFyIHBhbmVsTmFtZSBpbiBXZWJJbnNwZWN0b3IucGFuZWxzKSB7CiAg
ICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVsc1twYW5lbE5hbWVdID09IHgpCi0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zdG9yZUxhc3RBY3RpdmVQYW5lbChwYW5l
bE5hbWUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc3RvcmVMYXN0QWN0aXZl
UGFuZWwocGFuZWxOYW1lKTsKICAgICAgICAgfQogICAgIH0sCiAKICAgICBfY3JlYXRlUGFuZWxz
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgaGlkZGVuUGFuZWxzID0gKEluc3BlY3Rv
ckNvbnRyb2xsZXIuaGlkZGVuUGFuZWxzKCkgfHwgIiIpLnNwbGl0KCcsJyk7CisgICAgICAgIHZh
ciBoaWRkZW5QYW5lbHMgPSAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmhpZGRlblBhbmVscygpIHx8
ICIiKS5zcGxpdCgnLCcpOwogICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoImVsZW1l
bnRzIikgPT09IC0xKQogICAgICAgICAgICAgdGhpcy5wYW5lbHMuZWxlbWVudHMgPSBuZXcgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwoKTsKICAgICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRl
eE9mKCJyZXNvdXJjZXMiKSA9PT0gLTEpCkBAIC0xOTMsMTUgKzE5MywxNSBAQCB2YXIgV2ViSW5z
cGVjdG9yID0gewogCiAgICAgX2xvYWRQcmVmZXJlbmNlczogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gSW5zcGVjdG9yQ29udHJvbGxlci5zZXR0aW5nKCJjb2xv
ci1mb3JtYXQiKTsKKyAgICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LnNldHRpbmcoImNvbG9yLWZvcm1hdCIpOwogICAgICAgICBpZiAoY29sb3JGb3JtYXQpCiAg
ICAgICAgICAgICBQcmVmZXJlbmNlcy5jb2xvckZvcm1hdCA9IGNvbG9yRm9ybWF0OwogCi0gICAg
ICAgIHZhciBldmVudExpc3RlbmVyc0ZpbHRlciA9IEluc3BlY3RvckNvbnRyb2xsZXIuc2V0dGlu
ZygiZXZlbnQtbGlzdGVuZXJzLWZpbHRlciIpOworICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lcnNG
aWx0ZXIgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0dGluZygiZXZlbnQtbGlzdGVuZXJzLWZp
bHRlciIpOwogICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lcnNGaWx0ZXIpCiAgICAgICAgICAgICBQ
cmVmZXJlbmNlcy5ldmVudExpc3RlbmVyc0ZpbHRlciA9IGV2ZW50TGlzdGVuZXJzRmlsdGVyOwog
Ci0gICAgICAgIHZhciByZXNvdXJjZXNMYXJnZVJvd3MgPSBJbnNwZWN0b3JDb250cm9sbGVyLnNl
dHRpbmcoInJlc291cmNlcy1sYXJnZS1yb3dzIik7CisgICAgICAgIHZhciByZXNvdXJjZXNMYXJn
ZVJvd3MgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0dGluZygicmVzb3VyY2VzLWxhcmdlLXJv
d3MiKTsKICAgICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZXNMYXJnZVJvd3MgIT09ICJ1bmRlZmlu
ZWQiKQogICAgICAgICAgICAgUHJlZmVyZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dzID0gcmVzb3Vy
Y2VzTGFyZ2VSb3dzOwogICAgIH0sCkBAIC0yMjQsMTIgKzIyNCwxMiBAQCB2YXIgV2ViSW5zcGVj
dG9yID0gewogICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7CiAKICAgICAgICAgaWYg
KHgpIHsKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuYXR0YWNoKCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYXR0YWNoKCk7CiAgICAgICAgICAgICBib2R5LnJl
bW92ZVN0eWxlQ2xhc3MoImRldGFjaGVkIik7CiAgICAgICAgICAgICBib2R5LmFkZFN0eWxlQ2xh
c3MoImF0dGFjaGVkIik7CiAgICAgICAgICAgICBkb2NrVG9nZ2xlQnV0dG9uLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJVbmRvY2sgaW50byBzZXBhcmF0ZSB3aW5kb3cuIik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmRldGFjaCgpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRldGFjaCgpOwogICAgICAgICAgICAg
Ym9keS5yZW1vdmVTdHlsZUNsYXNzKCJhdHRhY2hlZCIpOwogICAgICAgICAgICAgYm9keS5hZGRT
dHlsZUNsYXNzKCJkZXRhY2hlZCIpOwogICAgICAgICAgICAgZG9ja1RvZ2dsZUJ1dHRvbi50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9jayB0byBtYWluIHdpbmRvdy4iKTsKQEAgLTM5
OCwxMCArMzk4LDEwIEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAodGhpcy5faG92ZXJlZERPTU5vZGUpIHsKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRy
b2xsZXIuaGlnaGxpZ2h0RE9NTm9kZSh0aGlzLl9ob3ZlcmVkRE9NTm9kZS5pZCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLmhpZ2hsaWdodERPTU5vZGUodGhpcy5faG92ZXJlZERPTU5v
ZGUuaWQpOwogICAgICAgICAgICAgdGhpcy5zaG93aW5nRE9NTm9kZUhpZ2hsaWdodCA9IHRydWU7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmhpZGVE
T01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmhpZGVET01O
b2RlSGlnaGxpZ2h0KCk7CiAgICAgICAgICAgICB0aGlzLnNob3dpbmdET01Ob2RlSGlnaGxpZ2h0
ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC01MDgsMTIgKzUwOCwxMiBAQCBXZWJJbnNw
ZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
bG9zZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5jbG9zZSwg
dHJ1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1yaWdodCIp
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5jbG9zZSwgdHJ1ZSk7CiAKLSAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmxvYWRlZCgpOworICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2Fk
ZWQoKTsKIH0KIAogdmFyIHdpbmRvd0xvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB2YXIgbG9j
YWxpemVkU3RyaW5nc1VSTCA9IEluc3BlY3RvckNvbnRyb2xsZXIubG9jYWxpemVkU3RyaW5nc1VS
TCgpOworICAgIHZhciBsb2NhbGl6ZWRTdHJpbmdzVVJMID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmxvY2FsaXplZFN0cmluZ3NVUkwoKTsKICAgICBpZiAobG9jYWxpemVkU3RyaW5nc1VSTCkgewog
ICAgICAgICB2YXIgbG9jYWxpemVkU3RyaW5nc1NjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICAgbG9jYWxpemVkU3RyaW5nc1NjcmlwdEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIFdlYkluc3BlY3Rvci5sb2FkZWQuYmluZChXZWJJ
bnNwZWN0b3IpLCBmYWxzZSk7CkBAIC01NDYsNyArNTQ2LDcgQEAgV2ViSW5zcGVjdG9yLmRpc3Bh
dGNoID0gZnVuY3Rpb24oKSB7CiAKIFdlYkluc3BlY3Rvci53aW5kb3dVbmxvYWQgPSBmdW5jdGlv
bihldmVudCkKIHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyLndpbmRvd1VubG9hZGluZygpOwor
ICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC53aW5kb3dVbmxvYWRpbmcoKTsKIH0KIAogV2ViSW5z
cGVjdG9yLndpbmRvd1Jlc2l6ZSA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtNTg2LDcgKzU4Niw3IEBA
IFdlYkluc3BlY3Rvci5zZXRBdHRhY2hlZFdpbmRvdyA9IGZ1bmN0aW9uKGF0dGFjaGVkKQogCiBX
ZWJJbnNwZWN0b3IuY2xvc2UgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICBJbnNwZWN0b3JDb250
cm9sbGVyLmNsb3NlV2luZG93KCk7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNsb3NlV2lu
ZG93KCk7CiB9CiAKIFdlYkluc3BlY3Rvci5kb2N1bWVudENsaWNrID0gZnVuY3Rpb24oZXZlbnQp
CkBAIC05MDksMTQgKzkwOSwxNCBAQCBXZWJJbnNwZWN0b3IudG9vbGJhckRyYWcgPSBmdW5jdGlv
bihldmVudCkKICAgICBpZiAoV2ViSW5zcGVjdG9yLmF0dGFjaGVkKSB7CiAgICAgICAgIHZhciBo
ZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAoZXZlbnQuc2NyZWVuWSAtIHRvb2xiYXIubGFz
dFNjcmVlblkpOwogCi0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQoaGVpZ2h0KTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdmFyIHggPSBl
dmVudC5zY3JlZW5YIC0gdG9vbGJhci5sYXN0U2NyZWVuWDsKICAgICAgICAgdmFyIHkgPSBldmVu
dC5zY3JlZW5ZIC0gdG9vbGJhci5sYXN0U2NyZWVuWTsKIAogICAgICAgICAvLyBXZSBjYW5ub3Qg
Y2FsbCB3aW5kb3cubW92ZUJ5IGhlcmUgYmVjYXVzZSBpdCByZXN0cmljdHMgdGhlIG1vdmVtZW50
CiAgICAgICAgIC8vIG9mIHRoZSB3aW5kb3cgYXQgdGhlIGVkZ2VzLgotICAgICAgICBJbnNwZWN0
b3JDb250cm9sbGVyLm1vdmVCeVVucmVzdHJpY3RlZCh4LCB5KTsKKyAgICAgICAgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Lm1vdmVXaW5kb3dCeSh4LCB5KTsKICAgICB9CiAKICAgICB0b29sYmFyLmxh
c3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKQEAgLTE2NDAsNyArMTY0MCw3IEBAIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKICAgICAgICAgc3RyaW5nID0gd2luZG93
LmxvY2FsaXplZFN0cmluZ3Nbc3RyaW5nXTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCEoc3Ry
aW5nIGluIHRoaXMubWlzc2luZ0xvY2FsaXplZFN0cmluZ3MpKSB7Ci0gICAgICAgICAgICBpZiAo
IVdlYkluc3BlY3Rvci5JbnNwZWN0b3JDb250cm9sbGVyU3R1YikKKyAgICAgICAgICAgIGlmICgh
V2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViKQogICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoIkxvY2FsaXplZCBzdHJpbmcgXCIiICsgc3RyaW5nICsgIlwiIG5vdCBmb3VuZC4i
KTsKICAgICAgICAgICAgIHRoaXMubWlzc2luZ0xvY2FsaXplZFN0cmluZ3Nbc3RyaW5nXSA9IHRy
dWU7CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="25700"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>